1{ lib
2, stdenv
3, buildPythonPackage
4, fetchPypi
5, pythonOlder
6, setuptools-scm
7, importlib-metadata
8, dbus-python
9, jaraco-classes
10, jeepney
11, secretstorage
12, pytestCheckHook
13}:
14
15buildPythonPackage rec {
16 pname = "keyring";
17 version = "24.2.0";
18 format = "pyproject";
19 disabled = pythonOlder "3.8";
20
21 src = fetchPypi {
22 inherit pname version;
23 hash = "sha256-ygdGoZ7EISGfTXE/hI+il6ZhqKjBUEhn5Vv7XgkJFQk=";
24 };
25
26 nativeBuildInputs = [
27 setuptools-scm
28 ];
29
30 propagatedBuildInputs = [
31 jaraco-classes
32 ] ++ lib.optionals stdenv.isLinux [
33 jeepney
34 secretstorage
35 ] ++ lib.optionals (pythonOlder "3.12") [
36 importlib-metadata
37 ];
38
39 pythonImportsCheck = [
40 "keyring"
41 "keyring.backend"
42 ];
43
44 nativeCheckInputs = [
45 pytestCheckHook
46 ];
47
48 disabledTestPaths = [
49 "tests/backends/test_macOS.py"
50 ]
51 # These tests fail when sandboxing is enabled because they are unable to get a password from keychain.
52 ++ lib.optional stdenv.isDarwin "tests/test_multiprocess.py";
53
54 meta = with lib; {
55 description = "Store and access your passwords safely";
56 homepage = "https://github.com/jaraco/keyring";
57 changelog = "https://github.com/jaraco/keyring/blob/v${version}/NEWS.rst";
58 license = licenses.mit;
59 maintainers = with maintainers; [ lovek323 dotlambda ];
60 platforms = platforms.unix;
61 };
62}