anyscale 0.26.35__py3-none-any.whl → 0.26.37__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.
- anyscale/_private/docgen/models.md +2 -0
- anyscale/client/README.md +2 -0
- anyscale/client/openapi_client/__init__.py +1 -0
- anyscale/client/openapi_client/api/default_api.py +112 -0
- anyscale/client/openapi_client/models/__init__.py +1 -0
- anyscale/client/openapi_client/models/create_job_queue_requests.py +29 -1
- anyscale/client/openapi_client/models/dashboard_panel.py +148 -0
- anyscale/client/openapi_client/models/job_queue_spec.py +31 -3
- anyscale/client/openapi_client/models/ray_runtime_env_config.py +31 -3
- anyscale/client/openapi_client/models/train_run.py +55 -3
- anyscale/job/_private/job_sdk.py +1 -0
- anyscale/job/models.py +20 -0
- anyscale/sdk/anyscale_client/models/job_queue_spec.py +31 -3
- anyscale/sdk/anyscale_client/models/ray_runtime_env_config.py +31 -3
- anyscale/telemetry.py +12 -8
- anyscale/version.py +1 -1
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/METADATA +1 -1
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/RECORD +23 -22
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/LICENSE +0 -0
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/NOTICE +0 -0
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/WHEEL +0 -0
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/entry_points.txt +0 -0
- {anyscale-0.26.35.dist-info → anyscale-0.26.37.dist-info}/top_level.txt +0 -0
|
@@ -990,6 +990,7 @@ Name | Type | Description | Notes
|
|
|
990
990
|
**cluster_environment_build_id** | **str** | The id of the cluster environment build that will be used to create cluster associated with the queue. | [optional] [default to null]
|
|
991
991
|
**max_concurrency** | **int** | Max number of jobs to be run concurrently. Defaults to 1, ie running no more than 1 job at a time. | [optional] [default to 1]
|
|
992
992
|
**idle_timeout_sec** | **int** | Max period of time queue will be accepting new jobs, before being sealed off and its associated cluster being shutdown | [default to null]
|
|
993
|
+
**auto_termination_threshold_job_count** | **int** | Maximum number of jobs the cluster can run before it becomes eligible for termination. | [optional] [default to null]
|
|
993
994
|
|
|
994
995
|
## JobRunType
|
|
995
996
|
|
|
@@ -1398,6 +1399,7 @@ Name | Type | Description | Notes
|
|
|
1398
1399
|
**conda** | **object** | [Union[Dict[str, Any], str]: Either the conda YAML config or the name of a local conda env (e.g., \"pytorch_p36\"), | [optional] [default to null]
|
|
1399
1400
|
**env_vars** | **Dict(str, str)** | Environment variables to set. | [optional] [default to null]
|
|
1400
1401
|
**config** | [**object**](#) | Config for runtime environment. Can be used to setup setup_timeout_seconds, the timeout of runtime environment creation. | [optional] [default to null]
|
|
1402
|
+
**image_uri** | **str** | Specifies the image URI of the container in which the job will run. | [optional] [default to null]
|
|
1401
1403
|
|
|
1402
1404
|
## Resources
|
|
1403
1405
|
|
anyscale/client/README.md
CHANGED
|
@@ -338,6 +338,7 @@ Class | Method | HTTP request | Description
|
|
|
338
338
|
*DefaultApi* | [**terminate_system_cluster_api_v2_system_workload_cloud_id_terminate_post**](docs/DefaultApi.md#terminate_system_cluster_api_v2_system_workload_cloud_id_terminate_post) | **POST** /api/v2/system_workload/{cloud_id}/terminate | Terminate System Cluster
|
|
339
339
|
*DefaultApi* | [**test_saml_acs_api_v2_organizations_organization_id_test_saml_acs_post**](docs/DefaultApi.md#test_saml_acs_api_v2_organizations_organization_id_test_saml_acs_post) | **POST** /api/v2/organizations/{organization_id}/test_saml_acs | Test Saml Acs
|
|
340
340
|
*DefaultApi* | [**toggle_instance_usage_budget_is_enabled_api_v2_instance_usage_budgets_instance_usage_budget_id_toggle_is_enabled_post**](docs/DefaultApi.md#toggle_instance_usage_budget_is_enabled_api_v2_instance_usage_budgets_instance_usage_budget_id_toggle_is_enabled_post) | **POST** /api/v2/instance_usage_budgets/{instance_usage_budget_id}/toggle_is_enabled | Toggle Instance Usage Budget Is Enabled
|
|
341
|
+
*DefaultApi* | [**toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put**](docs/DefaultApi.md#toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put) | **PUT** /api/v2/clouds/{cloud_id}/toggle_public_cloud | Toggle Public Cloud
|
|
341
342
|
*DefaultApi* | [**trigger_cron_job_api_v2_experimental_cron_jobs_cron_job_id_trigger_post**](docs/DefaultApi.md#trigger_cron_job_api_v2_experimental_cron_jobs_cron_job_id_trigger_post) | **POST** /api/v2/experimental_cron_jobs/{cron_job_id}/trigger | Trigger Cron Job
|
|
342
343
|
*DefaultApi* | [**try_claim_cloud_api_v2_aioa_cloud_waitlist_claim_cloud_post**](docs/DefaultApi.md#try_claim_cloud_api_v2_aioa_cloud_waitlist_claim_cloud_post) | **POST** /api/v2/aioa_cloud_waitlist/claim_cloud | Try Claim Cloud
|
|
343
344
|
*DefaultApi* | [**try_login_api_v2_users_try_login_post**](docs/DefaultApi.md#try_login_api_v2_users_try_login_post) | **POST** /api/v2/users/try-login | Try Login
|
|
@@ -556,6 +557,7 @@ Class | Method | HTTP request | Description
|
|
|
556
557
|
- [CreditType](docs/CreditType.md)
|
|
557
558
|
- [CreditsV2](docs/CreditsV2.md)
|
|
558
559
|
- [CustomerAlertStatus](docs/CustomerAlertStatus.md)
|
|
560
|
+
- [DashboardPanel](docs/DashboardPanel.md)
|
|
559
561
|
- [DataplaneServices](docs/DataplaneServices.md)
|
|
560
562
|
- [Dataset](docs/Dataset.md)
|
|
561
563
|
- [DatasetDag](docs/DatasetDag.md)
|
|
@@ -215,6 +215,7 @@ from openapi_client.models.credit_record_credit_v2 import CreditRecordCreditV2
|
|
|
215
215
|
from openapi_client.models.credit_type import CreditType
|
|
216
216
|
from openapi_client.models.credits_v2 import CreditsV2
|
|
217
217
|
from openapi_client.models.customer_alert_status import CustomerAlertStatus
|
|
218
|
+
from openapi_client.models.dashboard_panel import DashboardPanel
|
|
218
219
|
from openapi_client.models.dataplane_services import DataplaneServices
|
|
219
220
|
from openapi_client.models.dataset import Dataset
|
|
220
221
|
from openapi_client.models.dataset_dag import DatasetDag
|
|
@@ -31864,6 +31864,118 @@ class DefaultApi(object):
|
|
|
31864
31864
|
_request_timeout=local_var_params.get('_request_timeout'),
|
|
31865
31865
|
collection_formats=collection_formats)
|
|
31866
31866
|
|
|
31867
|
+
def toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put(self, cloud_id, **kwargs): # noqa: E501
|
|
31868
|
+
"""Toggle Public Cloud # noqa: E501
|
|
31869
|
+
|
|
31870
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
31871
|
+
asynchronous HTTP request, please pass async_req=True
|
|
31872
|
+
>>> thread = api.toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put(cloud_id, async_req=True)
|
|
31873
|
+
>>> result = thread.get()
|
|
31874
|
+
|
|
31875
|
+
:param async_req bool: execute request asynchronously
|
|
31876
|
+
:param str cloud_id: (required)
|
|
31877
|
+
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
|
31878
|
+
be returned without reading/decoding response
|
|
31879
|
+
data. Default is True.
|
|
31880
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
31881
|
+
number provided, it will be total request
|
|
31882
|
+
timeout. It can also be a pair (tuple) of
|
|
31883
|
+
(connection, read) timeouts.
|
|
31884
|
+
:return: object
|
|
31885
|
+
If the method is called asynchronously,
|
|
31886
|
+
returns the request thread.
|
|
31887
|
+
"""
|
|
31888
|
+
kwargs['_return_http_data_only'] = True
|
|
31889
|
+
return self.toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put_with_http_info(cloud_id, **kwargs) # noqa: E501
|
|
31890
|
+
|
|
31891
|
+
def toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put_with_http_info(self, cloud_id, **kwargs): # noqa: E501
|
|
31892
|
+
"""Toggle Public Cloud # noqa: E501
|
|
31893
|
+
|
|
31894
|
+
This method makes a synchronous HTTP request by default. To make an
|
|
31895
|
+
asynchronous HTTP request, please pass async_req=True
|
|
31896
|
+
>>> thread = api.toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put_with_http_info(cloud_id, async_req=True)
|
|
31897
|
+
>>> result = thread.get()
|
|
31898
|
+
|
|
31899
|
+
:param async_req bool: execute request asynchronously
|
|
31900
|
+
:param str cloud_id: (required)
|
|
31901
|
+
:param _return_http_data_only: response data without head status code
|
|
31902
|
+
and headers
|
|
31903
|
+
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
|
31904
|
+
be returned without reading/decoding response
|
|
31905
|
+
data. Default is True.
|
|
31906
|
+
:param _request_timeout: timeout setting for this request. If one
|
|
31907
|
+
number provided, it will be total request
|
|
31908
|
+
timeout. It can also be a pair (tuple) of
|
|
31909
|
+
(connection, read) timeouts.
|
|
31910
|
+
:return: tuple(object, status_code(int), headers(HTTPHeaderDict))
|
|
31911
|
+
If the method is called asynchronously,
|
|
31912
|
+
returns the request thread.
|
|
31913
|
+
"""
|
|
31914
|
+
|
|
31915
|
+
local_var_params = locals()
|
|
31916
|
+
|
|
31917
|
+
all_params = [
|
|
31918
|
+
'cloud_id'
|
|
31919
|
+
]
|
|
31920
|
+
all_params.extend(
|
|
31921
|
+
[
|
|
31922
|
+
'async_req',
|
|
31923
|
+
'_return_http_data_only',
|
|
31924
|
+
'_preload_content',
|
|
31925
|
+
'_request_timeout'
|
|
31926
|
+
]
|
|
31927
|
+
)
|
|
31928
|
+
|
|
31929
|
+
for key, val in six.iteritems(local_var_params['kwargs']):
|
|
31930
|
+
if key not in all_params:
|
|
31931
|
+
raise ApiTypeError(
|
|
31932
|
+
"Got an unexpected keyword argument '%s'"
|
|
31933
|
+
" to method toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put" % key
|
|
31934
|
+
)
|
|
31935
|
+
local_var_params[key] = val
|
|
31936
|
+
del local_var_params['kwargs']
|
|
31937
|
+
# verify the required parameter 'cloud_id' is set
|
|
31938
|
+
if self.api_client.client_side_validation and ('cloud_id' not in local_var_params or # noqa: E501
|
|
31939
|
+
local_var_params['cloud_id'] is None): # noqa: E501
|
|
31940
|
+
raise ApiValueError("Missing the required parameter `cloud_id` when calling `toggle_public_cloud_api_v2_clouds_cloud_id_toggle_public_cloud_put`") # noqa: E501
|
|
31941
|
+
|
|
31942
|
+
collection_formats = {}
|
|
31943
|
+
|
|
31944
|
+
path_params = {}
|
|
31945
|
+
if 'cloud_id' in local_var_params:
|
|
31946
|
+
path_params['cloud_id'] = local_var_params['cloud_id'] # noqa: E501
|
|
31947
|
+
|
|
31948
|
+
query_params = []
|
|
31949
|
+
|
|
31950
|
+
header_params = {}
|
|
31951
|
+
|
|
31952
|
+
form_params = []
|
|
31953
|
+
local_var_files = {}
|
|
31954
|
+
|
|
31955
|
+
body_params = None
|
|
31956
|
+
# HTTP header `Accept`
|
|
31957
|
+
header_params['Accept'] = self.api_client.select_header_accept(
|
|
31958
|
+
['application/json']) # noqa: E501
|
|
31959
|
+
|
|
31960
|
+
# Authentication setting
|
|
31961
|
+
auth_settings = [] # noqa: E501
|
|
31962
|
+
|
|
31963
|
+
return self.api_client.call_api(
|
|
31964
|
+
'/api/v2/clouds/{cloud_id}/toggle_public_cloud', 'PUT',
|
|
31965
|
+
path_params,
|
|
31966
|
+
query_params,
|
|
31967
|
+
header_params,
|
|
31968
|
+
body=body_params,
|
|
31969
|
+
post_params=form_params,
|
|
31970
|
+
files=local_var_files,
|
|
31971
|
+
response_type='object', # noqa: E501
|
|
31972
|
+
auth_settings=auth_settings,
|
|
31973
|
+
async_req=local_var_params.get('async_req'),
|
|
31974
|
+
_return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
|
|
31975
|
+
_preload_content=local_var_params.get('_preload_content', True),
|
|
31976
|
+
_request_timeout=local_var_params.get('_request_timeout'),
|
|
31977
|
+
collection_formats=collection_formats)
|
|
31978
|
+
|
|
31867
31979
|
def trigger_cron_job_api_v2_experimental_cron_jobs_cron_job_id_trigger_post(self, cron_job_id, **kwargs): # noqa: E501
|
|
31868
31980
|
"""Trigger Cron Job # noqa: E501
|
|
31869
31981
|
|
|
@@ -201,6 +201,7 @@ from openapi_client.models.credit_record_credit_v2 import CreditRecordCreditV2
|
|
|
201
201
|
from openapi_client.models.credit_type import CreditType
|
|
202
202
|
from openapi_client.models.credits_v2 import CreditsV2
|
|
203
203
|
from openapi_client.models.customer_alert_status import CustomerAlertStatus
|
|
204
|
+
from openapi_client.models.dashboard_panel import DashboardPanel
|
|
204
205
|
from openapi_client.models.dataplane_services import DataplaneServices
|
|
205
206
|
from openapi_client.models.dataset import Dataset
|
|
206
207
|
from openapi_client.models.dataset_dag import DatasetDag
|
|
@@ -39,6 +39,7 @@ class CreateJobQueueRequests(object):
|
|
|
39
39
|
'cluster_environment_build_id': 'str',
|
|
40
40
|
'max_concurrency': 'int',
|
|
41
41
|
'idle_timeout_sec': 'int',
|
|
42
|
+
'auto_termination_threshold_job_count': 'int',
|
|
42
43
|
'project_id': 'str'
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -49,10 +50,11 @@ class CreateJobQueueRequests(object):
|
|
|
49
50
|
'cluster_environment_build_id': 'cluster_environment_build_id',
|
|
50
51
|
'max_concurrency': 'max_concurrency',
|
|
51
52
|
'idle_timeout_sec': 'idle_timeout_sec',
|
|
53
|
+
'auto_termination_threshold_job_count': 'auto_termination_threshold_job_count',
|
|
52
54
|
'project_id': 'project_id'
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, project_id=None, local_vars_configuration=None): # noqa: E501
|
|
57
|
+
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, auto_termination_threshold_job_count=None, project_id=None, local_vars_configuration=None): # noqa: E501
|
|
56
58
|
"""CreateJobQueueRequests - a model defined in OpenAPI""" # noqa: E501
|
|
57
59
|
if local_vars_configuration is None:
|
|
58
60
|
local_vars_configuration = Configuration()
|
|
@@ -64,6 +66,7 @@ class CreateJobQueueRequests(object):
|
|
|
64
66
|
self._cluster_environment_build_id = None
|
|
65
67
|
self._max_concurrency = None
|
|
66
68
|
self._idle_timeout_sec = None
|
|
69
|
+
self._auto_termination_threshold_job_count = None
|
|
67
70
|
self._project_id = None
|
|
68
71
|
self.discriminator = None
|
|
69
72
|
|
|
@@ -76,6 +79,8 @@ class CreateJobQueueRequests(object):
|
|
|
76
79
|
if max_concurrency is not None:
|
|
77
80
|
self.max_concurrency = max_concurrency
|
|
78
81
|
self.idle_timeout_sec = idle_timeout_sec
|
|
82
|
+
if auto_termination_threshold_job_count is not None:
|
|
83
|
+
self.auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
79
84
|
self.project_id = project_id
|
|
80
85
|
|
|
81
86
|
@property
|
|
@@ -222,6 +227,29 @@ class CreateJobQueueRequests(object):
|
|
|
222
227
|
|
|
223
228
|
self._idle_timeout_sec = idle_timeout_sec
|
|
224
229
|
|
|
230
|
+
@property
|
|
231
|
+
def auto_termination_threshold_job_count(self):
|
|
232
|
+
"""Gets the auto_termination_threshold_job_count of this CreateJobQueueRequests. # noqa: E501
|
|
233
|
+
|
|
234
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
235
|
+
|
|
236
|
+
:return: The auto_termination_threshold_job_count of this CreateJobQueueRequests. # noqa: E501
|
|
237
|
+
:rtype: int
|
|
238
|
+
"""
|
|
239
|
+
return self._auto_termination_threshold_job_count
|
|
240
|
+
|
|
241
|
+
@auto_termination_threshold_job_count.setter
|
|
242
|
+
def auto_termination_threshold_job_count(self, auto_termination_threshold_job_count):
|
|
243
|
+
"""Sets the auto_termination_threshold_job_count of this CreateJobQueueRequests.
|
|
244
|
+
|
|
245
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
246
|
+
|
|
247
|
+
:param auto_termination_threshold_job_count: The auto_termination_threshold_job_count of this CreateJobQueueRequests. # noqa: E501
|
|
248
|
+
:type: int
|
|
249
|
+
"""
|
|
250
|
+
|
|
251
|
+
self._auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
252
|
+
|
|
225
253
|
@property
|
|
226
254
|
def project_id(self):
|
|
227
255
|
"""Gets the project_id of this CreateJobQueueRequests. # noqa: E501
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Managed Ray API
|
|
5
|
+
|
|
6
|
+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 0.1.0
|
|
9
|
+
Generated by: https://openapi-generator.tech
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
import pprint
|
|
14
|
+
import re # noqa: F401
|
|
15
|
+
|
|
16
|
+
import six
|
|
17
|
+
|
|
18
|
+
from openapi_client.configuration import Configuration
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class DashboardPanel(object):
|
|
22
|
+
"""NOTE: This class is auto generated by OpenAPI Generator.
|
|
23
|
+
Ref: https://openapi-generator.tech
|
|
24
|
+
|
|
25
|
+
Do not edit the class manually.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
Attributes:
|
|
30
|
+
openapi_types (dict): The key is attribute name
|
|
31
|
+
and the value is attribute type.
|
|
32
|
+
attribute_map (dict): The key is attribute name
|
|
33
|
+
and the value is json key in definition.
|
|
34
|
+
"""
|
|
35
|
+
openapi_types = {
|
|
36
|
+
'id': 'str',
|
|
37
|
+
'title': 'str'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
attribute_map = {
|
|
41
|
+
'id': 'id',
|
|
42
|
+
'title': 'title'
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
def __init__(self, id=None, title=None, local_vars_configuration=None): # noqa: E501
|
|
46
|
+
"""DashboardPanel - a model defined in OpenAPI""" # noqa: E501
|
|
47
|
+
if local_vars_configuration is None:
|
|
48
|
+
local_vars_configuration = Configuration()
|
|
49
|
+
self.local_vars_configuration = local_vars_configuration
|
|
50
|
+
|
|
51
|
+
self._id = None
|
|
52
|
+
self._title = None
|
|
53
|
+
self.discriminator = None
|
|
54
|
+
|
|
55
|
+
self.id = id
|
|
56
|
+
self.title = title
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def id(self):
|
|
60
|
+
"""Gets the id of this DashboardPanel. # noqa: E501
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
:return: The id of this DashboardPanel. # noqa: E501
|
|
64
|
+
:rtype: str
|
|
65
|
+
"""
|
|
66
|
+
return self._id
|
|
67
|
+
|
|
68
|
+
@id.setter
|
|
69
|
+
def id(self, id):
|
|
70
|
+
"""Sets the id of this DashboardPanel.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
:param id: The id of this DashboardPanel. # noqa: E501
|
|
74
|
+
:type: str
|
|
75
|
+
"""
|
|
76
|
+
if self.local_vars_configuration.client_side_validation and id is None: # noqa: E501
|
|
77
|
+
raise ValueError("Invalid value for `id`, must not be `None`") # noqa: E501
|
|
78
|
+
|
|
79
|
+
self._id = id
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def title(self):
|
|
83
|
+
"""Gets the title of this DashboardPanel. # noqa: E501
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
:return: The title of this DashboardPanel. # noqa: E501
|
|
87
|
+
:rtype: str
|
|
88
|
+
"""
|
|
89
|
+
return self._title
|
|
90
|
+
|
|
91
|
+
@title.setter
|
|
92
|
+
def title(self, title):
|
|
93
|
+
"""Sets the title of this DashboardPanel.
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
:param title: The title of this DashboardPanel. # noqa: E501
|
|
97
|
+
:type: str
|
|
98
|
+
"""
|
|
99
|
+
if self.local_vars_configuration.client_side_validation and title is None: # noqa: E501
|
|
100
|
+
raise ValueError("Invalid value for `title`, must not be `None`") # noqa: E501
|
|
101
|
+
|
|
102
|
+
self._title = title
|
|
103
|
+
|
|
104
|
+
def to_dict(self):
|
|
105
|
+
"""Returns the model properties as a dict"""
|
|
106
|
+
result = {}
|
|
107
|
+
|
|
108
|
+
for attr, _ in six.iteritems(self.openapi_types):
|
|
109
|
+
value = getattr(self, attr)
|
|
110
|
+
if isinstance(value, list):
|
|
111
|
+
result[attr] = list(map(
|
|
112
|
+
lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
|
|
113
|
+
value
|
|
114
|
+
))
|
|
115
|
+
elif hasattr(value, "to_dict"):
|
|
116
|
+
result[attr] = value.to_dict()
|
|
117
|
+
elif isinstance(value, dict):
|
|
118
|
+
result[attr] = dict(map(
|
|
119
|
+
lambda item: (item[0], item[1].to_dict())
|
|
120
|
+
if hasattr(item[1], "to_dict") else item,
|
|
121
|
+
value.items()
|
|
122
|
+
))
|
|
123
|
+
else:
|
|
124
|
+
result[attr] = value
|
|
125
|
+
|
|
126
|
+
return result
|
|
127
|
+
|
|
128
|
+
def to_str(self):
|
|
129
|
+
"""Returns the string representation of the model"""
|
|
130
|
+
return pprint.pformat(self.to_dict())
|
|
131
|
+
|
|
132
|
+
def __repr__(self):
|
|
133
|
+
"""For `print` and `pprint`"""
|
|
134
|
+
return self.to_str()
|
|
135
|
+
|
|
136
|
+
def __eq__(self, other):
|
|
137
|
+
"""Returns true if both objects are equal"""
|
|
138
|
+
if not isinstance(other, DashboardPanel):
|
|
139
|
+
return False
|
|
140
|
+
|
|
141
|
+
return self.to_dict() == other.to_dict()
|
|
142
|
+
|
|
143
|
+
def __ne__(self, other):
|
|
144
|
+
"""Returns true if both objects are not equal"""
|
|
145
|
+
if not isinstance(other, DashboardPanel):
|
|
146
|
+
return True
|
|
147
|
+
|
|
148
|
+
return self.to_dict() != other.to_dict()
|
|
@@ -38,7 +38,8 @@ class JobQueueSpec(object):
|
|
|
38
38
|
'compute_config_id': 'str',
|
|
39
39
|
'cluster_environment_build_id': 'str',
|
|
40
40
|
'max_concurrency': 'int',
|
|
41
|
-
'idle_timeout_sec': 'int'
|
|
41
|
+
'idle_timeout_sec': 'int',
|
|
42
|
+
'auto_termination_threshold_job_count': 'int'
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
attribute_map = {
|
|
@@ -47,10 +48,11 @@ class JobQueueSpec(object):
|
|
|
47
48
|
'compute_config_id': 'compute_config_id',
|
|
48
49
|
'cluster_environment_build_id': 'cluster_environment_build_id',
|
|
49
50
|
'max_concurrency': 'max_concurrency',
|
|
50
|
-
'idle_timeout_sec': 'idle_timeout_sec'
|
|
51
|
+
'idle_timeout_sec': 'idle_timeout_sec',
|
|
52
|
+
'auto_termination_threshold_job_count': 'auto_termination_threshold_job_count'
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, local_vars_configuration=None): # noqa: E501
|
|
55
|
+
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, auto_termination_threshold_job_count=None, local_vars_configuration=None): # noqa: E501
|
|
54
56
|
"""JobQueueSpec - a model defined in OpenAPI""" # noqa: E501
|
|
55
57
|
if local_vars_configuration is None:
|
|
56
58
|
local_vars_configuration = Configuration()
|
|
@@ -62,6 +64,7 @@ class JobQueueSpec(object):
|
|
|
62
64
|
self._cluster_environment_build_id = None
|
|
63
65
|
self._max_concurrency = None
|
|
64
66
|
self._idle_timeout_sec = None
|
|
67
|
+
self._auto_termination_threshold_job_count = None
|
|
65
68
|
self.discriminator = None
|
|
66
69
|
|
|
67
70
|
if job_queue_name is not None:
|
|
@@ -75,6 +78,8 @@ class JobQueueSpec(object):
|
|
|
75
78
|
if max_concurrency is not None:
|
|
76
79
|
self.max_concurrency = max_concurrency
|
|
77
80
|
self.idle_timeout_sec = idle_timeout_sec
|
|
81
|
+
if auto_termination_threshold_job_count is not None:
|
|
82
|
+
self.auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
78
83
|
|
|
79
84
|
@property
|
|
80
85
|
def job_queue_name(self):
|
|
@@ -216,6 +221,29 @@ class JobQueueSpec(object):
|
|
|
216
221
|
|
|
217
222
|
self._idle_timeout_sec = idle_timeout_sec
|
|
218
223
|
|
|
224
|
+
@property
|
|
225
|
+
def auto_termination_threshold_job_count(self):
|
|
226
|
+
"""Gets the auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
227
|
+
|
|
228
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
229
|
+
|
|
230
|
+
:return: The auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
231
|
+
:rtype: int
|
|
232
|
+
"""
|
|
233
|
+
return self._auto_termination_threshold_job_count
|
|
234
|
+
|
|
235
|
+
@auto_termination_threshold_job_count.setter
|
|
236
|
+
def auto_termination_threshold_job_count(self, auto_termination_threshold_job_count):
|
|
237
|
+
"""Sets the auto_termination_threshold_job_count of this JobQueueSpec.
|
|
238
|
+
|
|
239
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
240
|
+
|
|
241
|
+
:param auto_termination_threshold_job_count: The auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
242
|
+
:type: int
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
self._auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
246
|
+
|
|
219
247
|
def to_dict(self):
|
|
220
248
|
"""Returns the model properties as a dict"""
|
|
221
249
|
result = {}
|
|
@@ -39,7 +39,8 @@ class RayRuntimeEnvConfig(object):
|
|
|
39
39
|
'pip': 'list[str]',
|
|
40
40
|
'conda': 'object',
|
|
41
41
|
'env_vars': 'dict(str, str)',
|
|
42
|
-
'config': 'object'
|
|
42
|
+
'config': 'object',
|
|
43
|
+
'image_uri': 'str'
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
attribute_map = {
|
|
@@ -49,10 +50,11 @@ class RayRuntimeEnvConfig(object):
|
|
|
49
50
|
'pip': 'pip',
|
|
50
51
|
'conda': 'conda',
|
|
51
52
|
'env_vars': 'env_vars',
|
|
52
|
-
'config': 'config'
|
|
53
|
+
'config': 'config',
|
|
54
|
+
'image_uri': 'image_uri'
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
def __init__(self, working_dir=None, py_modules=None, py_executable=None, pip=None, conda=None, env_vars=None, config=None, local_vars_configuration=None): # noqa: E501
|
|
57
|
+
def __init__(self, working_dir=None, py_modules=None, py_executable=None, pip=None, conda=None, env_vars=None, config=None, image_uri=None, local_vars_configuration=None): # noqa: E501
|
|
56
58
|
"""RayRuntimeEnvConfig - a model defined in OpenAPI""" # noqa: E501
|
|
57
59
|
if local_vars_configuration is None:
|
|
58
60
|
local_vars_configuration = Configuration()
|
|
@@ -65,6 +67,7 @@ class RayRuntimeEnvConfig(object):
|
|
|
65
67
|
self._conda = None
|
|
66
68
|
self._env_vars = None
|
|
67
69
|
self._config = None
|
|
70
|
+
self._image_uri = None
|
|
68
71
|
self.discriminator = None
|
|
69
72
|
|
|
70
73
|
if working_dir is not None:
|
|
@@ -81,6 +84,8 @@ class RayRuntimeEnvConfig(object):
|
|
|
81
84
|
self.env_vars = env_vars
|
|
82
85
|
if config is not None:
|
|
83
86
|
self.config = config
|
|
87
|
+
if image_uri is not None:
|
|
88
|
+
self.image_uri = image_uri
|
|
84
89
|
|
|
85
90
|
@property
|
|
86
91
|
def working_dir(self):
|
|
@@ -243,6 +248,29 @@ class RayRuntimeEnvConfig(object):
|
|
|
243
248
|
|
|
244
249
|
self._config = config
|
|
245
250
|
|
|
251
|
+
@property
|
|
252
|
+
def image_uri(self):
|
|
253
|
+
"""Gets the image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
254
|
+
|
|
255
|
+
Specifies the image URI of the container in which the job will run. # noqa: E501
|
|
256
|
+
|
|
257
|
+
:return: The image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
258
|
+
:rtype: str
|
|
259
|
+
"""
|
|
260
|
+
return self._image_uri
|
|
261
|
+
|
|
262
|
+
@image_uri.setter
|
|
263
|
+
def image_uri(self, image_uri):
|
|
264
|
+
"""Sets the image_uri of this RayRuntimeEnvConfig.
|
|
265
|
+
|
|
266
|
+
Specifies the image URI of the container in which the job will run. # noqa: E501
|
|
267
|
+
|
|
268
|
+
:param image_uri: The image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
269
|
+
:type: str
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
self._image_uri = image_uri
|
|
273
|
+
|
|
246
274
|
def to_dict(self):
|
|
247
275
|
"""Returns the model properties as a dict"""
|
|
248
276
|
result = {}
|
|
@@ -45,7 +45,9 @@ class TrainRun(object):
|
|
|
45
45
|
'total_attempts': 'int',
|
|
46
46
|
'job_details': 'JobDetails',
|
|
47
47
|
'session_name': 'str',
|
|
48
|
-
'controller_log_id': 'str'
|
|
48
|
+
'controller_log_id': 'str',
|
|
49
|
+
'train_run_panels': 'list[DashboardPanel]',
|
|
50
|
+
'train_worker_panels': 'list[DashboardPanel]'
|
|
49
51
|
}
|
|
50
52
|
|
|
51
53
|
attribute_map = {
|
|
@@ -61,10 +63,12 @@ class TrainRun(object):
|
|
|
61
63
|
'total_attempts': 'total_attempts',
|
|
62
64
|
'job_details': 'job_details',
|
|
63
65
|
'session_name': 'session_name',
|
|
64
|
-
'controller_log_id': 'controller_log_id'
|
|
66
|
+
'controller_log_id': 'controller_log_id',
|
|
67
|
+
'train_run_panels': 'train_run_panels',
|
|
68
|
+
'train_worker_panels': 'train_worker_panels'
|
|
65
69
|
}
|
|
66
70
|
|
|
67
|
-
def __init__(self, id=None, name=None, job_id=None, controller_actor_id=None, status=None, status_detail=None, start_time_ms=None, end_time_ms=None, attempts=None, total_attempts=None, job_details=None, session_name=None, controller_log_id=None, local_vars_configuration=None): # noqa: E501
|
|
71
|
+
def __init__(self, id=None, name=None, job_id=None, controller_actor_id=None, status=None, status_detail=None, start_time_ms=None, end_time_ms=None, attempts=None, total_attempts=None, job_details=None, session_name=None, controller_log_id=None, train_run_panels=None, train_worker_panels=None, local_vars_configuration=None): # noqa: E501
|
|
68
72
|
"""TrainRun - a model defined in OpenAPI""" # noqa: E501
|
|
69
73
|
if local_vars_configuration is None:
|
|
70
74
|
local_vars_configuration = Configuration()
|
|
@@ -83,6 +87,8 @@ class TrainRun(object):
|
|
|
83
87
|
self._job_details = None
|
|
84
88
|
self._session_name = None
|
|
85
89
|
self._controller_log_id = None
|
|
90
|
+
self._train_run_panels = None
|
|
91
|
+
self._train_worker_panels = None
|
|
86
92
|
self.discriminator = None
|
|
87
93
|
|
|
88
94
|
self.id = id
|
|
@@ -103,6 +109,10 @@ class TrainRun(object):
|
|
|
103
109
|
self.session_name = session_name
|
|
104
110
|
if controller_log_id is not None:
|
|
105
111
|
self.controller_log_id = controller_log_id
|
|
112
|
+
if train_run_panels is not None:
|
|
113
|
+
self.train_run_panels = train_run_panels
|
|
114
|
+
if train_worker_panels is not None:
|
|
115
|
+
self.train_worker_panels = train_worker_panels
|
|
106
116
|
|
|
107
117
|
@property
|
|
108
118
|
def id(self):
|
|
@@ -393,6 +403,48 @@ class TrainRun(object):
|
|
|
393
403
|
|
|
394
404
|
self._controller_log_id = controller_log_id
|
|
395
405
|
|
|
406
|
+
@property
|
|
407
|
+
def train_run_panels(self):
|
|
408
|
+
"""Gets the train_run_panels of this TrainRun. # noqa: E501
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
:return: The train_run_panels of this TrainRun. # noqa: E501
|
|
412
|
+
:rtype: list[DashboardPanel]
|
|
413
|
+
"""
|
|
414
|
+
return self._train_run_panels
|
|
415
|
+
|
|
416
|
+
@train_run_panels.setter
|
|
417
|
+
def train_run_panels(self, train_run_panels):
|
|
418
|
+
"""Sets the train_run_panels of this TrainRun.
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
:param train_run_panels: The train_run_panels of this TrainRun. # noqa: E501
|
|
422
|
+
:type: list[DashboardPanel]
|
|
423
|
+
"""
|
|
424
|
+
|
|
425
|
+
self._train_run_panels = train_run_panels
|
|
426
|
+
|
|
427
|
+
@property
|
|
428
|
+
def train_worker_panels(self):
|
|
429
|
+
"""Gets the train_worker_panels of this TrainRun. # noqa: E501
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
:return: The train_worker_panels of this TrainRun. # noqa: E501
|
|
433
|
+
:rtype: list[DashboardPanel]
|
|
434
|
+
"""
|
|
435
|
+
return self._train_worker_panels
|
|
436
|
+
|
|
437
|
+
@train_worker_panels.setter
|
|
438
|
+
def train_worker_panels(self, train_worker_panels):
|
|
439
|
+
"""Sets the train_worker_panels of this TrainRun.
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
:param train_worker_panels: The train_worker_panels of this TrainRun. # noqa: E501
|
|
443
|
+
:type: list[DashboardPanel]
|
|
444
|
+
"""
|
|
445
|
+
|
|
446
|
+
self._train_worker_panels = train_worker_panels
|
|
447
|
+
|
|
396
448
|
def to_dict(self):
|
|
397
449
|
"""Returns the model properties as a dict"""
|
|
398
450
|
result = {}
|
anyscale/job/_private/job_sdk.py
CHANGED
|
@@ -190,6 +190,7 @@ class PrivateJobSDK(WorkloadSDK):
|
|
|
190
190
|
compute_config_id=compute_config_id,
|
|
191
191
|
max_concurrency=provided_job_queue_spec.max_concurrency,
|
|
192
192
|
idle_timeout_sec=provided_job_queue_spec.idle_timeout_s,
|
|
193
|
+
auto_termination_threshold_job_count=provided_job_queue_spec.auto_termination_threshold_job_count,
|
|
193
194
|
)
|
|
194
195
|
|
|
195
196
|
job_queue_config = CreateJobQueueConfig(
|
anyscale/job/models.py
CHANGED
|
@@ -133,6 +133,26 @@ job_queue_spec:
|
|
|
133
133
|
f"'max_concurrency' must be an int (it is {type(max_concurrency)})."
|
|
134
134
|
)
|
|
135
135
|
|
|
136
|
+
auto_termination_threshold_job_count: Optional[int] = field(
|
|
137
|
+
default=None,
|
|
138
|
+
metadata={
|
|
139
|
+
"docstring": "Maximum number of jobs the cluster can run before it "
|
|
140
|
+
"becomes eligible for termination"
|
|
141
|
+
},
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
def _validate_auto_termination_threshold_job_count(
|
|
145
|
+
self, auto_termination_threshold_job_count: Optional[int]
|
|
146
|
+
):
|
|
147
|
+
if auto_termination_threshold_job_count is None:
|
|
148
|
+
return
|
|
149
|
+
if not isinstance(auto_termination_threshold_job_count, int):
|
|
150
|
+
raise TypeError(
|
|
151
|
+
f"'auto_termination_threshold_job_count' must be an int (it is {type(auto_termination_threshold_job_count)})."
|
|
152
|
+
)
|
|
153
|
+
if auto_termination_threshold_job_count <= 0:
|
|
154
|
+
raise ValueError("'auto_termination_threshold_job_count' should be > 0")
|
|
155
|
+
|
|
136
156
|
|
|
137
157
|
@dataclass(frozen=True)
|
|
138
158
|
class JobQueueConfig(ModelBase):
|
|
@@ -38,7 +38,8 @@ class JobQueueSpec(object):
|
|
|
38
38
|
'compute_config_id': 'str',
|
|
39
39
|
'cluster_environment_build_id': 'str',
|
|
40
40
|
'max_concurrency': 'int',
|
|
41
|
-
'idle_timeout_sec': 'int'
|
|
41
|
+
'idle_timeout_sec': 'int',
|
|
42
|
+
'auto_termination_threshold_job_count': 'int'
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
attribute_map = {
|
|
@@ -47,10 +48,11 @@ class JobQueueSpec(object):
|
|
|
47
48
|
'compute_config_id': 'compute_config_id',
|
|
48
49
|
'cluster_environment_build_id': 'cluster_environment_build_id',
|
|
49
50
|
'max_concurrency': 'max_concurrency',
|
|
50
|
-
'idle_timeout_sec': 'idle_timeout_sec'
|
|
51
|
+
'idle_timeout_sec': 'idle_timeout_sec',
|
|
52
|
+
'auto_termination_threshold_job_count': 'auto_termination_threshold_job_count'
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, local_vars_configuration=None): # noqa: E501
|
|
55
|
+
def __init__(self, job_queue_name=None, execution_mode=None, compute_config_id=None, cluster_environment_build_id=None, max_concurrency=1, idle_timeout_sec=None, auto_termination_threshold_job_count=None, local_vars_configuration=None): # noqa: E501
|
|
54
56
|
"""JobQueueSpec - a model defined in OpenAPI""" # noqa: E501
|
|
55
57
|
if local_vars_configuration is None:
|
|
56
58
|
local_vars_configuration = Configuration()
|
|
@@ -62,6 +64,7 @@ class JobQueueSpec(object):
|
|
|
62
64
|
self._cluster_environment_build_id = None
|
|
63
65
|
self._max_concurrency = None
|
|
64
66
|
self._idle_timeout_sec = None
|
|
67
|
+
self._auto_termination_threshold_job_count = None
|
|
65
68
|
self.discriminator = None
|
|
66
69
|
|
|
67
70
|
if job_queue_name is not None:
|
|
@@ -75,6 +78,8 @@ class JobQueueSpec(object):
|
|
|
75
78
|
if max_concurrency is not None:
|
|
76
79
|
self.max_concurrency = max_concurrency
|
|
77
80
|
self.idle_timeout_sec = idle_timeout_sec
|
|
81
|
+
if auto_termination_threshold_job_count is not None:
|
|
82
|
+
self.auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
78
83
|
|
|
79
84
|
@property
|
|
80
85
|
def job_queue_name(self):
|
|
@@ -216,6 +221,29 @@ class JobQueueSpec(object):
|
|
|
216
221
|
|
|
217
222
|
self._idle_timeout_sec = idle_timeout_sec
|
|
218
223
|
|
|
224
|
+
@property
|
|
225
|
+
def auto_termination_threshold_job_count(self):
|
|
226
|
+
"""Gets the auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
227
|
+
|
|
228
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
229
|
+
|
|
230
|
+
:return: The auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
231
|
+
:rtype: int
|
|
232
|
+
"""
|
|
233
|
+
return self._auto_termination_threshold_job_count
|
|
234
|
+
|
|
235
|
+
@auto_termination_threshold_job_count.setter
|
|
236
|
+
def auto_termination_threshold_job_count(self, auto_termination_threshold_job_count):
|
|
237
|
+
"""Sets the auto_termination_threshold_job_count of this JobQueueSpec.
|
|
238
|
+
|
|
239
|
+
Maximum number of jobs the cluster can run before it becomes eligible for termination. # noqa: E501
|
|
240
|
+
|
|
241
|
+
:param auto_termination_threshold_job_count: The auto_termination_threshold_job_count of this JobQueueSpec. # noqa: E501
|
|
242
|
+
:type: int
|
|
243
|
+
"""
|
|
244
|
+
|
|
245
|
+
self._auto_termination_threshold_job_count = auto_termination_threshold_job_count
|
|
246
|
+
|
|
219
247
|
def to_dict(self):
|
|
220
248
|
"""Returns the model properties as a dict"""
|
|
221
249
|
result = {}
|
|
@@ -39,7 +39,8 @@ class RayRuntimeEnvConfig(object):
|
|
|
39
39
|
'pip': 'list[str]',
|
|
40
40
|
'conda': 'object',
|
|
41
41
|
'env_vars': 'dict(str, str)',
|
|
42
|
-
'config': 'object'
|
|
42
|
+
'config': 'object',
|
|
43
|
+
'image_uri': 'str'
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
attribute_map = {
|
|
@@ -49,10 +50,11 @@ class RayRuntimeEnvConfig(object):
|
|
|
49
50
|
'pip': 'pip',
|
|
50
51
|
'conda': 'conda',
|
|
51
52
|
'env_vars': 'env_vars',
|
|
52
|
-
'config': 'config'
|
|
53
|
+
'config': 'config',
|
|
54
|
+
'image_uri': 'image_uri'
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
def __init__(self, working_dir=None, py_modules=None, py_executable=None, pip=None, conda=None, env_vars=None, config=None, local_vars_configuration=None): # noqa: E501
|
|
57
|
+
def __init__(self, working_dir=None, py_modules=None, py_executable=None, pip=None, conda=None, env_vars=None, config=None, image_uri=None, local_vars_configuration=None): # noqa: E501
|
|
56
58
|
"""RayRuntimeEnvConfig - a model defined in OpenAPI""" # noqa: E501
|
|
57
59
|
if local_vars_configuration is None:
|
|
58
60
|
local_vars_configuration = Configuration()
|
|
@@ -65,6 +67,7 @@ class RayRuntimeEnvConfig(object):
|
|
|
65
67
|
self._conda = None
|
|
66
68
|
self._env_vars = None
|
|
67
69
|
self._config = None
|
|
70
|
+
self._image_uri = None
|
|
68
71
|
self.discriminator = None
|
|
69
72
|
|
|
70
73
|
if working_dir is not None:
|
|
@@ -81,6 +84,8 @@ class RayRuntimeEnvConfig(object):
|
|
|
81
84
|
self.env_vars = env_vars
|
|
82
85
|
if config is not None:
|
|
83
86
|
self.config = config
|
|
87
|
+
if image_uri is not None:
|
|
88
|
+
self.image_uri = image_uri
|
|
84
89
|
|
|
85
90
|
@property
|
|
86
91
|
def working_dir(self):
|
|
@@ -243,6 +248,29 @@ class RayRuntimeEnvConfig(object):
|
|
|
243
248
|
|
|
244
249
|
self._config = config
|
|
245
250
|
|
|
251
|
+
@property
|
|
252
|
+
def image_uri(self):
|
|
253
|
+
"""Gets the image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
254
|
+
|
|
255
|
+
Specifies the image URI of the container in which the job will run. # noqa: E501
|
|
256
|
+
|
|
257
|
+
:return: The image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
258
|
+
:rtype: str
|
|
259
|
+
"""
|
|
260
|
+
return self._image_uri
|
|
261
|
+
|
|
262
|
+
@image_uri.setter
|
|
263
|
+
def image_uri(self, image_uri):
|
|
264
|
+
"""Sets the image_uri of this RayRuntimeEnvConfig.
|
|
265
|
+
|
|
266
|
+
Specifies the image URI of the container in which the job will run. # noqa: E501
|
|
267
|
+
|
|
268
|
+
:param image_uri: The image_uri of this RayRuntimeEnvConfig. # noqa: E501
|
|
269
|
+
:type: str
|
|
270
|
+
"""
|
|
271
|
+
|
|
272
|
+
self._image_uri = image_uri
|
|
273
|
+
|
|
246
274
|
def to_dict(self):
|
|
247
275
|
"""Returns the model properties as a dict"""
|
|
248
276
|
result = {}
|
anyscale/telemetry.py
CHANGED
|
@@ -326,27 +326,31 @@ def _emit_telemetry(body: CLIUsagePayload) -> None:
|
|
|
326
326
|
try:
|
|
327
327
|
logger.debug(json.dumps(body.to_dict(), indent=2))
|
|
328
328
|
|
|
329
|
+
traceparent = get_traceparent()
|
|
330
|
+
|
|
329
331
|
def _worker():
|
|
330
332
|
try:
|
|
331
|
-
# Lazy imports to avoid circular deps
|
|
332
333
|
from anyscale.authenticate import get_auth_api_client
|
|
333
|
-
from anyscale.client.openapi_client.api.default_api import DefaultApi
|
|
334
334
|
|
|
335
|
-
|
|
336
|
-
|
|
335
|
+
if traceparent:
|
|
336
|
+
_trace_id_var.set(body.trace_id)
|
|
337
|
+
|
|
338
|
+
api = get_auth_api_client().api_client
|
|
337
339
|
api.receive_cli_usage_api_v2_cli_usage_post(
|
|
338
340
|
cli_usage_payload=body, _request_timeout=2
|
|
339
341
|
)
|
|
340
|
-
|
|
342
|
+
|
|
343
|
+
logger.debug("[TELEMETRY] POST completed successfully")
|
|
344
|
+
except Exception as e: # noqa: BLE001
|
|
345
|
+
logger.debug(f"[TELEMETRY] POST failed: {e}")
|
|
341
346
|
# Best-effort only - never crash the CLI
|
|
342
|
-
pass
|
|
343
347
|
|
|
344
348
|
thread = threading.Thread(target=_worker, daemon=False)
|
|
345
349
|
thread.start()
|
|
346
350
|
thread.join(timeout=3)
|
|
347
|
-
except Exception: # noqa: BLE001
|
|
351
|
+
except Exception as e: # noqa: BLE001
|
|
352
|
+
logger.error(f"[TELEMETRY] Failed to emit: {e}")
|
|
348
353
|
# Telemetry should never crash the CLI
|
|
349
|
-
pass
|
|
350
354
|
|
|
351
355
|
|
|
352
356
|
# ─── Click Patch ─────────────────────────────────────────────────────────────
|
anyscale/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.26.
|
|
1
|
+
__version__ = "0.26.37"
|
|
@@ -26,9 +26,9 @@ anyscale/project_utils.py,sha256=SBwkD5B10ku2kkmp6y-Cr5RL7xf52b9zELP35kfg2PE,176
|
|
|
26
26
|
anyscale/scripts.py,sha256=dG_JgWuq8TrM4XLRCCXhccka41qn95qbEgt0GG_1x5M,5678
|
|
27
27
|
anyscale/snapshot.py,sha256=UGJT5C1s_4xmQxjWODK5DFpGxHRBX5jOCdSCqXESH8E,1685
|
|
28
28
|
anyscale/tables.py,sha256=TV4F2uLnwehvbkAfaP7iuLlT2wLIo6ORH2LVdRGXW5g,2840
|
|
29
|
-
anyscale/telemetry.py,sha256=
|
|
29
|
+
anyscale/telemetry.py,sha256=wklWABN8wtq8Cq3ptPFEeQQC9xjKP5ytxybCuWAvNI0,15229
|
|
30
30
|
anyscale/util.py,sha256=14AHIhl4c4hKAW4gLZIvy5w56-zDjcPmrdWqazsvnHU,41860
|
|
31
|
-
anyscale/version.py,sha256=
|
|
31
|
+
anyscale/version.py,sha256=0oZ4sVYsXoNWPeoRVI4uLkxuL5LwE8Ph-F25MXMJ_lU,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
|
|
@@ -40,7 +40,7 @@ anyscale/_private/docgen/__main__.py,sha256=rVYAjasr4c-wIaCmETsZRiYaEos0KvLsjVz4
|
|
|
40
40
|
anyscale/_private/docgen/api.md,sha256=VKW293yubbeUG17A38wYuaONKDL5XICMguyfZ2xkIyY,27495
|
|
41
41
|
anyscale/_private/docgen/generator.py,sha256=jAOaprAeU659glRDBATAkAQeYC1nDU14jgdobcILS1s,21737
|
|
42
42
|
anyscale/_private/docgen/generator_legacy.py,sha256=pss_6ONF55XhARrKGcREDmg0J5plWact6USgb5Tr5mM,3002
|
|
43
|
-
anyscale/_private/docgen/models.md,sha256=
|
|
43
|
+
anyscale/_private/docgen/models.md,sha256=uOhlb1TEj2HRcEBqk9ZLdswVONBB-Grp_MC0w035MII,296010
|
|
44
44
|
anyscale/_private/models/__init__.py,sha256=ZrkdHhJZNeCYiogsHc_po8m7vaVdxEjkNGixNeYdlgs,125
|
|
45
45
|
anyscale/_private/models/image_uri.py,sha256=CMzHc-MNTBsBXvX0G73bjkiznCbm95DYQusgXJ8drm8,3971
|
|
46
46
|
anyscale/_private/models/model_base.py,sha256=GJLA4JC0yHT554ctMYS_1es-YoTHQH9oqRHr28vV4R0,11354
|
|
@@ -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=
|
|
109
|
+
anyscale/client/README.md,sha256=YxposNbmVkw00WhZBNbvT6JOu09MIvZbz4g4vN0yIkI,110900
|
|
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=
|
|
117
|
+
anyscale/client/openapi_client/__init__.py,sha256=6HirUawZcEJ1I7_z-11yxTOkuPxiN7UXR2nYtsaQ7P0,50162
|
|
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=
|
|
124
|
-
anyscale/client/openapi_client/models/__init__.py,sha256=
|
|
123
|
+
anyscale/client/openapi_client/api/default_api.py,sha256=v6-qY7Whmm9OZtAxtghPKhFZ66nxAZ0VcKXxA6k-TUc,1776637
|
|
124
|
+
anyscale/client/openapi_client/models/__init__.py,sha256=Ax4GnQuBALzMDQ7ZvIU2bH5a5j_4NrO4nViXHrvEZYU,49672
|
|
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
|
|
@@ -278,7 +278,7 @@ anyscale/client/openapi_client/models/create_experimental_workspace.py,sha256=Bx
|
|
|
278
278
|
anyscale/client/openapi_client/models/create_instance_usage_budget.py,sha256=54uVdd4kFTbjVMEzxWP6A3vApzraMGYW5-NaVqpzp3o,8142
|
|
279
279
|
anyscale/client/openapi_client/models/create_internal_production_job.py,sha256=ORm33kIVat8_L93jQwZ8xK-GDL2bnFmcJh1aF8L9Tng,8333
|
|
280
280
|
anyscale/client/openapi_client/models/create_job_queue_config.py,sha256=UGjwSG2WAM8pKE4ye8CtsxYBpehg0MURNnj_z-UPqRo,7659
|
|
281
|
-
anyscale/client/openapi_client/models/create_job_queue_requests.py,sha256=
|
|
281
|
+
anyscale/client/openapi_client/models/create_job_queue_requests.py,sha256=hLaynmiZKlczxSHIrDonzs1G_XBLDlACEPoXQzwjaJI,12722
|
|
282
282
|
anyscale/client/openapi_client/models/create_machine_pool_request.py,sha256=Dx2kePNzklHqhCHNjFf8kl1S_Qnk3IlqSGedyr_8pPo,5309
|
|
283
283
|
anyscale/client/openapi_client/models/create_machine_pool_response.py,sha256=B-HfMFIGLSi0eVilAXYEX6dWFIunT_-4a2SWi75mCSE,3827
|
|
284
284
|
anyscale/client/openapi_client/models/create_machine_request.py,sha256=Jc7J8_9smmiki5hZey0nTqYFbR4VlcpWzZX3xHaj3hM,4724
|
|
@@ -309,6 +309,7 @@ anyscale/client/openapi_client/models/credit_record_credit_v2.py,sha256=hpavQ67a
|
|
|
309
309
|
anyscale/client/openapi_client/models/credit_type.py,sha256=9xx435374f9njhOra03kdQRse8nNBUoqMo7W7L5oRRU,2818
|
|
310
310
|
anyscale/client/openapi_client/models/credits_v2.py,sha256=ZpWqxRL40C1yNdVXfZ3TWnYY3nXmRDe7FCaxaKJYpkU,12801
|
|
311
311
|
anyscale/client/openapi_client/models/customer_alert_status.py,sha256=hcvEKv0QHAy-98ENvrud0FfIVHK5Lu6GOC8QDBRfCrU,2890
|
|
312
|
+
anyscale/client/openapi_client/models/dashboard_panel.py,sha256=8Fy4WD7yyWwzqiUd4IdAJX2viWbE59Z13HcKMCJICX8,4151
|
|
312
313
|
anyscale/client/openapi_client/models/dataplane_services.py,sha256=iPEKAk7R83srccjR0l25YY2pntdf_6IfID-dhDA9v_4,2918
|
|
313
314
|
anyscale/client/openapi_client/models/dataset.py,sha256=Gok0vAOXDEj2A3vZwbGxNnH-2Ajxu9pRGWZvfQ0usSQ,12062
|
|
314
315
|
anyscale/client/openapi_client/models/dataset_dag.py,sha256=_8wixt-pAWipBz8MQ20Cs5zb3whNJZK0xRPYQa9HUaM,6680
|
|
@@ -429,7 +430,7 @@ anyscale/client/openapi_client/models/job_queue_config.py,sha256=gW1_u_bKHoVqJrf
|
|
|
429
430
|
anyscale/client/openapi_client/models/job_queue_execution_mode.py,sha256=5G2g8z_OmVzClUCfyNmKduHRJ0RsgXuliIBw5iXHoKI,2886
|
|
430
431
|
anyscale/client/openapi_client/models/job_queue_sort_directive.py,sha256=Hoz5fBMpG6rCZrjHYqZi91Lszs9MPlrIcyOhTHfuP8s,4568
|
|
431
432
|
anyscale/client/openapi_client/models/job_queue_sort_field.py,sha256=mb2yTPHGCbX3ENE3bsQNd0C4v0nU0Qt949sunZCJuDA,3137
|
|
432
|
-
anyscale/client/openapi_client/models/job_queue_spec.py,sha256=
|
|
433
|
+
anyscale/client/openapi_client/models/job_queue_spec.py,sha256=hwWK7qr5wE_95ugaBPBgc3nj1R0CYeCpV80kOaWHUyk,11128
|
|
433
434
|
anyscale/client/openapi_client/models/job_queue_state.py,sha256=5Ejli6rOUioLQj5EbABn02xPSwsBMgiFa3FW2WbCrp4,2830
|
|
434
435
|
anyscale/client/openapi_client/models/job_queues_query.py,sha256=guOukU90OuMoMIousA8ZnXghSwk1VcLL2cwPgiyiFII,8784
|
|
435
436
|
anyscale/client/openapi_client/models/job_report.py,sha256=B1TFEjlPQ46J8BCDFSr7g7PHh5nkxNRMRKxrMwZm8dQ,5982
|
|
@@ -557,7 +558,7 @@ anyscale/client/openapi_client/models/protocols.py,sha256=Q_QNTShXYTtz-Ct9iNGJl3
|
|
|
557
558
|
anyscale/client/openapi_client/models/python_modules.py,sha256=PplQop90t5MefEQFdLw_RYvKTb1HudY2szGUB4qY_og,4560
|
|
558
559
|
anyscale/client/openapi_client/models/quota.py,sha256=j1WHnVQGu4O3XKDvEg4ybgHLJiOce8FNe_UQSil7rh4,5467
|
|
559
560
|
anyscale/client/openapi_client/models/ray_gcs_external_storage_config.py,sha256=O01Zt4yeVFVWMPpvMjPrYDZVx9BTAhvR5VYZQmg6HUE,5826
|
|
560
|
-
anyscale/client/openapi_client/models/ray_runtime_env_config.py,sha256=
|
|
561
|
+
anyscale/client/openapi_client/models/ray_runtime_env_config.py,sha256=JzSXS9XOsZMKc5C3uZEEKutOINprLSIIlhcclXv8sVI,9959
|
|
561
562
|
anyscale/client/openapi_client/models/ray_session.py,sha256=SuFSTgFBe0nVHSsYh2gqCBCVNaF1XGVxLtDMLU3g6iM,3653
|
|
562
563
|
anyscale/client/openapi_client/models/read_billing_version.py,sha256=0hOQby7NUkwl1FxlH_7S2iBZrNluYRfzCYorqFPXxRE,7481
|
|
563
564
|
anyscale/client/openapi_client/models/readbillingversion_list_response.py,sha256=1jdBzaiunHku2Y85OuqSQEH3cTpSmQgBgKwkSmqSWBk,4467
|
|
@@ -655,7 +656,7 @@ anyscale/client/openapi_client/models/text_query.py,sha256=aMcKF6nRme1J1jYKhvqUI
|
|
|
655
656
|
anyscale/client/openapi_client/models/tool.py,sha256=VdvWL_MW4EQGShmmjOL0OpD_oCBaU4EUofUxdzGSlwg,2977
|
|
656
657
|
anyscale/client/openapi_client/models/tracing_config.py,sha256=UdOdwgPRrXQyFNDgnsBKtFyBHYx9Z7nrctNJX-H8VTM,6293
|
|
657
658
|
anyscale/client/openapi_client/models/train_resources.py,sha256=cUsgnqj5rRVhos7lsU02zFE7RUBJuXv07-g8nta19_k,3577
|
|
658
|
-
anyscale/client/openapi_client/models/train_run.py,sha256=
|
|
659
|
+
anyscale/client/openapi_client/models/train_run.py,sha256=T0259hqT6K7tqKcaXbV0Kl5ArjA92yCC9qH88ojjhVI,14764
|
|
659
660
|
anyscale/client/openapi_client/models/train_run_attempt.py,sha256=s8_rIdNLl4ofLaP2oBoDhQKOEPedlaU1qlxGm4wKcMM,9353
|
|
660
661
|
anyscale/client/openapi_client/models/train_worker.py,sha256=fRqsp61gZj7EJNPw0Cxz12Qg9dgISLrxsVbFPiaZ4kQ,11237
|
|
661
662
|
anyscale/client/openapi_client/models/trainrun_list_response.py,sha256=OjmJOsglUhoqv2lhocx-DloJY9bk30ZYGNK0ObcorkY,4317
|
|
@@ -806,8 +807,8 @@ anyscale/image/models.py,sha256=xEaZfrMydtkdr-7zYlI-2d9Su2I7al7TgBulwG_plnI,1812
|
|
|
806
807
|
anyscale/image/_private/image_sdk.py,sha256=c6ONvbcq1bUP0YbfIMw8QLRFfVbCiiTwULQAniotd04,7311
|
|
807
808
|
anyscale/job/__init__.py,sha256=_5Nb3a11F4oAHXirTgx5vDdgpVzJ62FdGFmADxxvcPE,5051
|
|
808
809
|
anyscale/job/commands.py,sha256=je0WDrd3mxt3iuoGqKvE_2TuMWsffXXM_IQ5SRjUKnU,8524
|
|
809
|
-
anyscale/job/models.py,sha256=
|
|
810
|
-
anyscale/job/_private/job_sdk.py,sha256=
|
|
810
|
+
anyscale/job/models.py,sha256=b2f5PyGhrqYv96kY6g24SqZa-4W1AUZQMrUV0vCrOws,18759
|
|
811
|
+
anyscale/job/_private/job_sdk.py,sha256=v1el8C1kcGEiCCvoPVpnPbmYiRPr43rVHFmvlUrnob8,19119
|
|
811
812
|
anyscale/job_queue/__init__.py,sha256=4KhAj-JkzqJdz1AbUoO8sQ4weWISBYaMPe6uRj7-5SA,3194
|
|
812
813
|
anyscale/job_queue/commands.py,sha256=pVgX6MG15zlUFgz6lUvAFqTSYY7gAZ5cFmDJY3QRTx0,3948
|
|
813
814
|
anyscale/job_queue/models.py,sha256=gl98WWvvdUlCWaSpLyUHggzNmUr49ti39itB37mznM0,10538
|
|
@@ -936,7 +937,7 @@ anyscale/sdk/anyscale_client/models/job.py,sha256=KsRd1VZKoQFkDQUIg6KbgsY8BDfihx
|
|
|
936
937
|
anyscale/sdk/anyscale_client/models/job_list_response.py,sha256=Gjq6dTkUpLAM5py4J9YeFoLEhsuZu-adgjGMlWrfsT0,4240
|
|
937
938
|
anyscale/sdk/anyscale_client/models/job_queue_config.py,sha256=RynWP84SvtCy49CmrdLKoQDhcX1KQAPSGJlfA7e16yM,3699
|
|
938
939
|
anyscale/sdk/anyscale_client/models/job_queue_execution_mode.py,sha256=lBtOKQFM_P-WnlTdRCq1eqvm-yJztEk0xds85lIgBck,2884
|
|
939
|
-
anyscale/sdk/anyscale_client/models/job_queue_spec.py,sha256=
|
|
940
|
+
anyscale/sdk/anyscale_client/models/job_queue_spec.py,sha256=VWKygjbEHvzGndJ0Z-jQ1MrELVk5MKbfCTrkoWVVwoo,11126
|
|
940
941
|
anyscale/sdk/anyscale_client/models/job_run_type.py,sha256=t2_LBY7PntZi5_zTEh4_JGH2eyjalGre4RVPG5d6qdc,2888
|
|
941
942
|
anyscale/sdk/anyscale_client/models/job_status.py,sha256=gUFnvO3SJDTIsfculUWjlcrqDnBgL7zLqp15qyafW6k,2992
|
|
942
943
|
anyscale/sdk/anyscale_client/models/jobs_query.py,sha256=QC-cZsymG4Hc7CE6atosIsLkuQ9BujtuxtjPTLjVyGY,15582
|
|
@@ -973,7 +974,7 @@ anyscale/sdk/anyscale_client/models/protocols.py,sha256=9qfVw8NFAPiOYpKgpTpqfBMs
|
|
|
973
974
|
anyscale/sdk/anyscale_client/models/python_modules.py,sha256=c-azFLGNKajibYjCigBuGK0_ac2UmL5FJ4ODbQJk9mY,4558
|
|
974
975
|
anyscale/sdk/anyscale_client/models/python_version.py,sha256=O84bJhjGnVXRZIiTWFzvC5HcFSSNAcm6w1X8GYBt8rQ,2945
|
|
975
976
|
anyscale/sdk/anyscale_client/models/ray_gcs_external_storage_config.py,sha256=BEtUR1Kh5aaNFjFHU7MsxooBqQc-hGal6_mipYJcW0g,5824
|
|
976
|
-
anyscale/sdk/anyscale_client/models/ray_runtime_env_config.py,sha256=
|
|
977
|
+
anyscale/sdk/anyscale_client/models/ray_runtime_env_config.py,sha256=ZfhVaicqpp0YigDzpehsL5TtnvrLq-Gv2wjse8b6rzY,9957
|
|
977
978
|
anyscale/sdk/anyscale_client/models/resources.py,sha256=eTejVIl2V0FdAFfIt728G_trQ-VvQM7brJhmpShDnxs,8186
|
|
978
979
|
anyscale/sdk/anyscale_client/models/rollback_service_model.py,sha256=_vMH6PeOIvsIo7s6al9Fkvc4F0PC2W4BlCRmwdlTD7k,3725
|
|
979
980
|
anyscale/sdk/anyscale_client/models/rollout_strategy.py,sha256=AWZEjQEn8_goS97NXMgJtuPdtRS1HrA9rVKWmOWFKYQ,2845
|
|
@@ -1085,10 +1086,10 @@ anyscale/workspace/__init__.py,sha256=Innbm5ZhCyADEVBiYSo_vbpKwUNcMzVSAfxIGKOYe6
|
|
|
1085
1086
|
anyscale/workspace/commands.py,sha256=b1sqNseoPj-1VXznqQOLe0V_a663bOTvJX-TaOMJa1Y,14590
|
|
1086
1087
|
anyscale/workspace/models.py,sha256=HBvM9ybOdJjqQeViQ30C36gdKT_AwH_JHPoL-DTkESo,9841
|
|
1087
1088
|
anyscale/workspace/_private/workspace_sdk.py,sha256=2CMeYfJt0UtIFCocDn1ukw1iI5esKHdopLe6duEs-qE,27599
|
|
1088
|
-
anyscale-0.26.
|
|
1089
|
-
anyscale-0.26.
|
|
1090
|
-
anyscale-0.26.
|
|
1091
|
-
anyscale-0.26.
|
|
1092
|
-
anyscale-0.26.
|
|
1093
|
-
anyscale-0.26.
|
|
1094
|
-
anyscale-0.26.
|
|
1089
|
+
anyscale-0.26.37.dist-info/LICENSE,sha256=UOPu974Wzsna6frFv1mu4VrZgNdZT7lbcNPzo5ue3qs,3494
|
|
1090
|
+
anyscale-0.26.37.dist-info/METADATA,sha256=r7fvUIqGd9lMEgBfpcTpMajICulm4nYKoZsEfB_D4BE,3269
|
|
1091
|
+
anyscale-0.26.37.dist-info/NOTICE,sha256=gHqDhSnUYlRXX-mDOL5FtE7774oiKyV_HO80qM3r9Xo,196
|
|
1092
|
+
anyscale-0.26.37.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
1093
|
+
anyscale-0.26.37.dist-info/entry_points.txt,sha256=NqO18sCZn6zG6J0S38itjcN00s7aE3C3v3k5lMAfCLk,51
|
|
1094
|
+
anyscale-0.26.37.dist-info/top_level.txt,sha256=g3NVNS8Oh0NZwbFFgeX696C5MZZkS5dqV2NqcsbDRJE,9
|
|
1095
|
+
anyscale-0.26.37.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|