ob-metaflow-extensions 1.1.121__tar.gz → 1.1.123__tar.gz

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.

Potentially problematic release.


This version of ob-metaflow-extensions might be problematic. Click here for more details.

Files changed (56) hide show
  1. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/PKG-INFO +1 -1
  2. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf.py +46 -7
  3. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_job.py +1 -1
  4. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/ob_metaflow_extensions.egg-info/PKG-INFO +1 -1
  5. ob-metaflow-extensions-1.1.123/ob_metaflow_extensions.egg-info/requires.txt +3 -0
  6. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/setup.py +2 -2
  7. ob-metaflow-extensions-1.1.121/ob_metaflow_extensions.egg-info/requires.txt +0 -3
  8. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/README.md +0 -0
  9. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/__init__.py +0 -0
  10. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/config/__init__.py +0 -0
  11. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/__init__.py +0 -0
  12. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/auth_server.py +0 -0
  13. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/fast_bakery/__init__.py +0 -0
  14. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/fast_bakery/docker_environment.py +0 -0
  15. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery.py +0 -0
  16. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_cli.py +0 -0
  17. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_decorator.py +0 -0
  18. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/kubernetes/__init__.py +0 -0
  19. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/kubernetes/kubernetes_client.py +0 -0
  20. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nim/__init__.py +0 -0
  21. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nim/nim_manager.py +0 -0
  22. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/__init__.py +0 -0
  23. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/constants.py +0 -0
  24. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/exceptions.py +0 -0
  25. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/heartbeat_store.py +0 -0
  26. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_cli.py +0 -0
  27. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_decorator.py +0 -0
  28. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/nvcf/utils.py +0 -0
  29. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/perimeters.py +0 -0
  30. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/profilers/deco_injector.py +0 -0
  31. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/profilers/gpu_profile_decorator.py +0 -0
  32. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/secrets/__init__.py +0 -0
  33. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/secrets/secrets.py +0 -0
  34. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowflake/__init__.py +0 -0
  35. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowflake/snowflake.py +0 -0
  36. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/__init__.py +0 -0
  37. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark.py +0 -0
  38. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_cli.py +0 -0
  39. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_client.py +0 -0
  40. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_decorator.py +0 -0
  41. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_exceptions.py +0 -0
  42. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_service_spec.py +0 -0
  43. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/plugins/tensorboard/__init__.py +0 -0
  44. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/profilers/__init__.py +0 -0
  45. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/profilers/gpu.py +0 -0
  46. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/remote_config.py +0 -0
  47. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/__init__.py +0 -0
  48. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/global_aliases_for_metaflow_package.py +0 -0
  49. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/plugins/azure/__init__.py +0 -0
  50. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/plugins/gcp/__init__.py +0 -0
  51. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/plugins/kubernetes/__init__.py +0 -0
  52. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/metaflow_extensions/outerbounds/toplevel/plugins/snowflake/__init__.py +0 -0
  53. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/ob_metaflow_extensions.egg-info/SOURCES.txt +0 -0
  54. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/ob_metaflow_extensions.egg-info/dependency_links.txt +0 -0
  55. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/ob_metaflow_extensions.egg-info/top_level.txt +0 -0
  56. {ob-metaflow-extensions-1.1.121 → ob-metaflow-extensions-1.1.123}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow-extensions
3
- Version: 1.1.121
3
+ Version: 1.1.123
4
4
  Summary: Outerbounds Platform Extensions for Metaflow
5
5
  Author: Outerbounds, Inc.
6
6
  License: Commercial
@@ -1,8 +1,9 @@
1
1
  import json
2
2
  import os
3
+ import time
3
4
  import threading
4
- from urllib.parse import urlparse
5
5
  from urllib.request import HTTPError, Request, URLError, urlopen
6
+ from functools import wraps
6
7
 
7
8
  from metaflow import util
8
9
  from metaflow.mflog import (
@@ -12,7 +13,6 @@ from metaflow.mflog import (
12
13
  tail_logs,
13
14
  get_log_tailer,
14
15
  )
15
- import requests
16
16
  from .exceptions import NvcfJobFailedException, NvcfPollingConnectionError
17
17
 
18
18
  # Redirect structured logs to $PWD/.logs/
@@ -23,6 +23,35 @@ STDOUT_PATH = os.path.join(LOGS_DIR, STDOUT_FILE)
23
23
  STDERR_PATH = os.path.join(LOGS_DIR, STDERR_FILE)
24
24
 
25
25
 
26
+ RETRIABLE_STATUS_CODES = [500]
27
+
28
+
29
+ def retry_on_status(status_codes=RETRIABLE_STATUS_CODES, max_retries=3, delay=1):
30
+ def decorator(func):
31
+ @wraps(func)
32
+ def wrapper(*args, **kwargs):
33
+ retries = 0
34
+ while retries <= max_retries:
35
+ try:
36
+ return func(*args, **kwargs)
37
+ except HTTPError as e:
38
+ if e.code in status_codes and retries < max_retries:
39
+ retries += 1
40
+ print(
41
+ f"[@nvidia] Received {e.code} error, retrying ({retries}/{max_retries})..."
42
+ )
43
+ time.sleep(delay)
44
+ continue
45
+ raise
46
+ except Exception:
47
+ raise
48
+ return func(*args, **kwargs)
49
+
50
+ return wrapper
51
+
52
+ return decorator
53
+
54
+
26
55
  class Nvcf(object):
27
56
  def __init__(self, metadata, datastore, environment, function_id, ngc_api_key):
28
57
  self.metadata = metadata
@@ -220,7 +249,11 @@ class Job(object):
220
249
  @property
221
250
  def status(self):
222
251
  if self._status not in [JobStatus.SUCCESSFUL, JobStatus.FAILED]:
223
- self._poll()
252
+ try:
253
+ self._poll()
254
+ except (HTTPError, URLError) as e:
255
+ self._status = JobStatus.FAILED
256
+ raise NvcfPollingConnectionError(e)
224
257
  return self._status
225
258
 
226
259
  @property
@@ -239,6 +272,7 @@ class Job(object):
239
272
  def result(self):
240
273
  return self._result
241
274
 
275
+ @retry_on_status(status_codes=RETRIABLE_STATUS_CODES, max_retries=3, delay=5)
242
276
  def _poll(self):
243
277
  try:
244
278
  headers = {
@@ -257,11 +291,16 @@ class Job(object):
257
291
  else:
258
292
  self._status = JobStatus.FAILED
259
293
  self._result = data
260
- elif response.getcode() in [400, 500]:
261
- self._status = JobStatus.FAILED
262
294
  elif response.getcode() != 202:
263
295
  print(
264
296
  f"[@nvidia] Unexpected response code: {response.getcode()}. Please notify an Outerbounds support engineer if this error persists."
265
297
  )
266
- except (HTTPError, URLError) as e:
267
- raise NvcfPollingConnectionError(e)
298
+ self._status = JobStatus.FAILED
299
+ # 4xx and 5xx responses go in 'except' block
300
+ except HTTPError as e:
301
+ if e.code not in RETRIABLE_STATUS_CODES:
302
+ self._status = JobStatus.FAILED
303
+ raise
304
+ except URLError:
305
+ self._status = JobStatus.FAILED
306
+ raise
@@ -207,7 +207,7 @@ class RunningJob(object):
207
207
 
208
208
  @property
209
209
  def is_waiting(self):
210
- return self.status == "PENDING"
210
+ return self.status in ["PENDING", "UNKNOWN"]
211
211
 
212
212
  @property
213
213
  def is_running(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow-extensions
3
- Version: 1.1.121
3
+ Version: 1.1.123
4
4
  Summary: Outerbounds Platform Extensions for Metaflow
5
5
  Author: Outerbounds, Inc.
6
6
  License: Commercial
@@ -0,0 +1,3 @@
1
+ boto3
2
+ kubernetes
3
+ ob-metaflow==2.13.8.1
@@ -2,7 +2,7 @@ from setuptools import setup, find_namespace_packages
2
2
  from pathlib import Path
3
3
 
4
4
 
5
- version = "1.1.121"
5
+ version = "1.1.123"
6
6
  this_directory = Path(__file__).parent
7
7
  long_description = (this_directory / "README.md").read_text()
8
8
 
@@ -18,6 +18,6 @@ setup(
18
18
  install_requires=[
19
19
  "boto3",
20
20
  "kubernetes",
21
- "ob-metaflow == 2.13.4.1",
21
+ "ob-metaflow == 2.13.8.1",
22
22
  ],
23
23
  )
@@ -1,3 +0,0 @@
1
- boto3
2
- kubernetes
3
- ob-metaflow==2.13.4.1