1{ lib
2, stdenv
3, buildPythonPackage
4, eventlet
5, fetchPypi
6, gevent
7, pkgs
8, process-tests
9, pytestCheckHook
10, pythonOlder
11, redis
12, withDjango ? false
13, django-redis
14}:
15
16buildPythonPackage rec {
17 pname = "python-redis-lock";
18 version = "4.0.0";
19 format = "setuptools";
20
21 disabled = pythonOlder "3.7";
22
23 src = fetchPypi {
24 inherit pname version;
25 hash = "sha256-Sr0Lz0kTasrWZye/VIbdJJQHjKVeSe+mk/eUB3MZCRo=";
26 };
27
28 propagatedBuildInputs = [
29 redis
30 ] ++ lib.optionals withDjango [
31 django-redis
32 ];
33
34 nativeCheckInputs = [
35 eventlet
36 gevent
37 pytestCheckHook
38 process-tests
39 pkgs.redis
40 ];
41
42 disabledTests = [
43 # https://github.com/ionelmc/python-redis-lock/issues/86
44 "test_no_overlap2"
45 ] ++ lib.optionals stdenv.isDarwin [
46 # fail on Darwin because it defaults to multiprocessing `spawn`
47 "test_reset_signalizes"
48 "test_reset_all_signalizes"
49 ];
50
51 pythonImportsCheck = [
52 "redis_lock"
53 ];
54
55 meta = with lib; {
56 changelog = "https://github.com/ionelmc/python-redis-lock/blob/v${version}/CHANGELOG.rst";
57 description = "Lock context manager implemented via redis SETNX/BLPOP";
58 homepage = "https://github.com/ionelmc/python-redis-lock";
59 license = licenses.bsd2;
60 maintainers = with maintainers; [ vanschelven ];
61 };
62}