yellowdog-sdk 9.2.1__py3-none-any.whl → 9.2.3__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.
@@ -1 +1 @@
1
- __version__ = '9.2.1' # YEL-13449
1
+ __version__ = '9.2.3' # YEL-13425 v3
@@ -26,9 +26,16 @@ def _determine_subclass(value: dict, cls: type) -> type:
26
26
  elif "action" in value:
27
27
  type_field = "action"
28
28
  type_value = value[type_field]
29
- elif "errorType" in value:
29
+ elif "errorType" in value and cls is BaseCustomException:
30
30
  type_field = "errorType"
31
31
  type_value = ErrorType(value[type_field])
32
+
33
+ naked_class = get_naked_class(cls)
34
+
35
+ subclasses = all_subclasses(naked_class)
36
+ if subclasses:
37
+ return {getattr(x, type_field).value: x for x in subclasses}[type_value.value]
38
+ return cls
32
39
  else:
33
40
  return cls
34
41
 
@@ -266,6 +266,8 @@ from .task_data import TaskData
266
266
  from .task_data_input import TaskDataInput
267
267
  from .task_data_output import TaskDataOutput
268
268
  from .task_error import TaskError
269
+ from .task_error_matcher import TaskErrorMatcher
270
+ from .task_error_type import TaskErrorType
269
271
  from .task_group import TaskGroup
270
272
  from .task_group_status import TaskGroupStatus
271
273
  from .task_input import TaskInput
@@ -578,6 +580,8 @@ __all__ = [
578
580
  "TaskDataInput",
579
581
  "TaskDataOutput",
580
582
  "TaskError",
583
+ "TaskErrorMatcher",
584
+ "TaskErrorType",
581
585
  "TaskGroup",
582
586
  "TaskGroupStatus",
583
587
  "TaskInput",
@@ -7,7 +7,7 @@ class NodeStatus(Enum):
7
7
  """The node is running and its heartbeat is being received."""
8
8
  LATE = "LATE", True, False
9
9
  """The node's heartbeat is late."""
10
- LOST = "LOST", False, False
10
+ LOST = "LOST", False, True
11
11
  """The node's heartbeat has not been received for long enough that it is considered lost."""
12
12
  DEREGISTERED = "DEREGISTERED", False, True
13
13
  """The node has been deregistered from the worker pool."""
@@ -4,6 +4,7 @@ from typing import List, Optional
4
4
 
5
5
  from .cloud_provider import CloudProvider
6
6
  from .double_range import DoubleRange
7
+ from .task_error_matcher import TaskErrorMatcher
7
8
 
8
9
 
9
10
  @dataclass
@@ -45,3 +46,5 @@ class RunSpecification:
45
46
  pools in the specified namespaces.
46
47
  """
47
48
 
49
+ retryableErrors: Optional[List[TaskErrorMatcher]] = None
50
+ """Defines the errors that should result in a task retrying if encountered."""
@@ -2,13 +2,19 @@ from dataclasses import dataclass
2
2
  from datetime import datetime
3
3
  from typing import Optional
4
4
 
5
+ from .task_error_type import TaskErrorType
6
+ from .task_status import TaskStatus
7
+
5
8
 
6
9
  @dataclass
7
10
  class TaskError:
8
11
  """Holds details of an error that occurred during execution of the task."""
9
- timestamp: Optional[datetime] = None
12
+ timestamp: datetime
10
13
  """The time at which the error occurred."""
14
+ error: str
15
+ """A description of the error."""
11
16
  workerId: Optional[str] = None
12
17
  """The ID of the worker where the error occurred."""
13
- error: Optional[str] = None
14
- """A description of the error."""
18
+ errorType: str = TaskErrorType.UNKNOWN_ERROR
19
+ statusAtFailure: Optional[TaskStatus] = None
20
+ processExitCode: Optional[int] = None
@@ -0,0 +1,11 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Optional
3
+
4
+ from .task_status import TaskStatus
5
+
6
+
7
+ @dataclass
8
+ class TaskErrorMatcher:
9
+ errorTypes: Optional[List[str]] = None
10
+ statusesAtFailure: Optional[List[TaskStatus]] = None
11
+ processExitCodes: Optional[List[int]] = None
@@ -0,0 +1,22 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class TaskErrorType:
6
+
7
+ ALLOCATION_LOST: str = "ALLOCATION_LOST"
8
+ RESOURCE_REQUEST_FAILED: str = "RESOURCE_REQUEST_FAILED"
9
+
10
+ TIMED_OUT: str = "TIMED_OUT"
11
+ UNABLE_START_PROCESS: str = "UNABLE_START_PROCESS"
12
+ PROCESS_NON_ZERO_EXIT: str = "PROCESS_NON_ZERO_EXIT"
13
+ DATA_CLIENT_DISABLED: str = "DATA_CLIENT_DISABLED"
14
+ UNKNOWN_ERROR: str = "UNKNOWN_ERROR"
15
+ OUTPUT_NOT_FOUND: str = "OUTPUT_NOT_FOUND"
16
+ INPUT_NOT_FOUND: str = "INPUT_NOT_FOUND"
17
+ TRANSITION_REFUSED: str = "TRANSITION_REFUSED"
18
+ UNABLE_WRITE_TASK_DATA: str = "UNABLE_WRITE_TASK_DATA"
19
+ OBJECT_STORE_TRANSFER_FAILED: str = "OBJECT_STORE_TRANSFER_FAILED"
20
+
21
+
22
+ pass
@@ -16,7 +16,11 @@ class WorkerStatus(Enum):
16
16
  LOST = "LOST", False, False
17
17
  """The Worker's heartbeat has not been received for long enough that the Worker is considered to have been lost."""
18
18
  FOUND = "FOUND", True, True
19
- """The Worker was considered to be lost but its heartbeat has returned, however it has not yet requested instruction."""
19
+ """
20
+ The Worker was considered to be lost but its heartbeat has returned, however it has not yet requested instruction.
21
+ @deprecated Workers can no longer be FOUND once LOST. Status can be removed when all clients >= v9.3.0
22
+ """
23
+
20
24
  SHUTDOWN = "SHUTDOWN", False, False
21
25
  """The Worker has been instructed to shut down."""
22
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-sdk
3
- Version: 9.2.1
3
+ Version: 9.2.3
4
4
  Summary: SDK for the YellowDog Platform
5
5
  Author-email: YellowDog Limited <support@yellowdog.co>
6
6
  Project-URL: Homepage, https://yellowdog.co
@@ -1,6 +1,6 @@
1
1
  __init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  yellowdog_client/__init__.py,sha256=xHGTw5UbjkeEl_hC8_gJCacfji6462qJWD1nvJdFssE,13162
3
- yellowdog_client/_version.py,sha256=kXbYBKK3fsu2Y5Ia03tc1H0csyeeQXRntlsAePQjSuY,34
3
+ yellowdog_client/_version.py,sha256=z_N0s7vuX-PK5y7_8z7Uir0EdShHzTs0UW38O79NFFM,37
4
4
  yellowdog_client/client_collection.py,sha256=VSEzjf6iR1qCQ0YGLyDq_Kgvw8r832QDwTp6-MLB4Vs,388
5
5
  yellowdog_client/platform_client.py,sha256=yCzKsOQKllnfzwP9bG-JGtvOdvY7EaEQzFsgX3ERzVY,7476
6
6
  yellowdog_client/account/__init__.py,sha256=DiLL3uSMyVlAKWsncX0k5Ioc2hw87HQoEkSYO0ro0fg,456
@@ -28,7 +28,7 @@ yellowdog_client/common/credentials/__init__.py,sha256=_KvuZpIO_TSSrJd6v1UrCtXOz
28
28
  yellowdog_client/common/credentials/api_key_authentication_headers_provider.py,sha256=Spt8kYEW8_qy7RMLfIqjArntBcYhhZX9cxcjJbdcKfw,843
29
29
  yellowdog_client/common/decorators/__init__.py,sha256=_Agup5QZbT3nnwNKBD38MaxRPXU58kaHrrFhrWOUGXw,76
30
30
  yellowdog_client/common/decorators/dispatcher.py,sha256=NMGWHLAbm4gCjWoiQ6M6Nj78O3PlSKXpGUylmPhtf0s,244
31
- yellowdog_client/common/json/__init__.py,sha256=twWGDWfiswfqJw_TcT2gn4NiReSoWZR2b5dXpx5h0x4,6087
31
+ yellowdog_client/common/json/__init__.py,sha256=xAc_LukSrQ7kM73iQWa8q6HuU3KbFy8uR9otHvyaTto,6345
32
32
  yellowdog_client/common/server_sent_events/__init__.py,sha256=4N8p9TNiCV1qyHqKML84BuHugIOmRYldzQPB4mHkO7o,507
33
33
  yellowdog_client/common/server_sent_events/delegated_subscription_event_listener.py,sha256=6KKNE89fSG4cvpFza_X3416AJWh6eJj_lLmWy2GbALQ,1278
34
34
  yellowdog_client/common/server_sent_events/subscription.py,sha256=eUfjQr88sY7TvLwbDyhBm3C9KOu9KmkCixhmt69OSyo,2980
@@ -53,7 +53,7 @@ yellowdog_client/images/images_service_proxy.py,sha256=eyP4u6FoIH1WJvNM_m8tacTCs
53
53
  yellowdog_client/images/page.py,sha256=UIvlxvzdcfnKvbcq2Cn6IB7ZtQMc3dzcBTUfElvVPwQ,391
54
54
  yellowdog_client/images/pageable.py,sha256=msD8uGGJ2F5jEqTNDYaFrh6z6drlxOXZ1AmB0T3edM0,296
55
55
  yellowdog_client/images/sort.py,sha256=YS05DlIRg1Cm3QLBi6KFjFdB3g-b3WrqFFitlMJUEMM,167
56
- yellowdog_client/model/__init__.py,sha256=JeJqg-bMP3B58dChxqYtFZ0EkP3sMwPAwbOSY5LHU6Y,25755
56
+ yellowdog_client/model/__init__.py,sha256=RCEJcTVFqEerMSG3BiYPJPq7Uyx-MddY6VompoMPf64,25892
57
57
  yellowdog_client/model/access_delegate.py,sha256=gZYX7Hqw_eBzBIHzbxyZfrhko0xZIsPCsf4gSzFalwc,568
58
58
  yellowdog_client/model/account.py,sha256=r_-7J-JjjMcQPZzaQ4_o9y6XY7-GMPRLWt9mGOucYU0,394
59
59
  yellowdog_client/model/account_allowance.py,sha256=c-MkSSRLB5Y5TMDZl5h5fipj4vzLLlO_AQXPeRJ0AYw,1021
@@ -251,7 +251,7 @@ yellowdog_client/model/node_id_filter.py,sha256=jQushAfXGtvUEzRfr_1iUZQeyD4eFC6o
251
251
  yellowdog_client/model/node_run_command_action.py,sha256=joUk0g13ZKdsLTxnpyIpDNfiwwTBJdMpfU8uckJJhI0,466
252
252
  yellowdog_client/model/node_search.py,sha256=2mPWlATqHZWc3wenoUDPzIp3PplxW2A_oVw3_IA4-H4,1025
253
253
  yellowdog_client/model/node_slot_numbering.py,sha256=qKA4nXwu1iv58rdqaIr9sJhDh_KL1XjaHMexBWUWuek,137
254
- yellowdog_client/model/node_status.py,sha256=25PUpqyPruzc0Y1Rj7RbAJrMLjNKQWDUwrc_0tP1KJw,832
254
+ yellowdog_client/model/node_status.py,sha256=O5ZOl6bI7cpvPYgAamvdyfxZTBIcWqmdVerwxMV9p0c,831
255
255
  yellowdog_client/model/node_summary.py,sha256=u5X27f0MxyJb6e24Czb0f7aMkLDUlHdtglQdyB6x214,604
256
256
  yellowdog_client/model/node_type.py,sha256=Lh_73zwZz6lKFHyn3chJZmretYuhkhHgzf0H1XNLJ7I,323
257
257
  yellowdog_client/model/node_worker_target.py,sha256=uVcU-02dOZZUSqW43c4hf4FKnuw3iQfxs8DabOEJEm4,777
@@ -298,7 +298,7 @@ yellowdog_client/model/retry_properties.py,sha256=cccJRb-r1PkUixb-V26GIGf1iOXBnn
298
298
  yellowdog_client/model/role.py,sha256=WRnnlJAJzweCiBbivs9-7aHgPR72rHY9z8zaZhOs1AA,323
299
299
  yellowdog_client/model/role_search.py,sha256=SL8rngS-BWoqaZ4WtwiScS12Y7JOpfG-itbpPk7qxBc,332
300
300
  yellowdog_client/model/role_summary.py,sha256=fkyZ_pLapNbQM67bSgX60kt20WN7hYCWA0j-1zwzIPc,202
301
- yellowdog_client/model/run_specification.py,sha256=VjgEiCO07_37NhgLS5hd_N91L4AdZViFqXmNv8eYNRs,2518
301
+ yellowdog_client/model/run_specification.py,sha256=btk53yhHWKvTXxhbzTDS0NjXBf25fqjxPwkc303I15M,2711
302
302
  yellowdog_client/model/s3_namespace_storage_configuration.py,sha256=yUIsBlg2VlMD3ebrcvlfn9kjhztupkLwRfV3mmDlrng,380
303
303
  yellowdog_client/model/services_schema.py,sha256=fyKPI-uu4ii05Rg25EPGrS7AdpKFxqf6Bd-J8hiQMXE,2067
304
304
  yellowdog_client/model/set_password_request.py,sha256=SjOBrJBGVchr_rQqN2fhT3WYSdB5ZTmU9jtHx5B3-p0,145
@@ -322,7 +322,9 @@ yellowdog_client/model/task.py,sha256=at0_v_xm9nFx-npMBDR9LAHgO4YiueQoi7q4SMOVrJ
322
322
  yellowdog_client/model/task_data.py,sha256=mG8Yrg6laqJEGKa3I3yN2ZzT2eHzpVO9U4tPi9PKo8I,286
323
323
  yellowdog_client/model/task_data_input.py,sha256=ntlSr23aDdFR9AxEp0paWshBMrSythBksg3RYEIXBKg,105
324
324
  yellowdog_client/model/task_data_output.py,sha256=8DAPuveK43HxWBQE7--n4E_c115gAzpMhffLW4DDWkI,137
325
- yellowdog_client/model/task_error.py,sha256=jXvJAsIu0EoPidCfoeMegKNzcu5jzmJJBp_gdEdBfWE,453
325
+ yellowdog_client/model/task_error.py,sha256=9aW_ZJ0WkQjUSbpasXBtc0Wj4iu4-70Mf3jtmeiUx2k,639
326
+ yellowdog_client/model/task_error_matcher.py,sha256=idOfRZllKDlqe8Wq2GMjEaYhLLrAmd7Hai5Dr5BJMd0,291
327
+ yellowdog_client/model/task_error_type.py,sha256=3JDxDu8_f_eQdoB_Y1xuVW4N_leSoJAGn5OjcU4X3e0,701
326
328
  yellowdog_client/model/task_group.py,sha256=9hwk6KS68QpdcNDhhGv3bqaZOxuCT3J22GF5JYJ_S8E,2073
327
329
  yellowdog_client/model/task_group_status.py,sha256=7wAEOvZzq07P_0vTP0NejmDLS-MifGWO5WLlu_5OdZg,1722
328
330
  yellowdog_client/model/task_input.py,sha256=d3U32xhgHdEWtSu5uSjjsLniD9dXoNeIVsyl1BeZqlw,1975
@@ -364,7 +366,7 @@ yellowdog_client/model/worker_pool_search.py,sha256=IxUkwGcVq04-Shk-PJW-n14Nb-FC
364
366
  yellowdog_client/model/worker_pool_status.py,sha256=NEOuZuuwlAa0h16Feh76qUtaJ_t26qO_AoHFjJBVWLc,1240
365
367
  yellowdog_client/model/worker_pool_summary.py,sha256=WkdKWXlSj4K1aYvwL29wETJcpeKCv4chXx-M3SvjZfI,1447
366
368
  yellowdog_client/model/worker_pool_token.py,sha256=aHJcumKO7CiyjqpUoognxCg9SRg6AOdZh01pBIAos74,350
367
- yellowdog_client/model/worker_status.py,sha256=MmogvAs0UbA44WkuJnoMx3Pt6SdISZPjF1I48n1c_jg,1249
369
+ yellowdog_client/model/worker_status.py,sha256=s1Gowm3RNzuSCEWvcI6Pq9BWwiu2_C1ZuNSZAPnDUAM,1367
368
370
  yellowdog_client/model/worker_summary.py,sha256=PZI7Ay4i2C4UxiSKfaQpPG6t_IF0sfL4ve7uMdsiuts,819
369
371
  yellowdog_client/model/exceptions/__init__.py,sha256=JuFyrrvXegTRdsERsGLbK6ZNOIpp1kwAOdODb-G1W0s,1434
370
372
  yellowdog_client/model/exceptions/base_custom_exception.py,sha256=5WsA_nVwr8D8orn5kPjKSh9I2IJcsJcWMrpEZQUl1-4,665
@@ -460,8 +462,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
460
462
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
461
463
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
462
464
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
463
- yellowdog_sdk-9.2.1.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
464
- yellowdog_sdk-9.2.1.dist-info/METADATA,sha256=lgctmkX9IK68IUcQU7V1ijfCiWi_byUB8pvl43COVfU,3238
465
- yellowdog_sdk-9.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
466
- yellowdog_sdk-9.2.1.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
467
- yellowdog_sdk-9.2.1.dist-info/RECORD,,
465
+ yellowdog_sdk-9.2.3.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
466
+ yellowdog_sdk-9.2.3.dist-info/METADATA,sha256=a7uJcuNb5g0dUGdhwIAnA80bn1OcLR2r3-lGz0M3j0s,3238
467
+ yellowdog_sdk-9.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
468
+ yellowdog_sdk-9.2.3.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
469
+ yellowdog_sdk-9.2.3.dist-info/RECORD,,