def get_transformed_features_df(self, df_with_features: pd.DataFrame, full_feature_names: bool=False) -> pd.DataFrame:
    columns_to_cleanup = []
    for source_fv_projection in self.source_feature_view_projections.values():
        for feature in source_fv_projection.features:
            full_feature_ref = f'{source_fv_projection.name}__{feature.name}'
            if (full_feature_ref in df_with_features.keys()):
                df_with_features[feature.name] = df_with_features[full_feature_ref]
                columns_to_cleanup.append(feature.name)
            elif (feature.name in df_with_features.keys()):
                df_with_features[full_feature_ref] = df_with_features[feature.name]
                columns_to_cleanup.append(full_feature_ref)
    df_with_transformed_features = self.udf.__call__(df_with_features)
    rename_columns: Dict[(str, str)] = {}
    for feature in self.features:
        short_name = feature.name
        long_name = f'{self.projection.name_to_use()}__{feature.name}'
        if ((short_name in df_with_transformed_features.columns) and full_feature_names):
            rename_columns[short_name] = long_name
        elif (not full_feature_names):
            rename_columns[long_name] = short_name
    df_with_features.drop(columns=columns_to_cleanup, inplace=True)
    return df_with_transformed_features.rename(columns=rename_columns)
def get_transformed_features_df(self, df_with_features: pd.DataFrame, full_feature_names: bool=False) -> pd.DataFrame:
    columns_to_cleanup = []
    for source_fv_projection in self.source_feature_view_projections.values():
        for feature in source_fv_projection.features:
            full_feature_ref = f'{source_fv_projection.name}__{feature.name}'
            if (full_feature_ref in df_with_features.keys()):
                df_with_features[feature.name] = df_with_features[full_feature_ref]
                columns_to_cleanup.append(feature.name)
            elif (feature.name in df_with_features.keys()):
                df_with_features[full_feature_ref] = df_with_features[feature.name]
                columns_to_cleanup.append(full_feature_ref)
    df_with_transformed_features = self.udf.__call__(df_with_features)
    rename_columns: Dict[(str, str)] = {}
    for feature in self.features:
        short_name = feature.name
        long_name = f'{self.projection.name_to_use()}__{feature.name}'
        if ((short_name in df_with_transformed_features.columns) and full_feature_names):
            rename_columns[short_name] = long_name
        elif (not full_feature_names):
            rename_columns[long_name] = short_name
    df_with_features.drop(columns=columns_to_cleanup, inplace=True)
    return df_with_transformed_features.rename(columns=rename_columns)