1{ 2 lib, 3 stdenv, 4 buildPythonPackage, 5 setuptools, 6 eventlet, 7 fetchPypi, 8 fetchpatch, 9 gevent, 10 pkgs, 11 process-tests, 12 pytestCheckHook, 13 pythonOlder, 14 redis, 15 django-redis, 16}: 17 18buildPythonPackage rec { 19 pname = "python-redis-lock"; 20 version = "4.0.0"; 21 22 pyproject = true; 23 24 disabled = pythonOlder "3.7"; 25 26 src = fetchPypi { 27 inherit pname version; 28 hash = "sha256-Sr0Lz0kTasrWZye/VIbdJJQHjKVeSe+mk/eUB3MZCRo="; 29 }; 30 31 # Fix django tests 32 postPatch = '' 33 substituteInPlace tests/test_project/settings.py \ 34 --replace-fail "USE_L10N = True" "" 35 ''; 36 37 patches = [ 38 # https://github.com/ionelmc/python-redis-lock/pull/119 39 (fetchpatch { 40 url = "https://github.com/ionelmc/python-redis-lock/commit/ae404b7834990b833c1f0f703ec8fbcfecd201c2.patch"; 41 hash = "sha256-Fo43+pCtnrEMxMdEEdo0YfJGkBlhhH0GjYNgpZeHF3U="; 42 }) 43 ./test_signal_expiration_increase_sleep.patch 44 ]; 45 46 build-system = [ setuptools ]; 47 48 dependencies = [ redis ]; 49 50 optional-dependencies.django = [ django-redis ]; 51 52 nativeCheckInputs = [ 53 eventlet 54 gevent 55 pytestCheckHook 56 process-tests 57 pkgs.valkey 58 ] 59 ++ optional-dependencies.django; 60 61 # For Django tests 62 preCheck = "export DJANGO_SETTINGS_MODULE=test_project.settings"; 63 64 disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ 65 # fail on Darwin because it defaults to multiprocessing `spawn` 66 "test_reset_signalizes" 67 "test_reset_all_signalizes" 68 ]; 69 70 pythonImportsCheck = [ "redis_lock" ]; 71 72 meta = with lib; { 73 changelog = "https://github.com/ionelmc/python-redis-lock/blob/v${version}/CHANGELOG.rst"; 74 description = "Lock context manager implemented via redis SETNX/BLPOP"; 75 homepage = "https://github.com/ionelmc/python-redis-lock"; 76 license = licenses.bsd2; 77 maintainers = with maintainers; [ erictapen ]; 78 }; 79}