yellowdog-sdk 9.5.0__py3-none-any.whl → 10.0.0__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.5.0' # YEL-13674
1
+ __version__ = '10.0.0' # YEL-13543
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
4
4
  from typing import List
5
5
 
6
6
  from yellowdog_client.common import Closeable, SearchClient
7
- from yellowdog_client.model import AddApplicationRequest, AddApplicationResponse, AddGroupRequest, ApiKey, Application, ApplicationSearch, Group, GroupSearch, GroupSummary, PermissionDetail, Role, RoleSearch, UpdateApplicationRequest, UpdateGroupRequest, User, UserSearch
7
+ from yellowdog_client.model import AddApplicationRequest, AddApplicationResponse, AddGroupRequest, ApiKey, Application, ApplicationSearch, Group, GroupSearch, GroupSummary, PermissionDetail, Role, RoleScope, RoleSearch, UpdateApplicationRequest, UpdateGroupRequest, User, UserSearch
8
8
 
9
9
 
10
10
  class AccountClient(ABC, Closeable):
@@ -99,7 +99,7 @@ class AccountClient(ABC, Closeable):
99
99
  pass
100
100
 
101
101
  @abstractmethod
102
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
102
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
103
103
  pass
104
104
 
105
105
  @abstractmethod
@@ -5,7 +5,7 @@ from yellowdog_client.account.account_service_proxy import AccountServiceProxy
5
5
  from yellowdog_client.common import SearchClient
6
6
  from yellowdog_client.model import User, SliceReference, UserSearch, Slice, GroupSummary, Application, \
7
7
  ApplicationSearch, UpdateApplicationRequest, AddApplicationResponse, AddApplicationRequest, ApiKey, \
8
- PermissionDetail, Role, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, RoleSearch
8
+ PermissionDetail, Role, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, RoleSearch, RoleScope
9
9
 
10
10
 
11
11
  class AccountClientImpl(AccountClient):
@@ -105,8 +105,8 @@ class AccountClientImpl(AccountClient):
105
105
  def add_application_to_group(self, group_id: str, application_id: str) -> None:
106
106
  return self.__service_proxy.add_application_to_group(group_id, application_id)
107
107
 
108
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
109
- return self.__service_proxy.add_role_to_group(group_id, role_id)
108
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
109
+ return self.__service_proxy.add_role_to_group(group_id, role_id, scope)
110
110
 
111
111
  def remove_user_from_group(self, group_id: str, user_id: str) -> None:
112
112
  return self.__service_proxy.remove_user_from_group(group_id, user_id)
@@ -4,7 +4,7 @@ from yellowdog_client.common import Proxy
4
4
  from yellowdog_client.model import UserSearch, SliceReference, Slice, GroupSummary, Application, \
5
5
  UpdateApplicationRequest, AddApplicationRequest, AddApplicationResponse, ApiKey, ApplicationSearch, \
6
6
  PermissionDetail, \
7
- Role, RoleSearch, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, User
7
+ Role, RoleSearch, Group, AddGroupRequest, UpdateGroupRequest, GroupSearch, User, RoleScope
8
8
 
9
9
 
10
10
  class AccountServiceProxy:
@@ -104,8 +104,8 @@ class AccountServiceProxy:
104
104
  def add_application_to_group(self, group_id: str, application_id: str) -> None:
105
105
  return self.proxy.put(url="groups/%s/applications/%s" % (group_id, application_id))
106
106
 
107
- def add_role_to_group(self, group_id: str, role_id: str) -> None:
108
- return self.proxy.put(url="groups/%s/roles/%s" % (group_id, role_id))
107
+ def add_role_to_group(self, group_id: str, role_id: str, scope: RoleScope) -> None:
108
+ return self.proxy.put(data=scope, url="groups/%s/roles/%s" % (group_id, role_id))
109
109
 
110
110
  def remove_user_from_group(self, group_id: str, user_id: str) -> None:
111
111
  return self.proxy.delete("groups/%s/users/%s" % (group_id, user_id))
@@ -10,7 +10,6 @@ from jsons._compatibility_impl import get_union_params, get_naked_class
10
10
  from jsons._load_impl import load
11
11
  from jsons._dump_impl import dump
12
12
  from typish import get_args
13
-
14
13
  from yellowdog_client.model import Slice
15
14
  from yellowdog_client.model.exceptions import BaseCustomException
16
15
  from yellowdog_client.model.exceptions import ErrorType
@@ -99,6 +98,7 @@ def object_deserializer(value: dict, cls: type, **kwargs) -> object:
99
98
  instance = naked_subclass.__new__(naked_subclass)
100
99
  class_name = naked_subclass.__name__
101
100
  for attr_name, attr_value in value.items():
101
+ attr_name = f"{attr_name}_" if attr_name in keywords else attr_name
102
102
  try:
103
103
  attr_type = type_hints[attr_name]
104
104
  except KeyError:
@@ -156,6 +156,12 @@ jsons.set_deserializer(slice_deserializer, Slice)
156
156
  jsons.set_deserializer(union_deserializer, (Union, Optional))
157
157
  jsons.set_deserializer(object_deserializer, object, False)
158
158
 
159
+ keywords = {'global'}
160
+
161
+
162
+ def deserialization_key_transformer(key: str) -> str:
163
+ return key[:-1] if key[:-1] in keywords else key
164
+
159
165
 
160
166
  class Json:
161
167
  @classmethod
@@ -164,7 +170,7 @@ class Json:
164
170
 
165
171
  @staticmethod
166
172
  def dump(value: object) -> object:
167
- return jsons.dump(value, strip_nulls=True, strip_privates=True, use_enum_name=True)
173
+ return jsons.dump(value, strip_nulls=True, strip_privates=True, use_enum_name=True, key_transformer=deserialization_key_transformer)
168
174
 
169
175
  @classmethod
170
176
  def loads(cls, value: str, value_class: Type[T]) -> T:
@@ -138,6 +138,8 @@ from .gcs_namespace_storage_configuration import GcsNamespaceStorageConfiguratio
138
138
  from .google_cloud_credential import GoogleCloudCredential
139
139
  from .grant_application_access_request import GrantApplicationAccessRequest
140
140
  from .grant_user_access_request import GrantUserAccessRequest
141
+ from .granted_permission_scope import GrantedPermissionScope
142
+ from .granted_permissions import GrantedPermissions
141
143
  from .group import Group
142
144
  from .group_role import GroupRole
143
145
  from .group_search import GroupSearch
@@ -186,6 +188,7 @@ from .namespace_autoscaling_capacity_response import NamespaceAutoscalingCapacit
186
188
  from .namespace_objects_response import NamespaceObjectsResponse
187
189
  from .namespace_policy import NamespacePolicy
188
190
  from .namespace_policy_search import NamespacePolicySearch
191
+ from .namespace_ref import NamespaceRef
189
192
  from .namespace_search import NamespaceSearch
190
193
  from .namespace_storage_configuration import NamespaceStorageConfiguration
191
194
  from .new_password_request import NewPasswordRequest
@@ -231,6 +234,7 @@ from .okta_account_authentication_properties import OktaAccountAuthenticationPro
231
234
  from .operating_system_licence import OperatingSystemLicence
232
235
  from .permission import Permission
233
236
  from .permission_detail import PermissionDetail
237
+ from .permission_scope import PermissionScope
234
238
  from .price import Price
235
239
  from .processor_architecture import ProcessorArchitecture
236
240
  from .provider_node_summary import ProviderNodeSummary
@@ -245,6 +249,8 @@ from .requirement_allowance import RequirementAllowance
245
249
  from .requirements_allowance import RequirementsAllowance
246
250
  from .retry_properties import RetryProperties
247
251
  from .role import Role
252
+ from .role_scope import RoleScope
253
+ from .role_scope_validator import RoleScopeValidator
248
254
  from .role_search import RoleSearch
249
255
  from .role_summary import RoleSummary
250
256
  from .run_specification import RunSpecification
@@ -458,6 +464,8 @@ __all__ = [
458
464
  "GoogleCloudCredential",
459
465
  "GrantApplicationAccessRequest",
460
466
  "GrantUserAccessRequest",
467
+ "GrantedPermissionScope",
468
+ "GrantedPermissions",
461
469
  "Group",
462
470
  "GroupRole",
463
471
  "GroupSearch",
@@ -506,6 +514,7 @@ __all__ = [
506
514
  "NamespaceObjectsResponse",
507
515
  "NamespacePolicy",
508
516
  "NamespacePolicySearch",
517
+ "NamespaceRef",
509
518
  "NamespaceSearch",
510
519
  "NamespaceStorageConfiguration",
511
520
  "NewPasswordRequest",
@@ -551,6 +560,7 @@ __all__ = [
551
560
  "OperatingSystemLicence",
552
561
  "Permission",
553
562
  "PermissionDetail",
563
+ "PermissionScope",
554
564
  "Price",
555
565
  "ProcessorArchitecture",
556
566
  "ProviderNodeSummary",
@@ -565,6 +575,8 @@ __all__ = [
565
575
  "RequirementsAllowance",
566
576
  "RetryProperties",
567
577
  "Role",
578
+ "RoleScope",
579
+ "RoleScopeValidator",
568
580
  "RoleSearch",
569
581
  "RoleSummary",
570
582
  "RunSpecification",
@@ -1,9 +1,9 @@
1
1
  from dataclasses import dataclass, field
2
2
  from datetime import datetime
3
- from typing import Optional, Set
3
+ from typing import Optional
4
4
 
5
+ from .granted_permissions import GrantedPermissions
5
6
  from .identified import Identified
6
- from .permission import Permission
7
7
 
8
8
 
9
9
  @dataclass
@@ -14,4 +14,4 @@ class AccessDelegate(Identified):
14
14
  subject: Optional[str] = None
15
15
  description: Optional[str] = None
16
16
  createdTime: Optional[datetime] = None
17
- requiredPermissions: Optional[Set[Permission]] = None
17
+ permissions: Optional[GrantedPermissions] = None
@@ -23,3 +23,4 @@ class ComputeRequirementDynamicTemplate(ComputeRequirementTemplate):
23
23
  constraints: Optional[List[AttributeConstraint]] = None
24
24
  preferences: Optional[List[AttributePreference]] = None
25
25
  sourceTraits: Optional[ComputeSourceTraitsFilter] = None
26
+ sourceNamespaces: Optional[List[str]] = None
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+ from typing import List, Optional
3
+
4
+ from .namespace_ref import NamespaceRef
5
+
6
+
7
+ @dataclass
8
+ class GrantedPermissionScope:
9
+ global_: bool = False
10
+ namespaces: Optional[List[NamespaceRef]] = None
@@ -0,0 +1,10 @@
1
+ from dataclasses import dataclass
2
+ from typing import Dict, Optional
3
+
4
+ from .granted_permission_scope import GrantedPermissionScope
5
+ from .permission import Permission
6
+
7
+
8
+ @dataclass
9
+ class GrantedPermissions:
10
+ permissions: Optional[Dict[Permission, GrantedPermissionScope]] = None
@@ -1,8 +1,10 @@
1
1
  from dataclasses import dataclass
2
2
 
3
+ from .granted_permission_scope import GrantedPermissionScope
3
4
  from .role_summary import RoleSummary
4
5
 
5
6
 
6
7
  @dataclass
7
8
  class GroupRole:
8
9
  role: RoleSummary
10
+ scope: GrantedPermissionScope
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class NamespaceRef:
6
+ id: str
7
+ namespace: str
@@ -1,55 +1,62 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from enum import Enum
4
- from typing import Set
4
+ from typing import List
5
+
6
+ from .permission_scope import PermissionScope
5
7
 
6
8
 
7
9
  class Permission(Enum):
8
- ACCOUNT_APPLICATION_READ = "ACCOUNT_APPLICATION_READ", "Read Account Applications", None
9
- ACCOUNT_APPLICATION_WRITE = "ACCOUNT_APPLICATION_WRITE", "Write Account Applications", ACCOUNT_APPLICATION_READ
10
- ACCOUNT_AUTH_PROPERTIES_READ = "ACCOUNT_AUTH_PROPERTIES_READ", "Read Account Authentication Properties", None
11
- ACCOUNT_AUTH_PROPERTIES_WRITE = "ACCOUNT_AUTH_PROPERTIES_WRITE", "Write Account Authentication Properties", ACCOUNT_AUTH_PROPERTIES_READ
12
- ACCOUNT_GROUP_READ = "ACCOUNT_GROUP_READ", "Read Account Groups", None
13
- ACCOUNT_GROUP_WRITE = "ACCOUNT_GROUP_WRITE", "Write Account Groups", ACCOUNT_GROUP_READ
14
- ACCOUNT_POLICY_READ = "ACCOUNT_POLICY_READ", "Read Account Policy", None
15
- ACCOUNT_POLICY_WRITE = "ACCOUNT_POLICY_WRITE", "Write Account Policy", ACCOUNT_POLICY_READ
16
- ACCOUNT_ROLE_READ = "ACCOUNT_ROLE_READ", "Read Account Roles", None
17
- ACCOUNT_ROLE_WRITE = "ACCOUNT_ROLE_WRITE", "Write Account Roles", ACCOUNT_ROLE_READ
18
- ACCOUNT_USER_READ = "ACCOUNT_USER_READ", "Read Account Users", None
19
- ACCOUNT_USER_WRITE = "ACCOUNT_USER_WRITE", "Write Account Users", ACCOUNT_USER_READ
20
- COMPUTE_ALLOWANCE_READ = "COMPUTE_ALLOWANCE_READ", "Read Compute Allowances", None
21
- COMPUTE_ALLOWANCE_WRITE = "COMPUTE_ALLOWANCE_WRITE", "Write Compute Allowances", COMPUTE_ALLOWANCE_READ
22
- COMPUTE_READ = "COMPUTE_READ", "Read Compute", None
23
- COMPUTE_REQUIREMENT_TEMPLATE_WRITE = "COMPUTE_REQUIREMENT_TEMPLATE_WRITE", "Write Compute Requirement Templates", COMPUTE_READ
24
- COMPUTE_REQUIREMENT_WRITE = "COMPUTE_REQUIREMENT_WRITE", "Write Compute Requirements", COMPUTE_READ
25
- COMPUTE_SOURCE_TEMPLATE_WRITE = "COMPUTE_SOURCE_TEMPLATE_WRITE", "Write Compute Source Templates", COMPUTE_READ
26
- COMPUTE_USAGE_READ = "COMPUTE_USAGE_READ", "Read Compute Usage Data", None
27
- COMPUTE_USER_ATTRIBUTE_WRITE = "COMPUTE_USER_ATTRIBUTE_WRITE", "Write Compute User Attributes", COMPUTE_READ
28
- IMAGE_READ = "IMAGE_READ", "Read Images", None
29
- IMAGE_WRITE = "IMAGE_WRITE", "Write Images", IMAGE_READ
30
- KEYRING_READ = "KEYRING_READ", "Read Keyrings", None
31
- KEYRING_WRITE = "KEYRING_WRITE", "Write Keyrings", KEYRING_READ
32
- KEYRING_ACCESS_WRITE = "KEYRING_ACCESS_WRITE", "Write Keyring Access", KEYRING_READ
33
- LOG_READ = "LOG_READ", "Read Logs", None
34
- METRICS_READ = "METRICS_READ", "Read Metrics", None
35
- METRICS_WRITE = "METRICS_WRITE", "Write Metrics", METRICS_READ
36
- NAMESPACE_READ = "NAMESPACE_READ", "Read Namespaces", None
37
- NAMESPACE_WRITE = "NAMESPACE_WRITE", "Write Namespaces", NAMESPACE_READ
38
- OBJECT_STORAGE_CONFIGURATION_READ = "OBJECT_STORAGE_CONFIGURATION_READ", "Read Object Storage Configurations", None
39
- OBJECT_STORAGE_CONFIGURATION_WRITE = "OBJECT_STORAGE_CONFIGURATION_WRITE", "Write Object Storage Configurations", OBJECT_STORAGE_CONFIGURATION_READ
40
- OBJECT_READ = "OBJECT_READ", "Read Objects", OBJECT_STORAGE_CONFIGURATION_READ
41
- OBJECT_WRITE = "OBJECT_WRITE", "Write Objects", OBJECT_READ
42
- WORK_REQUIREMENT_READ = "WORK_REQUIREMENT_READ", "Read Work Requirements", None
43
- WORK_REQUIREMENT_WRITE = "WORK_REQUIREMENT_WRITE", "Write Work Requirements", WORK_REQUIREMENT_READ
44
- WORKER_POOL_READ = "WORKER_POOL_READ", "Read Worker Pools", None
45
- WORKER_POOL_WRITE = "WORKER_POOL_WRITE", "Write Worker Pools", WORKER_POOL_READ
46
- WORKER_POOL_TOKEN_READ = "WORKER_POOL_TOKEN_READ", "Read Worker Pool Tokens", None
47
- WORKER_POOL_TOKEN_WRITE = "WORKER_POOL_TOKEN_WRITE", "Write Worker Pool Tokens", WORKER_POOL_READ
10
+ NAMESPACE_READ = "NAMESPACE_READ", "Read Namespaces", PermissionScope.NAMESPACED_OR_GLOBAL, None
11
+ COMPUTE_READ = "COMPUTE_READ", "Read Compute", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
12
+ COMPUTE_REQUIREMENT_TEMPLATE_WRITE = "COMPUTE_REQUIREMENT_TEMPLATE_WRITE", "Write Compute Requirement Templates", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
13
+ COMPUTE_REQUIREMENT_WRITE = "COMPUTE_REQUIREMENT_WRITE", "Write Compute Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
14
+ COMPUTE_SOURCE_TEMPLATE_WRITE = "COMPUTE_SOURCE_TEMPLATE_WRITE", "Write Compute Source Templates", PermissionScope.NAMESPACED_OR_GLOBAL, COMPUTE_READ
15
+ IMAGE_READ = "IMAGE_READ", "Read Images", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
16
+ IMAGE_WRITE = "IMAGE_WRITE", "Write Images", PermissionScope.NAMESPACED_OR_GLOBAL, IMAGE_READ
17
+ NAMESPACE_POLICY_READ = "NAMESPACE_POLICY_READ", "Read Namespace Policies", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
18
+ NAMESPACE_POLICY_WRITE = "NAMESPACE_POLICY_WRITE", "Write Namespace Policies", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_POLICY_READ
19
+ WORK_REQUIREMENT_READ = "WORK_REQUIREMENT_READ", "Read Work Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
20
+ WORK_REQUIREMENT_WRITE = "WORK_REQUIREMENT_WRITE", "Write Work Requirements", PermissionScope.NAMESPACED_OR_GLOBAL, WORK_REQUIREMENT_READ
21
+ WORKER_POOL_READ = "WORKER_POOL_READ", "Read Worker Pools", PermissionScope.NAMESPACED_OR_GLOBAL, NAMESPACE_READ
22
+ WORKER_POOL_WRITE = "WORKER_POOL_WRITE", "Write Worker Pools", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
23
+ WORKER_POOL_TOKEN_READ = "WORKER_POOL_TOKEN_READ", "Read Worker Pool Tokens", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
24
+ WORKER_POOL_TOKEN_WRITE = "WORKER_POOL_TOKEN_WRITE", "Write Worker Pool Tokens", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_TOKEN_READ
25
+ WORKER_POOL_WORKER_WRITE = "WORKER_POOL_WORKER_WRITE", "Write Worker Pool Workers", PermissionScope.NAMESPACED_OR_GLOBAL, WORKER_POOL_READ
26
+ ACCOUNT_APPLICATION_READ = "ACCOUNT_APPLICATION_READ", "Read Account Applications", PermissionScope.GLOBAL_ONLY, None
27
+ ACCOUNT_APPLICATION_WRITE = "ACCOUNT_APPLICATION_WRITE", "Write Account Applications", PermissionScope.GLOBAL_ONLY, ACCOUNT_APPLICATION_READ
28
+ ACCOUNT_AUTH_PROPERTIES_READ = "ACCOUNT_AUTH_PROPERTIES_READ", "Read Account Authentication Properties", PermissionScope.GLOBAL_ONLY, None
29
+ ACCOUNT_AUTH_PROPERTIES_WRITE = "ACCOUNT_AUTH_PROPERTIES_WRITE", "Write Account Authentication Properties", PermissionScope.GLOBAL_ONLY, ACCOUNT_AUTH_PROPERTIES_READ
30
+ ACCOUNT_GROUP_READ = "ACCOUNT_GROUP_READ", "Read Account Groups", PermissionScope.GLOBAL_ONLY, None
31
+ ACCOUNT_GROUP_WRITE = "ACCOUNT_GROUP_WRITE", "Write Account Groups", PermissionScope.GLOBAL_ONLY, ACCOUNT_GROUP_READ
32
+ ACCOUNT_POLICY_READ = "ACCOUNT_POLICY_READ", "Read Account Policy", PermissionScope.GLOBAL_ONLY, None
33
+ ACCOUNT_POLICY_WRITE = "ACCOUNT_POLICY_WRITE", "Write Account Policy", PermissionScope.GLOBAL_ONLY, ACCOUNT_POLICY_READ
34
+ ACCOUNT_ROLE_READ = "ACCOUNT_ROLE_READ", "Read Account Roles", PermissionScope.GLOBAL_ONLY, None
35
+ ACCOUNT_ROLE_WRITE = "ACCOUNT_ROLE_WRITE", "Write Account Roles", PermissionScope.GLOBAL_ONLY, ACCOUNT_ROLE_READ
36
+ ACCOUNT_USER_READ = "ACCOUNT_USER_READ", "Read Account Users", PermissionScope.GLOBAL_ONLY, None
37
+ ACCOUNT_USER_WRITE = "ACCOUNT_USER_WRITE", "Write Account Users", PermissionScope.GLOBAL_ONLY, ACCOUNT_USER_READ
38
+ ACCOUNT_NAMESPACE_WRITE = "ACCOUNT_NAMESPACE_WRITE", "Write Account Namespaces", PermissionScope.GLOBAL_ONLY, NAMESPACE_READ
39
+ COMPUTE_ALLOWANCE_READ = "COMPUTE_ALLOWANCE_READ", "Read Compute Allowances", PermissionScope.GLOBAL_ONLY, None
40
+ COMPUTE_ALLOWANCE_WRITE = "COMPUTE_ALLOWANCE_WRITE", "Write Compute Allowances", PermissionScope.GLOBAL_ONLY, COMPUTE_ALLOWANCE_READ
41
+ COMPUTE_USER_ATTRIBUTE_READ = "COMPUTE_USER_ATTRIBUTE_READ", "Read Compute User Attributes", PermissionScope.GLOBAL_ONLY, None
42
+ COMPUTE_USER_ATTRIBUTE_WRITE = "COMPUTE_USER_ATTRIBUTE_WRITE", "Write Compute User Attributes", PermissionScope.GLOBAL_ONLY, COMPUTE_USER_ATTRIBUTE_READ
43
+ KEYRING_READ = "KEYRING_READ", "Read Keyrings", PermissionScope.GLOBAL_ONLY, None
44
+ KEYRING_WRITE = "KEYRING_WRITE", "Write Keyrings", PermissionScope.GLOBAL_ONLY, KEYRING_READ
45
+ KEYRING_ACCESS_WRITE = "KEYRING_ACCESS_WRITE", "Write Keyring Access", PermissionScope.GLOBAL_ONLY, KEYRING_READ
46
+ OBJECT_STORAGE_CONFIGURATION_READ = "OBJECT_STORAGE_CONFIGURATION_READ", "Read Object Storage Configurations", PermissionScope.GLOBAL_ONLY, None
47
+ OBJECT_STORAGE_CONFIGURATION_WRITE = "OBJECT_STORAGE_CONFIGURATION_WRITE", "Write Object Storage Configurations", PermissionScope.GLOBAL_ONLY, OBJECT_STORAGE_CONFIGURATION_READ
48
+ OBJECT_READ = "OBJECT_READ", "Read Objects", PermissionScope.GLOBAL_ONLY, OBJECT_STORAGE_CONFIGURATION_READ
49
+ OBJECT_WRITE = "OBJECT_WRITE", "Write Objects", PermissionScope.GLOBAL_ONLY, OBJECT_READ
50
+ METRICS_READ = "METRICS_READ", "Read Metrics", PermissionScope.GLOBAL_ONLY, None
51
+ METRICS_WRITE = "METRICS_WRITE", "Write Metrics", PermissionScope.GLOBAL_ONLY, METRICS_READ
52
+ LOG_READ = "LOG_READ", "Read Logs", PermissionScope.GLOBAL_ONLY, None
53
+ COMPUTE_USAGE_READ = "COMPUTE_USAGE_READ", "Read Compute Usage Data", PermissionScope.GLOBAL_ONLY, None
48
54
 
49
- def __new__(cls, value, title: str, includes: Set[Permission]):
55
+ def __new__(cls, value, title: str, scope: PermissionScope, includes: List[Permission]):
50
56
  obj = object.__new__(cls)
51
57
  obj._value_ = value
52
58
  obj.title = title
59
+ obj.scope = scope
53
60
  obj.includes = includes
54
61
  return obj
55
62
 
@@ -1,9 +1,12 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Optional, Set
3
3
 
4
+ from .permission_scope import PermissionScope
5
+
4
6
 
5
7
  @dataclass
6
8
  class PermissionDetail:
7
9
  name: Optional[str] = None
8
10
  title: Optional[str] = None
9
11
  includes: Optional[Set[str]] = None
12
+ scope: Optional[PermissionScope] = None
@@ -0,0 +1,9 @@
1
+ from enum import Enum
2
+
3
+
4
+ class PermissionScope(Enum):
5
+ GLOBAL_ONLY = "GLOBAL_ONLY"
6
+ NAMESPACED_OR_GLOBAL = "NAMESPACED_OR_GLOBAL"
7
+
8
+ def __str__(self) -> str:
9
+ return self.name
@@ -1,5 +1,5 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import Optional, Set
2
+ from typing import List, Optional
3
3
 
4
4
  from .identified import Identified
5
5
  from .permission import Permission
@@ -9,5 +9,5 @@ from .permission import Permission
9
9
  class Role(Identified):
10
10
  id: Optional[str] = field(default=None, init=False)
11
11
  name: str
12
- permissions: Set[Permission]
12
+ permissions: List[Permission]
13
13
  description: Optional[str] = None
@@ -0,0 +1,8 @@
1
+ from dataclasses import dataclass
2
+ from typing import Optional, Set
3
+
4
+
5
+ @dataclass
6
+ class RoleScope:
7
+ global_: bool = False
8
+ namespaces: Optional[Set[str]] = None
@@ -0,0 +1,6 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class RoleScopeValidator:
6
+ pass
@@ -14,4 +14,6 @@ class UserPortalContext:
14
14
  email: Optional[str] = None
15
15
  eulaAccepted: bool = False
16
16
  passwordSet: bool = False
17
+ allNamespacesReadable: bool = False
18
+ readableNamespaces: Optional[List[str]] = None
17
19
  features: Optional[List[Feature]] = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-sdk
3
- Version: 9.5.0
3
+ Version: 10.0.0
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,12 +1,12 @@
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=KOrXGVqNLM-qQVLLWjJIn0D075G0KGTmWmvBn--LfNk,34
3
+ yellowdog_client/_version.py,sha256=LEWciWA2eLPWbiDWzmZDmkbfJCnMvv12RcvFQGcgjwk,35
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
7
- yellowdog_client/account/account_client.py,sha256=TRuWPcY4pyk78WXiLU_GOLTSHDhQcpppAGmzFlIPEXw,3398
8
- yellowdog_client/account/account_client_impl.py,sha256=DUtybxZJpWkS8iyzidJ-veYb9V0iNmEKzB47TcrzzIc,6021
9
- yellowdog_client/account/account_service_proxy.py,sha256=fO1XImrdEhY_uxSQWR8Y7T7z7TQkyfne-RESWy3CuC0,5396
7
+ yellowdog_client/account/account_client.py,sha256=VhF22v5kRZ1OjWc9bwG8Ra4bWxMgKxOD6Yf3eQVEv70,3427
8
+ yellowdog_client/account/account_client_impl.py,sha256=AK49lLrB0uJetJdyQCP3mfPRhwTdRMc_ZlB6Fb_5Bcc,6057
9
+ yellowdog_client/account/account_service_proxy.py,sha256=BfJqnKKBJNCjt__LPSN0ZvPNnOViTi0gvzRzulIwwdc,5437
10
10
  yellowdog_client/account/keyring_client.py,sha256=IFogh3LNNtL0cSbvbaEuhJ41UhtJbItyxm0AEnAaFMk,1125
11
11
  yellowdog_client/account/keyring_client_impl.py,sha256=s_IltFtozR7lYdR9XNEZVj885pgJ0DoInv0B24GtblI,1665
12
12
  yellowdog_client/account/keyring_service_proxy.py,sha256=8oK6lK3FxHOIbq--qcKSAd5bqkPGMN023CrX_Q8RKeI,1220
@@ -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=xAc_LukSrQ7kM73iQWa8q6HuU3KbFy8uR9otHvyaTto,6345
31
+ yellowdog_client/common/json/__init__.py,sha256=Ki_aSlal5RRfCLP3i-05n9y-CQVhlg5XY2zyKUD6_H8,6601
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,8 +53,8 @@ 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=fyaODrUKYeKsX0-ZBnq1-gBNMgRFjqzYmrHjl0QJ8Oc,26403
57
- yellowdog_client/model/access_delegate.py,sha256=gZYX7Hqw_eBzBIHzbxyZfrhko0xZIsPCsf4gSzFalwc,568
56
+ yellowdog_client/model/__init__.py,sha256=2SX_I3myr1EI3qxiMc5KEuHtI9JvJ9n4QzSC51gcwk0,26831
57
+ yellowdog_client/model/access_delegate.py,sha256=jIW5P9jWG0LUirmci-rnHW_Lytv7dfKRJjAKwaLwvrU,575
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
60
60
  yellowdog_client/model/account_authentication_properties.py,sha256=PAfH0b_u16tDabnmt9QqDratjzQCLdAcmuSM6WD0CxI,421
@@ -132,7 +132,7 @@ yellowdog_client/model/cloud_provider.py,sha256=OXQJco__ZJk-a9lr13BB54AmiTdg64ot
132
132
  yellowdog_client/model/compute_namespace_filter.py,sha256=ZDq9TrtAtjoW9io8eL2Oe9e6EaQ1SgM4hsHfYu_vDXw,256
133
133
  yellowdog_client/model/compute_provision_strategy.py,sha256=AAhCn3zehsvJH9SRr5yJOLtsl_hkhgiD0PRS7MDeQJM,388
134
134
  yellowdog_client/model/compute_requirement.py,sha256=j3KLMJF6Fi6RoNHvKyV_wHUAjgJAnYWFk2M6ijqMPFI,2937
135
- yellowdog_client/model/compute_requirement_dynamic_template.py,sha256=qFJPDREt5H39i74Wi4piSKVEEbDXwQI17bvNBY1Y2TA,1073
135
+ yellowdog_client/model/compute_requirement_dynamic_template.py,sha256=tu7t-etOkwZehBGJRVA3jSnqY5ADp0hOP_hCkCQ3-HU,1122
136
136
  yellowdog_client/model/compute_requirement_dynamic_template_test_result.py,sha256=8n0F2rY5_KwBy_09T3txyRNQDpXuk1GU6Qua9fnIy5c,623
137
137
  yellowdog_client/model/compute_requirement_search.py,sha256=0Eb9I_9N141FscOT9kUQSwj4X1wplmZsdAOGorUU9iA,553
138
138
  yellowdog_client/model/compute_requirement_static_template.py,sha256=mBlu2CxRte4kDn55_OKd4nIbc1F9XbV_4O3Xalkjg3Y,715
@@ -194,8 +194,10 @@ yellowdog_client/model/gcs_namespace_storage_configuration.py,sha256=EqOV-0coFLg
194
194
  yellowdog_client/model/google_cloud_credential.py,sha256=07zKLvBRwYQOUqIQXRaTDJhOJ6ktvGw8dCF0LpXvtMI,408
195
195
  yellowdog_client/model/grant_application_access_request.py,sha256=d4FFwXw1rPSKBuoHhjrEcUV1rHOi35ZuRCV9HQ3LqFg,143
196
196
  yellowdog_client/model/grant_user_access_request.py,sha256=p-z4aMPVuAcJMs-rkK25ZkgcZ4lxyklhazfJ2v2o7bI,99
197
+ yellowdog_client/model/granted_permission_scope.py,sha256=ISUvN4_Pq6Wd_s5FXvFqKWWhpPRrPlvWVaTQgfn4oOE,230
198
+ yellowdog_client/model/granted_permissions.py,sha256=b-hS_i_Y67zFjamYv4mxqJN1X6sM6F8uYrOBmWF8aWs,279
197
199
  yellowdog_client/model/group.py,sha256=3x1XSB7jYo5mgJvTICAkJVcRSd3GDbHRWfzQkRIj7N0,364
198
- yellowdog_client/model/group_role.py,sha256=KL7e6iasV-YIlr95zIkZWswGoRbOKukYAoKd4QGxyLs,125
200
+ yellowdog_client/model/group_role.py,sha256=x3uqdr7hlrRqr9b7w9Di2-YRoeuLMyzgu1rUg6JzVog,220
199
201
  yellowdog_client/model/group_search.py,sha256=KHr1_5AQQC39LZz503r_mf5i0BKB652hUnM5xbtlV3I,254
200
202
  yellowdog_client/model/group_summary.py,sha256=QQgyJ6fqfNnBsFJEjAoGajQxZ1fKIcP8KmM1VR2CcbA,270
201
203
  yellowdog_client/model/identified.py,sha256=bnH2hghJLlDBOJKKSozqmc5QRzQGDwFL2dlmkdL9zJA,182
@@ -242,6 +244,7 @@ yellowdog_client/model/namespace_autoscaling_capacity_response.py,sha256=p1Z0OUY
242
244
  yellowdog_client/model/namespace_objects_response.py,sha256=icPFUDS5AaTGd0eJK1uRKt4cBHNE-TDFQVRIuH_ykh4,189
243
245
  yellowdog_client/model/namespace_policy.py,sha256=90j_9G5xjMRLzdfjq3BeDOyxOiCECrRRvVoRkx2CEAU,163
244
246
  yellowdog_client/model/namespace_policy_search.py,sha256=6RFeLBTccVMKzINijN3tuXEYulHPYkdb2-JSXRZOE2A,318
247
+ yellowdog_client/model/namespace_ref.py,sha256=4JDCK7DHNyx1b7b2kgu-QU6lUxvPQhEkaiPQz_qbSsI,98
245
248
  yellowdog_client/model/namespace_search.py,sha256=aMv44U_Op74dItLv5q1YwMqQF_IKd5S7YWFogAbSWGY,349
246
249
  yellowdog_client/model/namespace_storage_configuration.py,sha256=6JSDmRbrsWhJqOeqz3skdR8t2hlP40kvPoW0CV4hYbc,139
247
250
  yellowdog_client/model/new_password_request.py,sha256=7zJkK_3GJde6QQidaxFaj49DKIQg52FTJrbmgdfTxrE,91
@@ -285,9 +288,9 @@ yellowdog_client/model/oci_instances_compute_source.py,sha256=p94ErZj4SKyWjs19Ne
285
288
  yellowdog_client/model/oci_namespace_storage_configuration.py,sha256=YsbDhzC_FT1rQMeHEuYFpfZJSuiQKOwdGs72ksdF69g,408
286
289
  yellowdog_client/model/okta_account_authentication_properties.py,sha256=geKiNqQfYaW__U10FjNeNS83Ro54ZdBxo15qj0yWqyw,328
287
290
  yellowdog_client/model/operating_system_licence.py,sha256=nYL3U4d8pE1qtQlBrBPxJx7fUq6FWMAj--9lbya-Srs,347
288
- yellowdog_client/model/password_state.py,sha256=RULlqm2R_5neOhz3I0HAt72geLgxb4jFabg06ba4dKM,163
289
- yellowdog_client/model/permission.py,sha256=n03FFYUzdltQnKrlZ-x8raE3OPfWtqT30tcdUKEOqPA,3868
290
- yellowdog_client/model/permission_detail.py,sha256=ukTbqQgmU782PZJ7i0H2KAojgmRG4flzwR2ywZICOOQ,207
291
+ yellowdog_client/model/permission.py,sha256=IctnnmKiIzd846ZQNl2UTVkhRcfDPHjhR0pcPOehYkI,5891
292
+ yellowdog_client/model/permission_detail.py,sha256=5X8bDfPJCKler68wyRAIcLkkAvhu_899CV7Xa3DfJ50,298
293
+ yellowdog_client/model/permission_scope.py,sha256=PoRpCEQ233Xqgyf55JJNXtghQeefVhX47uPpGG8GmMg,191
291
294
  yellowdog_client/model/price.py,sha256=kPZw5VGPg5vKRXL5brX8eZrH_GePvlBhdfMsm5fF6Dc,194
292
295
  yellowdog_client/model/processor_architecture.py,sha256=hkbyplz2R5SeVtINaB3CcU86yR64elm5qi9W48LHVms,157
293
296
  yellowdog_client/model/provider_node_summary.py,sha256=maYsTKxTR7jNjZDr_BNs23rV91k_WL44Q3BVXGdKFSk,307
@@ -301,7 +304,9 @@ yellowdog_client/model/region_search.py,sha256=mr61SruzGuJj02aI6gHE6cuXUUYwN7TEF
301
304
  yellowdog_client/model/requirement_allowance.py,sha256=ovCvZlKFeosV3kNxtJyGD4W7NdKviPSSvuunHjEWs3E,1052
302
305
  yellowdog_client/model/requirements_allowance.py,sha256=qp6MVWChl_RzrzslVrf2bOfUoSNsA3I4jlM0DLnlnJk,1197
303
306
  yellowdog_client/model/retry_properties.py,sha256=cccJRb-r1PkUixb-V26GIGf1iOXBnnhl1HGLy_Yr-Q8,559
304
- yellowdog_client/model/role.py,sha256=WRnnlJAJzweCiBbivs9-7aHgPR72rHY9z8zaZhOs1AA,323
307
+ yellowdog_client/model/role.py,sha256=EK87THjFL4wYnPlFcV2ind7motMefsDm9aAL9B2PrMI,325
308
+ yellowdog_client/model/role_scope.py,sha256=381xdwSarxxOKR8SkQzTKL6DZk8fOa5whVk3VSon_TA,165
309
+ yellowdog_client/model/role_scope_validator.py,sha256=2u66BxCWJNX3k4DEUm5ixOtoOFupT2d7qsxi9U5k_ow,82
305
310
  yellowdog_client/model/role_search.py,sha256=SL8rngS-BWoqaZ4WtwiScS12Y7JOpfG-itbpPk7qxBc,332
306
311
  yellowdog_client/model/role_summary.py,sha256=fkyZ_pLapNbQM67bSgX60kt20WN7hYCWA0j-1zwzIPc,202
307
312
  yellowdog_client/model/run_specification.py,sha256=btk53yhHWKvTXxhbzTDS0NjXBf25fqjxPwkc303I15M,2711
@@ -353,14 +358,13 @@ yellowdog_client/model/update_user_request.py,sha256=RpJRi6efqrX1ZE6pRLRC5J6fcNy
353
358
  yellowdog_client/model/usage_type.py,sha256=vZKtclWVaGLeiHS-CYeDRAIj4hAt_gM-JyXzk8C484w,340
354
359
  yellowdog_client/model/user.py,sha256=sS16xGlDC3BsFeCfWRhYUv9Wp3Do8unZMT_VLr1MEd8,253
355
360
  yellowdog_client/model/user_login_request.py,sha256=dkDB05LDmX17eglFQu1LMD6LodI9t21OkUw8L_v-K-U,128
356
- yellowdog_client/model/user_portal_context.py,sha256=ad0GuMXA9hKobFXf4in91xcXkiPUtgq2d0RQJytCPIc,443
361
+ yellowdog_client/model/user_portal_context.py,sha256=VDkkSm1FpE6_IT0tDvYUy1RYYayg0zsp4B_czOoQ3bw,534
357
362
  yellowdog_client/model/user_search.py,sha256=XHEx0_yIqZnvi5A0zgvAnEbZ3oBASjqcWgM9GroVZn0,285
358
363
  yellowdog_client/model/waterfall_provision_strategy.py,sha256=1mAIACbWcVrsy3Bjulgh3TaPx83WoqRM443-jQ9FgaQ,727
359
364
  yellowdog_client/model/work_requirement.py,sha256=4-kqhjS33HEjf62Z_GjcgVxHZ4Xa5c54TR1DIDgYPuY,1714
360
365
  yellowdog_client/model/work_requirement_dashboard_summary.py,sha256=BeiBs92lS1InDuYc4yt5uuWKhoNqlfdXkk3PmyinIuc,273
361
366
  yellowdog_client/model/work_requirement_search.py,sha256=xQ6U7v7O0udd2LB79DjLzX4DqpuifIwzip7Uv17jU7Y,621
362
367
  yellowdog_client/model/work_requirement_status.py,sha256=w_XCB-SDBJQjHnkM28UivdA53MVaAlDk0PzUcZyZYmk,1301
363
- yellowdog_client/model/work_requirement_status_count.py,sha256=o1fH1l4fVzelxLAMj2fWJTVHe-9qYeIysGlVlmclsr8,265
364
368
  yellowdog_client/model/work_requirement_summary.py,sha256=jEvsqI6IBykpP5_LAyoTiS5elHXfaQJ2Zj1FOwxQtMU,1374
365
369
  yellowdog_client/model/worker.py,sha256=KqUNIYwy9F-R4eY3Vk2JkZIyhERE-2CxmQe-6JgkI5Q,964
366
370
  yellowdog_client/model/worker_action.py,sha256=58HCgRGrOVIsz3aKPdwGrY51w5LQQwFlVPKBQ6808Wg,520
@@ -468,8 +472,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
468
472
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
469
473
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
470
474
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
471
- yellowdog_sdk-9.5.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
472
- yellowdog_sdk-9.5.0.dist-info/METADATA,sha256=KjIaWiwVtFqySGS_IESaGX2yI-GrOmyqCgBaK7f8AH0,3238
473
- yellowdog_sdk-9.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
474
- yellowdog_sdk-9.5.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
475
- yellowdog_sdk-9.5.0.dist-info/RECORD,,
475
+ yellowdog_sdk-10.0.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
476
+ yellowdog_sdk-10.0.0.dist-info/METADATA,sha256=e_0VtLI1_ngQEN2oiaWM7Eq7Ws--V2RNDy-F2P99I5k,3239
477
+ yellowdog_sdk-10.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
478
+ yellowdog_sdk-10.0.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
479
+ yellowdog_sdk-10.0.0.dist-info/RECORD,,
@@ -1,9 +0,0 @@
1
- from enum import Enum
2
-
3
-
4
- class PasswordState(Enum):
5
- USER_PROVIDED = "USER_PROVIDED"
6
- UNSET = "UNSET"
7
-
8
- def __str__(self) -> str:
9
- return self.name
@@ -1,11 +0,0 @@
1
- from dataclasses import dataclass
2
- from typing import Optional
3
-
4
- from .work_requirement_status import WorkRequirementStatus
5
-
6
-
7
- @dataclass
8
- class WorkRequirementStatusCount:
9
- errored: bool = False
10
- status: Optional[WorkRequirementStatus] = None
11
- count: int = 0