code: def parse_cfgstr_list2(cfgstr_list, named_defaults_dict=None, cfgtype=None,
                         alias_keys=None, valid_keys=None, expand_nested=True,
                         strict=True, special_join_dict=None, is_nestedcfgtype=False,
                         metadata=None):
      r
      import utool as ut
      cfg_combos_list = []
      cfgstr_list_ = []
      dyndef_named_defaults = {}
      for cfgstr in cfgstr_list:
          if cfgstr.find('=:') > -1:
              cfgname, cfgopt_strs, subx = parse_cfgstr_name_options(cfgstr)
              assert cfgname.endswith('=')
              cfgname = cfgname[:-1]
              base_cfg_list = lookup_base_cfg_list(cfgname,
                                                   named_defaults_dict,
                                                   metadata=metadata)
              cfg_options = noexpand_parse_cfgstrs(cfgopt_strs)
              dyndef_named_defaults[cfgname] = cfg_options
          else:
              cfgstr_list_.append(cfgstr)
      if len(dyndef_named_defaults) > 0 and named_defaults_dict is None:
          named_defaults_dict = dyndef_named_defaults
      for cfgstr in cfgstr_list_:
          cfg_combos = []
          if cfgstr.find('::') > -1:
              special_cfgstr_list = cfgstr.split('::')
              special_combo_list = parse_cfgstr_list2(
                  special_cfgstr_list,
                  named_defaults_dict=named_defaults_dict, cfgtype=cfgtype,
                  alias_keys=alias_keys, valid_keys=valid_keys,
                  strict=strict, expand_nested=expand_nested,
                  is_nestedcfgtype=False, metadata=metadata)
              if special_join_dict is not None:
                  for special_combo in special_combo_list:
                      for cfg in special_combo:
                          cfg.update(special_join_dict)
              if is_nestedcfgtype:
                  cfg_combo = tuple([combo for combo in special_combo_list])
              else:
                  cfg_combo = special_combo_list
              if expand_nested:
                  cfg_combos.extend(cfg_combo)
              else:
                  cfg_combos_list.append(cfg_combo)
          else:
              cfgname, cfgopt_strs, subx = parse_cfgstr_name_options(cfgstr)
              try:
                  base_cfg_list = lookup_base_cfg_list(cfgname,
                                                       named_defaults_dict,
                                                       metadata=metadata)
              except Exception as ex:
                  ut.printex(ex, keys=['cfgstr_list', 'cfgstr_list_'])
                  raise
              for base_cfg in base_cfg_list:
                  print('cfgname = %r' % (cfgname,))
                  print('cfgopt_strs = %r' % (cfgopt_strs,))
                  print('base_cfg = %r' % (base_cfg,))
                  print('alias_keys = %r' % (alias_keys,))
                  print('cfgtype = %r' % (cfgtype,))
                  print('offset = %r' % (len(cfg_combos),))
                  print('valid_keys = %r' % (valid_keys,))
                  print('strict = %r' % (strict,))
                  cfg_combo = customize_base_cfg(
                      cfgname, cfgopt_strs, base_cfg, cfgtype, alias_keys,
                      valid_keys, strict=strict, offset=len(cfg_combos))
                  if is_nestedcfgtype:
                      cfg_combo = [cfg_combo]
                  if expand_nested:
                      cfg_combos.extend(cfg_combo)
                  else:
                      cfg_combos_list.append(cfg_combo)
          if expand_nested:
              cfg_combos_list.append(cfg_combos)
      return cfg_combos_list