mloda 0.4.4__tar.gz → 0.4.5__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 (259) hide show
  1. {mloda-0.4.4/mloda.egg-info → mloda-0.4.5}/PKG-INFO +1 -1
  2. mloda-0.4.5/mloda/core/abstract_plugins/components/domain.py +49 -0
  3. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/feature_chain_parser.py +2 -6
  4. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/feature_chain_parser_mixin.py +10 -7
  5. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_collection.py +8 -1
  6. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/engine.py +13 -3
  7. {mloda-0.4.4 → mloda-0.4.5/mloda.egg-info}/PKG-INFO +1 -1
  8. {mloda-0.4.4 → mloda-0.4.5}/pyproject.toml +1 -1
  9. mloda-0.4.4/mloda/core/abstract_plugins/components/domain.py +0 -36
  10. {mloda-0.4.4 → mloda-0.4.5}/LICENSE.TXT +0 -0
  11. {mloda-0.4.4 → mloda-0.4.5}/MANIFEST.in +0 -0
  12. {mloda-0.4.4 → mloda-0.4.5}/NOTICE.md +0 -0
  13. {mloda-0.4.4 → mloda-0.4.5}/README.md +0 -0
  14. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/__init__.py +0 -0
  15. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/__init__.py +0 -0
  16. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/__init__.py +0 -0
  17. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_artifact.py +0 -0
  18. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_feature_group_version.py +0 -0
  19. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_validator.py +0 -0
  20. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/data_access_collection.py +0 -0
  21. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/data_types.py +0 -0
  22. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature.py +0 -0
  23. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/__init__.py +0 -0
  24. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_name.py +0 -0
  25. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_set.py +0 -0
  26. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/__init__.py +0 -0
  27. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/base_transformer.py +0 -0
  28. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/cfw_transformer.py +0 -0
  29. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/hashable_dict.py +0 -0
  30. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/__init__.py +0 -0
  31. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/add_index_feature.py +0 -0
  32. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/index.py +0 -0
  33. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/__init__.py +0 -0
  34. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/__init__.py +0 -0
  35. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/api_input_data.py +0 -0
  36. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/api_input_data_collection.py +0 -0
  37. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/base_api_data.py +0 -0
  38. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/base_input_data.py +0 -0
  39. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/creator/__init__.py +0 -0
  40. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/creator/data_creator.py +0 -0
  41. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/link.py +0 -0
  42. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/match_data/__init__.py +0 -0
  43. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/match_data/match_data.py +0 -0
  44. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/merge/__init__.py +0 -0
  45. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/merge/base_merge_engine.py +0 -0
  46. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/options.py +0 -0
  47. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/parallelization_modes.py +0 -0
  48. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/__init__.py +0 -0
  49. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/plugin_collector.py +0 -0
  50. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/utils.py +0 -0
  51. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/__init__.py +0 -0
  52. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/datatype_validator.py +0 -0
  53. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/feature_set_validator.py +0 -0
  54. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/feature_validator.py +0 -0
  55. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/link_validator.py +0 -0
  56. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/options_validator.py +0 -0
  57. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/compute_framework.py +0 -0
  58. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/feature_group.py +0 -0
  59. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/function_extender.py +0 -0
  60. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/plugin_loader/__init__.py +0 -0
  61. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/abstract_plugins/plugin_loader/plugin_loader.py +0 -0
  62. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/__init__.py +0 -0
  63. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/feature_config/__init__.py +0 -0
  64. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/feature_config/loader.py +0 -0
  65. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/feature_config/models.py +0 -0
  66. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/feature_config/parser.py +0 -0
  67. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/plugin_docs.py +0 -0
  68. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/plugin_info.py +0 -0
  69. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/prepare/__init__.py +0 -0
  70. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/prepare/setup_compute_framework.py +0 -0
  71. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/api/request.py +0 -0
  72. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/__init__.py +0 -0
  73. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/cfw_manager.py +0 -0
  74. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/step/__init__.py +0 -0
  75. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/step/abstract_step.py +0 -0
  76. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/step/feature_group_step.py +0 -0
  77. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/step/join_step.py +0 -0
  78. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/core/step/transform_frame_work_step.py +0 -0
  79. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/__init__.py +0 -0
  80. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/filter_engine.py +0 -0
  81. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/filter_parameter.py +0 -0
  82. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/filter_type_enum.py +0 -0
  83. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/global_filter.py +0 -0
  84. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/filter/single_filter.py +0 -0
  85. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/__init__.py +0 -0
  86. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/accessible_plugins.py +0 -0
  87. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/execution_plan.py +0 -0
  88. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/graph/__init__.py +0 -0
  89. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/graph/build_graph.py +0 -0
  90. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/graph/graph.py +0 -0
  91. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/graph/properties.py +0 -0
  92. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/identify_feature_group.py +0 -0
  93. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/joinstep_collection.py +0 -0
  94. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/resolve_compute_frameworks.py +0 -0
  95. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/resolve_graph.py +0 -0
  96. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/resolve_links.py +0 -0
  97. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/validators/__init__.py +0 -0
  98. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/prepare/validators/resolve_link_validator.py +0 -0
  99. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/py.typed +0 -0
  100. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/__init__.py +0 -0
  101. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/compute_framework_executor.py +0 -0
  102. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/data_lifecycle_manager.py +0 -0
  103. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/flight/__init__.py +0 -0
  104. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/flight/flight_server.py +0 -0
  105. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/flight/runner_flight_server.py +0 -0
  106. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/run.py +0 -0
  107. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/worker/__init__.py +0 -0
  108. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/worker/multiprocessing_worker.py +0 -0
  109. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/worker/thread_worker.py +0 -0
  110. {mloda-0.4.4 → mloda-0.4.5}/mloda/core/runtime/worker_manager.py +0 -0
  111. {mloda-0.4.4 → mloda-0.4.5}/mloda/provider/__init__.py +0 -0
  112. {mloda-0.4.4 → mloda-0.4.5}/mloda/provider/py.typed +0 -0
  113. {mloda-0.4.4 → mloda-0.4.5}/mloda/steward/__init__.py +0 -0
  114. {mloda-0.4.4 → mloda-0.4.5}/mloda/steward/py.typed +0 -0
  115. {mloda-0.4.4 → mloda-0.4.5}/mloda/user/__init__.py +0 -0
  116. {mloda-0.4.4 → mloda-0.4.5}/mloda/user/py.typed +0 -0
  117. {mloda-0.4.4 → mloda-0.4.5}/mloda.egg-info/SOURCES.txt +0 -0
  118. {mloda-0.4.4 → mloda-0.4.5}/mloda.egg-info/dependency_links.txt +0 -0
  119. {mloda-0.4.4 → mloda-0.4.5}/mloda.egg-info/entry_points.txt +0 -0
  120. {mloda-0.4.4 → mloda-0.4.5}/mloda.egg-info/requires.txt +0 -0
  121. {mloda-0.4.4 → mloda-0.4.5}/mloda.egg-info/top_level.txt +0 -0
  122. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/__init__.py +0 -0
  123. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/__init__.py +0 -0
  124. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/__init__.py +0 -0
  125. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_filter_engine.py +0 -0
  126. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_framework.py +0 -0
  127. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_merge_engine.py +0 -0
  128. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_pyarrow_transformer.py +0 -0
  129. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_filter_engine.py +0 -0
  130. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_framework.py +0 -0
  131. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_pyarrow_transformer.py +0 -0
  132. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/__init__.py +0 -0
  133. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/dataframe.py +0 -0
  134. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandas_filter_engine.py +0 -0
  135. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandas_merge_engine.py +0 -0
  136. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandaspyarrowtransformer.py +0 -0
  137. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/__init__.py +0 -0
  138. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/dataframe.py +0 -0
  139. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/lazy_dataframe.py +0 -0
  140. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_filter_engine.py +0 -0
  141. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_merge_engine.py +0 -0
  142. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_pyarrow_transformer.py +0 -0
  143. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_merge_engine.py +0 -0
  144. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_pyarrow_transformer.py +0 -0
  145. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/__init__.py +0 -0
  146. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_filter_engine.py +0 -0
  147. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_merge_engine.py +0 -0
  148. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/table.py +0 -0
  149. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_filter_engine.py +0 -0
  150. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_framework.py +0 -0
  151. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_merge_engine.py +0 -0
  152. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_pyarrow_transformer.py +0 -0
  153. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_filter_engine.py +0 -0
  154. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_framework.py +0 -0
  155. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_merge_engine.py +0 -0
  156. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_pyarrow_transformer.py +0 -0
  157. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/__init__.py +0 -0
  158. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/__init__.py +0 -0
  159. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/__init__.py +0 -0
  160. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py +0 -0
  161. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py +0 -0
  162. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py +0 -0
  163. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py +0 -0
  164. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/__init__.py +0 -0
  165. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/base.py +0 -0
  166. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/pandas.py +0 -0
  167. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/__init__.py +0 -0
  168. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/__init__.py +0 -0
  169. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py +0 -0
  170. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py +0 -0
  171. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py +0 -0
  172. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py +0 -0
  173. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/default_options_key.py +0 -0
  174. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py +0 -0
  175. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py +0 -0
  176. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/__init__.py +0 -0
  177. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py +0 -0
  178. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/__init__.py +0 -0
  179. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/base.py +0 -0
  180. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py +0 -0
  181. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/pandas.py +0 -0
  182. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/__init__.py +0 -0
  183. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/base.py +0 -0
  184. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/pandas.py +0 -0
  185. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/__init__.py +0 -0
  186. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli.py +0 -0
  187. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli_features/__init__.py +0 -0
  188. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py +0 -0
  189. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/installed_packages_feature_group.py +0 -0
  190. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/list_directory_feature_group.py +0 -0
  191. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/__init__.py +0 -0
  192. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/claude.py +0 -0
  193. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py +0 -0
  194. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/llm_base_request.py +0 -0
  195. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/openai.py +0 -0
  196. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/request_loop.py +0 -0
  197. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_file_selector.py +0 -0
  198. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/__init__.py +0 -0
  199. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/__init__.py +0 -0
  200. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/adjust_and_run_all_tests_tool.py +0 -0
  201. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/adjust_file_tool.py +0 -0
  202. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/create_folder_tool.py +0 -0
  203. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/create_new_file.py +0 -0
  204. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/git_diff.py +0 -0
  205. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/git_diff_cached.py +0 -0
  206. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/multiply.py +0 -0
  207. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/read_file_tool.py +0 -0
  208. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool.py +0 -0
  209. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool_which_runs_tox.py +0 -0
  210. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/run_single_pytest.py +0 -0
  211. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/run_tox.py +0 -0
  212. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/base_tool.py +0 -0
  213. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/tool_collection.py +0 -0
  214. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/tool_data_classes.py +0 -0
  215. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/node_centrality/base.py +0 -0
  216. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/node_centrality/pandas.py +0 -0
  217. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/__init__.py +0 -0
  218. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/__init__.py +0 -0
  219. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/base.py +0 -0
  220. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/pandas.py +0 -0
  221. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/__init__.py +0 -0
  222. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py +0 -0
  223. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/pandas.py +0 -0
  224. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/__init__.py +0 -0
  225. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/base.py +0 -0
  226. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/pandas.py +0 -0
  227. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py +0 -0
  228. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/source_input_feature.py +0 -0
  229. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/base.py +0 -0
  230. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/pandas.py +0 -0
  231. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/python_dict.py +0 -0
  232. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/__init__.py +0 -0
  233. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/base.py +0 -0
  234. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/pandas.py +0 -0
  235. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/pyarrow.py +0 -0
  236. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/__init__.py +0 -0
  237. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/api_data/__init__.py +0 -0
  238. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/api_data/api_data.py +0 -0
  239. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_context_files.py +0 -0
  240. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_db.py +0 -0
  241. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_db_feature.py +0 -0
  242. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_dbs/__init__.py +0 -0
  243. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_dbs/sqlite.py +0 -0
  244. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_file.py +0 -0
  245. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_file_feature.py +0 -0
  246. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/__init__.py +0 -0
  247. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/csv.py +0 -0
  248. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/feather.py +0 -0
  249. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/json.py +0 -0
  250. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/orc.py +0 -0
  251. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/parquet.py +0 -0
  252. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/text_file_reader.py +0 -0
  253. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/function_extender/__init__.py +0 -0
  254. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/__init__.py +0 -0
  255. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/otel/__init__.py +0 -0
  256. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/otel/otel_extender.py +0 -0
  257. {mloda-0.4.4 → mloda-0.4.5}/mloda_plugins/py.typed +0 -0
  258. {mloda-0.4.4 → mloda-0.4.5}/setup.cfg +0 -0
  259. {mloda-0.4.4 → mloda-0.4.5}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mloda
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: mloda.ai: Open Data Access for ML and AI
5
5
  Author-email: Tom Kaltofen <info@mloda.ai>
6
6
  License: Apache-2.0
@@ -0,0 +1,49 @@
1
+ from __future__ import annotations
2
+ from typing import Any
3
+
4
+
5
+ class Domain:
6
+ """Represents a domain for isolating features across business contexts.
7
+
8
+ Domains enable data isolation between different contexts (Sales, Finance, Test, etc.).
9
+ The framework matches feature domains to feature group domains for resolution.
10
+
11
+ Definition:
12
+ - Feature: via `domain` parameter or `options={"domain": "..."}`
13
+ - FeatureGroup: via `get_domain()` classmethod (default: "default_domain")
14
+
15
+ Propagation:
16
+ When a parent feature has a domain, child features inherit it automatically.
17
+ You can override this by setting an explicit domain on each dependent feature.
18
+
19
+ +------------------------------------------+---------------+------------------+
20
+ | Child Definition | Parent Domain | Result |
21
+ +------------------------------------------+---------------+------------------+
22
+ | "child" (string) | "Sales" | Inherits "Sales" |
23
+ | Feature("child") | "Sales" | Inherits "Sales" |
24
+ | Feature("child", domain="Finance") | "Sales" | Keeps "Finance" |
25
+ | Any | None | No domain |
26
+ +------------------------------------------+---------------+------------------+
27
+
28
+ Validation:
29
+ IdentifyFeatureGroupClass ensures at least one feature group matches the feature's domain.
30
+ If a feature has no domain and multiple groups match, an error is raised.
31
+ """
32
+
33
+ def __init__(self, name: str):
34
+ self.name = name
35
+
36
+ @classmethod
37
+ def get_default_domain(cls) -> Domain:
38
+ """
39
+ No specified domain leads to default domain.
40
+ """
41
+ return Domain("default_domain")
42
+
43
+ def __eq__(self, other: Any) -> bool:
44
+ if not isinstance(other, Domain):
45
+ raise ValueError(f"Cannot compare Domain with {type(other)}")
46
+ return self.name == other.name
47
+
48
+ def __hash__(self) -> int:
49
+ return hash(self.name)
@@ -92,11 +92,8 @@ class FeatureChainParser:
92
92
  """Internal method for matching pattern-based features - used by match_configuration_feature_chain_parser."""
93
93
  _feature_name: FeatureName = FeatureName(feature_name) if isinstance(feature_name, str) else feature_name
94
94
 
95
- try:
96
- has_prefix_configuration, source_feature = cls.parse_feature_name(_feature_name, prefix_patterns, pattern)
97
- if has_prefix_configuration is None or source_feature is None:
98
- return False
99
- except ValueError:
95
+ has_prefix_configuration, source_feature = cls.parse_feature_name(_feature_name, prefix_patterns, pattern)
96
+ if has_prefix_configuration is None or source_feature is None:
100
97
  return False
101
98
  return True
102
99
 
@@ -304,7 +301,6 @@ class FeatureChainParser:
304
301
  return True
305
302
 
306
303
  # configuration-based
307
-
308
304
  if property_mapping is not None:
309
305
  return cls._validate_options_against_property_mapping(options, property_mapping)
310
306
 
@@ -131,13 +131,16 @@ class FeatureChainParserMixin:
131
131
  prefix_patterns = cls._get_prefix_patterns()
132
132
  property_mapping = cls._get_property_mapping()
133
133
 
134
- # Use the unified parser for basic matching
135
- result = FeatureChainParser.match_configuration_feature_chain_parser(
136
- _feature_name,
137
- options,
138
- property_mapping=property_mapping,
139
- prefix_patterns=prefix_patterns,
140
- )
134
+ try:
135
+ # Use the unified parser for basic matching
136
+ result = FeatureChainParser.match_configuration_feature_chain_parser(
137
+ _feature_name,
138
+ options,
139
+ property_mapping=property_mapping,
140
+ prefix_patterns=prefix_patterns,
141
+ )
142
+ except ValueError:
143
+ return False
141
144
 
142
145
  # If basic match succeeded and it's a string-based feature, call validation hook
143
146
  if result:
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from typing import Generator, List, Optional, Set, Union
3
3
  from uuid import UUID
4
+ from mloda.core.abstract_plugins.components.domain import Domain
4
5
  from mloda.core.abstract_plugins.components.feature import Feature
5
6
  from mloda.core.abstract_plugins.components.options import Options
6
7
  from mloda_plugins.feature_group.experimental.default_options_key import DefaultOptionKeys
@@ -17,9 +18,11 @@ class Features:
17
18
  features: List[Union[Feature, str]],
18
19
  child_options: Optional[Options] = None,
19
20
  child_uuid: Optional[UUID] = None,
21
+ parent_domain: Optional[str] = None,
20
22
  ) -> None:
21
23
  self.collection: List[Feature] = []
22
24
  self.child_uuid: Optional[UUID] = child_uuid
25
+ self.parent_domain: Optional[str] = parent_domain
23
26
 
24
27
  self.parent_uuids: set[UUID] = set()
25
28
 
@@ -36,7 +39,11 @@ class Features:
36
39
  if child_options.group == {} and child_options.context == {}:
37
40
  child_options = Options({})
38
41
 
39
- feature = Feature(name=feature, options=child_options) if isinstance(feature, str) else feature
42
+ if isinstance(feature, str):
43
+ feature = Feature(name=feature, options=child_options, domain=self.parent_domain)
44
+ else:
45
+ if feature.domain is None and self.parent_domain is not None:
46
+ feature.domain = Domain(self.parent_domain)
40
47
  if child_uuid:
41
48
  self.parent_uuids.add(feature.uuid)
42
49
  self.child_uuid = child_uuid
@@ -116,7 +116,10 @@ class Engine:
116
116
  added = self.add_feature_to_collection(feature_group_class, feature, features.child_uuid)
117
117
 
118
118
  if added:
119
- self._handle_input_features_recursion(feature_group_class, feature.uuid, feature.options, feature.name)
119
+ parent_domain = feature.domain.name if feature.domain else None
120
+ self._handle_input_features_recursion(
121
+ feature_group_class, feature.uuid, feature.options, feature.name, parent_domain=parent_domain
122
+ )
120
123
 
121
124
  if self.global_filter:
122
125
  self._add_filter_feature(feature_group_class, feature_group, feature, features)
@@ -265,7 +268,12 @@ class Engine:
265
268
  self.feature_link_parents[child_uuid].add(wanted_uuid)
266
269
 
267
270
  def _handle_input_features_recursion(
268
- self, feature_group_class: Type[FeatureGroup], uuid: UUID, options: Options, feature_name: FeatureName
271
+ self,
272
+ feature_group_class: Type[FeatureGroup],
273
+ uuid: UUID,
274
+ options: Options,
275
+ feature_name: FeatureName,
276
+ parent_domain: Optional[str] = None,
269
277
  ) -> None:
270
278
  """Handles recursion for input features of a feature group."""
271
279
  feature_group = feature_group_class()
@@ -278,7 +286,9 @@ class Engine:
278
286
  input_features = None
279
287
 
280
288
  if input_features:
281
- features = Features(list(input_features), child_options=options, child_uuid=uuid)
289
+ features = Features(
290
+ list(input_features), child_options=options, child_uuid=uuid, parent_domain=parent_domain
291
+ )
282
292
  if features.child_uuid is None:
283
293
  raise ValueError(f"Features {features} has no parent uuid although it should have one.")
284
294
  self.feature_link_parents[features.child_uuid] = features.parent_uuids
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mloda
3
- Version: 0.4.4
3
+ Version: 0.4.5
4
4
  Summary: mloda.ai: Open Data Access for ML and AI
5
5
  Author-email: Tom Kaltofen <info@mloda.ai>
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mloda"
7
- version = "0.4.4"
7
+ version = "0.4.5"
8
8
  description = "mloda.ai: Open Data Access for ML and AI"
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  license = { text = "Apache-2.0" }
@@ -1,36 +0,0 @@
1
- from __future__ import annotations
2
- from typing import Any
3
-
4
-
5
- class Domain:
6
- """
7
- Documentation domain:
8
-
9
- default value is default_domain. The purpose of this is to allow for a default domain to be used if no domain is given.
10
- Usecase: Testing, POCS etc. This is a tool to make life easier for the user.
11
-
12
- can be defined by:
13
- feature.domain: either by options or by domain
14
- feature_group.domain: returns the domain name rule for the feature group
15
-
16
- We validate in IdentifyFeatureGroupClass that there is atleast one feature group with the same domain as the feature.
17
- If the feature does not have a domain, and we have not exactly one matching feature group to the feature, we raise an error.
18
- """
19
-
20
- def __init__(self, name: str):
21
- self.name = name
22
-
23
- @classmethod
24
- def get_default_domain(cls) -> Domain:
25
- """
26
- No specified domain leads to default domain.
27
- """
28
- return Domain("default_domain")
29
-
30
- def __eq__(self, other: Any) -> bool:
31
- if not isinstance(other, Domain):
32
- raise ValueError(f"Cannot compare Domain with {type(other)}")
33
- return self.name == other.name
34
-
35
- def __hash__(self) -> int:
36
- return hash(self.name)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes