metaflow 2.18.6__py2.py3-none-any.whl → 2.18.8__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/cards.py +1 -0
- metaflow/plugins/cards/card_modules/bundle.css +1 -1
- metaflow/plugins/cards/card_modules/components.py +228 -0
- metaflow/plugins/cards/card_modules/main.js +28 -28
- metaflow/plugins/datatools/s3/s3.py +3 -0
- metaflow/plugins/datatools/s3/s3op.py +13 -0
- metaflow/plugins/pypi/pip.py +29 -3
- metaflow/version.py +1 -1
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/METADATA +3 -2
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/RECORD +17 -17
- {metaflow-2.18.6.data → metaflow-2.18.8.data}/data/share/metaflow/devtools/Makefile +0 -0
- {metaflow-2.18.6.data → metaflow-2.18.8.data}/data/share/metaflow/devtools/Tiltfile +0 -0
- {metaflow-2.18.6.data → metaflow-2.18.8.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/WHEEL +0 -0
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/entry_points.txt +0 -0
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/licenses/LICENSE +0 -0
- {metaflow-2.18.6.dist-info → metaflow-2.18.8.dist-info}/top_level.txt +0 -0
@@ -1385,6 +1385,9 @@ class S3(object):
|
|
1385
1385
|
except OSError as e:
|
1386
1386
|
if e.errno == errno.ENOSPC:
|
1387
1387
|
raise MetaflowS3InsufficientDiskSpace(str(e))
|
1388
|
+
except MetaflowException as ex:
|
1389
|
+
# Re-raise Metaflow exceptions (including TimeoutException)
|
1390
|
+
raise
|
1388
1391
|
except Exception as ex:
|
1389
1392
|
error = str(ex)
|
1390
1393
|
if tmp:
|
@@ -50,6 +50,7 @@ import metaflow.tracing as tracing
|
|
50
50
|
from metaflow.metaflow_config import (
|
51
51
|
S3_WORKER_COUNT,
|
52
52
|
)
|
53
|
+
from metaflow.exception import MetaflowException
|
53
54
|
|
54
55
|
DOWNLOAD_FILE_THRESHOLD = 2 * TransferConfig().multipart_threshold
|
55
56
|
DOWNLOAD_MAX_CHUNK = 2 * 1024 * 1024 * 1024 - 1
|
@@ -287,6 +288,11 @@ def worker(result_file_name, queue, mode, s3config):
|
|
287
288
|
result_file.write("%d %d\n" % (idx, -ERROR_TRANSIENT))
|
288
289
|
result_file.flush()
|
289
290
|
continue
|
291
|
+
except MetaflowException:
|
292
|
+
# Re-raise Metaflow exceptions (including TimeoutException)
|
293
|
+
tmp.close()
|
294
|
+
os.unlink(tmp.name)
|
295
|
+
raise
|
290
296
|
except (SSLError, Exception) as e:
|
291
297
|
tmp.close()
|
292
298
|
os.unlink(tmp.name)
|
@@ -357,6 +363,9 @@ def worker(result_file_name, queue, mode, s3config):
|
|
357
363
|
err = convert_to_client_error(e)
|
358
364
|
handle_client_error(err, idx, result_file)
|
359
365
|
continue
|
366
|
+
except MetaflowException:
|
367
|
+
# Re-raise Metaflow exceptions (including TimeoutException)
|
368
|
+
raise
|
360
369
|
except (SSLError, Exception) as e:
|
361
370
|
# assume anything else is transient
|
362
371
|
result_file.write("%d %d\n" % (idx, -ERROR_TRANSIENT))
|
@@ -385,6 +394,10 @@ def convert_to_client_error(e):
|
|
385
394
|
|
386
395
|
|
387
396
|
def handle_client_error(err, idx, result_file):
|
397
|
+
# Handle all MetaflowExceptions as fatal
|
398
|
+
if isinstance(err, MetaflowException):
|
399
|
+
raise err
|
400
|
+
|
388
401
|
error_code = normalize_client_error(err)
|
389
402
|
if error_code == 404:
|
390
403
|
result_file.write("%d %d\n" % (idx, -ERROR_URL_NOT_FOUND))
|
metaflow/plugins/pypi/pip.py
CHANGED
@@ -60,6 +60,15 @@ class Pip(object):
|
|
60
60
|
else:
|
61
61
|
self.logger = lambda *args, **kwargs: None # No-op logger if not provided
|
62
62
|
|
63
|
+
def _get_resolved_python_version(self, prefix):
|
64
|
+
try:
|
65
|
+
result = self.micromamba._call(["list", "--prefix", prefix, "--json"])
|
66
|
+
for package in result:
|
67
|
+
if package.get("name") == "python":
|
68
|
+
return package["version"]
|
69
|
+
except Exception:
|
70
|
+
return None
|
71
|
+
|
63
72
|
def solve(self, id_, packages, python, platform):
|
64
73
|
prefix = self.micromamba.path_to_environment(id_)
|
65
74
|
if prefix is None:
|
@@ -67,13 +76,19 @@ class Pip(object):
|
|
67
76
|
msg += "for id {id}".format(id=id_)
|
68
77
|
raise PipException(msg)
|
69
78
|
|
79
|
+
resolved_python = self._get_resolved_python_version(prefix)
|
80
|
+
if not resolved_python:
|
81
|
+
raise PipException(
|
82
|
+
"Could not determine Python version from conda environment"
|
83
|
+
)
|
84
|
+
|
70
85
|
debug.conda_exec("Solving packages for PyPI environment %s" % id_)
|
71
86
|
with tempfile.TemporaryDirectory() as tmp_dir:
|
72
87
|
report = "{tmp_dir}/report.json".format(tmp_dir=tmp_dir)
|
73
88
|
implementations, platforms, abis = zip(
|
74
89
|
*[
|
75
90
|
(tag.interpreter, tag.platform, tag.abi)
|
76
|
-
for tag in pip_tags(
|
91
|
+
for tag in pip_tags(resolved_python, platform)
|
77
92
|
]
|
78
93
|
)
|
79
94
|
custom_index_url, extra_index_urls = self.indices(prefix)
|
@@ -142,6 +157,13 @@ class Pip(object):
|
|
142
157
|
|
143
158
|
def download(self, id_, packages, python, platform):
|
144
159
|
prefix = self.micromamba.path_to_environment(id_)
|
160
|
+
|
161
|
+
resolved_python = self._get_resolved_python_version(prefix)
|
162
|
+
if not resolved_python:
|
163
|
+
raise PipException(
|
164
|
+
"Could not determine Python version from conda environment"
|
165
|
+
)
|
166
|
+
|
145
167
|
metadata_file = METADATA_FILE.format(prefix=prefix)
|
146
168
|
# download packages only if they haven't ever been downloaded before
|
147
169
|
if os.path.isfile(metadata_file):
|
@@ -192,7 +214,11 @@ class Pip(object):
|
|
192
214
|
if os.path.isfile(os.path.join(path, f)) and f.endswith(".whl")
|
193
215
|
]
|
194
216
|
if (
|
195
|
-
len(
|
217
|
+
len(
|
218
|
+
set(pip_tags(resolved_python, platform)).intersection(
|
219
|
+
wheel_tags(wheel)
|
220
|
+
)
|
221
|
+
)
|
196
222
|
== 0
|
197
223
|
):
|
198
224
|
raise PipException(
|
@@ -211,7 +237,7 @@ class Pip(object):
|
|
211
237
|
implementations, platforms, abis = zip(
|
212
238
|
*[
|
213
239
|
(tag.interpreter, tag.platform, tag.abi)
|
214
|
-
for tag in pip_tags(
|
240
|
+
for tag in pip_tags(resolved_python, platform)
|
215
241
|
]
|
216
242
|
)
|
217
243
|
|
metaflow/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
metaflow_version = "2.18.
|
1
|
+
metaflow_version = "2.18.8"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: metaflow
|
3
|
-
Version: 2.18.
|
3
|
+
Version: 2.18.8
|
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.18.
|
29
|
+
Requires-Dist: metaflow-stubs==2.18.8; extra == "stubs"
|
30
30
|
Dynamic: author
|
31
31
|
Dynamic: author-email
|
32
32
|
Dynamic: classifier
|
@@ -102,3 +102,4 @@ We'd love to hear from you. Join our community [Slack workspace](http://slack.ou
|
|
102
102
|
## Contributing
|
103
103
|
We welcome contributions to Metaflow. Please see our [contribution guide](https://docs.metaflow.org/introduction/contributing-to-metaflow) for more details.
|
104
104
|
|
105
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
metaflow/R.py,sha256=CqVfIatvmjciuICNnoyyNGrwE7Va9iXfLdFbQa52hwA,3958
|
2
2
|
metaflow/__init__.py,sha256=8V_NsmWtat2FnIUp5GenscY0vz4egOkIlpNjqwtTJnY,6051
|
3
|
-
metaflow/cards.py,sha256=
|
3
|
+
metaflow/cards.py,sha256=nAOf4FFnd4YUu39hIiH2CyyKKyku8n3ZfUNnQvNEFds,456
|
4
4
|
metaflow/cli.py,sha256=uF1ACHw3aWCe6ypFP1SplMZWVA8dgtMYc2z6I4v5neA,22802
|
5
5
|
metaflow/cli_args.py,sha256=hDsdWdRmfXYifVGq6b6FDfgoWxtIG2nr_lU6EBV0Pnk,3584
|
6
6
|
metaflow/clone_util.py,sha256=LSuVbFpPUh92UW32DBcnZbL0FFw-4w3CLa0tpEbCkzk,2066
|
@@ -36,7 +36,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
|
|
36
36
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
37
37
|
metaflow/util.py,sha256=g2SOU_CRzJLgDM_UGF9QDMANMAIHAsDRXE6S76_YzsY,14594
|
38
38
|
metaflow/vendor.py,sha256=A82CGHfStZGDP5pQ5XzRjFkbN1ZC-vFmghXIrzMDDNg,5868
|
39
|
-
metaflow/version.py,sha256=
|
39
|
+
metaflow/version.py,sha256=6DVZEAMJCoj9H_RVtqJZYzyq1k7d1mhq8BbqjcJiNoY,28
|
40
40
|
metaflow/_vendor/__init__.py,sha256=y_CiwUD3l4eAKvTVDZeqgVujMy31cAM1qjAB-HfI-9s,353
|
41
41
|
metaflow/_vendor/typing_extensions.py,sha256=q9zxWa6p6CzF1zZvSkygSlklduHf_b3K7MCxGz7MJRc,134519
|
42
42
|
metaflow/_vendor/zipp.py,sha256=ajztOH-9I7KA_4wqDYygtHa6xUBVZgFpmZ8FE74HHHI,8425
|
@@ -284,12 +284,12 @@ metaflow/plugins/cards/metadata.py,sha256=tACaw7_XNAICZ4A25celIbgxUF0CxHh7BBpFzK
|
|
284
284
|
metaflow/plugins/cards/card_modules/__init__.py,sha256=WI2IAsFiKGyqPrHtO9S9-MbyVtUTgWJNL4xjJaBErRo,3437
|
285
285
|
metaflow/plugins/cards/card_modules/base.html,sha256=Y208ZKIZqEWWUcoBFTLTdWKAG0C8xH5lmyCRSjaN2FY,21004
|
286
286
|
metaflow/plugins/cards/card_modules/basic.py,sha256=b6aBg7800CjjkQb0J_TOd3JujVR10X2QoXYdwiXFbkE,25831
|
287
|
-
metaflow/plugins/cards/card_modules/bundle.css,sha256=
|
287
|
+
metaflow/plugins/cards/card_modules/bundle.css,sha256=VHe87L_Neezo5FGaCEKeLsR_rC6N8O7Fk_OU85am3is,14566
|
288
288
|
metaflow/plugins/cards/card_modules/card.py,sha256=6sbqP5mwf7QWvQvX2N_bC78H9ixuI5sQ8612Q5islys,4627
|
289
|
-
metaflow/plugins/cards/card_modules/components.py,sha256=
|
289
|
+
metaflow/plugins/cards/card_modules/components.py,sha256=tlIwQEZIL0MzwtmcqociG1MgVq8QX-gLGk8Kxvyygg0,34946
|
290
290
|
metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=Vcjqn5rfC0kVMdhqDwsYEjknXTbkG_ppraQrQGaQY_E,16245
|
291
291
|
metaflow/plugins/cards/card_modules/main.css,sha256=avu7BTB9qj0M8LvqNLUhikUFQhmAJhQQ7REcUgh9zMw,11725
|
292
|
-
metaflow/plugins/cards/card_modules/main.js,sha256=
|
292
|
+
metaflow/plugins/cards/card_modules/main.js,sha256=m_8lgsLiAsZn89sNX9wozpTB0cwygdmph78VpMwCNoA,1047601
|
293
293
|
metaflow/plugins/cards/card_modules/renderer_tools.py,sha256=uiTdKHWFInWgtfWArOUSQLnTwqVd4hAw49jfOfg8rGA,1642
|
294
294
|
metaflow/plugins/cards/card_modules/test_cards.py,sha256=t2PZ3QnjCN_KUlDKxAt2FfK1BX2dp8rqK6TjtkCNyew,5876
|
295
295
|
metaflow/plugins/cards/card_modules/chevron/__init__.py,sha256=SicpH_1eT76HUTA8aMuiGLRNKTqgYD1Qfutt2NdTL0E,156
|
@@ -306,8 +306,8 @@ metaflow/plugins/datastores/s3_storage.py,sha256=CZdNqaKtxDXQbEg2YHyphph3hWcLIE5
|
|
306
306
|
metaflow/plugins/datatools/__init__.py,sha256=ge4L16OBQLy2J_MMvoHg3lMfdm-MluQgRWoyZ5GCRnk,1267
|
307
307
|
metaflow/plugins/datatools/local.py,sha256=FJvMOBcjdyhSPHmdLocBSiIT0rmKkKBmsaclxH75x08,4233
|
308
308
|
metaflow/plugins/datatools/s3/__init__.py,sha256=14tr9fPjN3ULW5IOfKHeG7Uhjmgm7LMtQHfz1SFv-h8,248
|
309
|
-
metaflow/plugins/datatools/s3/s3.py,sha256=
|
310
|
-
metaflow/plugins/datatools/s3/s3op.py,sha256=
|
309
|
+
metaflow/plugins/datatools/s3/s3.py,sha256=b07QwYvfKvR1k0eZ_b5Hk4XQnQs3ORk6b0nvCwfZL8w,67324
|
310
|
+
metaflow/plugins/datatools/s3/s3op.py,sha256=3GOtIV08gmAo7XE6NNnsSUxTTRIsvgPJn7CC0U5E7XY,48129
|
311
311
|
metaflow/plugins/datatools/s3/s3tail.py,sha256=boQjQGQMI-bvTqcMP2y7uSlSYLcvWOy7J3ZUaF78NAA,2597
|
312
312
|
metaflow/plugins/datatools/s3/s3util.py,sha256=FgRgaVmEq7-i2dV7q8XK5w5PfFt-xJjZa8WrK8IJfdI,3769
|
313
313
|
metaflow/plugins/env_escape/__init__.py,sha256=tGNUZnmPvk52eNs__VK443b3CZ7ogEFTT-s9_n_HF8Q,8837
|
@@ -361,7 +361,7 @@ metaflow/plugins/pypi/conda_decorator.py,sha256=fXG9EvImP4Eqle_Trhb3tQhs40xTc4cx
|
|
361
361
|
metaflow/plugins/pypi/conda_environment.py,sha256=j6QaIWmP50K2veN6Sywa04S2hfByR1YMqy7OyZpwvYs,24925
|
362
362
|
metaflow/plugins/pypi/micromamba.py,sha256=UltfY8NmLphfZ-AbpaMFIdxIeOXLdTYDrMrabvPrYVU,17352
|
363
363
|
metaflow/plugins/pypi/parsers.py,sha256=gpOOG2Ph95wI73MWCAi7XjpK0gYhv5k5YIGBs73QPuE,8556
|
364
|
-
metaflow/plugins/pypi/pip.py,sha256=
|
364
|
+
metaflow/plugins/pypi/pip.py,sha256=N5C3tjuWG2pr4VGZR8YgnRc0HwfRL7LZmOnxxA9ZmEc,15239
|
365
365
|
metaflow/plugins/pypi/pypi_decorator.py,sha256=sBxmDH3WIWVfJDsSauiMy58fevOJuJeLSuS6MnIpw44,7312
|
366
366
|
metaflow/plugins/pypi/pypi_environment.py,sha256=FYMg8kF3lXqcLfRYWD83a9zpVjcoo_TARqMGZ763rRk,230
|
367
367
|
metaflow/plugins/pypi/utils.py,sha256=W8OhDrhz7YIE-2MSSN5Rj7AmESwsN5YDmdnro152J4w,3551
|
@@ -428,12 +428,12 @@ metaflow/user_decorators/mutable_flow.py,sha256=EywKTN3cnXPQF_s62wQaC4a4aH14j8oe
|
|
428
428
|
metaflow/user_decorators/mutable_step.py,sha256=-BY0UDXf_RCAEnC5JlLzEXGdiw1KD9oSrSxS_SWaB9Y,16791
|
429
429
|
metaflow/user_decorators/user_flow_decorator.py,sha256=2yDwZq9QGv9W-7kEuKwa8o4ZkTvuHJ5ESz7VVrGViAI,9890
|
430
430
|
metaflow/user_decorators/user_step_decorator.py,sha256=4558NR8RJtN22OyTwCXO80bAMhMTaRGMoX12b1GMcPc,27232
|
431
|
-
metaflow-2.18.
|
432
|
-
metaflow-2.18.
|
433
|
-
metaflow-2.18.
|
434
|
-
metaflow-2.18.
|
435
|
-
metaflow-2.18.
|
436
|
-
metaflow-2.18.
|
437
|
-
metaflow-2.18.
|
438
|
-
metaflow-2.18.
|
439
|
-
metaflow-2.18.
|
431
|
+
metaflow-2.18.8.data/data/share/metaflow/devtools/Makefile,sha256=TT4TCq8ALSfqYyGqDPocN5oPcZe2FqoCZxmGO1LmyCc,13760
|
432
|
+
metaflow-2.18.8.data/data/share/metaflow/devtools/Tiltfile,sha256=Ty5p6AD3MwJAcAnOGv4yMz8fExAsnNQ11r8whK6uzzw,21381
|
433
|
+
metaflow-2.18.8.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
|
434
|
+
metaflow-2.18.8.dist-info/licenses/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
435
|
+
metaflow-2.18.8.dist-info/METADATA,sha256=JsBIPPxtus_253Xt7LBxnYOxHtmle6Y4jq5RsDs6lU8,6741
|
436
|
+
metaflow-2.18.8.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
437
|
+
metaflow-2.18.8.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
|
438
|
+
metaflow-2.18.8.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
439
|
+
metaflow-2.18.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|