1{ lib
2, stdenv
3, buildPythonPackage
4, fetchPypi
5, pythonOlder
6, setuptools-scm
7, importlib-metadata
8, dbus-python
9, jeepney
10, secretstorage
11, pytestCheckHook
12}:
13
14buildPythonPackage rec {
15 pname = "keyring";
16 version = "23.2.1";
17 disabled = pythonOlder "3.6";
18
19 src = fetchPypi {
20 inherit pname version;
21 sha256 = "6334aee6073db2fb1f30892697b1730105b5e9a77ce7e61fca6b435225493efe";
22 };
23
24 nativeBuildInputs = [
25 setuptools-scm
26 ];
27
28 propagatedBuildInputs = [
29 # this should be optional, however, it has a different API
30 importlib-metadata # see https://github.com/jaraco/keyring/issues/503#issuecomment-798973205
31
32 dbus-python
33 jeepney
34 secretstorage
35 ];
36
37 pythonImportsCheck = [
38 "keyring"
39 "keyring.backend"
40 ];
41
42 checkInputs = [
43 pytestCheckHook
44 ];
45
46 # Keychain communications isn't possible in our build environment
47 # keyring.errors.KeyringError: Can't get password from keychain: (-25307, 'Unknown Error')
48 disabledTests = lib.optionals (stdenv.isDarwin) [
49 "test_multiprocess_get"
50 "test_multiprocess_get_after_native_get"
51 ] ++ [
52 # E ValueError: too many values to unpack (expected 1)
53 "test_entry_point"
54 ];
55
56 disabledTestPaths = [
57 "tests/backends/test_macOS.py"
58 ];
59
60 meta = with lib; {
61 description = "Store and access your passwords safely";
62 homepage = "https://github.com/jaraco/keyring";
63 license = licenses.mit;
64 maintainers = with maintainers; [ lovek323 dotlambda ];
65 platforms = platforms.unix;
66 };
67}