cloud-files 6.2.0__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.0 → cloud_files-6.2.2}/ChangeLog +10 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/PKG-INFO +1 -1
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/PKG-INFO +1 -1
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/SOURCES.txt +0 -1
- cloud_files-6.2.2/cloud_files.egg-info/pbr.json +1 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/interfaces.py +5 -2
- cloud_files-6.2.0/cloud_files.egg-info/pbr.json +0 -1
- cloud_files-6.2.0/cloudfiles/test.py +0 -28
- {cloud_files-6.2.0 → cloud_files-6.2.2}/.github/workflows/test-suite.yml +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/AUTHORS +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/LICENSE +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/MANIFEST.in +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/README.md +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/automated_test.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/dependency_links.txt +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/entry_points.txt +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/not-zip-safe +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/requires.txt +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloud_files.egg-info/top_level.txt +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/__init__.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/cloudfiles.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/compression.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/connectionpools.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/exceptions.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/gcs.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/lib.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/monitoring.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/paths.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/resumable_tools.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/scheduler.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/secrets.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/threaded_queue.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles/typing.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles_cli/LICENSE +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles_cli/__init__.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/cloudfiles_cli/cloudfiles_cli.py +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/requirements.txt +0 -0
- {cloud_files-6.2.0 → cloud_files-6.2.2}/setup.cfg +0 -0
- {cloud_files-6.2.0 → 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
|
|
|
@@ -1327,8 +1328,10 @@ class S3Interface(StorageInterface):
|
|
|
1327
1328
|
etag = etag.lstrip('"').rstrip('"')
|
|
1328
1329
|
# AWS has special multipart validation
|
|
1329
1330
|
# so we handle it here... leaky abstraction.
|
|
1330
|
-
if '-' in etag:
|
|
1331
|
-
|
|
1331
|
+
if '-' in 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):
|
|
1332
1335
|
raise MD5IntegrityError(f"{file_path} failed its multipart md5 check. server md5: {etag}")
|
|
1333
1336
|
etag = None
|
|
1334
1337
|
else:
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "a0c3192", "is_release": true}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import igneous.task_creation as tc
|
|
2
|
-
import os
|
|
3
|
-
from taskqueue import totask
|
|
4
|
-
import igneous.tasks
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def process_task(msg):
|
|
8
|
-
task = totask(msg)
|
|
9
|
-
task.execute()
|
|
10
|
-
return None
|
|
11
|
-
|
|
12
|
-
def submit_tasks():
|
|
13
|
-
paths = [
|
|
14
|
-
"gs://ng_scratch_ranl_7/make_cv_happy/seg/20250403024338",]
|
|
15
|
-
all_tasks = []
|
|
16
|
-
for img_path in paths:
|
|
17
|
-
mip = 0
|
|
18
|
-
num_mips = 2
|
|
19
|
-
tasks = tc.create_downsampling_tasks(img_path,
|
|
20
|
-
fill_missing=False,
|
|
21
|
-
delete_black_uploads=True,
|
|
22
|
-
mip=mip, num_mips=num_mips)
|
|
23
|
-
all_tasks += list(tasks)
|
|
24
|
-
return all_tasks
|
|
25
|
-
|
|
26
|
-
if __name__ == "__main__":
|
|
27
|
-
tasks = submit_tasks()
|
|
28
|
-
process_task(tasks[0])
|
|
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
|