ob-metaflow 2.9.10.1__py2.py3-none-any.whl → 2.10.2.6__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 might be problematic. Click here for more details.
- metaflow/_vendor/packaging/__init__.py +15 -0
- metaflow/_vendor/packaging/_elffile.py +108 -0
- metaflow/_vendor/packaging/_manylinux.py +238 -0
- metaflow/_vendor/packaging/_musllinux.py +80 -0
- metaflow/_vendor/packaging/_parser.py +328 -0
- metaflow/_vendor/packaging/_structures.py +61 -0
- metaflow/_vendor/packaging/_tokenizer.py +188 -0
- metaflow/_vendor/packaging/markers.py +245 -0
- metaflow/_vendor/packaging/requirements.py +95 -0
- metaflow/_vendor/packaging/specifiers.py +1005 -0
- metaflow/_vendor/packaging/tags.py +546 -0
- metaflow/_vendor/packaging/utils.py +141 -0
- metaflow/_vendor/packaging/version.py +563 -0
- metaflow/_vendor/v3_7/__init__.py +1 -0
- metaflow/_vendor/v3_7/zipp.py +329 -0
- metaflow/metaflow_config.py +2 -1
- metaflow/metaflow_environment.py +3 -1
- metaflow/mflog/mflog.py +7 -1
- metaflow/multicore_utils.py +12 -2
- metaflow/plugins/__init__.py +8 -3
- metaflow/plugins/airflow/airflow.py +13 -0
- metaflow/plugins/argo/argo_client.py +16 -0
- metaflow/plugins/argo/argo_events.py +7 -1
- metaflow/plugins/argo/argo_workflows.py +62 -0
- metaflow/plugins/argo/argo_workflows_cli.py +15 -0
- metaflow/plugins/aws/batch/batch.py +10 -0
- metaflow/plugins/aws/batch/batch_cli.py +1 -2
- metaflow/plugins/aws/batch/batch_decorator.py +2 -9
- metaflow/plugins/datatools/s3/s3.py +4 -0
- metaflow/plugins/env_escape/client.py +24 -3
- metaflow/plugins/env_escape/stub.py +2 -8
- metaflow/plugins/kubernetes/kubernetes.py +13 -0
- metaflow/plugins/kubernetes/kubernetes_cli.py +1 -2
- metaflow/plugins/kubernetes/kubernetes_decorator.py +9 -2
- metaflow/plugins/pypi/__init__.py +29 -0
- metaflow/plugins/pypi/bootstrap.py +131 -0
- metaflow/plugins/pypi/conda_decorator.py +335 -0
- metaflow/plugins/pypi/conda_environment.py +414 -0
- metaflow/plugins/pypi/micromamba.py +294 -0
- metaflow/plugins/pypi/pip.py +205 -0
- metaflow/plugins/pypi/pypi_decorator.py +130 -0
- metaflow/plugins/pypi/pypi_environment.py +7 -0
- metaflow/plugins/pypi/utils.py +75 -0
- metaflow/task.py +0 -3
- metaflow/vendor.py +1 -0
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/METADATA +1 -1
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/RECORD +51 -33
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/WHEEL +1 -1
- metaflow/plugins/conda/__init__.py +0 -90
- metaflow/plugins/conda/batch_bootstrap.py +0 -104
- metaflow/plugins/conda/conda.py +0 -247
- metaflow/plugins/conda/conda_environment.py +0 -136
- metaflow/plugins/conda/conda_flow_decorator.py +0 -35
- metaflow/plugins/conda/conda_step_decorator.py +0 -416
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/LICENSE +0 -0
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/entry_points.txt +0 -0
- {ob_metaflow-2.9.10.1.dist-info → ob_metaflow-2.10.2.6.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import platform
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
if sys.version_info < (3, 6):
|
|
5
|
+
|
|
6
|
+
class Tags:
|
|
7
|
+
__getattr__ = lambda self, name: (_ for _ in ()).throw(
|
|
8
|
+
Exception("packaging.tags is not avaliable for Python < 3.6")
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
tags = Tags()
|
|
12
|
+
else:
|
|
13
|
+
from metaflow._vendor.packaging import tags
|
|
14
|
+
|
|
15
|
+
from metaflow.exception import MetaflowException
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def conda_platform():
|
|
19
|
+
# Returns the conda platform for the Python interpreter
|
|
20
|
+
_32_bit_interpreter = sys.maxsize <= 2**32
|
|
21
|
+
if platform.system() == "Linux":
|
|
22
|
+
if _32_bit_interpreter:
|
|
23
|
+
return "linux-32"
|
|
24
|
+
else:
|
|
25
|
+
return "linux-64"
|
|
26
|
+
elif platform.system() == "Darwin":
|
|
27
|
+
if platform.machine() == "arm64":
|
|
28
|
+
return "osx-arm64"
|
|
29
|
+
elif _32_bit_interpreter:
|
|
30
|
+
return "osx-32"
|
|
31
|
+
else:
|
|
32
|
+
return "osx-64"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def pip_tags(python_version, mamba_platform):
|
|
36
|
+
# Returns a list of pip tags containing (implementation, platforms, abis) tuples
|
|
37
|
+
# assuming a CPython implementation for Python interpreter.
|
|
38
|
+
|
|
39
|
+
# Inspired by https://github.com/pypa/pip/blob/0442875a68f19b0118b0b88c747bdaf6b24853ba/src/pip/_internal/utils/compatibility_tags.py
|
|
40
|
+
py_version = tuple(map(int, python_version.split(".")[:2]))
|
|
41
|
+
if mamba_platform == "linux-64":
|
|
42
|
+
platforms = [
|
|
43
|
+
"manylinux%s_x86_64" % s
|
|
44
|
+
for s in (
|
|
45
|
+
"1",
|
|
46
|
+
"2010",
|
|
47
|
+
"2014",
|
|
48
|
+
"_2_17",
|
|
49
|
+
"_2_18",
|
|
50
|
+
"_2_19",
|
|
51
|
+
"_2_20",
|
|
52
|
+
"_2_21",
|
|
53
|
+
"_2_23",
|
|
54
|
+
"_2_24",
|
|
55
|
+
"_2_25",
|
|
56
|
+
"_2_26",
|
|
57
|
+
"_2_27",
|
|
58
|
+
)
|
|
59
|
+
]
|
|
60
|
+
platforms.append("linux_x86_64")
|
|
61
|
+
elif mamba_platform == "osx-64":
|
|
62
|
+
platforms = tags.mac_platforms(arch="x86_64")
|
|
63
|
+
elif mamba_platform == "osx-arm64":
|
|
64
|
+
platforms = tags.mac_platforms(arch="arm64")
|
|
65
|
+
else:
|
|
66
|
+
raise MetaflowException("Unsupported platform: %s" % mamba_platform)
|
|
67
|
+
|
|
68
|
+
interpreter = "cp%s" % ("".join(map(str, py_version)))
|
|
69
|
+
|
|
70
|
+
abis = tags._cpython_abis(py_version)
|
|
71
|
+
|
|
72
|
+
supported = []
|
|
73
|
+
supported.extend(tags.cpython_tags(py_version, abis, platforms))
|
|
74
|
+
supported.extend(tags.compatible_tags(py_version, interpreter, platforms))
|
|
75
|
+
return supported
|
metaflow/task.py
CHANGED
|
@@ -53,9 +53,6 @@ class MetaflowTask(object):
|
|
|
53
53
|
self.ubf_context = ubf_context
|
|
54
54
|
|
|
55
55
|
def _exec_step_function(self, step_function, input_obj=None):
|
|
56
|
-
self.environment.validate_environment(
|
|
57
|
-
self.console_logger, self.flow_datastore.TYPE
|
|
58
|
-
)
|
|
59
56
|
if input_obj is None:
|
|
60
57
|
step_function()
|
|
61
58
|
else:
|
metaflow/vendor.py
CHANGED
|
@@ -15,13 +15,13 @@ metaflow/graph.py,sha256=ZPxyG8uwVMk5YYgX4pQEQaPZtZM5Wy-G4NtJK73IEuA,11818
|
|
|
15
15
|
metaflow/includefile.py,sha256=BVQLYTLZN7m3ibFnsTU70dPj9YskxZeQb1FosV3k4-o,19721
|
|
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=DGm4e0elTrNJuusKsMGy2HHOknEGty1kPkvDuwf0Dfk,19124
|
|
19
19
|
metaflow/metaflow_config_funcs.py,sha256=pCaiQ2ez9wXixJI3ehmf3QiW9lUqFrZnBZx1my_0wIg,4874
|
|
20
|
-
metaflow/metaflow_environment.py,sha256=
|
|
20
|
+
metaflow/metaflow_environment.py,sha256=JdsmQsYp1SDQniQ0-q1mKRrmzSFfYuzrf6jLEHmyaiM,7352
|
|
21
21
|
metaflow/metaflow_profile.py,sha256=jKPEW-hmAQO-htSxb9hXaeloLacAh41A35rMZH6G8pA,418
|
|
22
22
|
metaflow/metaflow_version.py,sha256=mPQ6g_3XjNdi0NrxDzwlW8ZH0nMyYpwqmJ04P7TIdP0,4774
|
|
23
23
|
metaflow/monitor.py,sha256=T0NMaBPvXynlJAO_avKtk8OIIRMyEuMAyF8bIp79aZU,5323
|
|
24
|
-
metaflow/multicore_utils.py,sha256=
|
|
24
|
+
metaflow/multicore_utils.py,sha256=wyJtMI4QyQsepRq9P_t_lRoOV-MLzZwnr0LXmR4VtbY,3015
|
|
25
25
|
metaflow/package.py,sha256=vX86iJ2xXWcGrOmABEfgOHuNBMqCBAu7ukjg-e0PZf8,7319
|
|
26
26
|
metaflow/parameters.py,sha256=d_op5psX6yAx-2demD-lffW8HJyiWu_Ft2HgvxuBUWw,13765
|
|
27
27
|
metaflow/procpoll.py,sha256=22ppTUyaTYVn1UUG4RNG1LnCKBwRbaTmhYiYN_7OVN8,2861
|
|
@@ -29,14 +29,14 @@ metaflow/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
29
29
|
metaflow/pylint_wrapper.py,sha256=zzBY9YaSUZOGH-ypDKAv2B_7XcoyMZj-zCoCrmYqNRc,2865
|
|
30
30
|
metaflow/runtime.py,sha256=QheT9uV2pBPROrFHo06HaFx-fCqaaQcMEK8_kef--pw,55864
|
|
31
31
|
metaflow/tagging_util.py,sha256=ctyf0Q1gBi0RyZX6J0e9DQGNkNHblV_CITfy66axXB4,2346
|
|
32
|
-
metaflow/task.py,sha256=
|
|
32
|
+
metaflow/task.py,sha256=summMHj2oQ37_Izp3c78FzS67jJkoKjtgLzYJUVXcs8,25278
|
|
33
33
|
metaflow/tracing.py,sha256=I2WYpSVuU9N42WQtR0ELcSzch45QLhBHdXGWLLrG53E,1199
|
|
34
34
|
metaflow/tracing_noop.py,sha256=q6hkFXDpLebtScj6rZhIAdWfMFxd1JAtErtYLTWWzgc,731
|
|
35
35
|
metaflow/tracing_otel.py,sha256=pBkWgeN9JcqhInCWdutdAKNKJbLnsFf3YNlYcYI5NM4,5383
|
|
36
36
|
metaflow/tracing_propagator.py,sha256=fdX2txx9RB1dFA9lZmzzAnoQZ_mInQPgVWJhAXUN6uc,2534
|
|
37
37
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
|
38
38
|
metaflow/util.py,sha256=PFBFprn7W8I8gbA05JtcQfNV21m9xgRFr7EXfzBu95U,13077
|
|
39
|
-
metaflow/vendor.py,sha256=
|
|
39
|
+
metaflow/vendor.py,sha256=LZgXrh7ZSDmD32D1T5jj3OKKpXIqqxKzdMAOc5V0SD4,5162
|
|
40
40
|
metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
|
|
41
41
|
metaflow/_vendor/click/__init__.py,sha256=FkyGDQ-cbiQxP_lxgUspyFYS48f2S_pTcfKPz-d_RMo,2463
|
|
42
42
|
metaflow/_vendor/click/_bashcomplete.py,sha256=9J98IHQYmCAr2Jup6TDshUr5FJEen-AoQCZR0K5nKxQ,12309
|
|
@@ -55,6 +55,19 @@ metaflow/_vendor/click/termui.py,sha256=G7QBEKIepRIGLvNdGwBTYiEtSImRxvTO_AglVpyH
|
|
|
55
55
|
metaflow/_vendor/click/testing.py,sha256=EUEsDUqNXFgCLhZ0ZFOROpaVDA5I_rijwnNPE6qICgA,12854
|
|
56
56
|
metaflow/_vendor/click/types.py,sha256=wuubik4VqgqAw5dvbYFkDt-zSAx97y9TQXuXcVaRyQA,25045
|
|
57
57
|
metaflow/_vendor/click/utils.py,sha256=4VEcJ7iEHwjnFuzEuRtkT99o5VG3zqSD7Q2CVzv13WU,15940
|
|
58
|
+
metaflow/_vendor/packaging/__init__.py,sha256=7BlJ_DcIt1zv01UQcZLozidczzNcivKj66zIBkRL3R4,501
|
|
59
|
+
metaflow/_vendor/packaging/_elffile.py,sha256=hbmK8OD6Z7fY6hwinHEUcD1by7czkGiNYu7ShnFEk2k,3266
|
|
60
|
+
metaflow/_vendor/packaging/_manylinux.py,sha256=uZ821PBqQrokhUbwe7E0UodEraMHqzoSgTvfJ8MIl30,8813
|
|
61
|
+
metaflow/_vendor/packaging/_musllinux.py,sha256=mvPk7FNjjILKRLIdMxR7IvJ1uggLgCszo-L9rjfpi0M,2524
|
|
62
|
+
metaflow/_vendor/packaging/_parser.py,sha256=jjFjSqNf7W2-Ta6YUkywK0P4d2i0Bz_MqLOfl7O1Tkw,9399
|
|
63
|
+
metaflow/_vendor/packaging/_structures.py,sha256=q3eVNmbWJGG_S0Dit_S3Ao8qQqz_5PYTXFAKBZe5yr4,1431
|
|
64
|
+
metaflow/_vendor/packaging/_tokenizer.py,sha256=czGibL-4oPofx1pCSt_hrozNbHlOPrqGv6m-0d-iTdo,5148
|
|
65
|
+
metaflow/_vendor/packaging/markers.py,sha256=HDPXE0_MPBSwsw_9upez8t8mdrqUGrgiOG_qyQy-W30,8161
|
|
66
|
+
metaflow/_vendor/packaging/requirements.py,sha256=4nOKheaBbVEQXTGSqaOGTy1Tkg7J_sEno3u8jxC-baw,3264
|
|
67
|
+
metaflow/_vendor/packaging/specifiers.py,sha256=ofkLIqBoWDsGauqvGFhbaMMMUmmwQLsXjv38z9_Be88,39080
|
|
68
|
+
metaflow/_vendor/packaging/tags.py,sha256=fOKnZVfiU3oc9CPSzjJUsMk5VTfgOfpNhWobUH0sAlg,18065
|
|
69
|
+
metaflow/_vendor/packaging/utils.py,sha256=es0cCezKspzriQ-3V88h3yJzxz028euV2sUwM61kE-o,4355
|
|
70
|
+
metaflow/_vendor/packaging/version.py,sha256=0zkwY8_t0OX8lvLTaIGdc9g2WvqdEKpmGxrS1DvgmS4,16312
|
|
58
71
|
metaflow/_vendor/v3_5/__init__.py,sha256=98e_aAZvsdPvFOT7hg_UM6i7DGHOLEdaeFiGVZLMRqA,12
|
|
59
72
|
metaflow/_vendor/v3_5/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
|
|
60
73
|
metaflow/_vendor/v3_5/importlib_metadata/__init__.py,sha256=sTmHo2wUteZGoRUkgDAhqUob8PIGzFxZ3BgdP4rFC3Q,19617
|
|
@@ -70,6 +83,8 @@ metaflow/_vendor/v3_6/importlib_metadata/_functools.py,sha256=PsY2-4rrKX4RVeRC1o
|
|
|
70
83
|
metaflow/_vendor/v3_6/importlib_metadata/_itertools.py,sha256=cvr_2v8BRbxcIl5x5ldfqdHjhI8Yi8s8yk50G_nm6jQ,2068
|
|
71
84
|
metaflow/_vendor/v3_6/importlib_metadata/_meta.py,sha256=_F48Hu_jFxkfKWz5wcYS8vO23qEygbVdF9r-6qh-hjE,1154
|
|
72
85
|
metaflow/_vendor/v3_6/importlib_metadata/_text.py,sha256=HCsFksZpJLeTP3NEk_ngrAeXVRRtTrtyh9eOABoRP4A,2166
|
|
86
|
+
metaflow/_vendor/v3_7/__init__.py,sha256=98e_aAZvsdPvFOT7hg_UM6i7DGHOLEdaeFiGVZLMRqA,12
|
|
87
|
+
metaflow/_vendor/v3_7/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
|
|
73
88
|
metaflow/client/__init__.py,sha256=1GtQB4Y_CBkzaxg32L1syNQSlfj762wmLrfrDxGi1b8,226
|
|
74
89
|
metaflow/client/core.py,sha256=MpJABOUiXSl5AFxu3gOMSPUnt0JAEg7xhMBGI13RUtg,69283
|
|
75
90
|
metaflow/client/filecache.py,sha256=QdD1sW6w4Nnza-ioz4I1fEZI843X33AFIV3eSxq-cuU,14868
|
|
@@ -96,11 +111,11 @@ metaflow/metadata/heartbeat.py,sha256=9XJs4SV4R4taxUSMOKmRChnJCQ5a5o0dzRZ1iICWr9
|
|
|
96
111
|
metaflow/metadata/metadata.py,sha256=oPm87-sQmyKWKfcFOsJOFXwo_clx9sCJ2YzdM32c6VQ,26061
|
|
97
112
|
metaflow/metadata/util.py,sha256=gGJLnTMOcVwHH5o278YT1qYoqSj-5IjRpbv2F-lUNAE,1257
|
|
98
113
|
metaflow/mflog/__init__.py,sha256=9iMMn2xYB0oaDXXcInxa9AdDqeVBeiJeB3klnqGkyL0,5983
|
|
99
|
-
metaflow/mflog/mflog.py,sha256=
|
|
114
|
+
metaflow/mflog/mflog.py,sha256=VebXxqitOtNAs7VJixnNfziO_i_urG7bsJ5JiB5IXgY,4370
|
|
100
115
|
metaflow/mflog/save_logs.py,sha256=ZBAF4BMukw4FMAC7odpr9OI2BC_2petPtDX0ca6srC4,2352
|
|
101
116
|
metaflow/mflog/save_logs_periodically.py,sha256=2Uvk9hi-zlCqXxOQoXmmjH1SCugfw6eG6w70WgfI-ho,1256
|
|
102
117
|
metaflow/mflog/tee.py,sha256=wTER15qeHuiRpCkOqo-bd-r3Gj-EVlf3IvWRCA4beW4,887
|
|
103
|
-
metaflow/plugins/__init__.py,sha256=
|
|
118
|
+
metaflow/plugins/__init__.py,sha256=NYyziiqHIAxOZYaQkjzeB54TMO1g2Ysf8vhC34pYWwU,6147
|
|
104
119
|
metaflow/plugins/catch_decorator.py,sha256=wAqyYZPQcVU1KA0cTq2Jb1doaoG3z10G9SHtt2YmrJY,4050
|
|
105
120
|
metaflow/plugins/debug_logger.py,sha256=mcF5HYzJ0NQmqCMjyVUk3iAP-heroHRIiVWQC6Ha2-I,879
|
|
106
121
|
metaflow/plugins/debug_monitor.py,sha256=Md5X_sDOSssN9pt2D8YcaIjTK5JaQD55UAYTcF6xYF0,1099
|
|
@@ -116,7 +131,7 @@ metaflow/plugins/tag_cli.py,sha256=xXlhv6Y9kU0BHvNWntQ9QoG6swBVww-FzrpeFt_m_98,1
|
|
|
116
131
|
metaflow/plugins/test_unbounded_foreach_decorator.py,sha256=cB_2OWb38eYfmbVck72ZwU0qgzi6hqJXZAxglpHU_qg,5216
|
|
117
132
|
metaflow/plugins/timeout_decorator.py,sha256=9aAMualSW1AzUV--tmkGR5rxQ_dBZIWtCKXbQ1_Pt9A,3598
|
|
118
133
|
metaflow/plugins/airflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
|
-
metaflow/plugins/airflow/airflow.py,sha256=
|
|
134
|
+
metaflow/plugins/airflow/airflow.py,sha256=ydSU7EN50DU9eIoSx6QaXlGZZy8zh3TKjytuiLWpiTw,31856
|
|
120
135
|
metaflow/plugins/airflow/airflow_cli.py,sha256=QiJqkvBDoCKKbNCe90tTIbaLP3Vxqdzxh5EoAJDpskY,14439
|
|
121
136
|
metaflow/plugins/airflow/airflow_decorator.py,sha256=H9-QnRP4x8tSomLmmpGeuVUI48-CxHR7tlvn_ceX1Zs,1772
|
|
122
137
|
metaflow/plugins/airflow/airflow_utils.py,sha256=qd6lV2X4VpCO2sLsRc35JMOU4DVz_tQacrM_wWNkQug,28865
|
|
@@ -129,20 +144,20 @@ metaflow/plugins/airflow/sensors/base_sensor.py,sha256=lgbd9JjfDBjDRT8-oEnPnFNst
|
|
|
129
144
|
metaflow/plugins/airflow/sensors/external_task_sensor.py,sha256=GAWfc2GJqSSAKOJyHSdMea1-tu1cLgEWlRIfe3fti3Y,6048
|
|
130
145
|
metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=zym4mUm_f_gBsvHHVqGtX_OOxRjM3WG217gaT-XDBnk,3274
|
|
131
146
|
metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
|
-
metaflow/plugins/argo/argo_client.py,sha256=
|
|
133
|
-
metaflow/plugins/argo/argo_events.py,sha256=
|
|
134
|
-
metaflow/plugins/argo/argo_workflows.py,sha256=
|
|
135
|
-
metaflow/plugins/argo/argo_workflows_cli.py,sha256=
|
|
147
|
+
metaflow/plugins/argo/argo_client.py,sha256=lkVfUuH4rT1ONBvPRWZwQoMDUphHitFxCYWdXRU3zZY,15855
|
|
148
|
+
metaflow/plugins/argo/argo_events.py,sha256=Pt5L7DhxxWMES81JS8kCh4Al4w7k-uKeH99FChBPp1o,6002
|
|
149
|
+
metaflow/plugins/argo/argo_workflows.py,sha256=tr00xdYl_TTT8J0E1q3SnNpREAClyz7ZJIcTjhyRKlw,116131
|
|
150
|
+
metaflow/plugins/argo/argo_workflows_cli.py,sha256=oXCSU6TdkF-ptQTXux_W2KAwL-LMJjpMvoxLG9Et0o8,32350
|
|
136
151
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=CfKVoHCOsCCQMghhPE30xw15gacwp3hR23HCo9ZZFVg,6580
|
|
137
152
|
metaflow/plugins/argo/process_input_paths.py,sha256=4SiUoxbnTX4rCt0RSLcxG5jysbyd8oU-5JT0UOgy-vk,555
|
|
138
153
|
metaflow/plugins/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
154
|
metaflow/plugins/aws/aws_client.py,sha256=mO8UD6pxFaOnxDb3hTP3HB7Gqb_ZxoR-76LT683WHvI,4036
|
|
140
155
|
metaflow/plugins/aws/aws_utils.py,sha256=0bb4Hm7RxWbwMYpK-6D4ac-YFnvDanUjMDSjw1ikP40,6946
|
|
141
156
|
metaflow/plugins/aws/batch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
|
-
metaflow/plugins/aws/batch/batch.py,sha256=
|
|
143
|
-
metaflow/plugins/aws/batch/batch_cli.py,sha256=
|
|
157
|
+
metaflow/plugins/aws/batch/batch.py,sha256=7E49swzpO97Mk3MQmFfFQT2oAsjt0uIXNWBvZp684lw,17047
|
|
158
|
+
metaflow/plugins/aws/batch/batch_cli.py,sha256=T0fCyi87vtcmaGM16FSjeNI-lLa9IVlm7xErG3GeWrA,10735
|
|
144
159
|
metaflow/plugins/aws/batch/batch_client.py,sha256=3BWktFmpVgvI5wF7PSGxd8qTGPn3eyPhcWL916aIDGo,23956
|
|
145
|
-
metaflow/plugins/aws/batch/batch_decorator.py,sha256=
|
|
160
|
+
metaflow/plugins/aws/batch/batch_decorator.py,sha256=cR-5PV9lLhqdxKKFBeGJZaiHFF-b6aop_XW9j4CwPmo,15626
|
|
146
161
|
metaflow/plugins/aws/secrets_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
147
162
|
metaflow/plugins/aws/secrets_manager/aws_secrets_manager_secrets_provider.py,sha256=JtFUVu00Cg0FzAizgrPLXmrMqsT7YeQMkQlgeivUxcE,7986
|
|
148
163
|
metaflow/plugins/aws/step_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -184,12 +199,6 @@ metaflow/plugins/cards/card_modules/chevron/main.py,sha256=FKpDW4PS2dYshgkm6yIxr
|
|
|
184
199
|
metaflow/plugins/cards/card_modules/chevron/metadata.py,sha256=gQDpB9KezW9Mcv-n9K2Pt1akjiPGG1zYB5YPdQ0FlNc,19
|
|
185
200
|
metaflow/plugins/cards/card_modules/chevron/renderer.py,sha256=dm5ufR9-qnx94D9BtV7q_64oqYUpwdCRgBTcjBRkZyM,13938
|
|
186
201
|
metaflow/plugins/cards/card_modules/chevron/tokenizer.py,sha256=lQU9OELUE9a5Xu4snGhEV_YTT34iyUHVBuM1YO016Sw,7400
|
|
187
|
-
metaflow/plugins/conda/__init__.py,sha256=Zamj1DqbZDhkXnq9jhmEGVWK18s1Js8e5jA4eyhL4k8,2839
|
|
188
|
-
metaflow/plugins/conda/batch_bootstrap.py,sha256=_7aQ-YAHlABC6aloRS5m17p7WIv_qJdWmZP7UQCFdd8,4693
|
|
189
|
-
metaflow/plugins/conda/conda.py,sha256=-CNTWjxmcbLoqbrwY8AJHwbQjuxvd-NSjChnZ95_pFc,8804
|
|
190
|
-
metaflow/plugins/conda/conda_environment.py,sha256=KaLhyuKq0Doiz1DlTsckS7mJe_13aQkCVTMxMllmJac,5032
|
|
191
|
-
metaflow/plugins/conda/conda_flow_decorator.py,sha256=A9kU9DayjNT3df7T415mlFocZ5lVnJkhpNyzMZv8-UU,1189
|
|
192
|
-
metaflow/plugins/conda/conda_step_decorator.py,sha256=sf5Hx3PIabAaTBfYlSetWoOI526yiAVYIsZFt6uXzfg,15719
|
|
193
202
|
metaflow/plugins/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
194
203
|
metaflow/plugins/datastores/azure_storage.py,sha256=lsQ6G-nz1j0_O3sRipqMpu-A-hJzg5LhaGpCH-Sbtgg,16317
|
|
195
204
|
metaflow/plugins/datastores/gs_storage.py,sha256=1dzkQPi6y5xNeZbmdCeh9ef5NK1yweTs3AJYcBwd63k,9705
|
|
@@ -198,19 +207,19 @@ metaflow/plugins/datastores/s3_storage.py,sha256=W3PIDbDyk67ecDfRf10mQeRGgaRq4zc
|
|
|
198
207
|
metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
|
|
199
208
|
metaflow/plugins/datatools/local.py,sha256=67hx3O_vInERlL0aJV0Sd-jUTd_2DOw4sJ4-IyEKNKM,4213
|
|
200
209
|
metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
|
|
201
|
-
metaflow/plugins/datatools/s3/s3.py,sha256=
|
|
210
|
+
metaflow/plugins/datatools/s3/s3.py,sha256=r6evzNxwt4VuWadVhhUuCpnWLxc8lB9kS0upxr-CVeQ,65542
|
|
202
211
|
metaflow/plugins/datatools/s3/s3op.py,sha256=sLtofwPB1U99IR1ATFvKmUDgUh8-YPWAsKyANdTEekw,43358
|
|
203
212
|
metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
|
|
204
213
|
metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
|
|
205
214
|
metaflow/plugins/env_escape/__init__.py,sha256=8NhVmk_OncuzVIT_TdwDcZeunfcjlI8iGfi6cgPO_xQ,8771
|
|
206
|
-
metaflow/plugins/env_escape/client.py,sha256=
|
|
215
|
+
metaflow/plugins/env_escape/client.py,sha256=K4de-oNuTsIbt6gI2jBk6ao2uKlEWwHgOLSxWQMsgig,18663
|
|
207
216
|
metaflow/plugins/env_escape/client_modules.py,sha256=dhVEQ07q_pK2w7esSAr1w5cpBxe8G6dbYVb5iQGp2b0,10727
|
|
208
217
|
metaflow/plugins/env_escape/consts.py,sha256=2he2wmaS-maEXwtsFdUnu-V712F6yYsfaIrAh0jFZ7A,978
|
|
209
218
|
metaflow/plugins/env_escape/data_transferer.py,sha256=wm1Aqf0rTWaq8JgqpiRN0g3N3hX7YAMuhCLRrbOP_9E,12696
|
|
210
219
|
metaflow/plugins/env_escape/exception_transferer.py,sha256=DNaOxzcP6ob0hMXR0Jcl1Hnm9KOD0PcAPnSgjskGU74,8745
|
|
211
220
|
metaflow/plugins/env_escape/override_decorators.py,sha256=U_rKfyW60nhnr3Y-48MtCOifuNhN9Bl3CmVUeP0xSGQ,3556
|
|
212
221
|
metaflow/plugins/env_escape/server.py,sha256=HP-KXH4uFJAugzPkS9CVPaOUuDbGVqNV91yCfrcagcA,19282
|
|
213
|
-
metaflow/plugins/env_escape/stub.py,sha256=
|
|
222
|
+
metaflow/plugins/env_escape/stub.py,sha256=RjJkVH0VWy-1LvWfUKDJZ6hPjPZIPsBIp4yeBgT7OJQ,10851
|
|
214
223
|
metaflow/plugins/env_escape/utils.py,sha256=q91oeiBFVjiTYcLvZ1TNJaSUZxDL89_N5lreu5FUqoA,810
|
|
215
224
|
metaflow/plugins/env_escape/communication/__init__.py,sha256=Ff5AB88gOAvBzN2pp_2YNiD0PhUIt2SFE8nyOAKnxXg,38
|
|
216
225
|
metaflow/plugins/env_escape/communication/bytestream.py,sha256=weQBm-c6yPlGv1TAmQbYanqvQ0IRDh7x_6hZPvWh_Uw,1866
|
|
@@ -232,14 +241,23 @@ metaflow/plugins/gcp/gs_tail.py,sha256=Jl_wvnzU7dub07A-DOAuP5FeccNIrPM-CeL1xKFs1
|
|
|
232
241
|
metaflow/plugins/gcp/gs_utils.py,sha256=YgtzUn9A0DlYRWR75h533RVYZsqR7eEZPRRR8QSFZik,2023
|
|
233
242
|
metaflow/plugins/gcp/includefile_support.py,sha256=vIDeR-MiJuUh-2S2pV7Z7FBkhIWwtHXaRrj76MWGRiY,3869
|
|
234
243
|
metaflow/plugins/kubernetes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
235
|
-
metaflow/plugins/kubernetes/kubernetes.py,sha256=
|
|
236
|
-
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=
|
|
244
|
+
metaflow/plugins/kubernetes/kubernetes.py,sha256=h6C3OOiNC1LjjaM52RdpFhkQmjGFIQ5JWuC-DTv7F04,17301
|
|
245
|
+
metaflow/plugins/kubernetes/kubernetes_cli.py,sha256=Y8XNVTumxGkYLs_pFE04w8X0zCEvCSNaIBQx21zETC8,8942
|
|
237
246
|
metaflow/plugins/kubernetes/kubernetes_client.py,sha256=dV3TEGQMBbljmv6Gs1EKfmHTorKt21lhSiYsNx0To08,1901
|
|
238
|
-
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=
|
|
247
|
+
metaflow/plugins/kubernetes/kubernetes_decorator.py,sha256=HTDM5Z-04nQK75vFXFLdW1a4dWSEHEJerKqKc65khMA,21184
|
|
239
248
|
metaflow/plugins/kubernetes/kubernetes_job.py,sha256=XF8_dXhoEyCys-aIZliCdnnwmkXfXQudFJNAp7NM9Oc,30723
|
|
240
249
|
metaflow/plugins/metadata/__init__.py,sha256=q5OifpVipqhZuyrXBp9YIJN_jUov14_CNMveim9L8Rs,86
|
|
241
250
|
metaflow/plugins/metadata/local.py,sha256=YhLJC5zjVJrvQFIyQ92ZBByiUmhCC762RUX7ITX12O8,22428
|
|
242
251
|
metaflow/plugins/metadata/service.py,sha256=GLZETGlTEx0FJJ8P-ExYGFligKpEOuypR0u5vMCT_cA,20202
|
|
252
|
+
metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
|
|
253
|
+
metaflow/plugins/pypi/bootstrap.py,sha256=qFaGEuWsF66wa4ddIjuT-UMOblXBcdeexWayPkZT834,4791
|
|
254
|
+
metaflow/plugins/pypi/conda_decorator.py,sha256=z8PNmVBJJ_eeNMY6qEHfAlJ8dichFtE0KxZxuuJXddo,13533
|
|
255
|
+
metaflow/plugins/pypi/conda_environment.py,sha256=J57EOfDo_2LCm_KZniPdt42BynzyeJnLGuEfDrHBCM0,16217
|
|
256
|
+
metaflow/plugins/pypi/micromamba.py,sha256=EPcEWgfbOMxajYSiV2gb4z4p-M5D_XWE3L0xZl8n7lI,11890
|
|
257
|
+
metaflow/plugins/pypi/pip.py,sha256=k75dl45dauJ0ofAdIaJVZzboHpiuMAWgleM5hEsXBl4,7924
|
|
258
|
+
metaflow/plugins/pypi/pypi_decorator.py,sha256=3I9Byc0ZH9R36g0KELRbqFkocCujbgmju7iljYaYSTM,5413
|
|
259
|
+
metaflow/plugins/pypi/pypi_environment.py,sha256=FYMg8kF3lXqcLfRYWD83a9zpVjcoo_TARqMGZ763rRk,230
|
|
260
|
+
metaflow/plugins/pypi/utils.py,sha256=dYr9Flsa2cMnuMl4IL-Zhm7tiUoK4SmgiZ5qjR6LSag,2303
|
|
243
261
|
metaflow/plugins/secrets/__init__.py,sha256=mhJaN2eMS_ZZVewAMR2E-JdP5i0t3v9e6Dcwd-WpruE,310
|
|
244
262
|
metaflow/plugins/secrets/inline_secrets_provider.py,sha256=EChmoBGA1i7qM3jtYwPpLZDBybXLergiDlN63E0u3x8,294
|
|
245
263
|
metaflow/plugins/secrets/secrets_decorator.py,sha256=Y41XCOEGt7asxx6FEOBdKMqYFlU_jcA5u7erHN8DqJM,10514
|
|
@@ -271,9 +289,9 @@ metaflow/tutorials/07-worldview/README.md,sha256=5vQTrFqulJ7rWN6r20dhot9lI2sVj9W
|
|
|
271
289
|
metaflow/tutorials/07-worldview/worldview.ipynb,sha256=ztPZPI9BXxvW1QdS2Tfe7LBuVzvFvv0AToDnsDJhLdE,2237
|
|
272
290
|
metaflow/tutorials/08-autopilot/README.md,sha256=GnePFp_q76jPs991lMUqfIIh5zSorIeWznyiUxzeUVE,1039
|
|
273
291
|
metaflow/tutorials/08-autopilot/autopilot.ipynb,sha256=DQoJlILV7Mq9vfPBGW-QV_kNhWPjS5n6SJLqePjFYLY,3191
|
|
274
|
-
ob_metaflow-2.
|
|
275
|
-
ob_metaflow-2.
|
|
276
|
-
ob_metaflow-2.
|
|
277
|
-
ob_metaflow-2.
|
|
278
|
-
ob_metaflow-2.
|
|
279
|
-
ob_metaflow-2.
|
|
292
|
+
ob_metaflow-2.10.2.6.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
|
293
|
+
ob_metaflow-2.10.2.6.dist-info/METADATA,sha256=wG48Bi6r3Exgd1JZcPs3N79aZSu6FjjuajiQfAMBQ0k,5061
|
|
294
|
+
ob_metaflow-2.10.2.6.dist-info/WHEEL,sha256=iYlv5fX357PQyRT2o6tw1bN-YcKFFHKqB_LwHO5wP-g,110
|
|
295
|
+
ob_metaflow-2.10.2.6.dist-info/entry_points.txt,sha256=IKwTN1T3I5eJL3uo_vnkyxVffcgnRdFbKwlghZfn27k,57
|
|
296
|
+
ob_metaflow-2.10.2.6.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
|
297
|
+
ob_metaflow-2.10.2.6.dist-info/RECORD,,
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import errno
|
|
2
|
-
import os
|
|
3
|
-
import json
|
|
4
|
-
import fcntl
|
|
5
|
-
|
|
6
|
-
from metaflow.exception import MetaflowException, MetaflowInternalError
|
|
7
|
-
from metaflow.metaflow_config import (
|
|
8
|
-
CONDA_PACKAGE_S3ROOT,
|
|
9
|
-
DATASTORE_SYSROOT_S3,
|
|
10
|
-
CONDA_PACKAGE_AZUREROOT,
|
|
11
|
-
CONDA_PACKAGE_GSROOT,
|
|
12
|
-
DATASTORE_SYSROOT_AZURE,
|
|
13
|
-
DATASTORE_SYSROOT_GS,
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
CONDA_MAGIC_FILE = "conda.dependencies"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def get_conda_manifest_path(ds_root, flow_name):
|
|
20
|
-
return os.path.join(ds_root, flow_name, CONDA_MAGIC_FILE)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def read_conda_manifest(ds_root, flow_name):
|
|
24
|
-
path = get_conda_manifest_path(ds_root, flow_name)
|
|
25
|
-
if os.path.exists(path) and os.path.getsize(path) > 0:
|
|
26
|
-
with open(path) as f:
|
|
27
|
-
return json.load(f)
|
|
28
|
-
else:
|
|
29
|
-
return {}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def write_to_conda_manifest(ds_root, flow_name, key, value):
|
|
33
|
-
path = get_conda_manifest_path(ds_root, flow_name)
|
|
34
|
-
try:
|
|
35
|
-
os.makedirs(os.path.dirname(path))
|
|
36
|
-
except OSError as x:
|
|
37
|
-
if x.errno != errno.EEXIST:
|
|
38
|
-
raise
|
|
39
|
-
with os.fdopen(os.open(path, os.O_RDWR | os.O_CREAT), "r+") as f:
|
|
40
|
-
try:
|
|
41
|
-
fcntl.flock(f, fcntl.LOCK_EX)
|
|
42
|
-
data = {}
|
|
43
|
-
if os.path.getsize(path) > 0:
|
|
44
|
-
f.seek(0)
|
|
45
|
-
data = json.load(f)
|
|
46
|
-
data[key] = value
|
|
47
|
-
f.seek(0)
|
|
48
|
-
json.dump(data, f)
|
|
49
|
-
f.truncate()
|
|
50
|
-
except IOError as e:
|
|
51
|
-
if e.errno != errno.EAGAIN:
|
|
52
|
-
raise
|
|
53
|
-
finally:
|
|
54
|
-
fcntl.flock(f, fcntl.LOCK_UN)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def get_conda_package_root(datastore_type):
|
|
58
|
-
# Yes, code duplication. But easier to read this way, at N=2
|
|
59
|
-
if datastore_type == "s3":
|
|
60
|
-
if CONDA_PACKAGE_S3ROOT is None:
|
|
61
|
-
if DATASTORE_SYSROOT_S3 is None:
|
|
62
|
-
raise MetaflowException(
|
|
63
|
-
msg="METAFLOW_DATASTORE_SYSROOT_S3 must be set!"
|
|
64
|
-
)
|
|
65
|
-
return "%s/conda" % DATASTORE_SYSROOT_S3
|
|
66
|
-
else:
|
|
67
|
-
return CONDA_PACKAGE_S3ROOT
|
|
68
|
-
elif datastore_type == "azure":
|
|
69
|
-
if CONDA_PACKAGE_AZUREROOT is None:
|
|
70
|
-
if DATASTORE_SYSROOT_AZURE is None:
|
|
71
|
-
raise MetaflowException(
|
|
72
|
-
msg="METAFLOW_DATASTORE_SYSROOT_AZURE must be set!"
|
|
73
|
-
)
|
|
74
|
-
return "%s/conda" % DATASTORE_SYSROOT_AZURE
|
|
75
|
-
else:
|
|
76
|
-
return CONDA_PACKAGE_AZUREROOT
|
|
77
|
-
elif datastore_type == "gs":
|
|
78
|
-
if CONDA_PACKAGE_GSROOT is None:
|
|
79
|
-
if DATASTORE_SYSROOT_GS is None:
|
|
80
|
-
raise MetaflowException(
|
|
81
|
-
msg="METAFLOW_DATASTORE_SYSROOT_GS must be set!"
|
|
82
|
-
)
|
|
83
|
-
return "%s/conda" % DATASTORE_SYSROOT_GS
|
|
84
|
-
else:
|
|
85
|
-
return CONDA_PACKAGE_GSROOT
|
|
86
|
-
else:
|
|
87
|
-
raise MetaflowInternalError(
|
|
88
|
-
msg="Unsupported storage backend '%s' for working with Conda"
|
|
89
|
-
% (datastore_type,)
|
|
90
|
-
)
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
import os
|
|
3
|
-
import shutil
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
from metaflow.exception import MetaflowException
|
|
7
|
-
from metaflow.metaflow_config import DATASTORE_LOCAL_DIR
|
|
8
|
-
|
|
9
|
-
from ..env_escape import generate_trampolines, ENV_ESCAPE_PY
|
|
10
|
-
|
|
11
|
-
from . import CONDA_MAGIC_FILE, get_conda_package_root
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def bootstrap_environment(flow_name, env_id, datastore_type):
|
|
15
|
-
setup_conda_manifest(flow_name)
|
|
16
|
-
packages = download_conda_packages(flow_name, env_id, datastore_type)
|
|
17
|
-
install_conda_environment(env_id, packages)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def setup_conda_manifest(flow_name):
|
|
21
|
-
manifest_folder = os.path.join(os.getcwd(), DATASTORE_LOCAL_DIR, flow_name)
|
|
22
|
-
if not os.path.exists(manifest_folder):
|
|
23
|
-
os.makedirs(manifest_folder)
|
|
24
|
-
shutil.move(
|
|
25
|
-
os.path.join(os.getcwd(), CONDA_MAGIC_FILE),
|
|
26
|
-
os.path.join(manifest_folder, CONDA_MAGIC_FILE),
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def download_conda_packages(flow_name, env_id, datastore_type):
|
|
31
|
-
pkgs_folder = os.path.join(os.getcwd(), "pkgs")
|
|
32
|
-
if not os.path.exists(pkgs_folder):
|
|
33
|
-
os.makedirs(pkgs_folder)
|
|
34
|
-
# NOTE: if two runs use the same DATASTORE_LOCAL_DIR but different cloud based
|
|
35
|
-
# datastore roots (e.g. a different DATASTORE_SYSROOT_AZURE), then this breaks.
|
|
36
|
-
# This shared local manifest CONDA_MAGIC_FILE will say that cache_urls exist,
|
|
37
|
-
# but those URLs will not actually point to any real objects in the datastore
|
|
38
|
-
# for the second run.
|
|
39
|
-
manifest_folder = os.path.join(os.getcwd(), DATASTORE_LOCAL_DIR, flow_name)
|
|
40
|
-
with open(os.path.join(manifest_folder, CONDA_MAGIC_FILE)) as f:
|
|
41
|
-
env = json.load(f)[env_id]
|
|
42
|
-
|
|
43
|
-
# git commit fbd6c9d8a819fad647958c9fa869153ab37bc0ca introduced support for
|
|
44
|
-
# Microsoft Azure and made a minor tweak to how conda packages are uploaded. As
|
|
45
|
-
# a result, the URL stored by Metaflow no longer includes the datastore root (
|
|
46
|
-
# which arguably helps with portability of datastore). To ensure backwards
|
|
47
|
-
# compatibility, we add this small check here that checks for the prefix of
|
|
48
|
-
# the URLs before downloading them appropriately. Of course, a change can be
|
|
49
|
-
# made to allow the datastore to consume full URLs as well instead of this
|
|
50
|
-
# change, but given that change's far-reaching consequences, we introduce this
|
|
51
|
-
# workaround.
|
|
52
|
-
# https://github.com/Netflix/metaflow/commit/fbd6c9d8a819fad647958c9fa869153ab37bc0ca#diff-1ecbb40de8aba5b41e149987de4aa797a47f4498e5e4e3f63a53d4283dcdf941R198
|
|
53
|
-
if env["cache_urls"][0].startswith("s3://"):
|
|
54
|
-
from metaflow.plugins.datatools import S3
|
|
55
|
-
|
|
56
|
-
with S3() as s3:
|
|
57
|
-
for pkg in s3.get_many(env["cache_urls"]):
|
|
58
|
-
shutil.move(
|
|
59
|
-
pkg.path, os.path.join(pkgs_folder, os.path.basename(pkg.key))
|
|
60
|
-
)
|
|
61
|
-
else:
|
|
62
|
-
# Import DATASTORES dynamically... otherwise, circular import
|
|
63
|
-
from metaflow.plugins import DATASTORES
|
|
64
|
-
|
|
65
|
-
storage_impl = [d for d in DATASTORES if d.TYPE == datastore_type]
|
|
66
|
-
if len(storage_impl) == 0:
|
|
67
|
-
raise MetaflowException(
|
|
68
|
-
msg="Downloading conda packages from %s datastore is not yet implemented!"
|
|
69
|
-
% datastore_type
|
|
70
|
-
)
|
|
71
|
-
conda_package_root = get_conda_package_root(datastore_type)
|
|
72
|
-
storage = storage_impl[0](conda_package_root)
|
|
73
|
-
with storage.load_bytes(env["cache_urls"]) as load_result:
|
|
74
|
-
for key, tmpfile, _ in load_result:
|
|
75
|
-
shutil.move(
|
|
76
|
-
tmpfile, os.path.join(pkgs_folder, os.path.basename(key))
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
return env["order"]
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
def install_conda_environment(env_id, packages):
|
|
83
|
-
args = [
|
|
84
|
-
"if ! type conda >/dev/null 2>&1; \
|
|
85
|
-
then wget --no-check-certificate https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -O Miniforge3.sh >/dev/null 2>&1; \
|
|
86
|
-
bash ./Miniforge3.sh -b >/dev/null 2>&1; export PATH=$PATH:$HOME/miniforge3/bin; fi",
|
|
87
|
-
"cd {0}".format(os.path.join(os.getcwd(), "pkgs")),
|
|
88
|
-
"conda create --yes --no-default-packages -p {0} --no-deps {1} >/dev/null 2>&1".format(
|
|
89
|
-
os.path.join(os.getcwd(), env_id), " ".join(packages)
|
|
90
|
-
),
|
|
91
|
-
"cd {0}".format(os.getcwd()),
|
|
92
|
-
]
|
|
93
|
-
if ENV_ESCAPE_PY is not None:
|
|
94
|
-
cwd = os.getcwd()
|
|
95
|
-
generate_trampolines(cwd)
|
|
96
|
-
# print("Environment escape will use %s as the interpreter" % ENV_ESCAPE_PY)
|
|
97
|
-
else:
|
|
98
|
-
pass
|
|
99
|
-
# print("Could not find a environment escape interpreter")
|
|
100
|
-
os.system(" && ".join(args))
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if __name__ == "__main__":
|
|
104
|
-
bootstrap_environment(sys.argv[1], sys.argv[2], sys.argv[3])
|