diff options
Diffstat (limited to 'pkgs/development/python-modules/limits/default.nix')
-rw-r--r-- | pkgs/development/python-modules/limits/default.nix | 79 |
1 files changed, 71 insertions, 8 deletions
diff --git a/pkgs/development/python-modules/limits/default.nix b/pkgs/development/python-modules/limits/default.nix index 7cb622df047..afc777e1d85 100644 --- a/pkgs/development/python-modules/limits/default.nix +++ b/pkgs/development/python-modules/limits/default.nix @@ -1,21 +1,84 @@ -{ lib, fetchPypi, buildPythonPackage, six }: +{ lib +, buildPythonPackage +, deprecated +, fetchFromGitHub +, hiro +, packaging +, pymemcache +, pymongo +, pytest-asyncio +, pytest-lazy-fixture +, pytestCheckHook +, pythonOlder +, redis +, setuptools +, typing-extensions +}: buildPythonPackage rec { pname = "limits"; - version = "2.4.0"; + version = "2.6.1"; + format = "setuptools"; - src = fetchPypi { - inherit pname version; - sha256 = "sha256-jiK2PfJjECB6d7db1HRZnwpGE6fZFjZQ7TpCjpzHrjU="; + disabled = pythonOlder "3.7"; + + src = fetchFromGitHub { + owner = "alisaifee"; + repo = pname; + rev = version; + # Upstream uses versioneer, which relies on git attributes substitution. + # This leads to non-reproducible archives on github. Remove the substituted + # file here, and recreate it later based on our version info. + extraPostFetch = '' + rm "$out/limits/_version.py" + ''; + hash = "sha256-ja+YbRHCcZ5tFnoofdR44jbkkdDroVUdKeDOt6yE0LI="; }; - propagatedBuildInputs = [ six ]; + propagatedBuildInputs = [ + deprecated + packaging + setuptools + typing-extensions + ]; + + checkInputs = [ + hiro + pymemcache + pymongo + pytest-asyncio + pytest-lazy-fixture + pytestCheckHook + redis + ]; + + postPatch = '' + substituteInPlace pytest.ini \ + --replace "--cov=limits" "" \ + --replace "-K" "" + # redis-py-cluster doesn't support redis > 4 + substituteInPlace tests/conftest.py \ + --replace "import rediscluster" "" + + # Recreate _version.py, deleted at fetch time due to non-reproducibility. + echo 'def get_versions(): return {"version": "${version}"}' > limits/_version.py + ''; - doCheck = false; # ifilter + pythonImportsCheck = [ + "limits" + ]; + + pytestFlagsArray = [ + # All other tests require a running Docker instance + "tests/test_limits.py" + "tests/test_ratelimit_parser.py" + "tests/test_limit_granularities.py" + ]; meta = with lib; { description = "Rate limiting utilities"; - license = licenses.mit; homepage = "https://limits.readthedocs.org/"; + license = licenses.mit; + maintainers = with maintainers; [ ]; }; } |