1{ lib
2, stdenv
3, aiohttp
4, buildPythonPackage
5, fetchFromGitHub
6, numpy
7, paramiko
8, pytest-asyncio
9, pytest-mock
10, pytest-vcr
11, pytestCheckHook
12, pythonOlder
13, requests
14, smbprotocol
15, tqdm
16, adlfs
17, dask
18, distributed
19, dropbox
20, fusepy
21, gcsfs
22, libarchive-c
23, ocifs
24, panel
25, pyarrow
26, pygit2
27, s3fs
28}:
29
30buildPythonPackage rec {
31 pname = "fsspec";
32 version = "2023.10.0";
33 format = "setuptools";
34
35 disabled = pythonOlder "3.8";
36
37 src = fetchFromGitHub {
38 owner = "fsspec";
39 repo = "filesystem_spec";
40 rev = "refs/tags/${version}";
41 hash = "sha256-cLkCQQbb/AakDSz1NTrVlHh8LdgoqtjX8OPT+Nb1NA4=";
42 };
43
44 propagatedBuildInputs = [
45 aiohttp
46 paramiko
47 requests
48 smbprotocol
49 tqdm
50 ];
51
52 passthru.optional-dependencies = {
53 entrypoints = [
54 ];
55 abfs = [
56 adlfs
57 ];
58 adl = [
59 adlfs
60 ];
61 dask = [
62 dask
63 distributed
64 ];
65 dropbox = [
66 # missing dropboxdrivefs
67 requests
68 dropbox
69 ];
70 gcs = [
71 gcsfs
72 ];
73 git = [
74 pygit2
75 ];
76 github = [
77 requests
78 ];
79 gs = [
80 gcsfs
81 ];
82 hdfs = [
83 pyarrow
84 ];
85 arrow = [
86 pyarrow
87 ];
88 http = [
89 aiohttp
90 requests
91 ];
92 sftp = [
93 paramiko
94 ];
95 s3 = [
96 s3fs
97 ];
98 oci = [
99 ocifs
100 ];
101 smb = [
102 smbprotocol
103 ];
104 ssh = [
105 paramiko
106 ];
107 fuse = [
108 fusepy
109 ];
110 libarchive = [
111 libarchive-c
112 ];
113 gui = [
114 panel
115 ];
116 tqdm = [
117 tqdm
118 ];
119 };
120
121 nativeCheckInputs = [
122 numpy
123 pytest-asyncio
124 pytest-mock
125 pytest-vcr
126 pytestCheckHook
127 ];
128
129 __darwinAllowLocalNetworking = true;
130
131 disabledTests = [
132 # Test assumes user name is part of $HOME
133 # AssertionError: assert 'nixbld' in '/homeless-shelter/foo/bar'
134 "test_strip_protocol_expanduser"
135 # test accesses this remote ftp server:
136 # https://ftp.fau.de/debian-cd/current/amd64/log/success
137 "test_find"
138 # Tests want to access S3
139 "test_urlpath_inference_errors"
140 "test_mismatch"
141 ] ++ lib.optionals (stdenv.isDarwin) [
142 # works locally on APFS, fails on hydra with AssertionError comparing timestamps
143 # darwin hydra builder uses HFS+ and has only one second timestamp resolution
144 # this two tests however, assume nanosecond resolution
145 "test_modified"
146 "test_touch"
147 ];
148
149 disabledTestPaths = [
150 # JSON decoding issues
151 "fsspec/implementations/tests/test_dbfs.py"
152 ];
153
154 pythonImportsCheck = [
155 "fsspec"
156 ];
157
158 meta = with lib; {
159 description = "A specification that Python filesystems should adhere to";
160 homepage = "https://github.com/fsspec/filesystem_spec";
161 changelog = "https://github.com/fsspec/filesystem_spec/raw/${version}/docs/source/changelog.rst";
162 license = licenses.bsd3;
163 maintainers = with maintainers; [ ];
164 };
165}