docs: def parse_cfgstr_list(cfgstr_list, smartcast=True, oldmode=True):
      r"""
      Parses a list of items in the format
      ['var1:val1', 'var2:val2', 'var3:val3']
      the '=' character can be used instead of the ':' character if desired
  
      TODO: see ut.parse_cfgstr3
  
      Args:
          cfgstr_list (list):
  
      Returns:
          dict: cfgdict
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_arg import *  # NOQA
          >>> import utool as ut
          >>> cfgstr_list = ['var1=val1', 'var2=1', 'var3=1.0', 'var4=None', 'var5=[1,2,3]', 'var6=(a,b,c)']
          >>> smartcast = True
          >>> cfgdict = parse_cfgstr_list(cfgstr_list, smartcast, oldmode=False)
          >>> result = ut.repr2(cfgdict, sorted_=True, newlines=False)
          >>> print(result)
          {'var1': 'val1', 'var2': 1, 'var3': 1.0, 'var4': None, 'var5': [1, 2, 3], 'var6': ('a', 'b', 'c')}
  
          {'var1': 'val1', 'var2': 1, 'var3': 1.0, 'var4': None}
  
          {'var4': None, 'var1': 'val1', 'var3': 1.0, 'var2': 1}
      """
      cfgdict = {}
      for item in cfgstr_list:
          if item == '':
              continue
          if oldmode:
              keyval_tup = item.replace('=', ':').split(':')
              assert len(keyval_tup) == 2, '[!] Invalid cfgitem=%r' % (item,)
              key, val = keyval_tup
          else:
              keyval_tup = item.split('=')
              if len(keyval_tup) == 1:
                  # single specifications are interpeted as booleans
                  key = keyval_tup[0]
                  val = True
              else:
                  assert len(keyval_tup) >= 2, '[!] Invalid cfgitem=%r' % (item,)
                  key, val = keyval_tup[0], '='.join(keyval_tup[1:])
          if smartcast:
              val = util_type.smart_cast2(val)
          cfgdict[key] = val
      return cfgdict