cloud-files 5.0.3__tar.gz → 5.1.1__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 (37) hide show
  1. {cloud_files-5.0.3 → cloud_files-5.1.1}/ChangeLog +13 -0
  2. {cloud_files-5.0.3 → cloud_files-5.1.1}/PKG-INFO +1 -1
  3. {cloud_files-5.0.3 → cloud_files-5.1.1}/automated_test.py +7 -0
  4. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/PKG-INFO +1 -1
  5. cloud_files-5.1.1/cloud_files.egg-info/pbr.json +1 -0
  6. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/cloudfiles.py +1 -1
  7. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/interfaces.py +9 -0
  8. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/paths.py +6 -0
  9. cloud_files-5.0.3/cloud_files.egg-info/pbr.json +0 -1
  10. {cloud_files-5.0.3 → cloud_files-5.1.1}/.github/workflows/test-suite.yml +0 -0
  11. {cloud_files-5.0.3 → cloud_files-5.1.1}/AUTHORS +0 -0
  12. {cloud_files-5.0.3 → cloud_files-5.1.1}/LICENSE +0 -0
  13. {cloud_files-5.0.3 → cloud_files-5.1.1}/MANIFEST.in +0 -0
  14. {cloud_files-5.0.3 → cloud_files-5.1.1}/README.md +0 -0
  15. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/SOURCES.txt +0 -0
  16. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/dependency_links.txt +0 -0
  17. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/entry_points.txt +0 -0
  18. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/not-zip-safe +0 -0
  19. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/requires.txt +0 -0
  20. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloud_files.egg-info/top_level.txt +0 -0
  21. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/__init__.py +0 -0
  22. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/compression.py +0 -0
  23. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/connectionpools.py +0 -0
  24. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/exceptions.py +0 -0
  25. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/gcs.py +0 -0
  26. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/lib.py +0 -0
  27. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/resumable_tools.py +0 -0
  28. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/scheduler.py +0 -0
  29. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/secrets.py +0 -0
  30. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/threaded_queue.py +0 -0
  31. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles/typing.py +0 -0
  32. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles_cli/LICENSE +0 -0
  33. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles_cli/__init__.py +0 -0
  34. {cloud_files-5.0.3 → cloud_files-5.1.1}/cloudfiles_cli/cloudfiles_cli.py +0 -0
  35. {cloud_files-5.0.3 → cloud_files-5.1.1}/requirements.txt +0 -0
  36. {cloud_files-5.0.3 → cloud_files-5.1.1}/setup.cfg +0 -0
  37. {cloud_files-5.0.3 → cloud_files-5.1.1}/setup.py +0 -0
@@ -1,6 +1,19 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 5.1.1
5
+ -----
6
+
7
+ * fix: ensure directory exists for download\_to\_file
8
+ * docs: add why there is this extra bit of code
9
+ * fix(gs/list): show flat directories even if there are no regular entries
10
+
11
+ 5.1.0
12
+ -----
13
+
14
+ * fix: remove precomputed suffix from cloudfiles during normalization
15
+ * feat: accept the new |neuroglancer-precomputed: suffix
16
+
4
17
  5.0.3
5
18
  -----
6
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloud-files
3
- Version: 5.0.3
3
+ Version: 5.1.1
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
@@ -531,6 +531,13 @@ def test_path_extraction():
531
531
 
532
532
  shoulderror('ou3bouqjsa fkj aojsf oaojf ojsaf')
533
533
 
534
+ assert (
535
+ paths.extract('gs://bucket/dataset/layer|neuroglancer-precomputed:')
536
+ == ExtractedPath(
537
+ 'precomputed', 'gs', 'bucket',
538
+ 'dataset/layer', None, None
539
+ ))
540
+
534
541
  okgoogle('gs://bucket/dataset/layer/')
535
542
  # shoulderror('gs://bucket/dataset/layer/info')
536
543
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloud-files
3
- Version: 5.0.3
3
+ Version: 5.1.1
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": "39ec622", "is_release": true}
@@ -243,7 +243,7 @@ class CloudFiles:
243
243
  cloudpath = paths.to_https_protocol(cloudpath)
244
244
 
245
245
  cloudpath = paths.normalize(cloudpath)
246
-
246
+
247
247
  self.cloudpath = cloudpath
248
248
  self.progress = progress
249
249
  self.secrets = secrets
@@ -707,6 +707,7 @@ class GoogleCloudStorageInterface(StorageInterface):
707
707
  key = self.get_path_to_file(src)
708
708
  blob = self._bucket.blob(key)
709
709
  try:
710
+ mkdir(os.path.dirname(dest))
710
711
  blob.download_to_filename(
711
712
  filename=dest,
712
713
  raw_download=True,
@@ -834,6 +835,14 @@ class GoogleCloudStorageInterface(StorageInterface):
834
835
  elif flat and '/' not in blob.name.removeprefix(path):
835
836
  yield filename
836
837
 
838
+ # When there are no regular items at this level
839
+ # we need to still print the directories.
840
+ if first and blobs.prefixes:
841
+ yield from (
842
+ item.removeprefix(path)
843
+ for item in blobs.prefixes
844
+ )
845
+
837
846
  def release_connection(self):
838
847
  global GC_POOL
839
848
  with GCS_BUCKET_POOL_LOCK:
@@ -18,6 +18,8 @@ ExtractedPath = namedtuple('ExtractedPath',
18
18
  ('format', 'protocol', 'bucket', 'path', 'host', 'alias')
19
19
  )
20
20
 
21
+ PRECOMPUTED_SUFFIX = '|neuroglancer-precomputed:'
22
+
21
23
  ALIAS_FILE = os.path.join(CLOUD_FILES_DIR, "aliases.json")
22
24
  OFFICIAL_ALIASES = {
23
25
  "matrix": "s3://https://s3-hpcrc.rc.princeton.edu/",
@@ -161,6 +163,9 @@ for alias, host in OFFICIAL_ALIASES.items():
161
163
 
162
164
  @lru_cache(maxsize=10, typed=False)
163
165
  def normalize(path):
166
+
167
+ path = path.removesuffix(PRECOMPUTED_SUFFIX)
168
+
164
169
  fmt, proto, endpoint, cloudpath, alias = extract_format_protocol(
165
170
  path, allow_defaults=False
166
171
  )
@@ -294,6 +299,7 @@ def extract_format_protocol(cloudpath:str, allow_defaults=True) -> tuple:
294
299
 
295
300
  groups = m.groups()
296
301
  cloudpath = re.sub(CLOUDPATH_REGEXP, '', cloudpath, count=1)
302
+ cloudpath = cloudpath.removesuffix(PRECOMPUTED_SUFFIX)
297
303
 
298
304
  fmt = m.group('fmt')
299
305
  if not fmt and allow_defaults:
@@ -1 +0,0 @@
1
- {"git_version": "589559d", "is_release": true}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes