metaflow 2.11.14__py2.py3-none-any.whl → 2.11.16__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 +3 -0
- metaflow/cli.py +0 -120
- metaflow/clone_util.py +6 -0
- metaflow/datastore/datastore_set.py +1 -1
- metaflow/datastore/flow_datastore.py +32 -6
- metaflow/datastore/task_datastore.py +50 -0
- metaflow/extension_support/plugins.py +2 -0
- metaflow/metaflow_config.py +24 -0
- metaflow/metaflow_environment.py +2 -2
- metaflow/plugins/__init__.py +20 -0
- metaflow/plugins/airflow/airflow.py +7 -0
- metaflow/plugins/argo/argo_workflows.py +17 -0
- metaflow/plugins/aws/batch/batch_cli.py +6 -4
- metaflow/plugins/azure/__init__.py +3 -0
- metaflow/plugins/azure/azure_credential.py +53 -0
- metaflow/plugins/azure/azure_exceptions.py +1 -1
- metaflow/plugins/azure/azure_secret_manager_secrets_provider.py +240 -0
- metaflow/plugins/azure/azure_utils.py +2 -35
- metaflow/plugins/azure/blob_service_client_factory.py +4 -2
- metaflow/plugins/datastores/azure_storage.py +6 -6
- metaflow/plugins/datatools/s3/s3.py +9 -9
- metaflow/plugins/gcp/__init__.py +1 -0
- metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py +169 -0
- metaflow/plugins/gcp/gs_storage_client_factory.py +52 -1
- metaflow/plugins/kubernetes/kubernetes.py +85 -8
- metaflow/plugins/kubernetes/kubernetes_cli.py +24 -1
- metaflow/plugins/kubernetes/kubernetes_client.py +4 -1
- metaflow/plugins/kubernetes/kubernetes_decorator.py +49 -4
- metaflow/plugins/kubernetes/kubernetes_job.py +208 -201
- metaflow/plugins/kubernetes/kubernetes_jobsets.py +784 -0
- metaflow/plugins/logs_cli.py +358 -0
- metaflow/plugins/timeout_decorator.py +2 -1
- metaflow/task.py +1 -12
- metaflow/tuple_util.py +27 -0
- metaflow/util.py +0 -15
- metaflow/version.py +1 -1
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/METADATA +2 -2
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/RECORD +42 -36
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/LICENSE +0 -0
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/WHEEL +0 -0
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/entry_points.txt +0 -0
- {metaflow-2.11.14.dist-info → metaflow-2.11.16.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,358 @@
|
|
1
|
+
from metaflow._vendor import click
|
2
|
+
from metaflow.cli import LOGGER_TIMESTAMP
|
3
|
+
|
4
|
+
from ..exception import CommandException
|
5
|
+
from ..datastore import TaskDataStoreSet, TaskDataStore
|
6
|
+
|
7
|
+
|
8
|
+
from ..mflog import mflog, LOG_SOURCES
|
9
|
+
|
10
|
+
# main motivation from https://github.com/pallets/click/issues/430
|
11
|
+
# in order to support a default command being called for a Click group.
|
12
|
+
#
|
13
|
+
# NOTE: We need this in order to not introduce breaking changes to existing CLI, as we wanted to
|
14
|
+
# nest both existing `logs` and the new `logs scrub` under a shared group, but `logs` already has
|
15
|
+
# a well defined behavior of showing the logs.
|
16
|
+
class CustomGroup(click.Group):
|
17
|
+
def __init__(self, name=None, commands=None, default_cmd=None, **attrs):
|
18
|
+
super(CustomGroup, self).__init__(name, commands, **attrs)
|
19
|
+
self.default_cmd = default_cmd
|
20
|
+
|
21
|
+
def get_command(self, ctx, cmd_name):
|
22
|
+
if cmd_name not in self.list_commands(ctx):
|
23
|
+
# input from the CLI does not match a command, so we pass that
|
24
|
+
# as the args to the default command instead.
|
25
|
+
ctx.passed_cmd = cmd_name
|
26
|
+
cmd_name = self.default_cmd
|
27
|
+
return super(CustomGroup, self).get_command(ctx, cmd_name)
|
28
|
+
|
29
|
+
def parse_args(self, ctx, args):
|
30
|
+
# We first try to parse args as is, to determine whether we need to fall back to the default commmand
|
31
|
+
# if any options are supplied, the parse will fail, as the group does not support the options.
|
32
|
+
# In this case we fallback to the default command, inserting that as the first arg and parsing again.
|
33
|
+
# copy args as trying to parse will destroy them.
|
34
|
+
original_args = list(args)
|
35
|
+
try:
|
36
|
+
super().parse_args(ctx, args)
|
37
|
+
args_parseable = True
|
38
|
+
except Exception:
|
39
|
+
args_parseable = False
|
40
|
+
if not args or not args_parseable:
|
41
|
+
original_args.insert(0, self.default_cmd)
|
42
|
+
return super().parse_args(ctx, original_args)
|
43
|
+
|
44
|
+
def resolve_command(self, ctx, args):
|
45
|
+
cmd_name, cmd_obj, args = super(CustomGroup, self).resolve_command(ctx, args)
|
46
|
+
passed_cmd = getattr(ctx, "passed_cmd", None)
|
47
|
+
if passed_cmd is not None:
|
48
|
+
args.insert(0, passed_cmd)
|
49
|
+
|
50
|
+
return cmd_name, cmd_obj, args
|
51
|
+
|
52
|
+
def format_commands(self, ctx, formatter):
|
53
|
+
formatter = CustomFormatter(self.default_cmd, formatter)
|
54
|
+
return super(CustomGroup, self).format_commands(ctx, formatter)
|
55
|
+
|
56
|
+
|
57
|
+
class CustomFormatter:
|
58
|
+
def __init__(self, default_cmd, original_formatter) -> None:
|
59
|
+
self.default_cmd = default_cmd
|
60
|
+
self.formatter = original_formatter
|
61
|
+
|
62
|
+
def __getattr__(self, name):
|
63
|
+
return getattr(self.formatter, name)
|
64
|
+
|
65
|
+
def write_dl(self, rows):
|
66
|
+
def _format(dup):
|
67
|
+
cmd, help = dup
|
68
|
+
if cmd == self.default_cmd:
|
69
|
+
cmd = cmd + " [Default]"
|
70
|
+
return (cmd, help)
|
71
|
+
|
72
|
+
rows = [_format(dup) for dup in rows]
|
73
|
+
|
74
|
+
return self.formatter.write_dl(rows)
|
75
|
+
|
76
|
+
|
77
|
+
@click.group()
|
78
|
+
def cli():
|
79
|
+
pass
|
80
|
+
|
81
|
+
|
82
|
+
@cli.group(cls=CustomGroup, help="Commands related to logs", default_cmd="show")
|
83
|
+
@click.pass_context
|
84
|
+
def logs(ctx):
|
85
|
+
# the logger is configured in cli.py
|
86
|
+
global echo
|
87
|
+
echo = ctx.obj.echo
|
88
|
+
|
89
|
+
|
90
|
+
@logs.command(
|
91
|
+
help="Show stdout/stderr produced by a task or all tasks in a step. "
|
92
|
+
"The format for input-path is either <run_id>/<step_name> or "
|
93
|
+
"<run_id>/<step_name>/<task_id>."
|
94
|
+
)
|
95
|
+
@click.argument("input-path")
|
96
|
+
@click.option(
|
97
|
+
"--stdout/--no-stdout",
|
98
|
+
default=False,
|
99
|
+
show_default=True,
|
100
|
+
help="Show stdout of the task.",
|
101
|
+
)
|
102
|
+
@click.option(
|
103
|
+
"--stderr/--no-stderr",
|
104
|
+
default=False,
|
105
|
+
show_default=True,
|
106
|
+
help="Show stderr of the task.",
|
107
|
+
)
|
108
|
+
@click.option(
|
109
|
+
"--both/--no-both",
|
110
|
+
default=True,
|
111
|
+
show_default=True,
|
112
|
+
help="Show both stdout and stderr of the task.",
|
113
|
+
)
|
114
|
+
@click.option(
|
115
|
+
"--timestamps/--no-timestamps",
|
116
|
+
default=False,
|
117
|
+
show_default=True,
|
118
|
+
help="Show timestamps.",
|
119
|
+
)
|
120
|
+
@click.option(
|
121
|
+
"--attempt",
|
122
|
+
default=None,
|
123
|
+
type=int,
|
124
|
+
show_default=False,
|
125
|
+
help="Attempt number of a task to show, defaults to the latest attempt.",
|
126
|
+
)
|
127
|
+
@click.pass_obj
|
128
|
+
def show(
|
129
|
+
obj, input_path, stdout=None, stderr=None, both=None, timestamps=False, attempt=None
|
130
|
+
):
|
131
|
+
types = set()
|
132
|
+
if stdout:
|
133
|
+
types.add("stdout")
|
134
|
+
both = False
|
135
|
+
if stderr:
|
136
|
+
types.add("stderr")
|
137
|
+
both = False
|
138
|
+
if both:
|
139
|
+
types.update(("stdout", "stderr"))
|
140
|
+
|
141
|
+
streams = list(sorted(types, reverse=True))
|
142
|
+
|
143
|
+
# Pathspec can either be run_id/step_name or run_id/step_name/task_id.
|
144
|
+
parts = input_path.split("/")
|
145
|
+
if len(parts) == 2:
|
146
|
+
run_id, step_name = parts
|
147
|
+
task_id = None
|
148
|
+
elif len(parts) == 3:
|
149
|
+
run_id, step_name, task_id = parts
|
150
|
+
else:
|
151
|
+
raise CommandException(
|
152
|
+
"input_path should either be run_id/step_name "
|
153
|
+
"or run_id/step_name/task_id"
|
154
|
+
)
|
155
|
+
|
156
|
+
datastore_set = TaskDataStoreSet(
|
157
|
+
obj.flow_datastore, run_id, steps=[step_name], allow_not_done=True
|
158
|
+
)
|
159
|
+
if task_id:
|
160
|
+
ds_list = [
|
161
|
+
TaskDataStore(
|
162
|
+
obj.flow_datastore,
|
163
|
+
run_id=run_id,
|
164
|
+
step_name=step_name,
|
165
|
+
task_id=task_id,
|
166
|
+
mode="r",
|
167
|
+
allow_not_done=True,
|
168
|
+
)
|
169
|
+
]
|
170
|
+
else:
|
171
|
+
ds_list = list(datastore_set) # get all tasks
|
172
|
+
|
173
|
+
if ds_list:
|
174
|
+
|
175
|
+
def echo_unicode(line, **kwargs):
|
176
|
+
click.secho(line.decode("UTF-8", errors="replace"), **kwargs)
|
177
|
+
|
178
|
+
# old style logs are non mflog-style logs
|
179
|
+
maybe_old_style = True
|
180
|
+
for ds in ds_list:
|
181
|
+
echo(
|
182
|
+
"Dumping logs of run_id=*{run_id}* "
|
183
|
+
"step=*{step}* task_id=*{task_id}*".format(
|
184
|
+
run_id=ds.run_id, step=ds.step_name, task_id=ds.task_id
|
185
|
+
),
|
186
|
+
fg="magenta",
|
187
|
+
)
|
188
|
+
|
189
|
+
for stream in streams:
|
190
|
+
echo(stream, bold=True)
|
191
|
+
logs = ds.load_logs(LOG_SOURCES, stream, attempt_override=attempt)
|
192
|
+
if any(data for _, data in logs):
|
193
|
+
# attempt to read new, mflog-style logs
|
194
|
+
for line in mflog.merge_logs([blob for _, blob in logs]):
|
195
|
+
if timestamps:
|
196
|
+
ts = mflog.utc_to_local(line.utc_tstamp)
|
197
|
+
tstamp = ts.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
|
198
|
+
click.secho(tstamp + " ", fg=LOGGER_TIMESTAMP, nl=False)
|
199
|
+
echo_unicode(line.msg)
|
200
|
+
maybe_old_style = False
|
201
|
+
elif maybe_old_style:
|
202
|
+
# if they are not available, we may be looking at
|
203
|
+
# a legacy run (unless we have seen new-style data already
|
204
|
+
# for another stream). This return an empty string if
|
205
|
+
# nothing is found
|
206
|
+
log = ds.load_log_legacy(stream, attempt_override=attempt)
|
207
|
+
if log and timestamps:
|
208
|
+
raise CommandException(
|
209
|
+
"We can't show --timestamps for old runs. Sorry!"
|
210
|
+
)
|
211
|
+
echo_unicode(log, nl=False)
|
212
|
+
else:
|
213
|
+
raise CommandException(
|
214
|
+
"No Tasks found at the given path -- "
|
215
|
+
"either none exist or none have started yet"
|
216
|
+
)
|
217
|
+
|
218
|
+
|
219
|
+
@logs.command(
|
220
|
+
help="Scrub stdout/stderr produced by a task or all tasks in a step. "
|
221
|
+
"The format for input-path is either <run_id>/<step_name> or "
|
222
|
+
"<run_id>/<step_name>/<task_id>."
|
223
|
+
)
|
224
|
+
@click.argument("input-path")
|
225
|
+
@click.option(
|
226
|
+
"--stdout/--no-stdout",
|
227
|
+
default=False,
|
228
|
+
show_default=True,
|
229
|
+
help="Scrub stdout of the step or task.",
|
230
|
+
)
|
231
|
+
@click.option(
|
232
|
+
"--stderr/--no-stderr",
|
233
|
+
default=False,
|
234
|
+
show_default=True,
|
235
|
+
help="Scrub stderr of the step or task.",
|
236
|
+
)
|
237
|
+
@click.option(
|
238
|
+
"--both/--no-both",
|
239
|
+
default=True,
|
240
|
+
show_default=True,
|
241
|
+
help="Scrub both stdout and stderr of the step or task.",
|
242
|
+
)
|
243
|
+
@click.option(
|
244
|
+
"--attempt",
|
245
|
+
default=None,
|
246
|
+
type=int,
|
247
|
+
show_default=False,
|
248
|
+
help="Attempt number of a task to scrub, defaults to the latest attempt.",
|
249
|
+
)
|
250
|
+
@click.option(
|
251
|
+
"--latest/--all",
|
252
|
+
default=True,
|
253
|
+
show_default=False,
|
254
|
+
help="Scrub latest/all attempts of a step or task",
|
255
|
+
)
|
256
|
+
@click.option(
|
257
|
+
"--include-not-done",
|
258
|
+
default=False,
|
259
|
+
show_default=False,
|
260
|
+
is_flag=True,
|
261
|
+
help="Also scrub steps or tasks that are not done. Use this for tasks that did not finish correctly, and could not otherwise be scrubbed.",
|
262
|
+
)
|
263
|
+
@click.pass_obj
|
264
|
+
def scrub(
|
265
|
+
obj,
|
266
|
+
input_path,
|
267
|
+
stdout=None,
|
268
|
+
stderr=None,
|
269
|
+
both=None,
|
270
|
+
attempt=None,
|
271
|
+
latest=None,
|
272
|
+
include_not_done=None,
|
273
|
+
):
|
274
|
+
types = set()
|
275
|
+
if stdout:
|
276
|
+
types.add("stdout")
|
277
|
+
both = False
|
278
|
+
if stderr:
|
279
|
+
types.add("stderr")
|
280
|
+
both = False
|
281
|
+
if both:
|
282
|
+
types.update(("stdout", "stderr"))
|
283
|
+
|
284
|
+
streams = list(sorted(types, reverse=True))
|
285
|
+
|
286
|
+
# Pathspec can either be run_id/step_name or run_id/step_name/task_id.
|
287
|
+
parts = input_path.split("/")
|
288
|
+
if len(parts) == 2:
|
289
|
+
run_id, step_name = parts
|
290
|
+
task_id = None
|
291
|
+
elif len(parts) == 3:
|
292
|
+
run_id, step_name, task_id = parts
|
293
|
+
else:
|
294
|
+
raise CommandException(
|
295
|
+
"input_path should either be run_id/step_name "
|
296
|
+
"or run_id/step_name/task_id"
|
297
|
+
)
|
298
|
+
|
299
|
+
if task_id:
|
300
|
+
if latest:
|
301
|
+
ds_list = obj.flow_datastore.get_task_datastores(
|
302
|
+
pathspecs=[input_path],
|
303
|
+
attempt=attempt,
|
304
|
+
mode="d",
|
305
|
+
allow_not_done=include_not_done,
|
306
|
+
)
|
307
|
+
else:
|
308
|
+
ds_list = obj.flow_datastore.get_task_datastores(
|
309
|
+
pathspecs=[input_path],
|
310
|
+
attempt=attempt,
|
311
|
+
mode="d",
|
312
|
+
allow_not_done=include_not_done,
|
313
|
+
include_prior=True,
|
314
|
+
)
|
315
|
+
else:
|
316
|
+
if latest:
|
317
|
+
ds_list = obj.flow_datastore.get_task_datastores(
|
318
|
+
run_id=run_id,
|
319
|
+
steps=[step_name],
|
320
|
+
attempt=attempt,
|
321
|
+
mode="d",
|
322
|
+
allow_not_done=include_not_done,
|
323
|
+
)
|
324
|
+
else:
|
325
|
+
ds_list = obj.flow_datastore.get_task_datastores(
|
326
|
+
run_id=run_id,
|
327
|
+
steps=[step_name],
|
328
|
+
attempt=attempt,
|
329
|
+
mode="d",
|
330
|
+
allow_not_done=include_not_done,
|
331
|
+
include_prior=True,
|
332
|
+
)
|
333
|
+
|
334
|
+
if ds_list:
|
335
|
+
for ds in ds_list:
|
336
|
+
failures = []
|
337
|
+
for stream in streams:
|
338
|
+
try:
|
339
|
+
ds.scrub_logs(LOG_SOURCES, stream)
|
340
|
+
except Exception:
|
341
|
+
failures.append(stream)
|
342
|
+
if failures:
|
343
|
+
obj.echo_always(
|
344
|
+
"Failed to scrub %s - attempt %s : *%s*"
|
345
|
+
% (ds.pathspec, ds.attempt, ",".join(failures))
|
346
|
+
)
|
347
|
+
else:
|
348
|
+
echo(
|
349
|
+
"Logs have been scrubbed for %s - attempt %s"
|
350
|
+
% (ds.pathspec, ds.attempt)
|
351
|
+
)
|
352
|
+
|
353
|
+
else:
|
354
|
+
raise CommandException(
|
355
|
+
"No Tasks found at the given path -- "
|
356
|
+
"either none exist or they have not finished yet.\n"
|
357
|
+
"If you know the task has finished, you can supply --include-not-done to force scrub it."
|
358
|
+
)
|
@@ -4,6 +4,7 @@ import traceback
|
|
4
4
|
from metaflow.exception import MetaflowException
|
5
5
|
from metaflow.decorators import StepDecorator
|
6
6
|
from metaflow.unbounded_foreach import UBF_CONTROL
|
7
|
+
from metaflow.metaflow_config import DEFAULT_RUNTIME_LIMIT
|
7
8
|
|
8
9
|
|
9
10
|
class TimeoutException(MetaflowException):
|
@@ -99,7 +100,7 @@ class TimeoutDecorator(StepDecorator):
|
|
99
100
|
|
100
101
|
|
101
102
|
def get_run_time_limit_for_task(step_decos):
|
102
|
-
run_time_limit =
|
103
|
+
run_time_limit = DEFAULT_RUNTIME_LIMIT
|
103
104
|
for deco in step_decos:
|
104
105
|
if isinstance(deco, TimeoutDecorator):
|
105
106
|
run_time_limit = deco.secs
|
metaflow/task.py
CHANGED
@@ -23,18 +23,7 @@ from .util import all_equal, get_username, resolve_identity, unicode_type
|
|
23
23
|
from .clone_util import clone_task_helper
|
24
24
|
from .metaflow_current import current
|
25
25
|
from metaflow.tracing import get_trace_id
|
26
|
-
from metaflow.
|
27
|
-
|
28
|
-
foreach_frame_field_list = [
|
29
|
-
("step", str),
|
30
|
-
("var", str),
|
31
|
-
("num_splits", int),
|
32
|
-
("index", int),
|
33
|
-
("value", str),
|
34
|
-
]
|
35
|
-
ForeachFrame = namedtuple_with_defaults(
|
36
|
-
"ForeachFrame", foreach_frame_field_list, (None,) * (len(foreach_frame_field_list))
|
37
|
-
)
|
26
|
+
from metaflow.tuple_util import ForeachFrame
|
38
27
|
|
39
28
|
# Maximum number of characters of the foreach path that we store in the metadata.
|
40
29
|
MAX_FOREACH_PATH_LENGTH = 256
|
metaflow/tuple_util.py
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Keep this file minimum dependency as this will be imported by metaflow at bootup.
|
2
|
+
def namedtuple_with_defaults(typename, field_descr, defaults=()):
|
3
|
+
from typing import NamedTuple
|
4
|
+
|
5
|
+
T = NamedTuple(typename, field_descr)
|
6
|
+
T.__new__.__defaults__ = tuple(defaults)
|
7
|
+
|
8
|
+
# Adding the following to ensure the named tuple can be (un)pickled correctly.
|
9
|
+
import __main__
|
10
|
+
|
11
|
+
setattr(__main__, T.__name__, T)
|
12
|
+
T.__module__ = "__main__"
|
13
|
+
return T
|
14
|
+
|
15
|
+
|
16
|
+
# Define the namedtuple with default here if they need to be accessible in client
|
17
|
+
# (and w/o a real flow).
|
18
|
+
foreach_frame_field_list = [
|
19
|
+
("step", str),
|
20
|
+
("var", str),
|
21
|
+
("num_splits", int),
|
22
|
+
("index", int),
|
23
|
+
("value", str),
|
24
|
+
]
|
25
|
+
ForeachFrame = namedtuple_with_defaults(
|
26
|
+
"ForeachFrame", foreach_frame_field_list, (None,) * (len(foreach_frame_field_list))
|
27
|
+
)
|
metaflow/util.py
CHANGED
@@ -51,21 +51,6 @@ except NameError:
|
|
51
51
|
from shlex import quote as _quote
|
52
52
|
|
53
53
|
|
54
|
-
from typing import NamedTuple
|
55
|
-
|
56
|
-
|
57
|
-
def namedtuple_with_defaults(typename, field_descr, defaults=()):
|
58
|
-
T = NamedTuple(typename, field_descr)
|
59
|
-
T.__new__.__defaults__ = tuple(defaults)
|
60
|
-
|
61
|
-
# Adding the following to ensure the named tuple can be (un)pickled correctly.
|
62
|
-
import __main__
|
63
|
-
|
64
|
-
setattr(__main__, T.__name__, T)
|
65
|
-
T.__module__ = "__main__"
|
66
|
-
return T
|
67
|
-
|
68
|
-
|
69
54
|
class TempDir(object):
|
70
55
|
# Provide a temporary directory since Python 2.7 does not have it inbuilt
|
71
56
|
def __enter__(self):
|
metaflow/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
metaflow_version = "2.11.
|
1
|
+
metaflow_version = "2.11.16"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.11.
|
3
|
+
Version: 2.11.16
|
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.11.
|
29
|
+
Requires-Dist: metaflow-stubs ==2.11.16 ; extra == 'stubs'
|
30
30
|
|
31
31
|

|
32
32
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
metaflow/R.py,sha256=bNcXXpGOe5wquzTRGyU0KS9gJMz7HceKjXxammYPUE0,3841
|
2
|
-
metaflow/__init__.py,sha256=
|
2
|
+
metaflow/__init__.py,sha256=2QWfcQyYzHinGvCfuNNPpmZRQool_wLj4Vzc1mtX9WE,5754
|
3
3
|
metaflow/cards.py,sha256=tP1_RrtmqdFh741pqE4t98S7SA0MtGRlGvRICRZF1Mg,426
|
4
|
-
metaflow/cli.py,sha256=
|
4
|
+
metaflow/cli.py,sha256=2igissDxlfN7f3Bfm0urjL7xtUJJE6jasEJir3OJfsw,31392
|
5
5
|
metaflow/cli_args.py,sha256=lcgBGNTvfaiPxiUnejAe60Upt9swG6lRy1_3OqbU6MY,2616
|
6
|
-
metaflow/clone_util.py,sha256=
|
6
|
+
metaflow/clone_util.py,sha256=XfUX0vssu_hPlyZfhFl1AOnKkLqvt33Qp8xNrmdocGg,2057
|
7
7
|
metaflow/cmd_with_io.py,sha256=kl53HkAIyv0ecpItv08wZYczv7u3msD1VCcciqigqf0,588
|
8
8
|
metaflow/debug.py,sha256=HEmt_16tJtqHXQXsqD9pqOFe3CWR5GZ7VwpaYQgnRdU,1466
|
9
9
|
metaflow/decorators.py,sha256=n91bvWA4JJWHwZnI02-rFGBZsWWMtaABYlWYcOvHuRw,21391
|
@@ -15,10 +15,10 @@ metaflow/graph.py,sha256=ZPxyG8uwVMk5YYgX4pQEQaPZtZM5Wy-G4NtJK73IEuA,11818
|
|
15
15
|
metaflow/includefile.py,sha256=yHczcZ_U0SrasxSNhZb3DIBzx8UZnrJCl3FzvpEQLOA,19753
|
16
16
|
metaflow/integrations.py,sha256=LlsaoePRg03DjENnmLxZDYto3NwWc9z_PtU6nJxLldg,1480
|
17
17
|
metaflow/lint.py,sha256=_kYAbAtsP7IG1Rd0FqNbo8I8Zs66_0WXbaZJFARO3dE,10394
|
18
|
-
metaflow/metaflow_config.py,sha256=
|
18
|
+
metaflow/metaflow_config.py,sha256=WdLyxSwQy1XZUoJWrCMujz6OuzRqFSZZ31OP9b9mihc,21618
|
19
19
|
metaflow/metaflow_config_funcs.py,sha256=pCaiQ2ez9wXixJI3ehmf3QiW9lUqFrZnBZx1my_0wIg,4874
|
20
20
|
metaflow/metaflow_current.py,sha256=sCENPBiji3LcPbwgOG0ukGd_yEc5tST8EowES8DzRtA,7430
|
21
|
-
metaflow/metaflow_environment.py,sha256=
|
21
|
+
metaflow/metaflow_environment.py,sha256=HJfhI3GrU-YbY7Etu9M-1q7EbwtEGFzCBhrUs45OLXY,7403
|
22
22
|
metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,418
|
23
23
|
metaflow/metaflow_version.py,sha256=mPQ6g_3XjNdi0NrxDzwlW8ZH0nMyYpwqmJ04P7TIdP0,4774
|
24
24
|
metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
|
@@ -30,11 +30,12 @@ metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
30
|
metaflow/pylint_wrapper.py,sha256=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
|
31
31
|
metaflow/runtime.py,sha256=sGBkNMamV0bXBtZGCwvwQODrUrAGhln2rqadBVyKSvU,63961
|
32
32
|
metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
|
33
|
-
metaflow/task.py,sha256=
|
33
|
+
metaflow/task.py,sha256=tb5LNyx4u-yAQTM5MK1-wMw62dLfBeR9ojIZuYHeb0c,25592
|
34
|
+
metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
|
34
35
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
35
|
-
metaflow/util.py,sha256=
|
36
|
+
metaflow/util.py,sha256=m5womQ7y-jXehuMyHPfByDbZ4HwTJxzs869cPOlMR8s,13057
|
36
37
|
metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
|
37
|
-
metaflow/version.py,sha256=
|
38
|
+
metaflow/version.py,sha256=3ce4xuGeMO9uy2Wl_ijOVJrLOdw-emNhgeQNcOENpT8,29
|
38
39
|
metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
|
39
40
|
metaflow/_vendor/click/__init__.py,sha256=FkyGDQ-cbiQxP_lxgUspyFYS48f2S_pTcfKPz-d_RMo,2463
|
40
41
|
metaflow/_vendor/click/_bashcomplete.py,sha256=9J98IHQYmCAr2Jup6TDshUr5FJEen-AoQCZR0K5nKxQ,12309
|
@@ -98,17 +99,17 @@ metaflow/cmd/develop/stub_generator.py,sha256=fmiWmr4tXBBvIZdWVEhKvZWtG4vjyIsfre
|
|
98
99
|
metaflow/cmd/develop/stubs.py,sha256=hhf1giRNNlFGB5zSZdNA8tNvnJcmotXSiNN06N3_WyA,11742
|
99
100
|
metaflow/datastore/__init__.py,sha256=VxP6ddJt3rwiCkpiSfAhyVkUCOe1pgZZsytVEJzFmSQ,155
|
100
101
|
metaflow/datastore/content_addressed_store.py,sha256=dCVFAr4PltlmXNVVYt7UaBGJWe6fWuicCgb68XHqLrA,7643
|
101
|
-
metaflow/datastore/datastore_set.py,sha256=
|
102
|
+
metaflow/datastore/datastore_set.py,sha256=R5pwnxg1DD8kBY9vElvd2eMknrvwTyiSwvQs67_z9bc,2361
|
102
103
|
metaflow/datastore/datastore_storage.py,sha256=7V43QuiWDQ_Q4oHw9y7Z7X9lYj3GI-LV1-xB3d2Tt5k,9038
|
103
104
|
metaflow/datastore/exceptions.py,sha256=r7Ab5FvHIzyFh6kwiptA1lO5nLqWg0xRBoeYGefvapA,373
|
104
|
-
metaflow/datastore/flow_datastore.py,sha256=
|
105
|
+
metaflow/datastore/flow_datastore.py,sha256=kbJcOLYnvPHgJfZ_WWkD9LJSX1PHI1K6f9oVUu08A9U,10235
|
105
106
|
metaflow/datastore/inputs.py,sha256=i43dXr2xvgtsgKMO9allgCR18bk80GeayeQFyUTH36w,449
|
106
|
-
metaflow/datastore/task_datastore.py,sha256=
|
107
|
+
metaflow/datastore/task_datastore.py,sha256=RWO-2p_vyJfTV9JtW2dIdt7IW7n_OD8ff43YJwetiW0,36169
|
107
108
|
metaflow/extension_support/__init__.py,sha256=GK3P6YbIN4S7r3rbofzh4xaIJ6wsmDsE7iEMIlbXgMM,49334
|
108
109
|
metaflow/extension_support/_empty_file.py,sha256=HENjnM4uAfeNygxMB_feCCWORFoSat9n_QwzSx2oXPw,109
|
109
110
|
metaflow/extension_support/cmd.py,sha256=hk8iBUUINqvKCDxInKgWpum8ThiRZtHSJP7qBASHzl8,5711
|
110
111
|
metaflow/extension_support/integrations.py,sha256=AWAh-AZ-vo9IxuAVEjGw3s8p_NMm2DKHYx10oC51gPU,5506
|
111
|
-
metaflow/extension_support/plugins.py,sha256=
|
112
|
+
metaflow/extension_support/plugins.py,sha256=1p7OIu_CFOqhnVEL-EwRaHxYbCSwrPNhmDtQ7TH3GHg,10775
|
112
113
|
metaflow/metadata/__init__.py,sha256=FZNSnz26VB_m18DQG8mup6-Gfl7r1U6lRMljJBp3VAM,64
|
113
114
|
metaflow/metadata/heartbeat.py,sha256=9XJs4SV4R4taxUSMOKmRChnJCQ5a5o0dzRZ1iICWr9Y,2423
|
114
115
|
metaflow/metadata/metadata.py,sha256=oPm87-sQmyKWKfcFOsJOFXwo_clx9sCJ2YzdM32c6VQ,26061
|
@@ -118,12 +119,13 @@ metaflow/mflog/mflog.py,sha256=VebXxqitOtNAs7VJixnNfziO_i_urG7bsJ5JiB5IXgY,4370
|
|
118
119
|
metaflow/mflog/save_logs.py,sha256=ZBAF4BMukw4FMAC7odpr9OI2BC_2petPtDX0ca6srC4,2352
|
119
120
|
metaflow/mflog/save_logs_periodically.py,sha256=2Uvk9hi-zlCqXxOQoXmmjH1SCugfw6eG6w70WgfI-ho,1256
|
120
121
|
metaflow/mflog/tee.py,sha256=wTER15qeHuiRpCkOqo-bd-r3Gj-EVlf3IvWRCA4beW4,887
|
121
|
-
metaflow/plugins/__init__.py,sha256=
|
122
|
+
metaflow/plugins/__init__.py,sha256=rx4A1obvOM0AubZPXGOMsnYIsn90man8tYtzf5RxZjs,6881
|
122
123
|
metaflow/plugins/catch_decorator.py,sha256=UOM2taN_OL2RPpuJhwEOA9ZALm0-hHD0XS2Hn2GUev0,4061
|
123
124
|
metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
|
124
125
|
metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
|
125
126
|
metaflow/plugins/environment_decorator.py,sha256=6m9j2B77d-Ja_l_9CTJ__0O6aB2a8Qt_lAZu6UjAcUA,587
|
126
127
|
metaflow/plugins/events_decorator.py,sha256=c2GcH6Mspbey3wBkjM5lqxaNByFOzYDQdllLpXzRNv8,18283
|
128
|
+
metaflow/plugins/logs_cli.py,sha256=7-LxLRy8X5s4KcoMSc183cbNIJnIcedf6oWPe13-hQs,11409
|
127
129
|
metaflow/plugins/package_cli.py,sha256=-J6D4cupHfWSZ4GEFo2yy9Je9oL3owRWm5pEJwaiqd4,1649
|
128
130
|
metaflow/plugins/parallel_decorator.py,sha256=yrwfqdTmvEyR3YdvJiPChVOK5vjYTibC09kDs7t6_kg,4444
|
129
131
|
metaflow/plugins/project_decorator.py,sha256=eJOe0Ea7CbUCReEhR_XQvRkhV6jyRqDxM72oZI7EMCk,5336
|
@@ -132,9 +134,9 @@ metaflow/plugins/retry_decorator.py,sha256=tz_2Tq6GLg3vjDBZp0KKVTk3ADlCvqaWTSf7b
|
|
132
134
|
metaflow/plugins/storage_executor.py,sha256=FqAgR0-L9MuqN8fRtTe4jjUfJL9lqt6fQkYaglAjRbk,6137
|
133
135
|
metaflow/plugins/tag_cli.py,sha256=O_ZI4ILwGX3xKrLewUUF-zdJjCDi3JmsTb4ow87_RuY,17610
|
134
136
|
metaflow/plugins/test_unbounded_foreach_decorator.py,sha256=cB_2OWb38eYfmbVck72ZwU0qgzi6hqJXZAxglpHU_qg,5216
|
135
|
-
metaflow/plugins/timeout_decorator.py,sha256=
|
137
|
+
metaflow/plugins/timeout_decorator.py,sha256=R-X8rKeMqd-xhfJFqskWb6ZpmZt2JB14U1BZJSRriwM,3648
|
136
138
|
metaflow/plugins/airflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
|
-
metaflow/plugins/airflow/airflow.py,sha256=
|
139
|
+
metaflow/plugins/airflow/airflow.py,sha256=U7jg1fSpGcuXhBCZ9xNh492h0MhBx3EV1WpWQh6RIaI,32147
|
138
140
|
metaflow/plugins/airflow/airflow_cli.py,sha256=fUi6IsRMi6mvL6Twrszk7rZq7_4PmdYr9evJnBpXXPc,14440
|
139
141
|
metaflow/plugins/airflow/airflow_decorator.py,sha256=H9-QnRP4x8tSomLmmpGeuVUI48-CxHR7tlvn_ceX1Zs,1772
|
140
142
|
metaflow/plugins/airflow/airflow_utils.py,sha256=qd6lV2X4VpCO2sLsRc35JMOU4DVz_tQacrM_wWNkQug,28865
|
@@ -149,7 +151,7 @@ metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=JUKoGNoTCtrO9MNEneEC7ldRNwg
|
|
149
151
|
metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
150
152
|
metaflow/plugins/argo/argo_client.py,sha256=MKKhMCbWOPzf6z5zQQiyDRHHkAXcO7ipboDZDqAAvOk,15849
|
151
153
|
metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
|
152
|
-
metaflow/plugins/argo/argo_workflows.py,sha256=
|
154
|
+
metaflow/plugins/argo/argo_workflows.py,sha256=6px2phfm19G9pz4zcaC4xYsdoxNC8SxdzZr1uyoMaV4,130187
|
153
155
|
metaflow/plugins/argo/argo_workflows_cli.py,sha256=sZTpgfmc50eT3e0qIxpVqUgWhTcYlO1HM4gU6Oaya8g,33259
|
154
156
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=K5t4uIk2IXPdK7v7DEjj3buSB8ikLjLycKjbZUYeiaw,6781
|
155
157
|
metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
|
@@ -158,7 +160,7 @@ metaflow/plugins/aws/aws_client.py,sha256=mO8UD6pxFaOnxDb3hTP3HB7Gqb_ZxoR-76LT68
|
|
158
160
|
metaflow/plugins/aws/aws_utils.py,sha256=mSMBTUQ-CELhyPb6w3_Yq6_Hvd_6vbhAojYkrt2RNt8,6941
|
159
161
|
metaflow/plugins/aws/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
162
|
metaflow/plugins/aws/batch/batch.py,sha256=e9ssahWM18GnipPK2sqYB-ztx9w7Eoo7YtWyEtufYxs,17787
|
161
|
-
metaflow/plugins/aws/batch/batch_cli.py,sha256=
|
163
|
+
metaflow/plugins/aws/batch/batch_cli.py,sha256=6PTbyajRgdy0XmjyJLBTdKdiOB84dcovQQ8sFXlJqko,11749
|
162
164
|
metaflow/plugins/aws/batch/batch_client.py,sha256=s9ZHhxQPPoBQijLUgn6_16QOaD4-22U_44uJbp-yLkI,28565
|
163
165
|
metaflow/plugins/aws/batch/batch_decorator.py,sha256=o2UH_E6k98ZpbWTvMooKv4V7nwpdHmh5SwCGzWubv0c,17313
|
164
166
|
metaflow/plugins/aws/secrets_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -173,11 +175,13 @@ metaflow/plugins/aws/step_functions/step_functions.py,sha256=vXhtq9BSY9zmyG1Z0bj
|
|
173
175
|
metaflow/plugins/aws/step_functions/step_functions_cli.py,sha256=KlH9jJL0VfsT0JqBhLwaWdYjaccU8UEArKAFnIJbSoU,24426
|
174
176
|
metaflow/plugins/aws/step_functions/step_functions_client.py,sha256=DKpNwAIWElvWjFANs5Ku3rgzjxFoqAD6k-EF8Xhkg3Q,4754
|
175
177
|
metaflow/plugins/aws/step_functions/step_functions_decorator.py,sha256=9hw_MX36RyFp6IowuAYaJzJg9UC5KCe1FNt1PcG7_J0,3791
|
176
|
-
metaflow/plugins/azure/__init__.py,sha256=
|
177
|
-
metaflow/plugins/azure/
|
178
|
+
metaflow/plugins/azure/__init__.py,sha256=GuuhTVC-zSdyAf79a1wiERMq0Zts7fwVT7t9fAf234A,100
|
179
|
+
metaflow/plugins/azure/azure_credential.py,sha256=JmdGEbVzgxy8ucqnQDdTTI_atyMX9WSZUw3qYOo7RhE,2174
|
180
|
+
metaflow/plugins/azure/azure_exceptions.py,sha256=NnbwpUC23bc61HZjJmeXztY0tBNn_Y_VpIpDDuYWIZ0,433
|
181
|
+
metaflow/plugins/azure/azure_secret_manager_secrets_provider.py,sha256=GCPhzN9ldv1haD2W5swO2IxCDSqK57mRUNPyo2JwDAs,11107
|
178
182
|
metaflow/plugins/azure/azure_tail.py,sha256=JAqV4mC42bMpR0O7m6X4cpFuh0peV1ufs_jJXrmicTc,3362
|
179
|
-
metaflow/plugins/azure/azure_utils.py,sha256=
|
180
|
-
metaflow/plugins/azure/blob_service_client_factory.py,sha256=
|
183
|
+
metaflow/plugins/azure/azure_utils.py,sha256=j3kAxi2oC-fMpw8YegJvqsAwxi_m7jGPxCaeVwoBZJg,7100
|
184
|
+
metaflow/plugins/azure/blob_service_client_factory.py,sha256=MtyPftBxrXdXMxwhKgLepG6mtlb_2BhJLG_fvbO6D14,6527
|
181
185
|
metaflow/plugins/azure/includefile_support.py,sha256=Wv3g3RlGtLbxAh3Reg0BDLWwqavYibQNCDWddlH7XCE,4706
|
182
186
|
metaflow/plugins/cards/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
183
187
|
metaflow/plugins/cards/card_cli.py,sha256=yHUk2iz8Ct63WizdmWp8TleySBkq6I57LWZn2ITqzXY,34713
|
@@ -206,14 +210,14 @@ metaflow/plugins/cards/card_modules/chevron/renderer.py,sha256=dm5ufR9-qnx94D9Bt
|
|
206
210
|
metaflow/plugins/cards/card_modules/chevron/tokenizer.py,sha256=lQU9OELUE9a5Xu4snGhEV_YTT34iyUHVBuM1YO016Sw,7400
|
207
211
|
metaflow/plugins/cards/card_viewer/viewer.html,sha256=qZJGzhZhQ1gugsknRP7zkAPPfUAtvemK1UKqXoGff5M,11593
|
208
212
|
metaflow/plugins/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
209
|
-
metaflow/plugins/datastores/azure_storage.py,sha256=
|
213
|
+
metaflow/plugins/datastores/azure_storage.py,sha256=QvIUQGOZF1oKeRJXbl3RsV1MnO3OMfLzheoo0UNWn7E,16670
|
210
214
|
metaflow/plugins/datastores/gs_storage.py,sha256=ED1xfXNDiPkqma5PEui8HCv0b4ImHK_rlUMQJD9UNes,9622
|
211
215
|
metaflow/plugins/datastores/local_storage.py,sha256=igrBDphhyu7EFIUj3BWcO7beiZbNnJLq--lF45UYSyI,4750
|
212
216
|
metaflow/plugins/datastores/s3_storage.py,sha256=CZdNqaKtxDXQbEg2YHyphph3hWcLIE50puenm0WGVpk,5473
|
213
217
|
metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
|
214
218
|
metaflow/plugins/datatools/local.py,sha256=67hx3O_vInERlL0aJV0Sd-jUTd_2DOw4sJ4-IyEKNKM,4213
|
215
219
|
metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
|
216
|
-
metaflow/plugins/datatools/s3/s3.py,sha256=
|
220
|
+
metaflow/plugins/datatools/s3/s3.py,sha256=FWhLAO9ZgvYeLxnjjCDAMsIOMLYcdO88mPOhQr3_Naw,66140
|
217
221
|
metaflow/plugins/datatools/s3/s3op.py,sha256=ZQFSxlaQUt-Ko_kIXMbHOKJc8q4FPXogS3xI6xsDR7Y,43390
|
218
222
|
metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
|
219
223
|
metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
|
@@ -239,18 +243,20 @@ metaflow/plugins/env_escape/configurations/test_lib_impl/__init__.py,sha256=5uuX
|
|
239
243
|
metaflow/plugins/env_escape/configurations/test_lib_impl/test_lib.py,sha256=Dxp5aCnJd3p6xxahQIPzAiV7Qp1J7EYfIl5xDFBEpZQ,3570
|
240
244
|
metaflow/plugins/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
241
245
|
metaflow/plugins/frameworks/pytorch.py,sha256=9MUecLwNt9p9N1HVUYfnJ_1nLgMU0Y14UNJZHZ2qCA4,1606
|
242
|
-
metaflow/plugins/gcp/__init__.py,sha256=
|
246
|
+
metaflow/plugins/gcp/__init__.py,sha256=bmoHLvLtawvFT9DSuWziToAttNRfbinOkrZZePWfOY0,55
|
247
|
+
metaflow/plugins/gcp/gcp_secret_manager_secrets_provider.py,sha256=4551ReVCIWFd1wugU6r4aQ-5ovLHp5kRtfT9YCt67FY,7258
|
243
248
|
metaflow/plugins/gcp/gs_exceptions.py,sha256=NfqKmnPpNJ8nxA0CnPPjcO65SAQ2lhCrhM2dz5x9eCQ,184
|
244
|
-
metaflow/plugins/gcp/gs_storage_client_factory.py,sha256=
|
249
|
+
metaflow/plugins/gcp/gs_storage_client_factory.py,sha256=LIzc5bAzIOmaMhoXUtRkYaEJPEEy2suMv8uuNViC5Ug,2110
|
245
250
|
metaflow/plugins/gcp/gs_tail.py,sha256=Jl_wvnzU7dub07A-DOAuP5FeccNIrPM-CeL1xKFs1nQ,3034
|
246
251
|
metaflow/plugins/gcp/gs_utils.py,sha256=ZmIGFse1qYyvAVrwga23PQUzF6dXEDLLsZ2F-YRmvow,2030
|
247
252
|
metaflow/plugins/gcp/includefile_support.py,sha256=vIDeR-MiJuUh-2S2pV7Z7FBkhIWwtHXaRrj76MWGRiY,3869
|
248
253
|
metaflow/plugins/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
249
|
-
metaflow/plugins/kubernetes/kubernetes.py,sha256=
|
250
|
-
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=
|
251
|
-
metaflow/plugins/kubernetes/kubernetes_client.py,sha256=
|
252
|
-
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=
|
253
|
-
metaflow/plugins/kubernetes/kubernetes_job.py,sha256=
|
254
|
+
metaflow/plugins/kubernetes/kubernetes.py,sha256=RSlLyQV1ctqD7nobolsHezaRYV1pMYW3R-fyJw0nPIg,20152
|
255
|
+
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=Sv4joxLI0JXo0gryxgM_Z4VTygOtZ0-bNzU8lmOSiFY,9896
|
256
|
+
metaflow/plugins/kubernetes/kubernetes_client.py,sha256=oUwgpAyGYtNa0vi3nt6lwMwps9kdCLc8ZD-QJHs716g,2472
|
257
|
+
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=QK967jAxG7slzHyKy4NM_uTEZzQEAtanqOAr7kOs2d0,24269
|
258
|
+
metaflow/plugins/kubernetes/kubernetes_job.py,sha256=x8E4kB9SFCvSpdSkL0ILap7s4YpXnTniaDLtY3KHYKQ,31803
|
259
|
+
metaflow/plugins/kubernetes/kubernetes_jobsets.py,sha256=alYCAtphOSORfeG6jaXjY6-h1gDh6k7W3yvWLTLLCek,27192
|
254
260
|
metaflow/plugins/metadata/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
255
261
|
metaflow/plugins/metadata/local.py,sha256=YhLJC5zjVJrvQFIyQ92ZBByiUmhCC762RUX7ITX12O8,22428
|
256
262
|
metaflow/plugins/metadata/service.py,sha256=ihq5F7KQZlxvYwzH_-jyP2aWN_I96i2vp92j_d697s8,20204
|
@@ -298,9 +304,9 @@ metaflow/tutorials/07-worldview/README.md,sha256=5vQTrFqulJ7rWN6r20dhot9lI2sVj9W
|
|
298
304
|
metaflow/tutorials/07-worldview/worldview.ipynb,sha256=ztPZPI9BXxvW1QdS2Tfe7LBuVzvFvv0AToDnsDJhLdE,2237
|
299
305
|
metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIeWznyiUxzeUVE,1039
|
300
306
|
metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
|
301
|
-
metaflow-2.11.
|
302
|
-
metaflow-2.11.
|
303
|
-
metaflow-2.11.
|
304
|
-
metaflow-2.11.
|
305
|
-
metaflow-2.11.
|
306
|
-
metaflow-2.11.
|
307
|
+
metaflow-2.11.16.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
308
|
+
metaflow-2.11.16.dist-info/METADATA,sha256=SZGPk_0-golIvX3WPQNy3jyK4K0drvhxze8OrCLWCog,5908
|
309
|
+
metaflow-2.11.16.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
310
|
+
metaflow-2.11.16.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
|
311
|
+
metaflow-2.11.16.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
312
|
+
metaflow-2.11.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|