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.
- {cloud_files-6.2.1 → cloud_files-6.2.2}/ChangeLog +5 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/PKG-INFO +1 -1
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/PKG-INFO +1 -1
- cloud_files-6.2.2/cloud_files.egg-info/pbr.json +1 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/interfaces.py +4 -3
- cloud_files-6.2.1/cloud_files.egg-info/pbr.json +0 -1
- {cloud_files-6.2.1 → cloud_files-6.2.2}/.github/workflows/test-suite.yml +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/AUTHORS +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/LICENSE +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/MANIFEST.in +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/README.md +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/automated_test.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/SOURCES.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/dependency_links.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/entry_points.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/not-zip-safe +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/requires.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloud_files.egg-info/top_level.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/__init__.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/cloudfiles.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/compression.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/connectionpools.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/exceptions.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/gcs.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/lib.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/monitoring.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/paths.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/resumable_tools.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/scheduler.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/secrets.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/threaded_queue.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles/typing.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/LICENSE +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/__init__.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/cloudfiles_cli/cloudfiles_cli.py +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/requirements.txt +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/setup.cfg +0 -0
- {cloud_files-6.2.1 → cloud_files-6.2.2}/setup.py +0 -0
|
@@ -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
|
|
1332
|
-
# Not good behavior, but nothing much we can do other than ignore it.
|
|
1333
|
-
if etag
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|