s3fs 2025.9.0__tar.gz → 2025.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {s3fs-2025.9.0/s3fs.egg-info → s3fs-2025.10.0}/PKG-INFO +2 -2
- {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/changelog.rst +8 -1
- s3fs-2025.10.0/docs/source/code-of-conduct.rst +126 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/index.rst +10 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/requirements.txt +1 -1
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/_version.py +3 -3
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/core.py +12 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_s3fs.py +7 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0/s3fs.egg-info}/PKG-INFO +2 -2
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/SOURCES.txt +1 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/requires.txt +1 -1
- {s3fs-2025.9.0 → s3fs-2025.10.0}/LICENSE.txt +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/MANIFEST.in +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/README.md +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/api.rst +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/development.rst +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/install.rst +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/__init__.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/errors.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/mapping.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/__init__.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/__init__.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/s3fs_fixtures.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/s3fs_test.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_mapping.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_utils.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/utils.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/dependency_links.txt +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/not-zip-safe +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/top_level.txt +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/setup.cfg +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/setup.py +0 -0
- {s3fs-2025.9.0 → s3fs-2025.10.0}/versioneer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: s3fs
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.10.0
|
|
4
4
|
Summary: Convenient Filesystem interface over S3
|
|
5
5
|
Home-page: http://github.com/fsspec/s3fs/
|
|
6
6
|
Maintainer: Martin Durant
|
|
@@ -20,7 +20,7 @@ Requires-Python: >= 3.9
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE.txt
|
|
22
22
|
Requires-Dist: aiobotocore<3.0.0,>=2.5.4
|
|
23
|
-
Requires-Dist: fsspec==2025.
|
|
23
|
+
Requires-Dist: fsspec==2025.10.0
|
|
24
24
|
Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1
|
|
25
25
|
Provides-Extra: awscli
|
|
26
26
|
Requires-Dist: aiobotocore[awscli]<3.0.0,>=2.5.4; extra == "awscli"
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
2025.10.0
|
|
5
|
+
---------
|
|
6
|
+
|
|
7
|
+
- get bucket info on demand (#987)
|
|
8
|
+
- add CoC (#986)
|
|
9
|
+
- add goatcounter tracker (#985)
|
|
10
|
+
|
|
4
11
|
2025.9.0
|
|
5
12
|
--------
|
|
6
13
|
|
|
7
|
-
- update README for distribution compliance
|
|
14
|
+
- update README for distribution compliance (#977)
|
|
8
15
|
|
|
9
16
|
2025.7.0
|
|
10
17
|
--------
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
Code of Conduct
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
All participants in the fsspec community are expected to adhere to a Code of Conduct.
|
|
5
|
+
|
|
6
|
+
As contributors and maintainers of this project, and in the interest of
|
|
7
|
+
fostering an open and welcoming community, we pledge to respect all people who
|
|
8
|
+
contribute through reporting issues, posting feature requests, updating
|
|
9
|
+
documentation, submitting pull requests or patches, and other activities.
|
|
10
|
+
|
|
11
|
+
We are committed to making participation in this project a harassment-free
|
|
12
|
+
experience for everyone, treating everyone as unique humans deserving of
|
|
13
|
+
respect.
|
|
14
|
+
|
|
15
|
+
Examples of unacceptable behaviour by participants include:
|
|
16
|
+
|
|
17
|
+
- The use of sexualized language or imagery
|
|
18
|
+
- Personal attacks
|
|
19
|
+
- Trolling or insulting/derogatory comments
|
|
20
|
+
- Public or private harassment
|
|
21
|
+
- Publishing other's private information, such as physical or electronic
|
|
22
|
+
addresses, without explicit permission
|
|
23
|
+
- Other unethical or unprofessional conduct
|
|
24
|
+
|
|
25
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
|
26
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
27
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
28
|
+
permanently any contributor for other behaviours that they deem inappropriate,
|
|
29
|
+
threatening, offensive, or harmful.
|
|
30
|
+
|
|
31
|
+
By adopting this Code of Conduct, project maintainers commit themselves
|
|
32
|
+
to fairly and consistently applying these principles to every aspect of
|
|
33
|
+
managing this project. Project maintainers who do not follow or enforce
|
|
34
|
+
the Code of Conduct may be permanently removed from the project team.
|
|
35
|
+
|
|
36
|
+
This code of conduct applies both within project spaces and in public
|
|
37
|
+
spaces when an individual is representing the project or its community.
|
|
38
|
+
|
|
39
|
+
If you feel the code of conduct has been violated, please report the
|
|
40
|
+
incident to the fsspec core team.
|
|
41
|
+
|
|
42
|
+
Reporting
|
|
43
|
+
---------
|
|
44
|
+
|
|
45
|
+
If you believe someone is violating theCode of Conduct we ask that you report it
|
|
46
|
+
to the Project by emailing community@anaconda.com. All reports will be kept
|
|
47
|
+
confidential. In some cases we may determine that a public statement will need
|
|
48
|
+
to be made. If that's the case, the identities of all victims and reporters
|
|
49
|
+
will remain confidential unless those individuals instruct us otherwise.
|
|
50
|
+
If you believe anyone is in physical danger, please notify appropriate law
|
|
51
|
+
enforcement first.
|
|
52
|
+
|
|
53
|
+
In your report please include:
|
|
54
|
+
|
|
55
|
+
- Your contact info
|
|
56
|
+
- Names (real, nicknames, or pseudonyms) of any individuals involved.
|
|
57
|
+
If there were other witnesses besides you, please try to include them as well.
|
|
58
|
+
- When and where the incident occurred. Please be as specific as possible.
|
|
59
|
+
- Your account of what occurred. If there is a publicly available record
|
|
60
|
+
please include a link.
|
|
61
|
+
- Any extra context you believe existed for the incident.
|
|
62
|
+
- If you believe this incident is ongoing.
|
|
63
|
+
- If you believe any member of the core team has a conflict of interest
|
|
64
|
+
in adjudicating the incident.
|
|
65
|
+
- What, if any, corrective response you believe would be appropriate.
|
|
66
|
+
- Any other information you believe we should have.
|
|
67
|
+
|
|
68
|
+
Core team members are obligated to maintain confidentiality with regard
|
|
69
|
+
to the reporter and details of an incident.
|
|
70
|
+
|
|
71
|
+
What happens next?
|
|
72
|
+
~~~~~~~~~~~~~~~~~~
|
|
73
|
+
|
|
74
|
+
You will receive an email acknowledging receipt of your complaint.
|
|
75
|
+
The core team will immediately meet to review the incident and determine:
|
|
76
|
+
|
|
77
|
+
- What happened.
|
|
78
|
+
- Whether this event constitutes a code of conduct violation.
|
|
79
|
+
- Who the bad actor was.
|
|
80
|
+
- Whether this is an ongoing situation, or if there is a threat to anyone's
|
|
81
|
+
physical safety.
|
|
82
|
+
- If this is determined to be an ongoing incident or a threat to physical safety,
|
|
83
|
+
the working groups' immediate priority will be to protect everyone involved.
|
|
84
|
+
|
|
85
|
+
If a member of the core team is one of the named parties, they will not be
|
|
86
|
+
included in any discussions, and will not be provided with any confidential
|
|
87
|
+
details from the reporter.
|
|
88
|
+
|
|
89
|
+
If anyone on the core team believes they have a conflict of interest in
|
|
90
|
+
adjudicating on a reported issue, they will inform the other core team
|
|
91
|
+
members, and exempt themselves from any discussion about the issue.
|
|
92
|
+
Following this declaration, they will not be provided with any confidential
|
|
93
|
+
details from the reporter.
|
|
94
|
+
|
|
95
|
+
Once the working group has a complete account of the events they will make a
|
|
96
|
+
decision as to how to response. Responses may include:
|
|
97
|
+
|
|
98
|
+
- Nothing (if we determine no violation occurred).
|
|
99
|
+
- A private reprimand from the working group to the individual(s) involved.
|
|
100
|
+
- A public reprimand.
|
|
101
|
+
- An imposed vacation
|
|
102
|
+
- A permanent or temporary ban from some or all spaces (GitHub repositories, etc.)
|
|
103
|
+
- A request for a public or private apology.
|
|
104
|
+
|
|
105
|
+
We'll respond within one week to the person who filed the report with either a
|
|
106
|
+
resolution or an explanation of why the situation is not yet resolved.
|
|
107
|
+
|
|
108
|
+
Once we've determined our final action, we'll contact the original reporter
|
|
109
|
+
to let them know what action (if any) we'll be taking. We'll take into account
|
|
110
|
+
feedback from the reporter on the appropriateness of our response, but we
|
|
111
|
+
don't guarantee we'll act on it.
|
|
112
|
+
|
|
113
|
+
Acknowledgement
|
|
114
|
+
---------------
|
|
115
|
+
|
|
116
|
+
This CoC is modified from the one by `BeeWare`_, which in turn refers to
|
|
117
|
+
the `Contributor Covenant`_ and the `Django`_ project.
|
|
118
|
+
|
|
119
|
+
.. _BeeWare: https://beeware.org/community/behavior/code-of-conduct/
|
|
120
|
+
.. _Contributor Covenant: https://www.contributor-covenant.org/version/1/3/0/code-of-conduct/
|
|
121
|
+
.. _Django: https://www.djangoproject.com/conduct/reporting/
|
|
122
|
+
|
|
123
|
+
.. raw:: html
|
|
124
|
+
|
|
125
|
+
<script data-goatcounter="https://projspec.goatcounter.com/count"
|
|
126
|
+
async src="//gc.zgo.at/count.js"></script>
|
|
@@ -340,6 +340,7 @@ Contents
|
|
|
340
340
|
development
|
|
341
341
|
api
|
|
342
342
|
changelog
|
|
343
|
+
code-of-conduct
|
|
343
344
|
:maxdepth: 2
|
|
344
345
|
|
|
345
346
|
|
|
@@ -351,3 +352,12 @@ Indices and tables
|
|
|
351
352
|
* :ref:`genindex`
|
|
352
353
|
* :ref:`modindex`
|
|
353
354
|
* :ref:`search`
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
These docs pages collect anonymous tracking data using goatcounter, and the
|
|
358
|
+
dashboard is available to the public: https://s3fs.goatcounter.com/ .
|
|
359
|
+
|
|
360
|
+
.. raw:: html
|
|
361
|
+
|
|
362
|
+
<script data-goatcounter="https://s3fs.goatcounter.com/count"
|
|
363
|
+
async src="//gc.zgo.at/count.js"></script>
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2025-
|
|
11
|
+
"date": "2025-10-30T11:05:18-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "2025.
|
|
14
|
+
"full-revisionid": "2750bf8dacee65710da91b4292e8ad9653edf782",
|
|
15
|
+
"version": "2025.10.0"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -1464,6 +1464,18 @@ class S3FileSystem(AsyncFileSystem):
|
|
|
1464
1464
|
pass
|
|
1465
1465
|
except ClientError as e:
|
|
1466
1466
|
raise translate_boto_error(e, set_cause=False)
|
|
1467
|
+
else:
|
|
1468
|
+
try:
|
|
1469
|
+
out = await self._call_s3("head_bucket", Bucket=bucket, **self.req_kw)
|
|
1470
|
+
return {
|
|
1471
|
+
"name": bucket,
|
|
1472
|
+
"type": "directory",
|
|
1473
|
+
"size": 0,
|
|
1474
|
+
"StorageClass": "DIRECTORY",
|
|
1475
|
+
"VersionId": out.get("VersionId"),
|
|
1476
|
+
}
|
|
1477
|
+
except ClientError as e:
|
|
1478
|
+
raise translate_boto_error(e, set_cause=False)
|
|
1467
1479
|
|
|
1468
1480
|
try:
|
|
1469
1481
|
# We check to see if the path is a directory by attempting to list its
|
|
@@ -2986,3 +2986,10 @@ def test_put_exclusive_small(s3, tmpdir):
|
|
|
2986
2986
|
with pytest.raises(FileExistsError):
|
|
2987
2987
|
s3.put(fn, f"{test_bucket_name}/afile", mode="create")
|
|
2988
2988
|
assert not s3.list_multipart_uploads(test_bucket_name)
|
|
2989
|
+
|
|
2990
|
+
|
|
2991
|
+
def test_bucket_info(s3):
|
|
2992
|
+
info = s3.info(test_bucket_name)
|
|
2993
|
+
assert "VersionId" in info
|
|
2994
|
+
assert info["type"] == "directory"
|
|
2995
|
+
assert info["name"] == test_bucket_name
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: s3fs
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.10.0
|
|
4
4
|
Summary: Convenient Filesystem interface over S3
|
|
5
5
|
Home-page: http://github.com/fsspec/s3fs/
|
|
6
6
|
Maintainer: Martin Durant
|
|
@@ -20,7 +20,7 @@ Requires-Python: >= 3.9
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE.txt
|
|
22
22
|
Requires-Dist: aiobotocore<3.0.0,>=2.5.4
|
|
23
|
-
Requires-Dist: fsspec==2025.
|
|
23
|
+
Requires-Dist: fsspec==2025.10.0
|
|
24
24
|
Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1
|
|
25
25
|
Provides-Extra: awscli
|
|
26
26
|
Requires-Dist: aiobotocore[awscli]<3.0.0,>=2.5.4; extra == "awscli"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|