coiled 1.133.2.dev1__tar.gz → 1.133.3.dev1__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 (104) hide show
  1. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/PKG-INFO +1 -1
  2. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/batch.py +2 -0
  3. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/run.py +7 -0
  4. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/core.py +3 -1
  5. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/.gitignore +0 -0
  6. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/LICENSE +0 -0
  7. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/README.md +0 -0
  8. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/__init__.py +0 -0
  9. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/__main__.py +0 -0
  10. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/analytics.py +0 -0
  11. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/auth.py +0 -0
  12. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/capture_environment.py +0 -0
  13. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/__init__.py +0 -0
  14. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/__init__.py +0 -0
  15. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/list.py +0 -0
  16. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/logs.py +0 -0
  17. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/status.py +0 -0
  18. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/util.py +0 -0
  19. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/batch/wait.py +0 -0
  20. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/__init__.py +0 -0
  21. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/azure_logs.py +0 -0
  22. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/better_logs.py +0 -0
  23. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/crud.py +0 -0
  24. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/get_address.py +0 -0
  25. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/list.py +0 -0
  26. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/logs.py +0 -0
  27. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/metrics.py +0 -0
  28. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/ssh.py +0 -0
  29. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/cluster/utils.py +0 -0
  30. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/config.py +0 -0
  31. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/core.py +0 -0
  32. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/curl.py +0 -0
  33. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/diagnostics.py +0 -0
  34. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/env.py +0 -0
  35. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/file.py +0 -0
  36. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/__init__.py +0 -0
  37. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/__init__.py +0 -0
  38. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/exit.py +0 -0
  39. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/hello_world.py +0 -0
  40. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/nyc_parquet.py +0 -0
  41. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/pytorch.py +0 -0
  42. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/examples/xarray_nwm.py +0 -0
  43. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/hello.py +0 -0
  44. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/scripts/fill_ipython.py +0 -0
  45. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/scripts/nyc_parquet.py +0 -0
  46. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/scripts/pytorch.py +0 -0
  47. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/scripts/xarray_nwm.py +0 -0
  48. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/hello/utils.py +0 -0
  49. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/login.py +0 -0
  50. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/mpi.py +0 -0
  51. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/notebook/__init__.py +0 -0
  52. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/notebook/notebook.py +0 -0
  53. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/package_sync.py +0 -0
  54. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/prefect.py +0 -0
  55. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/prefect_serve.py +0 -0
  56. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/run.py +0 -0
  57. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/__init__.py +0 -0
  58. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/amp.py +0 -0
  59. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/aws.py +0 -0
  60. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/azure.py +0 -0
  61. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/entry.py +0 -0
  62. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/gcp.py +0 -0
  63. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/prometheus.py +0 -0
  64. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/setup/util.py +0 -0
  65. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/sync.py +0 -0
  66. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cli/utils.py +0 -0
  67. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/cluster.py +0 -0
  68. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/coiled.yaml +0 -0
  69. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/compatibility.py +0 -0
  70. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/config.py +0 -0
  71. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/context.py +0 -0
  72. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/credentials/__init__.py +0 -0
  73. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/credentials/aws.py +0 -0
  74. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/credentials/google.py +0 -0
  75. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/errors.py +0 -0
  76. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/exceptions.py +0 -0
  77. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/extensions/__init__.py +0 -0
  78. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/extensions/prefect/__init__.py +0 -0
  79. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/extensions/prefect/runners.py +0 -0
  80. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/extensions/prefect/workers.py +0 -0
  81. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/filestore.py +0 -0
  82. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/function.py +0 -0
  83. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/plugins.py +0 -0
  84. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/prefect.py +0 -0
  85. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/pypi_conda_map.py +0 -0
  86. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/scan.py +0 -0
  87. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/software.py +0 -0
  88. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/software_utils.py +0 -0
  89. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/spans.py +0 -0
  90. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/spark.py +0 -0
  91. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/types.py +0 -0
  92. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/utils.py +0 -0
  93. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/__init__.py +0 -0
  94. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/cluster.py +0 -0
  95. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/cluster_comms.py +0 -0
  96. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/core.py +0 -0
  97. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/cwi_log_link.py +0 -0
  98. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/states.py +0 -0
  99. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/widgets/__init__.py +0 -0
  100. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/widgets/interface.py +0 -0
  101. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/widgets/rich.py +0 -0
  102. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/v2/widgets/util.py +0 -0
  103. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/coiled/websockets.py +0 -0
  104. {coiled-1.133.2.dev1 → coiled-1.133.3.dev1}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coiled
3
- Version: 1.133.2.dev1
3
+ Version: 1.133.3.dev1
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>
@@ -55,6 +55,7 @@ def run(
55
55
  command_as_script: bool | None = None,
56
56
  ignore_container_entrypoint: bool | None = None,
57
57
  job_timeout: str | None = None,
58
+ max_retries: int | None = None,
58
59
  logger=None,
59
60
  ) -> dict:
60
61
  """Submit a batch job to run on Coiled.
@@ -125,6 +126,7 @@ def run(
125
126
  command_as_script=command_as_script,
126
127
  ignore_container_entrypoint=ignore_container_entrypoint,
127
128
  job_timeout=job_timeout,
129
+ max_retries=max_retries,
128
130
  logger=logger,
129
131
  )
130
132
 
@@ -490,6 +490,12 @@ def get_kwargs_from_header(f: dict, click_params: list):
490
490
  "For example, you can specify '30 minutes' or '1 hour'. Default is no timeout."
491
491
  ),
492
492
  )
493
+ @click.option(
494
+ "--max-retries",
495
+ default=0,
496
+ type=int,
497
+ help="Maximum number of times to retry task on failure. Default is no retries.",
498
+ )
493
499
  @click.option("--dask-container", default=None, type=str)
494
500
  @click.argument("command", nargs=-1, required=True)
495
501
  def batch_run_cli(ctx, **kwargs):
@@ -859,6 +865,7 @@ def _batch_run(default_kwargs, logger=None, from_cli=False, **kwargs) -> dict:
859
865
  "host_setup": host_setup_content,
860
866
  "job_timeout_seconds": parse_timedelta(kwargs["job_timeout"]) if kwargs["job_timeout"] else None,
861
867
  "run_in_container": not kwargs.get("run_on_host"),
868
+ "max_retries": kwargs.get("max_retries") or 0,
862
869
  }
863
870
 
864
871
  with coiled.Cloud(workspace=kwargs["workspace"]) as cloud:
@@ -775,7 +775,9 @@ class Cloud(Generic[IsAsynchronous]):
775
775
  if response.status >= 400:
776
776
  await handle_api_exception(response) # always raises exception, no return
777
777
  data = await response.json()
778
- if data["should_upload"]:
778
+ if data["should_upload"] or dask.config.get("coiled.package_sync.always_upload", False):
779
+ if not data["should_upload"]:
780
+ logger.debug(f"uploading {package_name} ({data['id']}) because coiled.package_sync.always_upload set")
779
781
  num_bytes = len(package_bytes)
780
782
  await self._put_package(
781
783
  url=data["upload_url"],
File without changes
File without changes
File without changes