1{ lib
2, bcrypt
3, buildPythonPackage
4, cryptography
5, fetchpatch
6, fetchPypi
7, gssapi
8, invoke
9, mock
10, pyasn1
11, pynacl
12, pytest-relaxed
13, pytestCheckHook
14, six
15}:
16
17buildPythonPackage rec {
18 pname = "paramiko";
19 version = "2.11.0";
20 format = "setuptools";
21
22 src = fetchPypi {
23 inherit pname version;
24 hash = "sha256-AD5r7nwDTCH7sFG/g9wKnuQQYgTdPFMFTHFFLMTsOTg=";
25 };
26
27 patches = [
28 # Fix usage of dsa keys
29 # https://github.com/paramiko/paramiko/pull/1606/
30 (fetchpatch {
31 url = "https://github.com/paramiko/paramiko/commit/18e38b99f515056071fb27b9c1a4f472005c324a.patch";
32 hash = "sha256-bPDghPeLo3NiOg+JwD5CJRRLv2VEqmSx1rOF2Tf8ZDA=";
33 })
34 (fetchpatch {
35 name = "fix-sftp-tests.patch";
36 url = "https://github.com/paramiko/paramiko/commit/47cfed55575c21ac558e6d00a4ab1814406be651.patch";
37 hash = "sha256-H3nKT8+4CTEDoiqnlhFfuKnc/65GGfwwAm9H2lwrlK8=";
38 })
39 ];
40
41 propagatedBuildInputs = [
42 bcrypt
43 cryptography
44 pyasn1
45 six
46 ] ++ passthru.optional-dependencies.ed25519; # remove on 3.0 update
47
48 passthru.optional-dependencies = {
49 gssapi = [ pyasn1 gssapi ];
50 ed25519 = [ pynacl bcrypt ];
51 invoke = [ invoke ];
52 };
53
54 nativeCheckInputs = [
55 mock
56 pytestCheckHook
57 ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
58
59 disabledTestPaths = [
60 # disable tests that require pytest-relaxed, which is broken
61 "tests/test_client.py"
62 "tests/test_ssh_gss.py"
63 ];
64
65 pythonImportsCheck = [
66 "paramiko"
67 ];
68
69 __darwinAllowLocalNetworking = true;
70
71 meta = with lib; {
72 homepage = "https://github.com/paramiko/paramiko/";
73 description = "Native Python SSHv2 protocol library";
74 license = licenses.lgpl21Plus;
75 longDescription = ''
76 Library for making SSH2 connections (client or server). Emphasis is
77 on using SSH2 as an alternative to SSL for making secure connections
78 between python scripts. All major ciphers and hash methods are
79 supported. SFTP client and server mode are both supported too.
80 '';
81 maintainers = with maintainers; [ SuperSandro2000 ];
82 };
83}