1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5
6 # build-system
7 setuptools,
8
9 # dependencies
10 aiobotocore,
11 aiohttp,
12 fsspec,
13
14 # tests
15 flask,
16 flask-cors,
17 moto,
18 pytestCheckHook,
19}:
20
21buildPythonPackage rec {
22 pname = "s3fs";
23 version = "2025.2.0";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "fsspec";
28 repo = "s3fs";
29 tag = version;
30 hash = "sha256-nnfvccORDspj54sRxL3d0hn4MpzKYGKE2Kl0v/wLaNw=";
31 };
32
33 build-system = [
34 setuptools
35 ];
36
37 pythonRelaxDeps = [ "fsspec" ];
38
39 dependencies = [
40 aiobotocore
41 fsspec
42 aiohttp
43 ];
44
45 optional-dependencies = {
46 awscli = aiobotocore.optional-dependencies.awscli;
47 boto3 = aiobotocore.optional-dependencies.boto3;
48 };
49
50 pythonImportsCheck = [ "s3fs" ];
51
52 nativeCheckInputs = [
53 flask
54 flask-cors
55 moto
56 pytestCheckHook
57 ];
58
59 disabledTests = [
60 # require network access
61 "test_async_close"
62 ];
63
64 __darwinAllowLocalNetworking = true;
65
66 meta = {
67 description = "Pythonic file interface for S3";
68 homepage = "https://github.com/fsspec/s3fs";
69 changelog = "https://github.com/fsspec/s3fs/blob/${version}/docs/source/changelog.rst";
70 license = lib.licenses.bsd3;
71 maintainers = with lib.maintainers; [ teh ];
72 };
73}