scalable-pypeline 2.1.26__tar.gz → 2.1.27__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.
Potentially problematic release.
This version of scalable-pypeline might be problematic. Click here for more details.
- {scalable-pypeline-2.1.26/scalable_pypeline.egg-info → scalable-pypeline-2.1.27}/PKG-INFO +1 -1
- scalable-pypeline-2.1.27/pypeline/__init__.py +1 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipeline_settings_schema.py +1 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/pypeline_middleware.py +12 -4
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27/scalable_pypeline.egg-info}/PKG-INFO +1 -1
- scalable-pypeline-2.1.26/pypeline/__init__.py +0 -1
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/LICENSE +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/MANIFEST.in +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/README.md +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/barrier.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/constants.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/dramatiq.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/executable_job_config_schema.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/extensions.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/api/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/api/pipelines.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/api/schedules.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/decorators.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/flask/flask_pypeline.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipeline_config_schema.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/composition/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/composition/parallel_pipeline_composition.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/composition/pypeline_composition.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/factory.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/get_active_worker_id_middleware.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/graceful_shutdown_middleware.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/parallel_pipeline_middleware.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pypeline_yaml.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/schedule_config_schema.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/__init__.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/config_utils.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/dramatiq_utils.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/executable_job_util.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/graceful_shutdown_util.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/module_utils.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/pipeline_utils.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/schema_utils.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/requirements.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/SOURCES.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/dependency_links.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/entry_points.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/requires.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/top_level.txt +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/setup.cfg +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/setup.py +0 -0
- {scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/tests/fixtures/__init__.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.1.27"
|
|
@@ -465,6 +465,7 @@ class PipelineScenarioSchema(Schema):
|
|
|
465
465
|
"produce alternative calculations and or results."
|
|
466
466
|
},
|
|
467
467
|
)
|
|
468
|
+
execution_id = fields.String(required=False, metadata={"description":"Execution id for a known scenario"})
|
|
468
469
|
|
|
469
470
|
|
|
470
471
|
class PipelineScenariosSchema(Schema):
|
|
@@ -76,7 +76,13 @@ class PypelineMiddleware(Middleware):
|
|
|
76
76
|
# If the lock didn't exist for the current tasks execution id then it would indicate
|
|
77
77
|
# that this is the start of a new scenario. Therefore we need to find the ancestor
|
|
78
78
|
# that is executed in the base case execution id and make sure it has completed
|
|
79
|
-
|
|
79
|
+
tasks_to_run_in_scenario = None
|
|
80
|
+
|
|
81
|
+
for scenario in message.options["scenarios"]:
|
|
82
|
+
if scenario["execution_id"] == execution_id:
|
|
83
|
+
tasks_to_run_in_scenario = scenario["tasksToRunInScenario"]
|
|
84
|
+
|
|
85
|
+
if ancestor not in tasks_to_run_in_scenario and remaining_tasks is None:
|
|
80
86
|
ancestor_task_key = (
|
|
81
87
|
f"{message.options['base_case_execution_id']}-{ancestor}"
|
|
82
88
|
)
|
|
@@ -95,15 +101,17 @@ class PypelineMiddleware(Middleware):
|
|
|
95
101
|
remaining_tasks = locking_parallel_barrier.get_task_count()
|
|
96
102
|
finally:
|
|
97
103
|
locking_parallel_barrier.release_lock()
|
|
104
|
+
|
|
105
|
+
|
|
98
106
|
if remaining_tasks is None or remaining_tasks >= 1:
|
|
99
107
|
ancestor_tasks_complete = False
|
|
100
108
|
break
|
|
101
109
|
|
|
102
110
|
# If the child's ancestor tasks aren't complete move onto the next child to check
|
|
103
111
|
if not ancestor_tasks_complete:
|
|
104
|
-
|
|
112
|
+
continue
|
|
105
113
|
|
|
106
|
-
# Handle situation where base case kicks off new scenario
|
|
114
|
+
# Handle situation where base case kicks off new scenario.
|
|
107
115
|
if (
|
|
108
116
|
message.options["base_case_execution_id"]
|
|
109
117
|
== message.options["execution_id"]
|
|
@@ -160,7 +168,7 @@ class PypelineMiddleware(Middleware):
|
|
|
160
168
|
)
|
|
161
169
|
messages.append(scenario_message)
|
|
162
170
|
|
|
163
|
-
#
|
|
171
|
+
# If we've made it here all ancestors of this child are complete and it's time to run.
|
|
164
172
|
task_key = f"{execution_id}-{child}"
|
|
165
173
|
locking_parallel_barrier = LockingParallelBarrier(
|
|
166
174
|
self.redis_url,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "2.1.26"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/executable_job_config_schema.py
RENAMED
|
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
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/composition/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/pipelines/middleware/__init__.py
RENAMED
|
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
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/pypeline/utils/graceful_shutdown_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/requires.txt
RENAMED
|
File without changes
|
{scalable-pypeline-2.1.26 → scalable-pypeline-2.1.27}/scalable_pypeline.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|