original_docstring: flat all the _search paras to list
  
          support recursive parser _search now, this means you can add _search/_link/_base paras in _search paras
          but you should only search currently level paras
  
          Args:
              search: search paras, {"para1": [1,2,3], 'para2': 'list(range(10))'}
              config: base config
  
          Returns: list of possible config
  
          
docstring: flat all the _search paras to list
  support recursive parser _search now, this means you can add _search/_link/_base paras in _search paras
  but you should only search currently level paras
docstring_tokens: flat all the _search paras to list support recursive parser _search now this means you can add _search / _link / _base paras in _search paras but you should only search currently level paras
code: def flat_search(cls, search, config: dict) -> List[dict]:
          """flat all the _search paras to list
  
          support recursive parser _search now, this means you can add _search/_link/_base paras in _search paras
          but you should only search currently level paras
  
          Args:
              search: search paras, {"para1": [1,2,3], 'para2': 'list(range(10))'}
              config: base config
  
          Returns: list of possible config
  
          """
          result = []
          module_search_para = search
          if not module_search_para:
              result.append(config)
          else:
              search_para_list = cls.get_named_list_cartesian_prod(module_search_para)
              for search_para in search_para_list:
                  base_config = copy.deepcopy(config)
                  base_config.update(search_para)
                  extend_config = cls(base_config).parser(parser_link=False)
                  result.extend(extend_config)
  
          return result
code_tokens: def flat_search ( cls , search , config : dict ) -> List [ dict ] : result = [ ] module_search_para = search if not module_search_para : result . append ( config ) else : search_para_list = cls . get_named_list_cartesian_prod ( module_search_para ) for search_para in search_para_list : base_config = copy . deepcopy ( config ) base_config . update ( search_para ) extend_config = cls ( base_config ) . parser ( parser_link = False ) result . extend ( extend_config ) return result
short_docstring: flat all the _search paras to list
  support recursive parser _search now, this means you can add _search/_link/_base paras in _search paras
  but you should only search currently level paras
short_docstring_tokens: flat all the _search paras to list support recursive parser _search now this means you can add _search / _link / _base paras in _search paras but you should only search currently level paras
comment: """flat all the _search paras to list
  
          support recursive parser _search now, this means you can add _search/_link/_base paras in _search paras
          but you should only search currently level paras
  
          Args:
              search: search paras, {"para1": [1,2,3], 'para2': 'list(range(10))'}
              config: base config
  
          Returns: list of possible config
  
          """