dtlpy 1.108.7__py3-none-any.whl → 1.109.19__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.
Files changed (36) hide show
  1. dtlpy/__init__.py +1 -7
  2. dtlpy/__version__.py +1 -1
  3. dtlpy/entities/__init__.py +3 -3
  4. dtlpy/entities/annotation.py +26 -57
  5. dtlpy/entities/annotation_definitions/base_annotation_definition.py +6 -14
  6. dtlpy/entities/command.py +10 -7
  7. dtlpy/entities/compute.py +40 -91
  8. dtlpy/entities/dataset.py +29 -14
  9. dtlpy/entities/dpk.py +1 -0
  10. dtlpy/entities/filters.py +3 -1
  11. dtlpy/entities/item.py +7 -14
  12. dtlpy/entities/node.py +0 -12
  13. dtlpy/entities/service.py +0 -9
  14. dtlpy/entities/service_driver.py +118 -0
  15. dtlpy/entities/trigger.py +1 -1
  16. dtlpy/new_instance.py +1 -1
  17. dtlpy/repositories/__init__.py +2 -1
  18. dtlpy/repositories/collections.py +86 -34
  19. dtlpy/repositories/commands.py +14 -4
  20. dtlpy/repositories/computes.py +160 -123
  21. dtlpy/repositories/datasets.py +20 -9
  22. dtlpy/repositories/downloader.py +20 -8
  23. dtlpy/repositories/dpks.py +26 -1
  24. dtlpy/repositories/items.py +5 -2
  25. dtlpy/repositories/service_drivers.py +213 -0
  26. dtlpy/repositories/services.py +6 -0
  27. dtlpy-1.109.19.dist-info/METADATA +172 -0
  28. {dtlpy-1.108.7.dist-info → dtlpy-1.109.19.dist-info}/RECORD +35 -33
  29. dtlpy-1.108.7.dist-info/METADATA +0 -82
  30. {dtlpy-1.108.7.data → dtlpy-1.109.19.data}/scripts/dlp +0 -0
  31. {dtlpy-1.108.7.data → dtlpy-1.109.19.data}/scripts/dlp.bat +0 -0
  32. {dtlpy-1.108.7.data → dtlpy-1.109.19.data}/scripts/dlp.py +0 -0
  33. {dtlpy-1.108.7.dist-info → dtlpy-1.109.19.dist-info}/LICENSE +0 -0
  34. {dtlpy-1.108.7.dist-info → dtlpy-1.109.19.dist-info}/WHEEL +0 -0
  35. {dtlpy-1.108.7.dist-info → dtlpy-1.109.19.dist-info}/entry_points.txt +0 -0
  36. {dtlpy-1.108.7.dist-info → dtlpy-1.109.19.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,213 @@
1
+ from dtlpy import miscellaneous
2
+
3
+ from ..services.api_client import ApiClient
4
+ from .. import exceptions, entities
5
+ import logging
6
+
7
+ logger = logging.getLogger(name='dtlpy')
8
+
9
+ class ServiceDrivers:
10
+
11
+ def __init__(self, client_api: ApiClient):
12
+ self._client_api = client_api
13
+ self._base_url = '/serviceDrivers'
14
+
15
+ def create(
16
+ self,
17
+ name: str,
18
+ compute_id: str,
19
+ context: entities.ComputeContext,
20
+ namespace: str = None
21
+ ):
22
+ """
23
+ Create a new service driver
24
+
25
+ :param name: Service driver name
26
+ :param compute_id: Compute ID
27
+ :param context: Compute context
28
+ :param namespace: Namespace
29
+ :return: Service driver
30
+
31
+ """
32
+
33
+ payload = {
34
+ 'name': name,
35
+ 'computeId': compute_id,
36
+ 'context': context.to_json()
37
+ }
38
+ if namespace is not None:
39
+ payload['namespace'] = namespace
40
+
41
+ # request
42
+ success, response = self._client_api.gen_request(
43
+ req_type='post',
44
+ path=self._base_url,
45
+ json_req=payload
46
+ )
47
+
48
+ if not success:
49
+ raise exceptions.PlatformException(response)
50
+
51
+ service_driver = entities.ServiceDriver.from_json(
52
+ _json=response.json(),
53
+ client_api=self._client_api
54
+ )
55
+
56
+ return service_driver
57
+
58
+ def get(self, service_driver_id: str):
59
+ """
60
+ Get a service driver
61
+
62
+ :param service_driver_id: Service driver ID
63
+ :return: Service driver
64
+ """
65
+
66
+ # request
67
+ success, response = self._client_api.gen_request(
68
+ req_type='get',
69
+ path=self._base_url + '/{}'.format(service_driver_id)
70
+ )
71
+
72
+ if not success:
73
+ raise exceptions.PlatformException(response)
74
+
75
+ service_driver = entities.ServiceDriver.from_json(
76
+ _json=response.json(),
77
+ client_api=self._client_api
78
+ )
79
+
80
+ return service_driver
81
+
82
+ def delete(self, service_driver_id: str):
83
+ """
84
+ Delete a service driver
85
+
86
+ :param service_driver_id: Service driver ID
87
+ """
88
+
89
+ # request
90
+ success, response = self._client_api.gen_request(
91
+ req_type='delete',
92
+ path=self._base_url + '/{}'.format(service_driver_id)
93
+ )
94
+
95
+ if not success:
96
+ raise exceptions.PlatformException(response)
97
+
98
+ return True
99
+
100
+ def set_default(self, service_driver_id: str, org_id: str, update_existing_services=False):
101
+ """
102
+ Set a service driver as default
103
+
104
+ :param service_driver_id: Compute name
105
+ :param org_id: Organization ID
106
+ :param update_existing_services: Update existing services
107
+
108
+ :return: Service driver
109
+ """
110
+
111
+ # request
112
+ success, response = self._client_api.gen_request(
113
+ req_type='post',
114
+ path=self._base_url + '/default',
115
+ json_req={
116
+ 'organizationId': org_id,
117
+ 'updateExistingServices': update_existing_services,
118
+ 'driverName': service_driver_id
119
+ }
120
+ )
121
+
122
+ if not success:
123
+ raise exceptions.PlatformException(response)
124
+
125
+ service_driver = entities.ServiceDriver.from_json(
126
+ _json=response.json(),
127
+ client_api=self._client_api
128
+ )
129
+
130
+ return service_driver
131
+
132
+ def update(self, service_driver: entities.ServiceDriver):
133
+ """
134
+ Update a service driver
135
+
136
+ :param dtlpy.entities.service_driver.ServiceDriver service_driver: updated service driver object
137
+ :return: Service driver entity
138
+ :rtype: dtlpy.entities.service_driver.ServiceDriver
139
+ """
140
+
141
+ # request
142
+ success, response = self._client_api.gen_request(
143
+ req_type='patch',
144
+ path=self._base_url + '/{}'.format(service_driver.id),
145
+ json_req=service_driver.to_json()
146
+ )
147
+
148
+ if not success:
149
+ raise exceptions.PlatformException(response)
150
+
151
+ service_driver = entities.ServiceDriver.from_json(
152
+ _json=response.json(),
153
+ client_api=self._client_api
154
+ )
155
+
156
+ return service_driver
157
+
158
+ def _list(self, filters: entities.Filters):
159
+ url = self._base_url + '/query'
160
+ success, response = self._client_api.gen_request(req_type='POST',
161
+ path=url,
162
+ json_req=filters.prepare())
163
+ if not success:
164
+ raise exceptions.PlatformException(response)
165
+
166
+ return response.json()
167
+
168
+ def _build_entities_from_response(self, response_items) -> miscellaneous.List[entities.ServiceDriver]:
169
+ pool = self._client_api.thread_pools(pool_name='entity.create')
170
+ jobs = [None for _ in range(len(response_items))]
171
+ for i_item, item in enumerate(response_items):
172
+ jobs[i_item] = pool.submit(entities.ServiceDriver._protected_from_json,
173
+ **{'client_api': self._client_api,
174
+ '_json': item})
175
+ results = [j.result() for j in jobs]
176
+ _ = [logger.warning(r[1]) for r in results if r[0] is False]
177
+ items = miscellaneous.List([r[1] for r in results if r[0] is True])
178
+ return items
179
+
180
+ def list(self, filters: entities.Filters = None) -> entities.PagedEntities:
181
+ """
182
+ List all services drivers
183
+
184
+ :param dtlpy.entities.filters.Filters filters: Filters entity or a dictionary containing filters parameters
185
+ :return: Paged entity
186
+ :rtype: dtlpy.entities.paged_entities.PagedEntities
187
+
188
+ **Example**:
189
+
190
+ .. code-block:: python
191
+
192
+ services = dl.service_drivers.list()
193
+ """
194
+ # default filters
195
+ if filters is None:
196
+ filters = entities.Filters(resource=entities.FiltersResource.SERVICE_DRIVER)
197
+
198
+ if filters.resource != entities.FiltersResource.SERVICE_DRIVER:
199
+ raise exceptions.PlatformException(
200
+ error='400',
201
+ message='Filters resource must to be FiltersResource.SERVICE_DRIVER. Got: {!r}'.format(
202
+ filters.resource))
203
+
204
+ if not isinstance(filters, entities.Filters):
205
+ raise exceptions.PlatformException('400', 'Unknown filters type')
206
+
207
+ paged = entities.PagedEntities(items_repository=self,
208
+ filters=filters,
209
+ page_offset=filters.page,
210
+ page_size=filters.page_size,
211
+ client_api=self._client_api)
212
+ paged.get_page()
213
+ return paged
@@ -606,6 +606,7 @@ class Services:
606
606
  max_attempts: int = None,
607
607
  secrets=None,
608
608
  integrations=None,
609
+ active: bool = True,
609
610
  **kwargs
610
611
  ) -> entities.Service:
611
612
  """
@@ -633,6 +634,7 @@ class Services:
633
634
  :param bool force: optional - terminate old replicas immediately
634
635
  :param list secrets: list of the integrations ids
635
636
  :param list integrations: list of the integrations
637
+ :param bool active: optional - if true, service will be active
636
638
  :param kwargs:
637
639
  :return: Service object
638
640
  :rtype: dtlpy.entities.service.Service
@@ -686,6 +688,7 @@ class Services:
686
688
  'versions': agent_versions,
687
689
  'packageRevision': revision if revision is not None else package.version,
688
690
  'driverId': driver_id,
691
+ 'active': active
689
692
  }
690
693
 
691
694
  if secrets is not None:
@@ -1183,6 +1186,7 @@ class Services:
1183
1186
  force: bool = False,
1184
1187
  secrets: list = None,
1185
1188
  integrations: list = None,
1189
+ active: bool = True,
1186
1190
  **kwargs) -> entities.Service:
1187
1191
  """
1188
1192
  Deploy service.
@@ -1212,6 +1216,7 @@ class Services:
1212
1216
  :param bool force: optional - if true, terminate old replicas immediately
1213
1217
  :param list secrets: list of the integrations ids
1214
1218
  :param list integrations: list of the integrations
1219
+ :param bool active: if true, activate the service
1215
1220
  :param kwargs: list of additional arguments
1216
1221
  :return: Service object
1217
1222
  :rtype: dtlpy.entities.service.Service
@@ -1336,6 +1341,7 @@ class Services:
1336
1341
  on_reset=on_reset,
1337
1342
  secrets=secrets,
1338
1343
  integrations=integrations,
1344
+ active=active
1339
1345
  )
1340
1346
  if checkout:
1341
1347
  self.checkout(service=service)
@@ -0,0 +1,172 @@
1
+ Metadata-Version: 2.1
2
+ Name: dtlpy
3
+ Version: 1.109.19
4
+ Summary: SDK and CLI for Dataloop platform
5
+ Home-page: https://github.com/dataloop-ai/dtlpy
6
+ Author: Dataloop Team
7
+ Author-email: info@dataloop.ai
8
+ License: Apache License 2.0
9
+ Classifier: Programming Language :: Python
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.7
13
+ Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Requires-Python: >=3.7
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: urllib3 (>=1.26)
21
+ Requires-Dist: tqdm (>=4.63)
22
+ Requires-Dist: certifi (>=2020.12.5)
23
+ Requires-Dist: webvtt-py (==0.4.3)
24
+ Requires-Dist: aiohttp (>=3.8)
25
+ Requires-Dist: requests-toolbelt (>=1.0.0)
26
+ Requires-Dist: requests (>=2.25.0)
27
+ Requires-Dist: numpy (>=1.16.2)
28
+ Requires-Dist: pandas (>=0.24.2)
29
+ Requires-Dist: tabulate (>=0.8.9)
30
+ Requires-Dist: Pillow (>=7.2)
31
+ Requires-Dist: PyJWT (>=2.4)
32
+ Requires-Dist: jinja2 (>=2.11.3)
33
+ Requires-Dist: attrs (<=22.2.0)
34
+ Requires-Dist: prompt-toolkit (>=2.0.9)
35
+ Requires-Dist: fuzzyfinder (<=2.1.0)
36
+ Requires-Dist: dictdiffer (>=0.8.1)
37
+ Requires-Dist: validators (<=0.18.2)
38
+ Requires-Dist: pathspec (>=0.8.1)
39
+ Requires-Dist: filelock (>=3.0.12)
40
+ Requires-Dist: diskcache (>=5.4)
41
+ Requires-Dist: redis (>=3.5)
42
+ Requires-Dist: inquirer
43
+ Requires-Dist: dtlpymetrics
44
+ Requires-Dist: dataclasses
45
+
46
+ # **DTLPY – SDK and CLI for Dataloop.ai**
47
+
48
+ ![logo.svg](docs%2F_static%2Flogo.svg)
49
+
50
+ [![Documentation Status](https://readthedocs.org/projects/dtlpy/badge/?version=latest)](https://sdk-docs.dataloop.ai/en/latest/?badge=latest)
51
+ [![PyPI Version](https://img.shields.io/pypi/v/dtlpy.svg)](https://pypi.org/project/dtlpy/)
52
+ [![Python Versions](https://img.shields.io/pypi/pyversions/dtlpy.svg)](https://github.com/dataloop-ai/dtlpy)
53
+ [![License](https://img.shields.io/github/license/dataloop-ai/dtlpy.svg)](https://github.com/dataloop-ai/dtlpy/blob/master/LICENSE)
54
+ [![Downloads](https://static.pepy.tech/personalized-badge/dtlpy?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads)](https://pepy.tech/project/dtlpy)
55
+
56
+ 📚 [Platform Documentation](https://dataloop.ai/docs) | 📖 [SDK Documentation](https://console.dataloop.ai/sdk-docs/latest) | [Developer docs](https://developers.dataloop.ai/)
57
+
58
+ An open-source SDK and CLI toolkit to interact seamlessly with the [Dataloop.ai](https://dataloop.ai/) platform, providing powerful data management, annotation capabilities, and workflow automation.
59
+
60
+ ---
61
+
62
+ ## **Table of Contents**
63
+
64
+ - [Overview](#overview)
65
+ - [Installation](#installation)
66
+ - [Usage](#usage)
67
+ - [SDK Usage](#sdk-usage)
68
+ - [CLI Usage](#cli-usage)
69
+ - [Python Version Support](#python-version-support)
70
+ - [Development](#development)
71
+ - [Resources](#resources)
72
+ - [Contribution Guidelines](#contribution-guidelines)
73
+
74
+ ---
75
+
76
+ ## **Overview**
77
+
78
+ DTLPY provides a robust Python SDK and a powerful CLI, enabling developers and data scientists to automate tasks, manage datasets, annotations, and streamline workflows within the Dataloop platform.
79
+
80
+ ---
81
+
82
+ ## **Installation**
83
+
84
+ Install DTLPY directly from PyPI using pip:
85
+
86
+ ```bash
87
+ pip install dtlpy
88
+ ```
89
+
90
+ Alternatively, for the latest development version, install directly from GitHub:
91
+
92
+ ```bash
93
+ pip install git+https://github.com/dataloop-ai/dtlpy.git
94
+ ```
95
+
96
+ ---
97
+
98
+ ## **Usage**
99
+
100
+ ### **SDK Usage**
101
+
102
+ Here's a basic example to get started with the DTLPY SDK:
103
+
104
+ ```python
105
+ import dtlpy as dl
106
+
107
+ # Authenticate
108
+ dl.login()
109
+
110
+ # Access a project
111
+ project = dl.projects.get(project_name='your-project-name')
112
+
113
+ # Access dataset
114
+ dataset = project.datasets.get(dataset_name='your-dataset-name')
115
+ ```
116
+
117
+ ### **CLI Usage**
118
+
119
+ DTLPY also provides a convenient command-line interface:
120
+
121
+ ```bash
122
+ dlp login
123
+ dlp projects ls
124
+ dlp datasets ls --project-name your-project-name
125
+ ```
126
+
127
+ ---
128
+
129
+ ## **Python Version Support**
130
+
131
+ DTLPY supports multiple Python versions as follows:
132
+
133
+ | Python Version | 3.11 | 3.10 | 3.9 | 3.8 | 3.7 | 3.6 | 3.5 |
134
+ |--------------------|------|------|-----|-----|-----|-----|-----|
135
+ | **dtlpy >= 1.99** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
136
+ | **dtlpy 1.76–1.98**| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
137
+ | **dtlpy >= 1.61** | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
138
+ | **dtlpy 1.50–1.60**| ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
139
+ | **dtlpy <= 1.49** | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
140
+
141
+ ---
142
+
143
+ ## **Development**
144
+
145
+ To set up the development environment, clone the repository and install dependencies:
146
+
147
+ ```bash
148
+ git clone https://github.com/dataloop-ai/dtlpy.git
149
+ cd dtlpy
150
+ pip install -r requirements.txt
151
+ ```
152
+
153
+ ## **Resources**
154
+
155
+ - [Dataloop Platform](https://console.dataloop.ai)
156
+ - [Full SDK Documentation](https://console.dataloop.ai/sdk-docs/latest)
157
+ - [Platform Documentation](https://dataloop.ai/docs)
158
+ - [SDK Examples and Tutorials](https://github.com/dataloop-ai/dtlpy-documentation)
159
+ - [Developer docs](https://developers.dataloop.ai/)
160
+
161
+ ---
162
+
163
+ ## **Contribution Guidelines**
164
+
165
+ We encourage contributions! Please ensure:
166
+
167
+ - Clear and descriptive commit messages
168
+ - Code follows existing formatting and conventions
169
+ - Comprehensive tests for new features or bug fixes
170
+ - Updates to documentation if relevant
171
+
172
+ Create pull requests for review. All contributions will be reviewed carefully and integrated accordingly.
@@ -1,7 +1,7 @@
1
- dtlpy/__init__.py,sha256=K2c30sbTNH6bdPFLjabRX-Dh3TsQ33nR9psVGCAoUlw,20687
2
- dtlpy/__version__.py,sha256=Tj3UOPZwl5i-MGWs5QkIPURGXjBDqmovb7JIh5SXp-I,20
1
+ dtlpy/__init__.py,sha256=n86boFpXWXPLjSXZMmWCageGjBumPjWxRv3srysrplk,20338
2
+ dtlpy/__version__.py,sha256=eIgLM-gZdxM-jhKIfBZi2m6DL_vSoUQ556FqCWu8aCs,21
3
3
  dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
4
- dtlpy/new_instance.py,sha256=bHsWS-nNcQ5XWDcC4uASqOqpl1ye97kUacduxXZHO68,9990
4
+ dtlpy/new_instance.py,sha256=tUCzBGaSpm9GTjRuwOkFgo3A8vopUQ-baltdJss3XlI,9964
5
5
  dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
6
6
  dtlpy/assets/lock_open.png,sha256=BH9uyf5uYvgZrDpDw9qCUnT3UbkXG8XbeRmWDpWlV4M,18215
7
7
  dtlpy/assets/main.py,sha256=N1JUsx79qnXI7Hx22C8JOzHJdGHxvrXeTx5UZAxvJfE,1380
@@ -43,9 +43,9 @@ dtlpy/dlp/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
43
43
  dtlpy/dlp/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
44
44
  dtlpy/dlp/dlp.py,sha256=YjNBjeCDTXJ7tj8qdiGZ8lFb8DtPZl-FvViyjxt9xF8,4278
45
45
  dtlpy/dlp/parser.py,sha256=p-TFaiAU2c3QkI97TXzL2LDR3Eq0hGDFrTc9J2jWLh4,30551
46
- dtlpy/entities/__init__.py,sha256=IllYowvvD_fxoB6Cujnc0wtq-05QNSxqC5usNace_wA,4987
46
+ dtlpy/entities/__init__.py,sha256=quty3pkoJ9_8dRyZG2WnPj7Qpr4O05FxXpWsY_txz_M,4982
47
47
  dtlpy/entities/analytic.py,sha256=5MpYDKPVsZ1MIy20Ju515RWed6P667j4TLxsan2gyNM,11925
48
- dtlpy/entities/annotation.py,sha256=ztNBDAKDXAh7XXD8oxbSxJtYTe_SRCUNkP55SfuGqTA,68550
48
+ dtlpy/entities/annotation.py,sha256=DYpVb4bNxwXnxXjh3zUa58qo2nSMaQnejiDwUZntn0E,66610
49
49
  dtlpy/entities/annotation_collection.py,sha256=CEYSBHhhDkC0VJdHsBSrA6TgdKGMcKeI3tFM40UJwS8,29838
50
50
  dtlpy/entities/app.py,sha256=vQ7hSMnuRIpoZqZc2NwjGTtWiPTCgi47x_oOgGUB-Pk,6996
51
51
  dtlpy/entities/app_module.py,sha256=0UiAbBX1q8iEImi3nY7ySWZZHoRRwu0qUXmyXmgVAc4,3645
@@ -55,24 +55,24 @@ dtlpy/entities/base_entity.py,sha256=i83KrtAz6dX4t8JEiUimLI5ZRrN0VnoUWKG2Zz49N5w
55
55
  dtlpy/entities/bot.py,sha256=is3NUCnPg56HSjsHIvFcVkymValMqDV0uHRDC1Ib-ds,3819
56
56
  dtlpy/entities/codebase.py,sha256=pwRkAq2GV0wvmzshg89IAmE-0I2Wsy_-QNOu8OV8uqc,8999
57
57
  dtlpy/entities/collection.py,sha256=FPPPfIxOsBG1ujORPJVq8uXyF8vhIqC6N4EiI9SJzl0,1160
58
- dtlpy/entities/command.py,sha256=FtfsO6kQSZqKn-Uo8n2ryGOB01Fgr-g5ewfMCtRMTfw,5247
59
- dtlpy/entities/compute.py,sha256=FHHmtprkhnu8J_51JPnnoqbVpb9AeIZDvz0ojo7zdVk,16059
60
- dtlpy/entities/dataset.py,sha256=4zFftsZy7SCLZriQyNa0bVbwg3LcwLlzAbk4fMT1vHg,52943
58
+ dtlpy/entities/command.py,sha256=5RMQYjOGLRF8JZd7QFAPyE8utsp4eZzLApI2dEAbaqo,5301
59
+ dtlpy/entities/compute.py,sha256=IFMkHWVu8RyUZSZ24SuE-TnOP-3XzPT5eOEbYFJg76E,14207
60
+ dtlpy/entities/dataset.py,sha256=GEvBOly1M8uU--apQZ-G-78DJZzFk178LmMhEANyi0A,53838
61
61
  dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
62
- dtlpy/entities/dpk.py,sha256=FJVhQKk2fj1cO_4rcE_bIF6QmIQZQWUkBnwTNQNMrfE,17857
62
+ dtlpy/entities/dpk.py,sha256=XrK8X8p4Ag6LMjDrDpMstY-h_yTll_sMmKTZT6bLbWE,17923
63
63
  dtlpy/entities/driver.py,sha256=O_QdK1EaLjQyQkmvKsmkNgmvmMb1mPjKnJGxK43KrOA,7197
64
64
  dtlpy/entities/execution.py,sha256=uQe535w9OcAoDiNWf96KcpFzUDEUU-DYsUalv5VziyM,13673
65
65
  dtlpy/entities/feature.py,sha256=9fFjD0W57anOVSAVU55ypxN_WTCsWTG03Wkc3cAAj78,3732
66
66
  dtlpy/entities/feature_set.py,sha256=niw4MkmrDbD_LWQu1X30uE6U4DCzmFhPTaYeZ6VZDB0,4443
67
- dtlpy/entities/filters.py,sha256=ldtBtrkNxOzwG6dc9X7va1dony89NjLstpTWDrLPVkI,22655
67
+ dtlpy/entities/filters.py,sha256=8nz3V5Ui4LemEIfSTp3uAHJAf_ZpwQrMSrfUL6AB7Zk,22719
68
68
  dtlpy/entities/gis_item.py,sha256=Uk-wMBxwcHsImjz4qOjP-EyZAohbRzN43kMpCaVjCXU,3982
69
69
  dtlpy/entities/integration.py,sha256=Kdy1j6-cJLW8qNmnqCmdg36phi843YDrlMqcMyMfvYk,5875
70
- dtlpy/entities/item.py,sha256=vMMrUxdopp94cpNicCS4kTTUBP9eYwNilb1XhG8ZIeE,34839
70
+ dtlpy/entities/item.py,sha256=WCIPHUmubIe0wva-YMm-LPQdn2S3_-Q151x49C9NEw8,34591
71
71
  dtlpy/entities/label.py,sha256=ycDYavIgKhz806plIX-64c07_TeHpDa-V7LnfFVe4Rg,3869
72
72
  dtlpy/entities/links.py,sha256=FAmEwHtsrqKet3c0UHH9u_gHgG6_OwF1-rl4xK7guME,2516
73
73
  dtlpy/entities/message.py,sha256=ApJuaKEqxATpXjNYUjGdYPu3ibQzEMo8-LtJ_4xAcPI,5865
74
74
  dtlpy/entities/model.py,sha256=YwjIi3MxAZoyartTvqx_qhtDKQe6zVsQuwZbYLygMxU,26898
75
- dtlpy/entities/node.py,sha256=yPPYDLtNMc6vZbbf4FIffY86y7tkaTvYm42Jb7k3Ofk,39617
75
+ dtlpy/entities/node.py,sha256=RiCqG659Pb1PZNMewR-F7eNbU5tt713fiZY9xW6-Pes,39199
76
76
  dtlpy/entities/ontology.py,sha256=924g9c2ZTfr69fWd_ejrVU0C-MAUR8UAhhz6GY-IQME,32100
77
77
  dtlpy/entities/organization.py,sha256=Zm-tTHV82PvYyTNetRRXqvmvzBCbXEwS-gAENf7Zny4,9874
78
78
  dtlpy/entities/package.py,sha256=QSDePHlp4ik19aUE3dAUC7edh0oUUVjzSmMG867avc4,26363
@@ -88,15 +88,16 @@ dtlpy/entities/prompt_item.py,sha256=qXDK2IWVKszm7gpqcgCE51SSf4IUTNFirq40qszBYw8
88
88
  dtlpy/entities/recipe.py,sha256=SX0T7gw-_9Cs2FZyC_htIxQd7CwDwb2zA3SqB37vymM,11917
89
89
  dtlpy/entities/reflect_dict.py,sha256=2NaSAL-CO0T0FYRYFQlaSpbsoLT2Q18AqdHgQSLX5Y4,3273
90
90
  dtlpy/entities/resource_execution.py,sha256=1HuVV__U4jAUOtOkWlWImnM3Yts8qxMSAkMA9sBhArY,5033
91
- dtlpy/entities/service.py,sha256=X4rukxywZvb69swxj2C12i7HdmQ_XFuCRKV8Cdl_Dbw,33542
91
+ dtlpy/entities/service.py,sha256=ZKxEYS9Gre8u7A6CN8P37ZyuApw92Q5B-6R2mgnzFwA,33230
92
+ dtlpy/entities/service_driver.py,sha256=N3fL_xTPLu75UBFQZO5Plxx2kpED-UIILxTYbD58rzQ,3917
92
93
  dtlpy/entities/setting.py,sha256=uXagJHtcCR3nJYClR_AUGZjz_kx3TejPcUZ8ginHFIA,8561
93
94
  dtlpy/entities/task.py,sha256=WOKrZBOu9BaJopZBToFEFOQsEntsfvzKolJYPEUjIeI,19511
94
95
  dtlpy/entities/time_series.py,sha256=336jWNckjuSn0G29WJFetB7nBoFAKqs4VH9_IB4m4FE,4017
95
- dtlpy/entities/trigger.py,sha256=Spf5G3n1PsD3mDntwbAsc-DpEGDlqKgU9ec0Q0HinsQ,14286
96
+ dtlpy/entities/trigger.py,sha256=9Um74Tq-Hn_K35x8QrLPugjKIFEC1eGLQAFcwuymOUs,14296
96
97
  dtlpy/entities/user.py,sha256=hqEzwN6rl1oUTpKOV5eXvw9Z7dtpsiC4TAPSNBmkqcM,3865
97
98
  dtlpy/entities/webhook.py,sha256=6R06MgLxabvKySInGlSJmaf0AVmAMe3vKusWhqONRyU,3539
98
99
  dtlpy/entities/annotation_definitions/__init__.py,sha256=qZ77hGmCQopPSpiDHYhNWbNKC7nrn10NWNlim9dINmg,666
99
- dtlpy/entities/annotation_definitions/base_annotation_definition.py,sha256=tZGMokakJ4HjWAtD1obsgh2pORD66XWcnIT6CZLVMQs,3201
100
+ dtlpy/entities/annotation_definitions/base_annotation_definition.py,sha256=quZthKbVdYAMFexOVok1YAjDS_aaFe01Umugxc5Z1gU,2547
100
101
  dtlpy/entities/annotation_definitions/box.py,sha256=A4NnMrHkq3CuvFR9wq-jqAMHMHKKWyc2gMwMHmQXKdU,6045
101
102
  dtlpy/entities/annotation_definitions/classification.py,sha256=uqLAAaqNww2ZwR1e4UW22foJtDxoeZXJsv5PTvyt-tA,1559
102
103
  dtlpy/entities/annotation_definitions/comparison.py,sha256=cp9HZ32wm7E78tbeoqsfJL5oZ26ojig7Cjn2FJE7mbI,1806
@@ -153,7 +154,7 @@ dtlpy/ml/metrics.py,sha256=BG2E-1Mvjv2e2No9mIJKVmvzqBvLqytKcw3hA7wVUNc,20037
153
154
  dtlpy/ml/predictions_utils.py,sha256=He_84U14oS2Ss7T_-Zj5GDiBZwS-GjMPURUh7u7DjF8,12484
154
155
  dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,2784
155
156
  dtlpy/ml/train_utils.py,sha256=R-BHKRfqDoLLhFyLzsRFyJ4E-8iedj9s9oZqy3IO2rg,2404
156
- dtlpy/repositories/__init__.py,sha256=b7jPmE4meKaeikO-x87HcO2lcfQg-8OzqcYZa8n6l-Q,2033
157
+ dtlpy/repositories/__init__.py,sha256=D2YI3ZLlSx0OlgVr8y_E9rsj-IxCDOj0MB6QTlv2NSA,2061
157
158
  dtlpy/repositories/analytics.py,sha256=dQPCYTPAIuyfVI_ppR49W7_GBj0033feIm9Gd7LW1V0,2966
158
159
  dtlpy/repositories/annotations.py,sha256=idTKzanNt-ncB0eIKE5p6WclrVGNjceI2Y7dAzDFtzY,43595
159
160
  dtlpy/repositories/apps.py,sha256=OE2UbxE2oGA44-7pso7fm9GErTRFyGEFK2k7ibC_h6U,16002
@@ -161,19 +162,19 @@ dtlpy/repositories/artifacts.py,sha256=Ke2ustTNw-1eQ0onLsWY7gL2aChjXPAX5p1uQ_EzM
161
162
  dtlpy/repositories/assignments.py,sha256=1VwJZ7ctQe1iaDDDpeYDgoj2G-TCgzolVLUEqUocd2w,25506
162
163
  dtlpy/repositories/bots.py,sha256=q1SqH01JHloljKxknhHU09psV1vQx9lPhu3g8mBBeRg,8104
163
164
  dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zhGA,24668
164
- dtlpy/repositories/collections.py,sha256=C_BPMg128Sl9AG3U4PxgI_2aaehQ2NuehMmzoTaXbPQ,11459
165
- dtlpy/repositories/commands.py,sha256=i6gQgOmRDG8ixqKU7672H3CvGt8VLT3ihDVfri1eWWc,5610
165
+ dtlpy/repositories/collections.py,sha256=z-nkR33rq-MzkEff7DDSBlfsI_lkCDFwQZIlMaIT5rM,13514
166
+ dtlpy/repositories/commands.py,sha256=MgXhXxbAzBa2QJM9Z5EsQZRaZ4fGBM17ALoldxi8xYA,5848
166
167
  dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
167
- dtlpy/repositories/computes.py,sha256=iPFhtihBnTYnWSIViNE4ErC2peX2FF1fm36fZeVPcv4,10656
168
- dtlpy/repositories/datasets.py,sha256=g0ii254YeAjA7B7MWhZoFsB03d70HiskCcPNkbfjC08,58762
169
- dtlpy/repositories/downloader.py,sha256=p4XXmH8cjYN8o0FJt81S9VqtnOyqj3YEfZKP-l6KGEM,44651
170
- dtlpy/repositories/dpks.py,sha256=dglvaiSFBvEithhlQ0RAXwzTxoZaICONs-owx3e2nfU,17848
168
+ dtlpy/repositories/computes.py,sha256=vHMvKVX8U-33nB5TR_Nfs9euGr9MbkiwTHuq4yZojM8,14134
169
+ dtlpy/repositories/datasets.py,sha256=p0HBbTGrxAQ8h9tJsp1jRasPbwnMAtXQ4_sIef9_590,59358
170
+ dtlpy/repositories/downloader.py,sha256=XJC9FhlXgHrA8Ae9bftrbs4YKFCcZoEYJAh6Bt6zGhU,45167
171
+ dtlpy/repositories/dpks.py,sha256=dxZpGloZGH6MJG9ZFff5l3GlXw6i-52n9kxL-QiHosQ,18516
171
172
  dtlpy/repositories/drivers.py,sha256=fF0UuHCyBzop8pHfryex23mf0kVFAkqzNdOmwBbaWxY,10204
172
173
  dtlpy/repositories/executions.py,sha256=4UoU6bnB3kl5cMuF1eJvDecfZCaB06gKWxPfv6_g1_k,32598
173
174
  dtlpy/repositories/feature_sets.py,sha256=UowMDAl_CRefRB5oZzubnsjU_OFgiPPdQXn8q2j4Kuw,9666
174
175
  dtlpy/repositories/features.py,sha256=A_RqTJxzjTh-Wbm0uXaoTNyHSfCLbeiH38iB11p2ifY,9915
175
176
  dtlpy/repositories/integrations.py,sha256=gSgaVp4MkcdrJMnXVr_fl4xrzhfJba8BFbBJTuJPwXc,18159
176
- dtlpy/repositories/items.py,sha256=uOukC5sCvdzdIGglYRfYw-1tS11Q9HH4oZFzORnpmk4,39881
177
+ dtlpy/repositories/items.py,sha256=S1OWZ6s8AbVXMiLtCfBBiYPMG8OLqdUhKMHuZWE3bnU,40029
177
178
  dtlpy/repositories/messages.py,sha256=QU0Psckg6CA_Tlw9AVxqa-Ay1fRM4n269sSIJkH9o7E,3066
178
179
  dtlpy/repositories/models.py,sha256=IekNMcnuKVaAVTJf2AJv6YvX5qCd9kkSl4ETPMWP4Zc,38213
179
180
  dtlpy/repositories/nodes.py,sha256=xXJm_YA0vDUn0dVvaGeq6ORM0vI3YXvfjuylvGRtkxo,3061
@@ -186,7 +187,8 @@ dtlpy/repositories/projects.py,sha256=TKLCuL7Inlv4GwgcQcuXkPQtgacfrXYjsTQng8nPC7
186
187
  dtlpy/repositories/recipes.py,sha256=ZZDhHn9g28C99bsf0nFaIpVYn6f6Jisz9upkHEkeaYY,15843
187
188
  dtlpy/repositories/resource_executions.py,sha256=PyzsbdJxz6jf17Gx13GZmqdu6tZo3TTVv-DypnJ_sY0,5374
188
189
  dtlpy/repositories/schema.py,sha256=kTKDrbwm7BfQnBAK81LpAl9ChNFdyUweSLNazlJJhjk,3953
189
- dtlpy/repositories/services.py,sha256=2ruoPwyznRwsNtM7YK2vSGQP9jtCHB6WitRo-Z0yB_c,68576
190
+ dtlpy/repositories/service_drivers.py,sha256=rxbhLUtT7TCbkVxH4HJtFT9ywcikByPFdX7_4kiTiK0,6766
191
+ dtlpy/repositories/services.py,sha256=LvZCE5_uxsK886sGCSaiZuaRnYbHFSrR2P4G_MlJopY,68856
190
192
  dtlpy/repositories/settings.py,sha256=HHYSGub5Y6cQ746pBfvlQndsgBj1UoNFupa2otgvsWI,11645
191
193
  dtlpy/repositories/tasks.py,sha256=sBV7SLLwt2QsJkjdEuKLJgIPS34H1b5E2rdFQb1n1Wo,50160
192
194
  dtlpy/repositories/times_series.py,sha256=m-bKFEgiZ13yQNelDjBfeXMUy_HgsPD_JAHj1GVx9fU,11420
@@ -224,9 +226,9 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
224
226
  dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
225
227
  dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
226
228
  dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
227
- dtlpy-1.108.7.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
228
- dtlpy-1.108.7.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
229
- dtlpy-1.108.7.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
229
+ dtlpy-1.109.19.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
230
+ dtlpy-1.109.19.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
231
+ dtlpy-1.109.19.data/scripts/dlp.py,sha256=tEokRaDINISXnq8yNx_CBw1qM5uwjYiZoJOYGqWB3RU,4267
230
232
  tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
233
  tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
234
  tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
@@ -234,9 +236,9 @@ tests/assets/models_flow/main.py,sha256=vnDKyVZaae2RFpvwS22Hzi6Dt2LJerH4yQrmKtaT
234
236
  tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
235
237
  tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
238
  tests/features/environment.py,sha256=JcM956BxLBRvDqy6Kr1Nxd1FY_gxbE6XztZBVBMCGYM,18897
237
- dtlpy-1.108.7.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
238
- dtlpy-1.108.7.dist-info/METADATA,sha256=85hCn6Cm55e6XrMDSk1qOQFh9-YnFL9tG_Sr0qH4aqA,3205
239
- dtlpy-1.108.7.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
240
- dtlpy-1.108.7.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
241
- dtlpy-1.108.7.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
242
- dtlpy-1.108.7.dist-info/RECORD,,
239
+ dtlpy-1.109.19.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
240
+ dtlpy-1.109.19.dist-info/METADATA,sha256=S1lFH5dyjapOJM45lU0Xs_kPQJLzlbL5QPjxwQDLqss,5470
241
+ dtlpy-1.109.19.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
242
+ dtlpy-1.109.19.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
243
+ dtlpy-1.109.19.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
244
+ dtlpy-1.109.19.dist-info/RECORD,,
@@ -1,82 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: dtlpy
3
- Version: 1.108.7
4
- Summary: SDK and CLI for Dataloop platform
5
- Home-page: https://github.com/dataloop-ai/dtlpy
6
- Author: Dataloop Team
7
- Author-email: info@dataloop.ai
8
- License: Apache License 2.0
9
- Classifier: Programming Language :: Python
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3 :: Only
12
- Classifier: Programming Language :: Python :: 3.7
13
- Classifier: Programming Language :: Python :: 3.8
14
- Classifier: Programming Language :: Python :: 3.9
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Requires-Python: >=3.7
18
- Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
- Requires-Dist: urllib3 (>=1.26)
21
- Requires-Dist: tqdm (>=4.63)
22
- Requires-Dist: certifi (>=2020.12.5)
23
- Requires-Dist: webvtt-py (==0.4.3)
24
- Requires-Dist: aiohttp (>=3.8)
25
- Requires-Dist: requests-toolbelt (>=1.0.0)
26
- Requires-Dist: requests (>=2.25.0)
27
- Requires-Dist: numpy (>=1.16.2)
28
- Requires-Dist: pandas (>=0.24.2)
29
- Requires-Dist: tabulate (>=0.8.9)
30
- Requires-Dist: Pillow (>=7.2)
31
- Requires-Dist: PyJWT (>=2.4)
32
- Requires-Dist: jinja2 (>=2.11.3)
33
- Requires-Dist: attrs (<=22.2.0)
34
- Requires-Dist: prompt-toolkit (>=2.0.9)
35
- Requires-Dist: fuzzyfinder (<=2.1.0)
36
- Requires-Dist: dictdiffer (>=0.8.1)
37
- Requires-Dist: validators (<=0.18.2)
38
- Requires-Dist: pathspec (>=0.8.1)
39
- Requires-Dist: filelock (>=3.0.12)
40
- Requires-Dist: diskcache (>=5.4)
41
- Requires-Dist: redis (>=3.5)
42
- Requires-Dist: inquirer
43
- Requires-Dist: dtlpymetrics
44
- Requires-Dist: dataclasses
45
-
46
- ![logo.svg](docs%2F_static%2Flogo.svg)
47
-
48
- [![Documentation Status](https://readthedocs.org/projects/dtlpy/badge/?version=latest)](https://sdk-docs.dataloop.ai/en/latest/?badge=latest)
49
- [![pypi](https://img.shields.io/pypi/v/dtlpy.svg)](https://pypi.org/project/dtlpy/)
50
- [![versions](https://img.shields.io/pypi/pyversions/dtlpy.svg)](https://github.com/dataloop-ai/dtlpy)
51
- [![license](https://img.shields.io/github/license/dataloop-ai/dtlpy.svg)](https://github.com/dataloop-ai/dtlpy/blob/master/LICENSE)
52
- [![Downloads](https://static.pepy.tech/personalized-badge/dtlpy?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads)](https://pepy.tech/project/dtlpy)
53
-
54
- ## **Overview**
55
- This is the SDK and CLI open source repository for [Dataloop.ai](https://dataloop.ai/) platform
56
-
57
- For full platform documentation click [here](https://dataloop.ai/docs)
58
-
59
- For full SDK documentation click [here](https://console.dataloop.ai/sdk-docs/latest)
60
-
61
- ## **Prerequisites**
62
-
63
- ### Python
64
-
65
- #### Dtlpy supports these Python versions.
66
-
67
- | Python | 3.11 | 3.10 | 3.9 | 3.8 | 3.7 | 3.6 | 3.5 |
68
- |-------------------|------|------|-----|-----|-----|-----|-----|
69
- | dtlpy >= 1.99 | Yes | Yes | Yes | Yes | Yes | | |
70
- | dtlpy 1.76 - 1.98 | Yes | Yes | Yes | Yes | Yes | Yes | |
71
- | dtlpy >= 1.61 | | Yes | Yes | Yes | Yes | Yes | |
72
- | dtlpy 1.60 - 1.50 | | | Yes | Yes | Yes | Yes | |
73
- | dtlpy <= 1.49 | | | Yes | Yes | Yes | Yes | Yes |
74
-
75
-
76
- ## **Installation**
77
-
78
- The latest stable version is [available on PyPI](https://pypi.org/project/dtlpy/). Install with pip:
79
-
80
- ```code
81
- pip install dtlpy
82
- ```
File without changes