|
1 | 1 | from dataclasses import dataclass |
2 | 2 | from enum import Enum |
3 | | -from typing import Any, List, Set, Tuple, Union |
| 3 | +from typing import Any, List, Set, Tuple, Union, TypeVar |
| 4 | +from unittest.mock import Base |
4 | 5 |
|
| 6 | +from feast.base_feature_view import BaseFeatureView |
5 | 7 | from feast.entity import Entity |
6 | 8 | from feast.feature_service import FeatureService |
7 | 9 | from feast.feature_table import FeatureTable |
@@ -43,67 +45,21 @@ def add_fco_diff(self, fco_diff: FcoDiff): |
43 | 45 | self.fco_diffs.append(fco_diff) |
44 | 46 |
|
45 | 47 |
|
46 | | -def _tag_registry_entities_for_keep_delete( |
47 | | - existing_entities: Set[Entity], desired_entities: Set[Entity] |
48 | | -) -> Tuple[Set[Entity], Set[Entity], Set[Entity]]: |
49 | | - existing_entity_names = {e.name for e in existing_entities} |
50 | | - desired_entity_names = {e.name for e in desired_entities} |
| 48 | +T = TypeVar('T', Entity, BaseFeatureView, FeatureService, FeatureTable) |
51 | 49 |
|
52 | | - entities_to_add = { |
53 | | - e for e in desired_entities if e.name not in existing_entity_names |
54 | | - } |
55 | | - entities_to_keep = {e for e in desired_entities if e.name in existing_entity_names} |
56 | | - entities_to_delete = { |
57 | | - e for e in existing_entities if e.name not in desired_entity_names |
58 | | - } |
59 | 50 |
|
60 | | - return entities_to_keep, entities_to_delete, entities_to_add |
61 | | - |
62 | | - |
63 | | -def _tag_registry_views_for_keep_delete( |
64 | | - existing_views: Union[ |
65 | | - Set[FeatureView], Set[RequestFeatureView], Set[OnDemandFeatureView] |
66 | | - ], |
67 | | - desired_views: Union[ |
68 | | - Set[FeatureView], Set[RequestFeatureView], Set[OnDemandFeatureView] |
69 | | - ], |
70 | | -) -> Tuple[ |
71 | | - Set[Union[FeatureView, RequestFeatureView, OnDemandFeatureView]], |
72 | | - Set[Union[FeatureView, RequestFeatureView, OnDemandFeatureView]], |
73 | | - Set[Union[FeatureView, RequestFeatureView, OnDemandFeatureView]], |
74 | | -]: |
75 | | - existing_view_names = {v.name for v in existing_views} |
76 | | - desired_view_names = {v.name for v in desired_views} |
77 | | - |
78 | | - views_to_add = {v for v in desired_views if v.name not in existing_view_names} |
79 | | - views_to_keep = {v for v in desired_views if v.name in existing_view_names} |
80 | | - views_to_delete = {v for v in existing_views if v.name not in desired_view_names} |
81 | | - return views_to_keep, views_to_delete, views_to_add |
82 | | - |
83 | | - |
84 | | -def _tag_registry_tables_for_keep_delete( |
85 | | - existing_tables: Set[FeatureTable], desired_tables: Set[FeatureTable] |
86 | | -) -> Tuple[Set[FeatureTable], Set[FeatureTable], Set[FeatureTable]]: |
87 | | - existing_table_names = {v.name for v in existing_tables} |
88 | | - desired_table_names = {v.name for v in desired_tables} |
89 | | - |
90 | | - tables_to_add = {t for t in desired_tables if t.name not in existing_table_names} |
91 | | - tables_to_keep = {t for t in desired_tables if t.name in existing_table_names} |
92 | | - tables_to_delete = {t for t in existing_tables if t.name not in desired_table_names} |
93 | | - return tables_to_keep, tables_to_delete, tables_to_add |
94 | | - |
95 | | - |
96 | | -def _tag_registry_services_for_keep_delete( |
97 | | - existing_service: Set[FeatureService], desired_service: Set[FeatureService] |
98 | | -) -> Tuple[Set[FeatureService], Set[FeatureService], Set[FeatureService]]: |
99 | | - existing_service_names = {v.name for v in existing_service} |
100 | | - desired_service_names = {v.name for v in desired_service} |
101 | | - |
102 | | - services_to_add = { |
103 | | - s for s in desired_service if s.name not in existing_service_names |
| 51 | +def tag_objects_for_keep_delete_add( |
| 52 | + existing_objs: Set[T], desired_objs: Set[T] |
| 53 | +) -> Tuple[Set[T], Set[T], Set[T]]: |
| 54 | + existing_obj_names = {e.name for e in existing_objs} |
| 55 | + desired_obj_names = {e.name for e in desired_objs} |
| 56 | + |
| 57 | + objs_to_add = { |
| 58 | + e for e in desired_objs if e.name not in existing_obj_names |
104 | 59 | } |
105 | | - services_to_delete = { |
106 | | - s for s in existing_service if s.name not in desired_service_names |
| 60 | + objs_to_keep = {e for e in desired_objs if e.name in existing_obj_names} |
| 61 | + objs_to_delete = { |
| 62 | + e for e in existing_objs if e.name not in desired_obj_names |
107 | 63 | } |
108 | | - services_to_keep = {s for s in desired_service if s.name in existing_service_names} |
109 | | - return services_to_keep, services_to_delete, services_to_add |
| 64 | + |
| 65 | + return objs_to_keep, objs_to_delete, objs_to_add |
0 commit comments