yellowdog-sdk 9.4.0__py3-none-any.whl → 9.5.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.4.0' # YEL-13641
1
+ __version__ = '9.5.0' # YEL-13674
@@ -3,12 +3,55 @@ from __future__ import annotations
3
3
  from abc import ABC, abstractmethod
4
4
 
5
5
  from yellowdog_client.common import Closeable, SearchClient
6
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch
6
+ from yellowdog_client.model import CreateNamespaceRequest, Namespace, NamespacePolicy, NamespacePolicySearch, NamespaceSearch
7
7
 
8
8
 
9
9
  class NamespacesClient(ABC, Closeable):
10
10
  """The API interface exposed by the YellowDog Namespaces Service"""
11
11
 
12
+ @abstractmethod
13
+ def get_namespace(self, namespace_id: str) -> Namespace:
14
+ """
15
+ Gets the namespace with a matching ID.
16
+
17
+ :param namespace_id: the namespace ID
18
+ :return: the namespace
19
+ """
20
+
21
+ pass
22
+
23
+ @abstractmethod
24
+ def get_namespaces(self, search: NamespaceSearch) -> SearchClient[Namespace]:
25
+ """
26
+ Returns a search client for namespaces that match the NamespaceSearch parameter.
27
+
28
+ :param search: the search object to filter and sort results
29
+ :return: a search client for matching namespaces
30
+ """
31
+
32
+ pass
33
+
34
+ @abstractmethod
35
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
36
+ """
37
+ Creates a namespace.
38
+
39
+ :param request: the request containing the data to create the namespace
40
+ :return: the namespace ID
41
+ """
42
+
43
+ pass
44
+
45
+ @abstractmethod
46
+ def delete_namespace(self, namespace_id: str) -> None:
47
+ """
48
+ Deletes a namespace.
49
+
50
+ :param namespace_id: the ID of the namespace to delete
51
+ """
52
+
53
+ pass
54
+
12
55
  @abstractmethod
13
56
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
14
57
  """
@@ -3,13 +3,30 @@ from typing import Callable
3
3
  from .namespaces_client import NamespacesClient
4
4
  from .namespaces_service_proxy import NamespacesServiceProxy
5
5
  from yellowdog_client.common import SearchClient
6
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, Slice, SliceReference
6
+ from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, Slice, SliceReference, \
7
+ CreateNamespaceRequest, Namespace, NamespaceSearch
7
8
 
8
9
 
9
10
  class NamespacesClientImpl(NamespacesClient):
10
11
  def __init__(self, service_proxy: NamespacesServiceProxy) -> None:
11
12
  self.__service_proxy = service_proxy
12
13
 
14
+ def get_namespace(self, namespace_id: str) -> Namespace:
15
+ return self.__service_proxy.get_namespace(namespace_id)
16
+
17
+ def get_namespaces(self, search: NamespaceSearch) -> SearchClient[Namespace]:
18
+ get_next_slice_function: Callable[[SliceReference], Slice[Namespace]] = \
19
+ lambda slice_reference: self.__service_proxy.search_namespaces(search, slice_reference)
20
+
21
+ return SearchClient(get_next_slice_function)
22
+
23
+
24
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
25
+ return self.__service_proxy.create_namespace(request)
26
+
27
+ def delete_namespace(self, namespace_id: str):
28
+ self.__service_proxy.delete_namespace(namespace_id)
29
+
13
30
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
14
31
  self.__service_proxy.save_namespace_policy(namespace_policy)
15
32
 
@@ -1,11 +1,29 @@
1
1
  from yellowdog_client.common import Proxy
2
- from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, SliceReference, Slice
2
+ from yellowdog_client.common.json import Json
3
+ from yellowdog_client.model import NamespacePolicy, NamespacePolicySearch, SliceReference, Slice, \
4
+ CreateNamespaceRequest, Namespace, NamespaceSearch
3
5
 
4
6
 
5
7
  class NamespacesServiceProxy:
6
8
  def __init__(self, proxy: Proxy) -> None:
7
9
  self._proxy: Proxy = proxy.append_base_url("/namespaces/")
8
10
 
11
+ def get_namespace(self, namespace_id: str) -> Namespace:
12
+ return self._proxy.get(return_type=Namespace, url=namespace_id)
13
+
14
+ def search_namespaces(
15
+ self,
16
+ search: NamespaceSearch,
17
+ slice_reference: SliceReference
18
+ ) -> Slice[Namespace]:
19
+ return self._proxy.get(return_type=Slice[Namespace], params=self._proxy.to_params(search, slice_reference))
20
+
21
+ def create_namespace(self, request: CreateNamespaceRequest) -> str:
22
+ return self._proxy.raw_execute(method='POST', json=Json.dump(request)).text
23
+
24
+ def delete_namespace(self, namespace_id: str):
25
+ return self._proxy.delete(url=f"/{namespace_id}")
26
+
9
27
  def save_namespace_policy(self, namespace_policy: NamespacePolicy) -> None:
10
28
  return self._proxy.put(url=f"{namespace_policy.namespace}/policy", data=namespace_policy)
11
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yellowdog-sdk
3
- Version: 9.4.0
3
+ Version: 9.5.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,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=Q9jwMFM73IU0UXUbN0HN8a7jTpCGVP8iSfB2z9oV-jI,34
3
+ yellowdog_client/_version.py,sha256=KOrXGVqNLM-qQVLLWjJIn0D075G0KGTmWmvBn--LfNk,34
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
@@ -392,9 +392,9 @@ yellowdog_client/model/exceptions/session_close_exception.py,sha256=MyR8SUNioWh_
392
392
  yellowdog_client/model/exceptions/session_not_found_exception.py,sha256=2afDI5Ff00sYRJ2ZIr7ynq6DoA0xZda0_YboISc8ujU,286
393
393
  yellowdog_client/model/exceptions/unknown_exception.py,sha256=RhLAommtxskrJO14-zCyltzVtaSh9rYxFJ8byrK1GUk,261
394
394
  yellowdog_client/namespaces/__init__.py,sha256=lgPlMSE_AU6ea6Zt15q2zyLWkIiFl0CEXeNd_UI3KPY,263
395
- yellowdog_client/namespaces/namespaces_client.py,sha256=p6IJ5y-tDqm5QulyhU_jISRMP7G78Rr3W6Q_YrRY0j0,1441
396
- yellowdog_client/namespaces/namespaces_client_impl.py,sha256=5uxqz6mX0A6UvSFLi0u-3kKiyn0aZzY9G7onqQ3xkGc,1259
397
- yellowdog_client/namespaces/namespaces_service_proxy.py,sha256=6H-tdu264ZWYc3dQof9UZ-88ZZ7uxcQXqGfpPUpP35M,1006
395
+ yellowdog_client/namespaces/namespaces_client.py,sha256=9O1K0ON8sYnOdgRuSVlp1xqYAmd9qs0AxtgWHK4xB8A,2580
396
+ yellowdog_client/namespaces/namespaces_client_impl.py,sha256=1liR-XVg9EyCZTOto3OQAQxAnGkKGGFFZa5ghgEwwyE,2010
397
+ yellowdog_client/namespaces/namespaces_service_proxy.py,sha256=IYoCGc9XmWTr5YAcDt_vFI1DToSsIB6T7L7Izb2Qzuc,1781
398
398
  yellowdog_client/object_store/__init__.py,sha256=qAthNBl1jEziG7MK3o2VbLO1Rb4AUW5Q17eLW5DIlTU,272
399
399
  yellowdog_client/object_store/object_store_client.py,sha256=mhPmCXsMP5x1coiDic17KniJ5lV7Zg_5nhOSj1ZLibo,16361
400
400
  yellowdog_client/object_store/object_store_service_proxy.py,sha256=izoxh0ij9jlmkx4lmc2Sqg4Bj0nPvB14FNFwVhn8iZw,6273
@@ -468,8 +468,8 @@ yellowdog_client/usage/__init__.py,sha256=XQwRJqTdxKZa1QUTsxBEL0TqQJeQHGyPklFeqc
468
468
  yellowdog_client/usage/allowances_client.py,sha256=H6n63jXjT4OwuWJgFUXSjSmvGTZz9uspy3kj3upinaA,1337
469
469
  yellowdog_client/usage/allowances_client_impl.py,sha256=nQPnSzJKhL3WvyCn5fmiDkwE84xZryH9YvV5Z1GjU4M,2061
470
470
  yellowdog_client/usage/allowances_service_proxy.py,sha256=uO6LWnpjIzUcZTGdOxPXn7SyYX7NMRqO5KUiHUGr490,1320
471
- yellowdog_sdk-9.4.0.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
472
- yellowdog_sdk-9.4.0.dist-info/METADATA,sha256=yHh-9YXrSmoViaWUU8VFL3EQnYCIwmFGmp_GK44WPu4,3238
473
- yellowdog_sdk-9.4.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
474
- yellowdog_sdk-9.4.0.dist-info/top_level.txt,sha256=6PH16DcoqpYHhQ5A0UJOjf0tg-1rTrNC9C2CLqCMuFo,26
475
- yellowdog_sdk-9.4.0.dist-info/RECORD,,
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,,