metaflow 2.13.1__py2.py3-none-any.whl → 2.13.2__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/extension_support/plugins.py +1 -0
- metaflow/parameters.py +1 -1
- metaflow/plugins/__init__.py +13 -0
- metaflow/plugins/argo/argo_workflows.py +12 -0
- metaflow/plugins/pypi/micromamba.py +5 -1
- metaflow/runner/metaflow_runner.py +25 -3
- metaflow/runtime.py +18 -8
- metaflow/user_configs/config_parameters.py +23 -6
- metaflow/version.py +1 -1
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/METADATA +2 -2
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/RECORD +15 -15
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/LICENSE +0 -0
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/WHEEL +0 -0
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/entry_points.txt +0 -0
- {metaflow-2.13.1.dist-info → metaflow-2.13.2.dist-info}/top_level.txt +0 -0
metaflow/parameters.py
CHANGED
@@ -369,7 +369,7 @@ class Parameter(object):
|
|
369
369
|
# Resolve any value from configurations
|
370
370
|
self.kwargs = unpack_delayed_evaluator(self.kwargs, ignore_errors=ignore_errors)
|
371
371
|
# Do it one item at a time so errors are ignored at that level (as opposed to
|
372
|
-
# at the entire kwargs
|
372
|
+
# at the entire kwargs level)
|
373
373
|
self.kwargs = {
|
374
374
|
k: resolve_delayed_evaluator(v, ignore_errors=ignore_errors)
|
375
375
|
for k, v in self.kwargs.items()
|
metaflow/plugins/__init__.py
CHANGED
@@ -19,6 +19,11 @@ CLIS_DESC = [
|
|
19
19
|
("logs", ".logs_cli.cli"),
|
20
20
|
]
|
21
21
|
|
22
|
+
# Add additional commands to the runner here
|
23
|
+
# These will be accessed using Runner().<command>()
|
24
|
+
RUNNER_CLIS_DESC = []
|
25
|
+
|
26
|
+
|
22
27
|
from .test_unbounded_foreach_decorator import InternalTestUnboundedForeachInput
|
23
28
|
|
24
29
|
# Add new step decorators here
|
@@ -168,6 +173,14 @@ def get_plugin_cli_path():
|
|
168
173
|
return resolve_plugins("cli", path_only=True)
|
169
174
|
|
170
175
|
|
176
|
+
def get_runner_cli():
|
177
|
+
return resolve_plugins("runner_cli")
|
178
|
+
|
179
|
+
|
180
|
+
def get_runner_cli_path():
|
181
|
+
return resolve_plugins("runner_cli", path_only=True)
|
182
|
+
|
183
|
+
|
171
184
|
STEP_DECORATORS = resolve_plugins("step_decorator")
|
172
185
|
FLOW_DECORATORS = resolve_plugins("flow_decorator")
|
173
186
|
ENVIRONMENTS = resolve_plugins("environment")
|
@@ -743,6 +743,17 @@ class ArgoWorkflows(object):
|
|
743
743
|
)
|
744
744
|
}
|
745
745
|
)
|
746
|
+
try:
|
747
|
+
# Build the DAG based on the DAGNodes given by the FlowGraph for the found FlowSpec class.
|
748
|
+
_steps_info, graph_structure = self.graph.output_steps()
|
749
|
+
graph_info = {
|
750
|
+
# for the time being, we only need the graph_structure. Being mindful of annotation size limits we do not include anything extra.
|
751
|
+
"graph_structure": graph_structure
|
752
|
+
}
|
753
|
+
except Exception:
|
754
|
+
graph_info = None
|
755
|
+
|
756
|
+
dag_annotation = {"metaflow/dag": json.dumps(graph_info)}
|
746
757
|
|
747
758
|
return (
|
748
759
|
WorkflowTemplate()
|
@@ -758,6 +769,7 @@ class ArgoWorkflows(object):
|
|
758
769
|
.annotations(self._base_annotations)
|
759
770
|
.labels(self._base_labels)
|
760
771
|
.label("app.kubernetes.io/name", "metaflow-flow")
|
772
|
+
.annotations(dag_annotation)
|
761
773
|
)
|
762
774
|
.spec(
|
763
775
|
WorkflowSpec()
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import functools
|
2
2
|
import json
|
3
3
|
import os
|
4
|
+
import re
|
4
5
|
import subprocess
|
5
6
|
import tempfile
|
6
7
|
import time
|
@@ -23,6 +24,8 @@ class MicromambaException(MetaflowException):
|
|
23
24
|
|
24
25
|
GLIBC_VERSION = os.environ.get("CONDA_OVERRIDE_GLIBC", "2.38")
|
25
26
|
|
27
|
+
_double_equal_match = re.compile("==(?=[<=>!~])")
|
28
|
+
|
26
29
|
|
27
30
|
class Micromamba(object):
|
28
31
|
def __init__(self, logger=None):
|
@@ -101,7 +104,8 @@ class Micromamba(object):
|
|
101
104
|
cmd.append("--channel=%s" % channel)
|
102
105
|
|
103
106
|
for package, version in packages.items():
|
104
|
-
|
107
|
+
version_string = "%s==%s" % (package, version)
|
108
|
+
cmd.append(_double_equal_match.sub("", version_string))
|
105
109
|
if python:
|
106
110
|
cmd.append("python==%s" % python)
|
107
111
|
# TODO: Ensure a human readable message is returned when the environment
|
@@ -7,6 +7,8 @@ from typing import Dict, Iterator, Optional, Tuple
|
|
7
7
|
|
8
8
|
from metaflow import Run
|
9
9
|
|
10
|
+
from metaflow.plugins import get_runner_cli
|
11
|
+
|
10
12
|
from .utils import (
|
11
13
|
temporary_fifo,
|
12
14
|
handle_timeout,
|
@@ -187,7 +189,27 @@ class ExecutingRun(object):
|
|
187
189
|
yield position, line
|
188
190
|
|
189
191
|
|
190
|
-
class
|
192
|
+
class RunnerMeta(type):
|
193
|
+
def __new__(mcs, name, bases, dct):
|
194
|
+
cls = super().__new__(mcs, name, bases, dct)
|
195
|
+
|
196
|
+
def _injected_method(subcommand_name, runner_subcommand):
|
197
|
+
def f(self, *args, **kwargs):
|
198
|
+
return runner_subcommand(self, *args, **kwargs)
|
199
|
+
|
200
|
+
f.__doc__ = runner_subcommand.__doc__ or ""
|
201
|
+
f.__name__ = subcommand_name
|
202
|
+
|
203
|
+
return f
|
204
|
+
|
205
|
+
for runner_subcommand in get_runner_cli():
|
206
|
+
method_name = runner_subcommand.name.replace("-", "_")
|
207
|
+
setattr(cls, method_name, _injected_method(method_name, runner_subcommand))
|
208
|
+
|
209
|
+
return cls
|
210
|
+
|
211
|
+
|
212
|
+
class Runner(metaclass=RunnerMeta):
|
191
213
|
"""
|
192
214
|
Metaflow's Runner API that presents a programmatic interface
|
193
215
|
to run flows and perform other operations either synchronously or asynchronously.
|
@@ -337,7 +359,7 @@ class Runner(object):
|
|
337
359
|
|
338
360
|
return self.__get_executing_run(attribute_file_fd, command_obj)
|
339
361
|
|
340
|
-
def resume(self, **kwargs):
|
362
|
+
def resume(self, **kwargs) -> ExecutingRun:
|
341
363
|
"""
|
342
364
|
Blocking resume execution of the run.
|
343
365
|
This method will wait until the resumed run has completed execution.
|
@@ -400,7 +422,7 @@ class Runner(object):
|
|
400
422
|
|
401
423
|
return await self.__async_get_executing_run(attribute_file_fd, command_obj)
|
402
424
|
|
403
|
-
async def async_resume(self, **kwargs):
|
425
|
+
async def async_resume(self, **kwargs) -> ExecutingRun:
|
404
426
|
"""
|
405
427
|
Non-blocking resume execution of the run.
|
406
428
|
This method will return as soon as the resume has launched.
|
metaflow/runtime.py
CHANGED
@@ -125,7 +125,7 @@ class NativeRuntime(object):
|
|
125
125
|
self._clone_run_id = clone_run_id
|
126
126
|
self._clone_only = clone_only
|
127
127
|
self._cloned_tasks = []
|
128
|
-
self.
|
128
|
+
self._ran_or_scheduled_task_index = set()
|
129
129
|
self._reentrant = reentrant
|
130
130
|
self._run_url = None
|
131
131
|
|
@@ -297,7 +297,7 @@ class NativeRuntime(object):
|
|
297
297
|
task.ubf_context = ubf_context
|
298
298
|
new_task_id = task.task_id
|
299
299
|
self._cloned_tasks.append(task)
|
300
|
-
self.
|
300
|
+
self._ran_or_scheduled_task_index.add(cloned_task_pathspec_index)
|
301
301
|
task_pathspec = "{}/{}/{}".format(self._run_id, step_name, new_task_id)
|
302
302
|
else:
|
303
303
|
task_pathspec = "{}/{}/{}".format(self._run_id, step_name, new_task_id)
|
@@ -384,8 +384,10 @@ class NativeRuntime(object):
|
|
384
384
|
and step_name != "_parameters"
|
385
385
|
and (step_name not in self._steps_to_rerun)
|
386
386
|
):
|
387
|
-
# "_unbounded_foreach" is a special flag to indicate that the transition
|
388
|
-
#
|
387
|
+
# "_unbounded_foreach" is a special flag to indicate that the transition
|
388
|
+
# is an unbounded foreach.
|
389
|
+
# Both parent and splitted children tasks will have this flag set.
|
390
|
+
# The splitted control/mapper tasks
|
389
391
|
# are not foreach types because UBF is always followed by a join step.
|
390
392
|
is_ubf_task = (
|
391
393
|
"_unbounded_foreach" in task_ds and task_ds["_unbounded_foreach"]
|
@@ -647,10 +649,18 @@ class NativeRuntime(object):
|
|
647
649
|
# Store the parameters needed for task creation, so that pushing on items
|
648
650
|
# onto the run_queue is an inexpensive operation.
|
649
651
|
def _queue_push(self, step, task_kwargs, index=None):
|
650
|
-
#
|
651
|
-
#
|
652
|
-
|
653
|
-
|
652
|
+
# In the case of cloning, we set all the cloned tasks as the
|
653
|
+
# finished tasks when pushing tasks using _queue_tasks. This means that we
|
654
|
+
# could potentially try to push the same task multiple times (for example
|
655
|
+
# if multiple parents of a join are cloned). We therefore keep track of what
|
656
|
+
# has executed (been cloned) or what has been scheduled and avoid scheduling
|
657
|
+
# it again.
|
658
|
+
if index:
|
659
|
+
if index in self._ran_or_scheduled_task_index:
|
660
|
+
# It has already run or been scheduled
|
661
|
+
return
|
662
|
+
# Note that we are scheduling this to run
|
663
|
+
self._ran_or_scheduled_task_index.add(index)
|
654
664
|
self._run_queue.insert(0, (step, task_kwargs))
|
655
665
|
# For foreaches, this will happen multiple time but is ok, becomes a no-op
|
656
666
|
self._unprocessed_steps.discard(step)
|
@@ -183,7 +183,7 @@ class DelayEvaluator(collections.abc.Mapping):
|
|
183
183
|
|
184
184
|
def __getattr__(self, name):
|
185
185
|
if self._access is None:
|
186
|
-
raise AttributeError()
|
186
|
+
raise AttributeError(name)
|
187
187
|
self._access.append(name)
|
188
188
|
return self
|
189
189
|
|
@@ -336,6 +336,8 @@ class Config(Parameter, collections.abc.Mapping):
|
|
336
336
|
self.parser = parser
|
337
337
|
self._computed_value = None
|
338
338
|
|
339
|
+
self._delayed_evaluator = None
|
340
|
+
|
339
341
|
def load_parameter(self, v):
|
340
342
|
if v is None:
|
341
343
|
return None
|
@@ -344,22 +346,37 @@ class Config(Parameter, collections.abc.Mapping):
|
|
344
346
|
def _store_value(self, v: Any) -> None:
|
345
347
|
self._computed_value = v
|
346
348
|
|
349
|
+
def _init_delayed_evaluator(self) -> None:
|
350
|
+
if self._delayed_evaluator is None:
|
351
|
+
self._delayed_evaluator = DelayEvaluator(self.name.lower())
|
352
|
+
|
347
353
|
# Support <config>.<var> syntax
|
348
354
|
def __getattr__(self, name):
|
349
|
-
return DelayEvaluator
|
355
|
+
# Need to return a new DelayEvaluator everytime because the evaluator will
|
356
|
+
# contain the "path" (ie: .name) and can be further accessed.
|
357
|
+
return getattr(DelayEvaluator(self.name.lower()), name)
|
350
358
|
|
351
|
-
# Next three methods are to implement mapping to support **<config> syntax
|
359
|
+
# Next three methods are to implement mapping to support **<config> syntax. We
|
360
|
+
# need to be careful, however, to also support a regular `config["key"]` syntax
|
361
|
+
# which calls into `__getitem__` and therefore behaves like __getattr__ above.
|
352
362
|
def __iter__(self):
|
353
|
-
|
363
|
+
self._init_delayed_evaluator()
|
364
|
+
yield from self._delayed_evaluator
|
354
365
|
|
355
366
|
def __len__(self):
|
356
|
-
|
367
|
+
self._init_delayed_evaluator()
|
368
|
+
return len(self._delayed_evaluator)
|
357
369
|
|
358
370
|
def __getitem__(self, key):
|
371
|
+
self._init_delayed_evaluator()
|
372
|
+
if key.startswith(UNPACK_KEY):
|
373
|
+
return self._delayed_evaluator[key]
|
359
374
|
return DelayEvaluator(self.name.lower())[key]
|
360
375
|
|
361
376
|
|
362
377
|
def resolve_delayed_evaluator(v: Any, ignore_errors: bool = False) -> Any:
|
378
|
+
# NOTE: We don't ignore errors in downstream calls because we want to have either
|
379
|
+
# all or nothing for the top-level call by the user.
|
363
380
|
try:
|
364
381
|
if isinstance(v, DelayEvaluator):
|
365
382
|
return v()
|
@@ -397,7 +414,7 @@ def unpack_delayed_evaluator(
|
|
397
414
|
else:
|
398
415
|
# k.startswith(UNPACK_KEY)
|
399
416
|
try:
|
400
|
-
result.update(resolve_delayed_evaluator(v
|
417
|
+
result.update(resolve_delayed_evaluator(v))
|
401
418
|
except Exception as e:
|
402
419
|
if ignore_errors:
|
403
420
|
continue
|
metaflow/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
metaflow_version = "2.13.
|
1
|
+
metaflow_version = "2.13.2"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.13.
|
3
|
+
Version: 2.13.2
|
4
4
|
Summary: Metaflow: More Data Science, 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.13.
|
29
|
+
Requires-Dist: metaflow-stubs==2.13.2; extra == "stubs"
|
30
30
|
|
31
31
|

|
32
32
|
|
@@ -25,18 +25,18 @@ metaflow/metaflow_version.py,sha256=duhIzfKZtcxMVMs2uiBqBvUarSHJqyWDwMhaBOQd_g0,
|
|
25
25
|
metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
|
26
26
|
metaflow/multicore_utils.py,sha256=yEo5T6Gemn4_vl8b6IOz7fsTUYtEyqa3AaKZgJY96Wc,4974
|
27
27
|
metaflow/package.py,sha256=yfwVMVB1mD-Sw94KwXNK3N-26YHoKMn6btrcgd67Izs,7845
|
28
|
-
metaflow/parameters.py,sha256=
|
28
|
+
metaflow/parameters.py,sha256=3mCV8d-Bj7n2sByl0pN3hRVLXvYnSL9c53_wxWGSwG8,18596
|
29
29
|
metaflow/procpoll.py,sha256=U2tE4iK_Mwj2WDyVTx_Uglh6xZ-jixQOo4wrM9OOhxg,2859
|
30
30
|
metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
31
|
metaflow/pylint_wrapper.py,sha256=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
|
32
|
-
metaflow/runtime.py,sha256=
|
32
|
+
metaflow/runtime.py,sha256=Hz2U19XwCUgUf07YKzQsqXuqZTC8P2NvyTwZW_hSXrs,74430
|
33
33
|
metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
|
34
34
|
metaflow/task.py,sha256=xVVLWy8NH16OlLu2VoOb1OfiFzcOVVCdQldlmb1Zb_w,29691
|
35
35
|
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=hKjHl6NYJkKBSU2tzdVbddfOX1zWK73T4GCO42A0XB4,14666
|
38
38
|
metaflow/vendor.py,sha256=FchtA9tH22JM-eEtJ2c9FpUdMn8sSb1VHuQS56EcdZk,5139
|
39
|
-
metaflow/version.py,sha256
|
39
|
+
metaflow/version.py,sha256=M5K4wYLuE5s9hNYMHMFXQ40u9eB0ZpF_LJKAyttJrxM,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
|
@@ -139,7 +139,7 @@ metaflow/extension_support/__init__.py,sha256=2z0c4R8zsVmEFOMGT2Jujsl6xveDVa9KLl
|
|
139
139
|
metaflow/extension_support/_empty_file.py,sha256=HENjnM4uAfeNygxMB_feCCWORFoSat9n_QwzSx2oXPw,109
|
140
140
|
metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
|
141
141
|
metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
|
142
|
-
metaflow/extension_support/plugins.py,sha256=
|
142
|
+
metaflow/extension_support/plugins.py,sha256=jgpNJU9q7V1vnattuH7LncTZezWk_VC4lS7Qn761h6A,11263
|
143
143
|
metaflow/metadata_provider/__init__.py,sha256=FZNSnz26VB_m18DQG8mup6-Gfl7r1U6lRMljJBp3VAM,64
|
144
144
|
metaflow/metadata_provider/heartbeat.py,sha256=VFGDuO8LryraqsxGVORt6HtyqDUzIYNY50W3DbvR4js,3102
|
145
145
|
metaflow/metadata_provider/metadata.py,sha256=4tmySlgQaoV-p9bHig7BjsEsqFRZWEOuwSLpODuKxjA,26169
|
@@ -149,7 +149,7 @@ metaflow/mflog/mflog.py,sha256=VebXxqitOtNAs7VJixnNfziO_i_urG7bsJ5JiB5IXgY,4370
|
|
149
149
|
metaflow/mflog/save_logs.py,sha256=ZBAF4BMukw4FMAC7odpr9OI2BC_2petPtDX0ca6srC4,2352
|
150
150
|
metaflow/mflog/save_logs_periodically.py,sha256=2Uvk9hi-zlCqXxOQoXmmjH1SCugfw6eG6w70WgfI-ho,1256
|
151
151
|
metaflow/mflog/tee.py,sha256=wTER15qeHuiRpCkOqo-bd-r3Gj-EVlf3IvWRCA4beW4,887
|
152
|
-
metaflow/plugins/__init__.py,sha256=
|
152
|
+
metaflow/plugins/__init__.py,sha256=NXlwhFvhLYhAVhjCyRJZMIpTBBBJlzFupM7MgDKNYv0,7872
|
153
153
|
metaflow/plugins/catch_decorator.py,sha256=UOM2taN_OL2RPpuJhwEOA9ZALm0-hHD0XS2Hn2GUev0,4061
|
154
154
|
metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
|
155
155
|
metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
|
@@ -181,7 +181,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqN
|
|
181
181
|
metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
182
182
|
metaflow/plugins/argo/argo_client.py,sha256=PS_cYGnPw9h4X7TP_plObDH3clMw4reOsBLkkGPTd0Y,16282
|
183
183
|
metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
|
184
|
-
metaflow/plugins/argo/argo_workflows.py,sha256=
|
184
|
+
metaflow/plugins/argo/argo_workflows.py,sha256=CdZoBZU8aSkza1wRw60VogJv9QdF4CLbfD4o8XPAf5o,175510
|
185
185
|
metaflow/plugins/argo/argo_workflows_cli.py,sha256=11_8l4IrtkwviKsijInTZPt7YK5TZzClREnw_Cf4D5o,36706
|
186
186
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
|
187
187
|
metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
|
@@ -301,7 +301,7 @@ metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kci
|
|
301
301
|
metaflow/plugins/pypi/bootstrap.py,sha256=x7PwFjuRNOwehVmpi5W7-JlTKHZHjwRhz6nImYlMkqo,11678
|
302
302
|
metaflow/plugins/pypi/conda_decorator.py,sha256=piFcE4uGmWhhbGlxMK0GHd7BGEyqy6r9BFy8Mjoi80Q,15937
|
303
303
|
metaflow/plugins/pypi/conda_environment.py,sha256=d5BAiY_aJJdlJ5h3N5nGSDmVoOY-8BVKqEbA5nrCpCY,22113
|
304
|
-
metaflow/plugins/pypi/micromamba.py,sha256=
|
304
|
+
metaflow/plugins/pypi/micromamba.py,sha256=5YrD3V9FXMaMM0mHdPD5DabBrFLcTrj5sqbeBWl9r7M,15824
|
305
305
|
metaflow/plugins/pypi/pip.py,sha256=H0cIy8odpZ-JTn4SwF0b74tuC3uRU7X8TdAQJ2kODG8,13971
|
306
306
|
metaflow/plugins/pypi/pypi_decorator.py,sha256=ybNgo-T5Z_0W2KNuED0pdjyI0qygZ4a1MXAzKqdHt_E,7250
|
307
307
|
metaflow/plugins/pypi/pypi_environment.py,sha256=FYMg8kF3lXqcLfRYWD83a9zpVjcoo_TARqMGZ763rRk,230
|
@@ -313,7 +313,7 @@ metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
313
313
|
metaflow/runner/click_api.py,sha256=13CM3RsH3dJ6YJTQnNafLEZ_teTnYMyfoR2Cf5baVbM,21772
|
314
314
|
metaflow/runner/deployer.py,sha256=Yas_SZCss3kfJw3hLC8_IyzgiytUFGoEGHz-l-rBBKk,8980
|
315
315
|
metaflow/runner/deployer_impl.py,sha256=nzQJiJxjgZxewkkK5pHshfVeZOUUf5-FzS0pPJimktM,5930
|
316
|
-
metaflow/runner/metaflow_runner.py,sha256=
|
316
|
+
metaflow/runner/metaflow_runner.py,sha256=T41AWkuQq56ID90B7I-RFr9zexuZYtknsstSoqell7A,15861
|
317
317
|
metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
|
318
318
|
metaflow/runner/nbrun.py,sha256=LhJu-Teoi7wTkNxg0kpNPVXFxH_9P4lvtp0ysMEIFJ8,7299
|
319
319
|
metaflow/runner/subprocess_manager.py,sha256=K6uZXnqdgeW0vHUAVwoolSpDSLp1EVHiBtyD7f_vwac,22050
|
@@ -357,10 +357,10 @@ metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNh
|
|
357
357
|
metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
358
358
|
metaflow/user_configs/config_decorators.py,sha256=Tj0H88UT8Q6pylXxHXgiA6cqnNlw4d3mR7M8J9g3ZUg,20139
|
359
359
|
metaflow/user_configs/config_options.py,sha256=Knpiax_YGmYAdR3zKmaepN8puW1MyL9g6-eMGAkcylo,20942
|
360
|
-
metaflow/user_configs/config_parameters.py,sha256=
|
361
|
-
metaflow-2.13.
|
362
|
-
metaflow-2.13.
|
363
|
-
metaflow-2.13.
|
364
|
-
metaflow-2.13.
|
365
|
-
metaflow-2.13.
|
366
|
-
metaflow-2.13.
|
360
|
+
metaflow/user_configs/config_parameters.py,sha256=lWWqJ5BSvCEZIL_JTmy9sYmmyPhgh7wj6Zy_U9TRSFQ,14763
|
361
|
+
metaflow-2.13.2.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
362
|
+
metaflow-2.13.2.dist-info/METADATA,sha256=Kcm4ddVayXSQyJYcSqpvZgPs-ruSFSn3ZWTUbcZ5SeQ,5906
|
363
|
+
metaflow-2.13.2.dist-info/WHEEL,sha256=M1ikteR9eetPNvm1LyQ3rpXxNYuGd90oakQO1a-ohSk,109
|
364
|
+
metaflow-2.13.2.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
|
365
|
+
metaflow-2.13.2.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
366
|
+
metaflow-2.13.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|