mloda 0.2.10__py3-none-any.whl → 0.2.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/METADATA +20 -20
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/RECORD +39 -40
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/licenses/NOTICE.md +1 -1
- mloda_core/abstract_plugins/abstract_feature_group.py +1 -27
- mloda_core/abstract_plugins/components/base_artifact.py +32 -2
- mloda_core/abstract_plugins/components/feature.py +18 -3
- mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py +247 -88
- mloda_core/abstract_plugins/components/feature_collection.py +5 -1
- mloda_core/abstract_plugins/components/feature_set.py +24 -0
- mloda_core/abstract_plugins/components/options.py +177 -17
- mloda_core/api/request.py +5 -1
- mloda_core/core/engine.py +2 -19
- mloda_core/runtime/run.py +0 -1
- mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py +130 -79
- mloda_plugins/feature_group/experimental/clustering/base.py +149 -101
- mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py +147 -85
- mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py +9 -1
- mloda_plugins/feature_group/experimental/default_options_key.py +6 -0
- mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py +174 -137
- mloda_plugins/feature_group/experimental/forecasting/base.py +178 -105
- mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py +5 -2
- mloda_plugins/feature_group/experimental/forecasting/pandas.py +75 -11
- mloda_plugins/feature_group/experimental/geo_distance/base.py +159 -96
- mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py +4 -4
- mloda_plugins/feature_group/experimental/node_centrality/base.py +101 -72
- mloda_plugins/feature_group/experimental/sklearn/encoding/base.py +104 -60
- mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py +191 -84
- mloda_plugins/feature_group/experimental/sklearn/scaling/base.py +101 -57
- mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py +15 -21
- mloda_plugins/feature_group/experimental/text_cleaning/base.py +103 -67
- mloda_plugins/feature_group/experimental/time_window/base.py +109 -48
- mloda_plugins/feature_group/experimental/time_window/pyarrow.py +11 -1
- mloda_plugins/feature_group/input_data/read_db.py +9 -1
- mloda_plugins/feature_group/input_data/read_dbs/sqlite.py +11 -3
- mloda_plugins/feature_group/input_data/read_file.py +9 -1
- mloda_core/abstract_plugins/components/feature_chainer/feature_chainer_parser_configuration.py +0 -177
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/WHEEL +0 -0
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/entry_points.txt +0 -0
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/licenses/LICENSE.TXT +0 -0
- {mloda-0.2.10.dist-info → mloda-0.2.12.dist-info}/top_level.txt +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mloda
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.12
|
|
4
4
|
Summary: Rethinking Data and Feature Engineering
|
|
5
|
-
Author-email: Tom Kaltofen <
|
|
5
|
+
Author-email: Tom Kaltofen <info@mloda.ai>
|
|
6
6
|
License: Apache License
|
|
7
7
|
Version 2.0, January 2004
|
|
8
8
|
http://www.apache.org/licenses/
|
|
@@ -205,11 +205,11 @@ License: Apache License
|
|
|
205
205
|
See the License for the specific language governing permissions and
|
|
206
206
|
limitations under the License.
|
|
207
207
|
|
|
208
|
-
Project-URL: Bug Tracker, https://github.com/
|
|
209
|
-
Project-URL: Documentation, https://
|
|
210
|
-
Project-URL: Source Code, https://github.com/
|
|
208
|
+
Project-URL: Bug Tracker, https://github.com/mloda-ai/mloda/issues
|
|
209
|
+
Project-URL: Documentation, https://mloda-ai.github.io/mloda/
|
|
210
|
+
Project-URL: Source Code, https://github.com/mloda-ai/mloda
|
|
211
211
|
Project-URL: PyPI, https://pypi.org/project/mloda/
|
|
212
|
-
Project-URL: Homepage, https://
|
|
212
|
+
Project-URL: Homepage, https://mloda.ai
|
|
213
213
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
214
214
|
Classifier: Programming Language :: Python :: 3
|
|
215
215
|
Requires-Python: >=3.8
|
|
@@ -221,14 +221,14 @@ Dynamic: license-file
|
|
|
221
221
|
|
|
222
222
|
# mloda: Revolutionary Process-Data Separation for Feature and Data Engineering
|
|
223
223
|
|
|
224
|
-
[](https://
|
|
224
|
+
[](https://mloda-ai.github.io/mloda/)
|
|
225
225
|
[](https://badge.fury.io/py/mloda)
|
|
226
|
-
[](https://github.com/
|
|
226
|
+
[](https://github.com/mloda-ai/mloda/blob/main/LICENSE.TXT)
|
|
227
227
|
-[](https://tox.readthedocs.io/)
|
|
228
228
|
-[](http://mypy-lang.org/)
|
|
229
229
|
-[](https://github.com/astral-sh/ruff)
|
|
230
230
|
|
|
231
|
-
> **⚠️ Early Version Notice**: mloda is in active development. Some features described below are still being implemented. We're actively seeking feedback to shape the future of the framework. [Share your thoughts!](https://github.com/
|
|
231
|
+
> **⚠️ Early Version Notice**: mloda is in active development. Some features described below are still being implemented. We're actively seeking feedback to shape the future of the framework. [Share your thoughts!](https://github.com/mloda-ai/mloda/issues/)
|
|
232
232
|
|
|
233
233
|
## 🚀 Transforming Feature Engineering Through Process-Data Separation
|
|
234
234
|
|
|
@@ -238,7 +238,7 @@ mloda **revolutionizes feature engineering** by separating **processes** (transf
|
|
|
238
238
|
|
|
239
239
|
**🌐 Share Without Secrets**: Traditional pipelines lock business logic inside - mloda plugins separate transformations from business context, enabling safe community sharing.
|
|
240
240
|
|
|
241
|
-
**🎯 Try the first example out NOW:** [sklearn Integration Example](https://
|
|
241
|
+
**🎯 Try the first example out NOW:** [sklearn Integration Example](https://mloda-ai.github.io/mloda/examples/sklearn_integration_basic/) - See mloda transform traditional sklearn pipelines!
|
|
242
242
|
|
|
243
243
|
## 📋 Table of Contents
|
|
244
244
|
|
|
@@ -451,7 +451,7 @@ All operations work seamlessly across any compute framework with the same simple
|
|
|
451
451
|
| **👤 Data User** | Consume features via API | Request features, configure workflows, build ML models |
|
|
452
452
|
| **🛡️ Data Owner** | Governance & lifecycle | Control access, manage compliance, oversee data quality |
|
|
453
453
|
|
|
454
|
-
**Organizational Clarity**: Each role has defined boundaries, enabling proper data governance while maintaining development flexibility. [Learn more about roles](https://
|
|
454
|
+
**Organizational Clarity**: Each role has defined boundaries, enabling proper data governance while maintaining development flexibility. [Learn more about roles](https://mloda-ai.github.io/mloda/examples/mloda_basics/4_ml_data_producers_user_owner/)
|
|
455
455
|
|
|
456
456
|
## 🌐 Community-Driven Plugin Ecosystem
|
|
457
457
|
|
|
@@ -468,22 +468,22 @@ All operations work seamlessly across any compute framework with the same simple
|
|
|
468
468
|
|
|
469
469
|
## 📖 Documentation
|
|
470
470
|
|
|
471
|
-
- **[Getting Started](https://
|
|
472
|
-
- **[sklearn Integration](https://
|
|
473
|
-
- **[Feature Groups](https://
|
|
474
|
-
- **[Compute Frameworks](https://
|
|
475
|
-
- **[API Reference](https://
|
|
471
|
+
- **[Getting Started](https://mloda-ai.github.io/mloda/chapter1/installation/)** - Installation and first steps
|
|
472
|
+
- **[sklearn Integration](https://mloda-ai.github.io/mloda/examples/sklearn_integration_basic/)** - Complete tutorial
|
|
473
|
+
- **[Feature Groups](https://mloda-ai.github.io/mloda/chapter1/feature-groups/)** - Core concepts
|
|
474
|
+
- **[Compute Frameworks](https://mloda-ai.github.io/mloda/chapter1/compute-frameworks/)** - Technology integration
|
|
475
|
+
- **[API Reference](https://mloda-ai.github.io/mloda/in_depth/mloda-api/)** - Complete API documentation
|
|
476
476
|
|
|
477
477
|
## 🤝 Contributing
|
|
478
478
|
|
|
479
479
|
We welcome contributions! Whether you're building plugins, adding features, or improving documentation, your input is invaluable.
|
|
480
480
|
|
|
481
|
-
- **[Development Guide](https://
|
|
482
|
-
- **[GitHub Issues](https://github.com/
|
|
483
|
-
- **[Email](mailto:
|
|
481
|
+
- **[Development Guide](https://mloda-ai.github.io/mloda/development/)** - How to contribute
|
|
482
|
+
- **[GitHub Issues](https://github.com/mloda-ai/mloda/issues/)** - Report bugs or request features
|
|
483
|
+
- **[Email](mailto:info@mloda.ai)** - Direct contact
|
|
484
484
|
|
|
485
485
|
## 📄 License
|
|
486
486
|
|
|
487
|
-
This project is licensed under the [Apache License, Version 2.0](https://github.com/
|
|
487
|
+
This project is licensed under the [Apache License, Version 2.0](https://github.com/mloda-ai/mloda/blob/main/LICENSE.TXT).
|
|
488
488
|
|
|
489
489
|
---
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
mloda-0.2.
|
|
2
|
-
mloda-0.2.
|
|
1
|
+
mloda-0.2.12.dist-info/licenses/LICENSE.TXT,sha256=gmhQwSkHxjiShsqQ1FpJ-20YFtaa4vRCE7aCx55-6nk,11366
|
|
2
|
+
mloda-0.2.12.dist-info/licenses/NOTICE.md,sha256=Hu10B2sPnGLIHxZ4QhACSLLxukJpeJzjvkzCu48q5fY,520
|
|
3
3
|
mloda_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
mloda_core/abstract_plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
mloda_core/abstract_plugins/abstract_feature_group.py,sha256=
|
|
5
|
+
mloda_core/abstract_plugins/abstract_feature_group.py,sha256=kimijNS8IIuhfP62cjv_XqUKmJNwVGm-WGtGzjURghg,16171
|
|
6
6
|
mloda_core/abstract_plugins/compute_frame_work.py,sha256=zbM8rOnfz_xGhnxAIKLHaA23gfO7oleGLXCaCAopfoE,18055
|
|
7
7
|
mloda_core/abstract_plugins/function_extender.py,sha256=kWcNTxwJloY1-6GwLrS8ZPwvyEkz3ZCDAaR9p23UU3I,871
|
|
8
8
|
mloda_core/abstract_plugins/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
mloda_core/abstract_plugins/components/base_artifact.py,sha256=
|
|
9
|
+
mloda_core/abstract_plugins/components/base_artifact.py,sha256=GOIJBEmrQhgdMORBb-maCDHDusnf9oTydl4oGa7K_uI,5231
|
|
10
10
|
mloda_core/abstract_plugins/components/base_validator.py,sha256=pZprl3iFF4oBjnQDk9XxvnOIuawrEQ1YIpM9B4Kl4LU,1951
|
|
11
11
|
mloda_core/abstract_plugins/components/data_access_collection.py,sha256=w7jD95a2Ib55gDk278F0qRfi-GBNHK4jXMNBPcJjd3c,1551
|
|
12
12
|
mloda_core/abstract_plugins/components/data_types.py,sha256=PFnH2A77k9DTIUJ6jYrjFd8KZxrzFVcXO5M40hWkUf0,3576
|
|
13
13
|
mloda_core/abstract_plugins/components/domain.py,sha256=AzVvWgG3oeHUCXJDtN2heyiUQ1zRK7u5O6az5kWxj_I,1226
|
|
14
|
-
mloda_core/abstract_plugins/components/feature.py,sha256=
|
|
15
|
-
mloda_core/abstract_plugins/components/feature_collection.py,sha256=
|
|
14
|
+
mloda_core/abstract_plugins/components/feature.py,sha256=PcdXiJG8wh6h6AM265sk0NtphqS8UhOJ9rD04zIk8yg,10129
|
|
15
|
+
mloda_core/abstract_plugins/components/feature_collection.py,sha256=rtIVrr8bDSH6nhi79NgP-w9SZBvII1HauIzbXRMW3fw,3463
|
|
16
16
|
mloda_core/abstract_plugins/components/feature_group_version.py,sha256=Syc1uXH502n-R29u0y-SW3S110Sl_nafCicCCKy_sKk,2158
|
|
17
17
|
mloda_core/abstract_plugins/components/feature_name.py,sha256=2NtKb_eespiOH9_j4y_pz5kBkmRbPUXq6U2giXlhkGg,778
|
|
18
|
-
mloda_core/abstract_plugins/components/feature_set.py,sha256=
|
|
18
|
+
mloda_core/abstract_plugins/components/feature_set.py,sha256=fghn5UIG8BxSDJnvi-QpcH3F_HP7EC5m7lE7Y73Z8BA,4192
|
|
19
19
|
mloda_core/abstract_plugins/components/hashable_dict.py,sha256=xzUIn2wbujo3jwwGayHnSbrrADSiVYU_xUV1nt5Yk8M,426
|
|
20
20
|
mloda_core/abstract_plugins/components/link.py,sha256=FIWnzcKHf6E_w_AWs2Zb3134lC8cvIR7P9zDTBY7dP0,6719
|
|
21
|
-
mloda_core/abstract_plugins/components/options.py,sha256
|
|
21
|
+
mloda_core/abstract_plugins/components/options.py,sha256=9Vu3g4VnNh8zJg4iWE650CVT7j9LFwAtVQXZh09pv4s,9208
|
|
22
22
|
mloda_core/abstract_plugins/components/parallelization_modes.py,sha256=k7z5yvyQfhfNYcljfZ0dWBf0ZMpnCSqaW0vajCh202Q,144
|
|
23
23
|
mloda_core/abstract_plugins/components/utils.py,sha256=_ofeiOBQLwYU3_p9JBe61Ihps4dpFUcsrqI6XrA92Yo,530
|
|
24
24
|
mloda_core/abstract_plugins/components/feature_chainer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
-
mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py,sha256=
|
|
26
|
-
mloda_core/abstract_plugins/components/feature_chainer/feature_chainer_parser_configuration.py,sha256=qUJ_8TxRTaVgdjRuDmc_ztMs1lDUtFMm7oX4U7dmkZw,7214
|
|
25
|
+
mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py,sha256=D7TVqUMZRN0HS8Bs-ri3vk2_wWQ_GBjKajSfu6o2_t4,13387
|
|
27
26
|
mloda_core/abstract_plugins/components/framework_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
27
|
mloda_core/abstract_plugins/components/framework_transformer/base_transformer.py,sha256=3eRSOzYZZ4OHRezvUnw4RLTUjirMGtcZCKQYJ1MuuZU,5793
|
|
29
28
|
mloda_core/abstract_plugins/components/framework_transformer/cfw_transformer.py,sha256=HxEhwgR8GH1HTYIEKfep-5L5QkLBstT5-b75c0JNccs,2790
|
|
@@ -47,12 +46,12 @@ mloda_core/abstract_plugins/components/plugin_option/plugin_collector.py,sha256=
|
|
|
47
46
|
mloda_core/abstract_plugins/plugin_loader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
47
|
mloda_core/abstract_plugins/plugin_loader/plugin_loader.py,sha256=IKwUtrDJS-MJLVJKF_WUbsiGMRRhmmr2W51jAs-83fs,5883
|
|
49
48
|
mloda_core/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
-
mloda_core/api/request.py,sha256=
|
|
49
|
+
mloda_core/api/request.py,sha256=WpeDxNoZjI2Qc9X9qBRM1OiNm4wQevssQ0wLgegfaYQ,9066
|
|
51
50
|
mloda_core/api/prepare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
51
|
mloda_core/api/prepare/setup_compute_framework.py,sha256=IMR5CqQTuPMgxCLadAXQ2kelSLzAhR5x8rAPeBd8gEc,2628
|
|
53
52
|
mloda_core/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
53
|
mloda_core/core/cfw_manager.py,sha256=PxXFJthx75FLRhC15gsNoX7wL_y5Vw16MZUeE6AGnoQ,8818
|
|
55
|
-
mloda_core/core/engine.py,sha256=
|
|
54
|
+
mloda_core/core/engine.py,sha256=PrwsQ6v-Qlh5znChcJ9ltrQ06EJr8ZoXyZtUiIdqgfo,13720
|
|
56
55
|
mloda_core/core/step/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
56
|
mloda_core/core/step/abstract_step.py,sha256=AA4EtJry3AeZ30zOKoHTSZlPkPxbaTs_sFvvTxtnrxU,1310
|
|
58
57
|
mloda_core/core/step/feature_group_step.py,sha256=-1VJhyFCEX0CclvUZmEgFsRFVLFyI2ZL70st0xcM89Q,5232
|
|
@@ -76,7 +75,7 @@ mloda_core/prepare/graph/build_graph.py,sha256=Ex2nFaCv1WRY2xO18_Zt0IsoRfj5xZMBX
|
|
|
76
75
|
mloda_core/prepare/graph/graph.py,sha256=ZMmxPBnGweeVdvD_3Kc2ann_jqX0622yDm9GQm8XksM,3771
|
|
77
76
|
mloda_core/prepare/graph/properties.py,sha256=Jnh5RMR2be6HzAlVKx0SzXL_m9u8NMa-SKc089hkVYg,920
|
|
78
77
|
mloda_core/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
-
mloda_core/runtime/run.py,sha256=
|
|
78
|
+
mloda_core/runtime/run.py,sha256=1Mp4A5Aeh0wPAmoGmFyGNcAU6QUph6_yitwiKdYXPYg,23939
|
|
80
79
|
mloda_core/runtime/flight/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
80
|
mloda_core/runtime/flight/flight_server.py,sha256=0Lnqt5x7zK6YFsjIKNoJfo22Zr2AOTSOK3nDIKRhNTI,4205
|
|
82
81
|
mloda_core/runtime/flight/runner_flight_server.py,sha256=rq4mherXpMXEPChaVS6aw_QJK90qmc4Fpjrh8NqWdFo,1267
|
|
@@ -120,32 +119,32 @@ mloda_plugins/compute_framework/base_implementations/spark/spark_merge_engine.py
|
|
|
120
119
|
mloda_plugins/compute_framework/base_implementations/spark/spark_pyarrow_transformer.py,sha256=CtIOllhGdYQisIiG0Ml0haG4sBC2UmrxKl8bhp4gzjY,3303
|
|
121
120
|
mloda_plugins/feature_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
121
|
mloda_plugins/feature_group/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
|
-
mloda_plugins/feature_group/experimental/default_options_key.py,sha256=
|
|
122
|
+
mloda_plugins/feature_group/experimental/default_options_key.py,sha256=XbpDFTFgVXaWyXxJSO3ix_wAi6mQB3s6NM3MjVe-PW4,1038
|
|
124
123
|
mloda_plugins/feature_group/experimental/source_input_feature.py,sha256=4tXKGH27O7ZPwPSTM_jaDbThmDY6iCmL_-fGP1BY7dM,11073
|
|
125
124
|
mloda_plugins/feature_group/experimental/aggregated_feature_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
|
-
mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py,sha256=
|
|
125
|
+
mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py,sha256=atJohaTwOLv5S_yS-jMei2gJWjBxc4eDy8zNsSQJQdc,10168
|
|
127
126
|
mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py,sha256=sdhzecSjCQLiGzc5WYQYBFSEF2p3Fqd3J5Nyj5l25sY,2470
|
|
128
127
|
mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py,sha256=rb__dbufuD2UloY0yOQZEfv0yRca59-TTMys4gHhoxM,3327
|
|
129
128
|
mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py,sha256=D1k85ypEHDF2vBMknznipvlOjbqogUS0Sn9cpWoYh0c,3153
|
|
130
129
|
mloda_plugins/feature_group/experimental/clustering/__init__.py,sha256=769NSapfi48V7BBh8zoo-ale2We6K4OV6ocNlzAhfEw,59
|
|
131
|
-
mloda_plugins/feature_group/experimental/clustering/base.py,sha256=
|
|
130
|
+
mloda_plugins/feature_group/experimental/clustering/base.py,sha256=J2T87kjjE8PB9BHoivwxMOFBgXsjo_DEBgxGyD2OaYU,14734
|
|
132
131
|
mloda_plugins/feature_group/experimental/clustering/pandas.py,sha256=RkxKgJLfz9ACBXcYR5WFbEZRCCiPGr0CqJ_dV9Fk6Kc,10602
|
|
133
132
|
mloda_plugins/feature_group/experimental/data_quality/__init__.py,sha256=ga8jdKaLl4bxkxMqNtRbrkHFnRWZIp8f3bR7DVG5d-I,45
|
|
134
133
|
mloda_plugins/feature_group/experimental/data_quality/missing_value/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
135
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py,sha256=
|
|
134
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py,sha256=LVqxcQ6a5h6bWRvRF6HVO_TPsY5GBGO5ouQj9OS1fzs,12019
|
|
136
135
|
mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py,sha256=Dczc3Li6yg6GqTNlvds11_UpfTKdUurXArU9I8Xw3PM,6493
|
|
137
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py,sha256=
|
|
136
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py,sha256=Ymr0cUF3jEva7mbdCq3lLs3Fa-wKwOesb-sNw4gDy8s,11978
|
|
138
137
|
mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py,sha256=_jVbK5uvCTugJvU12-EwsMte7iIk8XAsucElc3dTHmg,11002
|
|
139
|
-
mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py,sha256=
|
|
138
|
+
mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py,sha256=T-_XRXL3fo9DjhHPgJcFZr3ozi7dnPlIMtDG6OJSLiI,14130
|
|
140
139
|
mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py,sha256=EmtX53hPq7In6z6OBnWgOkda2oyt3XBZPv_NJ1ABkA0,9359
|
|
141
140
|
mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
141
|
mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py,sha256=EPJvq5qkkveDHOCXHFagTGh7tAnMYnkO3W6N-_x0CTU,6698
|
|
143
142
|
mloda_plugins/feature_group/experimental/forecasting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
144
|
-
mloda_plugins/feature_group/experimental/forecasting/base.py,sha256=
|
|
145
|
-
mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py,sha256=
|
|
146
|
-
mloda_plugins/feature_group/experimental/forecasting/pandas.py,sha256=
|
|
143
|
+
mloda_plugins/feature_group/experimental/forecasting/base.py,sha256=n9fYuEXzkqQ3eSx75kRMbduhMSLhGuGcam99Q0jc7-4,18975
|
|
144
|
+
mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py,sha256=41HPYoJEXqTqcv6Zvce-vkL9RZ5YrdzSiJgmEFxGVR0,4289
|
|
145
|
+
mloda_plugins/feature_group/experimental/forecasting/pandas.py,sha256=2gTVPJL7jCrXK2LXB0tEq3uisrx8WwxAdfzD_XvtaNs,18764
|
|
147
146
|
mloda_plugins/feature_group/experimental/geo_distance/__init__.py,sha256=wqp7I3j87AmrVBi2rlqcz4Sj-R1QMe3EasmNFb_Zxg4,85
|
|
148
|
-
mloda_plugins/feature_group/experimental/geo_distance/base.py,sha256=
|
|
147
|
+
mloda_plugins/feature_group/experimental/geo_distance/base.py,sha256=_jA36npRBmKb77yW7RyQ4JneM0sVPXDt9YE38T4xXMg,12262
|
|
149
148
|
mloda_plugins/feature_group/experimental/geo_distance/pandas.py,sha256=KwN_-sdpZobBiFev68ar0JWNXmupmAvh6f5L3CtbBAE,6023
|
|
150
149
|
mloda_plugins/feature_group/experimental/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
150
|
mloda_plugins/feature_group/experimental/llm/cli.py,sha256=65VO3deuQyNo2gQWRh6HuJXvzMtnYS6WIdaV-fqCFhc,1409
|
|
@@ -156,7 +155,7 @@ mloda_plugins/feature_group/experimental/llm/cli_features/__init__.py,sha256=47D
|
|
|
156
155
|
mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py,sha256=JlHC3f7pMf5eqz6jds67w3qfj_a53J5wTeabEFCdxFg,17944
|
|
157
156
|
mloda_plugins/feature_group/experimental/llm/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
157
|
mloda_plugins/feature_group/experimental/llm/llm_api/claude.py,sha256=1eBnLH6GY0Cc7zSqsw_rLcBsSgHSC722km4NIpQFC3E,8589
|
|
159
|
-
mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py,sha256=
|
|
158
|
+
mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py,sha256=Azek8l50rqCmZNj40gKp-kT0eQvUvrtyCSxr0cOSeDg,7217
|
|
160
159
|
mloda_plugins/feature_group/experimental/llm/llm_api/llm_base_request.py,sha256=Hnv_iDhWPYfUsXa-40QTHHKxtPtxwWYmIm9RiCLn38E,4737
|
|
161
160
|
mloda_plugins/feature_group/experimental/llm/llm_api/openai.py,sha256=t9UphwWFFesWKAgxWnoKDB0ijb0cjE6B9yj9_OFX6sI,8874
|
|
162
161
|
mloda_plugins/feature_group/experimental/llm/llm_api/request_loop.py,sha256=_K0hMeLXMG5iNgA2g9y3a8laSoid6v1s7ixZ_E-0hmk,6605
|
|
@@ -177,36 +176,36 @@ mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool.p
|
|
|
177
176
|
mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool_which_runs_tox.py,sha256=jTBpsIxF7mzZjeesd9ZeHUDwA17SkbLsL9brvl-YfOo,2119
|
|
178
177
|
mloda_plugins/feature_group/experimental/llm/tools/available/run_single_pytest.py,sha256=dLMb1iunH0EVY7YZ0NmlHC4kVhTOjs2Hjs2412dFTao,4114
|
|
179
178
|
mloda_plugins/feature_group/experimental/llm/tools/available/run_tox.py,sha256=2APL0MD_ExaMzsJK9_WfgDD9dmMY8amsgfc6B4Xgj70,3814
|
|
180
|
-
mloda_plugins/feature_group/experimental/node_centrality/base.py,sha256=
|
|
179
|
+
mloda_plugins/feature_group/experimental/node_centrality/base.py,sha256=snP5g76RbQdILla_wCCZi1yiygu0HLQBA2nOjWEdJvk,14594
|
|
181
180
|
mloda_plugins/feature_group/experimental/node_centrality/pandas.py,sha256=PI2fjKutagb34WNGPP8yU8lIFU4XR3pLkQ9wFRddkbo,20164
|
|
182
181
|
mloda_plugins/feature_group/experimental/sklearn/__init__.py,sha256=UubmqLyavXbzW40FeGY06XyORo-x1Uo0WCLcpmPWnAs,208
|
|
183
|
-
mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py,sha256=
|
|
182
|
+
mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py,sha256=C5-7PwflAHlifOsi6bvfvFD6JlOHlzaCLEHzjpNT23A,12797
|
|
184
183
|
mloda_plugins/feature_group/experimental/sklearn/encoding/__init__.py,sha256=WOe_iTVz2CXmVcL2IUNqhLJQqINFvY2rUktDXsNSOl8,153
|
|
185
|
-
mloda_plugins/feature_group/experimental/sklearn/encoding/base.py,sha256=
|
|
184
|
+
mloda_plugins/feature_group/experimental/sklearn/encoding/base.py,sha256=GweMm8vmZPaKeW6ssuYRZaCI0n-tJX_RrwLBwqfM2t8,17196
|
|
186
185
|
mloda_plugins/feature_group/experimental/sklearn/encoding/pandas.py,sha256=GzHw8GXzulgbXisUKz_zDxdrS7RTFyr2QeM_zrTm5_w,5966
|
|
187
186
|
mloda_plugins/feature_group/experimental/sklearn/pipeline/__init__.py,sha256=Z_xSZFAFItwRlbBVxbBxwW_S61tQ8r1N8Ih59jTUXqk,199
|
|
188
|
-
mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py,sha256=
|
|
187
|
+
mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py,sha256=BWg7TR8Htad-nlUZ6OcYR9xTNvBu2uzWR7J-1m4X82w,23644
|
|
189
188
|
mloda_plugins/feature_group/experimental/sklearn/pipeline/pandas.py,sha256=3_QaRdHInpalQ2GAAxzM6wZa9qIefPpv3hZ_Ctt9XrY,4010
|
|
190
189
|
mloda_plugins/feature_group/experimental/sklearn/scaling/__init__.py,sha256=CsQEzK6DJ-WakWqsWTScHYsrBuOwLeX78zYV-NqxuDg,79
|
|
191
|
-
mloda_plugins/feature_group/experimental/sklearn/scaling/base.py,sha256=
|
|
190
|
+
mloda_plugins/feature_group/experimental/sklearn/scaling/base.py,sha256=vbgTrxZs61JCimtK5S2egU4amBNxvfs3_vivpz7F8W4,15406
|
|
192
191
|
mloda_plugins/feature_group/experimental/sklearn/scaling/pandas.py,sha256=eD8vbHu-ylp1nnsNrI9cNG1WC6Ec2hBTUKOUzwcODGs,3925
|
|
193
|
-
mloda_plugins/feature_group/experimental/text_cleaning/base.py,sha256=
|
|
192
|
+
mloda_plugins/feature_group/experimental/text_cleaning/base.py,sha256=x2nM1FHtVbvTYCqIjrxvq_vFS8psDTupMZmYrcNz8kQ,11346
|
|
194
193
|
mloda_plugins/feature_group/experimental/text_cleaning/pandas.py,sha256=7RbV8lMUzx5b8ph4IsXnab4v06IByrNOGte9oK7Zz0g,7339
|
|
195
194
|
mloda_plugins/feature_group/experimental/text_cleaning/python_dict.py,sha256=9wRE1RioFRL-OtX467u4OEPvhDTzQAvdB-XAaJ1zDys,7829
|
|
196
195
|
mloda_plugins/feature_group/experimental/time_window/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
197
|
-
mloda_plugins/feature_group/experimental/time_window/base.py,sha256=
|
|
196
|
+
mloda_plugins/feature_group/experimental/time_window/base.py,sha256=dc_Xj0Zew9bPQ3V8MgIVrm96GxT197-xfLaE_uCTh0A,16919
|
|
198
197
|
mloda_plugins/feature_group/experimental/time_window/pandas.py,sha256=eSVbJRsrTcQp1dTqFeGz57yrudLnjqIx83cpRB3yP0Q,5552
|
|
199
|
-
mloda_plugins/feature_group/experimental/time_window/pyarrow.py,sha256=
|
|
198
|
+
mloda_plugins/feature_group/experimental/time_window/pyarrow.py,sha256=KuGHSwKqgzVtqGKBA2lEgvq2EhREipb8Wb3sZoBAdH4,7933
|
|
200
199
|
mloda_plugins/feature_group/input_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
200
|
mloda_plugins/feature_group/input_data/read_context_files.py,sha256=jaei9MEV6XJ92ZDJ982mXAsaCxddpbxBtoax94UtPDI,6040
|
|
202
|
-
mloda_plugins/feature_group/input_data/read_db.py,sha256=
|
|
201
|
+
mloda_plugins/feature_group/input_data/read_db.py,sha256=Men-XQxHqPFbNZrLuVd6qIZbbVpNU46_g7kyGw09XO8,5173
|
|
203
202
|
mloda_plugins/feature_group/input_data/read_db_feature.py,sha256=aOd1admNJ4az8czi7xDFvB-Dk7Li9RD5mdo9Sy0szkI,783
|
|
204
|
-
mloda_plugins/feature_group/input_data/read_file.py,sha256=
|
|
203
|
+
mloda_plugins/feature_group/input_data/read_file.py,sha256=Fmk-C6HxHsSt72d3Ga2USlOLgsI2VMLfvByZsANyO8c,4154
|
|
205
204
|
mloda_plugins/feature_group/input_data/read_file_feature.py,sha256=6ND3LIowsMwMZrj4mWVUbfjNnOpL_j0Ceq-oY9rE55A,808
|
|
206
205
|
mloda_plugins/feature_group/input_data/api_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
207
206
|
mloda_plugins/feature_group/input_data/api_data/api_data.py,sha256=0Vskqccx_OnCrpSAStekOeJPgfGzZvhiEtwupmiIdpY,637
|
|
208
207
|
mloda_plugins/feature_group/input_data/read_dbs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
|
-
mloda_plugins/feature_group/input_data/read_dbs/sqlite.py,sha256=
|
|
208
|
+
mloda_plugins/feature_group/input_data/read_dbs/sqlite.py,sha256=WbXPsgihUMIN-5v23JSJavNqL-S1DKqXL3EjqzvNHas,4040
|
|
210
209
|
mloda_plugins/feature_group/input_data/read_files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
211
210
|
mloda_plugins/feature_group/input_data/read_files/csv.py,sha256=opT2Ecma3xVhJfhjQMycuoElvR-HHMX72CX7M6p5bTw,822
|
|
212
211
|
mloda_plugins/feature_group/input_data/read_files/feather.py,sha256=_fEWPHs0K74V82cZlV4Kf20CQOtkEMFeQZ2mwzxAE2A,579
|
|
@@ -218,8 +217,8 @@ mloda_plugins/function_extender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
|
|
|
218
217
|
mloda_plugins/function_extender/base_implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
219
218
|
mloda_plugins/function_extender/base_implementations/otel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
219
|
mloda_plugins/function_extender/base_implementations/otel/otel_extender.py,sha256=M8GKb55ZGaoRaNCQOp69qr3w8jSMSD6D3VuGBpfw2t4,731
|
|
221
|
-
mloda-0.2.
|
|
222
|
-
mloda-0.2.
|
|
223
|
-
mloda-0.2.
|
|
224
|
-
mloda-0.2.
|
|
225
|
-
mloda-0.2.
|
|
220
|
+
mloda-0.2.12.dist-info/METADATA,sha256=gLjKE4ijJTp5neQz_WAlmeolYIQySJnikFmbWbBttWc,27467
|
|
221
|
+
mloda-0.2.12.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
222
|
+
mloda-0.2.12.dist-info/entry_points.txt,sha256=f7hp7s4laABj9eN5YwEjQAyInF-fa687MXdz-hKYMIA,80
|
|
223
|
+
mloda-0.2.12.dist-info/top_level.txt,sha256=KScNbTs4_vV-mJ1pIlP6cyvMl611B3hNxVYj2hA0Ex4,25
|
|
224
|
+
mloda-0.2.12.dist-info/RECORD,,
|
|
@@ -7,4 +7,4 @@ of the License at:
|
|
|
7
7
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
8
8
|
|
|
9
9
|
Attributions:
|
|
10
|
-
- Any attributions for third-party components or libraries are available in the [releases of this repository](https://github.com/
|
|
10
|
+
- Any attributions for third-party components or libraries are available in the [releases of this repository](https://github.com/mloda-ai/mloda/releases) as asset: ATTRIBUTION.md THIRD_PARTY_LICENSES.md.
|
|
@@ -8,15 +8,12 @@ from mloda_core.abstract_plugins.components.data_access_collection import DataAc
|
|
|
8
8
|
from mloda_core.abstract_plugins.components.data_types import DataType
|
|
9
9
|
|
|
10
10
|
from mloda_core.abstract_plugins.components.domain import Domain
|
|
11
|
-
from mloda_core.abstract_plugins.components.feature_chainer.feature_chainer_parser_configuration import (
|
|
12
|
-
FeatureChainParserConfiguration,
|
|
13
|
-
)
|
|
14
11
|
from mloda_core.abstract_plugins.components.feature_group_version import FeatureGroupVersion
|
|
15
12
|
from mloda_core.abstract_plugins.components.feature_name import FeatureName
|
|
16
13
|
from mloda_core.abstract_plugins.components.input_data.api.api_input_data import ApiInputData
|
|
17
14
|
from mloda_core.abstract_plugins.components.input_data.base_input_data import BaseInputData
|
|
18
15
|
from mloda_core.abstract_plugins.components.input_data.creator.data_creator import DataCreator
|
|
19
|
-
from mloda_core.abstract_plugins.components.match_data.match_data import MatchData
|
|
16
|
+
from mloda_core.abstract_plugins.components.match_data.match_data import MatchData
|
|
20
17
|
from mloda_core.abstract_plugins.compute_frame_work import ComputeFrameWork
|
|
21
18
|
from mloda_core.abstract_plugins.components.feature import Feature
|
|
22
19
|
from mloda_core.abstract_plugins.components.feature_set import FeatureSet
|
|
@@ -399,29 +396,6 @@ class AbstractFeatureGroup(ABC):
|
|
|
399
396
|
feature_name, options, data_access_collection
|
|
400
397
|
)
|
|
401
398
|
|
|
402
|
-
@classmethod
|
|
403
|
-
def configurable_feature_chain_parser(cls) -> Optional[Type[FeatureChainParserConfiguration]]:
|
|
404
|
-
"""
|
|
405
|
-
Requires: chainable feature!
|
|
406
|
-
|
|
407
|
-
Returns the FeatureChainParserConfiguration class for this feature group, if available.
|
|
408
|
-
|
|
409
|
-
This method allows feature groups to specify a configuration class that can be used
|
|
410
|
-
to parse feature names from options. When implemented, it enables the Engine to
|
|
411
|
-
automatically create features with the correct naming convention based on configuration
|
|
412
|
-
options, rather than requiring explicit feature names.
|
|
413
|
-
|
|
414
|
-
If a feature group does not support configuration-based parsing, this method
|
|
415
|
-
should return None (the default implementation).
|
|
416
|
-
|
|
417
|
-
Returns:
|
|
418
|
-
The FeatureChainParserConfiguration class for this feature group, or None if
|
|
419
|
-
configuration-based parsing is not supported
|
|
420
|
-
|
|
421
|
-
Requires: chainable feature!
|
|
422
|
-
"""
|
|
423
|
-
return None
|
|
424
|
-
|
|
425
399
|
@final
|
|
426
400
|
@classmethod
|
|
427
401
|
def _matches_data(
|
|
@@ -2,6 +2,7 @@ from abc import ABC
|
|
|
2
2
|
from typing import Any, Optional, final
|
|
3
3
|
|
|
4
4
|
from mloda_core.abstract_plugins.components.feature_set import FeatureSet
|
|
5
|
+
from mloda_core.abstract_plugins.components.options import Options
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class BaseArtifact(ABC):
|
|
@@ -49,7 +50,34 @@ class BaseArtifact(ABC):
|
|
|
49
50
|
|
|
50
51
|
However, you can overwrite this method to load the artifact by any means necessary.
|
|
51
52
|
"""
|
|
52
|
-
|
|
53
|
+
|
|
54
|
+
options = cls.get_singular_option_from_options(features)
|
|
55
|
+
return options.get(features.name_of_one_feature.name) # type: ignore
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def get_singular_option_from_options(cls, features: FeatureSet) -> Options | None:
|
|
59
|
+
"""
|
|
60
|
+
Helper method to retrieve a singular option from the options object.
|
|
61
|
+
|
|
62
|
+
The artifacts were designed before the context in feature groups was introduced.
|
|
63
|
+
If you encounter here an error, please message the maintainers to update the code.
|
|
64
|
+
It is simply not clear if this is a valid use case.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
_options = None
|
|
68
|
+
for feature in features.features:
|
|
69
|
+
if _options:
|
|
70
|
+
if _options != feature.options:
|
|
71
|
+
raise ValueError("""All features must have the same options. The artifacts were designed before the context in feature groups was introduced.
|
|
72
|
+
If you encounter here an error, please message the maintainers to update the code.
|
|
73
|
+
It is simply not clear if this is a valid use case.""")
|
|
74
|
+
|
|
75
|
+
_options = feature.options
|
|
76
|
+
|
|
77
|
+
if _options is None:
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
return _options
|
|
53
81
|
|
|
54
82
|
@final
|
|
55
83
|
@classmethod
|
|
@@ -91,7 +119,9 @@ class BaseArtifact(ABC):
|
|
|
91
119
|
"""
|
|
92
120
|
Validates that the FeatureSet has the necessary attributes set.
|
|
93
121
|
"""
|
|
94
|
-
|
|
122
|
+
|
|
123
|
+
options = BaseArtifact.get_singular_option_from_options(features)
|
|
124
|
+
if options is None:
|
|
95
125
|
raise ValueError("No options set. This should only be called after adding a feature.")
|
|
96
126
|
|
|
97
127
|
if features.name_of_one_feature is None:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import copy
|
|
3
4
|
from typing import Any, Dict, Optional, Set, Type, Union
|
|
4
5
|
from uuid import UUID, uuid4
|
|
5
6
|
from mloda_core.abstract_plugins.components.data_types import DataType
|
|
@@ -11,6 +12,7 @@ from mloda_core.abstract_plugins.components.link import Link
|
|
|
11
12
|
from mloda_core.abstract_plugins.compute_frame_work import ComputeFrameWork
|
|
12
13
|
from mloda_core.abstract_plugins.components.options import Options
|
|
13
14
|
from mloda_core.abstract_plugins.components.utils import get_all_subclasses
|
|
15
|
+
from mloda_plugins.feature_group.experimental.default_options_key import DefaultOptionKeys
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
class Feature:
|
|
@@ -133,6 +135,7 @@ class Feature:
|
|
|
133
135
|
return (
|
|
134
136
|
self.name == other.name
|
|
135
137
|
and self.options == other.options
|
|
138
|
+
and self.options.context == other.options.context
|
|
136
139
|
and self.domain == other.domain
|
|
137
140
|
and self.compute_frameworks == other.compute_frameworks
|
|
138
141
|
and self.data_type == other.data_type
|
|
@@ -143,9 +146,21 @@ class Feature:
|
|
|
143
146
|
compute_frameworks_hashable = (
|
|
144
147
|
frozenset(self.compute_frameworks) if self.compute_frameworks is not None else None
|
|
145
148
|
)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
|
|
150
|
+
child_options = copy.deepcopy(self.child_options)
|
|
151
|
+
if child_options:
|
|
152
|
+
if child_options.get(DefaultOptionKeys.mloda_source_feature):
|
|
153
|
+
val = child_options.get(DefaultOptionKeys.mloda_source_feature)
|
|
154
|
+
|
|
155
|
+
if isinstance(val, frozenset):
|
|
156
|
+
for v in val:
|
|
157
|
+
if isinstance(v, Feature):
|
|
158
|
+
child_options.group[DefaultOptionKeys.mloda_source_feature] = v.name.name
|
|
159
|
+
|
|
160
|
+
if isinstance(val, Feature):
|
|
161
|
+
child_options.group[DefaultOptionKeys.mloda_source_feature] = val.name.name
|
|
162
|
+
|
|
163
|
+
return hash((self.name, self.options, self.domain, compute_frameworks_hashable, self.data_type, child_options))
|
|
149
164
|
|
|
150
165
|
def is_different_data_type(self, other: Feature) -> bool:
|
|
151
166
|
return self.name == other.options and self.data_type == other.data_type
|