@@ -470,6 +470,156 @@ def on_demand_feature_view_list(ctx: click.Context, tags: list[str]):
470
470
print (tabulate (table , headers = ["NAME" ], tablefmt = "plain" ))
471
471
472
472
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
+
473
623
@cli .command ("plan" , cls = NoOptionDefaultFormat )
474
624
@click .option (
475
625
"--skip-source-validation" ,
0 commit comments