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.
Files changed (33) hide show
  1. {s3fs-2025.9.0/s3fs.egg-info → s3fs-2025.10.0}/PKG-INFO +2 -2
  2. {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/changelog.rst +8 -1
  3. s3fs-2025.10.0/docs/source/code-of-conduct.rst +126 -0
  4. {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/index.rst +10 -0
  5. {s3fs-2025.9.0 → s3fs-2025.10.0}/requirements.txt +1 -1
  6. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/_version.py +3 -3
  7. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/core.py +12 -0
  8. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_s3fs.py +7 -0
  9. {s3fs-2025.9.0 → s3fs-2025.10.0/s3fs.egg-info}/PKG-INFO +2 -2
  10. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/SOURCES.txt +1 -0
  11. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/requires.txt +1 -1
  12. {s3fs-2025.9.0 → s3fs-2025.10.0}/LICENSE.txt +0 -0
  13. {s3fs-2025.9.0 → s3fs-2025.10.0}/MANIFEST.in +0 -0
  14. {s3fs-2025.9.0 → s3fs-2025.10.0}/README.md +0 -0
  15. {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/api.rst +0 -0
  16. {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/development.rst +0 -0
  17. {s3fs-2025.9.0 → s3fs-2025.10.0}/docs/source/install.rst +0 -0
  18. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/__init__.py +0 -0
  19. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/errors.py +0 -0
  20. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/mapping.py +0 -0
  21. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/__init__.py +0 -0
  22. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/__init__.py +0 -0
  23. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/s3fs_fixtures.py +0 -0
  24. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/derived/s3fs_test.py +0 -0
  25. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_mapping.py +0 -0
  26. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/tests/test_utils.py +0 -0
  27. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs/utils.py +0 -0
  28. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/dependency_links.txt +0 -0
  29. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/not-zip-safe +0 -0
  30. {s3fs-2025.9.0 → s3fs-2025.10.0}/s3fs.egg-info/top_level.txt +0 -0
  31. {s3fs-2025.9.0 → s3fs-2025.10.0}/setup.cfg +0 -0
  32. {s3fs-2025.9.0 → s3fs-2025.10.0}/setup.py +0 -0
  33. {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.9.0
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.9.0
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>
@@ -1,3 +1,3 @@
1
1
  aiobotocore>=2.5.4,<3.0.0
2
- fsspec==2025.9.0
2
+ fsspec==2025.10.0
3
3
  aiohttp!=4.0.0a0, !=4.0.0a1
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-09-02T15:17:31-0400",
11
+ "date": "2025-10-30T11:05:18-0400",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "380b2c6ad868dd90cf8967c862bac1b3154b357b",
15
- "version": "2025.9.0"
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.9.0
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.9.0
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"
@@ -7,6 +7,7 @@ setup.py
7
7
  versioneer.py
8
8
  docs/source/api.rst
9
9
  docs/source/changelog.rst
10
+ docs/source/code-of-conduct.rst
10
11
  docs/source/development.rst
11
12
  docs/source/index.rst
12
13
  docs/source/install.rst
@@ -1,5 +1,5 @@
1
1
  aiobotocore<3.0.0,>=2.5.4
2
- fsspec==2025.9.0
2
+ fsspec==2025.10.0
3
3
  aiohttp!=4.0.0a0,!=4.0.0a1
4
4
 
5
5
  [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