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 ] ++ optional-dependencies.django; 59 60 # For Django tests 61 preCheck = "export DJANGO_SETTINGS_MODULE=test_project.settings"; 62 63 disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ 64 # fail on Darwin because it defaults to multiprocessing `spawn` 65 "test_reset_signalizes" 66 "test_reset_all_signalizes" 67 ]; 68 69 pythonImportsCheck = [ "redis_lock" ]; 70 71 meta = with lib; { 72 changelog = "https://github.com/ionelmc/python-redis-lock/blob/v${version}/CHANGELOG.rst"; 73 description = "Lock context manager implemented via redis SETNX/BLPOP"; 74 homepage = "https://github.com/ionelmc/python-redis-lock"; 75 license = licenses.bsd2; 76 maintainers = with maintainers; [ erictapen ]; 77 }; 78}