nextpipe 0.6.1__tar.gz → 0.6.2.dev0__tar.gz
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.
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/PKG-INFO +1 -1
- nextpipe-0.6.2.dev0/nextpipe/__about__.py +1 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/decorators.py +10 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/flow.py +19 -8
- nextpipe-0.6.1/nextpipe/__about__.py +0 -1
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.github/workflows/lint.yml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.github/workflows/release.yml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.github/workflows/test.yml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.gitignore +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.markdownlint.jsonc +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.nextmv/bump_requirements.sh +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.prettierrc.yml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/.readthedocs.yaml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/LICENSE.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/README.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/RELEASE.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/basic-chained-workflow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/complex-workflow-csv.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/complex-workflow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/ensemble-workflow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/fanout-workflow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/examples/multifile-workflow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/active-plan.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/api-keys.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/app-diagram.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/apps-orchestrate-full.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/apps-orchestrate.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/innovator.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/logo-180.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/new-run-orchestrate.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/nextmv-favicon.svg +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/plans.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/pushed-app.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/routing-ortools-pyvroom-selected.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/routing-selected.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/run-metadata.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/run-summary.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/run-workflow.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/secrets-collection-orchestrate.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/images/workflow-diagram.png +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/index.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/config.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/decorators.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/echo-multi.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/echo.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/flow.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/graph.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/schema.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/threads.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/uplink.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/reference/utils.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/requirements.txt +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/docs/tutorials/orchestrate-multiple-models.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/mkdocs.yml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/__init__.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/config.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/graph.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/schema.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/threads.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/uplink.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe/utils.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/nextpipe.code-workspace +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/pyproject.toml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/.gitignore +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/README.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/__init__.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo/.gitignore +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo/README.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo/app.yaml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo/main.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo/requirements.txt +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/.gitignore +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/README.md +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/app.yaml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/inputs/data.csv +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/inputs/input.xlsx +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/main.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/apps/echo-multi/requirements.txt +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/deploy/app.yaml +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/deploy/main.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/deploy/requirements.txt +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/appapp.json +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/appapp.json.golden +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/appapp.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/chain.json +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/chain.json.golden +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/chain.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/complex.json +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/complex.json.golden +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/complex.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/fail.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach-2-pred.json +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach-2-pred.json.golden +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach-2-pred.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach.json +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach.json.golden +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/foreach.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/inputs/data.csv +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/inputs/input.xlsx +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/pipelines/multifile.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_graph.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_integration.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_schema.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_threads.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_uplink.py +0 -0
- {nextpipe-0.6.1 → nextpipe-0.6.2.dev0}/tests/test_version.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "v0.6.2-dev.0"
|
|
@@ -781,6 +781,7 @@ class App:
|
|
|
781
781
|
full_result: bool = False,
|
|
782
782
|
run_configuration: nextmv.RunConfiguration = None,
|
|
783
783
|
polling_options: nextmv.PollingOptions | None = nextmv.DEFAULT_POLLING_OPTIONS,
|
|
784
|
+
bypass_result: typing.Any = None,
|
|
784
785
|
):
|
|
785
786
|
"""
|
|
786
787
|
Initialize an App object.
|
|
@@ -799,6 +800,9 @@ class App:
|
|
|
799
800
|
The configuration to apply when running the app, by default None.
|
|
800
801
|
polling_options : Optional[nextmv.PollingOptions], optional
|
|
801
802
|
Options for polling for the results of the app run, by default _DEFAULT_POLLING_OPTIONS.
|
|
803
|
+
bypass_result : typing.Any, optional
|
|
804
|
+
A value that can be provided to bypass the actual execution of the app.
|
|
805
|
+
This is mainly used for testing purposes, by default None.
|
|
802
806
|
"""
|
|
803
807
|
|
|
804
808
|
if input_type:
|
|
@@ -824,6 +828,7 @@ class App:
|
|
|
824
828
|
self.full_result = full_result
|
|
825
829
|
self.run_configuration = run_configuration
|
|
826
830
|
self.polling_options = polling_options
|
|
831
|
+
self.bypass_result = bypass_result
|
|
827
832
|
|
|
828
833
|
def __repr__(self):
|
|
829
834
|
"""Return a string representation of the app.
|
|
@@ -846,6 +851,7 @@ def app(
|
|
|
846
851
|
full_result: bool = False,
|
|
847
852
|
run_configuration: nextmv.RunConfiguration = None,
|
|
848
853
|
polling_options: nextmv.PollingOptions | None = nextmv.DEFAULT_POLLING_OPTIONS,
|
|
854
|
+
bypass_result: typing.Any = None,
|
|
849
855
|
):
|
|
850
856
|
"""
|
|
851
857
|
Decorator to mark a step as a Nextmv Application (external application)
|
|
@@ -885,6 +891,9 @@ def app(
|
|
|
885
891
|
class itself. Please note that the `.initial_delay` attribute will be
|
|
886
892
|
overridden internally, as a strategy to stagger multiple parallel runs
|
|
887
893
|
and avoid overloading the Platform.
|
|
894
|
+
bypass_result : typing.Any, optional
|
|
895
|
+
A value that can be provided to bypass the actual execution of the app.
|
|
896
|
+
This is mainly used for testing purposes, by default None.
|
|
888
897
|
|
|
889
898
|
Example
|
|
890
899
|
-------
|
|
@@ -957,6 +966,7 @@ def app(
|
|
|
957
966
|
full_result=full_result,
|
|
958
967
|
run_configuration=run_configuration,
|
|
959
968
|
polling_options=polling_options,
|
|
969
|
+
bypass_result=bypass_result,
|
|
960
970
|
)
|
|
961
971
|
wrapper.step.type = StepType.APP
|
|
962
972
|
|
|
@@ -29,6 +29,7 @@ import inspect
|
|
|
29
29
|
import io
|
|
30
30
|
import os
|
|
31
31
|
import random
|
|
32
|
+
import shutil
|
|
32
33
|
import tempfile
|
|
33
34
|
import threading
|
|
34
35
|
import time
|
|
@@ -991,14 +992,24 @@ class Runner:
|
|
|
991
992
|
|
|
992
993
|
# Run the application
|
|
993
994
|
try:
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
995
|
+
if app_step.bypass_result is None:
|
|
996
|
+
run_id = app.new_run(*run_args[0], **run_args[1])
|
|
997
|
+
console_url = f"{client.console_url}/app/{app_step.app_id}/run/{run_id}?view=details"
|
|
998
|
+
utils.log_internal(f"Started app step {node.id} run, find it at {console_url}")
|
|
999
|
+
node.run_id = run_id
|
|
1000
|
+
update_dag() # Update the node with the run_id before we start polling for results
|
|
1001
|
+
result = app.run_result_with_polling(
|
|
1002
|
+
run_id=run_id, polling_options=polling_options, output_dir_path=temp_dir
|
|
1003
|
+
)
|
|
1004
|
+
else:
|
|
1005
|
+
utils.log_internal(f"Bypassing app step {node.id} run, using bypass result")
|
|
1006
|
+
# If the user supplied a bypass result, we need to write it to the temp dir if it's in dir mode
|
|
1007
|
+
if isinstance(app_step.bypass_result, str) and os.path.isdir(app_step.bypass_result):
|
|
1008
|
+
# If the bypass result is a directory, we copy its contents to the temp dir
|
|
1009
|
+
for filename in os.listdir(app_step.bypass_result):
|
|
1010
|
+
shutil.copy(os.path.join(app_step.bypass_result, filename), temp_dir)
|
|
1011
|
+
else:
|
|
1012
|
+
result = app_step.bypass_result
|
|
1002
1013
|
finally: # Make sure we clean up temp dir on failure too
|
|
1003
1014
|
# If the temp dir is empty, remove it
|
|
1004
1015
|
dir_result = False
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "v0.6.1"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|