@@ -485,26 +485,36 @@ def _get_any_feature_view(self, name: str, project: str) -> BaseFeatureView:
485485 return fv
486486
487487 def _list_all_feature_views (
488- self , project : str , tags : Optional [dict [str , str ]], ** kwargs
488+ self ,
489+ project : str ,
490+ tags : Optional [dict [str , str ]],
491+ updated_since : Optional [datetime ] = None ,
492+ ** kwargs ,
489493 ) -> List [BaseFeatureView ]:
490494 return (
491495 cast (
492496 list [BaseFeatureView ],
493- self ._list_feature_views (project = project , tags = tags , ** kwargs ),
497+ self ._list_feature_views (
498+ project = project , tags = tags , updated_since = updated_since , ** kwargs
499+ ),
494500 )
495501 + cast (
496502 list [BaseFeatureView ],
497- self ._list_stream_feature_views (project = project , tags = tags , ** kwargs ),
503+ self ._list_stream_feature_views (
504+ project = project , tags = tags , updated_since = updated_since , ** kwargs
505+ ),
498506 )
499507 + cast (
500508 list [BaseFeatureView ],
501509 self ._list_on_demand_feature_views (
502- project = project , tags = tags , ** kwargs
510+ project = project , tags = tags , updated_since = updated_since , ** kwargs
503511 ),
504512 )
505513 + cast (
506514 list [BaseFeatureView ],
507- self ._list_label_views (project = project , tags = tags , ** kwargs ),
515+ self ._list_label_views (
516+ project = project , tags = tags , updated_since = updated_since , ** kwargs
517+ ),
508518 )
509519 )
510520
@@ -1597,6 +1607,7 @@ def _list_objects(
15971607 tags : Optional [dict [str , str ]] = None ,
15981608 proto_only : bool = False ,
15991609 skip_udf : bool = False ,
1610+ updated_since : Optional [datetime ] = None ,
16001611 ):
16011612 """
16021613 Args:
@@ -1618,6 +1629,17 @@ def _list_objects(
16181629
16191630 with self .read_engine .begin () as conn :
16201631 stmt = select (table ).where (table .c .project_id == project )
1632+ if updated_since is not None :
1633+ # Ensure naive datetimes are treated as UTC, consistent with
1634+ # the Python-side filters that compare against offset-naive UTC
1635+ # last_updated_timestamp values from protobuf.
1636+ if updated_since .tzinfo is None :
1637+ updated_since_utc = updated_since .replace (tzinfo = timezone .utc )
1638+ else :
1639+ updated_since_utc = updated_since .astimezone (timezone .utc )
1640+ stmt = stmt .where (
1641+ table .c .last_updated_timestamp >= int (updated_since_utc .timestamp ())
1642+ )
16211643 rows = conn .execute (stmt ).all ()
16221644 if rows :
16231645 objects = []
0 commit comments