metaflow 2.17.0__py2.py3-none-any.whl → 2.17.1__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.
@@ -28,6 +28,36 @@ def find_makefile():
28
28
  if makefile_candidate.is_file():
29
29
  return makefile_candidate
30
30
 
31
+ # 4) When developing, Metaflow might be installed with --editable, which means the devtools will not be located within site-packages.
32
+ # We read the actual location from package metadata in this case, but only do this heavier operation if the above lookups fail.
33
+ try:
34
+ import json
35
+ from importlib.metadata import Distribution
36
+
37
+ direct_url = Distribution.from_name("metaflow").read_text("direct_url.json")
38
+ if direct_url:
39
+ content = json.loads(direct_url)
40
+ url = content.get("url", "")
41
+ if not url.startswith("file://"):
42
+ return None
43
+
44
+ makefile_candidate = (
45
+ Path(url.replace("file://", "")) / "devtools" / "Makefile"
46
+ )
47
+ if makefile_candidate.is_file():
48
+ return makefile_candidate
49
+ else:
50
+ # No dist metadata found. This is tied to the version of pip being used
51
+ # Do not bother with .egg-link installs due to the handling of the file contents being a headache due to lack of a unified spec.
52
+ print(
53
+ "Could not locate an installation of Metaflow. No package metadata found."
54
+ )
55
+ print(
56
+ "If Metaflow is installed as editable, try upgrading the version of pip and reinstalling in order to generate proper package metadata.\n"
57
+ )
58
+ except Exception:
59
+ return None
60
+
31
61
  return None
32
62
 
33
63
 
@@ -133,6 +133,16 @@ def read_info_version():
133
133
  return None
134
134
 
135
135
 
136
+ def make_public_version(version_string):
137
+ """
138
+ Takes a complex version string and returns a public, PEP 440-compliant version.
139
+ It removes local version identifiers (+...) and development markers (-...).
140
+ """
141
+ base_version = version_string.split("+", 1)[0]
142
+ public_version = base_version.split("-", 1)[0]
143
+ return public_version
144
+
145
+
136
146
  def get_version(public=False):
137
147
  """Tracks the version number.
138
148
 
@@ -170,6 +180,11 @@ def get_version(public=False):
170
180
  ) # Version info is cached in INFO file; includes extension info
171
181
 
172
182
  if version:
183
+ # If we have a version from the INFO file, use it directly.
184
+ # However, if we are asked for a public version, we parse it to make sure
185
+ # that no local information is included.
186
+ if public:
187
+ version = make_public_version(version)
173
188
  _version_cache[public] = version
174
189
  return version
175
190
 
@@ -3,7 +3,7 @@ import json
3
3
  import os
4
4
  import sys
5
5
 
6
- from typing import Any, ClassVar, Dict, Optional, TYPE_CHECKING, Type
6
+ from typing import Any, ClassVar, Dict, Optional, TYPE_CHECKING, Type, List
7
7
 
8
8
  from metaflow.metaflow_config import CLICK_API_PROCESS_CONFIG
9
9
 
@@ -67,15 +67,10 @@ class DeployerImpl(object):
67
67
 
68
68
  # Reload the CLI with an "empty" flow -- this will remove any configuration
69
69
  # and parameter options. They are re-added in from_cli (called below).
70
- to_reload = [
71
- "metaflow.cli",
72
- "metaflow.cli_components.run_cmds",
73
- "metaflow.cli_components.init_cmd",
74
- ]
75
70
  with flow_context(None):
76
71
  [
77
72
  importlib.reload(sys.modules[module])
78
- for module in to_reload
73
+ for module in self.to_reload
79
74
  if module in sys.modules
80
75
  ]
81
76
 
@@ -102,6 +97,19 @@ class DeployerImpl(object):
102
97
  self.top_level_kwargs = kwargs
103
98
  self.api = MetaflowAPI.from_cli(self.flow_file, start)
104
99
 
100
+ @property
101
+ def to_reload(self) -> List[str]:
102
+ """
103
+ List of modules to reload when the deployer is initialized.
104
+ This is used to ensure that the CLI is in a clean state before
105
+ deploying the flow.
106
+ """
107
+ return [
108
+ "metaflow.cli",
109
+ "metaflow.cli_components.run_cmds",
110
+ "metaflow.cli_components.init_cmd",
111
+ ]
112
+
105
113
  @property
106
114
  def deployer_kwargs(self) -> Dict[str, Any]:
107
115
  raise NotImplementedError
@@ -367,11 +367,11 @@ class MutableFlow:
367
367
  "Mutable flow overriding flow decorator '%s' "
368
368
  "(removing existing decorator and adding new one)" % flow_deco.name
369
369
  )
370
- self._flow_cls._flow_decorators = [
371
- d
370
+ self._flow_cls._flow_decorators = {
371
+ d: self._flow_cls._flow_decorators[d]
372
372
  for d in self._flow_cls._flow_decorators
373
- if d.name != flow_deco.name
374
- ]
373
+ if d != flow_deco.name
374
+ }
375
375
  _do_add()
376
376
  elif duplicates == MutableFlow.ERROR:
377
377
  # If we error, we raise an exception
@@ -472,7 +472,7 @@ class MutableFlow:
472
472
  % (len(old_deco_list) - len(new_deco_list))
473
473
  )
474
474
  if new_deco_list:
475
- self._flow_cls._flow_decorators[deconame] = new_deco_list
475
+ self._flow_cls._flow_decorators[deco_name] = new_deco_list
476
476
  else:
477
477
  del self._flow_cls._flow_decorators[deco_name]
478
478
  return did_remove
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.17.0"
1
+ metaflow_version = "2.17.1"
@@ -257,10 +257,11 @@ shell: setup-tilt
257
257
  echo "🔎 Using $$user_shell for interactive session."; \
258
258
  echo "🐍 If you installed Metaflow in a virtual environment, activate it now."; \
259
259
  if [ -f "$(DEVTOOLS_DIR)/aws_config" ]; then \
260
- env METAFLOW_HOME="$(DEVTOOLS_DIR)" \
260
+ env -u AWS_PROFILE \
261
+ -u AWS_SHARED_CREDENTIALS_FILE \
262
+ METAFLOW_HOME="$(DEVTOOLS_DIR)" \
261
263
  METAFLOW_PROFILE=local \
262
264
  AWS_CONFIG_FILE="$(DEVTOOLS_DIR)/aws_config" \
263
- AWS_SHARED_CREDENTIALS_FILE= \
264
265
  "$$user_shell" -i; \
265
266
  else \
266
267
  env METAFLOW_HOME="$(DEVTOOLS_DIR)" \
@@ -593,7 +593,7 @@ if "ui" in enabled_components:
593
593
  'uiBackend.metaflowDatastoreSysRootS3=s3://metaflow-test',
594
594
  'uiBackend.metaflowS3EndpointURL=http://minio.default.svc.cluster.local:9000',
595
595
  'uiBackend.image.name=public.ecr.aws/outerbounds/metaflow_metadata_service',
596
- 'uiBackend.image.tag=2.4.13-2-g70af4ed',
596
+ 'uiBackend.image.tag=2.5.0',
597
597
  'uiBackend.env[0].name=AWS_ACCESS_KEY_ID',
598
598
  'uiBackend.env[0].value=rootuser',
599
599
  'uiBackend.env[1].name=AWS_SECRET_ACCESS_KEY',
@@ -603,7 +603,7 @@ if "ui" in enabled_components:
603
603
  'uiBackend.resources.requests.memory=256Mi',
604
604
  'uiStatic.metaflowUIBackendURL=http://localhost:8083/api',
605
605
  'uiStatic.image.name=public.ecr.aws/outerbounds/metaflow_ui',
606
- 'uiStatic.image.tag=v1.3.13-5-g5dd049e',
606
+ 'uiStatic.image.tag=v1.3.14',
607
607
  'uiStatic.resources.requests.cpu=25m',
608
608
  'uiStatic.resources.requests.memory=64Mi',
609
609
  'uiStatic.resources.limits.cpu=50m',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaflow
3
- Version: 2.17.0
3
+ Version: 2.17.1
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.17.0; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.17.1; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -22,7 +22,7 @@ metaflow/metaflow_current.py,sha256=pfkXmkyHeMJhxIs6HBJNBEaBDpcl5kz9Wx5mW6F_3qo,
22
22
  metaflow/metaflow_environment.py,sha256=20PIhA5R_rJneNj8f8UaWRmznGRPcEd6hP7goj_rc1s,11477
23
23
  metaflow/metaflow_git.py,sha256=Pb_VtvQzcjpuuM7UfC2u5kz85EbPMUfspl2UrPWBQMM,3647
24
24
  metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,418
25
- metaflow/metaflow_version.py,sha256=KJJAxhOMY28DaavMpvJUzvw-G6MI-29Fi2A6AEcQpok,7495
25
+ metaflow/metaflow_version.py,sha256=iuL9QoWjvUpGKIRp6dM9zxp0ED_iqXNihl__Qu9f1dc,8115
26
26
  metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
27
27
  metaflow/multicore_utils.py,sha256=yEo5T6Gemn4_vl8b6IOz7fsTUYtEyqa3AaKZgJY96Wc,4974
28
28
  metaflow/parameters.py,sha256=b3rS6P-TeEj2JgPEKaiy0ys1B_JtOGJ6XM0KkY2layc,18649
@@ -36,7 +36,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
36
36
  metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
37
37
  metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
38
38
  metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
39
- metaflow/version.py,sha256=XFgMunwxLtn9LRW_fsHkzorB2mBbwIUjTsgDGX1FNQo,28
39
+ metaflow/version.py,sha256=cOW5Gzl3yHX8RxsVq7TnPv58zlZoFrqwP_PGsg1JfRQ,28
40
40
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
41
41
  metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
42
42
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -162,7 +162,7 @@ metaflow/client/filecache.py,sha256=Wy0yhhCqC1JZgebqi7z52GCwXYnkAqMZHTtxThvwBgM,
162
162
  metaflow/cmd/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
163
163
  metaflow/cmd/configure_cmd.py,sha256=o-DKnUf2FBo_HiMVyoyzQaGBSMtpbEPEdFTQZ0hkU-k,33396
164
164
  metaflow/cmd/main_cli.py,sha256=iKptsPcys0OKileZdE8Pp0_y8t7pm94SL3b870Qhk30,2972
165
- metaflow/cmd/make_wrapper.py,sha256=N8L4u8QZAryH0sAjRsdEqG-gTj2S4LUsfDizOemrTR0,1604
165
+ metaflow/cmd/make_wrapper.py,sha256=5uWZw_2jqYmI7gm1pGwPxXCII56WBKarNKJp9FRMN3c,3029
166
166
  metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw,5156
167
167
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
168
168
  metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
@@ -375,7 +375,7 @@ metaflow/plugins/uv/uv_environment.py,sha256=AYZICrBEq3Bv-taXktJwu9DhKFxNooPFwlc
375
375
  metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
376
376
  metaflow/runner/click_api.py,sha256=w0-47ntQD4Dd-LiSJ9vPSjlvW5YBniNSmlf95lcXs5E,24026
377
377
  metaflow/runner/deployer.py,sha256=OAAMG_l3Q1ClcY_603VZnhclVkfFe3Rf8bFRodC3poc,17138
378
- metaflow/runner/deployer_impl.py,sha256=zTING0_fwP44JcGo69DuNrVut5KqdBVzYOM7MYTZgIY,7049
378
+ metaflow/runner/deployer_impl.py,sha256=q-IvwnNKPRUTpOkfzrZNrkIsjp-L-Ju75dtXmfDUqbI,7299
379
379
  metaflow/runner/metaflow_runner.py,sha256=uo3BzcAfZ67VT_f-TPe5ZHiWHn6uuojWusOMGksvX14,18178
380
380
  metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
381
381
  metaflow/runner/nbrun.py,sha256=LhJu-Teoi7wTkNxg0kpNPVXFxH_9P4lvtp0ysMEIFJ8,7299
@@ -422,16 +422,16 @@ metaflow/user_configs/config_options.py,sha256=d3hKA6WRPe21PdTl7sBnxIp5sE6zBpRtg
422
422
  metaflow/user_configs/config_parameters.py,sha256=Loa5wu3vIs0SLyGhbOo8b88nWgCuZ09k24EqC_lI7n4,20890
423
423
  metaflow/user_decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
424
  metaflow/user_decorators/common.py,sha256=0u9NRLQ95TfJCjWVEOGT4MJ9WoQgAMBM9kJ2gJGlVjk,5362
425
- metaflow/user_decorators/mutable_flow.py,sha256=icF7XFCS5FdlW3OEL68ZbQOtTPhLsUycKcFKVOeK_vU,19435
425
+ metaflow/user_decorators/mutable_flow.py,sha256=EywKTN3cnXPQF_s62wQaC4a4aH14j8oeqzD3yZaiDxw,19467
426
426
  metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
427
427
  metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
428
428
  metaflow/user_decorators/user_step_decorator.py,sha256=JYNGXONWCpzwn-_bF5WiAkof4Ii9tRS4xdK8ojSxG6M,26007
429
- metaflow-2.17.0.data/data/share/metaflow/devtools/Makefile,sha256=5n89OGIC_kE4wxtEI66VCucN-b-1w5bqvGeZYmeRGz8,13737
430
- metaflow-2.17.0.data/data/share/metaflow/devtools/Tiltfile,sha256=I55XTG4RBnrMfDcYRtREXqqS8T9bF8agkZq0DlvdFLk,21404
431
- metaflow-2.17.0.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
432
- metaflow-2.17.0.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
433
- metaflow-2.17.0.dist-info/METADATA,sha256=KtUYktrM1mNhRT9fVjx5DLXa9e3Dz6SIsKpMmOfaey0,6740
434
- metaflow-2.17.0.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
435
- metaflow-2.17.0.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
436
- metaflow-2.17.0.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
437
- metaflow-2.17.0.dist-info/RECORD,,
429
+ metaflow-2.17.1.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
430
+ metaflow-2.17.1.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
431
+ metaflow-2.17.1.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
432
+ metaflow-2.17.1.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
433
+ metaflow-2.17.1.dist-info/METADATA,sha256=mvfncSAe9iX2JRZxjAHd8YTHZOk8rbCAJHpU23wEtI0,6740
434
+ metaflow-2.17.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
435
+ metaflow-2.17.1.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
436
+ metaflow-2.17.1.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
437
+ metaflow-2.17.1.dist-info/RECORD,,