1{
2 argon2-cffi,
3 bcrypt,
4 buildPythonPackage,
5 cryptography,
6 fetchFromGitHub,
7 hatchling,
8 lib,
9 pytest-archon,
10 pytest-xdist,
11 pytestCheckHook,
12 typing-extensions,
13}:
14
15buildPythonPackage rec {
16 pname = "libpass";
17 version = "1.9.0";
18 pyproject = true;
19
20 src = fetchFromGitHub {
21 owner = "ThirVondukr";
22 repo = "passlib";
23 tag = version;
24 hash = "sha256-Q5OEQkty0/DugRvF5LA+PaDDlF/6ysx4Nel5K2kH5s4=";
25 };
26
27 build-system = [ hatchling ];
28
29 dependencies = [
30 typing-extensions
31 ];
32
33 optional-dependencies = {
34 argon2 = [ argon2-cffi ];
35 bcrypt = [ bcrypt ];
36 totp = [ cryptography ];
37 };
38
39 nativeCheckInputs = [
40 pytest-archon
41 pytest-xdist
42 pytestCheckHook
43 ] ++ lib.flatten (lib.attrValues optional-dependencies);
44
45 pythonImportsCheck = [ "passlib" ];
46
47 disabledTests = [
48 # timming sensitive
49 "test_dummy_verify"
50 "test_encrypt_cost_timing"
51 ];
52
53 meta = {
54 changelog = "https://github.com/ThirVondukr/passlib/blob/${src.tag}/CHANGELOG.md";
55 description = "Comprehensive password hashing framework supporting over 30 schemes";
56 homepage = "https://github.com/ThirVondukr/passlib";
57 license = lib.licenses.bsd3;
58 maintainers = with lib.maintainers; [ dotlambda ];
59 };
60}