metaflow 2.15.9__py2.py3-none-any.whl → 2.15.10__py2.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.
@@ -40,6 +40,7 @@ unsupported_decorators = {
40
40
  "snowpark": "Step *%s* is marked for execution on Snowpark with Argo Workflows which isn't currently supported.",
41
41
  "slurm": "Step *%s* is marked for execution on Slurm with Argo Workflows which isn't currently supported.",
42
42
  "nvidia": "Step *%s* is marked for execution on Nvidia with Argo Workflows which isn't currently supported.",
43
+ "nvct": "Step *%s* is marked for execution on Nvct with Argo Workflows which isn't currently supported.",
43
44
  }
44
45
 
45
46
 
@@ -1,3 +1,4 @@
1
+ import errno
1
2
  import json
2
3
  import os
3
4
  import re
@@ -137,6 +138,10 @@ class MetaflowS3InvalidRange(MetaflowException):
137
138
  headline = "S3 invalid range"
138
139
 
139
140
 
141
+ class MetaflowS3InsufficientDiskSpace(MetaflowException):
142
+ headline = "Insufficient disk space"
143
+
144
+
140
145
  class S3Object(object):
141
146
  """
142
147
  This object represents a path or an object in S3,
@@ -1377,8 +1382,10 @@ class S3(object):
1377
1382
  elif error_code == "NoSuchBucket":
1378
1383
  raise MetaflowS3URLException("Specified S3 bucket doesn't exist.")
1379
1384
  error = str(err)
1385
+ except OSError as e:
1386
+ if e.errno == errno.ENOSPC:
1387
+ raise MetaflowS3InsufficientDiskSpace(str(e))
1380
1388
  except Exception as ex:
1381
- # TODO specific error message for out of disk space
1382
1389
  error = str(ex)
1383
1390
  if tmp:
1384
1391
  os.unlink(tmp.name)
@@ -1,5 +1,6 @@
1
1
  from __future__ import print_function
2
2
 
3
+ import errno
3
4
  import json
4
5
  import time
5
6
  import math
@@ -108,6 +109,7 @@ ERROR_VERIFY_FAILED = 9
108
109
  ERROR_LOCAL_FILE_NOT_FOUND = 10
109
110
  ERROR_INVALID_RANGE = 11
110
111
  ERROR_TRANSIENT = 12
112
+ ERROR_OUT_OF_DISK_SPACE = 13
111
113
 
112
114
 
113
115
  def format_result_line(idx, prefix, url="", local=""):
@@ -277,6 +279,17 @@ def worker(result_file_name, queue, mode, s3config):
277
279
  err = convert_to_client_error(e)
278
280
  handle_client_error(err, idx, result_file)
279
281
  continue
282
+ except OSError as e:
283
+ tmp.close()
284
+ os.unlink(tmp.name)
285
+ if e.errno == errno.ENOSPC:
286
+ result_file.write(
287
+ "%d %d\n" % (idx, -ERROR_OUT_OF_DISK_SPACE)
288
+ )
289
+ else:
290
+ result_file.write("%d %d\n" % (idx, -ERROR_TRANSIENT))
291
+ result_file.flush()
292
+ continue
280
293
  except (SSLError, Exception) as e:
281
294
  tmp.close()
282
295
  os.unlink(tmp.name)
@@ -643,6 +656,8 @@ def exit(exit_code, url):
643
656
  msg = "Local file not found: %s" % url
644
657
  elif exit_code == ERROR_TRANSIENT:
645
658
  msg = "Transient error for url: %s" % url
659
+ elif exit_code == ERROR_OUT_OF_DISK_SPACE:
660
+ msg = "Out of disk space when downloading URL: %s" % url
646
661
  else:
647
662
  msg = "Unknown error"
648
663
  print("s3op failed:\n%s" % msg, file=sys.stderr)
@@ -1173,6 +1188,8 @@ def get(
1173
1188
  )
1174
1189
  if verify:
1175
1190
  verify_info.append((url, sz))
1191
+ elif sz == -ERROR_OUT_OF_DISK_SPACE:
1192
+ exit(ERROR_OUT_OF_DISK_SPACE, url)
1176
1193
  elif sz == -ERROR_URL_ACCESS_DENIED:
1177
1194
  denied_url = url
1178
1195
  break
@@ -227,7 +227,8 @@ class CondaStepDecorator(StepDecorator):
227
227
  self.interpreter = (
228
228
  self.environment.interpreter(self.step)
229
229
  if not any(
230
- decorator.name in ["batch", "kubernetes", "nvidia", "snowpark", "slurm"]
230
+ decorator.name
231
+ in ["batch", "kubernetes", "nvidia", "snowpark", "slurm", "nvct"]
231
232
  for decorator in next(
232
233
  step for step in self.flow if step.name == self.step
233
234
  ).decorators
@@ -326,6 +326,7 @@ class CondaEnvironment(MetaflowEnvironment):
326
326
  "nvidia",
327
327
  "snowpark",
328
328
  "slurm",
329
+ "nvct",
329
330
  ]:
330
331
  target_platform = getattr(decorator, "target_platform", "linux-64")
331
332
  break
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.15.9"
1
+ metaflow_version = "2.15.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.15.9
3
+ Version: 2.15.10
4
4
  Summary: Metaflow: More AI and ML, Less Engineering
5
5
  Author: Metaflow Developers
6
6
  Author-email: help@metaflow.org
@@ -26,7 +26,7 @@ License-File: LICENSE
26
26
  Requires-Dist: requests
27
27
  Requires-Dist: boto3
28
28
  Provides-Extra: stubs
29
- Requires-Dist: metaflow-stubs==2.15.9; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.15.10; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -37,7 +37,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
37
37
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
38
38
  metaflow/util.py,sha256=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
39
39
  metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
40
- metaflow/version.py,sha256=tTlVvolaB_v0CwYKrCJvwFACvGOTTmI-ceha9iDWSJE,28
40
+ metaflow/version.py,sha256=TmvdoNgSSOj8vRXQ742Hmg2q7XLz3WdGatF-u_YzsjE,29
41
41
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
42
42
  metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
43
43
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -211,7 +211,7 @@ metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
211
211
  metaflow/plugins/argo/argo_client.py,sha256=A1kI9rjVjCadDsBscZ2Wk8xRBI6GNgWV6SU7TyrdfrI,16530
212
212
  metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
213
213
  metaflow/plugins/argo/argo_workflows.py,sha256=_Mf5l1nJy2M1h-dsTdbsGAH3_sRI8pYg3djniutY6QA,186566
214
- metaflow/plugins/argo/argo_workflows_cli.py,sha256=Ka-ea4x19E6DrYgGm5ZwormxEbTGdun8fyHl-mh0tfc,38265
214
+ metaflow/plugins/argo/argo_workflows_cli.py,sha256=X_GfJpc7jfP7DGuttl7U952767eBF6Ut45aWgoJzHVI,38375
215
215
  metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
216
216
  metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
217
217
  metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=lRRHUcpiyJZFltthxZoIp7aJWwy7pcdhaRm0etKN9es,14182
@@ -282,8 +282,8 @@ metaflow/plugins/datastores/s3_storage.py,sha256=CZdNqaKtxDXQbEg2YHyphph3hWcLIE5
282
282
  metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
283
283
  metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
284
284
  metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
285
- metaflow/plugins/datatools/s3/s3.py,sha256=ThISU4XjXhDqAtfgH_PgtNp0OxF_bhzCgNozYIeMa7g,66993
286
- metaflow/plugins/datatools/s3/s3op.py,sha256=I7XkDJvVvvLt8SmXNSZjSNONIa2m3QlT5-ZL8g6erno,46936
285
+ metaflow/plugins/datatools/s3/s3.py,sha256=3xrWD6pXoVRpuAQHyLGVya79UIE0S8AqAqe2prg4yMw,67182
286
+ metaflow/plugins/datatools/s3/s3op.py,sha256=20XEOCCK_nAVm92ZOjLPTzLnTs9xrIX0Gj-ELxkuNPY,47742
287
287
  metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
288
288
  metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
289
289
  metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
@@ -330,8 +330,8 @@ metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtSh
330
330
  metaflow/plugins/metadata_providers/service.py,sha256=9j0db_EOGFdb49YTgr9q4EWqVAm1YUaW-Baj5gyRqIo,22809
331
331
  metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
332
332
  metaflow/plugins/pypi/bootstrap.py,sha256=SNONquX6QnTbu7htmhaQeVeZ2ofaFaUCDScRIrTTERc,14718
333
- metaflow/plugins/pypi/conda_decorator.py,sha256=piFcE4uGmWhhbGlxMK0GHd7BGEyqy6r9BFy8Mjoi80Q,15937
334
- metaflow/plugins/pypi/conda_environment.py,sha256=yeTPGuu38EQ8aYzXUbc6cLc9b2NMLLEnxS-C73PcDHk,22250
333
+ metaflow/plugins/pypi/conda_decorator.py,sha256=N0HGiaS1mRsa6qT4eYzu2C3DHtas22QIXowW4vEl44M,15961
334
+ metaflow/plugins/pypi/conda_environment.py,sha256=JuTfGfUML_AoeW4ASGkqPbm8OqtWsbtRwDNwrRTRqS4,22274
335
335
  metaflow/plugins/pypi/micromamba.py,sha256=LLJ2dGGOEyld07W8iI6dtE01h2Y1PQnBhU-dMBssZ3c,16502
336
336
  metaflow/plugins/pypi/parsers.py,sha256=gpOOG2Ph95wI73MWCAi7XjpK0gYhv5k5YIGBs73QPuE,8556
337
337
  metaflow/plugins/pypi/pip.py,sha256=H0cIy8odpZ-JTn4SwF0b74tuC3uRU7X8TdAQJ2kODG8,13971
@@ -393,12 +393,12 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
393
393
  metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
394
394
  metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
395
395
  metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
396
- metaflow-2.15.9.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
397
- metaflow-2.15.9.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
398
- metaflow-2.15.9.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
399
- metaflow-2.15.9.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
400
- metaflow-2.15.9.dist-info/METADATA,sha256=GGjvModROT2_4AhGn4h3nw8mEyOo0v-osUymrqE2y-A,6740
401
- metaflow-2.15.9.dist-info/WHEEL,sha256=Td9E1opt19FSuwsk_gcDwtsGPmyXw7uz9xQf-y2gvl8,109
402
- metaflow-2.15.9.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
403
- metaflow-2.15.9.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
404
- metaflow-2.15.9.dist-info/RECORD,,
396
+ metaflow-2.15.10.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
397
+ metaflow-2.15.10.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
398
+ metaflow-2.15.10.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
399
+ metaflow-2.15.10.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
400
+ metaflow-2.15.10.dist-info/METADATA,sha256=1WbwvJhEhKbVwd6A2QAtAb3BOPdahwn5bFVijWfEzO4,6742
401
+ metaflow-2.15.10.dist-info/WHEEL,sha256=_itY3bZllKbLk93i0gzNzdweAt5eocJdfN7atrjOnvQ,109
402
+ metaflow-2.15.10.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
403
+ metaflow-2.15.10.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
404
+ metaflow-2.15.10.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (79.0.0)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any