Example #1
0
 def parse_ini(self, ini):
     """Parse source ini and return attributes."""
     source_attributes = {
         'url': None,
         'url_template': None,
         'citation': None
     }
     config = cp.ConfigParser(dict_type=CaseInsensitiveDict)
     config.read(ini)
     for section in config.sections():
         for option in config.options(section):
             source_attributes[option] = unicode_replace(config.get(section,
                                                                    option))
     required_attributes = ('name', 'last_update')
     if not all(att in source_attributes for att in required_attributes):
         sys.exit('Source INI missing required attributes: %s.'
                  % ' and/or '.join(required_attributes))
     return source_attributes
Example #2
0
 def __call__(self, *args, **kwargs):
     """Call decorated (i.e. converted to unicode) function.
     
     Args:
         *args: Arguments of func which will be converted to bytes.
         **kwargs: Keyword arguments of func, which will be converted to
                   bytes.
     
     Returns:
         The output of func, converted to unicode if possible.
     
     """
     encoded_args = []
     encoded_kwargs = {}
     for arg in args:
         if isinstance(arg, unicode):
             encoded_args.append(arg.encode())
         else:
             encoded_args.append(arg)
     for k, v in kwargs.items():
         if isinstance(k, unicode):
             encoded_k = k.encode()
         else:
             encoded_k = k
         if isinstance(v, unicode):
             encoded_kwargs[encoded_k] = v.encode()
         else:
             encoded_kwargs[encoded_k] = v
     result = self.func(*encoded_args, **encoded_kwargs)
     if isinstance(result, (list, set)):
         result = type(result)(map(unicode_replace, result))
     elif isinstance(result, collections.Mapping):
         result = dict(map(unicode_replace, result.iteritems()))
     elif isinstance(result, str):
         result = unicode_replace(result)
     return result
Example #3
0
 def test_unicode_replace(self):
     self.assertTrue(isinstance(utils.unicode_replace(b'test'), unicode))
     self.assertTrue(isinstance(utils.unicode_replace(u'test'), unicode))