dtlpy 1.112.9__py3-none-any.whl → 1.113.10__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.
dtlpy/__version__.py CHANGED
@@ -1 +1 @@
1
- version = '1.112.9'
1
+ version = '1.113.10'
dtlpy/entities/compute.py CHANGED
@@ -12,6 +12,7 @@ class ClusterProvider(str, Enum):
12
12
  HPC = 'hpc'
13
13
  LOCAL = 'local'
14
14
  RANCHER_K3S = 'rancher-k3s'
15
+ RANCHER_RKE = 'rancher-rke'
15
16
 
16
17
 
17
18
  class ComputeType(str, Enum):
@@ -327,8 +328,8 @@ class Compute:
327
328
  self._computes = repositories.Computes(client_api=self._client_api)
328
329
  return self._computes
329
330
 
330
- def delete(self):
331
- return self.computes.delete(compute_id=self.id)
331
+ def delete(self, skip_destroy: bool = False):
332
+ return self.computes.delete(compute_id=self.id, skip_destroy=skip_destroy)
332
333
 
333
334
  def update(self):
334
335
  return self.computes.update(compute=self)
dtlpy/entities/model.py CHANGED
@@ -101,6 +101,7 @@ class Model(entities.BaseEntity):
101
101
  scope = attr.ib()
102
102
  version = attr.ib()
103
103
  context = attr.ib()
104
+ status_logs = attr.ib()
104
105
 
105
106
  # name change
106
107
  package_id = attr.ib(repr=False)
@@ -199,7 +200,8 @@ class Model(entities.BaseEntity):
199
200
  output_type=_json.get('outputType', None),
200
201
  module_name=_json.get('moduleName', None),
201
202
  updated_by=_json.get('updatedBy', None),
202
- app=_json.get('app', None)
203
+ app=_json.get('app', None),
204
+ status_logs=_json.get('statusLogs', []),
203
205
  )
204
206
  inst.is_fetched = is_fetched
205
207
  return inst
@@ -229,7 +231,8 @@ class Model(entities.BaseEntity):
229
231
  attr.fields(Model).input_type,
230
232
  attr.fields(Model).output_type,
231
233
  attr.fields(Model).updated_by,
232
- attr.fields(Model).app
234
+ attr.fields(Model).app,
235
+ attr.fields(Model).status_logs
233
236
  ))
234
237
  _json['packageId'] = self.package_id
235
238
  _json['datasetId'] = self.dataset_id
@@ -253,6 +256,8 @@ class Model(entities.BaseEntity):
253
256
  _json['updatedBy'] = self.updated_by
254
257
  if self.app:
255
258
  _json['app'] = self.app
259
+ if self.status_logs:
260
+ _json['statusLogs'] = self.status_logs
256
261
 
257
262
  return _json
258
263
 
@@ -295,7 +300,10 @@ class Model(entities.BaseEntity):
295
300
  def package(self):
296
301
  if self._package is None:
297
302
  try:
298
- self._package = self.packages.get(package_id=self.package_id)
303
+ if self.app:
304
+ self._package = self.dpks.get_revisions(dpk_id=self.app['dpkId'], version=self.app['dpkVersion'])
305
+ else:
306
+ self._package = self.packages.get(package_id=self.package_id)
299
307
  except Exception as e:
300
308
  error = e
301
309
  try:
@@ -141,8 +141,14 @@ class PagedEntities:
141
141
  FiltersResource.FEATURE,
142
142
  ]
143
143
 
144
+ prepared= req.prepare()
145
+ sort_spec= prepared.get("sort", {})
146
+ sort_dir= next(iter(sort_spec.values()), None)
147
+ order= sort_dir or FiltersOrderByDirection.ASCENDING
148
+ operator_value = (FiltersOperations.LESS_THAN if sort_dir == FiltersOrderByDirection.DESCENDING else FiltersOperations.GREATER_THAN)
149
+
144
150
  if enable_hybrid and not self._has_explicit_sort(req):
145
- req.sort_by(field="id", value=FiltersOrderByDirection.ASCENDING)
151
+ req.sort_by(field="id", value=order)
146
152
 
147
153
  if enable_hybrid and self.use_id_based_paging:
148
154
  req.page = 0
@@ -150,7 +156,7 @@ class PagedEntities:
150
156
  req.add(
151
157
  field="id",
152
158
  values=self.last_seen_id,
153
- operator=FiltersOperations.GREATER_THAN,
159
+ operator=operator_value,
154
160
  method=FiltersOperations.AND,
155
161
  )
156
162
  else:
@@ -165,7 +171,7 @@ class PagedEntities:
165
171
  req.add(
166
172
  field="id",
167
173
  values=after_id or self.last_seen_id,
168
- operator=FiltersOperations.GREATER_THAN,
174
+ operator=operator_value,
169
175
  method=FiltersOperations.AND,
170
176
  )
171
177
  self.use_id_based_paging = True
@@ -693,8 +693,6 @@ class BaseModelAdapter(utilities.BaseServiceRunner):
693
693
  if output_path is not None:
694
694
  self.save_to_model(local_path=output_path, replace=True)
695
695
  logger.info('Execution failed. Setting model.status to failed')
696
- model.status = 'failed'
697
- model.update()
698
696
  raise
699
697
  return model
700
698
 
@@ -10,6 +10,7 @@ from typing import List, Optional, Dict
10
10
  from ..entities import ComputeCluster, ComputeContext, ComputeType
11
11
  from ..entities.integration import IntegrationType
12
12
  import logging
13
+ from urllib.parse import urlparse, urlencode, parse_qs, urlunparse
13
14
 
14
15
  logger = logging.getLogger(name='dtlpy')
15
16
 
@@ -209,17 +210,25 @@ class Computes:
209
210
 
210
211
  return compute
211
212
 
212
- def delete(self, compute_id: str):
213
+ def delete(self, compute_id: str, skip_destroy: bool = False
214
+ ):
213
215
  """
214
216
  Delete a compute
215
217
 
216
218
  :param compute_id: compute ID
219
+ :param skip_destroy: bool
217
220
  """
218
-
221
+ url_path = self._base_url + '/{}'.format(compute_id)
222
+ params_to_add = {"skipDestroy": "true" if skip_destroy else "false" }
223
+ parsed_url = urlparse(url_path)
224
+ query_dict = parse_qs(parsed_url.query)
225
+ query_dict.update(params_to_add)
226
+ new_query = urlencode(query_dict, doseq=True)
227
+ url_path = urlunparse(parsed_url._replace(query=new_query))
219
228
  # request
220
229
  success, response = self._client_api.gen_request(
221
230
  req_type='delete',
222
- path=self._base_url + '/{}'.format(compute_id)
231
+ path=url_path
223
232
  )
224
233
 
225
234
  if not success:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dtlpy
3
- Version: 1.112.9
3
+ Version: 1.113.10
4
4
  Summary: SDK and CLI for Dataloop platform
5
5
  Home-page: https://github.com/dataloop-ai/dtlpy
6
6
  Author: Dataloop Team
@@ -1,5 +1,5 @@
1
1
  dtlpy/__init__.py,sha256=-5fpi-yAwFdluh8QZ-sWXwNDCD97Q5BCgIs7pUDl04o,20444
2
- dtlpy/__version__.py,sha256=XIkrZL_C-sKZYUlGAHoBjRZoQrldqJ58ORqW_bv34Rg,20
2
+ dtlpy/__version__.py,sha256=AHVPkR4bml10NDAI863smQZmEgiJXZehmC3rrJ_8d9I,21
3
3
  dtlpy/exceptions.py,sha256=EQCKs3pwhwZhgMByQN3D3LpWpdxwcKPEEt-bIaDwURM,2871
4
4
  dtlpy/new_instance.py,sha256=tUCzBGaSpm9GTjRuwOkFgo3A8vopUQ-baltdJss3XlI,9964
5
5
  dtlpy/assets/__init__.py,sha256=D_hAa6NM8Zoy32sF_9b7m0b7I-BQEyBFg8-9Tg2WOeo,976
@@ -56,7 +56,7 @@ 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
58
  dtlpy/entities/command.py,sha256=5RMQYjOGLRF8JZd7QFAPyE8utsp4eZzLApI2dEAbaqo,5301
59
- dtlpy/entities/compute.py,sha256=U974uaXGCfr-TSHqPmyLeJWbwbO-3K082hS1Scapv8M,14497
59
+ dtlpy/entities/compute.py,sha256=OdlCagVR-rh5IeHsUq1EtBq001_kFMwInCJdZNHh8G0,14584
60
60
  dtlpy/entities/dataset.py,sha256=GEvBOly1M8uU--apQZ-G-78DJZzFk178LmMhEANyi0A,53838
61
61
  dtlpy/entities/directory_tree.py,sha256=Rni6pLSWytR6yeUPgEdCCRfTg_cqLOdUc9uCqz9KT-Q,1186
62
62
  dtlpy/entities/dpk.py,sha256=XrK8X8p4Ag6LMjDrDpMstY-h_yTll_sMmKTZT6bLbWE,17923
@@ -71,7 +71,7 @@ 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
- dtlpy/entities/model.py,sha256=YwjIi3MxAZoyartTvqx_qhtDKQe6zVsQuwZbYLygMxU,26898
74
+ dtlpy/entities/model.py,sha256=j7mLY38Tl2jTLfdHFOqcctb655u7drWkGc8l2CWtbyE,27321
75
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
@@ -80,7 +80,7 @@ dtlpy/entities/package_defaults.py,sha256=wTD7Z7rGYjVy8AcUxTFEnkOkviiJaLVZYvduiU
80
80
  dtlpy/entities/package_function.py,sha256=M42Kvw9A8b6msAkv-wRNAQg_-UC2bejniCjeKDugudc,6314
81
81
  dtlpy/entities/package_module.py,sha256=cOkIITATkzzCQpE0sdPiBUisAz8ImlPG2YGZ0K7SypA,5151
82
82
  dtlpy/entities/package_slot.py,sha256=XBwCodQe618sQm0bmx46Npo94mEk-zUV7ZX0mDRcsD8,3946
83
- dtlpy/entities/paged_entities.py,sha256=ffw0CbLcOTNDYLQA9gqmjSaTZLRYP_tMnSfa_BmGIyk,8145
83
+ dtlpy/entities/paged_entities.py,sha256=AZNHyN5dhaZvtiYCkZsKZfJkmYHonWDBvM560zuC-TE,8419
84
84
  dtlpy/entities/pipeline.py,sha256=JtWGoCUhVszOVkBNK43fbTt446fkND4wH-Y-fN_llww,20851
85
85
  dtlpy/entities/pipeline_execution.py,sha256=EQhW4W_G1bIPShYbJSAT--1WNQuvxVQbcQ_MCHIX0KI,9938
86
86
  dtlpy/entities/project.py,sha256=ZUx8zA3mr6N145M62R3UDPCCzO1vxfyWO6vjES-bO-g,14653
@@ -149,7 +149,7 @@ dtlpy/miscellaneous/list_print.py,sha256=fBGTMXFUwDG8DD4W6HyR8BTGtbTckLf4W09quNR
149
149
  dtlpy/miscellaneous/zipping.py,sha256=JplTc8UDFvO8WaD5vKuumVLN0lU_-GtHoE0doWKtmKg,5383
150
150
  dtlpy/ml/__init__.py,sha256=vPkyXpc9kcWWZ_PxyPEOsjKBJdEbowLkZr8FZIb_OBM,799
151
151
  dtlpy/ml/base_feature_extractor_adapter.py,sha256=iiEGYAx0Rdn4K46H_FlKrAv3ebTXHSxNVAmio0BxhaI,1178
152
- dtlpy/ml/base_model_adapter.py,sha256=E7OktF1WbquvgyZixvPkyq7QW0ID3VF9tevXlwpmnuY,51216
152
+ dtlpy/ml/base_model_adapter.py,sha256=Sdrg68BLwHocvk74QUYatUgA6iv8Xhql8muX2PoF2z8,51153
153
153
  dtlpy/ml/metrics.py,sha256=BG2E-1Mvjv2e2No9mIJKVmvzqBvLqytKcw3hA7wVUNc,20037
154
154
  dtlpy/ml/predictions_utils.py,sha256=He_84U14oS2Ss7T_-Zj5GDiBZwS-GjMPURUh7u7DjF8,12484
155
155
  dtlpy/ml/summary_writer.py,sha256=dehDi8zmGC1sAGyy_3cpSWGXoGQSiQd7bL_Thoo8yIs,2784
@@ -165,7 +165,7 @@ dtlpy/repositories/codebases.py,sha256=pvcZxdrq0-zWysVbdXjUOhnfcF6hJD8v5VclNZ-zh
165
165
  dtlpy/repositories/collections.py,sha256=z-nkR33rq-MzkEff7DDSBlfsI_lkCDFwQZIlMaIT5rM,13514
166
166
  dtlpy/repositories/commands.py,sha256=MgXhXxbAzBa2QJM9Z5EsQZRaZ4fGBM17ALoldxi8xYA,5848
167
167
  dtlpy/repositories/compositions.py,sha256=H417BvlQAiWr5NH2eANFke6CfEO5o7DSvapYpf7v5Hk,2150
168
- dtlpy/repositories/computes.py,sha256=V8kVTwXc5lhxrp5e7zxTXvKcVKtg6crCqkL5zQHtKZo,14639
168
+ dtlpy/repositories/computes.py,sha256=Q4maajELX1p2yyCSsflyZC2eVz7JBHgLsdcldnbG3JM,15125
169
169
  dtlpy/repositories/datasets.py,sha256=p0HBbTGrxAQ8h9tJsp1jRasPbwnMAtXQ4_sIef9_590,59358
170
170
  dtlpy/repositories/downloader.py,sha256=X5-vspCoTW7_QZuPdaZgOSTvM7jYU0Uf7o5PELZNY9g,45329
171
171
  dtlpy/repositories/dpks.py,sha256=dxZpGloZGH6MJG9ZFff5l3GlXw6i-52n9kxL-QiHosQ,18516
@@ -226,9 +226,9 @@ dtlpy/utilities/reports/report.py,sha256=3nEsNnIWmdPEsd21nN8vMMgaZVcPKn9iawKTTeO
226
226
  dtlpy/utilities/videos/__init__.py,sha256=SV3w51vfPuGBxaMeNemx6qEMHw_C4lLpWNGXMvdsKSY,734
227
227
  dtlpy/utilities/videos/video_player.py,sha256=LCxg0EZ_DeuwcT7U_r7MRC6Q19s0xdFb7x5Gk39PRms,24072
228
228
  dtlpy/utilities/videos/videos.py,sha256=Dj916B4TQRIhI7HZVevl3foFrCsPp0eeWwvGbgX3-_A,21875
229
- dtlpy-1.112.9.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
230
- dtlpy-1.112.9.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
231
- dtlpy-1.112.9.data/scripts/dlp.py,sha256=ZpfJvYE1_OTSorEYBphqTOutnHSb5TqOXh0y_mUCTJs,4393
229
+ dtlpy-1.113.10.data/scripts/dlp,sha256=-F0vSCWuSOOtgERAtsPMPyMmzitjhB7Yeftg_PDlDjw,10
230
+ dtlpy-1.113.10.data/scripts/dlp.bat,sha256=QOvx8Dlx5dUbCTMpwbhOcAIXL1IWmgVRSboQqDhIn3A,37
231
+ dtlpy-1.113.10.data/scripts/dlp.py,sha256=ZpfJvYE1_OTSorEYBphqTOutnHSb5TqOXh0y_mUCTJs,4393
232
232
  tests/assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
233
233
  tests/assets/models_flow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
234
  tests/assets/models_flow/failedmain.py,sha256=n8F4eu_u7JPrJ1zedbJPvv9e3lHb3ihoErqrBIcseEc,1847
@@ -236,9 +236,9 @@ tests/assets/models_flow/main.py,sha256=vnDKyVZaae2RFpvwS22Hzi6Dt2LJerH4yQrmKtaT
236
236
  tests/assets/models_flow/main_model.py,sha256=Hl_tv7Q6KaRL3yLkpUoLMRqu5-ab1QsUYPL6RPEoamw,2042
237
237
  tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  tests/features/environment.py,sha256=ZZNSN8TObnNMkX0IQhSolAs_9I_V9hHFL_IZjG0jrGU,18909
239
- dtlpy-1.112.9.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
240
- dtlpy-1.112.9.dist-info/METADATA,sha256=2C1bQeEFV6GqQlo05c8mbX3WL-lWjZbydg5CkrP739I,5469
241
- dtlpy-1.112.9.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
242
- dtlpy-1.112.9.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
243
- dtlpy-1.112.9.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
244
- dtlpy-1.112.9.dist-info/RECORD,,
239
+ dtlpy-1.113.10.dist-info/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
240
+ dtlpy-1.113.10.dist-info/METADATA,sha256=vyFPyK_u6Jdx3Fj5scfdLqseFuoQiqFAPk_WXSnYcl8,5470
241
+ dtlpy-1.113.10.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
242
+ dtlpy-1.113.10.dist-info/entry_points.txt,sha256=C4PyKthCs_no88HU39eioO68oei64STYXC2ooGZTc4Y,43
243
+ dtlpy-1.113.10.dist-info/top_level.txt,sha256=ZWuLmQGUOtWAdgTf4Fbx884w1o0vBYq9dEc1zLv9Mig,12
244
+ dtlpy-1.113.10.dist-info/RECORD,,
File without changes