Skip to content

Commit 0d18cb1

Browse files
committed
True Fixes
Signed-off-by: Achal Shah <achals@gmail.com>
1 parent 1507e95 commit 0d18cb1

2 files changed

Lines changed: 35 additions & 94 deletions

File tree

sdk/python/feast/diff/FcoDiff.py

Lines changed: 31 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -46,27 +46,16 @@ def add_fco_diff(self, fco_diff: FcoDiff):
4646
def _tag_registry_entities_for_keep_delete(
4747
existing_entities: Set[Entity], desired_entities: Set[Entity]
4848
) -> Tuple[Set[Entity], Set[Entity], Set[Entity]]:
49-
desired_entity_names = {e.name: e for e in desired_entities}
50-
existing_entity_names = {e.name: e for e in existing_entities}
51-
52-
entities_to_add = set(
53-
[
54-
desired_entity_names[name]
55-
for name in desired_entity_names.keys() - existing_entity_names.keys()
56-
]
57-
)
58-
entities_to_delete = set(
59-
[
60-
existing_entity_names[name]
61-
for name in existing_entity_names.keys() - desired_entity_names.keys()
62-
]
63-
)
64-
entities_to_keep = set(
65-
[
66-
desired_entity_names[name]
67-
for name in desired_entity_names.keys() & existing_entity_names.keys()
68-
]
69-
)
49+
existing_entity_names = {e.name for e in existing_entities}
50+
desired_entity_names = {e.name for e in desired_entities}
51+
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+
}
7059

7160
return entities_to_keep, entities_to_delete, entities_to_add
7261

@@ -83,83 +72,38 @@ def _tag_registry_views_for_keep_delete(
8372
Set[Union[FeatureView, RequestFeatureView, OnDemandFeatureView]],
8473
Set[Union[FeatureView, RequestFeatureView, OnDemandFeatureView]],
8574
]:
75+
existing_view_names = {v.name for v in existing_views}
76+
desired_view_names = {v.name for v in desired_views}
8677

87-
existing_views_by_name = {v.name: v for v in existing_views}
88-
desired_views_by_name = {v.name: v for v in desired_views}
89-
90-
views_to_add = set(
91-
[
92-
desired_views_by_name[name]
93-
for name in desired_views_by_name.keys() - existing_views_by_name.keys()
94-
]
95-
)
96-
views_to_delete = set(
97-
[
98-
existing_views_by_name[name]
99-
for name in existing_views_by_name.keys() - desired_views_by_name.keys()
100-
]
101-
)
102-
views_to_keep = set(
103-
[
104-
desired_views_by_name[name]
105-
for name in desired_views_by_name.keys() & existing_views_by_name.keys()
106-
]
107-
)
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}
10881
return views_to_keep, views_to_delete, views_to_add
10982

11083

11184
def _tag_registry_tables_for_keep_delete(
11285
existing_tables: Set[FeatureTable], desired_tables: Set[FeatureTable]
11386
) -> Tuple[Set[FeatureTable], Set[FeatureTable], Set[FeatureTable]]:
114-
existing_tables_by_name = {v.name: v for v in existing_tables}
115-
desired_tables_by_name = {v.name: v for v in desired_tables}
116-
117-
tables_to_add = set(
118-
[
119-
desired_tables_by_name[name]
120-
for name in desired_tables_by_name.keys() - existing_tables_by_name.keys()
121-
]
122-
)
123-
tables_to_delete = set(
124-
[
125-
existing_tables_by_name[name]
126-
for name in existing_tables_by_name.keys() - desired_tables_by_name.keys()
127-
]
128-
)
129-
tables_to_keep = set(
130-
[
131-
desired_tables_by_name[name]
132-
for name in desired_tables_by_name.keys() & existing_tables_by_name.keys()
133-
]
134-
)
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}
13593
return tables_to_keep, tables_to_delete, tables_to_add
13694

13795

13896
def _tag_registry_services_for_keep_delete(
13997
existing_service: Set[FeatureService], desired_service: Set[FeatureService]
14098
) -> Tuple[Set[FeatureService], Set[FeatureService], Set[FeatureService]]:
141-
existing_services_by_name = {v.name: v for v in existing_service}
142-
desired_services_by_name = {v.name: v for v in desired_service}
143-
144-
services_to_add = set(
145-
[
146-
desired_services_by_name[name]
147-
for name in desired_services_by_name.keys()
148-
- existing_services_by_name.keys()
149-
]
150-
)
151-
services_to_delete = set(
152-
[
153-
existing_services_by_name[name]
154-
for name in existing_services_by_name.keys()
155-
- desired_services_by_name.keys()
156-
]
157-
)
158-
services_to_keep = set(
159-
[
160-
desired_services_by_name[name]
161-
for name in desired_services_by_name.keys()
162-
& existing_services_by_name.keys()
163-
]
164-
)
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
104+
}
105+
services_to_delete = {
106+
s for s in existing_service if s.name not in desired_service_names
107+
}
108+
services_to_keep = {s for s in desired_service if s.name in existing_service_names}
165109
return services_to_keep, services_to_delete, services_to_add

sdk/python/feast/feature_store.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
from feast.feature_service import FeatureService
3939
from feast.feature_table import FeatureTable
4040
from feast.feature_view import (
41+
DUMMY_ENTITY,
4142
DUMMY_ENTITY_ID,
4243
DUMMY_ENTITY_NAME,
4344
DUMMY_ENTITY_VAL,
@@ -61,7 +62,6 @@
6162
from feast.request_feature_view import RequestFeatureView
6263
from feast.type_map import python_value_to_proto_value
6364
from feast.usage import log_exceptions, log_exceptions_and_usage, set_usage_attribute
64-
from feast.value_type import ValueType
6565
from feast.version import get_version
6666

6767
warnings.simplefilter("once", DeprecationWarning)
@@ -489,11 +489,6 @@ def apply(
489489
odfv.infer_features()
490490

491491
# Handle all entityless feature views by using DUMMY_ENTITY as a placeholder entity.
492-
DUMMY_ENTITY = Entity(
493-
name=DUMMY_ENTITY_NAME,
494-
join_key=DUMMY_ENTITY_ID,
495-
value_type=ValueType.INT32,
496-
)
497492
entities_to_update.append(DUMMY_ENTITY)
498493

499494
# Add all objects to the registry and update the provider's infrastructure.
@@ -1565,7 +1560,9 @@ def _validate_feature_views(feature_views: List[BaseFeatureView]):
15651560
case_insensitive_fv_name = fv.name.lower()
15661561
if case_insensitive_fv_name in fv_names:
15671562
raise ValueError(
1568-
f"More than one feature view with name {case_insensitive_fv_name} found. Please ensure that all feature view names are case-insensitively unique. It may be necessary to ignore certain files in your feature repository by using a .feastignore file."
1563+
f"More than one feature view with name {case_insensitive_fv_name} found. "
1564+
f"Please ensure that all feature view names are case-insensitively unique. "
1565+
f"It may be necessary to ignore certain files in your feature repository by using a .feastignore file."
15691566
)
15701567
else:
15711568
fv_names.add(case_insensitive_fv_name)

0 commit comments

Comments
 (0)