s3fs 2025.5.1__py3-none-any.whl → 2025.7.0__py3-none-any.whl

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/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-05-24T08:13:30-0400",
11
+ "date": "2025-07-15T12:34:34-0400",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "2f3c76d9c36025c7daefa766a8f81c79fc4010e7",
15
- "version": "2025.5.1"
14
+ "full-revisionid": "d46c149d89590b4b9109213f9f92cea01504eb0b",
15
+ "version": "2025.7.0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
s3fs/core.py CHANGED
@@ -2458,6 +2458,7 @@ class S3File(AbstractBufferedFile):
2458
2458
 
2459
2459
  def commit(self):
2460
2460
  logger.debug("Commit %s" % self)
2461
+ match = {"IfNoneMatch": "*"} if "x" in self.mode else {}
2461
2462
  if self.tell() == 0:
2462
2463
  if self.buffer is not None:
2463
2464
  logger.debug("Empty file committed %s" % self)
@@ -2471,15 +2472,11 @@ class S3File(AbstractBufferedFile):
2471
2472
  kw = dict(Key=self.key, Bucket=self.bucket, Body=data, **self.kwargs)
2472
2473
  if self.acl:
2473
2474
  kw["ACL"] = self.acl
2474
- write_result = self._call_s3("put_object", **kw)
2475
+ write_result = self._call_s3("put_object", **kw, **match)
2475
2476
  else:
2476
2477
  raise RuntimeError
2477
2478
  else:
2478
2479
  logger.debug("Complete multi-part upload for %s " % self)
2479
- if "x" in self.mode:
2480
- match = {"IfNoneMatch": "*"}
2481
- else:
2482
- match = {}
2483
2480
  part_info = {"Parts": self.parts}
2484
2481
  write_result = self._call_s3(
2485
2482
  "complete_multipart_upload",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: s3fs
3
- Version: 2025.5.1
3
+ Version: 2025.7.0
4
4
  Summary: Convenient Filesystem interface over S3
5
5
  Home-page: http://github.com/fsspec/s3fs/
6
6
  Maintainer: Martin Durant
@@ -17,15 +17,18 @@ Classifier: Programming Language :: Python :: 3.11
17
17
  Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: 3.13
19
19
  Requires-Python: >= 3.9
20
+ Description-Content-Type: text/markdown
20
21
  License-File: LICENSE.txt
21
22
  Requires-Dist: aiobotocore<3.0.0,>=2.5.4
22
- Requires-Dist: fsspec==2025.5.1
23
+ Requires-Dist: fsspec==2025.7.0
23
24
  Requires-Dist: aiohttp!=4.0.0a0,!=4.0.0a1
24
25
  Provides-Extra: awscli
25
26
  Requires-Dist: aiobotocore[awscli]<3.0.0,>=2.5.4; extra == "awscli"
26
27
  Provides-Extra: boto3
27
28
  Requires-Dist: aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "boto3"
28
29
  Dynamic: classifier
30
+ Dynamic: description
31
+ Dynamic: description-content-type
29
32
  Dynamic: home-page
30
33
  Dynamic: keywords
31
34
  Dynamic: license
@@ -37,21 +40,4 @@ Dynamic: requires-dist
37
40
  Dynamic: requires-python
38
41
  Dynamic: summary
39
42
 
40
- s3fs
41
- ====
42
-
43
- |Build Status| |Doc Status|
44
-
45
- S3FS builds on aiobotocore_ to provide a convenient Python filesystem interface for S3.
46
-
47
- View the documentation_ for s3fs.
48
-
49
- .. _documentation: http://s3fs.readthedocs.io/en/latest/
50
- .. _aiobotocore: https://aiobotocore.readthedocs.io/en/latest/
51
-
52
- .. |Build Status| image:: https://github.com/fsspec/s3fs/workflows/CI/badge.svg
53
- :target: https://github.com/fsspec/s3fs/actions
54
- :alt: Build Status
55
- .. |Doc Status| image:: https://readthedocs.org/projects/s3fs/badge/?version=latest
56
- :target: https://s3fs.readthedocs.io/en/latest/?badge=latest
57
- :alt: Documentation Status
43
+ README.md
@@ -0,0 +1,11 @@
1
+ s3fs/__init__.py,sha256=_6_Vs_vblhJSJw-62JVIBIM8kTKLhuwPFAIvt3hanls,160
2
+ s3fs/_version.py,sha256=k8gUWtFBFuAJW6NFA5OiYuqpCdt79X7-YRT4Wd8_-2Y,500
3
+ s3fs/core.py,sha256=qNTVMJfDF4sbaJmXZoTSB4yiLcmwDeVLPvn3ynsCjyI,91585
4
+ s3fs/errors.py,sha256=GepxwhJMNrCVKMWVE7WzEfuLMU62pibcD9xlr7RegSg,7961
5
+ s3fs/mapping.py,sha256=FoqEdMne7LXUL4HgPN4j6WsMsrwxpb53GynDhXs9VRI,237
6
+ s3fs/utils.py,sha256=33lK0sBH7uXTFnbO9gHjONn3RgF555koyVleK7EITlQ,5225
7
+ s3fs-2025.7.0.dist-info/licenses/LICENSE.txt,sha256=3DWZ-ma8G8_6I2g4vi-04V-EzkgBJE7sk9kOUVz8WNE,1505
8
+ s3fs-2025.7.0.dist-info/METADATA,sha256=_5T8nioOn5Z0iXALdkqcA3aE0PB5QMZpZJ9NYcB_a2g,1358
9
+ s3fs-2025.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
10
+ s3fs-2025.7.0.dist-info/top_level.txt,sha256=Lf6EI3TdjlPu7TN-92IIY6c-GdrHnkrKGb1n0iwKooI,5
11
+ s3fs-2025.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,11 +0,0 @@
1
- s3fs/__init__.py,sha256=_6_Vs_vblhJSJw-62JVIBIM8kTKLhuwPFAIvt3hanls,160
2
- s3fs/_version.py,sha256=jyrPM0cU3gfbVGq3lwvwVmNnjqGfCMAbRjZOtpRikGo,500
3
- s3fs/core.py,sha256=ia1loKO_uhXAds82xcSUwiGlGmifFiEtC1HxUkuVlFg,91634
4
- s3fs/errors.py,sha256=GepxwhJMNrCVKMWVE7WzEfuLMU62pibcD9xlr7RegSg,7961
5
- s3fs/mapping.py,sha256=FoqEdMne7LXUL4HgPN4j6WsMsrwxpb53GynDhXs9VRI,237
6
- s3fs/utils.py,sha256=33lK0sBH7uXTFnbO9gHjONn3RgF555koyVleK7EITlQ,5225
7
- s3fs-2025.5.1.dist-info/licenses/LICENSE.txt,sha256=3DWZ-ma8G8_6I2g4vi-04V-EzkgBJE7sk9kOUVz8WNE,1505
8
- s3fs-2025.5.1.dist-info/METADATA,sha256=cRjXPdYmNeeA_ats8flYw8vv4lK8Hsu0wAe8MvKKdI8,1873
9
- s3fs-2025.5.1.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
10
- s3fs-2025.5.1.dist-info/top_level.txt,sha256=Lf6EI3TdjlPu7TN-92IIY6c-GdrHnkrKGb1n0iwKooI,5
11
- s3fs-2025.5.1.dist-info/RECORD,,