metaflow 2.15.1__py2.py3-none-any.whl → 2.15.3__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.
metaflow/__init__.py CHANGED
@@ -119,12 +119,11 @@ from .includefile import IncludeFile
119
119
  # Decorators
120
120
  from .decorators import step, _import_plugin_decorators
121
121
 
122
- # Config parsers
123
- from .plugins.pypi.parsers import (
124
- requirements_txt_parser,
125
- pyproject_toml_parser,
126
- conda_environment_yml_parser,
127
- )
122
+
123
+ # Parsers (for configs) for now
124
+ from .plugins import _import_tl_plugins
125
+
126
+ _import_tl_plugins(globals())
128
127
 
129
128
  # this auto-generates decorator functions from Decorator objects
130
129
  # in the top-level metaflow namespace
@@ -2,15 +2,47 @@ import sys
2
2
  import subprocess
3
3
  from pathlib import Path
4
4
  import sysconfig
5
+ import site
6
+
7
+
8
+ def find_makefile():
9
+ possible_dirs = []
10
+
11
+ # 1) The standard sysconfig-based location
12
+ data_dir = sysconfig.get_paths()["data"]
13
+ possible_dirs.append(Path(data_dir) / "share" / "metaflow" / "devtools")
14
+
15
+ # 2) The user base (e.g. ~/.local on many systems)
16
+ user_base = site.getuserbase() # e.g. /home/runner/.local
17
+ possible_dirs.append(Path(user_base) / "share" / "metaflow" / "devtools")
18
+
19
+ # 3) site-packages can vary, we can guess share/.. near each site-packages
20
+ # (Works if pip actually placed devtools near site-packages.)
21
+ for p in site.getsitepackages():
22
+ possible_dirs.append(Path(p).parent / "share" / "metaflow" / "devtools")
23
+ user_site = site.getusersitepackages()
24
+ possible_dirs.append(Path(user_site).parent / "share" / "metaflow" / "devtools")
25
+
26
+ for candidate_dir in possible_dirs:
27
+ makefile_candidate = candidate_dir / "Makefile"
28
+ if makefile_candidate.is_file():
29
+ return makefile_candidate
30
+
31
+ return None
5
32
 
6
33
 
7
34
  def main():
8
- share_dir = Path(sysconfig.get_paths()["data"]) / "share" / "metaflow" / "devtools"
9
- makefile_path = share_dir / "Makefile"
35
+ makefile_path = find_makefile()
36
+ if not makefile_path:
37
+ print("ERROR: Could not find executable in any known location.")
38
+ sys.exit(1)
10
39
  cmd = ["make", "-f", str(makefile_path)] + sys.argv[1:]
11
- # subprocess.run(cmd, check=True)
40
+
12
41
  try:
13
42
  completed = subprocess.run(cmd, check=True)
14
43
  sys.exit(completed.returncode)
15
44
  except subprocess.CalledProcessError as ex:
16
45
  sys.exit(ex.returncode)
46
+ except KeyboardInterrupt:
47
+ print("Process interrupted by user. Exiting cleanly.")
48
+ sys.exit(1)
@@ -198,6 +198,7 @@ _plugin_categories = {
198
198
  list(x.commands)[0] if len(x.commands) == 1 else "too many commands"
199
199
  ),
200
200
  "runner_cli": lambda x: x.name,
201
+ "tl_plugin": None,
201
202
  }
202
203
 
203
204
 
@@ -167,6 +167,12 @@ DEPLOYER_IMPL_PROVIDERS_DESC = [
167
167
  ),
168
168
  ]
169
169
 
170
+ TL_PLUGINS_DESC = [
171
+ ("requirements_txt_parser", ".pypi.parsers.requirements_txt_parser"),
172
+ ("pyproject_toml_parser", ".pypi.parsers.pyproject_toml_parser"),
173
+ ("conda_environment_yml_parser", ".pypi.parsers.conda_environment_yml_parser"),
174
+ ]
175
+
170
176
  process_plugins(globals())
171
177
 
172
178
 
@@ -207,6 +213,8 @@ GCP_CLIENT_PROVIDERS = resolve_plugins("gcp_client_provider")
207
213
  if sys.version_info >= (3, 7):
208
214
  DEPLOYER_IMPL_PROVIDERS = resolve_plugins("deployer_impl_provider")
209
215
 
216
+ TL_PLUGINS = resolve_plugins("tl_plugin")
217
+
210
218
  from .cards.card_modules import MF_EXTERNAL_CARDS
211
219
 
212
220
  # Cards; due to the way cards were designed, it is harder to make them fit
@@ -251,3 +259,9 @@ CARDS = [
251
259
  TestRefreshComponentCard,
252
260
  ]
253
261
  merge_lists(CARDS, MF_EXTERNAL_CARDS, "type")
262
+
263
+
264
+ def _import_tl_plugins(globals_dict):
265
+
266
+ for name, p in TL_PLUGINS.items():
267
+ globals_dict[name] = p
metaflow/version.py CHANGED
@@ -1 +1 @@
1
- metaflow_version = "2.15.1"
1
+ metaflow_version = "2.15.3"
@@ -8,6 +8,7 @@ help:
8
8
  @echo " ui - Open Metaflow UI"
9
9
  @echo " dashboard - Open Minikube dashboard"
10
10
  @echo " down - Stop and clean up the environment"
11
+ @echo " all-up - Start the development environment with all services"
11
12
  @echo " help - Show this help message"
12
13
 
13
14
  HELM_VERSION := v3.14.0
@@ -24,10 +25,10 @@ MINIKUBE := $(MINIKUBE_DIR)/minikube
24
25
  TILT_DIR := $(DEVTOOLS_DIR)/tilt
25
26
  TILT := $(TILT_DIR)/tilt
26
27
  TILTFILE := $(MKFILE_DIR)/Tiltfile
27
- MAKE_CMD := $(MAKE) -C "$(MKFILE_DIR)"
28
+ MAKE_CMD := $(MAKE) -f "$(MKFILE_PATH)"
28
29
 
29
30
  MINIKUBE_CPUS ?= 4
30
- MINIKUBE_MEMORY ?= 6000
31
+ MINIKUBE_MEMORY ?= 6144
31
32
  MINIKUBE_DISK_SIZE ?= 20g
32
33
 
33
34
  ifeq ($(shell uname), Darwin)
@@ -129,7 +130,8 @@ setup-minikube:
129
130
  --cpus $(MINIKUBE_CPUS) \
130
131
  --memory $(MINIKUBE_MEMORY) \
131
132
  --disk-size $(MINIKUBE_DISK_SIZE) \
132
- --driver docker; \
133
+ --driver docker \
134
+ || { echo "❌ Failed to start Minikube (check if Docker is running)"; exit 1; }; \
133
135
  echo "🔌 Enabling metrics-server and dashboard (quietly)..."; \
134
136
  $(MINIKUBE) addons enable metrics-server >/dev/null 2>&1; \
135
137
  $(MINIKUBE) addons enable dashboard >/dev/null 2>&1; \
@@ -170,7 +172,6 @@ up: install-brew check-docker install-curl install-gum setup-minikube install-he
170
172
  @echo 'trap "exit" INT TERM' >> $(DEVTOOLS_DIR)/start.sh
171
173
  @echo 'trap "kill 0" EXIT' >> $(DEVTOOLS_DIR)/start.sh
172
174
  @echo 'eval $$($(MINIKUBE) docker-env)' >> $(DEVTOOLS_DIR)/start.sh
173
-
174
175
  @echo 'if [ -n "$$SERVICES_OVERRIDE" ]; then' >> "$(DEVTOOLS_DIR)/start.sh"
175
176
  @echo ' echo "🌐 Using user-provided list of services: $$SERVICES_OVERRIDE"' >> "$(DEVTOOLS_DIR)/start.sh"
176
177
  @echo ' SERVICES="$$SERVICES_OVERRIDE"' >> "$(DEVTOOLS_DIR)/start.sh"
@@ -186,11 +187,14 @@ up: install-brew check-docker install-curl install-gum setup-minikube install-he
186
187
  @chmod +x $(DEVTOOLS_DIR)/start.sh
187
188
  @$(DEVTOOLS_DIR)/start.sh
188
189
 
190
+ all-up:
191
+ @echo "🚀 Starting up all services..."
192
+ SERVICES_OVERRIDE=all $(MAKE_CMD) up
193
+
189
194
  down:
190
195
  @echo "🛑 Stopping all services..."
191
196
  @-pkill -f "$(MINIKUBE) tunnel" 2>/dev/null || true
192
197
  @echo "⏹️ Stopping Tilt..."
193
- -PATH="$(MINIKUBE_DIR):$(TILT_DIR):$$PATH" tilt down -f $(TILTFILE)
194
198
  @echo "🧹 Cleaning up Minikube..."
195
199
  $(MAKE_CMD) teardown-minikube
196
200
  @echo "🗑️ Removing Tilt binary and directory..."
@@ -201,7 +205,7 @@ down:
201
205
 
202
206
  shell: setup-tilt
203
207
  @echo "⏳ Checking if development environment is up..."
204
- @set -e; \
208
+ @set -eu; \
205
209
  for i in $$(seq 1 90); do \
206
210
  if "$(TILT)" get session >/dev/null 2>&1; then \
207
211
  found_session=1; \
@@ -210,7 +214,7 @@ shell: setup-tilt
210
214
  sleep 2; \
211
215
  fi; \
212
216
  done; \
213
- if [ -z "$${found_session}" ]; then \
217
+ if [ -z "$${found_session:-}" ]; then \
214
218
  echo "❌ Development environment is not up."; \
215
219
  echo " Please run 'metaflow-dev up' in another terminal, then re-run 'metaflow-dev shell'."; \
216
220
  exit 1; \
@@ -220,7 +224,10 @@ shell: setup-tilt
220
224
  "$(TILT)" get uiresource generate-configs >/dev/null 2>&1; \
221
225
  status=$$?; \
222
226
  if [ $$status -eq 0 ]; then \
223
- "$(TILT)" wait --for=condition=Ready uiresource/generate-configs; \
227
+ if ! "$(TILT)" wait --for=condition=Ready uiresource/generate-configs --timeout=300s; then \
228
+ echo "❌ Timed out waiting for development environment to be ready."; \
229
+ exit 1; \
230
+ fi; \
224
231
  break; \
225
232
  elif [ $$status -eq 127 ]; then \
226
233
  echo "❌ Development environment is not up."; \
@@ -267,7 +274,10 @@ create-dev-shell: setup-tilt
267
274
  echo "fi" >> $$SHELL_PATH && \
268
275
  echo "" >> $$SHELL_PATH && \
269
276
  echo "echo \"⏳ Waiting for development environment to be ready...\"" >> $$SHELL_PATH && \
270
- echo "$(TILT) wait --for=condition=Ready uiresource/generate-configs" >> $$SHELL_PATH && \
277
+ echo "if ! $(TILT) wait --for=condition=Ready uiresource/generate-configs --timeout=300s; then" >> $$SHELL_PATH && \
278
+ echo " echo \"❌ Timed out waiting for development environment to be ready.\"" >> $$SHELL_PATH && \
279
+ echo " exit 1" >> $$SHELL_PATH && \
280
+ echo "fi" >> $$SHELL_PATH && \
271
281
  echo "" >> $$SHELL_PATH && \
272
282
  echo "echo \"🔧 Starting a new shell for development environment...\"" >> $$SHELL_PATH && \
273
283
  echo "if [ -n \"\$$SHELL\" ]; then" >> $$SHELL_PATH && \
@@ -317,6 +327,6 @@ ui: setup-tilt
317
327
  @echo "🔗 Opening Metaflow UI at http://localhost:3000"
318
328
  @open http://localhost:3000
319
329
 
320
- .PHONY: install-helm setup-minikube setup-tilt teardown-minikube tunnel up down check-docker install-curl install-gum install-brew up down dashboard shell ui help
330
+ .PHONY: install-helm setup-minikube setup-tilt teardown-minikube tunnel up down check-docker install-curl install-gum install-brew up down dashboard shell ui all-up help
321
331
 
322
- .DEFAULT_GOAL := up
332
+ .DEFAULT_GOAL := help
@@ -23,8 +23,13 @@ components = {
23
23
  "argo-events": ["argo-workflows"],
24
24
  }
25
25
 
26
- if os.getenv("SERVICES", "").strip():
27
- requested_components = os.getenv("SERVICES", "").split(",")
26
+ services_env = os.getenv("SERVICES", "").strip().lower()
27
+
28
+ if services_env:
29
+ if services_env == "all":
30
+ requested_components = list(components.keys())
31
+ else:
32
+ requested_components = services_env.split(",")
28
33
  else:
29
34
  requested_components = list(components.keys())
30
35
 
@@ -78,7 +83,7 @@ for component in requested_components:
78
83
  if result not in enabled_components:
79
84
  enabled_components.append(result)
80
85
 
81
- # Print a friendly summary when running `tilt up`.
86
+ # Print a friendly summary when running `tilt up`.
82
87
  if config.tilt_subcommand == 'up':
83
88
  print("\n📦 Components to install:")
84
89
  for component in enabled_components:
@@ -499,13 +504,14 @@ if "argo-events" in enabled_components:
499
504
  'argo-events-controller-manager',
500
505
  labels=['argo-events'],
501
506
  )
502
-
507
+
503
508
  metaflow_config["METAFLOW_ARGO_EVENTS_EVENT"] = "metaflow-event"
504
509
  metaflow_config["METAFLOW_ARGO_EVENTS_EVENT_BUS"] = "default"
505
510
  metaflow_config["METAFLOW_ARGO_EVENTS_EVENT_SOURCE"] = "argo-events-webhook"
506
511
  metaflow_config["METAFLOW_ARGO_EVENTS_SERVICE_ACCOUNT"] = "operate-workflow-sa"
507
512
  metaflow_config["METAFLOW_ARGO_EVENTS_WEBHOOK_AUTH"] = "service"
508
- metaflow_config["METAFLOW_ARGO_EVENTS_WEBHOOK_URL"] = "http://argo-events-webhook-eventsource-svc:12000/metaflow-event"
513
+ metaflow_config["METAFLOW_ARGO_EVENTS_INTERNAL_WEBHOOK_URL"] = "http://argo-events-webhook-eventsource-svc:12000/metaflow-event"
514
+ metaflow_config["METAFLOW_ARGO_EVENTS_WEBHOOK_URL"] = "http://localhost:12000/metaflow-event"
509
515
 
510
516
  config_resources.append('argo-events-controller-manager')
511
517
  config_resources.append('argo-events-webhook-eventsource-svc')
@@ -617,4 +623,4 @@ local_resource(
617
623
  name="generate-configs",
618
624
  cmd=write_config_files(),
619
625
  resource_deps=config_resources,
620
- )
626
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: metaflow
3
- Version: 2.15.1
3
+ Version: 2.15.3
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.1; extra == "stubs"
29
+ Requires-Dist: metaflow-stubs==2.15.3; extra == "stubs"
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -1,5 +1,5 @@
1
1
  metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
2
- metaflow/__init__.py,sha256=6ws8LpYz5HwIrc1J4BK-2Hxs0okGLFQCm31bHFf2H8E,5978
2
+ metaflow/__init__.py,sha256=Cg9wItncyCn8jqALP5rIJ1RcpTEPp--allUctGKMTtI,5937
3
3
  metaflow/cards.py,sha256=IbRmredvmFEU0V6JL7DR8wCESwVmmZJubr6x24bo7U4,442
4
4
  metaflow/cli.py,sha256=RU-yXpT-Lfl3xGyFNtL742e9KEqcRxEnQ-4mwXrXhvo,20928
5
5
  metaflow/cli_args.py,sha256=hDsdWdRmfXYifVGq6b6FDfgoWxtIG2nr_lU6EBV0Pnk,3584
@@ -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=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
38
38
  metaflow/vendor.py,sha256=FchtA9tH22JM-eEtJ2c9FpUdMn8sSb1VHuQS56EcdZk,5139
39
- metaflow/version.py,sha256=VW8RqjdxyB49j8TFdvknh5vAqtyjJ9j4ApSZP3QA-zs,28
39
+ metaflow/version.py,sha256=rSzXjPyzmL7ZwTxKB4ZmiT0OFBEIa2SsM1RxB9CqnqE,28
40
40
  metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
41
41
  metaflow/_vendor/typing_extensions.py,sha256=0nUs5p1A_UrZigrAVBoOEM6TxU37zzPDUtiij1ZwpNc,110417
42
42
  metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
@@ -122,7 +122,7 @@ metaflow/client/filecache.py,sha256=Wy0yhhCqC1JZgebqi7z52GCwXYnkAqMZHTtxThvwBgM,
122
122
  metaflow/cmd/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
123
123
  metaflow/cmd/configure_cmd.py,sha256=o-DKnUf2FBo_HiMVyoyzQaGBSMtpbEPEdFTQZ0hkU-k,33396
124
124
  metaflow/cmd/main_cli.py,sha256=LSehmMjkWojAN1XTtqW6S51ZpGNAdW4_VK5S7qH8-Ts,2982
125
- metaflow/cmd/make_wrapper.py,sha256=NFpSdESs4Ks9xeurmYB5VUyYplhNcONDZJcUP2cf8-8,494
125
+ metaflow/cmd/make_wrapper.py,sha256=N8L4u8QZAryH0sAjRsdEqG-gTj2S4LUsfDizOemrTR0,1604
126
126
  metaflow/cmd/tutorials_cmd.py,sha256=8FdlKkicTOhCIDKcBR5b0Oz6giDvS-EMY3o9skIrRqw,5156
127
127
  metaflow/cmd/util.py,sha256=jS_0rUjOnGGzPT65fzRLdGjrYAOOLA4jU2S0HJLV0oc,406
128
128
  metaflow/cmd/code/__init__.py,sha256=VO4dNM9M9LHYy5nTgEiJvCV1RBl8lpDlYGJm6GIcaBA,7413
@@ -141,7 +141,7 @@ metaflow/extension_support/__init__.py,sha256=2z0c4R8zsVmEFOMGT2Jujsl6xveDVa9KLl
141
141
  metaflow/extension_support/_empty_file.py,sha256=HENjnM4uAfeNygxMB_feCCWORFoSat9n_QwzSx2oXPw,109
142
142
  metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
143
143
  metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
144
- metaflow/extension_support/plugins.py,sha256=jgpNJU9q7V1vnattuH7LncTZezWk_VC4lS7Qn761h6A,11263
144
+ metaflow/extension_support/plugins.py,sha256=gl7NbIJLJyLTb5LELsj1D9paQip6t6Lqz6Rhmvqvyrw,11286
145
145
  metaflow/metadata_provider/__init__.py,sha256=FZNSnz26VB_m18DQG8mup6-Gfl7r1U6lRMljJBp3VAM,64
146
146
  metaflow/metadata_provider/heartbeat.py,sha256=42mQo6wOHdFuaCh426uV6Kn8swe7e5I3gqA_G7cI_LA,3127
147
147
  metaflow/metadata_provider/metadata.py,sha256=meO4Fhxu7tbMUGwasYb9_AtL06fwrrXKKjIK7KRWZDs,27093
@@ -151,7 +151,7 @@ metaflow/mflog/mflog.py,sha256=VebXxqitOtNAs7VJixnNfziO_i_urG7bsJ5JiB5IXgY,4370
151
151
  metaflow/mflog/save_logs.py,sha256=4p1OwozsHJBslOzAf0wUq2XPMNpEOZWM68MgWzh_jJY,2330
152
152
  metaflow/mflog/save_logs_periodically.py,sha256=2Uvk9hi-zlCqXxOQoXmmjH1SCugfw6eG6w70WgfI-ho,1256
153
153
  metaflow/mflog/tee.py,sha256=wTER15qeHuiRpCkOqo-bd-r3Gj-EVlf3IvWRCA4beW4,887
154
- metaflow/plugins/__init__.py,sha256=Lr7i7ssJI_-czorJYjMFcRhGspqArobNoXUl9T1p3MY,8055
154
+ metaflow/plugins/__init__.py,sha256=siqE9Zj_b9zKgMhll3f5L2m1gcAKxp_e4qMRTGJ65xY,8460
155
155
  metaflow/plugins/catch_decorator.py,sha256=UOM2taN_OL2RPpuJhwEOA9ZALm0-hHD0XS2Hn2GUev0,4061
156
156
  metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
157
157
  metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
@@ -363,12 +363,12 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
363
363
  metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
364
364
  metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
365
365
  metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
366
- metaflow-2.15.1.data/data/share/metaflow/devtools/Makefile,sha256=6B1iQvyfhhukbDnLnzZmadYi9tmyr538hVmKiBIy_Ew,12820
367
- metaflow-2.15.1.data/data/share/metaflow/devtools/Tiltfile,sha256=fpPW_0sDxHL60-9nld5OgV0YO30IPl9luAjukTsl-9o,20391
368
- metaflow-2.15.1.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
369
- metaflow-2.15.1.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
370
- metaflow-2.15.1.dist-info/METADATA,sha256=uZRHK4OO4RES9LB_ZJGiL0oFxq3Z_VYZZWqnEeMJhnw,6118
371
- metaflow-2.15.1.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
372
- metaflow-2.15.1.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
373
- metaflow-2.15.1.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
374
- metaflow-2.15.1.dist-info/RECORD,,
366
+ metaflow-2.15.3.data/data/share/metaflow/devtools/Makefile,sha256=VOAcKq3Nn7tvJLs-T8KIvuNQxbGNMH5GEte_96QoT4Q,13342
367
+ metaflow-2.15.3.data/data/share/metaflow/devtools/Tiltfile,sha256=6xZrL354f8B5PKeoPUJnwka0gHUXl7XSPzNGgf5mcRI,20606
368
+ metaflow-2.15.3.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
369
+ metaflow-2.15.3.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
370
+ metaflow-2.15.3.dist-info/METADATA,sha256=FvTvz9ALJGxVUrqOyzNgoR1f6yuk1z9CA8vfKytQQeY,6118
371
+ metaflow-2.15.3.dist-info/WHEEL,sha256=rF4EZyR2XVS6irmOHQIJx2SUqXLZKRMUrjsg8UwN-XQ,109
372
+ metaflow-2.15.3.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
373
+ metaflow-2.15.3.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
374
+ metaflow-2.15.3.dist-info/RECORD,,