coiled 1.131.1.dev2__tar.gz → 1.133.0__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.131.1.dev2 → coiled-1.133.0}/PKG-INFO +1 -1
  2. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/notebook/notebook.py +53 -0
  3. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/run.py +16 -1
  4. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/types.py +6 -0
  5. {coiled-1.131.1.dev2 → coiled-1.133.0}/.gitignore +0 -0
  6. {coiled-1.131.1.dev2 → coiled-1.133.0}/LICENSE +0 -0
  7. {coiled-1.131.1.dev2 → coiled-1.133.0}/README.md +0 -0
  8. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/__init__.py +0 -0
  9. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/__main__.py +0 -0
  10. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/analytics.py +0 -0
  11. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/auth.py +0 -0
  12. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/batch.py +0 -0
  13. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/capture_environment.py +0 -0
  14. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/__init__.py +0 -0
  15. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/__init__.py +0 -0
  16. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/list.py +0 -0
  17. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/logs.py +0 -0
  18. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/run.py +0 -0
  19. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/status.py +0 -0
  20. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/util.py +0 -0
  21. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/batch/wait.py +0 -0
  22. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/__init__.py +0 -0
  23. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/azure_logs.py +0 -0
  24. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/better_logs.py +0 -0
  25. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/crud.py +0 -0
  26. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/get_address.py +0 -0
  27. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/list.py +0 -0
  28. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/logs.py +0 -0
  29. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/metrics.py +0 -0
  30. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/ssh.py +0 -0
  31. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/cluster/utils.py +0 -0
  32. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/config.py +0 -0
  33. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/core.py +0 -0
  34. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/curl.py +0 -0
  35. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/diagnostics.py +0 -0
  36. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/env.py +0 -0
  37. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/file.py +0 -0
  38. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/__init__.py +0 -0
  39. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/__init__.py +0 -0
  40. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/exit.py +0 -0
  41. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/hello_world.py +0 -0
  42. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/nyc_parquet.py +0 -0
  43. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/pytorch.py +0 -0
  44. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/examples/xarray_nwm.py +0 -0
  45. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/hello.py +0 -0
  46. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/scripts/fill_ipython.py +0 -0
  47. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/scripts/nyc_parquet.py +0 -0
  48. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/scripts/pytorch.py +0 -0
  49. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/scripts/xarray_nwm.py +0 -0
  50. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/hello/utils.py +0 -0
  51. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/login.py +0 -0
  52. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/mpi.py +0 -0
  53. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/notebook/__init__.py +0 -0
  54. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/package_sync.py +0 -0
  55. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/prefect.py +0 -0
  56. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/prefect_serve.py +0 -0
  57. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/__init__.py +0 -0
  58. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/amp.py +0 -0
  59. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/aws.py +0 -0
  60. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/azure.py +0 -0
  61. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/entry.py +0 -0
  62. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/gcp.py +0 -0
  63. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/prometheus.py +0 -0
  64. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/setup/util.py +0 -0
  65. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/sync.py +0 -0
  66. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cli/utils.py +0 -0
  67. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/cluster.py +0 -0
  68. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/coiled.yaml +0 -0
  69. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/compatibility.py +0 -0
  70. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/config.py +0 -0
  71. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/context.py +0 -0
  72. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/core.py +0 -0
  73. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/credentials/__init__.py +0 -0
  74. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/credentials/aws.py +0 -0
  75. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/credentials/google.py +0 -0
  76. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/errors.py +0 -0
  77. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/exceptions.py +0 -0
  78. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/extensions/__init__.py +0 -0
  79. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/extensions/prefect/__init__.py +0 -0
  80. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/extensions/prefect/runners.py +0 -0
  81. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/extensions/prefect/workers.py +0 -0
  82. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/filestore.py +0 -0
  83. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/function.py +0 -0
  84. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/plugins.py +0 -0
  85. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/prefect.py +0 -0
  86. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/pypi_conda_map.py +0 -0
  87. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/scan.py +0 -0
  88. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/software.py +0 -0
  89. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/software_utils.py +0 -0
  90. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/spans.py +0 -0
  91. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/spark.py +0 -0
  92. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/utils.py +0 -0
  93. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/__init__.py +0 -0
  94. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/cluster.py +0 -0
  95. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/cluster_comms.py +0 -0
  96. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/core.py +0 -0
  97. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/cwi_log_link.py +0 -0
  98. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/states.py +0 -0
  99. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/widgets/__init__.py +0 -0
  100. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/widgets/interface.py +0 -0
  101. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/widgets/rich.py +0 -0
  102. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/v2/widgets/util.py +0 -0
  103. {coiled-1.131.1.dev2 → coiled-1.133.0}/coiled/websockets.py +0 -0
  104. {coiled-1.131.1.dev2 → coiled-1.133.0}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coiled
3
- Version: 1.131.1.dev2
3
+ Version: 1.133.0
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>
@@ -155,11 +155,36 @@ def check_jupyter() -> bool:
155
155
  "allows you to use an io2 EBS volume on AWS."
156
156
  ),
157
157
  )
158
+ @click.option(
159
+ "--capacity-reservation-id",
160
+ default=None,
161
+ help="For AWS, allows you to specify existing Capacity Reservation to use.",
162
+ )
163
+ @click.option(
164
+ "--capacity-reservation-group-arn",
165
+ default=None,
166
+ help="For AWS, allows you to specify existing Capacity Reservation group to use.",
167
+ )
168
+ @click.option(
169
+ "--docker-shm-size",
170
+ default=None,
171
+ help="Non-default value for shm_size (for example, '3 GiB').",
172
+ )
173
+ @click.option(
174
+ "--ami-version",
175
+ default=None,
176
+ help="Use non-default Coiled AMI, e.g. 'DL' for the Deep Learning Base OSS Nvidia Driver GPU AMI.",
177
+ )
158
178
  @click.option(
159
179
  "--region",
160
180
  default=None,
161
181
  help="The cloud provider region in which to run the notebook.",
162
182
  )
183
+ @click.option(
184
+ "--zone",
185
+ default=None,
186
+ help="The cloud provider zone in which to run the notebook.",
187
+ )
163
188
  @click.option(
164
189
  "--open",
165
190
  default=True,
@@ -256,7 +281,12 @@ def start_notebook(
256
281
  gpu: bool,
257
282
  disk_size: int | None,
258
283
  disk_config: str | None,
284
+ capacity_reservation_id: str | None,
285
+ capacity_reservation_group_arn: str | None,
286
+ docker_shm_size: str | None,
287
+ ami_version: str | None,
259
288
  region: str | None,
289
+ zone: str | None,
260
290
  open: bool,
261
291
  block: bool,
262
292
  include_vcs: bool,
@@ -294,7 +324,12 @@ def start_notebook(
294
324
  gpu=gpu,
295
325
  disk_size=disk_size,
296
326
  disk_config=disk_config_dict,
327
+ capacity_reservation_id=capacity_reservation_id,
328
+ capacity_reservation_group_arn=capacity_reservation_group_arn,
329
+ docker_shm_size=docker_shm_size,
330
+ ami_version=ami_version,
297
331
  region=region,
332
+ zone=zone,
298
333
  open=open,
299
334
  block=block,
300
335
  include_vcs=include_vcs,
@@ -324,7 +359,12 @@ def _start_notebook(
324
359
  gpu: bool = False,
325
360
  disk_size: int | None = None,
326
361
  disk_config: dict | None = None,
362
+ capacity_reservation_id: str | None = None,
363
+ capacity_reservation_group_arn: str | None = None,
364
+ docker_shm_size: str | None = None,
365
+ ami_version: str | None = None,
327
366
  region: str | None = None,
367
+ zone: str | None = None,
328
368
  open: bool = False,
329
369
  block: bool = True,
330
370
  include_vcs: bool = False,
@@ -399,6 +439,18 @@ def _start_notebook(
399
439
  except FileNotFoundError:
400
440
  package_sync_ignore = []
401
441
 
442
+ backend_options = dict()
443
+ if zone:
444
+ backend_options["zone_name"] = zone
445
+ if capacity_reservation_id:
446
+ backend_options["capacity_reservation_id"] = capacity_reservation_id
447
+ if capacity_reservation_group_arn:
448
+ backend_options["capacity_reservation_group_arn"] = capacity_reservation_group_arn
449
+ if ami_version:
450
+ backend_options["ami_version"] = ami_version
451
+ if docker_shm_size:
452
+ backend_options["docker_shm_size"] = docker_shm_size
453
+
402
454
  cluster = coiled.Cluster(
403
455
  name=name,
404
456
  workspace=workspace,
@@ -428,6 +480,7 @@ def _start_notebook(
428
480
  unset_single_threading_variables=True,
429
481
  pause_on_exit=resumable,
430
482
  private_to_creator=private,
483
+ backend_options=backend_options or None, # type: ignore
431
484
  )
432
485
  info["cluster_id"] = cluster.cluster_id
433
486
 
@@ -576,6 +576,11 @@ def get_entrypoint(connection, container_name) -> str:
576
576
  default=None,
577
577
  help="Don't automatically mount SSD/NVMe (if any) to ``/scratch``.",
578
578
  )
579
+ @click.option(
580
+ "--ami-version",
581
+ default=None,
582
+ help="Use non-default Coiled AMI, e.g. 'DL' for the Deep Learning Base OSS Nvidia Driver GPU AMI.",
583
+ )
579
584
  @click.option(
580
585
  "--filestore",
581
586
  "filestore_names",
@@ -614,6 +619,7 @@ def run(
614
619
  package_sync_conda_extras,
615
620
  docker_shm_size,
616
621
  skip_ssd_mount,
622
+ ami_version,
617
623
  filestore_names,
618
624
  command,
619
625
  ):
@@ -650,6 +656,7 @@ def run(
650
656
  package_sync_strict=package_sync_strict,
651
657
  package_sync_conda_extras=package_sync_conda_extras,
652
658
  docker_shm_size=docker_shm_size,
659
+ ami_version=ami_version,
653
660
  filestore_names=filestore_names,
654
661
  skip_ssd_mount=skip_ssd_mount,
655
662
  )
@@ -691,6 +698,7 @@ def start_run(
691
698
  docker_shm_size: str | None = None,
692
699
  filestore_names: list[str] | None = None,
693
700
  skip_ssd_mount: bool | None = None,
701
+ ami_version: str | None = None,
694
702
  ):
695
703
  runtime_env_dict = dict_from_key_val_list(env)
696
704
  tags = dict_from_key_val_list(tag)
@@ -761,6 +769,13 @@ def start_run(
761
769
  workspace=workspace,
762
770
  )
763
771
  info["workspace"] = workspace
772
+
773
+ backend_options = {}
774
+ if ami_version:
775
+ backend_options["ami_version"] = ami_version
776
+ if docker_shm_size:
777
+ backend_options["docker_shm_size"] = docker_shm_size
778
+
764
779
  cluster_kwargs: ClusterKwargs = {
765
780
  "workspace": workspace,
766
781
  "n_workers": 0,
@@ -785,7 +800,7 @@ def start_run(
785
800
  "host_setup_script": host_setup_script,
786
801
  "package_sync_strict": package_sync_strict,
787
802
  "package_sync_conda_extras": package_sync_conda_extras,
788
- "backend_options": {"docker_shm_size": docker_shm_size} if docker_shm_size else None,
803
+ "backend_options": backend_options or None, # type: ignore
789
804
  "unset_single_threading_variables": True,
790
805
  "skip_ssd_mount": skip_ssd_mount,
791
806
  "filestores_to_attach": filestores_to_attach,
@@ -447,6 +447,10 @@ class AWSOptions(BackendOptions, total=False):
447
447
  ami_version
448
448
  Use non-default type of AMI.
449
449
  Supported options include "DL" for the Deep Learning Base OSS Nvidia Driver GPU AMI.
450
+ capacity_reservation_id
451
+ Use specified existing Capacity Reservation.
452
+ capacity_reservation_group_arn
453
+ Use specified existing Capacity Reservation group.
450
454
  """
451
455
 
452
456
  keypair_name: Optional[str]
@@ -455,6 +459,8 @@ class AWSOptions(BackendOptions, total=False):
455
459
  use_efa: Optional[bool]
456
460
  use_worker_efa: Optional[bool]
457
461
  ami_version: Optional[str]
462
+ capacity_reservation_id: Optional[str]
463
+ capacity_reservation_group_arn: Optional[str]
458
464
 
459
465
 
460
466
  class GCPOptions(BackendOptions, total=False):
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