mloda 0.4.3__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.
- {mloda-0.4.3/mloda.egg-info → mloda-0.4.5}/PKG-INFO +13 -2
- {mloda-0.4.3 → mloda-0.4.5}/README.md +11 -0
- mloda-0.4.5/mloda/core/abstract_plugins/components/domain.py +49 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/feature_chain_parser.py +2 -6
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/feature_chain_parser_mixin.py +10 -7
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_collection.py +8 -1
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/engine.py +13 -3
- {mloda-0.4.3 → mloda-0.4.5/mloda.egg-info}/PKG-INFO +13 -2
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/base.py +3 -2
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py +15 -15
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/base.py +2 -3
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/base.py +3 -2
- {mloda-0.4.3 → mloda-0.4.5}/pyproject.toml +2 -2
- mloda-0.4.3/mloda/core/abstract_plugins/components/domain.py +0 -36
- {mloda-0.4.3 → mloda-0.4.5}/LICENSE.TXT +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/MANIFEST.in +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/NOTICE.md +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_artifact.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_feature_group_version.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/data_access_collection.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/data_types.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_name.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_set.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/base_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/cfw_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/hashable_dict.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/add_index_feature.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/index.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/api_input_data.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/api_input_data_collection.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/base_api_data.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/base_input_data.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/creator/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/creator/data_creator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/link.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/match_data/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/match_data/match_data.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/merge/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/merge/base_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/options.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/parallelization_modes.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/plugin_collector.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/utils.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/datatype_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/feature_set_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/feature_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/link_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/options_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/compute_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/feature_group.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/function_extender.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/plugin_loader/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/plugin_loader/plugin_loader.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/feature_config/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/feature_config/loader.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/feature_config/models.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/feature_config/parser.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/plugin_docs.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/plugin_info.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/prepare/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/prepare/setup_compute_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/api/request.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/cfw_manager.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/step/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/step/abstract_step.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/step/feature_group_step.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/step/join_step.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/core/step/transform_frame_work_step.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/filter_parameter.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/filter_type_enum.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/global_filter.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/filter/single_filter.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/accessible_plugins.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/execution_plan.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/graph/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/graph/build_graph.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/graph/graph.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/graph/properties.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/identify_feature_group.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/joinstep_collection.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/resolve_compute_frameworks.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/resolve_graph.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/resolve_links.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/validators/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/prepare/validators/resolve_link_validator.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/py.typed +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/compute_framework_executor.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/data_lifecycle_manager.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/flight/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/flight/flight_server.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/flight/runner_flight_server.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/run.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/worker/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/worker/multiprocessing_worker.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/worker/thread_worker.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/core/runtime/worker_manager.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/provider/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/provider/py.typed +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/steward/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/steward/py.typed +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/user/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda/user/py.typed +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda.egg-info/SOURCES.txt +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda.egg-info/dependency_links.txt +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda.egg-info/entry_points.txt +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda.egg-info/requires.txt +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda.egg-info/top_level.txt +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/dataframe.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandas_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandas_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pandas/pandaspyarrowtransformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/dataframe.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/lazy_dataframe.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/polars/polars_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/pyarrow/table.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_filter_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_framework.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_merge_engine.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/compute_framework/base_implementations/spark/spark_pyarrow_transformer.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/clustering/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/default_options_key.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/forecasting/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/geo_distance/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli_features/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/installed_packages_feature_group.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/list_directory_feature_group.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/claude.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/llm_base_request.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/openai.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_api/request_loop.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/llm_file_selector.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/adjust_and_run_all_tests_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/adjust_file_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/create_folder_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/create_new_file.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/git_diff.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/git_diff_cached.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/multiply.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/read_file_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool_which_runs_tox.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/run_single_pytest.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/available/run_tox.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/base_tool.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/tool_collection.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/llm/tools/tool_data_classes.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/node_centrality/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/node_centrality/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/encoding/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/pipeline/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/scaling/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/source_input_feature.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/base.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/text_cleaning/python_dict.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/pandas.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/experimental/time_window/pyarrow.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/api_data/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/api_data/api_data.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_context_files.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_db.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_db_feature.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_dbs/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_dbs/sqlite.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_file.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_file_feature.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/csv.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/feather.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/json.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/orc.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/parquet.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/feature_group/input_data/read_files/text_file_reader.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/function_extender/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/otel/__init__.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/function_extender/base_implementations/otel/otel_extender.py +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/mloda_plugins/py.typed +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/setup.cfg +0 -0
- {mloda-0.4.3 → mloda-0.4.5}/setup.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mloda
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: mloda:
|
|
3
|
+
Version: 0.4.5
|
|
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
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/mloda-ai/mloda/issues
|
|
@@ -306,6 +306,17 @@ Built-in and custom extenders give you full lineage - trace any result back to i
|
|
|
306
306
|
|
|
307
307
|
---
|
|
308
308
|
|
|
309
|
+
## Ecosystem
|
|
310
|
+
|
|
311
|
+
Most plugins currently live in `mloda_plugins/` within this repository. The goal is to gradually migrate them to standalone packages in the registry.
|
|
312
|
+
|
|
313
|
+
| Repository | Description |
|
|
314
|
+
|------------|-------------|
|
|
315
|
+
| [mloda-registry](https://github.com/mloda-ai/mloda-registry) | Official plugin packages and 40+ development guides |
|
|
316
|
+
| [mloda-plugin-template](https://github.com/mloda-ai/mloda-plugin-template) | Cookiecutter template for creating standalone plugins |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
309
320
|
## Contributing
|
|
310
321
|
|
|
311
322
|
We welcome contributions! Build plugins, improve docs, or add features.
|
|
@@ -287,6 +287,17 @@ Built-in and custom extenders give you full lineage - trace any result back to i
|
|
|
287
287
|
|
|
288
288
|
---
|
|
289
289
|
|
|
290
|
+
## Ecosystem
|
|
291
|
+
|
|
292
|
+
Most plugins currently live in `mloda_plugins/` within this repository. The goal is to gradually migrate them to standalone packages in the registry.
|
|
293
|
+
|
|
294
|
+
| Repository | Description |
|
|
295
|
+
|------------|-------------|
|
|
296
|
+
| [mloda-registry](https://github.com/mloda-ai/mloda-registry) | Official plugin packages and 40+ development guides |
|
|
297
|
+
| [mloda-plugin-template](https://github.com/mloda-ai/mloda-plugin-template) | Cookiecutter template for creating standalone plugins |
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
290
301
|
## Contributing
|
|
291
302
|
|
|
292
303
|
We welcome contributions! Build plugins, improve docs, or add features.
|
|
@@ -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
|
-
|
|
96
|
-
|
|
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
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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(
|
|
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,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mloda
|
|
3
|
-
Version: 0.4.
|
|
4
|
-
Summary: mloda:
|
|
3
|
+
Version: 0.4.5
|
|
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
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/mloda-ai/mloda/issues
|
|
@@ -306,6 +306,17 @@ Built-in and custom extenders give you full lineage - trace any result back to i
|
|
|
306
306
|
|
|
307
307
|
---
|
|
308
308
|
|
|
309
|
+
## Ecosystem
|
|
310
|
+
|
|
311
|
+
Most plugins currently live in `mloda_plugins/` within this repository. The goal is to gradually migrate them to standalone packages in the registry.
|
|
312
|
+
|
|
313
|
+
| Repository | Description |
|
|
314
|
+
|------------|-------------|
|
|
315
|
+
| [mloda-registry](https://github.com/mloda-ai/mloda-registry) | Official plugin packages and 40+ development guides |
|
|
316
|
+
| [mloda-plugin-template](https://github.com/mloda-ai/mloda-plugin-template) | Cookiecutter template for creating standalone plugins |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
309
320
|
## Contributing
|
|
310
321
|
|
|
311
322
|
We welcome contributions! Build plugins, improve docs, or add features.
|
|
@@ -121,8 +121,9 @@ class ClusteringFeatureGroup(FeatureChainParserMixin, FeatureGroup):
|
|
|
121
121
|
"explanation": "Number of clusters or 'auto' for automatic determination",
|
|
122
122
|
DefaultOptionKeys.context: True, # Mark as context parameter
|
|
123
123
|
DefaultOptionKeys.strict_validation: True, # Enable strict validation
|
|
124
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
125
|
-
|
|
124
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
125
|
+
value == "auto" or (isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0)
|
|
126
|
+
),
|
|
126
127
|
},
|
|
127
128
|
DefaultOptionKeys.in_features: {
|
|
128
129
|
"explanation": "Source features to use for clustering",
|
|
@@ -130,9 +130,9 @@ class DimensionalityReductionFeatureGroup(FeatureChainParserMixin, FeatureGroup)
|
|
|
130
130
|
"explanation": "Target dimension for the reduction (positive integer)",
|
|
131
131
|
DefaultOptionKeys.context: True,
|
|
132
132
|
DefaultOptionKeys.strict_validation: True,
|
|
133
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
134
|
+
isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0
|
|
135
|
+
),
|
|
136
136
|
},
|
|
137
137
|
DefaultOptionKeys.in_features: {
|
|
138
138
|
"explanation": "Source features to use for dimensionality reduction",
|
|
@@ -145,18 +145,18 @@ class DimensionalityReductionFeatureGroup(FeatureChainParserMixin, FeatureGroup)
|
|
|
145
145
|
DefaultOptionKeys.context: True,
|
|
146
146
|
DefaultOptionKeys.strict_validation: False,
|
|
147
147
|
"default": 250,
|
|
148
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
149
|
-
|
|
150
|
-
|
|
148
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
149
|
+
isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0
|
|
150
|
+
),
|
|
151
151
|
},
|
|
152
152
|
TSNE_N_ITER_WITHOUT_PROGRESS: {
|
|
153
153
|
"explanation": "Maximum iterations without progress before early stopping (t-SNE)",
|
|
154
154
|
DefaultOptionKeys.context: True,
|
|
155
155
|
DefaultOptionKeys.strict_validation: False,
|
|
156
156
|
"default": 50,
|
|
157
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
158
|
-
|
|
159
|
-
|
|
157
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
158
|
+
isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0
|
|
159
|
+
),
|
|
160
160
|
},
|
|
161
161
|
TSNE_METHOD: {
|
|
162
162
|
"barnes_hut": "Barnes-Hut approximation (faster, O(n log n))",
|
|
@@ -183,9 +183,9 @@ class DimensionalityReductionFeatureGroup(FeatureChainParserMixin, FeatureGroup)
|
|
|
183
183
|
DefaultOptionKeys.context: True,
|
|
184
184
|
DefaultOptionKeys.strict_validation: False,
|
|
185
185
|
"default": 200,
|
|
186
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
187
|
-
|
|
188
|
-
|
|
186
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
187
|
+
isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0
|
|
188
|
+
),
|
|
189
189
|
},
|
|
190
190
|
# Isomap specific parameters
|
|
191
191
|
ISOMAP_N_NEIGHBORS: {
|
|
@@ -193,9 +193,9 @@ class DimensionalityReductionFeatureGroup(FeatureChainParserMixin, FeatureGroup)
|
|
|
193
193
|
DefaultOptionKeys.context: True,
|
|
194
194
|
DefaultOptionKeys.strict_validation: False,
|
|
195
195
|
"default": 5,
|
|
196
|
-
DefaultOptionKeys.validation_function: lambda value:
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
DefaultOptionKeys.validation_function: lambda value: (
|
|
197
|
+
isinstance(value, (int, str)) and str(value).isdigit() and int(value) > 0
|
|
198
|
+
),
|
|
199
199
|
},
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -145,9 +145,8 @@ class ForecastingFeatureGroup(FeatureChainParserMixin, FeatureGroup):
|
|
|
145
145
|
DefaultOptionKeys.context: True,
|
|
146
146
|
DefaultOptionKeys.strict_validation: True,
|
|
147
147
|
DefaultOptionKeys.validation_function: lambda x: (
|
|
148
|
-
isinstance(x, int) or (isinstance(x, str) and x.isdigit())
|
|
149
|
-
)
|
|
150
|
-
and int(x) > 0,
|
|
148
|
+
(isinstance(x, int) or (isinstance(x, str) and x.isdigit())) and int(x) > 0
|
|
149
|
+
),
|
|
151
150
|
},
|
|
152
151
|
TIME_UNIT: {
|
|
153
152
|
**TIME_UNITS,
|
|
@@ -134,8 +134,9 @@ class TimeWindowFeatureGroup(FeatureChainParserMixin, FeatureGroup):
|
|
|
134
134
|
"explanation": "Size of the time window (must be positive integer)",
|
|
135
135
|
DefaultOptionKeys.context: True, # Mark as context parameter
|
|
136
136
|
DefaultOptionKeys.strict_validation: True, # Enable strict validation
|
|
137
|
-
DefaultOptionKeys.validation_function: lambda x: (
|
|
138
|
-
|
|
137
|
+
DefaultOptionKeys.validation_function: lambda x: (
|
|
138
|
+
(isinstance(x, int) and x > 0) or (isinstance(x, str) and x.isdigit() and int(x) > 0)
|
|
139
|
+
),
|
|
139
140
|
},
|
|
140
141
|
# Time unit parameter (context parameter)
|
|
141
142
|
TIME_UNIT: {
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mloda"
|
|
7
|
-
version = "0.4.
|
|
8
|
-
description = "mloda:
|
|
7
|
+
version = "0.4.5"
|
|
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" }
|
|
11
11
|
authors = [
|
|
@@ -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
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/base_feature_group_version.py
RENAMED
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/data_access_collection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/feature_chainer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/framework_transformer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/index/add_index_feature.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/__init__.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/api_input_data.py
RENAMED
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/api/base_api_data.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/base_input_data.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/input_data/creator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/merge/base_merge_engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/__init__.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/plugin_option/plugin_collector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/datatype_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/feature_validator.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/link_validator.py
RENAMED
|
File without changes
|
{mloda-0.4.3 → mloda-0.4.5}/mloda/core/abstract_plugins/components/validators/options_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|
|
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
|