Skip to content

Commit d8ea76f

Browse files
committed
CR updates
Signed-off-by: Achal Shah <achals@gmail.com>
1 parent 1b6bdf1 commit d8ea76f

2 files changed

Lines changed: 31 additions & 17 deletions

File tree

sdk/python/feast/diff/FcoDiff.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dataclasses import dataclass
22
from enum import Enum
3-
from typing import Any, List, Set, Tuple, Union, TypeVar
3+
from typing import Any, List, Set, Tuple, Union, TypeVar, Iterable
44
from unittest.mock import Base
55

66
from feast.base_feature_view import BaseFeatureView
@@ -9,6 +9,8 @@
99
from feast.feature_table import FeatureTable
1010
from feast.feature_view import FeatureView
1111
from feast.on_demand_feature_view import OnDemandFeatureView
12+
from feast.protos.feast.core.Entity_pb2 import Entity as EntityProto
13+
from feast.protos.feast.core.FeatureView_pb2 import FeatureView as FeatureViewProto
1214
from feast.request_feature_view import RequestFeatureView
1315

1416

@@ -35,6 +37,7 @@ class FcoDiff:
3537
transition_type: TransitionType
3638

3739

40+
@dataclass
3841
class RegistryDiff:
3942
fco_diffs: List[FcoDiff]
4043

@@ -49,8 +52,8 @@ def add_fco_diff(self, fco_diff: FcoDiff):
4952

5053

5154
def tag_objects_for_keep_delete_add(
52-
existing_objs: Set[T], desired_objs: Set[T]
53-
) -> Tuple[Set[T], Set[T], Set[T]]:
55+
existing_objs: Iterable[T], desired_objs: Iterable[T]
56+
) -> Tuple[Iterable[T], Iterable[T], Iterable[T]]:
5457
existing_obj_names = {e.name for e in existing_objs}
5558
desired_obj_names = {e.name for e in desired_objs}
5659

@@ -63,3 +66,23 @@ def tag_objects_for_keep_delete_add(
6366
}
6467

6568
return objs_to_keep, objs_to_delete, objs_to_add
69+
70+
71+
U = TypeVar('U', EntityProto, FeatureViewProto)
72+
73+
74+
def tag_proto_objects_for_keep_delete_add(
75+
existing_objs: Iterable[U], desired_objs: Iterable[U]
76+
) -> Tuple[Iterable[U], Iterable[U], Iterable[U]]:
77+
existing_obj_names = {e.spec.name for e in existing_objs}
78+
desired_obj_names = {e.spec.name for e in desired_objs}
79+
80+
objs_to_add = [
81+
e for e in desired_objs if e.spec.name not in existing_obj_names
82+
]
83+
objs_to_keep = [e for e in desired_objs if e.spec.name in existing_obj_names]
84+
objs_to_delete = [
85+
e for e in existing_objs if e.spec.name not in desired_obj_names
86+
]
87+
88+
return objs_to_keep, objs_to_delete, objs_to_add

sdk/python/feast/registry.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
FcoDiff,
2929
RegistryDiff,
3030
TransitionType,
31-
tag_objects_for_keep_delete_add,
31+
tag_proto_objects_for_keep_delete_add,
3232
)
3333
from feast.entity import Entity
3434
from feast.errors import (
@@ -130,19 +130,10 @@ def __init__(
130130
else 0
131131
)
132132

133-
@classmethod
134-
def from_proto(cls, regsitry_proto: RegistryProto):
135-
registry = cls(None, None)
136-
registry.cached_registry_proto = regsitry_proto
137-
registry.cached_registry_proto_created = datetime.utcnow()
138-
registry.cached_registry_proto_ttl = timedelta(days=1)
139-
registry.cache_being_updated = True
140-
return registry
141-
142133
# TODO(achals): This method needs to be filled out and used in the feast plan/apply methods.
143134
@staticmethod
144135
def diff_between(
145-
project: str, current_registry: "Registry", new_registry: "Registry"
136+
current_registry: RegistryProto, new_registry: RegistryProto
146137
) -> RegistryDiff:
147138
diff = RegistryDiff()
148139

@@ -151,9 +142,9 @@ def diff_between(
151142
entities_to_keep,
152143
entities_to_delete,
153144
entities_to_add,
154-
) = tag_objects_for_keep_delete_add(
155-
set(current_registry.list_entities(project=project, allow_cache=True)),
156-
set(new_registry.list_entities(project=project, allow_cache=True)),
145+
) = tag_proto_objects_for_keep_delete_add(
146+
current_registry.entities,
147+
new_registry.entities,
157148
)
158149

159150
for e in entities_to_add:

0 commit comments

Comments
 (0)