1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 aiohttp,
7 bcrypt,
8 pyopenssl,
9 python-gnupg,
10 requests,
11 pytestCheckHook,
12 pyotp,
13 pytest-cov-stub,
14}:
15
16buildPythonPackage rec {
17 pname = "proton-core";
18 version = "0.4.0";
19 pyproject = true;
20
21 src = fetchFromGitHub {
22 owner = "ProtonVPN";
23 repo = "python-proton-core";
24 tag = "v${version}";
25 hash = "sha256-EZsPw2kPgY42MQxrXt7yAtCNSmSNN5AYxx7SllwsbvA=";
26 };
27
28 build-system = [ setuptools ];
29
30 dependencies = [
31 bcrypt
32 aiohttp
33 pyopenssl
34 python-gnupg
35 requests
36 ];
37
38 pythonImportsCheck = [ "proton" ];
39
40 nativeCheckInputs = [
41 pytestCheckHook
42 pytest-cov-stub
43 pyotp
44 ];
45
46 disabledTestPaths = [
47 # Single test, requires internet connection
48 "tests/test_alternativerouting.py"
49 ];
50
51 disabledTests = [
52 # Invalid modulus
53 "test_modulus_verification"
54 # Permission denied: '/run'
55 "test_broken_data"
56 "test_broken_index"
57 "test_sessions"
58 # No working transports found
59 "test_auto_works_on_prod"
60 "test_ping"
61 "test_successful"
62 "test_without_pinning"
63 # Failed assertions
64 "test_bad_pinning_fingerprint_changed"
65 "test_bad_pinning_url_changed"
66 ];
67
68 meta = {
69 description = "Core logic used by the other Proton components";
70 homepage = "https://github.com/ProtonVPN/python-proton-core";
71 license = lib.licenses.gpl3Only;
72 maintainers = with lib.maintainers; [ sebtm ];
73 };
74}