ansible-later: 2.0.22 -> 2.0.23
[NixPkgs.git] / pkgs / development / python-modules / cryptography / default.nix
blobc80e9a119941f2a22a2ae86f80b9e66902fb414e
1 { lib
2 , stdenv
3 , callPackage
4 , buildPythonPackage
5 , fetchPypi
6 , rustPlatform
7 , setuptools-rust
8 , openssl
9 , Security
10 , packaging
11 , six
12 , isPyPy
13 , cffi
14 , pytestCheckHook
15 , pytest-benchmark
16 , pytest-subtests
17 , pythonOlder
18 , pretend
19 , libiconv
20 , iso8601
21 , pytz
22 , hypothesis
25 let
26   cryptography-vectors = callPackage ./vectors.nix { };
28 buildPythonPackage rec {
29   pname = "cryptography";
30   version = "38.0.1"; # Also update the hash in vectors.nix
31   disabled = pythonOlder "3.6";
33   src = fetchPypi {
34     inherit pname version;
35     hash = "sha256-HbPYB6FJMfoxf5ZDVpXZ7Dhr57hLYYzGHPpdCLCuM9c=";
36   };
38   cargoDeps = rustPlatform.fetchCargoTarball {
39     inherit src;
40     sourceRoot = "${pname}-${version}/${cargoRoot}";
41     name = "${pname}-${version}";
42     hash = "sha256-o8l13fnfEUvUdDasq3LxSPArozRHKVsZfQg9DNR6M6Q=";
43   };
45   cargoRoot = "src/rust";
47   nativeBuildInputs = lib.optionals (!isPyPy) [
48     cffi
49   ] ++ [
50     rustPlatform.cargoSetupHook
51     setuptools-rust
52   ] ++ (with rustPlatform; [ rust.cargo rust.rustc ]);
54   buildInputs = [ openssl ]
55     ++ lib.optionals stdenv.isDarwin [ Security libiconv ];
57   propagatedBuildInputs = lib.optionals (!isPyPy) [
58     cffi
59   ];
61   checkInputs = [
62     cryptography-vectors
63     hypothesis
64     iso8601
65     pretend
66     pytestCheckHook
67     pytest-benchmark
68     pytest-subtests
69     pytz
70   ];
72   pytestFlagsArray = [
73     "--disable-pytest-warnings"
74   ];
76   disabledTestPaths = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
77     # aarch64-darwin forbids W+X memory, but this tests depends on it:
78     # * https://cffi.readthedocs.io/en/latest/using.html#callbacks
79     "tests/hazmat/backends/test_openssl_memleak.py"
80   ];
82   meta = with lib; {
83     description = "A package which provides cryptographic recipes and primitives";
84     longDescription = ''
85       Cryptography includes both high level recipes and low level interfaces to
86       common cryptographic algorithms such as symmetric ciphers, message
87       digests, and key derivation functions.
88       Our goal is for it to be your "cryptographic standard library". It
89       supports Python 2.7, Python 3.5+, and PyPy 5.4+.
90     '';
91     homepage = "https://github.com/pyca/cryptography";
92     changelog = "https://cryptography.io/en/latest/changelog/#v"
93       + replaceStrings [ "." ] [ "-" ] version;
94     license = with licenses; [ asl20 bsd3 psfl ];
95     maintainers = with maintainers; [ SuperSandro2000 ];
96   };