ob-metaflow-extensions 1.1.170rc2__tar.gz → 1.1.171__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 (98) hide show
  1. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/PKG-INFO +1 -1
  2. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/__init__.py +0 -1
  3. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/fast_bakery/docker_environment.py +11 -1
  4. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/ob_internal.py +0 -1
  5. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/ob_metaflow_extensions.egg-info/PKG-INFO +1 -1
  6. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/ob_metaflow_extensions.egg-info/SOURCES.txt +0 -2
  7. ob_metaflow_extensions-1.1.171/ob_metaflow_extensions.egg-info/requires.txt +3 -0
  8. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/setup.py +2 -2
  9. ob_metaflow_extensions-1.1.170rc2/metaflow_extensions/outerbounds/plugins/apps/app_cli.py +0 -29
  10. ob_metaflow_extensions-1.1.170rc2/metaflow_extensions/outerbounds/plugins/fast_bakery/baker.py +0 -110
  11. ob_metaflow_extensions-1.1.170rc2/ob_metaflow_extensions.egg-info/requires.txt +0 -3
  12. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/README.md +0 -0
  13. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/__init__.py +0 -0
  14. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/config/__init__.py +0 -0
  15. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/apps/__init__.py +0 -0
  16. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/apps/app_utils.py +0 -0
  17. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/apps/consts.py +0 -0
  18. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/apps/deploy_decorator.py +0 -0
  19. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/apps/supervisord_utils.py +0 -0
  20. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/auth_server.py +0 -0
  21. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/aws/__init__.py +0 -0
  22. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/aws/assume_role.py +0 -0
  23. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/aws/assume_role_decorator.py +0 -0
  24. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/card_utilities/__init__.py +0 -0
  25. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/card_utilities/async_cards.py +0 -0
  26. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/card_utilities/extra_components.py +0 -0
  27. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/card_utilities/injector.py +0 -0
  28. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/__init__.py +0 -0
  29. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/coreweave.py +0 -0
  30. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/checkpoint_datastores/nebius.py +0 -0
  31. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/fast_bakery/__init__.py +0 -0
  32. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery.py +0 -0
  33. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_cli.py +0 -0
  34. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_decorator.py +0 -0
  35. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/kubernetes/__init__.py +0 -0
  36. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/kubernetes/kubernetes_client.py +0 -0
  37. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/kubernetes/pod_killer.py +0 -0
  38. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nim/card.py +0 -0
  39. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nim/nim_decorator.py +0 -0
  40. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nim/nim_manager.py +0 -0
  41. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nim/utils.py +0 -0
  42. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/__init__.py +0 -0
  43. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/constants.py +0 -0
  44. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/exceptions.py +0 -0
  45. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/heartbeat_store.py +0 -0
  46. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf.py +0 -0
  47. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_cli.py +0 -0
  48. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/nvcf_decorator.py +0 -0
  49. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvcf/utils.py +0 -0
  50. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/__init__.py +0 -0
  51. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/exceptions.py +0 -0
  52. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/nvct.py +0 -0
  53. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/nvct_cli.py +0 -0
  54. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/nvct_decorator.py +0 -0
  55. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/nvct_runner.py +0 -0
  56. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/nvct/utils.py +0 -0
  57. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/ollama/__init__.py +0 -0
  58. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/ollama/constants.py +0 -0
  59. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/ollama/exceptions.py +0 -0
  60. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/ollama/ollama.py +0 -0
  61. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/ollama/status_card.py +0 -0
  62. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/perimeters.py +0 -0
  63. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/profilers/deco_injector.py +0 -0
  64. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/profilers/gpu_profile_decorator.py +0 -0
  65. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/secrets/__init__.py +0 -0
  66. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/secrets/secrets.py +0 -0
  67. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowflake/__init__.py +0 -0
  68. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowflake/snowflake.py +0 -0
  69. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/__init__.py +0 -0
  70. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark.py +0 -0
  71. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_cli.py +0 -0
  72. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_client.py +0 -0
  73. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_decorator.py +0 -0
  74. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_exceptions.py +0 -0
  75. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_job.py +0 -0
  76. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/snowpark/snowpark_service_spec.py +0 -0
  77. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/tensorboard/__init__.py +0 -0
  78. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/torchtune/__init__.py +0 -0
  79. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/vllm/__init__.py +0 -0
  80. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/vllm/constants.py +0 -0
  81. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/vllm/exceptions.py +0 -0
  82. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/vllm/status_card.py +0 -0
  83. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/plugins/vllm/vllm_manager.py +0 -0
  84. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/profilers/__init__.py +0 -0
  85. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/profilers/gpu.py +0 -0
  86. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/remote_config.py +0 -0
  87. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/__init__.py +0 -0
  88. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/global_aliases_for_metaflow_package.py +0 -0
  89. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/azure/__init__.py +0 -0
  90. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/gcp/__init__.py +0 -0
  91. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/kubernetes/__init__.py +0 -0
  92. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/ollama/__init__.py +0 -0
  93. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/snowflake/__init__.py +0 -0
  94. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/torchtune/__init__.py +0 -0
  95. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/metaflow_extensions/outerbounds/toplevel/plugins/vllm/__init__.py +0 -0
  96. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/ob_metaflow_extensions.egg-info/dependency_links.txt +0 -0
  97. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/ob_metaflow_extensions.egg-info/top_level.txt +0 -0
  98. {ob_metaflow_extensions-1.1.170rc2 → ob_metaflow_extensions-1.1.171}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob_metaflow_extensions
3
- Version: 1.1.170rc2
3
+ Version: 1.1.171
4
4
  Summary: Outerbounds Platform Extensions for Metaflow
5
5
  Author: Outerbounds, Inc.
6
6
  License: Commercial
@@ -324,7 +324,6 @@ CLIS_DESC = [
324
324
  ("nvct", ".nvct.nvct_cli.cli"),
325
325
  ("fast-bakery", ".fast_bakery.fast_bakery_cli.cli"),
326
326
  ("snowpark", ".snowpark.snowpark_cli.cli"),
327
- ("app", ".apps.app_cli.cli"),
328
327
  ]
329
328
  STEP_DECORATORS_DESC = [
330
329
  ("nvidia", ".nvcf.nvcf_decorator.NvcfDecorator"),
@@ -90,6 +90,7 @@ class DockerEnvironmentException(MetaflowException):
90
90
  class DockerEnvironment(MetaflowEnvironment):
91
91
  TYPE = "fast-bakery"
92
92
  _filecache = None
93
+ _force_rebuild = False
93
94
 
94
95
  def __init__(self, flow):
95
96
  self.skipped_steps = set()
@@ -178,12 +179,20 @@ class DockerEnvironment(MetaflowEnvironment):
178
179
 
179
180
  if self.skipped_steps:
180
181
  self.delegate = CondaEnvironment(self.flow)
182
+ self.delegate._force_rebuild = self._force_rebuild
181
183
  self.delegate.set_local_root(self.local_root)
182
184
  self.delegate.validate_environment(echo, self.datastore_type)
183
185
  self.delegate.init_environment(echo, self.skipped_steps)
184
186
 
185
187
  def _bake(self, steps) -> Dict[str, FastBakeryApiResponse]:
186
188
  metafile_path = get_fastbakery_metafile_path(self.local_root, self.flow.name)
189
+ if self._force_rebuild:
190
+ # clear the metafile if force rebuilding, effectively skipping the cache.
191
+ try:
192
+ os.remove(metafile_path)
193
+ except Exception:
194
+ pass
195
+
187
196
  logger_lock = threading.Lock()
188
197
 
189
198
  @cache_request(metafile_path)
@@ -201,7 +210,8 @@ class DockerEnvironment(MetaflowEnvironment):
201
210
  bakery.pypi_packages(pypi_packages)
202
211
  bakery.conda_packages(conda_packages)
203
212
  bakery.base_image(base_image)
204
- # bakery.ignore_cache()
213
+ if self._force_rebuild:
214
+ bakery.ignore_cache()
205
215
 
206
216
  with logger_lock:
207
217
  self.logger(f"🍳 Baking [{ref}] ...")
@@ -1,2 +1 @@
1
1
  from ..plugins.kubernetes.pod_killer import PodKiller
2
- from ..plugins.fast_bakery.baker import bake_image
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow-extensions
3
- Version: 1.1.170rc2
3
+ Version: 1.1.171
4
4
  Summary: Outerbounds Platform Extensions for Metaflow
5
5
  Author: Outerbounds, Inc.
6
6
  License: Commercial
@@ -7,7 +7,6 @@ metaflow_extensions/outerbounds/plugins/__init__.py
7
7
  metaflow_extensions/outerbounds/plugins/auth_server.py
8
8
  metaflow_extensions/outerbounds/plugins/perimeters.py
9
9
  metaflow_extensions/outerbounds/plugins/apps/__init__.py
10
- metaflow_extensions/outerbounds/plugins/apps/app_cli.py
11
10
  metaflow_extensions/outerbounds/plugins/apps/app_utils.py
12
11
  metaflow_extensions/outerbounds/plugins/apps/consts.py
13
12
  metaflow_extensions/outerbounds/plugins/apps/deploy_decorator.py
@@ -23,7 +22,6 @@ metaflow_extensions/outerbounds/plugins/checkpoint_datastores/__init__.py
23
22
  metaflow_extensions/outerbounds/plugins/checkpoint_datastores/coreweave.py
24
23
  metaflow_extensions/outerbounds/plugins/checkpoint_datastores/nebius.py
25
24
  metaflow_extensions/outerbounds/plugins/fast_bakery/__init__.py
26
- metaflow_extensions/outerbounds/plugins/fast_bakery/baker.py
27
25
  metaflow_extensions/outerbounds/plugins/fast_bakery/docker_environment.py
28
26
  metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery.py
29
27
  metaflow_extensions/outerbounds/plugins/fast_bakery/fast_bakery_cli.py
@@ -0,0 +1,3 @@
1
+ boto3
2
+ kubernetes
3
+ ob-metaflow==2.15.18.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.170rc2"
5
+ version = "1.1.171"
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.15.17.1",
21
+ "ob-metaflow == 2.15.18.1",
22
22
  ],
23
23
  )
@@ -1,29 +0,0 @@
1
- from metaflow._vendor import click
2
- import os
3
-
4
- os.environ["APPS_CLI_LOADING_IN_METAFLOW"] = "true"
5
- OUTERBOUNDS_APP_CLI_AVAILABLE = True
6
-
7
- try:
8
- import outerbounds.apps.app_cli as ob_apps_cli
9
- except ImportError:
10
- OUTERBOUNDS_APP_CLI_AVAILABLE = False
11
-
12
-
13
- if not OUTERBOUNDS_APP_CLI_AVAILABLE:
14
-
15
- @click.group()
16
- def _cli():
17
- pass
18
-
19
- @_cli.group(help="Dummy Group to append to CLI for Safety")
20
- def app():
21
- pass
22
-
23
- @app.command(help="Dummy Command to append to CLI for Safety")
24
- def cannot_deploy():
25
- raise Exception("Outerbounds App CLI not available")
26
-
27
- cli = _cli
28
- else:
29
- cli = ob_apps_cli.cli
@@ -1,110 +0,0 @@
1
- import threading
2
- import time
3
- import sys
4
- from typing import Dict, Optional, Any, Callable
5
- from functools import partial
6
- from metaflow.exception import MetaflowException
7
- from metaflow.metaflow_config import FAST_BAKERY_URL
8
-
9
- from .fast_bakery import FastBakery, FastBakeryApiResponse, FastBakeryException
10
- from .docker_environment import cache_request
11
-
12
- BAKERY_METAFILE = ".imagebakery-cache"
13
-
14
-
15
- class BakerException(MetaflowException):
16
- headline = "Ran into an error while baking image"
17
-
18
- def __init__(self, msg):
19
- super(BakerException, self).__init__(msg)
20
-
21
-
22
- def bake_image(
23
- cache_file_path: str,
24
- ref: Optional[str] = None,
25
- python: Optional[str] = None,
26
- pypi_packages: Optional[Dict[str, str]] = None,
27
- conda_packages: Optional[Dict[str, str]] = None,
28
- base_image: Optional[str] = None,
29
- logger: Optional[Callable[[str], Any]] = None,
30
- ) -> FastBakeryApiResponse:
31
- """
32
- Bakes a Docker image with the specified dependencies.
33
-
34
- Args:
35
- cache_file_path: Path to the cache file
36
- ref: Reference identifier for this bake (for logging purposes)
37
- python: Python version to use
38
- pypi_packages: Dictionary of PyPI packages and versions
39
- conda_packages: Dictionary of Conda packages and versions
40
- base_image: Base Docker image to use
41
- logger: Optional logger function to output progress
42
-
43
- Returns:
44
- FastBakeryApiResponse: The response from the bakery service
45
-
46
- Raises:
47
- BakerException: If the baking process fails
48
- """
49
- # Default logger if none provided
50
- if logger is None:
51
- logger = partial(print, file=sys.stderr)
52
-
53
- # Thread lock for logging
54
- logger_lock = threading.Lock()
55
- images_baked = 0
56
-
57
- @cache_request(cache_file_path)
58
- def _cached_bake(
59
- ref=None,
60
- python=None,
61
- pypi_packages=None,
62
- conda_packages=None,
63
- base_image=None,
64
- ):
65
- try:
66
- bakery = FastBakery(url=FAST_BAKERY_URL)
67
- bakery._reset_payload()
68
- bakery.python_version(python)
69
- bakery.pypi_packages(pypi_packages)
70
- bakery.conda_packages(conda_packages)
71
- bakery.base_image(base_image)
72
- # bakery.ignore_cache()
73
-
74
- with logger_lock:
75
- logger(f"🍳 Baking [{ref}] ...")
76
- logger(f" 🐍 Python: {python}")
77
-
78
- if pypi_packages:
79
- logger(f" 📦 PyPI packages:")
80
- for package, version in pypi_packages.items():
81
- logger(f" 🔧 {package}: {version}")
82
-
83
- if conda_packages:
84
- logger(f" 📦 Conda packages:")
85
- for package, version in conda_packages.items():
86
- logger(f" 🔧 {package}: {version}")
87
-
88
- logger(f" 🏗️ Base image: {base_image}")
89
-
90
- start_time = time.time()
91
- res = bakery.bake()
92
- # TODO: Get actual bake time from bakery
93
- bake_time = time.time() - start_time
94
-
95
- with logger_lock:
96
- logger(f"🏁 Baked [{ref}] in {bake_time:.2f} seconds!")
97
- nonlocal images_baked
98
- images_baked += 1
99
- return res
100
- except FastBakeryException as ex:
101
- raise BakerException(f"Bake [{ref}] failed: {str(ex)}")
102
-
103
- # Call the cached bake function with the provided parameters
104
- return _cached_bake(
105
- ref=ref,
106
- python=python,
107
- pypi_packages=pypi_packages,
108
- conda_packages=conda_packages,
109
- base_image=base_image,
110
- )
@@ -1,3 +0,0 @@
1
- boto3
2
- kubernetes
3
- ob-metaflow==2.15.17.1