diff --git a/pkgs/development/python-modules/fastavro/default.nix b/pkgs/development/python-modules/fastavro/default.nix new file mode 100644 index 000000000000..0bc1246eb326 --- /dev/null +++ b/pkgs/development/python-modules/fastavro/default.nix @@ -0,0 +1,59 @@ +{ buildPythonPackage +, cython +, fetchFromGitHub +, isPy38 +, lib +, lz4 +, numpy +, pandas +, pytestCheckHook +, python-dateutil +, python-snappy +, pythonOlder +, zstandard +}: + +buildPythonPackage rec { + pname = "fastavro"; + version = "1.4.4"; + + disabled = pythonOlder "3.6"; + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = version; + sha256 = "1sf8nqifwp0cggk59s22ygj3rm1nysa8b91xl8bpv2knqyjy1q32"; + }; + + preBuild = '' + export FASTAVRO_USE_CYTHON=1 + ''; + + nativeBuildInputs = [ cython ]; + + checkInputs = [ + lz4 + numpy + pandas + pytestCheckHook + python-dateutil + python-snappy + zstandard + ]; + + # Fails with "AttributeError: module 'fastavro._read_py' has no attribute + # 'CYTHON_MODULE'." Doesn't appear to be serious. See https://github.com/fastavro/fastavro/issues/112#issuecomment-387638676. + disabledTests = [ "test_cython_python" ]; + + # CLI tests are broken on Python 3.8. See https://github.com/fastavro/fastavro/issues/558. + disabledTestPaths = lib.optionals isPy38 [ "tests/test_main_cli.py" ]; + + pythonImportsCheck = [ "fastavro" ]; + + meta = with lib; { + description = "Fast read/write of AVRO files"; + homepage = "https://github.com/fastavro/fastavro"; + license = licenses.mit; + maintainers = with maintainers; [ samuela ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 05a811e60f6a..94dd48ac00b1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2500,6 +2500,8 @@ in { fastapi = callPackage ../development/python-modules/fastapi { }; + fastavro = callPackage ../development/python-modules/fastavro { }; + fastcache = callPackage ../development/python-modules/fastcache { }; fastdiff = callPackage ../development/python-modules/fastdiff { };