ob-metaflow-extensions 1.4.14rc0__py2.py3-none-any.whl → 1.4.15__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.

Potentially problematic release.


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

@@ -106,6 +106,7 @@ class AppDeployDecorator(StepDecorator):
106
106
  code_package_key=package_sha,
107
107
  name_prefix=default_name,
108
108
  image=image,
109
+ max_entropy=self.MAX_ENTROPY,
109
110
  default_tags=[{k: str(v)} for k, v in default_tags.items()],
110
111
  )
111
112
  current._update_env(
@@ -1,6 +1,6 @@
1
1
  from . import app_cli
2
2
  from . import config
3
- from .deployer import AppDeployer, apps, DeployedApp
3
+ from .deployer import AppDeployer, apps
4
4
  from .config.typed_configs import (
5
5
  ReplicaConfigDict,
6
6
  ResourceConfigDict,
@@ -3,8 +3,8 @@ from .perimeters import PerimeterExtractor
3
3
  from .capsule import CapsuleApi
4
4
  import json
5
5
  from ._state_machine import DEPLOYMENT_READY_CONDITIONS, LogLine
6
- from .app_config import AppConfig, AppConfigError, AuthType
7
- from .capsule import CapsuleDeployer, list_and_filter_capsules, _format_url_string
6
+ from .app_config import AppConfig, AppConfigError
7
+ from .capsule import CapsuleDeployer, list_and_filter_capsules
8
8
  from functools import partial
9
9
  import sys
10
10
  import uuid
@@ -37,16 +37,6 @@ class AppDeployer(TypedCoreConfig):
37
37
  self._app_config = AppConfig(self._config)
38
38
  return self._app_config
39
39
 
40
- def _set_perimenter_and_api_server(self):
41
- if self._state["perimeter"] is None:
42
- perimeter, api_server = PerimeterExtractor.during_metaflow_execution()
43
- if perimeter is None or api_server is None:
44
- raise RuntimeError(
45
- "Perimeter not found in metaflow config or environment variables"
46
- )
47
- self._state["perimeter"] = perimeter
48
- self._state["api_url"] = api_server
49
-
50
40
  # Things that need to be set before deploy
51
41
  @classmethod
52
42
  def _set_state(
@@ -57,6 +47,7 @@ class AppDeployer(TypedCoreConfig):
57
47
  code_package_key: str = None,
58
48
  name_prefix: str = None,
59
49
  image: str = None,
50
+ max_entropy: int = 4,
60
51
  default_tags: List[Dict[str, str]] = None,
61
52
  project: str = None,
62
53
  branch: str = None,
@@ -67,10 +58,15 @@ class AppDeployer(TypedCoreConfig):
67
58
  cls._state["code_package_key"] = code_package_key
68
59
  cls._state["name_prefix"] = name_prefix
69
60
  cls._state["image"] = image
61
+ cls._state["max_entropy"] = max_entropy
70
62
  cls._state["default_tags"] = default_tags
71
63
  cls._state["project"] = project
72
64
  cls._state["branch"] = branch
73
65
 
66
+ assert (
67
+ max_entropy > 0
68
+ ), "max_entropy must be greater than 0. Since AppDeployer's deploy fn can be called many time inside a step itself."
69
+
74
70
  def deploy(
75
71
  self,
76
72
  readiness_condition=DEPLOYMENT_READY_CONDITIONS.ATLEAST_ONE_RUNNING,
@@ -82,7 +78,13 @@ class AppDeployer(TypedCoreConfig):
82
78
  **kwargs,
83
79
  ) -> "DeployedApp":
84
80
 
85
- self._set_perimenter_and_api_server()
81
+ # Name setting from top level if none is set in the code
82
+ if self._deploy_config._core_config.name is None:
83
+ name = self._state[
84
+ "name_prefix"
85
+ ] # for now the name-prefix cannot be very large.
86
+ entropy = uuid.uuid4().hex[: self._state["max_entropy"]]
87
+ self._deploy_config._core_config.name = f"{name}-{entropy}"
86
88
 
87
89
  if len(self._state["default_tags"]) > 0:
88
90
  self._deploy_config._core_config.tags = (
@@ -172,41 +174,10 @@ class DeployedApp:
172
174
  self._deployed_version = deployed_version
173
175
  self._deployed_at = deployed_at
174
176
 
175
- @classmethod
176
- def _get_capsule_api(cls) -> CapsuleApi:
177
+ def _get_capsule_api(self) -> CapsuleApi:
177
178
  perimeter, api_server = PerimeterExtractor.during_metaflow_execution()
178
179
  return CapsuleApi(api_server, perimeter)
179
180
 
180
- @classmethod
181
- def from_capsule_id(cls, capsule_id: str) -> "DeployedApp":
182
- capsule_api = cls._get_capsule_api()
183
- capsule = capsule_api.get(capsule_id)
184
- capsule_type = (
185
- capsule.get("spec", {}).get("authConfig", {}).get("authType", None)
186
- )
187
- public_url = (
188
- capsule.get("status", {}).get("accessInfo", {}).get("outOfClusterURL", None)
189
- )
190
- name = capsule.get("spec", {}).get(
191
- "displayName",
192
- )
193
- deployed_version = capsule.get(
194
- "version",
195
- )
196
- deployed_at = capsule.get("metadata", {}).get(
197
- "createdAt",
198
- )
199
- if any(i is None for i in [capsule_type, public_url, name]):
200
- raise ValueError(f"Invalid capsule id: {capsule_id}")
201
- return cls(
202
- capsule_id,
203
- capsule_type,
204
- _format_url_string(public_url),
205
- name,
206
- deployed_version,
207
- deployed_at,
208
- )
209
-
210
181
  def logs(self, previous=False) -> Dict[str, List[LogLine]]:
211
182
  """
212
183
  Returns a dictionary of worker_id to logs.
@@ -314,15 +285,6 @@ class DeployedApp:
314
285
  f"deployed_version='{self._deployed_version}')"
315
286
  )
316
287
 
317
- def auth(self):
318
- if self.auth_style != AuthType.API:
319
- raise ValueError(
320
- "Only API auth style is supported for accessing auth headers"
321
- )
322
- from metaflow.metaflow_config import SERVICE_HEADERS
323
-
324
- return SERVICE_HEADERS
325
-
326
288
 
327
289
  class apps:
328
290
 
@@ -108,4 +108,4 @@ from ..plugins.snowflake import Snowflake
108
108
  from ..plugins.checkpoint_datastores import nebius_checkpoints, coreweave_checkpoints
109
109
  from ..plugins.aws import assume_role
110
110
  from . import ob_internal
111
- from .ob_internal import AppDeployer, DeployedApp
111
+ from .ob_internal import AppDeployer
@@ -1,4 +1,4 @@
1
1
  from ..plugins.kubernetes.pod_killer import PodKiller
2
2
  from ..plugins.fast_bakery.baker import bake_image
3
3
  from ..plugins.apps import core as app_core
4
- from ..plugins.apps.core import AppDeployer, DeployedApp
4
+ from ..plugins.apps.core import AppDeployer
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ob-metaflow-extensions
3
- Version: 1.4.14rc0
3
+ Version: 1.4.15
4
4
  Summary: Outerbounds Platform Extensions for Metaflow
5
5
  Author: Outerbounds, Inc.
6
6
  License: Commercial
7
7
  Description-Content-Type: text/markdown
8
8
  Requires-Dist: boto3
9
9
  Requires-Dist: kubernetes
10
- Requires-Dist: ob-metaflow (==2.18.3.2)
10
+ Requires-Dist: ob-metaflow (==2.18.7.1)
11
11
 
12
12
  # Outerbounds platform package
13
13
 
@@ -6,12 +6,12 @@ metaflow_extensions/outerbounds/plugins/auth_server.py,sha256=_Q9_2EL0Xy77bCRphk
6
6
  metaflow_extensions/outerbounds/plugins/perimeters.py,sha256=QXh3SFP7GQbS-RAIxUOPbhPzQ7KDFVxZkTdKqFKgXjI,2697
7
7
  metaflow_extensions/outerbounds/plugins/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  metaflow_extensions/outerbounds/plugins/apps/app_cli.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- metaflow_extensions/outerbounds/plugins/apps/app_deploy_decorator.py,sha256=Skk4UjTw3h355JYOnsKr86U4oqpn9qchM1I9uG5MeSA,4859
9
+ metaflow_extensions/outerbounds/plugins/apps/app_deploy_decorator.py,sha256=WWFvyl0EDUbp_UwmWjXBqlLfPEZ-lq98NJ5F5skBDKU,4901
10
10
  metaflow_extensions/outerbounds/plugins/apps/app_utils.py,sha256=sw9whU17lAzlD2K2kEDNjlk1Ib-2xE2UNhJkmzD8Qv8,8543
11
11
  metaflow_extensions/outerbounds/plugins/apps/consts.py,sha256=iHsyqbUg9k-rgswCs1Jxf5QZIxR1V-peCDRjgr9kdBM,177
12
12
  metaflow_extensions/outerbounds/plugins/apps/deploy_decorator.py,sha256=VkmiMdNYHhNdt-Qm9AVv7aE2LWFsIFEc16YcOYjwF6Q,8568
13
13
  metaflow_extensions/outerbounds/plugins/apps/supervisord_utils.py,sha256=GQoN2gyPClcpR9cLldJmbCfqXnoAHxp8xUnY7vzaYtY,9026
14
- metaflow_extensions/outerbounds/plugins/apps/core/__init__.py,sha256=bfvH1wZpSZq4-Lu25U9MlsZmwqkP8_MH7QLxKwRfXXU,250
14
+ metaflow_extensions/outerbounds/plugins/apps/core/__init__.py,sha256=c6uCgKlgEkTmM9BVdAO-m3vZvUpK2KW_AZZ2236now4,237
15
15
  metaflow_extensions/outerbounds/plugins/apps/core/_state_machine.py,sha256=al907t2C86BPf4V1V03PLTJRJMOc8gdl1CxLLbklnDU,20281
16
16
  metaflow_extensions/outerbounds/plugins/apps/core/app_cli.py,sha256=rD7oimnkEm___K2Ttiwe12B-Xzqi76tk4_HyFQArBQs,42736
17
17
  metaflow_extensions/outerbounds/plugins/apps/core/app_config.py,sha256=PHt-HdNfTHIuhY-eB5vkRMp1RKQNWJ4DKdgZWyYgUuc,4167
@@ -20,7 +20,7 @@ metaflow_extensions/outerbounds/plugins/apps/core/capsule.py,sha256=sIlnmBZYf38S
20
20
  metaflow_extensions/outerbounds/plugins/apps/core/click_importer.py,sha256=kgoPQmK_-8PSSTc3QMSaynCLQ5VWTkKFOC69FPURyXA,998
21
21
  metaflow_extensions/outerbounds/plugins/apps/core/config_schema.yaml,sha256=zLZiDpg1OvZQyZmx2Y4j38B6f206eamOS2zH0dZmCcg,9955
22
22
  metaflow_extensions/outerbounds/plugins/apps/core/dependencies.py,sha256=JlWT9f27yzZeJPlqTQk134WDfQgOdyxC5iaw3pLlhqY,4006
23
- metaflow_extensions/outerbounds/plugins/apps/core/deployer.py,sha256=5WBV-VXaqWymhteLsq13uwWzoTsMc-R1v55Ap_yhypk,10660
23
+ metaflow_extensions/outerbounds/plugins/apps/core/deployer.py,sha256=dNKlDu6n8SufEd5NKmsErl1RYhQXuEe_DgtA0mk7awg,9472
24
24
  metaflow_extensions/outerbounds/plugins/apps/core/perimeters.py,sha256=ETlqTkHDvVaWusrbNncFf7pcGJarj0r-5qodC4gZWQM,3068
25
25
  metaflow_extensions/outerbounds/plugins/apps/core/secrets.py,sha256=sgDiAmpSC8Y5xjlaOEp79F6m0S3x4RONf_vJ5PUAfu8,6127
26
26
  metaflow_extensions/outerbounds/plugins/apps/core/utils.py,sha256=2M2zU8DhbAlJee8P0xKXINAku81PcUylS3sVCSb0TUs,7896
@@ -115,8 +115,8 @@ metaflow_extensions/outerbounds/plugins/vllm/vllm_manager.py,sha256=sp_TX2SrImJG
115
115
  metaflow_extensions/outerbounds/profilers/__init__.py,sha256=wa_jhnCBr82TBxoS0e8b6_6sLyZX0fdHicuGJZNTqKw,29
116
116
  metaflow_extensions/outerbounds/profilers/gpu.py,sha256=3Er8uKQzfm_082uadg4yn_D4Y-iSCgzUfFmguYxZsz4,27485
117
117
  metaflow_extensions/outerbounds/toplevel/__init__.py,sha256=qWUJSv_r5hXJ7jV_On4nEasKIfUCm6_UjkjXWA_A1Ts,90
118
- metaflow_extensions/outerbounds/toplevel/global_aliases_for_metaflow_package.py,sha256=mWJkV_uHFJoKYfkcPRBocXBMVF-wW1rf_QqNHLvIH30,3836
119
- metaflow_extensions/outerbounds/toplevel/ob_internal.py,sha256=jYuv_RV3zerO8oVSDqyW-IDT--xTV4GLPirZ6vOiv80,206
118
+ metaflow_extensions/outerbounds/toplevel/global_aliases_for_metaflow_package.py,sha256=StTRMBHjuxfxe-wQs8ikoAZc4xnhlceY0R4avaJ1Ps8,3823
119
+ metaflow_extensions/outerbounds/toplevel/ob_internal.py,sha256=DXCaAtLzlE-bFIiVWEv-iV2JKIWsoSGaUeH4jIQZ9gs,193
120
120
  metaflow_extensions/outerbounds/toplevel/s3_proxy.py,sha256=zdqG7Z12cGuoYYCi2P4kqC3WsgL3xfdJGIb7ejecHH4,2862
121
121
  metaflow_extensions/outerbounds/toplevel/plugins/azure/__init__.py,sha256=WUuhz2YQfI4fz7nIcipwwWq781eaoHEk7n4GAn1npDg,63
122
122
  metaflow_extensions/outerbounds/toplevel/plugins/gcp/__init__.py,sha256=BbZiaH3uILlEZ6ntBLKeNyqn3If8nIXZFq_Apd7Dhco,70
@@ -126,7 +126,7 @@ metaflow_extensions/outerbounds/toplevel/plugins/optuna/__init__.py,sha256=6D1wL
126
126
  metaflow_extensions/outerbounds/toplevel/plugins/snowflake/__init__.py,sha256=LptpH-ziXHrednMYUjIaosS1SXD3sOtF_9_eRqd8SJw,50
127
127
  metaflow_extensions/outerbounds/toplevel/plugins/torchtune/__init__.py,sha256=uTVkdSk3xZ7hEKYfdlyVteWj5KeDwaM1hU9WT-_YKfI,50
128
128
  metaflow_extensions/outerbounds/toplevel/plugins/vllm/__init__.py,sha256=ekcgD3KVydf-a0xMI60P4uy6ePkSEoFHiGnDq1JM940,45
129
- ob_metaflow_extensions-1.4.14rc0.dist-info/METADATA,sha256=uK2AjSt-xmcbORtNU9FBkyiNr5aDoB7Mfgr_CQuqRUA,522
130
- ob_metaflow_extensions-1.4.14rc0.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
131
- ob_metaflow_extensions-1.4.14rc0.dist-info/top_level.txt,sha256=NwG0ukwjygtanDETyp_BUdtYtqIA_lOjzFFh1TsnxvI,20
132
- ob_metaflow_extensions-1.4.14rc0.dist-info/RECORD,,
129
+ ob_metaflow_extensions-1.4.15.dist-info/METADATA,sha256=ITZYVHFNFyum2A979q_dlwPOh9qYZd8TQDpUTpRy-aE,519
130
+ ob_metaflow_extensions-1.4.15.dist-info/WHEEL,sha256=bb2Ot9scclHKMOLDEHY6B2sicWOgugjFKaJsT7vwMQo,110
131
+ ob_metaflow_extensions-1.4.15.dist-info/top_level.txt,sha256=NwG0ukwjygtanDETyp_BUdtYtqIA_lOjzFFh1TsnxvI,20
132
+ ob_metaflow_extensions-1.4.15.dist-info/RECORD,,