mtlearn 1.2.1__tar.gz → 1.2.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.
Files changed (482) hide show
  1. {mtlearn-1.2.1 → mtlearn-1.2.2}/PKG-INFO +1 -1
  2. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_version.py +3 -3
  3. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_disk_preparation.py +4 -2
  4. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_identity.py +20 -12
  5. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_persistent_preparation.py +9 -3
  6. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_manifest.py +5 -2
  7. mtlearn-1.2.2/mtlearn/tests/python/test_cfp_cache_compatibility.py +101 -0
  8. {mtlearn-1.2.1 → mtlearn-1.2.2}/.github/workflows/ci.yml +0 -0
  9. {mtlearn-1.2.1 → mtlearn-1.2.2}/.github/workflows/docs.yml +0 -0
  10. {mtlearn-1.2.1 → mtlearn-1.2.2}/.github/workflows/notebooks.yml +0 -0
  11. {mtlearn-1.2.1 → mtlearn-1.2.2}/.github/workflows/package.yml +0 -0
  12. {mtlearn-1.2.1 → mtlearn-1.2.2}/.github/workflows/release.yml +0 -0
  13. {mtlearn-1.2.1 → mtlearn-1.2.2}/CMakeLists.txt +0 -0
  14. {mtlearn-1.2.1 → mtlearn-1.2.2}/LICENSE +0 -0
  15. {mtlearn-1.2.1 → mtlearn-1.2.2}/Pipfile +0 -0
  16. {mtlearn-1.2.1 → mtlearn-1.2.2}/README.md +0 -0
  17. {mtlearn-1.2.1 → mtlearn-1.2.2}/cmake/mtlearnConfig.cmake.in +0 -0
  18. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/assets/cfp-class-architecture.svg +0 -0
  19. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/cfp-architecture.md +0 -0
  20. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/cfp-loss-design.md +0 -0
  21. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/cfp-regularization-design.md +0 -0
  22. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/cfp-score-constraint-design.md +0 -0
  23. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/cfp-scoring-design.md +0 -0
  24. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/development.md +0 -0
  25. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/installation.md +0 -0
  26. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/_static/.gitkeep +0 -0
  27. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/_templates/.gitkeep +0 -0
  28. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/cfp_preparation.rst +0 -0
  29. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/data.rst +0 -0
  30. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/datasets.rst +0 -0
  31. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/index.rst +0 -0
  32. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/layers.rst +0 -0
  33. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/morphology.rst +0 -0
  34. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/api/python/native.rst +0 -0
  35. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/concepts/attributes.md +0 -0
  36. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/concepts/morphology.md +0 -0
  37. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/conf.py +0 -0
  38. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/guides/custom-attributes-filter-specs.md +0 -0
  39. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/guides/getting-started.md +0 -0
  40. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/guides/index.md +0 -0
  41. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/guides/morphology.md +0 -0
  42. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/guides/pytorch-integration.md +0 -0
  43. {mtlearn-1.2.1 → mtlearn-1.2.2}/docs/source/index.md +0 -0
  44. {mtlearn-1.2.1 → mtlearn-1.2.2}/environment.yml +0 -0
  45. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/.clang-format +0 -0
  46. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/.editorconfig +0 -0
  47. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/.gitattributes +0 -0
  48. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/CMakeLists.txt +0 -0
  49. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/LICENSE +0 -0
  50. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/README.md +0 -0
  51. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/CMakeLists.txt +0 -0
  52. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/README.md +0 -0
  53. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/adjacency_iteration_benchmark.cpp +0 -0
  54. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/analyze_scientific_experiment.py +0 -0
  55. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/analyze_tree_construction_comparison.py +0 -0
  56. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/ApiBenchmark.hpp +0 -0
  57. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/AttributeScenarios.cpp +0 -0
  58. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/CasfScenarios.cpp +0 -0
  59. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/ConstructionScenarios.cpp +0 -0
  60. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/EditingScenarios.cpp +0 -0
  61. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/FilterScenarios.cpp +0 -0
  62. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/InteroperabilityScenarios.cpp +0 -0
  63. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/PipelineScenarios.cpp +0 -0
  64. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/WorkloadManifest.cpp +0 -0
  65. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/api/api_benchmark.cpp +0 -0
  66. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/build_tree_construction_report.py +0 -0
  67. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/compare_validation_modes.py +0 -0
  68. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/distance_transform_sensitivity.py +0 -0
  69. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/distance_transform_timing.py +0 -0
  70. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/min_max_residual_tree_benchmark.cpp +0 -0
  71. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/python_api_benchmark.py +0 -0
  72. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/scientific_pipeline_benchmark.cpp +0 -0
  73. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/analyze_results.py +0 -0
  74. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/bitquad_benchmark.cpp +0 -0
  75. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/bitquad_exactness_validation.cpp +0 -0
  76. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/correctness.csv +0 -0
  77. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/dataset-manifest.csv +0 -0
  78. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/experiment.json +0 -0
  79. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/raw-1080p.csv +0 -0
  80. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/raw-480p.csv +0 -0
  81. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/raw-720p.csv +0 -0
  82. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/run-1080p.log +0 -0
  83. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/run-480p.log +0 -0
  84. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/run-720p.log +0 -0
  85. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/speedups.csv +0 -0
  86. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/summary.csv +0 -0
  87. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/reference-results/table.tex +0 -0
  88. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/sibgrapi2026/run_experiment.py +0 -0
  89. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/summarize_scientific_campaign.py +0 -0
  90. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/support/ScientificBenchmark.hpp +0 -0
  91. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/support/stb_image_read.cpp +0 -0
  92. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/tree_construction_comparison_benchmark.cpp +0 -0
  93. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/tree_validation_benchmark.cpp +0 -0
  94. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/validation-sensitive.md +0 -0
  95. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/validation_sensitive_algorithms_benchmark.cpp +0 -0
  96. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/workloads/distance-transform-contract.ini +0 -0
  97. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/benchmarks/workloads/scientific-api.ini +0 -0
  98. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/cmake/mmcfiltersConfig.cmake.in +0 -0
  99. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/cmake/mmcfiltersPublicHeaders.cmake +0 -0
  100. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/CMakeLists.txt +0 -0
  101. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/AttributeComputation.hpp +0 -0
  102. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/AttributeNames.hpp +0 -0
  103. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/AttributeRegistry.hpp +0 -0
  104. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/AttributeResultTypes.hpp +0 -0
  105. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/AttributeTypes.hpp +0 -0
  106. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/Attributes.hpp +0 -0
  107. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/AreaComputer.hpp +0 -0
  108. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/AttributeComputerDomain.hpp +0 -0
  109. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/AttributeComputerFamily.hpp +0 -0
  110. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/AttributeComputerRegistry.hpp +0 -0
  111. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/BitquadAttributeComputer.hpp +0 -0
  112. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/BoundingBoxComputer.hpp +0 -0
  113. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/ContourSideAttributeComputer.hpp +0 -0
  114. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/FilledShapeAttributeComputer.hpp +0 -0
  115. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/GrayLevelStatsComputer.hpp +0 -0
  116. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/MaxDistComputer.hpp +0 -0
  117. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/MaxDistExactComputer.hpp +0 -0
  118. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/MomentBasedAttributeComputer.hpp +0 -0
  119. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/TreeTopologyComputer.hpp +0 -0
  120. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/VolumeComputer.hpp +0 -0
  121. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/BitquadAttributeData.hpp +0 -0
  122. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/BitquadAttributeProjection.hpp +0 -0
  123. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/BitquadConnectivityPolicy.hpp +0 -0
  124. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/BitquadFiniteWindowComputation.hpp +0 -0
  125. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/ContourSideAttributeData.hpp +0 -0
  126. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/ContourSideAttributeMaterialization.hpp +0 -0
  127. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/ContourSideFiniteWindowComputation.hpp +0 -0
  128. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/DistanceFieldHistogram.hpp +0 -0
  129. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/DistanceFieldMoments.hpp +0 -0
  130. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/DistanceWeightedSpatialMoments.hpp +0 -0
  131. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/ExactSquaredEuclideanDistanceTransform2D.hpp +0 -0
  132. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/MorphologicalTreeDistanceTransform.hpp +0 -0
  133. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/NodeContourSchedule.hpp +0 -0
  134. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/NodeDistanceFieldProvider.hpp +0 -0
  135. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform/NodeSupportBoxIndex.hpp +0 -0
  136. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/AdaptiveSquaredEuclideanDIFT2D.hpp +0 -0
  137. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/DynamicDistanceFieldMoments2D.hpp +0 -0
  138. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/DynamicDistanceFieldStatistics2D.hpp +0 -0
  139. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/MorphologicalTreeApproximateDistanceTransform.hpp +0 -0
  140. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/MorphologicalTreePropagationEdgeIndex.hpp +0 -0
  141. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/MorphologicalTreeTopologicalLevelIndex.hpp +0 -0
  142. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/computers/detail/distance_transform_approx/SquaredDistanceBucketQueue.hpp +0 -0
  143. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeCapabilityValidation.hpp +0 -0
  144. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeDependencyCache.hpp +0 -0
  145. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeFamilyScheduler.hpp +0 -0
  146. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeKernelSupport.hpp +0 -0
  147. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeNumericPolicy.hpp +0 -0
  148. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributePipeline.hpp +0 -0
  149. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeProjection.hpp +0 -0
  150. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/AttributeRequestUtils.hpp +0 -0
  151. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/NodeAttributeSampleMaterialization.hpp +0 -0
  152. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/attributes/detail/TopologyAttributeBackend.hpp +0 -0
  153. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/ContourComputation.hpp +0 -0
  154. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/ContourTrace.hpp +0 -0
  155. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/ContourTraceComputation.hpp +0 -0
  156. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/ContourBoundaryTracer.hpp +0 -0
  157. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/ContourEdgeDeltaStore.hpp +0 -0
  158. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/ContourLifetimeIndex.hpp +0 -0
  159. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/ContourTraceTraversal.hpp +0 -0
  160. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/ContourTraversal.hpp +0 -0
  161. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/contours/detail/NodeSupportIndex.hpp +0 -0
  162. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/dataStructure/FastQueue.hpp +0 -0
  163. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/dataStructure/FastStack.hpp +0 -0
  164. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/AttributeFilters.hpp +0 -0
  165. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/AttributeReconstructionFilters.hpp +0 -0
  166. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/DepthStableRegionComputer.hpp +0 -0
  167. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/ExtinctionValues.hpp +0 -0
  168. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/MSERComputer.hpp +0 -0
  169. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/NodeDecisionMasks.hpp +0 -0
  170. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/NodePreservationStability.hpp +0 -0
  171. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/UltimateAttributeOpening.hpp +0 -0
  172. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/detail/VariationMeasure.hpp +0 -0
  173. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/filters/detail/ViterbiDecision.hpp +0 -0
  174. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/localAttributes/ConnectedSubsetTreeLocalizer.hpp +0 -0
  175. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/localAttributes/FiniteWindowLocalAttributeComputer.hpp +0 -0
  176. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/localAttributes/FiniteWindowLocalEventCompiler.hpp +0 -0
  177. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/localAttributes/LocalEventModel.hpp +0 -0
  178. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/MorphologicalTree.hpp +0 -0
  179. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/MorphologicalTreeFactory.hpp +0 -0
  180. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/MorphologicalTreeSemantics.hpp +0 -0
  181. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/NativeHierarchy.hpp +0 -0
  182. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/ProperPartDomain.hpp +0 -0
  183. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/TreeAltitudeAlgorithms.hpp +0 -0
  184. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/TreeEditor.hpp +0 -0
  185. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/TreeOfShapesProducer.hpp +0 -0
  186. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/ValuedMorphologicalTree.hpp +0 -0
  187. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/ValuedMorphologicalTreeView.hpp +0 -0
  188. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/adjust/CasfComponentTrees.hpp +0 -0
  189. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/adjust/DualMinMaxTreeIncrementalFilter.hpp +0 -0
  190. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/adjust/DualMinMaxTreeIncrementalFilterLeaf.hpp +0 -0
  191. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/adjust/DynamicTreeAttributeComputer.hpp +0 -0
  192. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/CommittedTreeAccess.hpp +0 -0
  193. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/ComponentTreeProducerDetail.hpp +0 -0
  194. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/ComponentTreeUnionFind.hpp +0 -0
  195. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/HierarchyCapabilityValidation.hpp +0 -0
  196. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/HigraExportLayoutDetail.hpp +0 -0
  197. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/HigraHierarchyAdapterDetail.hpp +0 -0
  198. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/HigraImportLayoutDetail.hpp +0 -0
  199. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/MorphologicalTreeConstructionContextQueries.hpp +0 -0
  200. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/MorphologicalTreeConstructionTag.hpp +0 -0
  201. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/NativeHierarchyValidationDetail.hpp +0 -0
  202. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/TreeAttributeSamplingNeighborhood.hpp +0 -0
  203. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/TreeStabilityNeighborhood.hpp +0 -0
  204. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/detail/TreeTraversalDetail.hpp +0 -0
  205. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/saliency/HierarchicalWatershedSaliency.hpp +0 -0
  206. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/saliency/HierarchySaliencyMap.hpp +0 -0
  207. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/saliency/HierarchySaliencyMapProjection.hpp +0 -0
  208. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/saliency/HierarchySaliencyMapValidation.hpp +0 -0
  209. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/saliency/ShapeSpaceSaliency.hpp +0 -0
  210. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/ResidualEvolution.hpp +0 -0
  211. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/ResidualTreeBuildStatistics.hpp +0 -0
  212. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/ResidualTreePolicies.hpp +0 -0
  213. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/SaturatedResidualTreeBuilder.hpp +0 -0
  214. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/UnrestrictedResidualTreeBuilder.hpp +0 -0
  215. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/FlatZonePartition.hpp +0 -0
  216. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeCandidateAgenda.hpp +0 -0
  217. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeCandidateContext.hpp +0 -0
  218. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeCandidatePreparation.hpp +0 -0
  219. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeCandidateTypes.hpp +0 -0
  220. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeEventAssembler.hpp +0 -0
  221. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeMaterialization.hpp +0 -0
  222. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/ResidualTreeRegionTypes.hpp +0 -0
  223. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/SaturatedDynamicLca.hpp +0 -0
  224. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/SaturatedResidualEligibility.hpp +0 -0
  225. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/trees/sdrt/detail/SynchronizedResidualTreeEvolution.hpp +0 -0
  226. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/Altitude.hpp +0 -0
  227. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/Assert.hpp +0 -0
  228. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/CommittedGridAccess.hpp +0 -0
  229. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/CommittedImageAccess.hpp +0 -0
  230. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/Common.hpp +0 -0
  231. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/Contract.hpp +0 -0
  232. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/GenerationStampSet.hpp +0 -0
  233. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/Image.hpp +0 -0
  234. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/mmcfilters/utils/RegularGridAdjacency2D.hpp +0 -0
  235. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/AdjustBindings.cpp +0 -0
  236. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/AttributeBindings.cpp +0 -0
  237. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/AttributeComputationBindings.hpp +0 -0
  238. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/AttributeFiltersPybind.hpp +0 -0
  239. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/AttributeReconstructionFiltersPybind.hpp +0 -0
  240. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/ContourBindings.cpp +0 -0
  241. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/ContourTraceBindings.cpp +0 -0
  242. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/DepthStableRegionComputerPybind.hpp +0 -0
  243. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/ExtinctionValuesPybind.hpp +0 -0
  244. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/FilterBindings.cpp +0 -0
  245. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/ModuleBindings.hpp +0 -0
  246. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/PybindConversions.hpp +0 -0
  247. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/PythonValuedMorphologicalTree.hpp +0 -0
  248. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/TreeBindings.cpp +0 -0
  249. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/UltimateAttributeOpeningPybind.hpp +0 -0
  250. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/pybinds/UtilityBindings.cpp +0 -0
  251. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/scripts/execute_notebooks.py +0 -0
  252. {mtlearn-1.2.1 → mtlearn-1.2.2}/external/mmcfilters/scripts/validate_notebooks.py +0 -0
  253. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/CMakeLists.txt +0 -0
  254. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/MtlearnModule.cpp +0 -0
  255. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/cfp/TreeTensorsBinding.hpp +0 -0
  256. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/cfp/TreeTraversalBinding.hpp +0 -0
  257. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/morphology/AttributeBinding.hpp +0 -0
  258. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/morphology/AttributeFiltersBinding.hpp +0 -0
  259. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/morphology/BindingSupport.hpp +0 -0
  260. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/bindings/morphology/WeightedTreeBinding.hpp +0 -0
  261. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/include/mtlearn/detail/morphology_backend.hpp +0 -0
  262. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/include/mtlearn/morphology.hpp +0 -0
  263. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/__init__.py +0 -0
  264. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_backends/__init__.py +0 -0
  265. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_backends/_mtlearn.py +0 -0
  266. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/__init__.py +0 -0
  267. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/_explicit_pairs.py +0 -0
  268. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/_generated_target.py +0 -0
  269. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/_image_ops.py +0 -0
  270. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/_paired_image.py +0 -0
  271. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_datasets/_split.py +0 -0
  272. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/_native.py +0 -0
  273. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/data.py +0 -0
  274. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/datasets.py +0 -0
  275. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/__init__.py +0 -0
  276. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/_helpers.py +0 -0
  277. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/__init__.py +0 -0
  278. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/component_registries.py +0 -0
  279. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/connected_filter_preprocessing_layer.py +0 -0
  280. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/constraints/__init__.py +0 -0
  281. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/constraints/base.py +0 -0
  282. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/constraints/preserve_root.py +0 -0
  283. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/normalization/__init__.py +0 -0
  284. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/normalization/attribute_normalizer.py +0 -0
  285. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/normalization/attribute_statistics.py +0 -0
  286. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/normalization/statistics_snapshot.py +0 -0
  287. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/normalization/stats_serializer.py +0 -0
  288. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/__init__.py +0 -0
  289. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_calibration_measurement.py +0 -0
  290. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_loader_memory.py +0 -0
  291. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_parallel_preparation.py +0 -0
  292. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_preparation_progress.py +0 -0
  293. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_prepared_reader.py +0 -0
  294. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_process_reader.py +0 -0
  295. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_read_diagnostics.py +0 -0
  296. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_reader_process.py +0 -0
  297. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_shared_batch.py +0 -0
  298. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_statistics_fitter.py +0 -0
  299. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/_threaded_reader.py +0 -0
  300. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/calibration.py +0 -0
  301. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/cfp_preprocessor.py +0 -0
  302. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/dataset_cache.py +0 -0
  303. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/dataset_diagnostics.py +0 -0
  304. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/dataset_source.py +0 -0
  305. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/preparation_result.py +0 -0
  306. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/prepared_batch.py +0 -0
  307. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/prepared_dataloader.py +0 -0
  308. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/prepared_dataset.py +0 -0
  309. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/preparation/prepared_morphology.py +0 -0
  310. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/__init__.py +0 -0
  311. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/_tree_info.py +0 -0
  312. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/attribute_order_score_monotonicity.py +0 -0
  313. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/base.py +0 -0
  314. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/edge_score_monotonicity.py +0 -0
  315. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/regularization/path_score_monotonicity.py +0 -0
  316. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/__init__.py +0 -0
  317. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/_prepared_lifetime.py +0 -0
  318. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/batch_input.py +0 -0
  319. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/cache_input_contract.py +0 -0
  320. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/cached_dataloader_builder.py +0 -0
  321. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/context.py +0 -0
  322. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/forward_executor.py +0 -0
  323. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/implicit_jacobian_function.py +0 -0
  324. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/training_sample_inspector.py +0 -0
  325. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/tree_payload_cache.py +0 -0
  326. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/tree_payload_provider.py +0 -0
  327. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/runtime/tree_reconstructor.py +0 -0
  328. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/scoring/__init__.py +0 -0
  329. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/scoring/_layer_owned_linear_parameter_initializer.py +0 -0
  330. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/scoring/base.py +0 -0
  331. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/scoring/linear_sigmoid.py +0 -0
  332. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/scoring/mlp.py +0 -0
  333. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/serialization/__init__.py +0 -0
  334. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/serialization/config_deserializer.py +0 -0
  335. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/serialization/config_serializer.py +0 -0
  336. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/serialization/persistent_state_manager.py +0 -0
  337. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/__init__.py +0 -0
  338. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/feature_spec.py +0 -0
  339. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/filter_spec.py +0 -0
  340. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/filter_spec_normalizer.py +0 -0
  341. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/normalized_filter_spec.py +0 -0
  342. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/spec_registry.py +0 -0
  343. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/specs/tree_spec.py +0 -0
  344. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/__init__.py +0 -0
  345. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_disk_format.py +0 -0
  346. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_manifest_inspection.py +0 -0
  347. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_read_validation.py +0 -0
  348. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_storages.py +0 -0
  349. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/_writer_lock.py +0 -0
  350. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/disk_store.py +0 -0
  351. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/memory_store.py +0 -0
  352. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/cfp/storage/null_store.py +0 -0
  353. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/layers/checkpoint.py +0 -0
  354. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/python/mtlearn/morphology.py +0 -0
  355. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/src/CMakeLists.txt +0 -0
  356. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/src/mtlearn/cfp/tree_tensors.hpp +0 -0
  357. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/src/mtlearn/cfp/tree_traversal.hpp +0 -0
  358. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/src/mtlearn/morphology.cpp +0 -0
  359. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/CMakeLists.txt +0 -0
  360. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/cmake/installed_consumer_test.cmake +0 -0
  361. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/cpp/public_morphology.cpp +0 -0
  362. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/cpp/test_interpreter.cpp +0 -0
  363. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/_paired_dataset_reference.py +0 -0
  364. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/cfp_reference_names.py +0 -0
  365. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/README.md +0 -0
  366. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/baseline.pt +0 -0
  367. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/manifest.json +0 -0
  368. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_clipped_zscore01.pt +0 -0
  369. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_clipped_zscore01.stats.pt +0 -0
  370. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_minmax01.pt +0 -0
  371. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_minmax01.stats.pt +0 -0
  372. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_zscore.pt +0 -0
  373. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_dataset_zscore.stats.pt +0 -0
  374. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_none.pt +0 -0
  375. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_linear_none.stats.pt +0 -0
  376. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_clipped_zscore01.pt +0 -0
  377. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  378. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_minmax01.pt +0 -0
  379. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_minmax01.stats.pt +0 -0
  380. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_zscore.pt +0 -0
  381. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_dataset_zscore.stats.pt +0 -0
  382. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_none.pt +0 -0
  383. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/max-tree_mlp_none.stats.pt +0 -0
  384. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/min-tree_linear_dataset_clipped_zscore01.pt +0 -0
  385. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/min-tree_linear_dataset_clipped_zscore01.stats.pt +0 -0
  386. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/min-tree_mlp_dataset_clipped_zscore01.pt +0 -0
  387. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/min-tree_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  388. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/tree-of-shapes_linear_dataset_clipped_zscore01.pt +0 -0
  389. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/tree-of-shapes_linear_dataset_clipped_zscore01.stats.pt +0 -0
  390. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/tree-of-shapes_mlp_dataset_clipped_zscore01.pt +0 -0
  391. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0/tree-of-shapes_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  392. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/baseline.pt +0 -0
  393. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/manifest.json +0 -0
  394. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_clipped_zscore01.pt +0 -0
  395. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_clipped_zscore01.stats.pt +0 -0
  396. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_minmax01.pt +0 -0
  397. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_minmax01.stats.pt +0 -0
  398. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_zscore.pt +0 -0
  399. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_dataset_zscore.stats.pt +0 -0
  400. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_none.pt +0 -0
  401. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_linear_none.stats.pt +0 -0
  402. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_clipped_zscore01.pt +0 -0
  403. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  404. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_minmax01.pt +0 -0
  405. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_minmax01.stats.pt +0 -0
  406. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_zscore.pt +0 -0
  407. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_dataset_zscore.stats.pt +0 -0
  408. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_none.pt +0 -0
  409. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/max-tree_mlp_none.stats.pt +0 -0
  410. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/min-tree_linear_dataset_clipped_zscore01.pt +0 -0
  411. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/min-tree_linear_dataset_clipped_zscore01.stats.pt +0 -0
  412. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/min-tree_mlp_dataset_clipped_zscore01.pt +0 -0
  413. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/min-tree_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  414. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/tree-of-shapes_linear_dataset_clipped_zscore01.pt +0 -0
  415. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/tree-of-shapes_linear_dataset_clipped_zscore01.stats.pt +0 -0
  416. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/tree-of-shapes_mlp_dataset_clipped_zscore01.pt +0 -0
  417. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p0_mmcfilters_v5_2_0/tree-of-shapes_mlp_dataset_clipped_zscore01.stats.pt +0 -0
  418. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p1/statistics.json +0 -0
  419. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_cache_p5/notebook_before_p5.json +0 -0
  420. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_linear_sigmoid_max-tree.pt +0 -0
  421. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_linear_sigmoid_min-tree.pt +0 -0
  422. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_linear_sigmoid_tree-of-shapes.pt +0 -0
  423. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_mlp_max-tree.pt +0 -0
  424. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_mlp_min-tree.pt +0 -0
  425. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/legacy_mlp_tree-of-shapes.pt +0 -0
  426. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/manifest.json +0 -0
  427. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_linear_sigmoid_max-tree.pt +0 -0
  428. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_linear_sigmoid_min-tree.pt +0 -0
  429. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_linear_sigmoid_tree-of-shapes.pt +0 -0
  430. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_mlp_max-tree.pt +0 -0
  431. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_mlp_min-tree.pt +0 -0
  432. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/fixtures/cfp_disk_cache_e0/memory_mlp_tree-of-shapes.pt +0 -0
  433. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_bindings.py +0 -0
  434. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_cache.py +0 -0
  435. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_cache_baseline.py +0 -0
  436. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_cache_calibration.py +0 -0
  437. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_checkpoint_independence.py +0 -0
  438. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_components.py +0 -0
  439. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_dataset_cache.py +0 -0
  440. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_dataset_diagnostics.py +0 -0
  441. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_dataset_source.py +0 -0
  442. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_deterministic.py +0 -0
  443. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_disk_cache.py +0 -0
  444. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_disk_cache_e0.py +0 -0
  445. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_disk_cache_validation.py +0 -0
  446. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_disk_preparation_flow.py +0 -0
  447. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_jacobian_intervals.py +0 -0
  448. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_mps_reconstruction.py +0 -0
  449. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_notebook_cache_budget.py +0 -0
  450. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_notebook_streaming.py +0 -0
  451. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_parallel_preparation.py +0 -0
  452. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_preparation.py +0 -0
  453. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_prepared_dataloader.py +0 -0
  454. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_prepared_runtime.py +0 -0
  455. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_process_dataloader.py +0 -0
  456. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_uint32_pixel_map.py +0 -0
  457. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_cfp_validation.py +0 -0
  458. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_data.py +0 -0
  459. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_gradchecks.py +0 -0
  460. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_morphology_api.py +0 -0
  461. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_morphology_attribute_groups.py +0 -0
  462. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_morphology_bounding_box_width.py +0 -0
  463. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_morphology_gray_level.py +0 -0
  464. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_paired_dataset_characterization.py +0 -0
  465. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_reusable_paired_dataset.py +0 -0
  466. {mtlearn-1.2.1 → mtlearn-1.2.2}/mtlearn/tests/python/test_version.py +0 -0
  467. {mtlearn-1.2.1 → mtlearn-1.2.2}/pyproject.toml +0 -0
  468. {mtlearn-1.2.1 → mtlearn-1.2.2}/requirements.txt +0 -0
  469. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p0.py +0 -0
  470. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p1.py +0 -0
  471. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p2.py +0 -0
  472. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p3.py +0 -0
  473. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p4.py +0 -0
  474. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p5.py +0 -0
  475. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p6.py +0 -0
  476. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_cache_p6_finalize.py +0 -0
  477. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/benchmarks/cfp_jacobian_intervals.py +0 -0
  478. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/download_data.py +0 -0
  479. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/install_release_dependencies.py +0 -0
  480. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/resolve_package_version.py +0 -0
  481. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/smoke_test_release.py +0 -0
  482. {mtlearn-1.2.1 → mtlearn-1.2.2}/scripts/validate_notebooks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mtlearn
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Morphological tree learning utilities with a stable morphology facade
5
5
  Author-Email: Wonder Alexandre Luz Alves <worderalexandre@gmail.com>
6
6
  License-Expression: GPL-3.0-only
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.1'
22
- __version_tuple__ = version_tuple = (1, 2, 1)
21
+ __version__ = version = '1.2.2'
22
+ __version_tuple__ = version_tuple = (1, 2, 2)
23
23
 
24
- __commit_id__ = commit_id = 'g1d6f21bf0'
24
+ __commit_id__ = commit_id = 'g218d9dab2'
@@ -4,7 +4,7 @@ from pathlib import Path
4
4
  import shutil
5
5
 
6
6
  from ..storage import DiskStore
7
- from ._identity import canonical_json, preprocessor_config, validate_identity, tree_config
7
+ from ._identity import canonical_json, compatibility_config, preprocessor_config, validate_identity, tree_config
8
8
  from ._persistent_preparation import statistics_contract, statistics_identity
9
9
  from .preparation_result import DiskPreparationResult
10
10
 
@@ -78,7 +78,9 @@ def _header(store, preprocessor, manifest, source_version, preprocessing_version
78
78
  "preprocessing_version": preprocessing_version, "split": split}
79
79
  if count is not None:
80
80
  expected["sample_count"] = count
81
- differences = [name for name, value in expected.items() if row[name] != value]
81
+ differences = [name for name, value in expected.items()
82
+ if (compatibility_config(json.loads(row[name])) != compatibility_config(json.loads(value))
83
+ if name == "config" else row[name] != value)]
82
84
  if differences:
83
85
  raise ValueError(f"Manifest {manifest!r} is incompatible: {', '.join(differences)} changed. "
84
86
  "Use the matching contract or a new manifest name; cache metadata must not be rewritten.")
@@ -1,11 +1,8 @@
1
1
  """Versioned, primitive-only identities for local persistent preparation."""
2
- from functools import lru_cache
3
2
  import hashlib
4
3
  import json
5
- from pathlib import Path
6
4
 
7
5
  from .... import morphology
8
- from ...._native import load_bindings
9
6
  from ..specs import FeatureSpec, TreeSpec
10
7
 
11
8
  FORMAT_VERSION = 4
@@ -24,12 +21,20 @@ def digest_file(path):
24
21
  return digest.hexdigest()
25
22
 
26
23
 
27
- @lru_cache(maxsize=1)
28
24
  def implementation_identity():
29
- # Binary identity is deliberately conservative across backend builds. The
30
- # semantic version must change when Python preparation/quantization changes.
31
- return {"semantics": PREPARATION_SEMANTICS,
32
- "native_sha256": digest_file(Path(load_bindings().__file__))}
25
+ return {"semantics": PREPARATION_SEMANTICS}
26
+
27
+
28
+ def compatible_implementation(implementation):
29
+ return (isinstance(implementation, dict)
30
+ and set(implementation) in ({"semantics"}, {"semantics", "native_sha256"})
31
+ and implementation["semantics"] == PREPARATION_SEMANTICS)
32
+
33
+
34
+ def compatibility_config(config):
35
+ if not isinstance(config, dict) or not compatible_implementation(config.get("implementation")):
36
+ raise ValueError("Incompatible persistent preparation implementation or format.")
37
+ return dict(config, implementation=implementation_identity())
33
38
 
34
39
 
35
40
  def tree_config(spec):
@@ -55,7 +60,8 @@ def preprocessor_config(preprocessor):
55
60
  from .cfp_preprocessor import CFPPreprocessor
56
61
  if type(preprocessor) is not CFPPreprocessor or preprocessor.morphology is not morphology:
57
62
  raise ValueError("Persistent preparation currently requires the standard CFPPreprocessor implementation.")
58
- return {"format_version": FORMAT_VERSION, "implementation": dict(implementation_identity()),
63
+ implementation = getattr(preprocessor, "_implementation", implementation_identity())
64
+ return {"format_version": FORMAT_VERSION, "implementation": dict(implementation),
59
65
  "attribute_dtype": preprocessor.attribute_dtype.name,
60
66
  "trees": [{"tree": tree_config(spec),
61
67
  "attributes": [a.name for a in preprocessor.features[key].attributes]}
@@ -64,14 +70,16 @@ def preprocessor_config(preprocessor):
64
70
 
65
71
  def preprocessor_from_config(config):
66
72
  from .cfp_preprocessor import CFPPreprocessor
67
- if config["format_version"] != FORMAT_VERSION or config["implementation"] != implementation_identity():
73
+ if config["format_version"] != FORMAT_VERSION or not compatible_implementation(config["implementation"]):
68
74
  raise ValueError("Incompatible persistent preparation implementation or format.")
69
75
  trees, features = {}, {}
70
76
  for entry in config["trees"]:
71
77
  tree = tree_from_config(entry["tree"])
72
78
  trees[tree.cache_key()] = tree
73
79
  features[tree.cache_key()] = FeatureSpec(tuple(getattr(morphology.AttributeType, a) for a in entry["attributes"]))
74
- return CFPPreprocessor(tree_specs=trees, features=features, attribute_dtype=config["attribute_dtype"])
80
+ preprocessor = CFPPreprocessor(tree_specs=trees, features=features, attribute_dtype=config["attribute_dtype"])
81
+ preprocessor._implementation = dict(config["implementation"])
82
+ return preprocessor
75
83
 
76
84
 
77
85
  def image_identity(preprocessor, image, tree_key, *, pixel_digest=None):
@@ -91,7 +99,7 @@ def validate_identity(identity):
91
99
  expected = {"format_version", "implementation", "pixels_sha256", "shape", "tree", "attributes", "attribute_dtype"}
92
100
  if set(identity) != expected or identity["format_version"] != FORMAT_VERSION:
93
101
  raise ValueError("Unsupported preparation identity format.")
94
- if identity["implementation"] != implementation_identity():
102
+ if not compatible_implementation(identity["implementation"]):
95
103
  raise ValueError("Preparation backend/semantics do not match this runtime.")
96
104
  digest = identity["pixels_sha256"]
97
105
  if not isinstance(digest, str) or len(digest) != 64 or any(c not in "0123456789abcdef" for c in digest):
@@ -10,7 +10,7 @@ from ..._helpers import to_numpy_u8
10
10
  from ..normalization import AttributeNormalizer
11
11
  from ..normalization.statistics_snapshot import StatisticsSnapshot
12
12
  from ..runtime.cache_input_contract import validate_cfp_cache_batch_x
13
- from ._identity import canonical_json, image_identity, identity_key, preprocessor_config, preprocessor_from_config
13
+ from ._identity import canonical_json, compatibility_config, image_identity, identity_key, preprocessor_config, preprocessor_from_config
14
14
  from .preparation_result import PreparationResult
15
15
  from ._preparation_progress import emit
16
16
 
@@ -63,13 +63,19 @@ def _begin_manifest(store, name, preprocessor, count, source_version, preprocess
63
63
  if any(not isinstance(v, str) or not v for v in (name, source_version, preprocessing_version)):
64
64
  raise ValueError("Persistent preparation requires manifest, source_version and preprocessing_version strings.")
65
65
  config = canonical_json(preprocessor_config(preprocessor))
66
- values = (config, source_version, preprocessing_version, split, count)
67
66
  row = store._db.execute("SELECT * FROM manifests WHERE name=?", (name,)).fetchone()
67
+ if row is not None:
68
+ previous = json.loads(row["config"])
69
+ if compatibility_config(previous) == compatibility_config(json.loads(config)):
70
+ preprocessor = preprocessor_from_config(previous)
71
+ config = row["config"]
72
+ values = (config, source_version, preprocessing_version, split, count)
68
73
  if row is not None and tuple(row[k] for k in ("config", "source_version", "preprocessing_version", "split", "sample_count")) != values:
69
74
  raise ValueError("Manifest contract/source version changed; use a new manifest name to reuse compatible content safely.")
70
75
  with store._db:
71
76
  store._db.execute("""INSERT INTO manifests VALUES (?,?,?,?,?,?,'preparing',NULL)
72
77
  ON CONFLICT(name) DO UPDATE SET state='preparing',error=NULL""", (name, *values))
78
+ return preprocessor
73
79
 
74
80
 
75
81
  def _bind_sample(store, name, position, sample_id, bindings, shape):
@@ -146,7 +152,7 @@ def prepare_source(preprocessor, source, *, store=None, manifest=None, source_ve
146
152
  persistent = getattr(store, "persistent", False)
147
153
  if persistent:
148
154
  store._check(write=True)
149
- _begin_manifest(store, manifest, preprocessor, count, source_version, preprocessing_version, split)
155
+ preprocessor = _begin_manifest(store, manifest, preprocessor, count, source_version, preprocessing_version, split)
150
156
  # A resumed pass must revalidate durable files, even if this process has
151
157
  # already borrowed valid CPU buffers from a now damaged/missing file.
152
158
  store.clear()
@@ -2,7 +2,7 @@
2
2
  import json
3
3
  import sqlite3
4
4
 
5
- from ..preparation._identity import FORMAT_VERSION, canonical_json, implementation_identity
5
+ from ..preparation._identity import FORMAT_VERSION, canonical_json, implementation_identity, compatible_implementation
6
6
 
7
7
  SCHEMA = """
8
8
  CREATE TABLE metadata (key TEXT PRIMARY KEY, value TEXT NOT NULL);
@@ -55,7 +55,10 @@ def connect(path, *, readonly):
55
55
  db.rollback()
56
56
  raise
57
57
  row = db.execute("SELECT value FROM metadata WHERE key='contract'").fetchone()
58
- if row is None or json.loads(row[0]) != expected:
58
+ contract = json.loads(row[0]) if row is not None else None
59
+ if (not isinstance(contract, dict) or set(contract) != set(expected)
60
+ or contract["format_version"] != FORMAT_VERSION
61
+ or not compatible_implementation(contract["implementation"])):
59
62
  raise ValueError("DiskStore format/backend is incompatible; use a separate store directory.")
60
63
  except BaseException:
61
64
  db.close()
@@ -0,0 +1,101 @@
1
+ import json
2
+
3
+ import numpy as np
4
+ import pytest
5
+ import torch
6
+
7
+ import mtlearn
8
+ from mtlearn import _native
9
+ from mtlearn.layers.cfp import CFPPreprocessor, DiskStore, PreparedDataset
10
+ from mtlearn.layers.cfp.preparation import _identity
11
+ from test_cfp_disk_cache import QUOTA, forbid, model, prepare
12
+
13
+
14
+ @pytest.mark.parametrize("legacy", [False, True])
15
+ @pytest.mark.parametrize("workers", [0, 1])
16
+ def test_cache_reuse_across_binary_and_package_versions(tmp_path, monkeypatch, legacy, workers):
17
+ preprocessor = CFPPreprocessor.from_layer(model())
18
+ source = [torch.tensor([[[0, 1], [2, 3]]], dtype=torch.uint8)]
19
+ current = _identity.implementation_identity
20
+ with monkeypatch.context() as previous:
21
+ if legacy:
22
+ previous.setattr(_identity, "implementation_identity", lambda: dict(current(), native_sha256="a" * 64))
23
+ previous.setattr(mtlearn, "__version__", "1.2.0")
24
+ with DiskStore(tmp_path, max_disk_bytes=QUOTA) as store:
25
+ prepare(preprocessor, source, store)
26
+ config = json.loads(store._db.execute("SELECT config FROM manifests").fetchone()[0])
27
+ entries = [tuple(row) for row in store._db.execute("SELECT * FROM entries")]
28
+ expected = PreparedDataset(store, "train", source)[0]
29
+ expected_attributes = next(iter(expected.samples[0][0].values())).raw_attributes
30
+ expected_attributes = {key: value.clone() for key, value in expected_attributes.items()}
31
+ del expected
32
+ files = {path: path.read_bytes() for path in tmp_path.rglob("*.pt")}
33
+ assert files
34
+ monkeypatch.setattr(mtlearn, "__version__", "1.2.1")
35
+ monkeypatch.setattr(_native, "load_bindings", forbid)
36
+ monkeypatch.setattr(CFPPreprocessor, "prepare_u8", forbid)
37
+ assert _identity.implementation_identity() == {"semantics": _identity.PREPARATION_SEMANTICS}
38
+ assert CFPPreprocessor.from_config(config).get_config() == config
39
+ for readonly in (True, False):
40
+ with DiskStore(tmp_path, readonly=readonly, max_disk_bytes=None if readonly else QUOTA) as store:
41
+ batch = PreparedDataset(store, "train", source)[0]
42
+ actual = next(iter(batch.samples[0][0].values())).raw_attributes
43
+ for key in expected_attributes:
44
+ torch.testing.assert_close(actual[key], expected_attributes[key])
45
+ del batch, actual
46
+ if not readonly:
47
+ assert prepare(preprocessor, source, store, num_workers=workers).status == "complete"
48
+ assert [tuple(row) for row in store._db.execute("SELECT * FROM entries")] == entries
49
+ result = preprocessor.prepare_or_reuse(path=tmp_path, manifest="train", source_version="source-v1",
50
+ preprocessing_version="uint8-v1", mode="reuse")
51
+ assert result.status == "complete"
52
+ assert result.prepared_entries == 0
53
+ assert {path: path.read_bytes() for path in files} == files
54
+
55
+
56
+ @pytest.mark.parametrize("field,value", [("semantics", "incompatible-preparation"), ("unknown", "value")])
57
+ def test_incompatible_implementation_rejected_at_all_boundaries(tmp_path, field, value):
58
+ preprocessor = CFPPreprocessor.from_layer(model())
59
+ config = preprocessor.get_config()
60
+ config["implementation"][field] = value
61
+ with pytest.raises(ValueError, match="Incompatible"):
62
+ CFPPreprocessor.from_config(config)
63
+ identity = _identity.image_identity(preprocessor, np.array([[0, 1]], dtype=np.uint8),
64
+ next(iter(preprocessor.tree_specs)))
65
+ identity["implementation"][field] = value
66
+ with pytest.raises(ValueError, match="backend/semantics"):
67
+ _identity.validate_identity(identity)
68
+ with DiskStore(tmp_path, max_disk_bytes=QUOTA) as store:
69
+ store._db.execute("UPDATE metadata SET value=? WHERE key='contract'", (_identity.canonical_json({
70
+ "format_version": _identity.FORMAT_VERSION, "implementation": config["implementation"]}),))
71
+ store._db.commit()
72
+ with pytest.raises(ValueError, match="incompatible"):
73
+ DiskStore(tmp_path, readonly=True)
74
+
75
+
76
+ @pytest.mark.parametrize("workers", [0, 1])
77
+ def test_resume_legacy_cache_preserves_original_keys(tmp_path, monkeypatch, workers):
78
+ preprocessor = CFPPreprocessor.from_layer(model())
79
+ source = [torch.tensor([[[0, 1], [2, 3]]], dtype=torch.uint8),
80
+ torch.tensor([[[3, 2], [0, 1]]], dtype=torch.uint8)]
81
+ current = _identity.implementation_identity
82
+ with monkeypatch.context() as previous:
83
+ previous.setattr(_identity, "implementation_identity", lambda: dict(current(), native_sha256="b" * 64))
84
+ with DiskStore(tmp_path, max_disk_bytes=QUOTA) as store:
85
+ result = prepare(preprocessor, source, store,
86
+ cancel=lambda: store._db.execute("SELECT count(*) FROM samples").fetchone()[0] == 1)
87
+ assert result.status == "cancelled"
88
+ config = json.loads(store._db.execute("SELECT config FROM manifests").fetchone()[0])
89
+ key = store._db.execute("SELECT key FROM entries").fetchone()[0]
90
+ result = preprocessor.prepare_or_reuse(source, path=tmp_path, manifest="train", source_version="source-v1",
91
+ preprocessing_version="uint8-v1", mode="prepare_missing", max_disk_bytes=QUOTA, num_workers=workers)
92
+ assert result.status == "complete"
93
+ with DiskStore(tmp_path, readonly=True) as store:
94
+ assert json.loads(store._db.execute("SELECT config FROM manifests").fetchone()[0]) == config
95
+ assert store.get(key) is not None
96
+ dataset = PreparedDataset(store, "train", source)
97
+ assert len(dataset) == 2
98
+ for index in range(len(dataset)):
99
+ assert dataset[index].shape == (1, 1, 2, 2)
100
+ for row in store._db.execute("SELECT identity FROM entries"):
101
+ assert json.loads(row[0])["implementation"] == config["implementation"]
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