mloda 0.3.0__py3-none-any.whl → 0.3.1__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.3.0.dist-info → mloda-0.3.1.dist-info}/METADATA +2 -2
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/RECORD +74 -73
- mloda_core/abstract_plugins/components/base_artifact.py +3 -1
- mloda_core/abstract_plugins/components/feature.py +4 -4
- mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py +44 -17
- mloda_core/abstract_plugins/components/feature_collection.py +2 -2
- mloda_core/abstract_plugins/components/feature_group_version.py +4 -4
- mloda_core/abstract_plugins/components/input_data/base_input_data.py +3 -3
- mloda_core/abstract_plugins/components/link.py +46 -6
- mloda_core/abstract_plugins/components/options.py +10 -10
- mloda_core/api/prepare/setup_compute_framework.py +2 -2
- mloda_core/api/request.py +44 -13
- mloda_core/core/step/feature_group_step.py +2 -1
- mloda_core/filter/filter_engine.py +3 -12
- mloda_core/filter/filter_parameter.py +55 -0
- mloda_core/filter/single_filter.py +4 -4
- mloda_core/prepare/graph/graph.py +3 -3
- mloda_core/prepare/identify_feature_group.py +10 -3
- mloda_core/prepare/resolve_links.py +83 -18
- mloda_core/runtime/flight/flight_server.py +1 -1
- mloda_core/runtime/run.py +7 -5
- mloda_core/runtime/worker/multiprocessing_worker.py +11 -9
- mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_filter_engine.py +7 -33
- mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_filter_engine.py +22 -12
- mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_framework.py +2 -2
- mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_pyarrow_transformer.py +1 -1
- mloda_plugins/compute_framework/base_implementations/polars/dataframe.py +1 -1
- mloda_plugins/compute_framework/base_implementations/polars/lazy_dataframe.py +1 -1
- mloda_plugins/compute_framework/base_implementations/polars/polars_filter_engine.py +8 -34
- mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_merge_engine.py +1 -1
- mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_pyarrow_transformer.py +2 -2
- mloda_plugins/compute_framework/base_implementations/polars/polars_merge_engine.py +1 -1
- mloda_plugins/compute_framework/base_implementations/polars/polars_pyarrow_transformer.py +1 -1
- mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_filter_engine.py +7 -33
- mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_filter_engine.py +13 -32
- mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_framework.py +1 -1
- mloda_plugins/compute_framework/base_implementations/spark/spark_filter_engine.py +13 -32
- mloda_plugins/compute_framework/base_implementations/spark/spark_framework.py +4 -4
- mloda_plugins/config/feature/loader.py +12 -18
- mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py +20 -17
- mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py +6 -6
- mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py +6 -6
- mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py +5 -5
- mloda_plugins/feature_group/experimental/clustering/base.py +26 -26
- mloda_plugins/feature_group/experimental/clustering/pandas.py +29 -27
- mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py +23 -22
- mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py +14 -14
- mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py +7 -9
- mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py +8 -8
- mloda_plugins/feature_group/experimental/default_options_key.py +1 -1
- mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py +17 -15
- mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py +28 -16
- mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py +34 -34
- mloda_plugins/feature_group/experimental/forecasting/base.py +39 -29
- mloda_plugins/feature_group/experimental/forecasting/pandas.py +16 -16
- mloda_plugins/feature_group/experimental/geo_distance/base.py +18 -20
- mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py +2 -2
- mloda_plugins/feature_group/experimental/llm/llm_file_selector.py +1 -1
- mloda_plugins/feature_group/experimental/node_centrality/base.py +8 -12
- mloda_plugins/feature_group/experimental/sklearn/encoding/base.py +11 -12
- mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py +9 -14
- mloda_plugins/feature_group/experimental/sklearn/scaling/base.py +8 -9
- mloda_plugins/feature_group/experimental/source_input_feature.py +7 -7
- mloda_plugins/feature_group/experimental/text_cleaning/base.py +8 -11
- mloda_plugins/feature_group/experimental/time_window/base.py +27 -25
- mloda_plugins/feature_group/experimental/time_window/pandas.py +6 -6
- mloda_plugins/feature_group/experimental/time_window/pyarrow.py +4 -4
- mloda_plugins/feature_group/input_data/read_context_files.py +1 -1
- mloda_plugins/function_extender/base_implementations/otel/otel_extender.py +1 -1
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/WHEEL +0 -0
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/entry_points.txt +0 -0
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/licenses/LICENSE.TXT +0 -0
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/licenses/NOTICE.md +0 -0
- {mloda-0.3.0.dist-info → mloda-0.3.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mloda
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Rethinking Data and Feature Engineering
|
|
5
5
|
Author-email: Tom Kaltofen <info@mloda.ai>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -185,7 +185,7 @@ For truly custom configurations, you can use `Feature` objects:
|
|
|
185
185
|
# "custom_feature",
|
|
186
186
|
# options=Options({
|
|
187
187
|
# "custom_param": "value",
|
|
188
|
-
# "
|
|
188
|
+
# "in_features": "source_column",
|
|
189
189
|
# })
|
|
190
190
|
# ),
|
|
191
191
|
# ]
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
mloda-0.3.
|
|
2
|
-
mloda-0.3.
|
|
1
|
+
mloda-0.3.1.dist-info/licenses/LICENSE.TXT,sha256=gmhQwSkHxjiShsqQ1FpJ-20YFtaa4vRCE7aCx55-6nk,11366
|
|
2
|
+
mloda-0.3.1.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
5
|
mloda_core/abstract_plugins/abstract_feature_group.py,sha256=I3fVEULHUtrvPoc94iyxyBQVacD7GGI5piqJ6FoqgAY,18435
|
|
6
6
|
mloda_core/abstract_plugins/compute_frame_work.py,sha256=FviBBlsZDPybv8OfMY9EG4en-bGOjyQHRl2XLZr3pTw,19655
|
|
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=Jy3JrMwGFy90rPsAAisfqSjoUv9p9Qtfkx8D0UnNQhA,5307
|
|
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=
|
|
16
|
-
mloda_core/abstract_plugins/components/feature_group_version.py,sha256=
|
|
14
|
+
mloda_core/abstract_plugins/components/feature.py,sha256=YBIIWKLHhadITLprTq_XUuNC65WMp7HKhGma0mMdySE,10083
|
|
15
|
+
mloda_core/abstract_plugins/components/feature_collection.py,sha256=INsIdblZW9Pvx_AKintmYgGWz19pnqLY8naIblUoYwY,4660
|
|
16
|
+
mloda_core/abstract_plugins/components/feature_group_version.py,sha256=MSdEFs-r5BaR9JZ6q5iqFM-QkTAmf3yjVgSJKawdlA4,2130
|
|
17
17
|
mloda_core/abstract_plugins/components/feature_name.py,sha256=2NtKb_eespiOH9_j4y_pz5kBkmRbPUXq6U2giXlhkGg,778
|
|
18
18
|
mloda_core/abstract_plugins/components/feature_set.py,sha256=EeHep0iIvect21A6X-kNYBFUDgU8dkrfczTZwG_2FFY,4275
|
|
19
19
|
mloda_core/abstract_plugins/components/hashable_dict.py,sha256=xzUIn2wbujo3jwwGayHnSbrrADSiVYU_xUV1nt5Yk8M,426
|
|
20
|
-
mloda_core/abstract_plugins/components/link.py,sha256=
|
|
21
|
-
mloda_core/abstract_plugins/components/options.py,sha256=
|
|
20
|
+
mloda_core/abstract_plugins/components/link.py,sha256=mVsUZaRTC367WATMO1GDE3xMzWMeMyVedqj9ITMsKzE,9332
|
|
21
|
+
mloda_core/abstract_plugins/components/options.py,sha256=SqYneShxtjzUuxy9ItTFJBztOQjjRqLSeT4qTLYuaL0,11607
|
|
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=
|
|
25
|
+
mloda_core/abstract_plugins/components/feature_chainer/feature_chain_parser.py,sha256=m8BWFHaTln22hUCEp1y9bFHmtet-JdfKzM27AK44zNg,14239
|
|
26
26
|
mloda_core/abstract_plugins/components/framework_transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
mloda_core/abstract_plugins/components/framework_transformer/base_transformer.py,sha256=3eRSOzYZZ4OHRezvUnw4RLTUjirMGtcZCKQYJ1MuuZU,5793
|
|
28
28
|
mloda_core/abstract_plugins/components/framework_transformer/cfw_transformer.py,sha256=dODu95RTxAmLExId2XxPau-GZhBaGCO6k1sPntcwjfk,4298
|
|
@@ -30,7 +30,7 @@ mloda_core/abstract_plugins/components/index/__init__.py,sha256=47DEQpj8HBSa-_TI
|
|
|
30
30
|
mloda_core/abstract_plugins/components/index/add_index_feature.py,sha256=zVDCZA6tey-KO2JlEUf7joBSEmcy0pJ7cDOpxIB7xis,767
|
|
31
31
|
mloda_core/abstract_plugins/components/index/index.py,sha256=5Hc7eI1uunhK4Lnt-A4ZrJd5U8os77Md3pdOWxDPBwE,1269
|
|
32
32
|
mloda_core/abstract_plugins/components/input_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
mloda_core/abstract_plugins/components/input_data/base_input_data.py,sha256=
|
|
33
|
+
mloda_core/abstract_plugins/components/input_data/base_input_data.py,sha256=a-MSJlpkrmvFonI61P1yNmE3diNffBT9JxW3pCvGjro,6337
|
|
34
34
|
mloda_core/abstract_plugins/components/input_data/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
mloda_core/abstract_plugins/components/input_data/api/api_input_data.py,sha256=dZJXQtJQ6HdwjPKqAiW3V9F4LtYPFTcNe8TIZ8g7U-4,1290
|
|
36
36
|
mloda_core/abstract_plugins/components/input_data/api/api_input_data_collection.py,sha256=GXeK_TjqBUrRGsQh5oXigQxX7004gxIGl3Vbe68wa1g,3033
|
|
@@ -46,118 +46,119 @@ mloda_core/abstract_plugins/components/plugin_option/plugin_collector.py,sha256=
|
|
|
46
46
|
mloda_core/abstract_plugins/plugin_loader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
47
|
mloda_core/abstract_plugins/plugin_loader/plugin_loader.py,sha256=IKwUtrDJS-MJLVJKF_WUbsiGMRRhmmr2W51jAs-83fs,5883
|
|
48
48
|
mloda_core/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
-
mloda_core/api/request.py,sha256=
|
|
49
|
+
mloda_core/api/request.py,sha256=12LXCNb5Q2imDN4oizTFKqRKqMMS8xkfUdG_wgxw8_4,10791
|
|
50
50
|
mloda_core/api/prepare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
mloda_core/api/prepare/setup_compute_framework.py,sha256=
|
|
51
|
+
mloda_core/api/prepare/setup_compute_framework.py,sha256=0J7Aksb2jYUJiH0Eg6S2mJzf2t1G98XEqMmpQ0Tzshw,2659
|
|
52
52
|
mloda_core/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
53
|
mloda_core/core/cfw_manager.py,sha256=PxXFJthx75FLRhC15gsNoX7wL_y5Vw16MZUeE6AGnoQ,8818
|
|
54
54
|
mloda_core/core/engine.py,sha256=PrwsQ6v-Qlh5znChcJ9ltrQ06EJr8ZoXyZtUiIdqgfo,13720
|
|
55
55
|
mloda_core/core/step/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
56
|
mloda_core/core/step/abstract_step.py,sha256=AA4EtJry3AeZ30zOKoHTSZlPkPxbaTs_sFvvTxtnrxU,1310
|
|
57
|
-
mloda_core/core/step/feature_group_step.py,sha256
|
|
57
|
+
mloda_core/core/step/feature_group_step.py,sha256=dSoqidkb4KgygqhKhmn8HeJrE9Sm0M0Rx4rwncJMrrU,5319
|
|
58
58
|
mloda_core/core/step/join_step.py,sha256=4kEHDwesNpKlG39YJcmpztv7znJVIZtfxzrP428e__w,4243
|
|
59
59
|
mloda_core/core/step/transform_frame_work_step.py,sha256=7VLiH62ODFzlhWMuDlptjXr3G4EFISprqyOlpUqh-a0,5968
|
|
60
60
|
mloda_core/filter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
-
mloda_core/filter/filter_engine.py,sha256=
|
|
61
|
+
mloda_core/filter/filter_engine.py,sha256=qut5VBn8RW5Z0cx3-KfDWabPS01Uk4gPM-D-FMVaidw,3302
|
|
62
|
+
mloda_core/filter/filter_parameter.py,sha256=2nMBoU3_L2bxUaGwMvHby-T2TDEZo1rVtJjAUxhn0i0,1373
|
|
62
63
|
mloda_core/filter/filter_type_enum.py,sha256=0FB8lj9L6AprMrUiobxpPwzO3ZsQN_O1ZB-HBo5XOXM,196
|
|
63
64
|
mloda_core/filter/global_filter.py,sha256=-f5-raXY0AZInSjlelxmlnBdE0yIsMfqvWx9V2Y06bk,12160
|
|
64
|
-
mloda_core/filter/single_filter.py,sha256=
|
|
65
|
+
mloda_core/filter/single_filter.py,sha256=Q6CrbuSmBUR118WMwmMZ_h6CiGVClMrXnmrT-LXZeoA,2955
|
|
65
66
|
mloda_core/prepare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
67
|
mloda_core/prepare/accessible_plugins.py,sha256=yCecs6HI86L-ZpHVbCfOEqMx_qiE1rfU4r5KF-eMbgo,3107
|
|
67
68
|
mloda_core/prepare/execution_plan.py,sha256=YBjm94tyiI4kTJCKyM9iBscsQxPjwLkvv8IiBkixAtU,43271
|
|
68
|
-
mloda_core/prepare/identify_feature_group.py,sha256=
|
|
69
|
+
mloda_core/prepare/identify_feature_group.py,sha256=U0oFNVrR1pN7MAQVfXZ8rP-SKuCrb4gCpxJNa5daxpc,6975
|
|
69
70
|
mloda_core/prepare/joinstep_collection.py,sha256=_uy4NdWdFCR30K-p_pUgaF9Zn2l-7cdwM6_jM2zzE-M,1464
|
|
70
71
|
mloda_core/prepare/resolve_compute_frameworks.py,sha256=NA1VdilKsLOnfo0CXpgR2qUiogFEVBMdkupsXQwjyPs,6347
|
|
71
72
|
mloda_core/prepare/resolve_graph.py,sha256=i79p3OOSBqlRC-XzQYM2Bm-tNWy3CJU5d7SQbFxOLVU,3576
|
|
72
|
-
mloda_core/prepare/resolve_links.py,sha256=
|
|
73
|
+
mloda_core/prepare/resolve_links.py,sha256=AK6jQx2DtyhAIbB1KYW4RazvpO6dcJy2kPVfsNUVA50,15110
|
|
73
74
|
mloda_core/prepare/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
75
|
mloda_core/prepare/graph/build_graph.py,sha256=Ex2nFaCv1WRY2xO18_Zt0IsoRfj5xZMBXvS-sPcOTb8,2209
|
|
75
|
-
mloda_core/prepare/graph/graph.py,sha256=
|
|
76
|
+
mloda_core/prepare/graph/graph.py,sha256=nhtVkT1Hg9oZff_QSk9J17KQKn0Zh4AC69p_1aHAjA0,3818
|
|
76
77
|
mloda_core/prepare/graph/properties.py,sha256=Jnh5RMR2be6HzAlVKx0SzXL_m9u8NMa-SKc089hkVYg,920
|
|
77
78
|
mloda_core/runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
|
-
mloda_core/runtime/run.py,sha256=
|
|
79
|
+
mloda_core/runtime/run.py,sha256=c3lK7Swpwls7GUudqQsTm6pYiIBaRggh1_075VSykk0,23969
|
|
79
80
|
mloda_core/runtime/flight/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
-
mloda_core/runtime/flight/flight_server.py,sha256=
|
|
81
|
+
mloda_core/runtime/flight/flight_server.py,sha256=AlwsJstZBHgOLXCKaq6rdJSTdbGoK8LLPmkOasQJQT8,4211
|
|
81
82
|
mloda_core/runtime/flight/runner_flight_server.py,sha256=rq4mherXpMXEPChaVS6aw_QJK90qmc4Fpjrh8NqWdFo,1267
|
|
82
83
|
mloda_core/runtime/worker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
mloda_core/runtime/worker/multiprocessing_worker.py,sha256=
|
|
84
|
+
mloda_core/runtime/worker/multiprocessing_worker.py,sha256=ck_YWnAt4sTiR5BXaJ7JsbF8lx-3IMzAivNSXhX44Ek,4821
|
|
84
85
|
mloda_core/runtime/worker/thread_worker.py,sha256=xNO6oXumHK7fzgR0O_opJMLCdkVqBP0FpLEf9xy7KqI,671
|
|
85
86
|
mloda_plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
87
|
mloda_plugins/compute_framework/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
88
|
mloda_plugins/compute_framework/base_implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_filter_engine.py,sha256=
|
|
89
|
+
mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_filter_engine.py,sha256=P6-BVmCxJLLkRgL5fHU3nJFmdRO4rX3goJQPy4Q8mpo,5041
|
|
89
90
|
mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_framework.py,sha256=T8iwTNmj4uaw5vFhMFAhYxY9S2ez0NC2TCI1rw8Jkfg,5194
|
|
90
91
|
mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_merge_engine.py,sha256=HIEAMc-S0DoT-WHqH706oXJijVZLaUNjjpKTS5Bh5EY,7334
|
|
91
92
|
mloda_plugins/compute_framework/base_implementations/duckdb/duckdb_pyarrow_transformer.py,sha256=RDqBQGInTaMEEWrWVJVz6nxahipEqV9xWZwJkAgljY4,2312
|
|
92
|
-
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_filter_engine.py,sha256=
|
|
93
|
-
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_framework.py,sha256=
|
|
94
|
-
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_pyarrow_transformer.py,sha256=
|
|
93
|
+
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_filter_engine.py,sha256=EktasVn0SPlCj-pIH2KWJyOtkKhwEoXBFrSzPI6YHoU,7283
|
|
94
|
+
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_framework.py,sha256=MOEkDvoiFd25kn1lKieuUcjkFHEbfA67KEr3BYK8Zic,6971
|
|
95
|
+
mloda_plugins/compute_framework/base_implementations/iceberg/iceberg_pyarrow_transformer.py,sha256=wvPAF46Y-fO3zM3Ghivipj3iyUJ3LcPqxbbQs081c10,3149
|
|
95
96
|
mloda_plugins/compute_framework/base_implementations/pandas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
97
|
mloda_plugins/compute_framework/base_implementations/pandas/dataframe.py,sha256=y-tfGbRrCbF6VlAwGQUyIasijgoE3fgZ4ahfRGOIXII,3218
|
|
97
98
|
mloda_plugins/compute_framework/base_implementations/pandas/pandas_filter_engine.py,sha256=Ky6W9ij3tqSHNH_-Z4SCWlFrgc_0l_S8qUvmniwl0Aw,2596
|
|
98
99
|
mloda_plugins/compute_framework/base_implementations/pandas/pandas_merge_engine.py,sha256=Mvi3XNtOUzuxFU2dOBakcEGEqTMthVRNhH74gRHmBsw,2863
|
|
99
100
|
mloda_plugins/compute_framework/base_implementations/pandas/pandaspyarrowtransformer.py,sha256=xmrra9N5hgY7Pl0R582eiDWc4LQreIfMI4l1papOLiw,1909
|
|
100
101
|
mloda_plugins/compute_framework/base_implementations/polars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
101
|
-
mloda_plugins/compute_framework/base_implementations/polars/dataframe.py,sha256=
|
|
102
|
-
mloda_plugins/compute_framework/base_implementations/polars/lazy_dataframe.py,sha256=
|
|
103
|
-
mloda_plugins/compute_framework/base_implementations/polars/polars_filter_engine.py,sha256=
|
|
104
|
-
mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_merge_engine.py,sha256=
|
|
105
|
-
mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_pyarrow_transformer.py,sha256=
|
|
106
|
-
mloda_plugins/compute_framework/base_implementations/polars/polars_merge_engine.py,sha256=
|
|
107
|
-
mloda_plugins/compute_framework/base_implementations/polars/polars_pyarrow_transformer.py,sha256=
|
|
102
|
+
mloda_plugins/compute_framework/base_implementations/polars/dataframe.py,sha256=Hau2TvDYOWug63vNCkDKHO2LDJqKUTngkx0bjeluTHY,3088
|
|
103
|
+
mloda_plugins/compute_framework/base_implementations/polars/lazy_dataframe.py,sha256=C_0svDXkbJxk0j7tZhh9lByEm_nSdBqqox37_KjwLO4,3848
|
|
104
|
+
mloda_plugins/compute_framework/base_implementations/polars/polars_filter_engine.py,sha256=32i0Ex7p8xisdIyjD5vZ5Pa6ge6DhUaHjd-THTLYFaM,4481
|
|
105
|
+
mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_merge_engine.py,sha256=DR2005Go695hTjpWMQRfVMBXbU8jD4jVi7wf_P90dLw,1368
|
|
106
|
+
mloda_plugins/compute_framework/base_implementations/polars/polars_lazy_pyarrow_transformer.py,sha256=TflITdF1jWqfhZiBkrChSUU3k8TLt2qUpjcVA8DS7Bg,2143
|
|
107
|
+
mloda_plugins/compute_framework/base_implementations/polars/polars_merge_engine.py,sha256=syVjxvGV4aaOktVeUTJJt6YrWvvSpIgAD2_J3fa5n-E,8253
|
|
108
|
+
mloda_plugins/compute_framework/base_implementations/polars/polars_pyarrow_transformer.py,sha256=3MtpSC8j13-W5kSHIhwwwsZ8MbaC6eQeWgqMyJRyAQw,1841
|
|
108
109
|
mloda_plugins/compute_framework/base_implementations/pyarrow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
|
-
mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_filter_engine.py,sha256=
|
|
110
|
+
mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_filter_engine.py,sha256=I_t_dsRDNsbumigrgtkioQxwXvDq5czaZMZY6eMV84Y,5403
|
|
110
111
|
mloda_plugins/compute_framework/base_implementations/pyarrow/pyarrow_merge_engine.py,sha256=BuTYK0eEk9OxjPe3LPVFCyHyrj2FVDeu0HMiIq1HevE,4947
|
|
111
112
|
mloda_plugins/compute_framework/base_implementations/pyarrow/table.py,sha256=C55FC467fpKxZHAUVSsPJ9nWTwnL1-YkHV0g_U_gM3I,2513
|
|
112
|
-
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_filter_engine.py,sha256=
|
|
113
|
-
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_framework.py,sha256=
|
|
113
|
+
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_filter_engine.py,sha256=rAeAEONalTwJBLzvsbeINMQF6VWi_MKbVLp2i2VgSns,5346
|
|
114
|
+
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_framework.py,sha256=t7P-Vc3swcc-1bJrSuDo2tHTgR4fTxwfAS9_8oHgyFY,4855
|
|
114
115
|
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_merge_engine.py,sha256=ueuL1i4B9OmCKYFBGHwXvlTOu_qD-mDdptMcx1VjH1s,8347
|
|
115
116
|
mloda_plugins/compute_framework/base_implementations/python_dict/python_dict_pyarrow_transformer.py,sha256=S0yn42V95bN6Zxv2_JRRmX6NR_o7maEdzPluJrqpqD0,3438
|
|
116
|
-
mloda_plugins/compute_framework/base_implementations/spark/spark_filter_engine.py,sha256=
|
|
117
|
-
mloda_plugins/compute_framework/base_implementations/spark/spark_framework.py,sha256
|
|
117
|
+
mloda_plugins/compute_framework/base_implementations/spark/spark_filter_engine.py,sha256=GOOSWSw2ISDop21ZvTVlsouv-O1QY528meCzf4VqurI,4580
|
|
118
|
+
mloda_plugins/compute_framework/base_implementations/spark/spark_framework.py,sha256=-Nz82qt9zW2QQAM-QUqwlvBbzSeWYx1uWTxPExbWsqc,8327
|
|
118
119
|
mloda_plugins/compute_framework/base_implementations/spark/spark_merge_engine.py,sha256=syBOP6Ww9A_IfeJc49jpxByeP5PVvZTM9FFTUCZc3Xg,3452
|
|
119
120
|
mloda_plugins/compute_framework/base_implementations/spark/spark_pyarrow_transformer.py,sha256=CtIOllhGdYQisIiG0Ml0haG4sBC2UmrxKl8bhp4gzjY,3303
|
|
120
121
|
mloda_plugins/config/__init__.py,sha256=wm08JOS1kVronYOtmPJZCcEeMlA9wPOCFAIJG_Isi8c,34
|
|
121
122
|
mloda_plugins/config/feature/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
-
mloda_plugins/config/feature/loader.py,sha256=
|
|
123
|
+
mloda_plugins/config/feature/loader.py,sha256=urr2FQvQIXxeCM3KUHLNcRVEmD0iXXbqabRQJ79wfQc,7823
|
|
123
124
|
mloda_plugins/config/feature/models.py,sha256=RL8ok8Nn0bLHfgAq9K0HVKcTHzjG2x5gAKP394CSboA,1679
|
|
124
125
|
mloda_plugins/config/feature/parser.py,sha256=wl-Wsx1dnjiLjmnjh4du8veJVUv5JD0l57jzfDiZTOI,1001
|
|
125
126
|
mloda_plugins/feature_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
127
|
mloda_plugins/feature_group/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
127
|
-
mloda_plugins/feature_group/experimental/default_options_key.py,sha256=
|
|
128
|
-
mloda_plugins/feature_group/experimental/source_input_feature.py,sha256=
|
|
128
|
+
mloda_plugins/feature_group/experimental/default_options_key.py,sha256=h5i43xR4WclWs_b4N5jjsIWwmKhd4skFfn0C_0v3sAY,1020
|
|
129
|
+
mloda_plugins/feature_group/experimental/source_input_feature.py,sha256=la0T7l-HnxLCBCKOZhibgaoz-JRf44lBGicV9h2wAFk,11010
|
|
129
130
|
mloda_plugins/feature_group/experimental/aggregated_feature_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
|
-
mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py,sha256=
|
|
131
|
-
mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py,sha256=
|
|
132
|
-
mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py,sha256=
|
|
133
|
-
mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py,sha256=
|
|
131
|
+
mloda_plugins/feature_group/experimental/aggregated_feature_group/base.py,sha256=fjeWbZLJg37Ife7WQeF05GUiti7DBh-_Ft0crAl5eZU,11041
|
|
132
|
+
mloda_plugins/feature_group/experimental/aggregated_feature_group/pandas.py,sha256=4apsYNsz7pi8UzRHHjlgFT73JLNB-HIJ5fghtPtxums,4954
|
|
133
|
+
mloda_plugins/feature_group/experimental/aggregated_feature_group/polars_lazy.py,sha256=iAYm1mr3hiI5DvcZF6ZXBuoJ-qTyOs9IZkOOZ1wX32o,6256
|
|
134
|
+
mloda_plugins/feature_group/experimental/aggregated_feature_group/pyarrow.py,sha256=EQhw2_WhkLGR6UySLiqHfSSfaSotA6axCIPVM9_vPvk,5688
|
|
134
135
|
mloda_plugins/feature_group/experimental/clustering/__init__.py,sha256=769NSapfi48V7BBh8zoo-ale2We6K4OV6ocNlzAhfEw,59
|
|
135
|
-
mloda_plugins/feature_group/experimental/clustering/base.py,sha256=
|
|
136
|
-
mloda_plugins/feature_group/experimental/clustering/pandas.py,sha256=
|
|
136
|
+
mloda_plugins/feature_group/experimental/clustering/base.py,sha256=58lKB7Nkz7a5FerbENc4VItZOZNNZ3GCyi6pYN8k1ZM,18114
|
|
137
|
+
mloda_plugins/feature_group/experimental/clustering/pandas.py,sha256=XeV0z7Z2YriqStKqhhWqECXcKGeoFB53rc7B-cNi2xc,19271
|
|
137
138
|
mloda_plugins/feature_group/experimental/data_quality/__init__.py,sha256=ga8jdKaLl4bxkxMqNtRbrkHFnRWZIp8f3bR7DVG5d-I,45
|
|
138
139
|
mloda_plugins/feature_group/experimental/data_quality/missing_value/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py,sha256=
|
|
140
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py,sha256=
|
|
141
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py,sha256=
|
|
142
|
-
mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py,sha256=
|
|
143
|
-
mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py,sha256
|
|
144
|
-
mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py,sha256=
|
|
140
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/base.py,sha256=3-jFvKNpX7DYffWJL91BECdMxyXjALV1QQVQMt2mcjE,15384
|
|
141
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/pandas.py,sha256=KJ86z5eNPHJcIrU8_zYUIodnXlNwbm2geAKQ6bs-dSE,8542
|
|
142
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/pyarrow.py,sha256=lnOkjelQTVfwFdr97OFVebscnQHHoqA6UdsMcX9ltFM,14236
|
|
143
|
+
mloda_plugins/feature_group/experimental/data_quality/missing_value/python_dict.py,sha256=CcX2Ib44PDReHQOGypHbnk1piTKUeYUW4vrlg3Y-9ME,13888
|
|
144
|
+
mloda_plugins/feature_group/experimental/dimensionality_reduction/base.py,sha256=-Bi1W1eLpMiNwA5K8OIXanketvvvkMcEI_du6rd4q3o,17233
|
|
145
|
+
mloda_plugins/feature_group/experimental/dimensionality_reduction/pandas.py,sha256=nlK5-Fsh7oifSZcdtC9BmInXNmTQOW3wm7BKL7wrC_4,13722
|
|
145
146
|
mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
|
-
mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py,sha256=
|
|
147
|
+
mloda_plugins/feature_group/experimental/dynamic_feature_group_factory/dynamic_feature_group_factory.py,sha256=X8Oq8dw51I9yU0a68qqVf2CP8DytSyObW8D-grrqeMo,13533
|
|
147
148
|
mloda_plugins/feature_group/experimental/forecasting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
|
-
mloda_plugins/feature_group/experimental/forecasting/base.py,sha256=
|
|
149
|
+
mloda_plugins/feature_group/experimental/forecasting/base.py,sha256=w65k7Vv5kTgcgpqtLYHlyKfsuBwMmIuZwVX5Tx81buo,23534
|
|
149
150
|
mloda_plugins/feature_group/experimental/forecasting/forecasting_artifact.py,sha256=41HPYoJEXqTqcv6Zvce-vkL9RZ5YrdzSiJgmEFxGVR0,4289
|
|
150
|
-
mloda_plugins/feature_group/experimental/forecasting/pandas.py,sha256=
|
|
151
|
+
mloda_plugins/feature_group/experimental/forecasting/pandas.py,sha256=b4yWD3KuarIVfcXlFEu838vGTWePW_TRCOW2lTpKu0w,28713
|
|
151
152
|
mloda_plugins/feature_group/experimental/geo_distance/__init__.py,sha256=wqp7I3j87AmrVBi2rlqcz4Sj-R1QMe3EasmNFb_Zxg4,85
|
|
152
|
-
mloda_plugins/feature_group/experimental/geo_distance/base.py,sha256=
|
|
153
|
+
mloda_plugins/feature_group/experimental/geo_distance/base.py,sha256=eilTuoTKeNH2l9ncKjAZqxb2OVLUSuhFFBa_NlElrBQ,12725
|
|
153
154
|
mloda_plugins/feature_group/experimental/geo_distance/pandas.py,sha256=KwN_-sdpZobBiFev68ar0JWNXmupmAvh6f5L3CtbBAE,6023
|
|
154
155
|
mloda_plugins/feature_group/experimental/llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
156
|
mloda_plugins/feature_group/experimental/llm/cli.py,sha256=65VO3deuQyNo2gQWRh6HuJXvzMtnYS6WIdaV-fqCFhc,1409
|
|
156
157
|
mloda_plugins/feature_group/experimental/llm/installed_packages_feature_group.py,sha256=A89uyysHIT-OwGegAl7j4OC2dlZQy9Bk_6CHZOhwHig,3829
|
|
157
158
|
mloda_plugins/feature_group/experimental/llm/list_directory_feature_group.py,sha256=2rBMErXv6sEBaoAtNNyRs7QTOHp342X14NRGDHJkw14,6184
|
|
158
|
-
mloda_plugins/feature_group/experimental/llm/llm_file_selector.py,sha256=
|
|
159
|
+
mloda_plugins/feature_group/experimental/llm/llm_file_selector.py,sha256=ZKYhkXfBSVZFfuIFqqNlCOtZbJ5uzrYsO14lM-ao2Yo,8498
|
|
159
160
|
mloda_plugins/feature_group/experimental/llm/cli_features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
|
-
mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py,sha256=
|
|
161
|
+
mloda_plugins/feature_group/experimental/llm/cli_features/refactor_git_cached.py,sha256=JuzF9wzP6Dnd79Rx4I0aOJsijsUODya2PnxKAeUjVDc,17926
|
|
161
162
|
mloda_plugins/feature_group/experimental/llm/llm_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
163
|
mloda_plugins/feature_group/experimental/llm/llm_api/claude.py,sha256=fhZsvMXpiRTq4g0_80ajEOp9thk_qA1HPHzYUjTVC5M,13966
|
|
163
164
|
mloda_plugins/feature_group/experimental/llm/llm_api/gemini.py,sha256=4g4WwJ-FuqIF06gKTpEuLXgmiUCvMytVWSD5pf4bSBE,12623
|
|
@@ -181,28 +182,28 @@ mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool.p
|
|
|
181
182
|
mloda_plugins/feature_group/experimental/llm/tools/available/replace_file_tool_which_runs_tox.py,sha256=jTBpsIxF7mzZjeesd9ZeHUDwA17SkbLsL9brvl-YfOo,2119
|
|
182
183
|
mloda_plugins/feature_group/experimental/llm/tools/available/run_single_pytest.py,sha256=dLMb1iunH0EVY7YZ0NmlHC4kVhTOjs2Hjs2412dFTao,4114
|
|
183
184
|
mloda_plugins/feature_group/experimental/llm/tools/available/run_tox.py,sha256=2APL0MD_ExaMzsJK9_WfgDD9dmMY8amsgfc6B4Xgj70,3814
|
|
184
|
-
mloda_plugins/feature_group/experimental/node_centrality/base.py,sha256=
|
|
185
|
+
mloda_plugins/feature_group/experimental/node_centrality/base.py,sha256=9GLQMQrxmYx-qL5TKL6tHn8bs-YaSs1FuFL-XMbba_E,14620
|
|
185
186
|
mloda_plugins/feature_group/experimental/node_centrality/pandas.py,sha256=pBvoe-rhAInIPeAKfxLZOrJzAkkauUuxKguhF6XXXws,20261
|
|
186
187
|
mloda_plugins/feature_group/experimental/sklearn/__init__.py,sha256=UubmqLyavXbzW40FeGY06XyORo-x1Uo0WCLcpmPWnAs,208
|
|
187
188
|
mloda_plugins/feature_group/experimental/sklearn/sklearn_artifact.py,sha256=Sa5bIurlF-YZ0ybl1cPJWpLLOUTfaDa1DCffNcEvoVA,12777
|
|
188
189
|
mloda_plugins/feature_group/experimental/sklearn/encoding/__init__.py,sha256=WOe_iTVz2CXmVcL2IUNqhLJQqINFvY2rUktDXsNSOl8,153
|
|
189
|
-
mloda_plugins/feature_group/experimental/sklearn/encoding/base.py,sha256=
|
|
190
|
+
mloda_plugins/feature_group/experimental/sklearn/encoding/base.py,sha256=gLX_VOXzIseuRFwKSINyYBohry0_HxWKUiEGYpvzww4,19780
|
|
190
191
|
mloda_plugins/feature_group/experimental/sklearn/encoding/pandas.py,sha256=_U9gD-39wAFVl8tL1QexcJ2WZc7fu6qShuI1L0O1XBI,6001
|
|
191
192
|
mloda_plugins/feature_group/experimental/sklearn/pipeline/__init__.py,sha256=Z_xSZFAFItwRlbBVxbBxwW_S61tQ8r1N8Ih59jTUXqk,199
|
|
192
|
-
mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py,sha256=
|
|
193
|
+
mloda_plugins/feature_group/experimental/sklearn/pipeline/base.py,sha256=fwQP2qxze-ze0gMYFBpTg4GIHx7QkD9jjmbzayb1NwM,23308
|
|
193
194
|
mloda_plugins/feature_group/experimental/sklearn/pipeline/pandas.py,sha256=nKLRbqy2q5vFNhgEsHoBnwbaiJheV9bkgizDSYd_epE,4045
|
|
194
195
|
mloda_plugins/feature_group/experimental/sklearn/scaling/__init__.py,sha256=CsQEzK6DJ-WakWqsWTScHYsrBuOwLeX78zYV-NqxuDg,79
|
|
195
|
-
mloda_plugins/feature_group/experimental/sklearn/scaling/base.py,sha256=
|
|
196
|
+
mloda_plugins/feature_group/experimental/sklearn/scaling/base.py,sha256=NmTVWkN_ORT9RE4HNjwhBk0SOmiBFuQapbf4bv0rYHI,15335
|
|
196
197
|
mloda_plugins/feature_group/experimental/sklearn/scaling/pandas.py,sha256=8-DPSmUsEJVK4dlNh-041FI2YzmQ1Q7p6gWs0Zb7nKI,3960
|
|
197
|
-
mloda_plugins/feature_group/experimental/text_cleaning/base.py,sha256
|
|
198
|
+
mloda_plugins/feature_group/experimental/text_cleaning/base.py,sha256=Fy08UF0jE36mcKj5ddhj0Ilf33tTUQM_CCPhYVc3v2k,11209
|
|
198
199
|
mloda_plugins/feature_group/experimental/text_cleaning/pandas.py,sha256=7RbV8lMUzx5b8ph4IsXnab4v06IByrNOGte9oK7Zz0g,7339
|
|
199
200
|
mloda_plugins/feature_group/experimental/text_cleaning/python_dict.py,sha256=9wRE1RioFRL-OtX467u4OEPvhDTzQAvdB-XAaJ1zDys,7829
|
|
200
201
|
mloda_plugins/feature_group/experimental/time_window/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
|
-
mloda_plugins/feature_group/experimental/time_window/base.py,sha256=
|
|
202
|
-
mloda_plugins/feature_group/experimental/time_window/pandas.py,sha256=
|
|
203
|
-
mloda_plugins/feature_group/experimental/time_window/pyarrow.py,sha256=
|
|
202
|
+
mloda_plugins/feature_group/experimental/time_window/base.py,sha256=3Uf8nXPzLWqblPMqVrO0WKs8LIKFxlHDfinY89lCOs4,17757
|
|
203
|
+
mloda_plugins/feature_group/experimental/time_window/pandas.py,sha256=TLDoJgJypiD7UZUvW0hKeun8TA6IORC_1cdr0wFhbnc,7803
|
|
204
|
+
mloda_plugins/feature_group/experimental/time_window/pyarrow.py,sha256=C0SjfcS1OfCcwNcyvClpQugXwEwfpiFwCxTgmH642ow,10722
|
|
204
205
|
mloda_plugins/feature_group/input_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
205
|
-
mloda_plugins/feature_group/input_data/read_context_files.py,sha256=
|
|
206
|
+
mloda_plugins/feature_group/input_data/read_context_files.py,sha256=yNt-ToAcNEYtWf4cyH_3Hqu3J06kQLKX-GcDCCtYEF0,6031
|
|
206
207
|
mloda_plugins/feature_group/input_data/read_db.py,sha256=Men-XQxHqPFbNZrLuVd6qIZbbVpNU46_g7kyGw09XO8,5173
|
|
207
208
|
mloda_plugins/feature_group/input_data/read_db_feature.py,sha256=aOd1admNJ4az8czi7xDFvB-Dk7Li9RD5mdo9Sy0szkI,783
|
|
208
209
|
mloda_plugins/feature_group/input_data/read_file.py,sha256=Fmk-C6HxHsSt72d3Ga2USlOLgsI2VMLfvByZsANyO8c,4154
|
|
@@ -221,9 +222,9 @@ mloda_plugins/feature_group/input_data/read_files/text_file_reader.py,sha256=FUc
|
|
|
221
222
|
mloda_plugins/function_extender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
223
|
mloda_plugins/function_extender/base_implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
223
224
|
mloda_plugins/function_extender/base_implementations/otel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
|
-
mloda_plugins/function_extender/base_implementations/otel/otel_extender.py,sha256=
|
|
225
|
-
mloda-0.3.
|
|
226
|
-
mloda-0.3.
|
|
227
|
-
mloda-0.3.
|
|
228
|
-
mloda-0.3.
|
|
229
|
-
mloda-0.3.
|
|
225
|
+
mloda_plugins/function_extender/base_implementations/otel/otel_extender.py,sha256=qY-oBOh6UUDtkUzGJjzC2dT3KKxyvt3sgwXJH2lWLYY,743
|
|
226
|
+
mloda-0.3.1.dist-info/METADATA,sha256=t_u9DI3nK8jizOwyGtfvhpuNQqBkbRuQB0qaUZs_Gkk,16633
|
|
227
|
+
mloda-0.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
228
|
+
mloda-0.3.1.dist-info/entry_points.txt,sha256=f7hp7s4laABj9eN5YwEjQAyInF-fa687MXdz-hKYMIA,80
|
|
229
|
+
mloda-0.3.1.dist-info/top_level.txt,sha256=KScNbTs4_vV-mJ1pIlP6cyvMl611B3hNxVYj2hA0Ex4,25
|
|
230
|
+
mloda-0.3.1.dist-info/RECORD,,
|
|
@@ -52,7 +52,9 @@ class BaseArtifact(ABC):
|
|
|
52
52
|
"""
|
|
53
53
|
|
|
54
54
|
options = cls.get_singular_option_from_options(features)
|
|
55
|
-
|
|
55
|
+
if options is None or features.name_of_one_feature is None:
|
|
56
|
+
return None
|
|
57
|
+
return options.get(features.name_of_one_feature.name)
|
|
56
58
|
|
|
57
59
|
@classmethod
|
|
58
60
|
def get_singular_option_from_options(cls, features: FeatureSet) -> Options | None:
|
|
@@ -149,16 +149,16 @@ class Feature:
|
|
|
149
149
|
|
|
150
150
|
child_options = copy.deepcopy(self.child_options)
|
|
151
151
|
if child_options:
|
|
152
|
-
if child_options.get(DefaultOptionKeys.
|
|
153
|
-
val = child_options.get(DefaultOptionKeys.
|
|
152
|
+
if child_options.get(DefaultOptionKeys.in_features):
|
|
153
|
+
val = child_options.get(DefaultOptionKeys.in_features)
|
|
154
154
|
|
|
155
155
|
if isinstance(val, frozenset):
|
|
156
156
|
for v in val:
|
|
157
157
|
if isinstance(v, Feature):
|
|
158
|
-
child_options.group[DefaultOptionKeys.
|
|
158
|
+
child_options.group[DefaultOptionKeys.in_features] = v.name.name
|
|
159
159
|
|
|
160
160
|
if isinstance(val, Feature):
|
|
161
|
-
child_options.group[DefaultOptionKeys.
|
|
161
|
+
child_options.group[DefaultOptionKeys.in_features] = val.name.name
|
|
162
162
|
|
|
163
163
|
return hash((self.name, self.options, self.domain, compute_frameworks_hashable, self.data_type, child_options))
|
|
164
164
|
|
|
@@ -12,6 +12,11 @@ from mloda_core.abstract_plugins.components.feature_name import FeatureName
|
|
|
12
12
|
from mloda_core.abstract_plugins.components.options import Options
|
|
13
13
|
from mloda_plugins.feature_group.experimental.default_options_key import DefaultOptionKeys
|
|
14
14
|
|
|
15
|
+
# Separator constants for feature name parsing
|
|
16
|
+
CHAIN_SEPARATOR = "__" # Separates chained transformations (source→suffix)
|
|
17
|
+
COLUMN_SEPARATOR = "~" # Separates multi-column output index
|
|
18
|
+
INPUT_SEPARATOR = "&" # Separates multiple input features
|
|
19
|
+
|
|
15
20
|
|
|
16
21
|
class FeatureChainParser:
|
|
17
22
|
"""
|
|
@@ -19,18 +24,39 @@ class FeatureChainParser:
|
|
|
19
24
|
|
|
20
25
|
Feature chaining allows feature groups to be composed, where the output of one
|
|
21
26
|
feature group becomes the input to another. This is reflected in the feature name
|
|
22
|
-
using
|
|
27
|
+
using separators defined as module constants:
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
Separators:
|
|
30
|
+
- CHAIN_SEPARATOR ("__"): Separates chained transformations (source→suffix)
|
|
31
|
+
Example: price__mean_imputed__sum_7_day_window__max_aggr
|
|
32
|
+
(L→R: price is source, each suffix transforms the previous result)
|
|
33
|
+
- COLUMN_SEPARATOR ("~"): Separates multi-column output index
|
|
34
|
+
Example: feature__pca~0, feature__pca~1
|
|
35
|
+
- INPUT_SEPARATOR ("&"): Separates multiple input features
|
|
36
|
+
Example: point1&point2__haversine_distance
|
|
26
37
|
|
|
27
38
|
Each feature group in the chain extracts its relevant portion and passes the
|
|
28
39
|
rest to the next feature group in the chain.
|
|
29
40
|
"""
|
|
30
41
|
|
|
42
|
+
@classmethod
|
|
43
|
+
def is_chained_feature(cls, feature_name: str) -> bool:
|
|
44
|
+
"""Check if feature name contains the chain separator.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
feature_name: The feature name to check
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
True if the feature name contains CHAIN_SEPARATOR, False otherwise
|
|
51
|
+
"""
|
|
52
|
+
return CHAIN_SEPARATOR in feature_name
|
|
53
|
+
|
|
31
54
|
@classmethod
|
|
32
55
|
def parse_feature_name(
|
|
33
|
-
cls,
|
|
56
|
+
cls,
|
|
57
|
+
feature_name: FeatureName | str,
|
|
58
|
+
prefix_patterns: List[str],
|
|
59
|
+
pattern: str = CHAIN_SEPARATOR,
|
|
34
60
|
) -> Tuple[str | None, str | None]:
|
|
35
61
|
"""Internal method for parsing feature names - used by match_configuration_feature_chain_parser."""
|
|
36
62
|
_feature_name: str = feature_name.name if isinstance(feature_name, FeatureName) else feature_name
|
|
@@ -58,13 +84,16 @@ class FeatureChainParser:
|
|
|
58
84
|
|
|
59
85
|
@classmethod
|
|
60
86
|
def _match_pattern_based_feature(
|
|
61
|
-
cls,
|
|
87
|
+
cls,
|
|
88
|
+
feature_name: str | FeatureName,
|
|
89
|
+
prefix_patterns: List[str],
|
|
90
|
+
pattern: str = CHAIN_SEPARATOR,
|
|
62
91
|
) -> bool:
|
|
63
92
|
"""Internal method for matching pattern-based features - used by match_configuration_feature_chain_parser."""
|
|
64
93
|
_feature_name: FeatureName = FeatureName(feature_name) if isinstance(feature_name, str) else feature_name
|
|
65
94
|
|
|
66
95
|
try:
|
|
67
|
-
has_prefix_configuration, source_feature = cls.parse_feature_name(_feature_name,
|
|
96
|
+
has_prefix_configuration, source_feature = cls.parse_feature_name(_feature_name, prefix_patterns, pattern)
|
|
68
97
|
if has_prefix_configuration is None or source_feature is None:
|
|
69
98
|
return False
|
|
70
99
|
except ValueError:
|
|
@@ -240,10 +269,6 @@ class FeatureChainParser:
|
|
|
240
269
|
found_property_value, property_value, property_name, property_mapping[property_name]
|
|
241
270
|
)
|
|
242
271
|
|
|
243
|
-
# We deal with this case for now like this as it is easier and we can add tuples later.
|
|
244
|
-
if collected_property_value == "tuple_found": # type: ignore
|
|
245
|
-
return False
|
|
246
|
-
|
|
247
272
|
if property_tracker[property_name] is not None:
|
|
248
273
|
raise ValueError(f"Feature name has duplicate values for property '{property_name}'.")
|
|
249
274
|
|
|
@@ -256,8 +281,8 @@ class FeatureChainParser:
|
|
|
256
281
|
feature_name: str | FeatureName,
|
|
257
282
|
options: Options,
|
|
258
283
|
property_mapping: Optional[Dict[str, Any]] = None,
|
|
259
|
-
pattern: Optional[str] = None,
|
|
260
284
|
prefix_patterns: Optional[List[str]] = None,
|
|
285
|
+
pattern: str = CHAIN_SEPARATOR,
|
|
261
286
|
) -> bool:
|
|
262
287
|
"""
|
|
263
288
|
Unified method for matching features using either configuration-based or pattern-based parsing.
|
|
@@ -266,16 +291,16 @@ class FeatureChainParser:
|
|
|
266
291
|
feature_name: The feature name to match
|
|
267
292
|
options: Options object containing configuration
|
|
268
293
|
property_mapping: Optional property mapping for configuration-based parsing
|
|
269
|
-
pattern: Optional pattern string for pattern-based parsing
|
|
270
294
|
prefix_patterns: Optional prefix patterns for pattern-based parsing
|
|
295
|
+
pattern: Pattern string for pattern-based parsing (defaults to CHAIN_SEPARATOR)
|
|
271
296
|
|
|
272
297
|
Returns:
|
|
273
298
|
True if the feature matches either pattern-based or configuration-based parsing, False otherwise
|
|
274
299
|
"""
|
|
275
300
|
|
|
276
301
|
# string based matching
|
|
277
|
-
if
|
|
278
|
-
if cls._match_pattern_based_feature(feature_name,
|
|
302
|
+
if prefix_patterns is not None:
|
|
303
|
+
if cls._match_pattern_based_feature(feature_name, prefix_patterns, pattern):
|
|
279
304
|
return True
|
|
280
305
|
|
|
281
306
|
# configuration-based
|
|
@@ -305,10 +330,12 @@ class FeatureChainParser:
|
|
|
305
330
|
if not match:
|
|
306
331
|
raise ValueError(f"Invalid feature name format: {feature_name}")
|
|
307
332
|
|
|
308
|
-
# For L→R: source is everything BEFORE the last
|
|
309
|
-
suffix_start = feature_name.rfind(
|
|
333
|
+
# For L→R: source is everything BEFORE the last CHAIN_SEPARATOR
|
|
334
|
+
suffix_start = feature_name.rfind(CHAIN_SEPARATOR)
|
|
310
335
|
if suffix_start == -1:
|
|
311
|
-
raise ValueError(
|
|
336
|
+
raise ValueError(
|
|
337
|
+
f"Invalid feature name format: {feature_name}. Missing chain separator '{CHAIN_SEPARATOR}'."
|
|
338
|
+
)
|
|
312
339
|
|
|
313
340
|
# Return everything BEFORE the last double underscore (the source)
|
|
314
341
|
return feature_name[:suffix_start]
|
|
@@ -55,7 +55,7 @@ class Features:
|
|
|
55
55
|
needs its own configuration for certain parameters.
|
|
56
56
|
|
|
57
57
|
Protected keys are determined dynamically by reading:
|
|
58
|
-
-
|
|
58
|
+
- in_features (always protected)
|
|
59
59
|
- Keys listed in feature_options.get(mloda_feature_chainer_parser_key)
|
|
60
60
|
|
|
61
61
|
Args:
|
|
@@ -66,7 +66,7 @@ class Features:
|
|
|
66
66
|
ValueError: If non-protected keys have conflicting values
|
|
67
67
|
"""
|
|
68
68
|
# Get protected keys dynamically from the feature options
|
|
69
|
-
protected_keys = {DefaultOptionKeys.
|
|
69
|
+
protected_keys = {DefaultOptionKeys.in_features}
|
|
70
70
|
if feature_options.get(DefaultOptionKeys.mloda_feature_chainer_parser_key):
|
|
71
71
|
protected_keys.update(feature_options.get(DefaultOptionKeys.mloda_feature_chainer_parser_key))
|
|
72
72
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import importlib.metadata
|
|
4
4
|
import inspect
|
|
5
5
|
import hashlib
|
|
6
|
-
from typing import Type
|
|
6
|
+
from typing import Any, Type
|
|
7
7
|
from abc import ABC
|
|
8
8
|
|
|
9
9
|
|
|
@@ -20,7 +20,7 @@ class FeatureGroupVersion(ABC):
|
|
|
20
20
|
return "0.0.0"
|
|
21
21
|
|
|
22
22
|
@classmethod
|
|
23
|
-
def class_source_hash(cls, target_class: Type) -> str:
|
|
23
|
+
def class_source_hash(cls, target_class: Type[Any]) -> str:
|
|
24
24
|
"""
|
|
25
25
|
Returns a SHA-256 hash of the target class's source code.
|
|
26
26
|
"""
|
|
@@ -35,14 +35,14 @@ class FeatureGroupVersion(ABC):
|
|
|
35
35
|
return hashlib.sha256(source.encode("utf-8")).hexdigest()
|
|
36
36
|
|
|
37
37
|
@classmethod
|
|
38
|
-
def module_name(cls, target_class: Type) -> str:
|
|
38
|
+
def module_name(cls, target_class: Type[Any]) -> str:
|
|
39
39
|
"""
|
|
40
40
|
Returns the module name of the target class.
|
|
41
41
|
"""
|
|
42
42
|
return target_class.__module__
|
|
43
43
|
|
|
44
44
|
@classmethod
|
|
45
|
-
def version(cls, target_class: Type) -> str:
|
|
45
|
+
def version(cls, target_class: Type[Any]) -> str:
|
|
46
46
|
"""
|
|
47
47
|
Returns a composite version string.
|
|
48
48
|
|
|
@@ -53,7 +53,7 @@ class BaseInputData(ABC):
|
|
|
53
53
|
_key = cls.deal_with_base_input_data_name_as_cls_or_str(key)
|
|
54
54
|
|
|
55
55
|
if _key == subclass.data_access_name():
|
|
56
|
-
matched_data_access = subclass.match_subclass_data_access(value, [feature_name]) # type: ignore
|
|
56
|
+
matched_data_access = subclass.match_subclass_data_access(value, [feature_name]) # type: ignore[attr-defined]
|
|
57
57
|
if matched_data_access:
|
|
58
58
|
cls.add_base_input_data_to_options(subclass, matched_data_access, options)
|
|
59
59
|
return True
|
|
@@ -103,7 +103,7 @@ class BaseInputData(ABC):
|
|
|
103
103
|
subclasses = get_all_filtereted_subclasses(BaseInputData, cls)
|
|
104
104
|
|
|
105
105
|
for subclass in subclasses:
|
|
106
|
-
matched_data_access = subclass.match_subclass_data_access(data_access_collection, feature_names) # type: ignore
|
|
106
|
+
matched_data_access = subclass.match_subclass_data_access(data_access_collection, feature_names) # type: ignore[attr-defined]
|
|
107
107
|
if matched_data_access:
|
|
108
108
|
return (subclass, matched_data_access)
|
|
109
109
|
return False, False
|
|
@@ -147,7 +147,7 @@ class BaseInputData(ABC):
|
|
|
147
147
|
we can use this function to check if the class supports scoped data access and is the final child class.
|
|
148
148
|
"""
|
|
149
149
|
try:
|
|
150
|
-
cls.load_data(None, None) # type: ignore
|
|
150
|
+
cls.load_data(None, None) # type: ignore[arg-type]
|
|
151
151
|
except NotImplementedError:
|
|
152
152
|
return False
|
|
153
153
|
except AttributeError: # Expected as cls.load_data(None, None) should raise an error
|