1{
2 lib,
3 bcrypt,
4 buildPythonPackage,
5 cryptography,
6 fetchpatch,
7 fetchPypi,
8 gssapi,
9 icecream,
10 invoke,
11 mock,
12 pyasn1,
13 pynacl,
14 pytest-relaxed,
15 pytestCheckHook,
16 setuptools,
17}:
18
19buildPythonPackage rec {
20 pname = "paramiko";
21 version = "3.5.1";
22 pyproject = true;
23
24 src = fetchPypi {
25 inherit pname version;
26 hash = "sha256-ssZlvEWyshW9fX8DmQGxSwZ9oA86EeZkCZX9WPJmSCI=";
27 };
28
29 patches = [
30 # Fix usage of dsa keys
31 # https://github.com/paramiko/paramiko/pull/1606/
32 (fetchpatch {
33 url = "https://github.com/paramiko/paramiko/commit/18e38b99f515056071fb27b9c1a4f472005c324a.patch";
34 hash = "sha256-bPDghPeLo3NiOg+JwD5CJRRLv2VEqmSx1rOF2Tf8ZDA=";
35 })
36 ];
37
38 build-system = [ setuptools ];
39
40 dependencies = [
41 bcrypt
42 cryptography
43 pynacl
44 ];
45
46 optional-dependencies = {
47 gssapi = [
48 pyasn1
49 gssapi
50 ];
51 ed25519 = [ ];
52 invoke = [ invoke ];
53 };
54
55 nativeCheckInputs = [
56 icecream
57 mock
58 pytestCheckHook
59 pytest-relaxed
60 ]
61 ++ lib.flatten (builtins.attrValues optional-dependencies);
62
63 pythonImportsCheck = [ "paramiko" ];
64
65 __darwinAllowLocalNetworking = true;
66
67 meta = {
68 homepage = "https://github.com/paramiko/paramiko/";
69 changelog = "https://github.com/paramiko/paramiko/blob/${version}/sites/www/changelog.rst";
70 description = "Native Python SSHv2 protocol library";
71 license = lib.licenses.lgpl21Plus;
72 longDescription = ''
73 Library for making SSH2 connections (client or server). Emphasis is
74 on using SSH2 as an alternative to SSL for making secure connections
75 between python scripts. All major ciphers and hash methods are
76 supported. SFTP client and server mode are both supported too.
77 '';
78 teams = [ lib.teams.helsinki-systems ];
79 };
80}