diff --git a/pkgs/development/python-modules/psycopg2cffi/default.nix b/pkgs/development/python-modules/psycopg2cffi/default.nix new file mode 100644 index 00000000000..71c9017380a --- /dev/null +++ b/pkgs/development/python-modules/psycopg2cffi/default.nix @@ -0,0 +1,39 @@ +{ buildPythonPackage, cffi, fetchFromGitHub, lib, postgresql, pytestCheckHook, six }: + +buildPythonPackage rec { + pname = "psycopg2cffi"; + version = "2.8.1"; + + # NB: This is a fork. + # The original repo exists at https://github.com/chtd/psycopg2cffi, however + # this is mostly unmaintained and does not build for PyPy. Given that the + # whole point of this cffi alternative to psycopg2 is to use it with PyPy, I + # chose to use a working fork instead, which was linked in the relevant issue: + # https://github.com/chtd/psycopg2cffi/issues/113#issuecomment-730548574 + # + # If/when these changes get merged back upstream we should revert to using the + # original source as opposed to the fork. + src = fetchFromGitHub { + owner = "Omegapol"; + repo = pname; + rev = "c202b25cd861d5e8f0f55c329764ff1da9f020c0"; + sha256 = "09hsnjkix1c0vlhmfvrp8pchpnz2ya4xrchyq15czj527nx2dmy2"; + }; + + nativeBuildInputs = [ postgresql ]; + propagatedBuildInputs = [ six cffi ]; + checkInputs = [ pytestCheckHook ]; + + # NB: The tests need a postgres instance running to test against, and so we + # disable them. + doCheck = false; + + pythonImportsCheck = [ "psycopg2cffi" ]; + + meta = with lib; { + description = "An implementation of the psycopg2 module using cffi"; + homepage = "https://pypi.org/project/psycopg2cffi/"; + license = with licenses; [ lgpl3Plus ]; + maintainers = with maintainers; [ lovesegfault ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 099fd106d2a..125c27dcde8 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4779,6 +4779,8 @@ in { psycopg2 = callPackage ../development/python-modules/psycopg2 { }; + psycopg2cffi = callPackage ../development/python-modules/psycopg2cffi { }; + ptable = callPackage ../development/python-modules/ptable { }; ptest = callPackage ../development/python-modules/ptest { };