cars 0.12.0rc2__tar.gz → 0.12.2__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 cars might be problematic. Click here for more details.

Files changed (223) hide show
  1. cars-0.12.2/.gitlab-ci.yml +179 -0
  2. {cars-0.12.0rc2 → cars-0.12.2}/CHANGELOG.md +12 -0
  3. {cars-0.12.0rc2 → cars-0.12.2}/PKG-INFO +1 -1
  4. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/auxiliary_filling/auxiliary_filling_tools.py +1 -1
  5. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/dichotomic_generation.py +2 -0
  6. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/rasterization.py +9 -0
  7. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/census_mccnn_sgm.py +19 -0
  8. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/dense_matching_cpp.py +11 -2
  9. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/includes/dense_matching.hpp +4 -2
  10. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/src/dense_matching.cpp +25 -7
  11. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/dense_matching_tools.py +29 -4
  12. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/orchestrator.py +18 -9
  13. cars-0.12.2/ci/cars-deps-env/Dockerfile +35 -0
  14. cars-0.12.2/ci/cars-docker-build.yml +37 -0
  15. cars-0.12.2/ci/cars-no-docker-build.yml +7 -0
  16. cars-0.12.2/ci/hadolint_RNC_A_B_C_D.yaml +42 -0
  17. {cars-0.12.0rc2 → cars-0.12.2}/meson.build +1 -1
  18. {cars-0.12.0rc2 → cars-0.12.2}/.coveragerc +0 -0
  19. {cars-0.12.0rc2 → cars-0.12.2}/.dockerignore +0 -0
  20. {cars-0.12.0rc2 → cars-0.12.2}/.gitattributes +0 -0
  21. {cars-0.12.0rc2 → cars-0.12.2}/.github/workflows/cars-ci.yml +0 -0
  22. {cars-0.12.0rc2 → cars-0.12.2}/.gitignore +0 -0
  23. {cars-0.12.0rc2 → cars-0.12.2}/.gitlab/issue_templates/Bug.md +0 -0
  24. {cars-0.12.0rc2 → cars-0.12.2}/.gitlab/issue_templates/Proposal.md +0 -0
  25. {cars-0.12.0rc2 → cars-0.12.2}/.gitlab/issue_templates/Refacto.md +0 -0
  26. {cars-0.12.0rc2 → cars-0.12.2}/.gitlab/issue_templates/Release.md +0 -0
  27. {cars-0.12.0rc2 → cars-0.12.2}/.gitlab/merge_request_templates/MR.md +0 -0
  28. {cars-0.12.0rc2 → cars-0.12.2}/.pre-commit-config.yaml +0 -0
  29. {cars-0.12.0rc2 → cars-0.12.2}/.pylintrc +0 -0
  30. {cars-0.12.0rc2 → cars-0.12.2}/.readthedocs.yaml +0 -0
  31. {cars-0.12.0rc2 → cars-0.12.2}/AUTHORS.md +0 -0
  32. {cars-0.12.0rc2 → cars-0.12.2}/CONTRIBUTING.md +0 -0
  33. {cars-0.12.0rc2 → cars-0.12.2}/Dockerfile +0 -0
  34. {cars-0.12.0rc2 → cars-0.12.2}/LICENSE +0 -0
  35. {cars-0.12.0rc2 → cars-0.12.2}/MANIFEST.in +0 -0
  36. {cars-0.12.0rc2 → cars-0.12.2}/Makefile +0 -0
  37. {cars-0.12.0rc2 → cars-0.12.2}/NOTICE +0 -0
  38. {cars-0.12.0rc2 → cars-0.12.2}/README.md +0 -0
  39. {cars-0.12.0rc2 → cars-0.12.2}/cars/__init__.py +0 -0
  40. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/__init__.py +0 -0
  41. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/application.py +0 -0
  42. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/application_constants.py +0 -0
  43. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/application_template.py +0 -0
  44. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/auxiliary_filling/__init__.py +0 -0
  45. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/auxiliary_filling/auxiliary_filling.py +0 -0
  46. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/auxiliary_filling/auxiliary_filling_from_sensors.py +0 -0
  47. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/__init__.py +0 -0
  48. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/bulldozer_config/base_config.yaml +0 -0
  49. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/dem_generation.py +0 -0
  50. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/dem_generation_constants.py +0 -0
  51. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dem_generation/dem_generation_tools.py +0 -0
  52. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/__init__.py +0 -0
  53. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/__init__.py +0 -0
  54. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/dense_match_filling_cpp.py +0 -0
  55. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/includes/dense_match_filling.hpp +0 -0
  56. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/meson.build +0 -0
  57. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/src/bindings.cpp +0 -0
  58. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/cpp/src/dense_match_filling.cpp +0 -0
  59. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/dense_match_filling.py +0 -0
  60. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/fill_disp_constants.py +0 -0
  61. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/fill_disp_tools.py +0 -0
  62. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/plane.py +0 -0
  63. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_match_filling/zero_padding.py +0 -0
  64. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/__init__.py +0 -0
  65. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/__init__.py +0 -0
  66. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/meson.build +0 -0
  67. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/cpp/src/bindings.cpp +0 -0
  68. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/dense_matching.py +0 -0
  69. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/dense_matching_constants.py +0 -0
  70. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/__init__.py +0 -0
  71. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_default.json +0 -0
  72. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_homogeneous.json +0 -0
  73. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_mountain_and_vegetation.json +0 -0
  74. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_shadow.json +0 -0
  75. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_sparse.json +0 -0
  76. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_census_sgm_urban.json +0 -0
  77. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/config_mccnn.json +0 -0
  78. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dense_matching/loaders/pandora_loader.py +0 -0
  79. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/__init__.py +0 -0
  80. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/border_interpolation.py +0 -0
  81. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/bulldozer_config/base_config.yaml +0 -0
  82. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/bulldozer_filling.py +0 -0
  83. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/dsm_filling.py +0 -0
  84. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/dsm_filling/exogenous_filling.py +0 -0
  85. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/__init__.py +0 -0
  86. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/epipolar_grid_generation.py +0 -0
  87. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/grid_constants.py +0 -0
  88. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/grid_correction.py +0 -0
  89. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/grid_generation.py +0 -0
  90. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/grid_generation/grids.py +0 -0
  91. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/ground_truth_reprojection/__init__.py +0 -0
  92. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/ground_truth_reprojection/direct_localization.py +0 -0
  93. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/ground_truth_reprojection/ground_truth_reprojection.py +0 -0
  94. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/ground_truth_reprojection/ground_truth_reprojection_tools.py +0 -0
  95. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/hole_detection/__init__.py +0 -0
  96. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/hole_detection/cloud_to_bbox.py +0 -0
  97. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/hole_detection/hole_detection.py +0 -0
  98. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/hole_detection/hole_detection_tools.py +0 -0
  99. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_denoising/__init__.py +0 -0
  100. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_denoising/point_cloud_denoising.py +0 -0
  101. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/__init__.py +0 -0
  102. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/cloud_fusion_constants.py +0 -0
  103. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/mapping_to_terrain_tiles.py +0 -0
  104. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/pc_tif_tools.py +0 -0
  105. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/point_cloud_fusion.py +0 -0
  106. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_fusion/point_cloud_tools.py +0 -0
  107. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/__init__.py +0 -0
  108. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/outlier_removal_tools.py +0 -0
  109. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/pc_out_removal.py +0 -0
  110. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/point_removal_constants.py +0 -0
  111. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/small_components.py +0 -0
  112. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/point_cloud_outlier_removal/statistical.py +0 -0
  113. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/rasterization/__init__.py +0 -0
  114. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/rasterization/point_cloud_rasterization.py +0 -0
  115. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/rasterization/rasterization_constants.py +0 -0
  116. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/rasterization/rasterization_tools.py +0 -0
  117. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/rasterization/simple_gaussian.py +0 -0
  118. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/resampling/__init__.py +0 -0
  119. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/resampling/bicubic_resampling.py +0 -0
  120. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/resampling/resampling.py +0 -0
  121. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/resampling/resampling_constants.py +0 -0
  122. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/resampling/resampling_tools.py +0 -0
  123. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/__init__.py +0 -0
  124. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/pandora_sparse_matching.py +0 -0
  125. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/sift.py +0 -0
  126. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/sparse_matching.py +0 -0
  127. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/sparse_matching_constants.py +0 -0
  128. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/sparse_matching/sparse_matching_tools.py +0 -0
  129. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/triangulation/__init__.py +0 -0
  130. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/triangulation/line_of_sight_intersection.py +0 -0
  131. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/triangulation/triangulation.py +0 -0
  132. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/triangulation/triangulation_constants.py +0 -0
  133. {cars-0.12.0rc2 → cars-0.12.2}/cars/applications/triangulation/triangulation_tools.py +0 -0
  134. {cars-0.12.0rc2 → cars-0.12.2}/cars/bundleadjustment.py +0 -0
  135. {cars-0.12.0rc2 → cars-0.12.2}/cars/cars.py +0 -0
  136. {cars-0.12.0rc2 → cars-0.12.2}/cars/conf/__init__.py +0 -0
  137. {cars-0.12.0rc2 → cars-0.12.2}/cars/conf/geoid/egm96.grd +0 -0
  138. {cars-0.12.0rc2 → cars-0.12.2}/cars/conf/geoid/egm96.grd.hdr +0 -0
  139. {cars-0.12.0rc2 → cars-0.12.2}/cars/conf/input_parameters.py +0 -0
  140. {cars-0.12.0rc2 → cars-0.12.2}/cars/conf/mask_cst.py +0 -0
  141. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/__init__.py +0 -0
  142. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/cars_logging.py +0 -0
  143. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/constants.py +0 -0
  144. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/constants_disparity.py +0 -0
  145. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/datasets.py +0 -0
  146. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/geometry/__init__.py +0 -0
  147. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/geometry/abstract_geometry.py +0 -0
  148. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/geometry/shareloc_geometry.py +0 -0
  149. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/inputs.py +0 -0
  150. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/outputs.py +0 -0
  151. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/preprocessing.py +0 -0
  152. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/projection.py +0 -0
  153. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/roi_tools.py +0 -0
  154. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/tiling.py +0 -0
  155. {cars-0.12.0rc2 → cars-0.12.2}/cars/core/utils.py +0 -0
  156. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/__init__.py +0 -0
  157. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/cars_dataset.py +0 -0
  158. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/cars_dict.py +0 -0
  159. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/corresponding_tiles_tools.py +0 -0
  160. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/dataframe_converter.py +0 -0
  161. {cars-0.12.0rc2 → cars-0.12.2}/cars/data_structures/format_transformation.py +0 -0
  162. {cars-0.12.0rc2 → cars-0.12.2}/cars/devibrate.py +0 -0
  163. {cars-0.12.0rc2 → cars-0.12.2}/cars/extractroi.py +0 -0
  164. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/__init__.py +0 -0
  165. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/achievement_tracker.py +0 -0
  166. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/__init__.py +0 -0
  167. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/abstract_cluster.py +0 -0
  168. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/abstract_dask_cluster.py +0 -0
  169. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_cluster_tools.py +0 -0
  170. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/README.md +0 -0
  171. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/dask.yaml +0 -0
  172. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/distributed.yaml +0 -0
  173. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/jobqueue.yaml +0 -0
  174. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/reference_confs/dask-schema.yaml +0 -0
  175. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/reference_confs/dask.yaml +0 -0
  176. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/reference_confs/distributed-schema.yaml +0 -0
  177. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/reference_confs/distributed.yaml +0 -0
  178. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_config/reference_confs/jobqueue.yaml +0 -0
  179. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/dask_jobqueue_utils.py +0 -0
  180. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/local_dask_cluster.py +0 -0
  181. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/log_wrapper.py +0 -0
  182. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/__init__.py +0 -0
  183. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/mp_factorizer.py +0 -0
  184. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/mp_objects.py +0 -0
  185. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/mp_tools.py +0 -0
  186. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/mp_wrapper.py +0 -0
  187. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/multiprocessing_cluster.py +0 -0
  188. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/mp_cluster/multiprocessing_profiler.py +0 -0
  189. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/pbs_dask_cluster.py +0 -0
  190. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/sequential_cluster.py +0 -0
  191. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/cluster/slurm_dask_cluster.py +0 -0
  192. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/orchestrator_constants.py +0 -0
  193. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/__init__.py +0 -0
  194. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/abstract_registry.py +0 -0
  195. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/compute_registry.py +0 -0
  196. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/id_generator.py +0 -0
  197. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/replacer_registry.py +0 -0
  198. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/saver_registry.py +0 -0
  199. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/registry/unseen_registry.py +0 -0
  200. {cars-0.12.0rc2 → cars-0.12.2}/cars/orchestrator/tiles_profiler.py +0 -0
  201. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/__init__.py +0 -0
  202. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/default/__init__.py +0 -0
  203. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/default/default_pipeline.py +0 -0
  204. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/__init__.py +0 -0
  205. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/advanced_parameters.py +0 -0
  206. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/advanced_parameters_constants.py +0 -0
  207. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/depth_map_inputs.py +0 -0
  208. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/depth_map_inputs_constants.py +0 -0
  209. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/dsm_inputs.py +0 -0
  210. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/dsm_inputs_constants.py +0 -0
  211. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/output_constants.py +0 -0
  212. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/output_parameters.py +0 -0
  213. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/sensor_inputs.py +0 -0
  214. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/parameters/sensor_inputs_constants.py +0 -0
  215. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/pipeline.py +0 -0
  216. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/pipeline_constants.py +0 -0
  217. {cars-0.12.0rc2 → cars-0.12.2}/cars/pipelines/pipeline_template.py +0 -0
  218. {cars-0.12.0rc2 → cars-0.12.2}/cars/starter.py +0 -0
  219. {cars-0.12.0rc2 → cars-0.12.2}/pyproject.toml +0 -0
  220. {cars-0.12.0rc2 → cars-0.12.2}/pytest.ini +0 -0
  221. {cars-0.12.0rc2 → cars-0.12.2}/setup.py +0 -0
  222. {cars-0.12.0rc2 → cars-0.12.2}/sonar-project.properties +0 -0
  223. {cars-0.12.0rc2 → cars-0.12.2}/version.py +0 -0
@@ -0,0 +1,179 @@
1
+ workflow:
2
+ rules:
3
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
4
+ - if: $CI_COMMIT_REF_NAME == "master"
5
+ - if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
6
+
7
+ stages:
8
+ - init
9
+ - build
10
+ - test
11
+ - sonarqube
12
+ - sync
13
+
14
+
15
+ variables:
16
+ # Token used to push reports to SonarQube
17
+ SONARQUBE_TOKEN: "${CARS_CI_SONARQUBE_TOKEN}"
18
+
19
+ # Git variables
20
+ # Limit git depth to speed up cloning
21
+ GIT_DEPTH: 1
22
+
23
+ include:
24
+ # Sonarqube job
25
+ - project: "usinelogicielle/public/gitlab-ci-templates" # Inclut le stage de qualité sonarqube
26
+ ref: v1.1.3 # référence de tag
27
+ file: "jobs/sonarqube-gitlab-ci.yml"
28
+ # Variable defintion
29
+ - component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-variables@master
30
+ # Jobs for gitlab-github synchronisation
31
+ - component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-github@master
32
+ # Docker building and image selection
33
+ # First case: no need to update env, use latest version
34
+ - local: '/ci/cars-no-docker-build.yml'
35
+ rules:
36
+ # do not trigger this case if env has changed(see second case)
37
+ - changes:
38
+ - "ci/cars-deps-env/Dockerfile"
39
+ - "pyproject.toml"
40
+ when: never
41
+ # do not trigger this case on master (see third case)
42
+ - if: $CI_COMMIT_REF_NAME == "master"
43
+ when: never
44
+ - if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
45
+ when: never
46
+ - if: $CI_COMMIT_REF_NAME == "release_0.12.2"
47
+ when: never
48
+ # Second case: env should be generated on a dev branch, create a temporary
49
+ # image
50
+ - local: '/ci/cars-docker-build.yml'
51
+ inputs:
52
+ tag: ${CI_COMMIT_REF_NAME}
53
+ rules:
54
+ - changes:
55
+ - "ci/cars-deps-env/Dockerfile"
56
+ - "pyproject.toml"
57
+ # do not trigger this case on master (see third case)
58
+ - if: $CI_COMMIT_REF_NAME == "master"
59
+ when: never
60
+ - if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
61
+ - if: $CI_COMMIT_REF_NAME == "release_0.12.2"
62
+ # Third case: master branch pipeline: generate a "latest" image
63
+ - local: '/ci/cars-docker-build.yml'
64
+ inputs:
65
+ tag: "latest"
66
+ rules:
67
+ - if: $CI_COMMIT_REF_NAME == "master"
68
+
69
+ # Common part for jobs using python: use env image and install cars
70
+ .cars-python-job:
71
+ image: ${UL_ARTIFACTORY_HOST}/${CARS_ENV_IMAGE_NAME}:${CARS_ENV_IMAGE_TAG}
72
+ before_script:
73
+ - source /app/cars/venv/bin/activate
74
+ # All dependencies should already be installed in the docker env
75
+ - pip install --no-build-isolation --editable .[dev,docs,notebook]
76
+
77
+
78
+ # run unit tests before other tasks (lint, quality, end2end ...) to catch early
79
+ # errors
80
+ unit-test:
81
+ stage: test
82
+ extends:
83
+ - .cars-python-job
84
+ script:
85
+ - CARS_VENV="/app/cars/venv" make test/ci
86
+ artifacts:
87
+ paths:
88
+ - ./pytest-report.xml
89
+ - ./coverage.xml
90
+ expire_in: 1 day
91
+
92
+
93
+ # Job testing that notebooks run properly in Python
94
+ test-notebooks:
95
+ stage: test
96
+ needs:
97
+ - unit-test
98
+ extends:
99
+ - .cars-python-job
100
+ script:
101
+ # Install additional plugin dependencies required for the tests
102
+ - source /app/cars/venv/bin/activate
103
+ - pip install --no-build-isolation --editable .[pandora_mccnn,bundleadjustment]
104
+ - CARS_VENV="/app/cars/venv" make test/notebook
105
+
106
+ # test on full cars pipelines
107
+ test-end2end:
108
+ stage: test
109
+ needs:
110
+ - unit-test
111
+ # Use dedicated runner for end2end tests
112
+ tags:
113
+ - ${TEST_RUNNER_TAG}
114
+ timeout: 80 minutes
115
+ extends:
116
+ - .cars-python-job
117
+ script:
118
+ - source /app/cars/venv/bin/activate
119
+ - pytest -m "end2end_tests"
120
+ artifacts:
121
+ paths:
122
+ - tests/data/intermediate_data
123
+ when: always
124
+ expire_in: 1 day
125
+
126
+
127
+
128
+ # All lint tasks are performed in the same job to save up on job initialization
129
+ # time
130
+ lint:
131
+ stage: test
132
+ needs:
133
+ - unit-test
134
+ extends:
135
+ - .cars-python-job
136
+ allow_failure: true
137
+ script:
138
+ - CARS_VENV="/app/cars/venv" make lint
139
+ artifacts:
140
+ paths:
141
+ - ./pylint-report.txt
142
+ expire_in: 1 day
143
+
144
+
145
+ doc:
146
+ stage: test
147
+ needs:
148
+ - unit-test
149
+ extends:
150
+ - .cars-python-job
151
+ script:
152
+ - CARS_VENV="/app/cars/venv" make docs
153
+ artifacts:
154
+ # Export documentation in artifact, it can be opened directly from gitlab
155
+ paths:
156
+ - ./docs/build/html/
157
+ expire_in: 1 day
158
+
159
+
160
+ # Push git project from gitlab to github
161
+ github-sync:
162
+ extends:
163
+ - .github-sync-base
164
+
165
+ variables:
166
+ BRANCH: "master"
167
+ GITHUB_URL: github.com/CNES/cars.git
168
+
169
+
170
+ # Push git project from gitlab to github for the 0.12.X versions
171
+ github-sync-0.12:
172
+ extends:
173
+ - .github-sync-base
174
+
175
+ variables:
176
+ BRANCH: "cars_0_12_patches"
177
+ GITHUB_URL: github.com/CNES/cars.git
178
+ rules:
179
+ - if: $CI_COMMIT_REF_NAME == "cars_0_12_patches"
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.2 Bugfix release (October 2025)
4
+
5
+ - Fix a bug where the DEM min was higher than DEM max in dem generation [#1211]
6
+
7
+
8
+ ## 0.12.1 Bugfix release (August 2025)
9
+
10
+ - Cleanup sequential orchestrator [#1123].
11
+ - Fix missing tiles in auxiliary filling outputs [#1061].
12
+ - Fix classification fusion artifacts in dense matching [#1109].
13
+
14
+
3
15
  ## 0.12.0 Improving Dem generations (June 2025)
4
16
 
5
17
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cars
3
- Version: 0.12.0rc2
3
+ Version: 0.12.2
4
4
  Summary: A satellite multi view stereo pipeline
5
5
  Keywords: cars,3D,DEM,pandora,photogrammetry
6
6
  Author-Email: CNES <cars@cnes.fr>
@@ -483,7 +483,7 @@ def compute_sensor_bounds(sensor_inputs, geom_plugin, output_epsg):
483
483
  if reference_sensor_image is None:
484
484
  continue
485
485
 
486
- u_l, u_r, l_r, l_l = geom_plugin.image_envelope(
486
+ u_l, u_r, l_l, l_r = geom_plugin.image_envelope(
487
487
  reference_sensor_image, sensor["geomodel"]
488
488
  )
489
489
 
@@ -444,6 +444,8 @@ class DichotomicGeneration(DemGeneration, short_name="dichotomic"):
444
444
 
445
445
  # Save
446
446
  self.orchestrator.breakpoint()
447
+ # cleanup
448
+ self.orchestrator.cleanup()
447
449
 
448
450
  # after saving, fit initial elevation if required
449
451
  if initial_elevation is not None and self.coregistration:
@@ -453,6 +453,8 @@ class Rasterization(DemGeneration, short_name="bulldozer_on_raster"):
453
453
 
454
454
  # Save
455
455
  self.orchestrator.breakpoint()
456
+ # cleanup
457
+ self.orchestrator.cleanup()
456
458
 
457
459
  if self.save_intermediate_data:
458
460
  intermediate_dem_min_path = os.path.join(
@@ -550,6 +552,13 @@ class Rasterization(DemGeneration, short_name="bulldozer_on_raster"):
550
552
  dem_data + self.max_height_margin,
551
553
  dem_max,
552
554
  )
555
+ # Rectify pixels where DEM min > DEM max - margin, to ensure that
556
+ # DEM min < DEM max even on filled pixels
557
+ dem_min = np.where(
558
+ dem_min > dem_max - self.min_height_margin,
559
+ dem_max - self.min_height_margin,
560
+ dem_min,
561
+ )
553
562
 
554
563
  with rio.open(dem_min_path, "w", **dem_min_metadata) as out_dem:
555
564
  out_dem.write(dem_min)
@@ -110,6 +110,10 @@ class CensusMccnnSgm(
110
110
  # Ambiguity
111
111
  self.generate_ambiguity = self.used_config["generate_ambiguity"]
112
112
 
113
+ self.classification_fusion_margin = self.used_config[
114
+ "classification_fusion_margin"
115
+ ]
116
+
113
117
  # Margins computation parameters
114
118
  # Use local disp
115
119
  self.use_global_disp_range = self.used_config["use_global_disp_range"]
@@ -175,6 +179,11 @@ class CensusMccnnSgm(
175
179
  overloaded_conf["epipolar_tile_margin_in_percent"] = conf.get(
176
180
  "epipolar_tile_margin_in_percent", 60
177
181
  )
182
+
183
+ overloaded_conf["classification_fusion_margin"] = conf.get(
184
+ "classification_fusion_margin", -1
185
+ )
186
+
178
187
  overloaded_conf["min_elevation_offset"] = conf.get(
179
188
  "min_elevation_offset", None
180
189
  )
@@ -321,6 +330,7 @@ class CensusMccnnSgm(
321
330
  "perf_eta_max_ambiguity": float,
322
331
  "perf_eta_max_risk": float,
323
332
  "perf_eta_step": float,
333
+ "classification_fusion_margin": int,
324
334
  "perf_ambiguity_threshold": float,
325
335
  "use_cross_validation": Or(bool, str),
326
336
  "denoise_disparity_map": bool,
@@ -1141,6 +1151,8 @@ class CensusMccnnSgm(
1141
1151
  logging.error("grid min > grid max in {}".format(pair_folder))
1142
1152
  raise RuntimeError("grid min > grid max in {}".format(pair_folder))
1143
1153
 
1154
+ # cleanup
1155
+ grid_orchestrator.cleanup()
1144
1156
  return grid_disp_range
1145
1157
 
1146
1158
  def run(
@@ -1412,6 +1424,9 @@ class CensusMccnnSgm(
1412
1424
  epipolar_disparity_map.overlaps[row, col]
1413
1425
  ),
1414
1426
  margins_to_keep=margins_to_keep,
1427
+ classification_fusion_margin=(
1428
+ self.classification_fusion_margin
1429
+ ),
1415
1430
  )
1416
1431
 
1417
1432
  else:
@@ -1432,6 +1447,7 @@ def compute_disparity_wrapper(
1432
1447
  crop_with_range=None,
1433
1448
  left_overlaps=None,
1434
1449
  margins_to_keep=0,
1450
+ classification_fusion_margin=-1,
1435
1451
  ) -> Dict[str, Tuple[xr.Dataset, xr.Dataset]]:
1436
1452
  """
1437
1453
  Compute disparity maps from image objects.
@@ -1473,6 +1489,8 @@ def compute_disparity_wrapper(
1473
1489
  :type: left_overlaps: dict
1474
1490
  :param margins_to_keep: margin to keep after dense matching
1475
1491
  :type margins_to_keep: int
1492
+ :param classification_fusion_margin: the margin to add for the fusion
1493
+ :type classification_fusion_margin: int
1476
1494
 
1477
1495
 
1478
1496
  :return: Left to right disparity dataset
@@ -1536,6 +1554,7 @@ def compute_disparity_wrapper(
1536
1554
  compute_disparity_masks=compute_disparity_masks,
1537
1555
  cropped_range=mask_crop,
1538
1556
  margins_to_keep=margins_to_keep,
1557
+ classification_fusion_margin=classification_fusion_margin,
1539
1558
  )
1540
1559
 
1541
1560
  # Fill with attributes
@@ -6,7 +6,12 @@ this module contains the headers of the dense_matching_cpp module.
6
6
 
7
7
 
8
8
  def estimate_right_classif_on_left(
9
- right_classif, disp_map, disp_mask, disp_min, disp_max
9
+ right_classif,
10
+ disp_map,
11
+ disp_mask,
12
+ disp_min,
13
+ disp_max,
14
+ classification_fusion_margin=-1,
10
15
  ):
11
16
  """
12
17
  Estimate right classif on left image
@@ -29,7 +34,11 @@ def estimate_right_classif_on_left(
29
34
 
30
35
 
31
36
  def mask_left_classif_from_right_mask(
32
- left_classif, right_mask, disp_min, disp_max
37
+ left_classif,
38
+ right_mask,
39
+ disp_min,
40
+ disp_max,
41
+ classification_fusion_margin=-1,
33
42
  ):
34
43
  """
35
44
  Mask left classif with right mask.
@@ -22,7 +22,8 @@ py::array_t<bool> estimate_right_classif_on_left(
22
22
  py::array_t<float> disp_map,
23
23
  std::optional<py::array_t<bool>> disp_mask,
24
24
  int disp_min,
25
- int disp_max
25
+ int disp_max,
26
+ int classification_fusion_margin
26
27
  );
27
28
 
28
29
  /**
@@ -38,7 +39,8 @@ py::array_t<bool> mask_left_classif_from_right_mask(
38
39
  py::array_t<bool> left_classif,
39
40
  py::array_t<bool> right_mask,
40
41
  py::array_t<int> disp_min,
41
- py::array_t<int> disp_max
42
+ py::array_t<int> disp_max,
43
+ int classification_fusion_margin
42
44
  );
43
45
 
44
46
  /**
@@ -11,7 +11,8 @@ py::array_t<bool> estimate_right_classif_on_left(
11
11
  py::array_t<float> disp_map,
12
12
  std::optional<py::array_t<bool>> disp_mask,
13
13
  int disp_min,
14
- int disp_max
14
+ int disp_max,
15
+ int classification_fusion_margin
15
16
  ) {
16
17
  auto r_right_classif = right_classif.unchecked<3>();
17
18
  auto r_disp_map = disp_map.unchecked<2>();
@@ -53,11 +54,20 @@ py::array_t<bool> estimate_right_classif_on_left(
53
54
 
54
55
  // else: estimate with global range
55
56
  for (size_t band = 0; band < n_bands; band++) {
56
-
57
+
57
58
  bool found = false;
59
+ int margin_min = disp_min;
60
+ int margin_max = disp_max;
61
+ if (classification_fusion_margin != -1) {
62
+ margin_min = -classification_fusion_margin;
63
+ margin_max = classification_fusion_margin;
64
+ }
58
65
  for (
59
- size_t col_classif = std::max(0, static_cast<int>(col)+disp_min);
60
- col_classif < std::min(static_cast<int>(n_col), static_cast<int>(col)+disp_max);
66
+ size_t col_classif = std::max(0, static_cast<int>(col)+margin_min);
67
+ col_classif < std::min(
68
+ static_cast<int>(n_col),
69
+ static_cast<int>(col)+margin_max
70
+ );
61
71
  col_classif++
62
72
  ) {
63
73
  if (r_right_classif(band, row, col_classif)) {
@@ -74,11 +84,13 @@ py::array_t<bool> estimate_right_classif_on_left(
74
84
  return left_from_right_classif;
75
85
  }
76
86
 
87
+
77
88
  py::array_t<bool> mask_left_classif_from_right_mask(
78
89
  py::array_t<bool> left_classif,
79
90
  py::array_t<bool> right_mask,
80
91
  py::array_t<int> disp_min,
81
- py::array_t<int> disp_max
92
+ py::array_t<int> disp_max,
93
+ int classification_fusion_margin
82
94
  ) {
83
95
 
84
96
  auto rw_left_classif = left_classif.mutable_unchecked<3>();
@@ -95,10 +107,16 @@ py::array_t<bool> mask_left_classif_from_right_mask(
95
107
 
96
108
  // estimate with global range
97
109
  bool all_masked = true;
98
- size_t lower_bound = std::max(0, static_cast<int>(col)+r_disp_min(row, col));
110
+ int margin_min = r_disp_min(row, col);
111
+ int margin_max = r_disp_max(row, col);
112
+ if (classification_fusion_margin != -1) {
113
+ margin_min = -classification_fusion_margin;
114
+ margin_max = classification_fusion_margin;
115
+ }
116
+ size_t lower_bound = std::max(0, static_cast<int>(col)+margin_min);
99
117
  size_t upper_bound = std::min(
100
118
  static_cast<int>(n_col),
101
- static_cast<int>(col)+r_disp_max(row, col)
119
+ static_cast<int>(col)+margin_max
102
120
  );
103
121
  for (size_t col_classif = lower_bound; col_classif < upper_bound; col_classif++) {
104
122
  if (!r_right_mask(row, col_classif)) {
@@ -296,6 +296,7 @@ def create_disp_dataset( # noqa: C901
296
296
  disp_max_grid=None,
297
297
  cropped_range=None,
298
298
  margins_to_keep=0,
299
+ classification_fusion_margin=-1,
299
300
  ) -> xr.Dataset:
300
301
  """
301
302
  Create the disparity dataset.
@@ -393,6 +394,7 @@ def create_disp_dataset( # noqa: C901
393
394
  epi_msk_right == msk_cst.NO_DATA_IN_EPIPOLAR_RECTIFICATION,
394
395
  np.floor(disp_min_grid).astype(np.int16),
395
396
  np.ceil(disp_max_grid).astype(np.int16),
397
+ classification_fusion_margin,
396
398
  )
397
399
 
398
400
  left_from_right_classif = None
@@ -407,6 +409,7 @@ def create_disp_dataset( # noqa: C901
407
409
  pandora_masks[cst_disp.VALID],
408
410
  int(np.floor(np.min(disp_min_grid))),
409
411
  int(np.ceil(np.max(disp_max_grid))),
412
+ classification_fusion_margin,
410
413
  )
411
414
 
412
415
  # mask outside left sensor
@@ -511,7 +514,12 @@ def add_crop_info(disp_ds, cropped_range):
511
514
 
512
515
 
513
516
  def estimate_right_classif_on_left(
514
- right_classif, disp_map, disp_mask, disp_min, disp_max
517
+ right_classif,
518
+ disp_map,
519
+ disp_mask,
520
+ disp_min,
521
+ disp_max,
522
+ classifiation_fusion_margin,
515
523
  ):
516
524
  """
517
525
  Estimate right classif on left image
@@ -531,12 +539,21 @@ def estimate_right_classif_on_left(
531
539
  :rtype: np nadarray
532
540
  """
533
541
  return dense_matching_cpp.estimate_right_classif_on_left(
534
- right_classif, disp_map, disp_mask, disp_min, disp_max
542
+ right_classif,
543
+ disp_map,
544
+ disp_mask,
545
+ disp_min,
546
+ disp_max,
547
+ classifiation_fusion_margin,
535
548
  )
536
549
 
537
550
 
538
551
  def mask_left_classif_from_right_mask(
539
- left_classif, right_mask, disp_min, disp_max
552
+ left_classif,
553
+ right_mask,
554
+ disp_min,
555
+ disp_max,
556
+ classifiation_fusion_margin,
540
557
  ):
541
558
  """
542
559
  Mask left classif with right mask.
@@ -554,7 +571,11 @@ def mask_left_classif_from_right_mask(
554
571
  :rtype: np nadarray
555
572
  """
556
573
  return dense_matching_cpp.mask_left_classif_from_right_mask(
557
- left_classif, right_mask, disp_min, disp_max
574
+ left_classif,
575
+ right_mask,
576
+ disp_min,
577
+ disp_max,
578
+ classifiation_fusion_margin,
558
579
  )
559
580
 
560
581
 
@@ -731,6 +752,7 @@ def compute_disparity(
731
752
  compute_disparity_masks=False,
732
753
  cropped_range=None,
733
754
  margins_to_keep=0,
755
+ classification_fusion_margin=-1,
734
756
  ) -> Dict[str, xr.Dataset]:
735
757
  """
736
758
  This function will compute disparity.
@@ -753,6 +775,8 @@ def compute_disparity(
753
775
  :type cropped_range: numpy array
754
776
  :param margins_to_keep: margin to keep after dense matching
755
777
  :type margins_to_keep: int
778
+ :param classification_fusion_margin: the margin to add for the fusion
779
+ :type classification_fusion_margin: int
756
780
 
757
781
  :return: Disparity dataset
758
782
  """
@@ -839,6 +863,7 @@ def compute_disparity(
839
863
  disp_max_grid=disp_max_grid,
840
864
  cropped_range=cropped_range,
841
865
  margins_to_keep=margins_to_keep,
866
+ classification_fusion_margin=classification_fusion_margin,
842
867
  )
843
868
 
844
869
  return disp_dataset
@@ -605,6 +605,22 @@ class Orchestrator:
605
605
  # reset registries
606
606
  self.reset_registries()
607
607
 
608
+ def cleanup(self):
609
+ """
610
+ Cleanup orchestrator
611
+
612
+ """
613
+
614
+ # close cluster
615
+ logging.info("Close cluster ...")
616
+ if self.launch_worker:
617
+ self.cluster.cleanup()
618
+
619
+ # # clean tmp dir
620
+ for tmp_dir in self.tmp_dir_list:
621
+ if tmp_dir is not None and os.path.exists(tmp_dir):
622
+ shutil.rmtree(tmp_dir)
623
+
608
624
  def __enter__(self):
609
625
  """
610
626
  Function run on enter
@@ -630,15 +646,8 @@ class Orchestrator:
630
646
 
631
647
  # TODO : check_json
632
648
 
633
- # close cluster
634
- logging.info("Close cluster ...")
635
- if self.launch_worker:
636
- self.cluster.cleanup()
637
-
638
- # # clean tmp dir
639
- for tmp_dir in self.tmp_dir_list:
640
- if tmp_dir is not None and os.path.exists(tmp_dir):
641
- shutil.rmtree(tmp_dir)
649
+ # cleanup
650
+ self.cleanup()
642
651
 
643
652
 
644
653
  def merge_dicts(dict1, dict2):
@@ -0,0 +1,35 @@
1
+ ARG BASE_IMAGE
2
+
3
+ FROM ${BASE_IMAGE}
4
+
5
+ ARG PIP_INDEX_URL
6
+
7
+ WORKDIR /app/cars
8
+
9
+ # The Dockerfile only use pyproject.toml to build the environment image
10
+ COPY pyproject.toml .
11
+
12
+ COPY certs certs
13
+
14
+ # for pip
15
+ ENV PIP_CERT="/app/cars/certs/ca-bundle.crt"
16
+
17
+ # for uv
18
+ ENV SSL_CERT_FILE="/app/cars/certs/ca-bundle.crt"
19
+ ENV UV_DEFAULT_INDEX="${PIP_INDEX_URL}"
20
+
21
+ # install uv which will then be used to find and install dependencies
22
+ RUN pip install uv
23
+
24
+ # Generate a requirements.txt file from pyproject.toml containing cars dependencies
25
+ # without having to compile and install cars
26
+ RUN uv pip compile pyproject.toml --extra dev \
27
+ --extra notebook \
28
+ --extra docs \
29
+ --output-file requirements.txt
30
+
31
+ # uv variable defining default env
32
+ ENV VIRTUAL_ENV=/app/cars/venv
33
+
34
+ # Install cars requirements
35
+ RUN uv venv ${VIRTUAL_ENV} && uv pip install --no-cache meson-python meson ninja setuptools_scm setuptools wheel pybind11 -r requirements.txt
@@ -0,0 +1,37 @@
1
+ spec:
2
+ inputs:
3
+ tag:
4
+ ---
5
+
6
+ variables:
7
+ # CARS environment image configuration
8
+ DOCKERFILE: "ci/cars-deps-env/Dockerfile"
9
+ CARS_ENV_IMAGE_NAME: "${CARS_DOCKER_REGISTRY}/cars-deps-env"
10
+ #CARS_ENV_IMAGE_TAG: "latest"
11
+ CARS_ENV_DOCKERFILE: "${CI_PROJECT_DIR}/${DOCKERFILE}"
12
+ CARS_ENV_IMAGE_TAG: "$[[ inputs.tag ]]"
13
+
14
+ # Jobs building cars-deps-env docker image
15
+ include:
16
+ - component: $CI_SERVER_FQDN/dali/cars-park/cars-ci/cars-ci-docker@master
17
+ inputs:
18
+ init_stage: init
19
+ build_stage: build
20
+
21
+ # Build cars env
22
+ cars-dep-env-build:
23
+ extends:
24
+ - .kaniko_build
25
+ variables:
26
+ # docker generation
27
+ ENV_IMAGE_NAME: "${CARS_ENV_IMAGE_NAME}"
28
+ ENV_IMAGE_TAG: "${CARS_ENV_IMAGE_TAG}"
29
+ ENV_DOCKERFILE: "${CARS_ENV_DOCKERFILE}"
30
+ DOCKER_BUILD_OPTIONS: "--build-arg PIP_INDEX_URL=${PIP_INDEX_URL} --build-arg BASE_IMAGE=${PYTHON_IMAGE}"
31
+
32
+ # Set variables for templated hadolint build
33
+ hadolint:
34
+ variables:
35
+ HADOLINT_CONFIG_FILE: ci/hadolint_RNC_A_B_C_D.yaml
36
+ ENV_DOCKERFILE: "${CARS_ENV_DOCKERFILE}"
37
+ allow_failure: true
@@ -0,0 +1,7 @@
1
+ variables:
2
+ CARS_ENV_IMAGE_TAG: latest
3
+ # CARS environment image configuration
4
+ DOCKERFILE: "ci/cars-deps-env/Dockerfile"
5
+ CARS_ENV_IMAGE_NAME: "cars-ci-docker-snapshot-local/cars-deps-env"
6
+ #CARS_ENV_IMAGE_TAG: "latest"
7
+ CARS_ENV_DOCKERFILE: "${CI_PROJECT_DIR}/${DOCKERFILE}"