Ejemplo n.º 1
0
 def read(cls, fp, encoding='macroman'):
     signature, key = read_fmt('4sH', fp)
     try:
         key = ImageResourceID(key)
     except ValueError:
         if ImageResourceID.is_path_info(key):
             logger.debug('Undefined PATH_INFO found: %d' % (key))
         elif ImageResourceID.is_plugin_resource(key):
             logger.debug('Undefined PLUGIN_RESOURCE found: %d' % (key))
         else:
             logger.warning('Unknown image resource %d' % (key))
     name = read_pascal_string(fp, encoding, padding=2)
     raw_data = read_length_block(fp, padding=2)
     if key in TYPES:
         data = TYPES[key].frombytes(raw_data)
         # try:
         #     _raw_data = data.tobytes(padding=1)
         #     assert _raw_data == raw_data, '%r vs %r' % (
         #         _raw_data, raw_data
         #     )
         # except AssertionError as e:
         #     logger.error(e)
         #     raise
     else:
         data = raw_data
     return cls(signature, key, name, data)