anyscale 0.26.45__py3-none-any.whl → 0.26.46__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.
@@ -15,10 +15,7 @@ from google.iam.v1.policy_pb2 import Binding
15
15
  from googleapiclient.errors import HttpError
16
16
 
17
17
  from anyscale.cli_logger import CloudSetupLogger
18
- from anyscale.client.openapi_client.models import (
19
- CloudAnalyticsEventCloudResource,
20
- CreateCloudResourceGCP,
21
- )
18
+ from anyscale.client.openapi_client.models import CloudAnalyticsEventCloudResource
22
19
  from anyscale.shared_anyscale_utils.conf import ANYSCALE_CORS_ORIGIN
23
20
  from anyscale.utils.cloud_utils import CloudSetupError
24
21
  from anyscale.utils.gcp_managed_setup_utils import enable_project_apis
@@ -48,9 +45,10 @@ _FILESTORE_NAME_REGEX_PATTERN = r"projects/(?P<project_id>[^/]+)/locations/(?P<l
48
45
  PROXY_ONLY_SUBNET_PURPOSE = "REGIONAL_MANAGED_PROXY"
49
46
 
50
47
 
51
- def verify_gcp_networking(
48
+ def verify_gcp_networking( # noqa: PLR0911, PLR0913
52
49
  factory: GoogleCloudClientFactory,
53
- resources: CreateCloudResourceGCP,
50
+ vpc_name: Optional[str],
51
+ subnet_ids: Optional[List[str]],
54
52
  project_id: str,
55
53
  cloud_region: str,
56
54
  logger: GCPLogger,
@@ -58,8 +56,11 @@ def verify_gcp_networking(
58
56
  is_private_service_cloud: bool = False,
59
57
  ) -> bool:
60
58
  """Verify the existence and connectedness of the VPC & Subnet."""
61
- vpc_name = resources.gcp_vpc_id
62
59
  # TODO Verify Internet Gateway
60
+ if not vpc_name:
61
+ logger.internal.warning("No VPC provided. Please provide a VPC.")
62
+ return False
63
+
63
64
  try:
64
65
  vpc = factory.compute_v1.NetworksClient().get(
65
66
  project=project_id, network=vpc_name
@@ -68,10 +69,14 @@ def verify_gcp_networking(
68
69
  logger.log_resource_not_found_error("VPC", vpc_name, project_id)
69
70
  return False
70
71
 
71
- subnet_name = resources.gcp_subnet_ids[
72
- 0
73
- ] # TODO (congding): multiple subnets provided
74
- if len(resources.gcp_subnet_ids) > 1:
72
+ if not subnet_ids:
73
+ logger.internal.warning(
74
+ "No subnets provided. Please provide at least one subnet."
75
+ )
76
+ return False
77
+
78
+ subnet_name = subnet_ids[0] # TODO (congding): multiple subnets provided
79
+ if len(subnet_ids) > 1:
75
80
  logger.internal.warning(
76
81
  "Multiple subnets provided. Only taking the first subnet and ignoring the rest."
77
82
  )
@@ -135,8 +140,8 @@ def _get_proxy_only_subnet_in_vpc(
135
140
 
136
141
  def verify_gcp_project( # noqa: PLR0911
137
142
  factory: GoogleCloudClientFactory,
138
- resources: CreateCloudResourceGCP,
139
143
  project_id: str,
144
+ enable_memorystore_api: bool,
140
145
  logger: GCPLogger,
141
146
  strict: bool = False,
142
147
  ) -> bool:
@@ -178,7 +183,6 @@ def verify_gcp_project( # noqa: PLR0911
178
183
 
179
184
  # Verify that APIs are Enabled
180
185
  service_usage_client = factory.build("serviceusage", "v1")
181
- enable_memorystore_api = resources.memorystore_instance_config is not None
182
186
  if enable_memorystore_api:
183
187
  apis = GCP_REQUIRED_APIS + ["redis.googleapis.com"] # Memorystore for Redis
184
188
  else:
@@ -233,7 +237,7 @@ def verify_gcp_project( # noqa: PLR0911
233
237
 
234
238
  def verify_gcp_access_service_account(
235
239
  factory: GoogleCloudClientFactory,
236
- resources: CreateCloudResourceGCP,
240
+ anyscale_access_service_account: Optional[str],
237
241
  project_id: str,
238
242
  logger: GCPLogger,
239
243
  ) -> bool:
@@ -241,8 +245,6 @@ def verify_gcp_access_service_account(
241
245
 
242
246
  NOTE: We verify that this service account can call signBlob on itself because this is necessary for downloading logs.
243
247
  """
244
- anyscale_access_service_account = resources.gcp_anyscale_iam_service_account_email
245
-
246
248
  service_account_client = factory.build("iam", "v1").projects().serviceAccounts()
247
249
  try:
248
250
  service_account_iam_policy = service_account_client.getIamPolicy(
@@ -287,7 +289,7 @@ def verify_gcp_access_service_account(
287
289
 
288
290
  def verify_gcp_dataplane_service_account(
289
291
  factory: GoogleCloudClientFactory,
290
- resources: CreateCloudResourceGCP,
292
+ service_account: Optional[str],
291
293
  project_id: str,
292
294
  logger: GCPLogger,
293
295
  strict: bool = False,
@@ -297,7 +299,6 @@ def verify_gcp_dataplane_service_account(
297
299
  Compute Engine's ability to use this role
298
300
  This relies on the fact that Compute Engine Service Agent has the roles/compute.serviceAgent Role
299
301
  """
300
- service_account = resources.gcp_cluster_node_service_account_email
301
302
  service_account_client = factory.build("iam", "v1").projects().serviceAccounts()
302
303
  try:
303
304
  resp = service_account_client.get(
@@ -346,7 +347,9 @@ def verify_gcp_dataplane_service_account(
346
347
 
347
348
  def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
348
349
  factory: GoogleCloudClientFactory,
349
- resources: CreateCloudResourceGCP,
350
+ firewall_policy_ids: Optional[List[str]],
351
+ vpc_name: Optional[str],
352
+ subnet_ids: Optional[List[str]],
350
353
  project_id: str,
351
354
  cloud_region: str,
352
355
  use_shared_vpc: bool,
@@ -355,16 +358,21 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
355
358
  strict: bool = False,
356
359
  ) -> bool:
357
360
  """Checks if the given firewall exists at either the Global or Regional level."""
358
- firewall_policy = resources.gcp_firewall_policy_ids[
361
+ if not firewall_policy_ids:
362
+ logger.internal.warning(
363
+ "No firewall policies provided. Please provide at least one firewall policy."
364
+ )
365
+ return False
366
+
367
+ firewall_policy = firewall_policy_ids[
359
368
  0
360
369
  ] # TODO (congding): multiple firewall ids provided
361
- if len(resources.gcp_firewall_policy_ids) > 1:
370
+ if len(firewall_policy_ids) > 1:
362
371
  logger.internal.warning(
363
372
  "Multiple firewall policies provided. Only taking the first firewall policy and ignoring the rest."
364
373
  )
365
374
  if strict:
366
375
  return False
367
- vpc_name = resources.gcp_vpc_id
368
376
 
369
377
  firewall = compute_v1.types.compute.FirewallPolicy()
370
378
  try:
@@ -401,8 +409,14 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
401
409
  )
402
410
  return False
403
411
 
412
+ if not subnet_ids:
413
+ logger.internal.warning(
414
+ "No subnets provided. Please provide at least one subnet."
415
+ )
416
+ return False
417
+
404
418
  subnet_obj = factory.compute_v1.SubnetworksClient().get(
405
- project=project_id, subnetwork=resources.gcp_subnet_ids[0], region=cloud_region
419
+ project=project_id, subnetwork=subnet_ids[0], region=cloud_region
406
420
  ) # TODO (congding): multiple subnets provided
407
421
  subnet = ipaddress.ip_network(subnet_obj.ip_cidr_range)
408
422
 
@@ -451,6 +465,10 @@ def verify_firewall_policy( # noqa: PLR0911, PLR0912, C901, PLR0913
451
465
  return False
452
466
 
453
467
  if use_shared_vpc and is_private_service_cloud:
468
+ if not vpc_name:
469
+ logger.internal.warning("No VPC provided. Please provide a VPC.")
470
+ return False
471
+
454
472
  proxy_only_subnet = _get_proxy_only_subnet_in_vpc(
455
473
  factory, project_id, cloud_region, vpc_name
456
474
  )
@@ -515,7 +533,8 @@ def _firewall_rules_from_proto_resp(
515
533
 
516
534
  def verify_filestore(
517
535
  factory: GoogleCloudClientFactory,
518
- resources: CreateCloudResourceGCP,
536
+ file_store_instance_name: str,
537
+ vpc_name: Optional[str],
519
538
  cloud_region: str,
520
539
  logger: GCPLogger,
521
540
  strict: bool = False,
@@ -523,7 +542,6 @@ def verify_filestore(
523
542
  """Verify Filestore exists & that it is connected to the correct VPC.
524
543
 
525
544
  TODO: Warn about Filestore size if it is 'too small'."""
526
- file_store_instance_name = resources.gcp_filestore_config.instance_name
527
545
  client = factory.filestore_v1.CloudFilestoreManagerClient()
528
546
  try:
529
547
  file_store = client.get_instance(name=file_store_instance_name)
@@ -552,7 +570,6 @@ def verify_filestore(
552
570
  return False
553
571
 
554
572
  file_store_networks = [v.network for v in file_store.networks]
555
- vpc_name = resources.gcp_vpc_id
556
573
  if not any(vpc_name == network.split("/")[-1] for network in file_store_networks):
557
574
  logger.internal.log_resource_error(
558
575
  CloudAnalyticsEventCloudResource.GCP_FILESTORE,
@@ -567,9 +584,11 @@ def verify_filestore(
567
584
  return True
568
585
 
569
586
 
570
- def verify_cloud_storage( # noqa: PLR0911, PLR0912
587
+ def verify_cloud_storage( # noqa: PLR0911, PLR0912, PLR0913
571
588
  factory: GoogleCloudClientFactory,
572
- resources: CreateCloudResourceGCP,
589
+ bucket_name: Optional[str],
590
+ controlplane_service_account: Optional[str],
591
+ dataplane_service_account: Optional[str],
573
592
  project_id: str,
574
593
  cloud_region: str,
575
594
  logger: GCPLogger,
@@ -577,7 +596,6 @@ def verify_cloud_storage( # noqa: PLR0911, PLR0912
577
596
  ):
578
597
  """Verify that the Google Cloud Storage Bucket exists & raises warnings about improper configurations."""
579
598
  bucket_client = factory.storage.Client(project_id)
580
- bucket_name = resources.gcp_cloud_storage_bucket_id
581
599
  try:
582
600
  bucket = bucket_client.get_bucket(bucket_name)
583
601
  except NotFound:
@@ -634,21 +652,19 @@ def verify_cloud_storage( # noqa: PLR0911, PLR0912
634
652
  "We suggest granting the predefined roles of `roles/storage.legacyBucketReader` and `roles/storage.objectAdmin`."
635
653
  )
636
654
 
637
- access_service_account = resources.gcp_anyscale_iam_service_account_email
638
655
  if not _verify_service_account_on_bucket(
639
- f"serviceAccount:{access_service_account}", iam_bindings
656
+ f"serviceAccount:{controlplane_service_account}", iam_bindings
640
657
  ):
641
658
  logger.confirm_missing_permission(
642
659
  permission_warning.format(
643
660
  location="Anyscale access",
644
- email=access_service_account,
661
+ email=controlplane_service_account,
645
662
  bucket=bucket_name,
646
663
  )
647
664
  )
648
665
  if strict:
649
666
  return False
650
667
 
651
- dataplane_service_account = resources.gcp_cluster_node_service_account_email
652
668
  if not _verify_service_account_on_bucket(
653
669
  f"serviceAccount:{dataplane_service_account}", iam_bindings
654
670
  ):
@@ -726,15 +742,13 @@ def _check_bucket_region(bucket: Bucket, region: str) -> Tuple[bool, str]:
726
742
 
727
743
  def verify_memorystore( # noqa: PLR0911
728
744
  factory: GoogleCloudClientFactory,
729
- resources: CreateCloudResourceGCP,
745
+ redis_instance_name: str,
746
+ cloud_vpc_name: Optional[str],
730
747
  logger: GCPLogger,
731
748
  strict: bool = False,
732
749
  ):
733
750
  """Verify that the Google Memorystore exists & raises warnings about improper configurations."""
734
751
  client = factory.redis_v1.CloudRedisClient()
735
-
736
- redis_instance_name = resources.memorystore_instance_config.name
737
-
738
752
  try:
739
753
  redis_instance = client.get_instance(name=redis_instance_name)
740
754
  except (NotFound, PermissionDenied):
@@ -742,7 +756,6 @@ def verify_memorystore( # noqa: PLR0911
742
756
  return False
743
757
 
744
758
  # Verify memorystore is in the same VPC as the cloud
745
- cloud_vpc_name = resources.gcp_vpc_id
746
759
  redis_vpc_name = redis_instance.authorized_network.split("/")[-1]
747
760
  if cloud_vpc_name != redis_vpc_name:
748
761
  logger.internal.log_resource_error(
anyscale/utils/s3.py CHANGED
@@ -74,8 +74,8 @@ def _verify_identity_based_s3_access(
74
74
  iam_role,
75
75
  lambda statement: statement["Effect"] == "Allow"
76
76
  and (
77
- "*" in _coerce_to_list(statement["Resource"])
78
- or s3_bucket.name in str(statement["Resource"])
77
+ "*" in _coerce_to_list(statement.get("Resource"))
78
+ or s3_bucket.name in str(statement.get("Resource"))
79
79
  ),
80
80
  )
81
81
  if len(allow_actions_on_role) == 0:
@@ -1,11 +1,12 @@
1
1
  from click import ClickException
2
2
 
3
3
  from anyscale.client.openapi_client.api.default_api import DefaultApi
4
+ from anyscale.client.openapi_client.models.collaborator_type import CollaboratorType
4
5
 
5
6
 
6
7
  def get_user_id_by_email(api_client: DefaultApi, email: str) -> str:
7
8
  users = api_client.list_organization_collaborators_api_v2_organization_collaborators_get(
8
- email=email
9
+ email=email, collaborator_type=CollaboratorType.ONLY_USER_ACCOUNTS,
9
10
  ).results
10
11
  if len(users) == 0:
11
12
  raise ClickException(f"No user found with email {email}.")
anyscale/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.26.45"
1
+ __version__ = "0.26.46"
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: anyscale
3
- Version: 0.26.45
3
+ Version: 0.26.46
4
4
  Summary: Command Line Interface for Anyscale
5
5
  Author: Anyscale Inc.
6
6
  License: AS License
@@ -70,6 +70,15 @@ Requires-Dist: google-cloud-redis; extra == "backend"
70
70
  Requires-Dist: google-cloud-certificate-manager; extra == "backend"
71
71
  Requires-Dist: terminado; extra == "backend"
72
72
  Requires-Dist: tornado; extra == "backend"
73
+ Dynamic: author
74
+ Dynamic: description
75
+ Dynamic: description-content-type
76
+ Dynamic: license
77
+ Dynamic: license-file
78
+ Dynamic: provides-extra
79
+ Dynamic: requires-dist
80
+ Dynamic: requires-python
81
+ Dynamic: summary
73
82
 
74
83
  # Anyscale
75
84
 
@@ -8,7 +8,7 @@ anyscale/api.py,sha256=HAZZg8zWLTkMgHkIeJys-9xKvFqzBVONRUeI6MQDhSA,8271
8
8
  anyscale/authenticate.py,sha256=4RiJ1Ruu-JKENwuMkWqq1R19DXxucVPS-GoKlii1fLI,12346
9
9
  anyscale/aws_iam_policies.py,sha256=KEPS8JC_6fdRAXWMDVX5mlcI7Ab2agdx5wM2IW8-jqw,16543
10
10
  anyscale/cli_logger.py,sha256=sw-sjcXPIlRWT6LCC0nhHcr53VEJba579P8mbOFTJ6k,12545
11
- anyscale/cloud_resource.py,sha256=3JCiiXxsIeUSsRV45C0QQJzPSE1GgXJN1LElo6DmvrA,40368
11
+ anyscale/cloud_resource.py,sha256=laXDB0mCvSas6u9WYgmuQ1tbzNlL91Bi4jKNZwY0Txk,39196
12
12
  anyscale/cloud_utils.py,sha256=R12leVFphO_DSCK54ZpDPRIcMSYSeWtCXoJbXwvvcug,8138
13
13
  anyscale/cluster.py,sha256=SmSoZSGpRljOA4SWK1VcFtGXLRD11ZwP0VjgGaiaSwY,6582
14
14
  anyscale/cluster_compute.py,sha256=RvlJMO_fXsoMn0bBz-3DbBI1iBjQ83srQp4J7XcAynQ,6213
@@ -18,7 +18,7 @@ anyscale/conf.py,sha256=_2vbCkaU_iIgU1boYOJxVUpafXO654_GmmE0kaqHbUc,573
18
18
  anyscale/connect.py,sha256=ClIoc2vWciJT2VdbeC0LjfKbYGz9MmRn24uV7gjkJM0,57596
19
19
  anyscale/feature_flags.py,sha256=Td0keH1-7isGIRsoSZn3mI1IFZQnLXtcvgwkFuyks_M,136
20
20
  anyscale/fingerprint.py,sha256=BoMnfgmcME_IuulBih5K3QTEuHPSkeLsXYUbelVjfvU,2122
21
- anyscale/gcp_verification.py,sha256=0eQwR5UfDm9vKhRomWOrpIR6_3oMFVwWP8_4DvrhNGk,31429
21
+ anyscale/gcp_verification.py,sha256=Y8pvQE7D5_NahknzJ7g_CWkeTrqyOhAs0BMJlJyfPiU,31600
22
22
  anyscale/integrations.py,sha256=bLBs5pDBMPi16qmU1gmTn5aw7PGUxtBAxnIkKWYmJrw,12633
23
23
  anyscale/links.py,sha256=xFXN5TjL61p5T23dn66nNalkV47LNkPJxQqOPhGXfww,193
24
24
  anyscale/memorydb_supported_zones.json,sha256=l5Iup9wFDZcHLfZqH640axxe4UiKteuraZRohi3MwRk,1098
@@ -28,13 +28,13 @@ anyscale/snapshot.py,sha256=UGJT5C1s_4xmQxjWODK5DFpGxHRBX5jOCdSCqXESH8E,1685
28
28
  anyscale/tables.py,sha256=TV4F2uLnwehvbkAfaP7iuLlT2wLIo6ORH2LVdRGXW5g,2840
29
29
  anyscale/telemetry.py,sha256=U90C2Vgx48z9PMTI6EbzHFbP3jWnDUutbIfMPBb8-SI,14711
30
30
  anyscale/util.py,sha256=0iSmKKsDFV0i2eRmVQ1W60Sgh2g-vPeBoBw3ra3m6eI,42782
31
- anyscale/version.py,sha256=54xC63YC2aqC0E8WKTGvo_4_EUotBQoaAqxATidvy4k,24
31
+ anyscale/version.py,sha256=3j0qWPUnU_dnE8_emHTgLRSFWStKq6Hn6bAXHSK5PC0,24
32
32
  anyscale/workspace_utils.py,sha256=OViE88CnIF5ruVxd3kazQ0Mf2BxqtMq6wx-XQ5A2cp8,1204
33
33
  anyscale/_private/anyscale_client/README.md,sha256=gk8obk7kqg6VWoUHcqDMwJULh35tYKEZFC0UF_dixGA,718
34
34
  anyscale/_private/anyscale_client/__init__.py,sha256=807Blx3RHQeS8BmKZcsOQQ4dYoKlCnpm6Bdsif2CrHg,337
35
- anyscale/_private/anyscale_client/anyscale_client.py,sha256=HG_lUgmV97GboRBj1FTSUjUDYX3Gd5NuO4Nwf2odlzs,83598
36
- anyscale/_private/anyscale_client/common.py,sha256=foLQMo7GeEqdxgW_q0A9nUPAq3N-PG9Kpc6UtiCalwc,27123
37
- anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=wG4N_n8Joq77G4i6KN9wOVcNG8EVUoaOUYA-xMZIcg8,58545
35
+ anyscale/_private/anyscale_client/anyscale_client.py,sha256=SIC_f-mFYKXcIWDeI3mG5a3umtIRG_csxvPnZTysucM,83696
36
+ anyscale/_private/anyscale_client/common.py,sha256=7FD0Q07p__CN8IAT54VkbUpgTDiLTkDpI3vLnFVl2kc,27207
37
+ anyscale/_private/anyscale_client/fake_anyscale_client.py,sha256=bnE06sFKKHdS6kRmSnkHkp01SeTKRujYRKYubENSses,58719
38
38
  anyscale/_private/docgen/README.md,sha256=z0tj8Jy0KmxWJBQMHKyzXGX_cYYgI8m5DCD6KCMU8oI,762
39
39
  anyscale/_private/docgen/__main__.py,sha256=9ASjdxpkmnZrvv06UYDlRkSiCEhLW9gNMvIO23cWqVk,25442
40
40
  anyscale/_private/docgen/api.md,sha256=VKW293yubbeUG17A38wYuaONKDL5XICMguyfZ2xkIyY,27495
@@ -106,7 +106,7 @@ anyscale/background/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
106
106
  anyscale/background/job_runner.py,sha256=LTuv9JOahyv6C9i7DLQAONgQF6--FfYZEmJrKy-sUG8,2687
107
107
  anyscale/client/.gitignore,sha256=JZyvYEtT2DCSK9V5Joi6lQofhMik4PXiJRCWsg7SvqI,807
108
108
  anyscale/client/.openapi-generator-ignore,sha256=pu2PTide7pJtJ-DFLzDy0cTYQJRlrB-8RRH3zGLeUds,1040
109
- anyscale/client/README.md,sha256=AyYt2MgcDjh43zpzdCsNF4XP6r9ZLxidYBiw0DLbB48,113850
109
+ anyscale/client/README.md,sha256=_0wPS2r-x_hgz0YYBbpd7EaUg2jA0oHG2dcGK9EKeYY,114457
110
110
  anyscale/client/git_push.sh,sha256=EDCZOTTiLxbtPHmiU63qC99rGH67B7dhdPZdNUKivF0,1827
111
111
  anyscale/client/requirements.txt,sha256=dkVKYUStC5h_g_87SH7pRdhXCj7ySozAJMGAFEzGgFc,126
112
112
  anyscale/client/setup.cfg,sha256=l7bdKSIedeBhhoDtupsBwx1xPrlBf2yYeTH7a8kMga4,28
@@ -114,14 +114,14 @@ anyscale/client/setup.py,sha256=tSxqw1kAL1B9adnrnOarjnQfSbwGmnTr_kg8ZXhlm5A,1109
114
114
  anyscale/client/test-requirements.txt,sha256=sTjmDTj5W9fh1ZAeo8UT2EBdeGDBNttj_PHiPBXg1D4,111
115
115
  anyscale/client/tox.ini,sha256=M6L3UmvAdvU65LsoAF-Oi7oRjwZlCJZn8I7ofdXn5Ok,156
116
116
  anyscale/client/.openapi-generator/VERSION,sha256=J0RzX-4u4jfin1kviKtmncjUePyjHm2kyvmkobOrt_E,5
117
- anyscale/client/openapi_client/__init__.py,sha256=FSu4sK3Ahq7O-DCpSnYufPH7m2pxvmNlJyqxAAY58lc,51567
117
+ anyscale/client/openapi_client/__init__.py,sha256=ZPvpkGPxahgAVLs02f09sijN6qdv4OnWN6EzVeNmXWY,51719
118
118
  anyscale/client/openapi_client/api_client.py,sha256=d8Un6j2Ny2vlS2qBXPVFj6_ql0k36DFahpWt_28TfCk,25563
119
119
  anyscale/client/openapi_client/configuration.py,sha256=Dd5XrlHwv-wxnf0C35PG_-HBQoY3Yaz6hKrmkZz-m0E,12363
120
120
  anyscale/client/openapi_client/exceptions.py,sha256=3egwsXQG2j_vARbqgBxUO1xSltAhpfiHTYVP7VXTvU0,3792
121
121
  anyscale/client/openapi_client/rest.py,sha256=Ehj37v7GHW6SXV067Hze5HE42ayKaGi6a6ZlkR7u3Lg,12501
122
122
  anyscale/client/openapi_client/api/__init__.py,sha256=i8u7BI2xX1GrXTL3hN0pKpYIlnT-D_uDxH2ElOfYG1I,141
123
- anyscale/client/openapi_client/api/default_api.py,sha256=Q2LJZhR5tZUkQXXTW1EcRGWd7YeN5JQ7eEK3aI5lpDw,1820642
124
- anyscale/client/openapi_client/models/__init__.py,sha256=lR19uidnrUeHLq9PwBMcAOCJBKcmFaa7dIruhe29RpQ,51077
123
+ anyscale/client/openapi_client/api/default_api.py,sha256=J7LJ1hcjePAQ22fjCb2iATECSyWQuLZrJavofEILOQk,1833384
124
+ anyscale/client/openapi_client/models/__init__.py,sha256=jFhMhwFmtCEPiTj7LEFleV0A-pwjWnow_rsfv54t9Ic,51229
125
125
  anyscale/client/openapi_client/models/access_config.py,sha256=b2mA0qtuTA5PFbp6C61Jc_T2zUMaojM1v32IhZo0MfY,3648
126
126
  anyscale/client/openapi_client/models/actor_status.py,sha256=6xyX_aIqURj2raBdY9DmBxsdDACFrqqYvElGiM6YG2E,2813
127
127
  anyscale/client/openapi_client/models/admin_create_user.py,sha256=9DPr8D0lKgoEZ3Z2kGsAd8L7ocFCiP6woOGLVs8SRb8,7251
@@ -224,6 +224,7 @@ anyscale/client/openapi_client/models/cloudcollaborator_list_response.py,sha256=
224
224
  anyscale/client/openapi_client/models/clouddatabucketpresigneduploadinfo_response.py,sha256=Oqayf777CsQTa5mU0AEsu_54VNDYL7kpxgn5Icn8jOg,3792
225
225
  anyscale/client/openapi_client/models/clouddatabucketpresignedurlresponse_response.py,sha256=dNN9ed8MqR0wA45kniuFPPBTiMx_fdoVlarg5lS9oGw,3803
226
226
  anyscale/client/openapi_client/models/clouddeployment_list_response.py,sha256=dUAeCsqyvzyubsgfCfB0y_H8YlaCZpoTnghJvDp0fD8,4422
227
+ anyscale/client/openapi_client/models/clouddeployment_response.py,sha256=axJRmEklVXvJCj9tgjzqlA7VqEPqQ1VW4ZQfbbcNB3Q,3583
227
228
  anyscale/client/openapi_client/models/clouddeploymentconfig_response.py,sha256=0_eUWAir01cMeA32XNqkL-NKAEhGJscl9R-yEp0dQAY,3649
228
229
  anyscale/client/openapi_client/models/cloudoverviewdashboard_response.py,sha256=87-kKGf6T50b0QjYYo9Vek5P0O71pc7sly8flWQmorA,3660
229
230
  anyscale/client/openapi_client/models/cloudregionandzones_response.py,sha256=SHlXZwLnQTkvpUYVj8JaPxOYZ80yB9y_MO-NCiNwCs8,3627
@@ -246,6 +247,7 @@ anyscale/client/openapi_client/models/clusterauthresponse_response.py,sha256=rwq
246
247
  anyscale/client/openapi_client/models/clusterevent_list_response.py,sha256=mtfYHoHjpzqg_VOyIn6XvcW71pfBPlfrxjVP6wxHsX4,4377
247
248
  anyscale/client/openapi_client/models/clustereventsoutput_response.py,sha256=vFPLzXf_sRs8LAg16Ht6Oel18w6FISg7MLFi4YlTvHs,3627
248
249
  anyscale/client/openapi_client/models/clusteroperation_response.py,sha256=g0tNqDigTKkzGSmhrDyhQYcUE0JQMCJTzk44INGhoV4,3594
250
+ anyscale/client/openapi_client/models/collaborator_type.py,sha256=ta_CEaVO_3FOeS57rdVFHkf0pfgavI_rvsZ-NFvav_A,2971
249
251
  anyscale/client/openapi_client/models/commit_ledger_item_type.py,sha256=VuxqYjjGFtChMwfsPssdu9LWU-dq4SCJgs1hJyNNyVw,4013
250
252
  anyscale/client/openapi_client/models/commit_ledger_record_v2.py,sha256=Xma0WWtZ7w9Oj2_GhK0nlv0jEc4ejF7B34ou_HtkOpw,6989
251
253
  anyscale/client/openapi_client/models/complexity_level.py,sha256=TVdfUD3RMSlTuQQW-__CjGBXtIiV6_sSGks3uabPqvs,2898
@@ -660,7 +662,7 @@ anyscale/client/openapi_client/models/task_state.py,sha256=KpRA6VImK3r0qNeaiHh4a
660
662
  anyscale/client/openapi_client/models/task_summary.py,sha256=8GIpf9xxmPDV8LJgIsGmSQex2R6CDKx0oJ9_VrL7oPw,9102
661
663
  anyscale/client/openapi_client/models/task_table_config.py,sha256=sy9cStVRjjT6KFU_47ibBbSRPf7fXjXe9YW2hwtPFhM,6928
662
664
  anyscale/client/openapi_client/models/task_table_response.py,sha256=T8VDBMlOzD1c2hY_Q1JdOF8ZF1MqA5JUMbnRjCKZmcg,5074
663
- anyscale/client/openapi_client/models/task_table_row.py,sha256=gqRgddIKSzuxrGnJr__Hon1vg71AY4UtROSjaNzrkY8,14657
665
+ anyscale/client/openapi_client/models/task_table_row.py,sha256=neF3ZAb_A12MsZkm_5tc8QV_PaItUirrVugGLTP27eE,15434
664
666
  anyscale/client/openapi_client/models/task_type.py,sha256=BwGeFgSgxL8aazGdhr58L7KyPHK5EqRrE_rVWuWyWCE,2807
665
667
  anyscale/client/openapi_client/models/tasksummary_response.py,sha256=sgOV63ZyYroVvcLbISXz0LU44tW8tLCefcqYB1WFsQ0,3539
666
668
  anyscale/client/openapi_client/models/text_query.py,sha256=aMcKF6nRme1J1jYKhvqUIG8VzlcDN72znSFF9kKCc2Y,5107
@@ -746,11 +748,11 @@ anyscale/cloud/_private/cloud_sdk.py,sha256=5TBGyGSjMI4jLOnSle1WWC6za0psP9xgTGWU
746
748
  anyscale/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
747
749
  anyscale/commands/aggregated_instance_usage_commands.py,sha256=TRP1X3hdIWbKg9V20VtazlDXsYAeV--M0DH3-Z5tnj4,2293
748
750
  anyscale/commands/auth_commands.py,sha256=X1g6Yu9kqgPb4HLODlZTYEk8G5AVLeyizPIgagWx-p0,1026
749
- anyscale/commands/cloud_commands.py,sha256=s17Kig_3-idgYFB5fszeYHbJ_xXnoqpLbiG9DMNAG2s,46677
751
+ anyscale/commands/cloud_commands.py,sha256=k-mctbUREXoO0HQaPNux8ciyfypBNsi6ka_0XHXImcs,47804
750
752
  anyscale/commands/cloud_commands_util.py,sha256=d-6TSZ_syrGkZ3Fc1uRX6jG4dqYMebNkBNpYLojOJFg,247
751
753
  anyscale/commands/cluster_commands.py,sha256=taNcffyFfqJ1MgOQd0cz9kzRXWFTdp-wfLPM4l_2tBc,13487
752
754
  anyscale/commands/cluster_env_commands.py,sha256=KNWylyE8Ew1sDi7yu2Tp4RLcRu2_KJJJIzVGRyPflJo,3899
753
- anyscale/commands/command_examples.py,sha256=sUurt7VrVoAkuIlxrdGtWbhcI0A9cOpp26rnwEdH0MQ,28203
755
+ anyscale/commands/command_examples.py,sha256=hzM11Ysg2r6A-pk0xIdO1OsLdCIJGEXy_xBhvz1ZRFQ,28518
754
756
  anyscale/commands/compute_config_commands.py,sha256=bn--ClTVovz-NAbZak7t769xXiOgQGYR61hZ_lkN7AM,8167
755
757
  anyscale/commands/config_commands.py,sha256=p55uM6WrhfbFoRXC9hNAV-8c5ANghw7tBUYwaQDAtjE,7195
756
758
  anyscale/commands/exec_commands.py,sha256=cMOP1u6xQbl81h69Jug3y73XnNSwpbM6XC1X57SIp4c,465
@@ -794,7 +796,7 @@ anyscale/connect_utils/start_interactive_session.py,sha256=DbuIK2wuWofmbwJ9MLbsb
794
796
  anyscale/controllers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
795
797
  anyscale/controllers/auth_controller.py,sha256=hDY2sPvUP8pvh8PnlDYH5rCHjQes2v3b_KBVjMbrzeE,5127
796
798
  anyscale/controllers/base_controller.py,sha256=1QFJoScFUV7YTzpKarhwPOc1SvI-xqX3TZmwxKonW6I,1998
797
- anyscale/controllers/cloud_controller.py,sha256=NdUlI6-QM8j3KpN4LwCXzb9bHU6Tt4Nh320K9xuljpE,184327
799
+ anyscale/controllers/cloud_controller.py,sha256=6Qhv8ibISLpf_25ChuqOMXT4IyAm0wxQ08loFseqz3Q,196629
798
800
  anyscale/controllers/cloud_functional_verification_controller.py,sha256=YsEfdHT9hPtxy_3a5Q62UlRXW0iFJ1lVS4IZ_NHoemE,33399
799
801
  anyscale/controllers/cluster_controller.py,sha256=Sb5wVjrjpycg5iqmENAVtZ4iy9Kr6kM97_ck-KH85LM,28745
800
802
  anyscale/controllers/cluster_env_controller.py,sha256=JalGzcmnFtMHefYL5U6ijMY3nX6W6BsMEfZSMtgBvtU,8048
@@ -1082,9 +1084,9 @@ anyscale/utils/ray_utils.py,sha256=8l1tP1f0ZtoISHLgRCalKAp8nlBhNDUK5O7HGRkg8r8,3
1082
1084
  anyscale/utils/ray_version_checker.py,sha256=IiBJzBFJpOs4or0FeuaXKRysbCaFzCEoO_DoeMxpHLM,1521
1083
1085
  anyscale/utils/ray_version_utils.py,sha256=DhrkyJAB7M-61QA73RkuVwXk3FfApFH3vShGSbcdsck,1932
1084
1086
  anyscale/utils/runtime_env.py,sha256=WDHQXJYFZM9__RvuT6Fq66fWgtMENGP3umz3zLqHczU,18592
1085
- anyscale/utils/s3.py,sha256=cxlR5baJIGaEFRUmND_i66Nh9TA7N0AGgcq8MdLZBdU,3427
1087
+ anyscale/utils/s3.py,sha256=9vgpNuovQdzMn8iEfe0iqokr6HgE9GWFE7bOle_FMzA,3435
1086
1088
  anyscale/utils/ssh_websocket_proxy.py,sha256=AHDzFk6G8x4envhWs1IAYjv08VZIMieug7e-1n8-xhw,6805
1087
- anyscale/utils/user_utils.py,sha256=wM0npdWAfaahRMUI26jz8tm3oQsqpk7A1QEyygOtt-M,573
1089
+ anyscale/utils/user_utils.py,sha256=J11f0nc_iujcZM-KmNBAszGfCc4Z6NYJtoIT_YTY37I,714
1088
1090
  anyscale/utils/workload_types.py,sha256=kKAaKDh5bd6zA2f1HR0VMlkhu9nAIeUMM-NMIGP0ZR4,128
1089
1091
  anyscale/utils/workspace_notification.py,sha256=3utuEVFj7iHAXTHXDWedPcycIV3b0bpdQtAWz2n2GPI,1129
1090
1092
  anyscale/utils/workspace_utils.py,sha256=UTcUQiB_75vgS8zqORK9S1RMM-XshVvAu90vImt7Euw,1997
@@ -1100,10 +1102,10 @@ anyscale/workspace/__init__.py,sha256=Innbm5ZhCyADEVBiYSo_vbpKwUNcMzVSAfxIGKOYe6
1100
1102
  anyscale/workspace/commands.py,sha256=b1sqNseoPj-1VXznqQOLe0V_a663bOTvJX-TaOMJa1Y,14590
1101
1103
  anyscale/workspace/models.py,sha256=HBvM9ybOdJjqQeViQ30C36gdKT_AwH_JHPoL-DTkESo,9841
1102
1104
  anyscale/workspace/_private/workspace_sdk.py,sha256=2CMeYfJt0UtIFCocDn1ukw1iI5esKHdopLe6duEs-qE,27599
1103
- anyscale-0.26.45.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1104
- anyscale-0.26.45.dist-info/METADATA,sha256=7cVr8LcD7lkncSk24pvdzWEYUmXYoPRPPDfp-V27xtg,3032
1105
- anyscale-0.26.45.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1106
- anyscale-0.26.45.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
1107
- anyscale-0.26.45.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1108
- anyscale-0.26.45.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1109
- anyscale-0.26.45.dist-info/RECORD,,
1105
+ anyscale-0.26.46.dist-info/licenses/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
1106
+ anyscale-0.26.46.dist-info/licenses/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
1107
+ anyscale-0.26.46.dist-info/METADATA,sha256=wgyx2Bu5tJ84yrZTh-DA-KgTcGfzVI_tUhvjXqkesDg,3231
1108
+ anyscale-0.26.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
1109
+ anyscale-0.26.46.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
1110
+ anyscale-0.26.46.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
1111
+ anyscale-0.26.46.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5