1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchPypi,
6 pythonOlder,
7
8 # build-system
9 setuptools,
10 setuptools-scm,
11
12 # dependencies
13 packaging,
14 requests,
15 urllib3,
16
17 # optional-dependenices
18 paramiko,
19 websocket-client,
20
21 # tests
22 pytestCheckHook,
23}:
24
25buildPythonPackage rec {
26 pname = "docker";
27 version = "7.0.0";
28 format = "pyproject";
29
30 disabled = pythonOlder "3.8";
31
32 src = fetchPypi {
33 inherit pname version;
34 hash = "sha256-Mjc2+5LNlBj8XnEzvJU+EanaBPRIP4KLUn21U/Hn5aM=";
35 };
36
37 nativeBuildInputs = [
38 setuptools
39 setuptools-scm
40 ];
41
42 propagatedBuildInputs = [
43 packaging
44 requests
45 urllib3
46 ];
47
48 passthru.optional-dependencies = {
49 ssh = [ paramiko ];
50 websockets = [ websocket-client ];
51 };
52
53 pythonImportsCheck = [ "docker" ];
54
55 nativeCheckInputs = [
56 pytestCheckHook
57 ] ++ lib.flatten (lib.attrValues passthru.optional-dependencies);
58
59 pytestFlagsArray = [ "tests/unit" ];
60
61 # Deselect socket tests on Darwin because it hits the path length limit for a Unix domain socket
62 disabledTests = lib.optionals stdenv.isDarwin [
63 "api_test"
64 "stream_response"
65 "socket_file"
66 ];
67
68 meta = with lib; {
69 changelog = "https://github.com/docker/docker-py/releases/tag/${version}";
70 description = "An API client for docker written in Python";
71 homepage = "https://github.com/docker/docker-py";
72 license = licenses.asl20;
73 maintainers = with maintainers; [ jonringer ];
74 };
75}