@@ -470,6 +470,156 @@ def on_demand_feature_view_list(ctx: click.Context, tags: list[str]):
470470 print (tabulate (table , headers = ["NAME" ], tablefmt = "plain" ))
471471
472472
473+ @cli .group (name = "saved-datasets" )
474+ def saved_datasets_cmd ():
475+ """
476+ [Experimental] Access saved datasets
477+ """
478+ pass
479+
480+
481+ @saved_datasets_cmd .command ("describe" )
482+ @click .argument ("name" , type = click .STRING )
483+ @click .pass_context
484+ def saved_datasets_describe (ctx : click .Context , name : str ):
485+ """
486+ [Experimental] Describe a saved dataset
487+ """
488+ store = create_feature_store (ctx )
489+
490+ try :
491+ saved_dataset = store .get_saved_dataset (name )
492+ except FeastObjectNotFoundException as e :
493+ print (e )
494+ exit (1 )
495+
496+ print (
497+ yaml .dump (
498+ yaml .safe_load (str (saved_dataset )),
499+ default_flow_style = False ,
500+ sort_keys = False ,
501+ )
502+ )
503+
504+
505+ @saved_datasets_cmd .command (name = "list" )
506+ @tagsOption
507+ @click .pass_context
508+ def saved_datasets_list (ctx : click .Context , tags : list [str ]):
509+ """
510+ [Experimental] List all saved datasets
511+ """
512+ store = create_feature_store (ctx )
513+ table = []
514+ tags_filter = utils .tags_list_to_dict (tags )
515+ for saved_dataset in store .list_saved_datasets (tags = tags_filter ):
516+ table .append ([saved_dataset .name ])
517+
518+ from tabulate import tabulate
519+
520+ print (tabulate (table , headers = ["NAME" ], tablefmt = "plain" ))
521+
522+
523+ @cli .group (name = "stream-feature-views" )
524+ def stream_feature_views_cmd ():
525+ """
526+ [Experimental] Access stream feature views
527+ """
528+ pass
529+
530+
531+ @stream_feature_views_cmd .command ("describe" )
532+ @click .argument ("name" , type = click .STRING )
533+ @click .pass_context
534+ def stream_feature_views_describe (ctx : click .Context , name : str ):
535+ """
536+ [Experimental] Describe a stream feature view
537+ """
538+ store = create_feature_store (ctx )
539+
540+ try :
541+ stream_feature_view = store .get_stream_feature_view (name )
542+ except FeastObjectNotFoundException as e :
543+ print (e )
544+ exit (1 )
545+
546+ print (
547+ yaml .dump (
548+ yaml .safe_load (str (stream_feature_view )),
549+ default_flow_style = False ,
550+ sort_keys = False ,
551+ )
552+ )
553+
554+
555+ @stream_feature_views_cmd .command (name = "list" )
556+ @tagsOption
557+ @click .pass_context
558+ def stream_feature_views_list (ctx : click .Context , tags : list [str ]):
559+ """
560+ [Experimental] List all stream feature views
561+ """
562+ store = create_feature_store (ctx )
563+ table = []
564+ tags_filter = utils .tags_list_to_dict (tags )
565+ for stream_feature_view in store .list_stream_feature_views (tags = tags_filter ):
566+ table .append ([stream_feature_view .name ])
567+
568+ from tabulate import tabulate
569+
570+ print (tabulate (table , headers = ["NAME" ], tablefmt = "plain" ))
571+
572+
573+ @cli .group (name = "validation-references" )
574+ def validation_references_cmd ():
575+ """
576+ [Experimental] Access validation references
577+ """
578+ pass
579+
580+
581+ @validation_references_cmd .command ("describe" )
582+ @click .argument ("name" , type = click .STRING )
583+ @click .pass_context
584+ def validation_references_describe (ctx : click .Context , name : str ):
585+ """
586+ [Experimental] Describe a validation reference
587+ """
588+ store = create_feature_store (ctx )
589+
590+ try :
591+ validation_reference = store .get_validation_reference (name )
592+ except FeastObjectNotFoundException as e :
593+ print (e )
594+ exit (1 )
595+
596+ print (
597+ yaml .dump (
598+ yaml .safe_load (str (validation_reference )),
599+ default_flow_style = False ,
600+ sort_keys = False ,
601+ )
602+ )
603+
604+
605+ @validation_references_cmd .command (name = "list" )
606+ @tagsOption
607+ @click .pass_context
608+ def validation_references_list (ctx : click .Context , tags : list [str ]):
609+ """
610+ [Experimental] List all validation references
611+ """
612+ store = create_feature_store (ctx )
613+ table = []
614+ tags_filter = utils .tags_list_to_dict (tags )
615+ for validation_reference in store .list_validation_references (tags = tags_filter ):
616+ table .append ([validation_reference .name ])
617+
618+ from tabulate import tabulate
619+
620+ print (tabulate (table , headers = ["NAME" ], tablefmt = "plain" ))
621+
622+
473623@cli .command ("plan" , cls = NoOptionDefaultFormat )
474624@click .option (
475625 "--skip-source-validation" ,
0 commit comments