@@ -1253,7 +1253,11 @@ def to_excel(
12531253 df .to_excel (writer , sheet_name = main , freeze_panes = (1 , 1 ))
12541254
12551255 for name , view in views .items ():
1256+ if view is None :
1257+ continue
12561258 df , tview = self .view (view , return_view_def = True , verbose = max (verbose - 1 , 0 ))
1259+ if tview is None :
1260+ continue
12571261 memory = df .memory_usage (deep = True ).sum ()
12581262 if verbose :
12591263 print (
@@ -1654,10 +1658,12 @@ def unbiased_export(df):
16541658
16551659 def view (
16561660 self ,
1657- view_def : Union [str , CubeViewDef ],
1661+ view_def : Optional [ Union [str , CubeViewDef ] ],
16581662 return_view_def : bool = False ,
16591663 verbose : int = 0 ,
1660- ) -> Union [pandas .DataFrame , Tuple [pandas .DataFrame , CubeViewDef ]]:
1664+ ) -> Union [
1665+ Optional [pandas .DataFrame ], Tuple [Optional [pandas .DataFrame ], Optional [CubeViewDef ]]
1666+ ]:
16611667 """
16621668 Returns a dataframe, a pivot view.
16631669
@@ -1666,18 +1672,22 @@ def view(
16661672 :param view_def: view definition or a string
16671673 :param return_view_def: returns the view definition as well
16681674 :param verbose: verbosity level
1669- :return: dataframe
1675+ :return: dataframe or a couple (dataframe, view definition),
1676+ both of them can be one if view_def cannot be interpreted
16701677 """
1678+ assert view_def is not None , "view_def is None, this is not allowed."
16711679 if isinstance (view_def , str ):
16721680 view_def = self .make_view_def (view_def )
1681+ if view_def is None :
1682+ return (None , None ) if return_view_def else None
16731683 return super ().view (view_def , return_view_def = return_view_def , verbose = verbose )
16741684
1675- def make_view_def (self , name : str ) -> CubeViewDef :
1685+ def make_view_def (self , name : str ) -> Optional [ CubeViewDef ] :
16761686 """
16771687 Returns a view definition.
16781688
16791689 :param name: name of the view
1680- :return: a CubeViewDef
1690+ :return: a CubeViewDef or None if name does not make sense
16811691
16821692 Available views:
16831693
@@ -1892,14 +1902,6 @@ def mean_geo(gr):
18921902 f_highlight = f_bucket ,
18931903 order = order ,
18941904 ),
1895- "cmd" : lambda : CubeViewDef (
1896- key_index = index_cols ,
1897- values = self ._filter_column (["CMD" ], self .values ),
1898- ignore_unique = True ,
1899- keep_columns_in_index = ["suite" ],
1900- name = "cmd" ,
1901- order = order ,
1902- ),
19031905 "onnx" : lambda : CubeViewDef (
19041906 key_index = index_cols ,
19051907 values = self ._filter_column (
@@ -1927,11 +1929,25 @@ def mean_geo(gr):
19271929 no_index = True ,
19281930 ),
19291931 }
1930- assert name in implemented_views , (
1932+
1933+ cmd_col = self ._filter_column (["CMD" ], self .values , can_be_empty = True )
1934+ if cmd_col :
1935+ implemented_views ["cmd" ] = lambda : CubeViewDef (
1936+ key_index = index_cols ,
1937+ values = cmd_col ,
1938+ ignore_unique = True ,
1939+ keep_columns_in_index = ["suite" ],
1940+ name = "cmd" ,
1941+ order = order ,
1942+ )
1943+
1944+ assert name in implemented_views or name in {"cmd" }, (
19311945 f"Unknown view { name !r} , expected a name in { sorted (implemented_views )} ,"
19321946 f"\n --\n keys={ pprint .pformat (sorted (self .keys_time ))} , "
19331947 f"\n --\n values={ pprint .pformat (sorted (self .values ))} "
19341948 )
1949+ if name not in implemented_views :
1950+ return None
19351951 return implemented_views [name ]()
19361952
19371953 def post_load_process_piece (
0 commit comments