mloda 0.2.11__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.
Files changed (40) hide show
  1. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/METADATA +1 -1
  2. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/RECORD +39 -40
  3. mloda_core/abstract_plugins/abstract_feature_group.py +1 -27
  4. mloda_core/abstract_plugins/components/base_artifact.py +32 -2
  5. mloda_core/abstract_plugins/components/feature.py +18 -3
  6. mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py +247 -88
  7. mloda_core/abstract_plugins/components/feature_collection.py +5 -1
  8. mloda_core/abstract_plugins/components/feature_set.py +24 -0
  9. mloda_core/abstract_plugins/components/options.py +177 -17
  10. mloda_core/api/request.py +5 -1
  11. mloda_core/core/engine.py +2 -19
  12. mloda_core/runtime/run.py +0 -1
  13. mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py +130 -79
  14. mloda_plugins/feature_group/experimental/clustering/base.py +149 -101
  15. mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py +147 -85
  16. mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py +9 -1
  17. mloda_plugins/feature_group/experimental/default_options_key.py +6 -0
  18. mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py +174 -137
  19. mloda_plugins/feature_group/experimental/forecasting/base.py +178 -105
  20. mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py +5 -2
  21. mloda_plugins/feature_group/experimental/forecasting/pandas.py +75 -11
  22. mloda_plugins/feature_group/experimental/geo_distance/base.py +159 -96
  23. mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py +4 -4
  24. mloda_plugins/feature_group/experimental/node_centrality/base.py +101 -72
  25. mloda_plugins/feature_group/experimental/sklearn/encoding/base.py +104 -60
  26. mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py +191 -84
  27. mloda_plugins/feature_group/experimental/sklearn/scaling/base.py +101 -57
  28. mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py +15 -21
  29. mloda_plugins/feature_group/experimental/text_cleaning/base.py +103 -67
  30. mloda_plugins/feature_group/experimental/time_window/base.py +109 -48
  31. mloda_plugins/feature_group/experimental/time_window/pyarrow.py +11 -1
  32. mloda_plugins/feature_group/input_data/read_db.py +9 -1
  33. mloda_plugins/feature_group/input_data/read_dbs/sqlite.py +11 -3
  34. mloda_plugins/feature_group/input_data/read_file.py +9 -1
  35. mloda_core/abstract_plugins/components/feature_chainer/feature_chainer_parser_configuration.py +0 -177
  36. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/WHEEL +0 -0
  37. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/entry_points.txt +0 -0
  38. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/licenses/LICENSE.TXT +0 -0
  39. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/licenses/NOTICE.md +0 -0
  40. {mloda-0.2.11.dist-info → mloda-0.2.12.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mloda
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: Rethinking Data and Feature Engineering
5
5
  Author-email: Tom Kaltofen <info@mloda.ai>
6
6
  License: Apache License
@@ -1,29 +1,28 @@
1
- mloda-0.2.11.dist-info/licenses/LICENSE.TXT,sha256=gmhQwSkHxjiShsqQ1FpJ-20YFtaa4vRCE7aCx55-6nk,11366
2
- mloda-0.2.11.dist-info/licenses/NOTICE.md,sha256=Hu10B2sPnGLIHxZ4QhACSLLxukJpeJzjvkzCu48q5fY,520
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=OoMkBbB5hucWOERZTx8wnhtWQt36uQKYdZxSdrGtKQc,17307
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=Z9Vlkkkr4JjyhGSeMEuwx6z92kPIZnAVC52qehouzeA,3952
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=jIIFn33ueDKCh3m53jt-HutP8DN09PK2YsxFZWexZEQ,9374
15
- mloda_core/abstract_plugins/components/feature_collection.py,sha256=U0byDUvQ4EdJ_PnY-KS67muvrrAPDyQ1t7SSYzqioM8,3182
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=bNMeDKoo00usPDcevLkVKe9me_BS-5R1veHl9LktX4k,3221
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=-LB8nugKr-Sn4aMyTowyrR9VyKYeulbl9hk6A1HuSwM,1806
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=mI96ylHjT9v29YVKf_Vnp4gBDLfk8rSn9XBnaeekdo4,5771
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=1bXAVloeruJ85bbv-7fGRhWpQWhBYgltTIOs3-EgPjw,8821
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=2JIcHwvKgMV6sFTtiAoBVH5W1zk9dwZeLJVnvklQOVI,14362
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=tXY0SymC_nrgXHpVUcnbKqHVrQuecyA8mFP32iCv5Bo,23940
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=9MJN6pGnK-PQO3fXxqeEWNoVu2QdXLjjdEkQGW3phLE,774
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=r9WFqlLkCHSDwL0M8_p66l86O39El666PkQ2Ngu6AV0,8666
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=RrBQA1nZpesG2rRc-w1tenrMuwtQElft-Q1n-a3NmOU,12646
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=ajhrs_Bk3DWVlP7h7TAB68-D8nhobXdu9ZjnwoM843Y,9721
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=9mr_M-K2Q0ibiaL-PLBrQ50FaYx5bTXTyoyoX-SdbtE,11591
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=Jo1JSh9h1bZsTV9JHVThL9OeK6ckgBa4KhRQgs6ZL64,13186
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=3Pub3h6GU6NAQaGt4jizOyo-mY_qMJfWF6UNaGHBXf0,16247
145
- mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py,sha256=HKTXbxIOMQdkfgpN9EdsY5BXeAaXchDB0R94g7WODgo,4240
146
- mloda_plugins/feature_group/experimental/forecasting/pandas.py,sha256=weTmxHerBD2QbAGM5qnom-XyfebElnaFex-4po3n5_k,15957
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=0cvpjOz6WOZG8eBUBKXac1iGbvrpDfADA5yK382sUS4,9862
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=9OGC5ehY2hfd6pv9_TOTRfVMCZpQ3EiLQvzeER-njnI,7281
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=u5DtKZr_pE0BUNbZP7AZWdOEhlatF21Nh5gFGDdb6EM,13542
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=icKqh-zchk3-8ErbQ_2ykvarV2Qv3D_hlMTH1C0Fskc,13317
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=qbZ1BKJmxQEzRFwIUrrr6VhU6UhfpqFErtCCagMwkNg,15349
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=eZTsZxkMn17M_8cBQlF9bdyGW_Z_-vQgHLTvAtzTT4Y,19247
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=0mBTqbIgxeAj18bDUQTlipjNFswOPONnCSlcTwnjfys,13597
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=jCzjRR2CCI3in_vPgByj0tOUvnqo8-ddxzSG_cSNYIw,9644
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=GZ-5PC1cykEIJMQa23FgVQO_VGv9dps6pshKZUbM8zs,14032
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=2fDt73Ocek4s1URT54gewE2pYepZOQJqlTb4brJPs6I,7438
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=jQyPmmFmGDDW3OZPVixZHbh4FSa8D2QUpDb2w4pET7k,4920
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=fp_96DF96DKJmnTeeFJdwdQoDDcF4Dbx9Wa1jIo8AEI,3901
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=A8hdjBoqp53-VbqpJkW7v0epgs-47JV1AaUWucD5LnU,3802
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.11.dist-info/METADATA,sha256=XAk-PyPtQi2QTLi0RPQNZ9q1GcksgW21bnKokptmoVE,27467
222
- mloda-0.2.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
223
- mloda-0.2.11.dist-info/entry_points.txt,sha256=f7hp7s4laABj9eN5YwEjQAyInF-fa687MXdz-hKYMIA,80
224
- mloda-0.2.11.dist-info/top_level.txt,sha256=KScNbTs4_vV-mJ1pIlP6cyvMl611B3hNxVYj2hA0Ex4,25
225
- mloda-0.2.11.dist-info/RECORD,,
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,,
@@ -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, 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
- return features.options.get(features.name_of_one_feature.name) # type: ignore
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
- if features.options is None:
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
- return hash(
147
- (self.name, self.options, self.domain, compute_frameworks_hashable, self.data_type, self.child_options)
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