1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 argon2-cffi,
7 construct,
8 lxml,
9 pycryptodomex,
10 pyotp,
11 unittestCheckHook,
12}:
13
14buildPythonPackage rec {
15 pname = "pykeepass";
16 version = "4.0.7";
17 pyproject = true;
18
19 src = fetchFromGitHub {
20 owner = "libkeepass";
21 repo = "pykeepass";
22 rev = "v${version}";
23 hash = "sha256-qUNMjnIhQpUSQY0kN9bA4IxQx8fiFIA6p8rPqNqdjNo=";
24 };
25
26 postPatch = ''
27 # https://github.com/libkeepass/pykeepass/pull/378
28 substituteInPlace pyproject.toml \
29 --replace-fail 'packages = ["pykeepass"]' 'packages = ["pykeepass", "pykeepass.kdbx_parsing"]'
30 '';
31
32 nativeBuildInputs = [ setuptools ];
33
34 propagatedBuildInputs = [
35 argon2-cffi
36 construct
37 lxml
38 pycryptodomex
39 setuptools
40 ];
41
42 propagatedNativeBuildInputs = [ argon2-cffi ];
43
44 nativeCheckInputs = [
45 pyotp
46 unittestCheckHook
47 ];
48
49 pythonImportsCheck = [ "pykeepass" ];
50
51 meta = with lib; {
52 homepage = "https://github.com/libkeepass/pykeepass";
53 changelog = "https://github.com/libkeepass/pykeepass/blob/${src.rev}/CHANGELOG.rst";
54 description = "Python library to interact with keepass databases (supports KDBX3 and KDBX4)";
55 license = licenses.gpl3Only;
56 maintainers = with maintainers; [ dotlambda ];
57 };
58}