metaflow 2.15.3__py2.py3-none-any.whl → 2.15.5__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/plugins/argo/argo_client.py +9 -2
- metaflow/plugins/argo/argo_workflows.py +79 -28
- metaflow/plugins/argo/argo_workflows_cli.py +16 -25
- metaflow/plugins/argo/argo_workflows_deployer_objects.py +5 -2
- metaflow/plugins/cards/card_modules/main.js +52 -50
- metaflow/plugins/metadata_providers/service.py +16 -7
- metaflow/runner/click_api.py +5 -1
- metaflow/runner/deployer.py +3 -2
- metaflow/version.py +1 -1
- {metaflow-2.15.3.data → metaflow-2.15.5.data}/data/share/metaflow/devtools/Makefile +14 -4
- {metaflow-2.15.3.data → metaflow-2.15.5.data}/data/share/metaflow/devtools/Tiltfile +4 -4
- metaflow-2.15.5.dist-info/METADATA +103 -0
- {metaflow-2.15.3.dist-info → metaflow-2.15.5.dist-info}/RECORD +18 -18
- {metaflow-2.15.3.dist-info → metaflow-2.15.5.dist-info}/WHEEL +1 -1
- metaflow-2.15.3.dist-info/METADATA +0 -110
- {metaflow-2.15.3.data → metaflow-2.15.5.data}/data/share/metaflow/devtools/pick_services.sh +0 -0
- {metaflow-2.15.3.dist-info → metaflow-2.15.5.dist-info}/LICENSE +0 -0
- {metaflow-2.15.3.dist-info → metaflow-2.15.5.dist-info}/entry_points.txt +0 -0
- {metaflow-2.15.3.dist-info → metaflow-2.15.5.dist-info}/top_level.txt +0 -0
@@ -350,23 +350,32 @@ class ServiceMetadataProvider(MetadataProvider):
|
|
350
350
|
List[str]
|
351
351
|
List of task pathspecs that satisfy the query
|
352
352
|
"""
|
353
|
-
query_params = {
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
353
|
+
query_params = {}
|
354
|
+
|
355
|
+
if pattern == ".*":
|
356
|
+
# we do not need to filter tasks at all if pattern allows 'any'
|
357
|
+
query_params = {}
|
358
|
+
else:
|
359
|
+
if field_name:
|
360
|
+
query_params["metadata_field_name"] = field_name
|
361
|
+
if pattern:
|
362
|
+
query_params["pattern"] = pattern
|
363
|
+
|
358
364
|
url = ServiceMetadataProvider._obj_path(flow_name, run_id, step_name)
|
359
365
|
url = f"{url}/filtered_tasks?{urlencode(query_params)}"
|
366
|
+
|
360
367
|
try:
|
361
|
-
resp = cls._request(None, url, "GET")
|
368
|
+
resp, _ = cls._request(None, url, "GET")
|
362
369
|
except Exception as e:
|
363
370
|
if e.http_code == 404:
|
364
371
|
# filter_tasks_by_metadata endpoint does not exist in the version of metadata service
|
365
372
|
# deployed currently. Raise a more informative error message.
|
366
373
|
raise MetaflowInternalError(
|
367
374
|
"The version of metadata service deployed currently does not support filtering tasks by metadata. "
|
368
|
-
"Upgrade Metadata service to version 2.
|
375
|
+
"Upgrade Metadata service to version 2.5.0 or greater to use this feature."
|
369
376
|
) from e
|
377
|
+
# Other unknown exception
|
378
|
+
raise e
|
370
379
|
return resp
|
371
380
|
|
372
381
|
@staticmethod
|
metaflow/runner/click_api.py
CHANGED
@@ -219,7 +219,11 @@ def get_inspect_param_obj(p: Union[click.Argument, click.Option], kind: str):
|
|
219
219
|
default=inspect.Parameter.empty if is_vararg else p.default,
|
220
220
|
annotation=annotation,
|
221
221
|
),
|
222
|
-
|
222
|
+
(
|
223
|
+
Optional[Union[TTuple[annotation], List[annotation]]]
|
224
|
+
if is_vararg
|
225
|
+
else annotation
|
226
|
+
),
|
223
227
|
)
|
224
228
|
|
225
229
|
|
metaflow/runner/deployer.py
CHANGED
@@ -106,7 +106,7 @@ class TriggeredRun(object):
|
|
106
106
|
self.pathspec = content_json.get("pathspec")
|
107
107
|
self.name = content_json.get("name")
|
108
108
|
|
109
|
-
def wait_for_run(self, timeout: Optional[int] = None):
|
109
|
+
def wait_for_run(self, check_interval: int = 5, timeout: Optional[int] = None):
|
110
110
|
"""
|
111
111
|
Wait for the `run` property to become available.
|
112
112
|
|
@@ -115,6 +115,8 @@ class TriggeredRun(object):
|
|
115
115
|
|
116
116
|
Parameters
|
117
117
|
----------
|
118
|
+
check_interval: int, default: 5
|
119
|
+
Frequency of checking for the `run` to become available, in seconds.
|
118
120
|
timeout : int, optional, default None
|
119
121
|
Maximum time to wait for the `run` to become available, in seconds. If
|
120
122
|
None, wait indefinitely.
|
@@ -125,7 +127,6 @@ class TriggeredRun(object):
|
|
125
127
|
If the `run` is not available within the specified timeout.
|
126
128
|
"""
|
127
129
|
start_time = time.time()
|
128
|
-
check_interval = 5
|
129
130
|
while True:
|
130
131
|
if self.run is not None:
|
131
132
|
return self.run
|
metaflow/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
metaflow_version = "2.15.
|
1
|
+
metaflow_version = "2.15.5"
|
@@ -22,6 +22,7 @@ DEVTOOLS_DIR := $(MKFILE_DIR).devtools
|
|
22
22
|
PICK_SERVICES := $(MKFILE_DIR)pick_services.sh
|
23
23
|
MINIKUBE_DIR := $(DEVTOOLS_DIR)/minikube
|
24
24
|
MINIKUBE := $(MINIKUBE_DIR)/minikube
|
25
|
+
HELM_DIR := $(DEVTOOLS_DIR)/helm
|
25
26
|
TILT_DIR := $(DEVTOOLS_DIR)/tilt
|
26
27
|
TILT := $(TILT_DIR)/tilt
|
27
28
|
TILTFILE := $(MKFILE_DIR)/Tiltfile
|
@@ -51,9 +52,18 @@ endif
|
|
51
52
|
|
52
53
|
install-helm:
|
53
54
|
@if ! command -v helm >/dev/null 2>&1; then \
|
54
|
-
echo "📥 Installing Helm $(HELM_VERSION)
|
55
|
-
|
55
|
+
echo "📥 Installing Helm $(HELM_VERSION)..."; \
|
56
|
+
mkdir -p "$(HELM_DIR)"; \
|
57
|
+
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 \
|
58
|
+
| HELM_INSTALL_VERSION="$(HELM_VERSION)" \
|
59
|
+
USE_SUDO="false" \
|
60
|
+
PATH="$(HELM_DIR):$$PATH" \
|
61
|
+
HELM_INSTALL_DIR="$(HELM_DIR)" \
|
62
|
+
bash; \
|
63
|
+
chmod +x "$(HELM_DIR)/helm"; \
|
56
64
|
echo "✅ Helm installation complete"; \
|
65
|
+
else \
|
66
|
+
echo "✅ Helm is already installed at $$(command -v helm)"; \
|
57
67
|
fi
|
58
68
|
|
59
69
|
check-docker:
|
@@ -99,7 +109,7 @@ install-gum:
|
|
99
109
|
@if ! command -v gum >/dev/null 2>&1; then \
|
100
110
|
echo "📥 Installing gum..."; \
|
101
111
|
if [ "$(shell uname)" = "Darwin" ]; then \
|
102
|
-
HOMEBREW_NO_AUTO_UPDATE=1 brew install gum; \
|
112
|
+
HOMEBREW_NO_AUTO_UPDATE=1 brew install gum|| { echo "❌ Failed to install gum via Homebrew"; exit 1; }; \
|
103
113
|
elif command -v apt-get >/dev/null 2>&1; then \
|
104
114
|
curl -fsSL -o /tmp/gum.deb \
|
105
115
|
"https://github.com/charmbracelet/gum/releases/download/$(GUM_VERSION)/gum_$(GUM_VERSION:v%=%)_$(arch).deb"; \
|
@@ -182,7 +192,7 @@ up: install-brew check-docker install-curl install-gum setup-minikube install-he
|
|
182
192
|
@echo 'PATH="$(MINIKUBE_DIR):$(TILT_DIR):$$PATH" $(MINIKUBE) tunnel &' >> $(DEVTOOLS_DIR)/start.sh
|
183
193
|
@echo 'echo -e "🚀 Starting Tilt with selected services..."' >> $(DEVTOOLS_DIR)/start.sh
|
184
194
|
@echo 'echo -e "\033[1;38;5;46m\n🔥 \033[1;38;5;196mNext Steps:\033[0;38;5;46m Use \033[3mmetaflow-dev shell\033[23m to switch to the development\n environment'\''s shell and start executing your Metaflow flows.\n\033[0m"' >> "$(DEVTOOLS_DIR)/start.sh"
|
185
|
-
@echo 'PATH="$(MINIKUBE_DIR):$(TILT_DIR):$$PATH" SERVICES="$$SERVICES" tilt up -f $(TILTFILE)' >> $(DEVTOOLS_DIR)/start.sh
|
195
|
+
@echo 'PATH="$(HELM_DIR):$(MINIKUBE_DIR):$(TILT_DIR):$$PATH" SERVICES="$$SERVICES" tilt up -f $(TILTFILE)' >> $(DEVTOOLS_DIR)/start.sh
|
186
196
|
@echo 'wait' >> $(DEVTOOLS_DIR)/start.sh
|
187
197
|
@chmod +x $(DEVTOOLS_DIR)/start.sh
|
188
198
|
@$(DEVTOOLS_DIR)/start.sh
|
@@ -529,8 +529,8 @@ if "metadata-service" in enabled_components:
|
|
529
529
|
'metadatadb.password=metaflow123',
|
530
530
|
'metadatadb.database=metaflow',
|
531
531
|
'metadatadb.host=postgresql',
|
532
|
-
'image.repository=public.ecr.aws/
|
533
|
-
'image.tag=2.4.13-
|
532
|
+
'image.repository=public.ecr.aws/outerbounds/metaflow_metadata_service',
|
533
|
+
'image.tag=2.4.13-2-g70af4ed',
|
534
534
|
'resources.requests.cpu=25m',
|
535
535
|
'resources.requests.memory=64Mi',
|
536
536
|
'resources.limits.cpu=50m',
|
@@ -567,8 +567,8 @@ if "ui" in enabled_components:
|
|
567
567
|
'uiBackend.metadatadb.host=postgresql',
|
568
568
|
'uiBackend.metaflowDatastoreSysRootS3=s3://metaflow-test',
|
569
569
|
'uiBackend.metaflowS3EndpointURL=http://minio.default.svc.cluster.local:9000',
|
570
|
-
'uiBackend.image.name=public.ecr.aws/
|
571
|
-
'uiBackend.image.tag=2.4.13-
|
570
|
+
'uiBackend.image.name=public.ecr.aws/outerbounds/metaflow_metadata_service',
|
571
|
+
'uiBackend.image.tag=2.4.13-2-g70af4ed',
|
572
572
|
'uiBackend.env[0].name=AWS_ACCESS_KEY_ID',
|
573
573
|
'uiBackend.env[0].value=rootuser',
|
574
574
|
'uiBackend.env[1].name=AWS_SECRET_ACCESS_KEY',
|
@@ -0,0 +1,103 @@
|
|
1
|
+
Metadata-Version: 2.2
|
2
|
+
Name: metaflow
|
3
|
+
Version: 2.15.5
|
4
|
+
Summary: Metaflow: More AI and ML, Less Engineering
|
5
|
+
Author: Metaflow Developers
|
6
|
+
Author-email: help@metaflow.org
|
7
|
+
License: Apache Software License
|
8
|
+
Project-URL: Source, https://github.com/Netflix/metaflow
|
9
|
+
Project-URL: Issues, https://github.com/Netflix/metaflow/issues
|
10
|
+
Project-URL: Documentation, https://docs.metaflow.org
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
12
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
13
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
14
|
+
Classifier: Operating System :: POSIX :: Linux
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
16
|
+
Classifier: Programming Language :: Python :: 3.6
|
17
|
+
Classifier: Programming Language :: Python :: 3.7
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
24
|
+
Description-Content-Type: text/markdown
|
25
|
+
License-File: LICENSE
|
26
|
+
Requires-Dist: requests
|
27
|
+
Requires-Dist: boto3
|
28
|
+
Provides-Extra: stubs
|
29
|
+
Requires-Dist: metaflow-stubs==2.15.5; extra == "stubs"
|
30
|
+
Dynamic: author
|
31
|
+
Dynamic: author-email
|
32
|
+
Dynamic: classifier
|
33
|
+
Dynamic: description
|
34
|
+
Dynamic: description-content-type
|
35
|
+
Dynamic: license
|
36
|
+
Dynamic: project-url
|
37
|
+
Dynamic: provides-extra
|
38
|
+
Dynamic: requires-dist
|
39
|
+
Dynamic: summary
|
40
|
+
|
41
|
+

|
42
|
+
|
43
|
+
# Metaflow
|
44
|
+
|
45
|
+
[Metaflow](https://metaflow.org) is a human-centric framework designed to help scientists and engineers **build and manage real-life AI and ML systems**. Serving teams of all sizes and scale, Metaflow streamlines the entire development lifecycle—from rapid prototyping in notebooks to reliable, maintainable production deployments—enabling teams to iterate quickly and deliver robust systems efficiently.
|
46
|
+
|
47
|
+
Originally developed at [Netflix](https://netflixtechblog.com/open-sourcing-metaflow-a-human-centric-framework-for-data-science-fa72e04a5d9) and now supported by [Outerbounds](https://outerbounds.com), Metaflow is designed to boost the productivity for research and engineering teams working on [a wide variety of projects](https://netflixtechblog.com/supporting-diverse-ml-systems-at-netflix-2d2e6b6d205d), from classical statistics to state-of-the-art deep learning and foundation models. By unifying code, data, and compute at every stage, Metaflow ensures seamless, end-to-end management of real-world AI and ML systems.
|
48
|
+
|
49
|
+
Today, Metaflow powers thousands of AI and ML experiences across a diverse array of companies, large and small, including Amazon, Doordash, Dyson, Goldman Sachs, Ramp, and [many others](ADOPTERS.md). At Netflix alone, Metaflow supports over 3000 AI and ML projects, executes hundreds of millions of data-intensive high-performance compute jobs processing petabytes of data and manages tens of petabytes of models and artifacts for hundreds of users across its AI, ML, data science, and engineering teams.
|
50
|
+
|
51
|
+
## From prototype to production (and back)
|
52
|
+
|
53
|
+
Metaflow provides a simple and friendly pythonic [API](https://docs.metaflow.org) that covers foundational needs of AI and ML systems:
|
54
|
+
<img src="./docs/prototype-to-prod.png" width="800px">
|
55
|
+
|
56
|
+
1. [Rapid local prototyping](https://docs.metaflow.org/metaflow/basics), [support for notebooks](https://docs.metaflow.org/metaflow/managing-flows/notebook-runs), and built-in support for [experiment tracking, versioning](https://docs.metaflow.org/metaflow/client) and [visualization](https://docs.metaflow.org/metaflow/visualizing-results).
|
57
|
+
2. [Effortlessly scale horizontally and vertically in your cloud](https://docs.metaflow.org/scaling/remote-tasks/introduction), utilizing both CPUs and GPUs, with [fast data access](https://docs.metaflow.org/scaling/data) for running [massive embarrassingly parallel](https://docs.metaflow.org/metaflow/basics#foreach) as well as [gang-scheduled](https://docs.metaflow.org/scaling/remote-tasks/distributed-computing) compute workloads [reliably](https://docs.metaflow.org/scaling/failures) and [efficiently](https://docs.metaflow.org/scaling/checkpoint/introduction).
|
58
|
+
3. [Easily manage dependencies](https://docs.metaflow.org/scaling/dependencies) and [deploy with one-click](https://docs.metaflow.org/production/introduction) to highly available production orchestrators with built in support for [reactive orchestration](https://docs.metaflow.org/production/event-triggering).
|
59
|
+
|
60
|
+
For full documentation, check out our [API Reference](https://docs.metaflow.org/api) or see our [Release Notes](https://github.com/Netflix/metaflow/releases) for the latest features and improvements.
|
61
|
+
|
62
|
+
|
63
|
+
## Getting started
|
64
|
+
|
65
|
+
Getting up and running is easy. If you don't know where to start, [Metaflow sandbox](https://outerbounds.com/sandbox) will have you running and exploring in seconds.
|
66
|
+
|
67
|
+
### Installing Metaflow
|
68
|
+
|
69
|
+
To install Metaflow in your Python environment from [PyPI](https://pypi.org/project/metaflow/):
|
70
|
+
|
71
|
+
```sh
|
72
|
+
pip install metaflow
|
73
|
+
```
|
74
|
+
Alternatively, using [conda-forge](https://anaconda.org/conda-forge/metaflow):
|
75
|
+
|
76
|
+
```sh
|
77
|
+
conda install -c conda-forge metaflow
|
78
|
+
```
|
79
|
+
|
80
|
+
Once installed, a great way to get started is by following our [tutorial](https://docs.metaflow.org/getting-started/tutorials). It walks you through creating and running your first Metaflow flow step by step.
|
81
|
+
|
82
|
+
For more details on Metaflow’s features and best practices, check out:
|
83
|
+
- [How Metaflow works](https://docs.metaflow.org/metaflow/basics)
|
84
|
+
- [Additional resources](https://docs.metaflow.org/introduction/metaflow-resources)
|
85
|
+
|
86
|
+
If you need help, don’t hesitate to reach out on our [Slack community](http://slack.outerbounds.co/)!
|
87
|
+
|
88
|
+
|
89
|
+
### Deploying infrastructure for Metaflow in your cloud
|
90
|
+
<img src="./docs/multicloud.png" width="800px">
|
91
|
+
|
92
|
+
|
93
|
+
While you can get started with Metaflow easily on your laptop, the main benefits of Metaflow lie in its ability to [scale out to external compute clusters](https://docs.metaflow.org/scaling/remote-tasks/introduction)
|
94
|
+
and to [deploy to production-grade workflow orchestrators](https://docs.metaflow.org/production/introduction). To benefit from these features, follow this [guide](https://outerbounds.com/engineering/welcome/) to
|
95
|
+
configure Metaflow and the infrastructure behind it appropriately.
|
96
|
+
|
97
|
+
|
98
|
+
## Get in touch
|
99
|
+
We'd love to hear from you. Join our community [Slack workspace](http://slack.outerbounds.co/)!
|
100
|
+
|
101
|
+
## Contributing
|
102
|
+
We welcome contributions to Metaflow. Please see our [contribution guide](https://docs.metaflow.org/introduction/contributing-to-metaflow) for more details.
|
103
|
+
|
@@ -36,7 +36,7 @@ metaflow/tuple_util.py,sha256=_G5YIEhuugwJ_f6rrZoelMFak3DqAR2tt_5CapS1XTY,830
|
|
36
36
|
metaflow/unbounded_foreach.py,sha256=p184WMbrMJ3xKYHwewj27ZhRUsSj_kw1jlye5gA9xJk,387
|
37
37
|
metaflow/util.py,sha256=mJBkV5tShIyCsLDeM1zygQGeciQVMrVPm_qI8Oi33G0,14656
|
38
38
|
metaflow/vendor.py,sha256=FchtA9tH22JM-eEtJ2c9FpUdMn8sSb1VHuQS56EcdZk,5139
|
39
|
-
metaflow/version.py,sha256=
|
39
|
+
metaflow/version.py,sha256=rH0plnhiC-GqiWzT9Z7CsDSyccqEp2h5Cg-NtZ8bpms,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
|
@@ -181,13 +181,13 @@ metaflow/plugins/airflow/sensors/base_sensor.py,sha256=s-OQBfPWZ_T3wn96Ua59CCEj1
|
|
181
181
|
metaflow/plugins/airflow/sensors/external_task_sensor.py,sha256=zhYlrZnXT20KW8-fVk0fCNtTyNiKJB5PMVASacu30r0,6034
|
182
182
|
metaflow/plugins/airflow/sensors/s3_sensor.py,sha256=iDReG-7FKnumrtQg-HY6cCUAAqNA90nARrjjjEEk_x4,3275
|
183
183
|
metaflow/plugins/argo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
184
|
-
metaflow/plugins/argo/argo_client.py,sha256=
|
184
|
+
metaflow/plugins/argo/argo_client.py,sha256=A1kI9rjVjCadDsBscZ2Wk8xRBI6GNgWV6SU7TyrdfrI,16530
|
185
185
|
metaflow/plugins/argo/argo_events.py,sha256=_C1KWztVqgi3zuH57pInaE9OzABc2NnncC-zdwOMZ-w,5909
|
186
|
-
metaflow/plugins/argo/argo_workflows.py,sha256=
|
187
|
-
metaflow/plugins/argo/argo_workflows_cli.py,sha256=
|
186
|
+
metaflow/plugins/argo/argo_workflows.py,sha256=OUrRmn_IJbyk2qbkVViH1NCczRb2G7bO2ePQ3fBPFxg,183561
|
187
|
+
metaflow/plugins/argo/argo_workflows_cli.py,sha256=27eLtcp5N5plapP-uIJqR41B0zDfXOV39AGM0nchymo,37952
|
188
188
|
metaflow/plugins/argo/argo_workflows_decorator.py,sha256=ogCSBmwsC2C3eusydrgjuAJd4qK18f1sI4jJwA4Fd-o,7800
|
189
189
|
metaflow/plugins/argo/argo_workflows_deployer.py,sha256=6kHxEnYXJwzNCM9swI8-0AckxtPWqwhZLerYkX8fxUM,4444
|
190
|
-
metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=
|
190
|
+
metaflow/plugins/argo/argo_workflows_deployer_objects.py,sha256=oumYqwW7CsIsUuCIoP7Eo6VGB5R126CAqcCq2M57Cxw,14072
|
191
191
|
metaflow/plugins/argo/capture_error.py,sha256=Ys9dscGrTpW-ZCirLBU0gD9qBM0BjxyxGlUMKcwewQc,1852
|
192
192
|
metaflow/plugins/argo/generate_input_paths.py,sha256=loYsI6RFX9LlFsHb7Fe-mzlTTtRdySoOu7sYDy-uXK0,881
|
193
193
|
metaflow/plugins/argo/jobset_input_paths.py,sha256=-h0E_e0w6FMiBUod9Rf_XOSCtZv_C0exacw4q1SfIfg,501
|
@@ -238,7 +238,7 @@ metaflow/plugins/cards/card_modules/bundle.css,sha256=ms2wOKftlPM_i6bC_4BkrmqCOj
|
|
238
238
|
metaflow/plugins/cards/card_modules/card.py,sha256=6sbqP5mwf7QWvQvX2N_bC78H9ixuI5sQ8612Q5islys,4627
|
239
239
|
metaflow/plugins/cards/card_modules/components.py,sha256=Y-Yo7UgSOyTB3zs-wDfUqUKl0PI_BzeY1QGcy2fqE2M,26752
|
240
240
|
metaflow/plugins/cards/card_modules/convert_to_native_type.py,sha256=eGaQ8BabJ489a8AiyhXFy1pWJZl99gH0FQzwsNVxAGQ,15782
|
241
|
-
metaflow/plugins/cards/card_modules/main.js,sha256=
|
241
|
+
metaflow/plugins/cards/card_modules/main.js,sha256=72mKcMEjrne7TlLxc-LkxTJVoM4z2pLWGtU1NzHtlWM,1043628
|
242
242
|
metaflow/plugins/cards/card_modules/renderer_tools.py,sha256=uiTdKHWFInWgtfWArOUSQLnTwqVd4hAw49jfOfg8rGA,1642
|
243
243
|
metaflow/plugins/cards/card_modules/test_cards.py,sha256=74H0JdWrcoc5eITxCLSUwwa1kJZ3YMteynaKsCBihXE,5361
|
244
244
|
metaflow/plugins/cards/card_modules/chevron/__init__.py,sha256=SicpH_1eT76HUTA8aMuiGLRNKTqgYD1Qfutt2NdTL0E,156
|
@@ -300,7 +300,7 @@ metaflow/plugins/kubernetes/spot_metadata_cli.py,sha256=an0nWCxgflmqIPBCBrlb4m3D
|
|
300
300
|
metaflow/plugins/kubernetes/spot_monitor_sidecar.py,sha256=zrWU-smQwPnL6MBHmzTxWyEA00R6iKKQbhhy50xFwQ8,3832
|
301
301
|
metaflow/plugins/metadata_providers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
302
302
|
metaflow/plugins/metadata_providers/local.py,sha256=Z0CXaGZJbAkj4II3WspJi-uCCtShH64yaXZQ5i9Ym7g,24390
|
303
|
-
metaflow/plugins/metadata_providers/service.py,sha256=
|
303
|
+
metaflow/plugins/metadata_providers/service.py,sha256=9j0db_EOGFdb49YTgr9q4EWqVAm1YUaW-Baj5gyRqIo,22809
|
304
304
|
metaflow/plugins/pypi/__init__.py,sha256=0YFZpXvX7HCkyBFglatual7XGifdA1RwC3U4kcizyak,1037
|
305
305
|
metaflow/plugins/pypi/bootstrap.py,sha256=SNONquX6QnTbu7htmhaQeVeZ2ofaFaUCDScRIrTTERc,14718
|
306
306
|
metaflow/plugins/pypi/conda_decorator.py,sha256=piFcE4uGmWhhbGlxMK0GHd7BGEyqy6r9BFy8Mjoi80Q,15937
|
@@ -315,8 +315,8 @@ metaflow/plugins/secrets/__init__.py,sha256=mhJaN2eMS_ZZVewAMR2E-JdP5i0t3v9e6Dcw
|
|
315
315
|
metaflow/plugins/secrets/inline_secrets_provider.py,sha256=EChmoBGA1i7qM3jtYwPpLZDBybXLergiDlN63E0u3x8,294
|
316
316
|
metaflow/plugins/secrets/secrets_decorator.py,sha256=s-sFzPWOjahhpr5fMj-ZEaHkDYAPTO0isYXGvaUwlG8,11273
|
317
317
|
metaflow/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
318
|
-
metaflow/runner/click_api.py,sha256=
|
319
|
-
metaflow/runner/deployer.py,sha256=
|
318
|
+
metaflow/runner/click_api.py,sha256=4GbLSTA0Ju2kfjcslNn4yUOzGFcoMPFK00N_Q-q3IuY,23359
|
319
|
+
metaflow/runner/deployer.py,sha256=6ixXonNyLB1dfTNl1HVGVT5M8CybXDUa3oFTabn9Sp8,9099
|
320
320
|
metaflow/runner/deployer_impl.py,sha256=Kab9rLoA3EiBJDtTTulhPCeKzqiljW366nx2Tm0LYy0,6143
|
321
321
|
metaflow/runner/metaflow_runner.py,sha256=L302ew_BPBPs-NnW8n92dqqbqmHwrwGL5D6kTZvl5vY,16074
|
322
322
|
metaflow/runner/nbdeploy.py,sha256=Sp5w-6nCZwjHaRBHWxi8udya-RYnJOB76KNLjB4L7Gs,4166
|
@@ -363,12 +363,12 @@ metaflow/user_configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
363
363
|
metaflow/user_configs/config_decorators.py,sha256=qCKVAvd0NKgaCxQ2OThes5-DYHXq6A1HqURubYNeFdw,20481
|
364
364
|
metaflow/user_configs/config_options.py,sha256=m6jccSpzI4qUJ7vyYkYBIf8G3V0Caunxg_k7zg4Zlqg,21067
|
365
365
|
metaflow/user_configs/config_parameters.py,sha256=oeJGVKu1ao_YQX6Lg6P2FEv5k5-_F4sARLlVpTW9ezM,15502
|
366
|
-
metaflow-2.15.
|
367
|
-
metaflow-2.15.
|
368
|
-
metaflow-2.15.
|
369
|
-
metaflow-2.15.
|
370
|
-
metaflow-2.15.
|
371
|
-
metaflow-2.15.
|
372
|
-
metaflow-2.15.
|
373
|
-
metaflow-2.15.
|
374
|
-
metaflow-2.15.
|
366
|
+
metaflow-2.15.5.data/data/share/metaflow/devtools/Makefile,sha256=l0dYh6E_qdNjda6mwEHm5isoG9wsFh77i3CZQ5P53ZQ,13665
|
367
|
+
metaflow-2.15.5.data/data/share/metaflow/devtools/Tiltfile,sha256=P5_rn_F3xYLN1_cEAQ9mNeS22HG2rb8beKIz2RIK6fU,20634
|
368
|
+
metaflow-2.15.5.data/data/share/metaflow/devtools/pick_services.sh,sha256=DCnrMXwtApfx3B4S-YiZESMyAFHbXa3VuNL0MxPLyiE,2196
|
369
|
+
metaflow-2.15.5.dist-info/LICENSE,sha256=nl_Lt5v9VvJ-5lWJDT4ddKAG-VZ-2IaLmbzpgYDz2hU,11343
|
370
|
+
metaflow-2.15.5.dist-info/METADATA,sha256=OTCZHNk5uatZ0OPMEzh8ou_h4cpc6cWEH9PDBFqmxVY,6718
|
371
|
+
metaflow-2.15.5.dist-info/WHEEL,sha256=SrDKpSbFN1G94qcmBqS9nyHcDMp9cUS9OC06hC0G3G0,109
|
372
|
+
metaflow-2.15.5.dist-info/entry_points.txt,sha256=RvEq8VFlgGe_FfqGOZi0D7ze1hLD0pAtXeNyGfzc_Yc,103
|
373
|
+
metaflow-2.15.5.dist-info/top_level.txt,sha256=v1pDHoWaSaKeuc5fKTRSfsXCKSdW1zvNVmvA-i0if3o,9
|
374
|
+
metaflow-2.15.5.dist-info/RECORD,,
|
@@ -1,110 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.2
|
2
|
-
Name: metaflow
|
3
|
-
Version: 2.15.3
|
4
|
-
Summary: Metaflow: More AI and ML, Less Engineering
|
5
|
-
Author: Metaflow Developers
|
6
|
-
Author-email: help@metaflow.org
|
7
|
-
License: Apache Software License
|
8
|
-
Project-URL: Source, https://github.com/Netflix/metaflow
|
9
|
-
Project-URL: Issues, https://github.com/Netflix/metaflow/issues
|
10
|
-
Project-URL: Documentation, https://docs.metaflow.org
|
11
|
-
Classifier: Development Status :: 5 - Production/Stable
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
13
|
-
Classifier: Operating System :: MacOS :: MacOS X
|
14
|
-
Classifier: Operating System :: POSIX :: Linux
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
16
|
-
Classifier: Programming Language :: Python :: 3.6
|
17
|
-
Classifier: Programming Language :: Python :: 3.7
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
22
|
-
Classifier: Programming Language :: Python :: 3.12
|
23
|
-
Classifier: Programming Language :: Python :: 3.13
|
24
|
-
Description-Content-Type: text/markdown
|
25
|
-
License-File: LICENSE
|
26
|
-
Requires-Dist: requests
|
27
|
-
Requires-Dist: boto3
|
28
|
-
Provides-Extra: stubs
|
29
|
-
Requires-Dist: metaflow-stubs==2.15.3; extra == "stubs"
|
30
|
-
Dynamic: author
|
31
|
-
Dynamic: author-email
|
32
|
-
Dynamic: classifier
|
33
|
-
Dynamic: description
|
34
|
-
Dynamic: description-content-type
|
35
|
-
Dynamic: license
|
36
|
-
Dynamic: project-url
|
37
|
-
Dynamic: provides-extra
|
38
|
-
Dynamic: requires-dist
|
39
|
-
Dynamic: summary
|
40
|
-
|
41
|
-

|
42
|
-
|
43
|
-
# Metaflow
|
44
|
-
|
45
|
-
Metaflow is a human-friendly library that helps scientists and engineers build and manage real-life data science projects. Metaflow was [originally developed at Netflix](https://netflixtechblog.com/open-sourcing-metaflow-a-human-centric-framework-for-data-science-fa72e04a5d9) to boost productivity of data scientists who work on a wide variety of projects from classical statistics to state-of-the-art deep learning.
|
46
|
-
|
47
|
-
For more information, see [Metaflow's website](https://metaflow.org) and [documentation](https://docs.metaflow.org).
|
48
|
-
|
49
|
-
## From prototype to production (and back)
|
50
|
-
|
51
|
-
Metaflow provides a simple, friendly API that covers foundational needs of ML, AI, and data science projects:
|
52
|
-
<img src="./docs/prototype-to-prod.png" width="800px">
|
53
|
-
|
54
|
-
1. [Rapid local prototyping](https://docs.metaflow.org/metaflow/basics), [support for notebooks](https://docs.metaflow.org/metaflow/visualizing-results), and [built-in experiment tracking and versioning](https://docs.metaflow.org/metaflow/client).
|
55
|
-
2. [Horizontal and vertical scalability to the cloud](https://docs.metaflow.org/scaling/remote-tasks/introduction), utilizing both CPUs and GPUs, and [fast data access](https://docs.metaflow.org/scaling/data).
|
56
|
-
3. [Managing dependencies](https://docs.metaflow.org/scaling/dependencies) and [one-click deployments to highly available production orchestrators](https://docs.metaflow.org/production/introduction).
|
57
|
-
|
58
|
-
|
59
|
-
## Getting started
|
60
|
-
|
61
|
-
Getting up and running is easy. If you don't know where to start, [Metaflow sandbox](https://outerbounds.com/sandbox) will have you running and exploring Metaflow in seconds.
|
62
|
-
|
63
|
-
### Installing Metaflow in your Python environment
|
64
|
-
|
65
|
-
To install Metaflow in your local environment, you can install from [PyPi](https://pypi.org/project/metaflow/):
|
66
|
-
|
67
|
-
```sh
|
68
|
-
pip install metaflow
|
69
|
-
```
|
70
|
-
Alternatively, you can also install from [conda-forge](https://anaconda.org/conda-forge/metaflow):
|
71
|
-
|
72
|
-
```sh
|
73
|
-
conda install -c conda-forge metaflow
|
74
|
-
```
|
75
|
-
If you are eager to try out Metaflow in practice, you can start with the [tutorial](https://docs.metaflow.org/getting-started/tutorials). After the tutorial, you can learn more about how Metaflow works [here](https://docs.metaflow.org/metaflow/basics).
|
76
|
-
|
77
|
-
### Deploying infrastructure for Metaflow in your cloud
|
78
|
-
<img src="./docs/multicloud.png" width="800px">
|
79
|
-
|
80
|
-
|
81
|
-
While you can get started with Metaflow easily on your laptop, the main benefits of Metaflow lie in its ability to [scale out to external compute clusters](https://docs.metaflow.org/scaling/remote-tasks/introduction)
|
82
|
-
and to [deploy to production-grade workflow orchestrators](https://docs.metaflow.org/production/introduction). To benefit from these features, follow this [guide](https://outerbounds.com/engineering/welcome/) to
|
83
|
-
configure Metaflow and the infrastructure behind it appropriately.
|
84
|
-
|
85
|
-
## [Resources](https://docs.metaflow.org/introduction/metaflow-resources)
|
86
|
-
|
87
|
-
### [Slack Community](http://slack.outerbounds.co/)
|
88
|
-
An active [community](http://slack.outerbounds.co/) of thousands of data scientists and ML engineers discussing the ins-and-outs of applied machine learning.
|
89
|
-
|
90
|
-
### [Tutorials](https://outerbounds.com/docs/tutorials-index/)
|
91
|
-
- [Introduction to Metaflow](https://outerbounds.com/docs/intro-tutorial-overview/)
|
92
|
-
- [Natural Language Processing with Metaflow](https://outerbounds.com/docs/nlp-tutorial-overview/)
|
93
|
-
- [Computer Vision with Metaflow](https://outerbounds.com/docs/cv-tutorial-overview/)
|
94
|
-
- [Recommender Systems with Metaflow](https://outerbounds.com/docs/recsys-tutorial-overview/)
|
95
|
-
- And more advanced content [here](https://outerbounds.com/docs/tutorials-index/)
|
96
|
-
|
97
|
-
### [Generative AI and LLM use cases](https://outerbounds.com/blog/?category=Foundation%20Models)
|
98
|
-
- [Infrastructure Stack for Large Language Models](https://outerbounds.com/blog/llm-infrastructure-stack/)
|
99
|
-
- [Parallelizing Stable Diffusion for Production Use Cases](https://outerbounds.com/blog/parallelizing-stable-diffusion-production-use-cases/)
|
100
|
-
- [Whisper with Metaflow on Kubernetes](https://outerbounds.com/blog/whisper-kubernetes/)
|
101
|
-
- [Training a Large Language Model With Metaflow, Featuring Dolly](https://outerbounds.com/blog/train-dolly-metaflow/)
|
102
|
-
|
103
|
-
## Get in touch
|
104
|
-
There are several ways to get in touch with us:
|
105
|
-
- [Slack Community](http://slack.outerbounds.co/)
|
106
|
-
- [Github Issues](https://github.com/Netflix/metaflow/issues)
|
107
|
-
|
108
|
-
## Contributing
|
109
|
-
We welcome contributions to Metaflow. Please see our [contribution guide](https://docs.metaflow.org/introduction/contributing-to-metaflow) for more details.
|
110
|
-
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|