cloud-files 6.2.1__tar.gz → 6.2.2__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 (38) hide show
  1. {cloud_files-6.2.1 → cloud_files-6.2.2}/ChangeLog +5 -0
  2. {cloud_files-6.2.1 → cloud_files-6.2.2}/PKG-INFO +1 -1
  3. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/PKG-INFO +1 -1
  4. cloud_files-6.2.2/cloud_files.egg-info/pbr.json +1 -0
  5. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/interfaces.py +4 -3
  6. cloud_files-6.2.1/cloud_files.egg-info/pbr.json +0 -1
  7. {cloud_files-6.2.1 → cloud_files-6.2.2}/.github/workflows/test-suite.yml +0 -0
  8. {cloud_files-6.2.1 → cloud_files-6.2.2}/AUTHORS +0 -0
  9. {cloud_files-6.2.1 → cloud_files-6.2.2}/LICENSE +0 -0
  10. {cloud_files-6.2.1 → cloud_files-6.2.2}/MANIFEST.in +0 -0
  11. {cloud_files-6.2.1 → cloud_files-6.2.2}/README.md +0 -0
  12. {cloud_files-6.2.1 → cloud_files-6.2.2}/automated_test.py +0 -0
  13. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/SOURCES.txt +0 -0
  14. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/dependency_links.txt +0 -0
  15. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/entry_points.txt +0 -0
  16. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/not-zip-safe +0 -0
  17. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/requires.txt +0 -0
  18. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/top_level.txt +0 -0
  19. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/__init__.py +0 -0
  20. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/cloudfiles.py +0 -0
  21. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/compression.py +0 -0
  22. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/connectionpools.py +0 -0
  23. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/exceptions.py +0 -0
  24. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/gcs.py +0 -0
  25. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/lib.py +0 -0
  26. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/monitoring.py +0 -0
  27. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/paths.py +0 -0
  28. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/resumable_tools.py +0 -0
  29. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/scheduler.py +0 -0
  30. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/secrets.py +0 -0
  31. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/threaded_queue.py +0 -0
  32. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/typing.py +0 -0
  33. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/LICENSE +0 -0
  34. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/__init__.py +0 -0
  35. {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/cloudfiles_cli.py +0 -0
  36. {cloud_files-6.2.1 → cloud_files-6.2.2}/requirements.txt +0 -0
  37. {cloud_files-6.2.1 → cloud_files-6.2.2}/setup.cfg +0 -0
  38. {cloud_files-6.2.1 → cloud_files-6.2.2}/setup.py +0 -0
@@ -1,6 +1,11 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 6.2.2
5
+ -----
6
+
7
+ * fix: handle more synthetic etags
8
+
4
9
  6.2.1
5
10
  -----
6
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloud-files
3
- Version: 6.2.1
3
+ Version: 6.2.2
4
4
  Summary: Fast access to cloud storage and local FS.
5
5
  Home-page: https://github.com/seung-lab/cloud-files/
6
6
  Author: William Silversmith
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloud-files
3
- Version: 6.2.1
3
+ Version: 6.2.2
4
4
  Summary: Fast access to cloud storage and local FS.
5
5
  Home-page: https://github.com/seung-lab/cloud-files/
6
6
  Author: William Silversmith
@@ -0,0 +1 @@
1
+ {"git_version": "c6239ff", "is_release": true}
@@ -30,6 +30,7 @@ from .secrets import (
30
30
  CLOUD_FILES_LOCK_DIR,
31
31
  )
32
32
 
33
+ NFS_ETAG_REGEXP = re.compile(r'\d+\-$')
33
34
  COMPRESSION_EXTENSIONS = ('.gz', '.br', '.zstd','.bz2','.xz')
34
35
  GZIP_TYPES = (True, 'gzip', 1)
35
36
 
@@ -1328,9 +1329,9 @@ class S3Interface(StorageInterface):
1328
1329
  # AWS has special multipart validation
1329
1330
  # so we handle it here... leaky abstraction.
1330
1331
  if '-' in etag:
1331
- # Dell ECS S3 uses a synthetic Etag of "1-" for objects ingested via NFS
1332
- # Not good behavior, but nothing much we can do other than ignore it.
1333
- if etag != "1-" and not validate_s3_multipart_etag(content, etag, part_size):
1332
+ # Dell ECS S3 uses a synthetic Etag of "1-" (and similar) for objects
1333
+ # ingested via NFS. Not good behavior, but nothing much we can do other than ignore it.
1334
+ if not NFS_ETAG_REGEXP.match(etag) and not validate_s3_multipart_etag(content, etag, part_size):
1334
1335
  raise MD5IntegrityError(f"{file_path} failed its multipart md5 check. server md5: {etag}")
1335
1336
  etag = None
1336
1337
  else:
@@ -1 +0,0 @@
1
- {"git_version": "4dd0458", "is_release": true}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes