cloud-files 5.0.2__py3-none-any.whl → 5.1.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloud-files
3
- Version: 5.0.2
3
+ Version: 5.1.0
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,12 +1,12 @@
1
1
  cloudfiles/__init__.py,sha256=pLB4CcV2l3Jgv_ni1520Np1pfzFj8Cpr87vNxFT3rNI,493
2
- cloudfiles/cloudfiles.py,sha256=SVGAupjBi98brCMomAYOakbeyLJAahd7BUjf8pwZv8E,51066
2
+ cloudfiles/cloudfiles.py,sha256=K8rKzrzDzbi1HjGoPMsXSMFzTbe_KLfDIyk4tRjoGEI,51070
3
3
  cloudfiles/compression.py,sha256=pqYdpu5vfFv-094BpfZ2pgRjVu7ESM9pAZC09P6E8bY,6150
4
4
  cloudfiles/connectionpools.py,sha256=aL8RiSjRepECfgAFmJcz80aJFKbou7hsbuEgugDKwB8,4814
5
5
  cloudfiles/exceptions.py,sha256=N0oGQNG-St6RvnT8e5p_yC_E61q2kgAe2scwAL0F49c,843
6
6
  cloudfiles/gcs.py,sha256=unqu5KxGKaPq6N4QeHSpCDdtnK1BzPOAerTZ8FLt2_4,3820
7
- cloudfiles/interfaces.py,sha256=rc6jblcdxfvsPAyiOrosY_kTn7idHftS026prG84x2M,43389
7
+ cloudfiles/interfaces.py,sha256=jAILgy6v67L0tV4QXe03wm6fzb2nJ3PJQod8IPE_c7k,43601
8
8
  cloudfiles/lib.py,sha256=9YFGMCy0mi23baqtsr-f5Gd1ewAGvD7x3UVNt772Z9E,5317
9
- cloudfiles/paths.py,sha256=VFgqrOqI7lTZ2EE7Ktg6I343TVXYEhn8GHTfJZZ9giE,11435
9
+ cloudfiles/paths.py,sha256=4B3qWjR2TP8wAYK4NLw-iy2KUn3VNspKp6_Vy4j3I8A,11592
10
10
  cloudfiles/resumable_tools.py,sha256=NyuSoGh1SaP5akrHCpd9kgy2-JruEWrHW9lvJxV7jpE,6711
11
11
  cloudfiles/scheduler.py,sha256=DqDANmOpB3NdzFgJDNMMibRIkCrXQqIh2XGL8GWoc9c,3668
12
12
  cloudfiles/secrets.py,sha256=791b5a8nWSBYtlleGzKeoYIR5jl-FI1bw6INRM4Wy-0,5295
@@ -15,11 +15,11 @@ cloudfiles/typing.py,sha256=f3ZYkNfN9poxhGu5j-P0KCxjCCqSn9HAg5KiIPkjnCg,416
15
15
  cloudfiles_cli/LICENSE,sha256=Jna4xYE8CCQmaxjr5Fs-wmUBnIQJ1DGcNn9MMjbkprk,1538
16
16
  cloudfiles_cli/__init__.py,sha256=Wftt3R3F21QsHtWqx49ODuqT9zcSr0em7wk48kcH0WM,29
17
17
  cloudfiles_cli/cloudfiles_cli.py,sha256=_2Amjp3vsdq7vQgF2utD6BJqjOPKXOTjrJyehnlojpQ,34893
18
- cloud_files-5.0.2.dist-info/AUTHORS,sha256=BFVmobgAhaVFI5fqbuqAY5XmBQxe09ZZAsAOTy87hKQ,318
19
- cloud_files-5.0.2.dist-info/LICENSE,sha256=Jna4xYE8CCQmaxjr5Fs-wmUBnIQJ1DGcNn9MMjbkprk,1538
20
- cloud_files-5.0.2.dist-info/METADATA,sha256=ZrdyciuDQruZS6GjOll-FxtWl1sRHE2DwszlHVXVdPA,27047
21
- cloud_files-5.0.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
22
- cloud_files-5.0.2.dist-info/entry_points.txt,sha256=xlirb1FVhn1mbcv4IoyMEGumDqKOA4VMVd3drsRQxIg,51
23
- cloud_files-5.0.2.dist-info/pbr.json,sha256=1Ut3ABIh0b-00huoRZVkC1bPqCTSbdQ3syVtVqYnIU4,46
24
- cloud_files-5.0.2.dist-info/top_level.txt,sha256=xPyrST3okJbsmdCF5IC2gYAVxg_aD5AYVTnNo8UuoZU,26
25
- cloud_files-5.0.2.dist-info/RECORD,,
18
+ cloud_files-5.1.0.dist-info/AUTHORS,sha256=BFVmobgAhaVFI5fqbuqAY5XmBQxe09ZZAsAOTy87hKQ,318
19
+ cloud_files-5.1.0.dist-info/LICENSE,sha256=Jna4xYE8CCQmaxjr5Fs-wmUBnIQJ1DGcNn9MMjbkprk,1538
20
+ cloud_files-5.1.0.dist-info/METADATA,sha256=J8ZvZo3w1SJDhpuvyy5Qz8yswZElEsFMzMfzN3iqnvY,27047
21
+ cloud_files-5.1.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
22
+ cloud_files-5.1.0.dist-info/entry_points.txt,sha256=xlirb1FVhn1mbcv4IoyMEGumDqKOA4VMVd3drsRQxIg,51
23
+ cloud_files-5.1.0.dist-info/pbr.json,sha256=xEKcf5cQdkKoIlJkxO7RUsjjZQPsSGYZpQUsAew5Ve8,46
24
+ cloud_files-5.1.0.dist-info/top_level.txt,sha256=xPyrST3okJbsmdCF5IC2gYAVxg_aD5AYVTnNo8UuoZU,26
25
+ cloud_files-5.1.0.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"git_version": "4678ea6", "is_release": true}
cloudfiles/cloudfiles.py CHANGED
@@ -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
cloudfiles/interfaces.py CHANGED
@@ -808,18 +808,24 @@ class GoogleCloudStorageInterface(StorageInterface):
808
808
  path = posixpath.join(layer_path, prefix)
809
809
 
810
810
  delimiter = '/' if flat else None
811
+
811
812
  blobs = self._bucket.list_blobs(
812
813
  prefix=path,
813
814
  delimiter=delimiter,
814
815
  )
815
816
 
816
- if blobs.prefixes:
817
- yield from (
818
- item.removeprefix(path)
819
- for item in blobs.prefixes
820
- )
821
-
817
+ first = True
822
818
  for blob in blobs:
819
+ # This awkward construction is necessary
820
+ # because the request that populates prefixes
821
+ # isn't made until the iterator is activated.
822
+ if first and blobs.prefixes:
823
+ yield from (
824
+ item.removeprefix(path)
825
+ for item in blobs.prefixes
826
+ )
827
+ first = False
828
+
823
829
  filename = blob.name.removeprefix(layer_path)
824
830
  if not filename:
825
831
  continue
cloudfiles/paths.py CHANGED
@@ -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": "b480c53", "is_release": true}