MCPcopy Index your code
hub / github.com/feast-dev/feast / ListFeatures

Method ListFeatures

sdk/python/feast/registry_server.py:1231–1296  ·  view source on GitHub ↗

List all features in the registry, optionally filtered by project, feature_view, or name.

(self, request: RegistryServer_pb2.ListFeaturesRequest, context)

Source from the content-addressed store, hash-verified

1229 return Empty()
1230
1231 def ListFeatures(self, request: RegistryServer_pb2.ListFeaturesRequest, context):
1232 """
1233 List all features in the registry, optionally filtered by project, feature_view, or name.
1234 """
1235 from feast.labeling.label_view import LabelView
1236
1237 allow_cache = request.allow_cache if hasattr(request, "allow_cache") else True
1238 feature_views = self.proxied_registry.list_all_feature_views(
1239 project=request.project,
1240 allow_cache=allow_cache,
1241 skip_udf=True,
1242 )
1243 permitted_fvs = permitted_resources(
1244 resources=cast(list[FeastObject], feature_views),
1245 actions=AuthzedAction.DESCRIBE,
1246 )
1247 requested_kind = (
1248 request.kind if hasattr(request, "kind") and request.kind else ""
1249 )
1250 features = []
1251 for fv in permitted_fvs:
1252 fv_name = getattr(fv, "name", None)
1253 kind = "label" if isinstance(fv, LabelView) else "feature"
1254 if requested_kind and kind != requested_kind:
1255 continue
1256 for feature in getattr(fv, "features", []):
1257 if request.feature_view and fv_name != request.feature_view:
1258 continue
1259 if request.name and feature.name != request.name:
1260 continue
1261 owner = ""
1262 created_timestamp = None
1263 last_updated_timestamp = None
1264
1265 if hasattr(fv, "spec") and hasattr(fv.spec, "owner"):
1266 owner = getattr(fv.spec, "owner", "")
1267
1268 if hasattr(fv, "meta"):
1269 if hasattr(fv.meta, "created_timestamp"):
1270 created_timestamp = fv.meta.created_timestamp
1271 if hasattr(fv.meta, "last_updated_timestamp"):
1272 last_updated_timestamp = fv.meta.last_updated_timestamp
1273
1274 features.append(
1275 Feature(
1276 name=feature.name,
1277 feature_view=fv_name if fv_name is not None else "",
1278 type=str(feature.dtype)
1279 if hasattr(feature, "dtype")
1280 else str(feature.valueType),
1281 description=getattr(feature, "description", ""),
1282 owner=owner,
1283 created_timestamp=created_timestamp,
1284 last_updated_timestamp=last_updated_timestamp,
1285 tags=getattr(feature, "tags", {}),
1286 kind=kind,
1287 )
1288 )

Callers

nothing calls this directly

Calls 4

permitted_resourcesFunction · 0.90
FeatureClass · 0.70

Tested by

no test coverage detected