cars 1.0.0rc1__cp313-cp313-musllinux_1_2_i686.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 cars might be problematic. Click here for more details.
- cars/__init__.py +74 -0
- cars/applications/__init__.py +37 -0
- cars/applications/application.py +117 -0
- cars/applications/application_constants.py +29 -0
- cars/applications/application_template.py +146 -0
- cars/applications/auxiliary_filling/__init__.py +29 -0
- cars/applications/auxiliary_filling/abstract_auxiliary_filling_app.py +104 -0
- cars/applications/auxiliary_filling/auxiliary_filling_algo.py +475 -0
- cars/applications/auxiliary_filling/auxiliary_filling_from_sensors_app.py +630 -0
- cars/applications/auxiliary_filling/auxiliary_filling_wrappers.py +90 -0
- cars/applications/dem_generation/__init__.py +30 -0
- cars/applications/dem_generation/abstract_dem_generation_app.py +116 -0
- cars/applications/dem_generation/bulldozer_config/base_config.yaml +42 -0
- cars/applications/dem_generation/bulldozer_dem_app.py +655 -0
- cars/applications/dem_generation/bulldozer_memory.py +55 -0
- cars/applications/dem_generation/dem_generation_algo.py +107 -0
- cars/applications/dem_generation/dem_generation_constants.py +32 -0
- cars/applications/dem_generation/dem_generation_wrappers.py +323 -0
- cars/applications/dense_match_filling/__init__.py +30 -0
- cars/applications/dense_match_filling/abstract_dense_match_filling_app.py +242 -0
- cars/applications/dense_match_filling/fill_disp_algo.py +113 -0
- cars/applications/dense_match_filling/fill_disp_constants.py +39 -0
- cars/applications/dense_match_filling/fill_disp_wrappers.py +83 -0
- cars/applications/dense_match_filling/zero_padding_app.py +302 -0
- cars/applications/dense_matching/__init__.py +30 -0
- cars/applications/dense_matching/abstract_dense_matching_app.py +261 -0
- cars/applications/dense_matching/census_mccnn_sgm_app.py +1460 -0
- cars/applications/dense_matching/cpp/__init__.py +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.cpython-313-i386-linux-musl.so +0 -0
- cars/applications/dense_matching/cpp/dense_matching_cpp.py +94 -0
- cars/applications/dense_matching/cpp/includes/dense_matching.hpp +58 -0
- cars/applications/dense_matching/cpp/meson.build +9 -0
- cars/applications/dense_matching/cpp/src/bindings.cpp +13 -0
- cars/applications/dense_matching/cpp/src/dense_matching.cpp +207 -0
- cars/applications/dense_matching/dense_matching_algo.py +401 -0
- cars/applications/dense_matching/dense_matching_constants.py +89 -0
- cars/applications/dense_matching/dense_matching_wrappers.py +951 -0
- cars/applications/dense_matching/disparity_grid_algo.py +588 -0
- cars/applications/dense_matching/loaders/__init__.py +23 -0
- cars/applications/dense_matching/loaders/config_census_sgm_default.json +31 -0
- cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +30 -0
- cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +36 -0
- cars/applications/dense_matching/loaders/config_census_sgm_urban.json +30 -0
- cars/applications/dense_matching/loaders/config_mapping.json +13 -0
- cars/applications/dense_matching/loaders/config_mccnn.json +28 -0
- cars/applications/dense_matching/loaders/global_land_cover_map.tif +0 -0
- cars/applications/dense_matching/loaders/pandora_loader.py +593 -0
- cars/applications/dsm_filling/__init__.py +32 -0
- cars/applications/dsm_filling/abstract_dsm_filling_app.py +101 -0
- cars/applications/dsm_filling/border_interpolation_app.py +270 -0
- cars/applications/dsm_filling/bulldozer_config/base_config.yaml +44 -0
- cars/applications/dsm_filling/bulldozer_filling_app.py +279 -0
- cars/applications/dsm_filling/exogenous_filling_app.py +333 -0
- cars/applications/grid_generation/__init__.py +30 -0
- cars/applications/grid_generation/abstract_grid_generation_app.py +142 -0
- cars/applications/grid_generation/epipolar_grid_generation_app.py +327 -0
- cars/applications/grid_generation/grid_correction_app.py +496 -0
- cars/applications/grid_generation/grid_generation_algo.py +388 -0
- cars/applications/grid_generation/grid_generation_constants.py +46 -0
- cars/applications/grid_generation/transform_grid.py +88 -0
- cars/applications/ground_truth_reprojection/__init__.py +30 -0
- cars/applications/ground_truth_reprojection/abstract_ground_truth_reprojection_app.py +137 -0
- cars/applications/ground_truth_reprojection/direct_localization_app.py +629 -0
- cars/applications/ground_truth_reprojection/ground_truth_reprojection_algo.py +275 -0
- cars/applications/point_cloud_outlier_removal/__init__.py +30 -0
- cars/applications/point_cloud_outlier_removal/abstract_outlier_removal_app.py +385 -0
- cars/applications/point_cloud_outlier_removal/outlier_removal_algo.py +392 -0
- cars/applications/point_cloud_outlier_removal/outlier_removal_constants.py +43 -0
- cars/applications/point_cloud_outlier_removal/small_components_app.py +527 -0
- cars/applications/point_cloud_outlier_removal/statistical_app.py +531 -0
- cars/applications/rasterization/__init__.py +30 -0
- cars/applications/rasterization/abstract_pc_rasterization_app.py +183 -0
- cars/applications/rasterization/rasterization_algo.py +534 -0
- cars/applications/rasterization/rasterization_constants.py +38 -0
- cars/applications/rasterization/rasterization_wrappers.py +634 -0
- cars/applications/rasterization/simple_gaussian_app.py +1152 -0
- cars/applications/resampling/__init__.py +28 -0
- cars/applications/resampling/abstract_resampling_app.py +187 -0
- cars/applications/resampling/bicubic_resampling_app.py +762 -0
- cars/applications/resampling/resampling_algo.py +614 -0
- cars/applications/resampling/resampling_constants.py +36 -0
- cars/applications/resampling/resampling_wrappers.py +309 -0
- cars/applications/sparse_matching/__init__.py +30 -0
- cars/applications/sparse_matching/abstract_sparse_matching_app.py +498 -0
- cars/applications/sparse_matching/sift_app.py +735 -0
- cars/applications/sparse_matching/sparse_matching_algo.py +360 -0
- cars/applications/sparse_matching/sparse_matching_constants.py +68 -0
- cars/applications/sparse_matching/sparse_matching_wrappers.py +238 -0
- cars/applications/triangulation/__init__.py +32 -0
- cars/applications/triangulation/abstract_triangulation_app.py +227 -0
- cars/applications/triangulation/line_of_sight_intersection_app.py +1243 -0
- cars/applications/triangulation/pc_transform.py +552 -0
- cars/applications/triangulation/triangulation_algo.py +371 -0
- cars/applications/triangulation/triangulation_constants.py +38 -0
- cars/applications/triangulation/triangulation_wrappers.py +259 -0
- cars/bundleadjustment.py +757 -0
- cars/cars.py +177 -0
- cars/conf/__init__.py +23 -0
- cars/conf/geoid/egm96.grd +0 -0
- cars/conf/geoid/egm96.grd.hdr +15 -0
- cars/conf/input_parameters.py +156 -0
- cars/conf/mask_cst.py +35 -0
- cars/core/__init__.py +23 -0
- cars/core/cars_logging.py +402 -0
- cars/core/constants.py +191 -0
- cars/core/constants_disparity.py +50 -0
- cars/core/datasets.py +140 -0
- cars/core/geometry/__init__.py +27 -0
- cars/core/geometry/abstract_geometry.py +1119 -0
- cars/core/geometry/shareloc_geometry.py +598 -0
- cars/core/inputs.py +568 -0
- cars/core/outputs.py +176 -0
- cars/core/preprocessing.py +722 -0
- cars/core/projection.py +843 -0
- cars/core/roi_tools.py +215 -0
- cars/core/tiling.py +774 -0
- cars/core/utils.py +164 -0
- cars/data_structures/__init__.py +23 -0
- cars/data_structures/cars_dataset.py +1541 -0
- cars/data_structures/cars_dict.py +74 -0
- cars/data_structures/corresponding_tiles_tools.py +186 -0
- cars/data_structures/dataframe_converter.py +185 -0
- cars/data_structures/format_transformation.py +297 -0
- cars/devibrate.py +689 -0
- cars/extractroi.py +264 -0
- cars/orchestrator/__init__.py +23 -0
- cars/orchestrator/achievement_tracker.py +125 -0
- cars/orchestrator/cluster/__init__.py +37 -0
- cars/orchestrator/cluster/abstract_cluster.py +244 -0
- cars/orchestrator/cluster/abstract_dask_cluster.py +375 -0
- cars/orchestrator/cluster/dask_cluster_tools.py +103 -0
- cars/orchestrator/cluster/dask_config/README.md +94 -0
- cars/orchestrator/cluster/dask_config/dask.yaml +21 -0
- cars/orchestrator/cluster/dask_config/distributed.yaml +70 -0
- cars/orchestrator/cluster/dask_config/jobqueue.yaml +26 -0
- cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +137 -0
- cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +26 -0
- cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +1009 -0
- cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +273 -0
- cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +212 -0
- cars/orchestrator/cluster/dask_jobqueue_utils.py +204 -0
- cars/orchestrator/cluster/local_dask_cluster.py +116 -0
- cars/orchestrator/cluster/log_wrapper.py +1075 -0
- cars/orchestrator/cluster/mp_cluster/__init__.py +27 -0
- cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +212 -0
- cars/orchestrator/cluster/mp_cluster/mp_objects.py +535 -0
- cars/orchestrator/cluster/mp_cluster/mp_tools.py +93 -0
- cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +505 -0
- cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +873 -0
- cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +399 -0
- cars/orchestrator/cluster/pbs_dask_cluster.py +207 -0
- cars/orchestrator/cluster/sequential_cluster.py +139 -0
- cars/orchestrator/cluster/slurm_dask_cluster.py +234 -0
- cars/orchestrator/orchestrator.py +905 -0
- cars/orchestrator/orchestrator_constants.py +29 -0
- cars/orchestrator/registry/__init__.py +23 -0
- cars/orchestrator/registry/abstract_registry.py +143 -0
- cars/orchestrator/registry/compute_registry.py +106 -0
- cars/orchestrator/registry/id_generator.py +116 -0
- cars/orchestrator/registry/replacer_registry.py +213 -0
- cars/orchestrator/registry/saver_registry.py +363 -0
- cars/orchestrator/registry/unseen_registry.py +118 -0
- cars/orchestrator/tiles_profiler.py +279 -0
- cars/pipelines/__init__.py +26 -0
- cars/pipelines/conf_resolution/conf_final_resolution.yaml +5 -0
- cars/pipelines/conf_resolution/conf_first_resolution.yaml +2 -0
- cars/pipelines/conf_resolution/conf_intermediate_resolution.yaml +2 -0
- cars/pipelines/default/__init__.py +26 -0
- cars/pipelines/default/default_pipeline.py +786 -0
- cars/pipelines/parameters/__init__.py +0 -0
- cars/pipelines/parameters/advanced_parameters.py +417 -0
- cars/pipelines/parameters/advanced_parameters_constants.py +69 -0
- cars/pipelines/parameters/application_parameters.py +71 -0
- cars/pipelines/parameters/depth_map_inputs.py +0 -0
- cars/pipelines/parameters/dsm_inputs.py +918 -0
- cars/pipelines/parameters/dsm_inputs_constants.py +25 -0
- cars/pipelines/parameters/output_constants.py +52 -0
- cars/pipelines/parameters/output_parameters.py +454 -0
- cars/pipelines/parameters/sensor_inputs.py +842 -0
- cars/pipelines/parameters/sensor_inputs_constants.py +49 -0
- cars/pipelines/parameters/sensor_loaders/__init__.py +29 -0
- cars/pipelines/parameters/sensor_loaders/basic_classif_loader.py +86 -0
- cars/pipelines/parameters/sensor_loaders/basic_image_loader.py +98 -0
- cars/pipelines/parameters/sensor_loaders/pivot_classif_loader.py +90 -0
- cars/pipelines/parameters/sensor_loaders/pivot_image_loader.py +105 -0
- cars/pipelines/parameters/sensor_loaders/sensor_loader.py +93 -0
- cars/pipelines/parameters/sensor_loaders/sensor_loader_template.py +71 -0
- cars/pipelines/parameters/sensor_loaders/slurp_classif_loader.py +86 -0
- cars/pipelines/pipeline.py +119 -0
- cars/pipelines/pipeline_constants.py +31 -0
- cars/pipelines/pipeline_template.py +139 -0
- cars/pipelines/unit/__init__.py +26 -0
- cars/pipelines/unit/unit_pipeline.py +2850 -0
- cars/starter.py +167 -0
- cars-1.0.0rc1.dist-info/METADATA +292 -0
- cars-1.0.0rc1.dist-info/RECORD +202 -0
- cars-1.0.0rc1.dist-info/WHEEL +5 -0
- cars-1.0.0rc1.dist-info/entry_points.txt +8 -0
- cars.libs/libgcc_s-1257a076.so.1 +0 -0
- cars.libs/libstdc++-0530927c.so.6.0.32 +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# coding: utf8
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2020 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
+
#
|
|
6
|
+
# This file is part of CARS
|
|
7
|
+
# (see https://github.com/CNES/cars).
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
CARS multiprocessing cluster module init file
|
|
23
|
+
"""
|
|
24
|
+
# flake8: noqa: F401
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
from . import multiprocessing_cluster
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# coding: utf8
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2020 Centre National d'Etudes Spatiales (CNES).
|
|
5
|
+
#
|
|
6
|
+
# This file is part of CARS
|
|
7
|
+
# (see https://github.com/CNES/cars).
|
|
8
|
+
#
|
|
9
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
# you may not use this file except in compliance with the License.
|
|
11
|
+
# You may obtain a copy of the License at
|
|
12
|
+
#
|
|
13
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
14
|
+
#
|
|
15
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
16
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
17
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
18
|
+
# See the License for the specific language governing permissions and
|
|
19
|
+
# limitations under the License.
|
|
20
|
+
#
|
|
21
|
+
"""
|
|
22
|
+
Contains functions needed to factorize delayed
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
# CARS imports
|
|
26
|
+
from cars.orchestrator.cluster.mp_cluster.mp_objects import (
|
|
27
|
+
FactorizedObject,
|
|
28
|
+
MpDelayedTask,
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def factorize_delayed(task_list):
|
|
33
|
+
"""
|
|
34
|
+
Factorize Task list
|
|
35
|
+
|
|
36
|
+
Only factorize tasks that depends on a single task
|
|
37
|
+
|
|
38
|
+
:param task_list: list of delayed
|
|
39
|
+
:type task_list: list(MpDelayed)
|
|
40
|
+
|
|
41
|
+
"""
|
|
42
|
+
# Compute graph usage
|
|
43
|
+
graph_usages = compute_graph_delayed_usages(task_list)
|
|
44
|
+
|
|
45
|
+
# Factorize delayed
|
|
46
|
+
already_seen_delayed_tasks = []
|
|
47
|
+
for delayed in task_list:
|
|
48
|
+
factorize_delayed_rec(delayed, graph_usages, already_seen_delayed_tasks)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def factorize_delayed_rec(delayed, graph_usages, already_seen_delayed_tasks):
|
|
52
|
+
"""
|
|
53
|
+
Factorize Task list
|
|
54
|
+
|
|
55
|
+
Only factorize tasks that depends on a single task
|
|
56
|
+
|
|
57
|
+
:param delayed: delayed to factorize
|
|
58
|
+
:type delayed: MpDelayed
|
|
59
|
+
:param graph_usages: number of usages of delayed
|
|
60
|
+
:type graph_usages: dict
|
|
61
|
+
example: {delayed1: 3}
|
|
62
|
+
:param already_seen_delayed_tasks: list of MpDelayedTask already seen
|
|
63
|
+
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
# check if current delayed can be factorized
|
|
67
|
+
depending_delayed = delayed.get_depending_delayed()
|
|
68
|
+
|
|
69
|
+
number_depending_task = compute_nb_depending_task(depending_delayed)
|
|
70
|
+
max_nb_of_usages = 0
|
|
71
|
+
if len(depending_delayed) > 0:
|
|
72
|
+
max_nb_of_usages = max(
|
|
73
|
+
number_of_usage(deld, graph_usages) for deld in depending_delayed
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
current_task = delayed.delayed_task
|
|
77
|
+
|
|
78
|
+
if current_task not in already_seen_delayed_tasks:
|
|
79
|
+
if number_depending_task == 1 and max_nb_of_usages == 1:
|
|
80
|
+
previous_task = depending_delayed[0].delayed_task
|
|
81
|
+
factorized_object = FactorizedObject(current_task, previous_task)
|
|
82
|
+
|
|
83
|
+
# Create new task and assign it to current delay
|
|
84
|
+
new_task = MpDelayedTask(factorized_fun, [factorized_object], {})
|
|
85
|
+
new_task.associated_objects = current_task.associated_objects
|
|
86
|
+
delayed.delayed_task = new_task
|
|
87
|
+
|
|
88
|
+
# Factorize again with current
|
|
89
|
+
factorize_delayed_rec(
|
|
90
|
+
delayed, graph_usages, already_seen_delayed_tasks
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
else:
|
|
94
|
+
# Only set to seen when task is completly factorized
|
|
95
|
+
already_seen_delayed_tasks.append(current_task)
|
|
96
|
+
# Get new dependances and factorize it
|
|
97
|
+
depending_delayed = delayed.get_depending_delayed()
|
|
98
|
+
for new_delayed in depending_delayed:
|
|
99
|
+
factorize_delayed_rec(
|
|
100
|
+
new_delayed, graph_usages, already_seen_delayed_tasks
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def compute_graph_delayed_usages(task_list):
|
|
105
|
+
"""
|
|
106
|
+
Compute the number of times every delayed is used in graph
|
|
107
|
+
|
|
108
|
+
:param task_list: list of delayed
|
|
109
|
+
:type task_list: list(MpDelayed)
|
|
110
|
+
|
|
111
|
+
:return: number of usages of delayed
|
|
112
|
+
:rtype: dict
|
|
113
|
+
example: {delayed1: 3}
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
graph_usages = {}
|
|
117
|
+
already_seen_tasks = []
|
|
118
|
+
|
|
119
|
+
for delayed in task_list:
|
|
120
|
+
get_delayed_usage_rec(delayed, graph_usages, already_seen_tasks)
|
|
121
|
+
|
|
122
|
+
return graph_usages
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def get_delayed_usage_rec(delayed, graph_usages, already_seen_tasks):
|
|
126
|
+
"""
|
|
127
|
+
Get number of time input delayed is used
|
|
128
|
+
|
|
129
|
+
:param delayed: delayed to factorize
|
|
130
|
+
:type delayed: MpDelayed
|
|
131
|
+
:param graph_usages: number of usages of delayed
|
|
132
|
+
:type graph_usages: dict
|
|
133
|
+
example: {delayed1: 3}
|
|
134
|
+
:param already_seen_tasks: list of seen delayed task
|
|
135
|
+
:type already_seen_tasks: list[MpDelayedTask]
|
|
136
|
+
"""
|
|
137
|
+
|
|
138
|
+
# update graph_usages
|
|
139
|
+
if delayed in graph_usages:
|
|
140
|
+
graph_usages[delayed] += 1
|
|
141
|
+
else:
|
|
142
|
+
graph_usages[delayed] = 1
|
|
143
|
+
|
|
144
|
+
# get usage of task inputs, if task was not already seen
|
|
145
|
+
delayed_task = delayed.delayed_task
|
|
146
|
+
|
|
147
|
+
if delayed_task not in already_seen_tasks:
|
|
148
|
+
# add task to seen
|
|
149
|
+
already_seen_tasks.append(delayed_task)
|
|
150
|
+
|
|
151
|
+
# get usage for all inputs
|
|
152
|
+
depending_delayed = delayed.get_depending_delayed()
|
|
153
|
+
for input_delayed in depending_delayed:
|
|
154
|
+
get_delayed_usage_rec(
|
|
155
|
+
input_delayed, graph_usages, already_seen_tasks
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def number_of_usage(delayed, graph_usages):
|
|
160
|
+
"""
|
|
161
|
+
Compute the number of times a delayed is used
|
|
162
|
+
|
|
163
|
+
:param delayed: delayed to factorize
|
|
164
|
+
:type delayed: MpDelayed
|
|
165
|
+
:param graph_usages: number of usages of delayed
|
|
166
|
+
:type graph_usages: dict
|
|
167
|
+
example: {delayed1: 3}
|
|
168
|
+
|
|
169
|
+
:return: number of usages of delayed
|
|
170
|
+
:rtype: int
|
|
171
|
+
"""
|
|
172
|
+
|
|
173
|
+
nb_usage = graph_usages[delayed]
|
|
174
|
+
return nb_usage
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def compute_nb_depending_task(depending_delayed_list):
|
|
178
|
+
"""
|
|
179
|
+
Compute the number of different delayed task in list of delayed
|
|
180
|
+
|
|
181
|
+
:param depending_delayed_list: list of delayed
|
|
182
|
+
:type depending_delayed_list: list[MpDelayed]
|
|
183
|
+
|
|
184
|
+
:return: number of depending task
|
|
185
|
+
:rtype: int
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
list_delayed_task = []
|
|
189
|
+
|
|
190
|
+
for delayed in depending_delayed_list:
|
|
191
|
+
delayed_task = delayed.delayed_task
|
|
192
|
+
if delayed_task not in list_delayed_task:
|
|
193
|
+
list_delayed_task.append(delayed_task)
|
|
194
|
+
|
|
195
|
+
return len(list_delayed_task)
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
# Factorized function and its generator
|
|
199
|
+
def factorized_fun(factorized_object):
|
|
200
|
+
"""
|
|
201
|
+
This function unpack multiple functions with their arguments,
|
|
202
|
+
and run them sequentialy until task list is empty
|
|
203
|
+
|
|
204
|
+
:param factorized_object: Object that contains a list of tasks
|
|
205
|
+
:type factorized_object: mp_objects.FactorizedObject
|
|
206
|
+
"""
|
|
207
|
+
|
|
208
|
+
res = None
|
|
209
|
+
while factorized_object.tasks:
|
|
210
|
+
# Run next task with output of previous task
|
|
211
|
+
res = factorized_object.pop_next_task(previous_result=res)
|
|
212
|
+
return res
|