coiled 1.121.1.dev21__tar.gz → 1.121.1.dev23__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.

Potentially problematic release.


This version of coiled might be problematic. Click here for more details.

Files changed (101) hide show
  1. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/PKG-INFO +1 -1
  2. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/filestore.py +16 -7
  3. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/.gitignore +0 -0
  4. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/LICENSE +0 -0
  5. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/README.md +0 -0
  6. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/__init__.py +0 -0
  7. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/__main__.py +0 -0
  8. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/analytics.py +0 -0
  9. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/auth.py +0 -0
  10. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/batch.py +0 -0
  11. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/capture_environment.py +0 -0
  12. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/__init__.py +0 -0
  13. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/__init__.py +0 -0
  14. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/list.py +0 -0
  15. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/logs.py +0 -0
  16. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/run.py +0 -0
  17. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/status.py +0 -0
  18. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/batch/wait.py +0 -0
  19. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/__init__.py +0 -0
  20. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/azure_logs.py +0 -0
  21. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/better_logs.py +0 -0
  22. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/crud.py +0 -0
  23. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/get_address.py +0 -0
  24. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/list.py +0 -0
  25. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/logs.py +0 -0
  26. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/metrics.py +0 -0
  27. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/ssh.py +0 -0
  28. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/cluster/utils.py +0 -0
  29. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/config.py +0 -0
  30. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/core.py +0 -0
  31. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/curl.py +0 -0
  32. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/diagnostics.py +0 -0
  33. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/env.py +0 -0
  34. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/file.py +0 -0
  35. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/__init__.py +0 -0
  36. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/__init__.py +0 -0
  37. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/exit.py +0 -0
  38. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/hello_world.py +0 -0
  39. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/nyc_parquet.py +0 -0
  40. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/pytorch.py +0 -0
  41. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/examples/xarray_nwm.py +0 -0
  42. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/hello.py +0 -0
  43. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/scripts/fill_ipython.py +0 -0
  44. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/scripts/nyc_parquet.py +0 -0
  45. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/scripts/pytorch.py +0 -0
  46. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/scripts/xarray_nwm.py +0 -0
  47. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/hello/utils.py +0 -0
  48. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/login.py +0 -0
  49. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/notebook/__init__.py +0 -0
  50. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/notebook/notebook.py +0 -0
  51. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/package_sync.py +0 -0
  52. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/prefect.py +0 -0
  53. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/prefect_serve.py +0 -0
  54. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/run.py +0 -0
  55. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/__init__.py +0 -0
  56. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/amp.py +0 -0
  57. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/aws.py +0 -0
  58. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/azure.py +0 -0
  59. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/entry.py +0 -0
  60. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/gcp.py +0 -0
  61. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/prometheus.py +0 -0
  62. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/setup/util.py +0 -0
  63. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/sync.py +0 -0
  64. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cli/utils.py +0 -0
  65. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/cluster.py +0 -0
  66. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/coiled.yaml +0 -0
  67. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/compatibility.py +0 -0
  68. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/config.py +0 -0
  69. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/context.py +0 -0
  70. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/core.py +0 -0
  71. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/credentials/__init__.py +0 -0
  72. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/credentials/aws.py +0 -0
  73. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/credentials/google.py +0 -0
  74. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/errors.py +0 -0
  75. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/exceptions.py +0 -0
  76. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/extensions/__init__.py +0 -0
  77. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/extensions/prefect/__init__.py +0 -0
  78. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/extensions/prefect/runners.py +0 -0
  79. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/extensions/prefect/workers.py +0 -0
  80. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/function.py +0 -0
  81. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/plugins.py +0 -0
  82. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/prefect.py +0 -0
  83. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/pypi_conda_map.py +0 -0
  84. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/scan.py +0 -0
  85. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/software.py +0 -0
  86. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/software_utils.py +0 -0
  87. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/spans.py +0 -0
  88. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/spark.py +0 -0
  89. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/types.py +0 -0
  90. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/utils.py +0 -0
  91. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/__init__.py +0 -0
  92. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/cluster.py +0 -0
  93. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/core.py +0 -0
  94. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/cwi_log_link.py +0 -0
  95. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/states.py +0 -0
  96. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/widgets/__init__.py +0 -0
  97. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/widgets/interface.py +0 -0
  98. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/widgets/rich.py +0 -0
  99. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/v2/widgets/util.py +0 -0
  100. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/coiled/websockets.py +0 -0
  101. {coiled-1.121.1.dev21 → coiled-1.121.1.dev23}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coiled
3
- Version: 1.121.1.dev21
3
+ Version: 1.121.1.dev23
4
4
  Summary: Python client for coiled.io dask clusters
5
5
  Project-URL: Homepage, https://coiled.io
6
6
  Maintainer-email: Coiled <info@coiled.io>
@@ -135,13 +135,24 @@ def upload_to_filestore_with_ui(fs, local_dir):
135
135
  },
136
136
  ])
137
137
 
138
- upload_urls = FilestoreManager.get_signed_upload_urls(fs["id"], files_for_upload=files)
138
+ upload_info = FilestoreManager.get_signed_upload_urls(fs["id"], files_for_upload=files)
139
+
140
+ upload_urls = upload_info.get("urls")
141
+ existing_blobs = upload_info.get("existing")
139
142
 
140
143
  for local_path, relative_path, size in files:
141
- progress.batch_title = progress_title(local_path)
142
- progress.refresh()
144
+ skip_upload = False
145
+ existing_blob_info = existing_blobs.get(relative_path)
146
+ if existing_blob_info:
147
+ modified = os.path.getmtime(local_path)
148
+ if size == existing_blob_info["size"] and modified < existing_blob_info["modified"]:
149
+ skip_upload = True
150
+
151
+ if not skip_upload:
152
+ progress.batch_title = progress_title(local_path)
153
+ progress.refresh()
143
154
 
144
- FilestoreManager.upload_to_signed_url(local_path, upload_urls[relative_path])
155
+ FilestoreManager.upload_to_signed_url(local_path, upload_urls[relative_path])
145
156
 
146
157
  done_files += 1
147
158
  done_bytes += size
@@ -201,9 +212,7 @@ class FilestoreManagerWithoutHttp:
201
212
  @classmethod
202
213
  def get_signed_upload_urls(cls, fs_id, files_for_upload):
203
214
  paths = [p for _, p, _ in files_for_upload] # relative paths
204
- return cls.make_req(f"/api/v2/filestore/fs/{fs_id}/signed-urls/upload", post=True, data={"paths": paths}).get(
205
- "urls"
206
- )
215
+ return cls.make_req(f"/api/v2/filestore/fs/{fs_id}/signed-urls/upload", post=True, data={"paths": paths})
207
216
 
208
217
  @classmethod
209
218
  def get_download_list_with_urls(cls, fs_id):
File without changes
File without changes