-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Expand file tree
/
Copy pathfactory.py
More file actions
24 lines (21 loc) · 1.22 KB
/
factory.py
File metadata and controls
24 lines (21 loc) · 1.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from feast.importer import import_class
TRANSFORMATION_CLASS_FOR_TYPE = {
"python": "feast.transformation.python_transformation.PythonTransformation",
"pandas": "feast.transformation.pandas_transformation.PandasTransformation",
"substrait": "feast.transformation.substrait_transformation.SubstraitTransformation",
"sql": "feast.transformation.sql_transformation.SQLTransformation",
"spark_sql": "feast.transformation.spark_transformation.SparkTransformation",
"spark": "feast.transformation.spark_transformation.SparkTransformation",
"ray": "feast.transformation.ray_transformation.RayTransformation",
}
def get_transformation_class_from_type(transformation_type: str):
if transformation_type in TRANSFORMATION_CLASS_FOR_TYPE:
transformation_type = TRANSFORMATION_CLASS_FOR_TYPE[transformation_type]
elif not transformation_type.endswith("Transformation"):
raise ValueError(
f"Invalid transformation type: {transformation_type}. Choose from {list(TRANSFORMATION_CLASS_FOR_TYPE.keys())}."
)
module_name, transformation_class_type = transformation_type.rsplit(".", 1)
return import_class(
module_name, transformation_class_type, transformation_class_type
)