at master 2.3 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 buildPythonPackage, 6 pythonOlder, 7 8 # build-system 9 setuptools, 10 11 # dependencies 12 async-timeout, 13 14 # optional-dependencies 15 cryptography, 16 pyopenssl, 17 requests, 18 19 # tests 20 cachetools, 21 mock, 22 packaging, 23 pytestCheckHook, 24 pytest-asyncio, 25 pytest-timeout, 26 redisTestHook, 27 ujson, 28 uvloop, 29}: 30 31buildPythonPackage rec { 32 pname = "valkey"; 33 version = "6.1.1"; 34 pyproject = true; 35 36 src = fetchFromGitHub { 37 owner = "valkey-io"; 38 repo = "valkey-py"; 39 tag = "v${version}"; 40 hash = "sha256-woJYfgLNIVzTYj9q8IjXo+SXhQZkQdB/Ofv5StGy9Rc="; 41 }; 42 43 build-system = [ setuptools ]; 44 45 dependencies = lib.optionals (pythonOlder "3.11") [ async-timeout ]; 46 47 optional-dependencies = { 48 # TODO: libvalkey = [ libvalkey ]; 49 ocsp = [ 50 cryptography 51 pyopenssl 52 requests 53 ]; 54 }; 55 56 pythonImportsCheck = [ 57 "valkey" 58 "valkey.client" 59 "valkey.cluster" 60 "valkey.connection" 61 "valkey.exceptions" 62 "valkey.sentinel" 63 "valkey.utils" 64 ]; 65 66 nativeCheckInputs = [ 67 cachetools 68 mock 69 packaging 70 pytestCheckHook 71 pytest-asyncio 72 pytest-timeout 73 redisTestHook 74 ujson 75 uvloop 76 ] 77 ++ lib.flatten (lib.attrValues optional-dependencies); 78 79 disabledTestMarks = [ 80 "onlycluster" 81 "ssl" 82 ]; 83 84 disabledTests = [ 85 # valkey.sentinel.MasterNotFoundError: No master found for 'valkey-py-test' 86 "test_get_from_cache" 87 "test_cache_decode_response" 88 # Expects another valkey instance on port 6380 *shrug* 89 "test_psync" 90 ] 91 ++ lib.optionals stdenv.hostPlatform.isDarwin [ 92 # OSError: AF_UNIX path too long 93 "test_uds_connect" 94 "test_network_connection_failure" 95 ]; 96 97 disabledTestPaths = lib.optionals stdenv.hostPlatform.isDarwin [ 98 # AttributeError: Can't get local object 'TestMultiprocessing.test_valkey_client.<locals>.target' 99 "tests/test_multiprocessing.py" 100 ]; 101 102 __darwinAllowLocalNetworking = true; 103 104 meta = { 105 description = "Python client for Redis key-value store"; 106 homepage = "https://github.com/valkey-io/valkey-py"; 107 changelog = "https://github.com/valkey-io/valkey-py/releases/tag/${src.tag}"; 108 license = lib.licenses.mit; 109 maintainers = with lib.maintainers; [ hexa ]; 110 }; 111}