12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import shutil
- from .. import constants, logger
- from . import _json
- def copy_registered_textures(dest, registration):
- logger.debug('io.copy_registered_textures(%s, %s)', dest, registration)
- for value in registration.values():
- copy(value['file_path'], dest)
- def copy(src, dst):
- logger.debug('io.copy(%s, %s)' % (src, dst))
- shutil.copy(src, dst)
- def dump(filepath, data, options=None):
- options = options or {}
- logger.debug('io.dump(%s, data, options=%s)', filepath, options)
- compress = options.get(constants.COMPRESSION, constants.NONE)
- if compress == constants.MSGPACK:
- try:
- import msgpack
- except ImportError:
- logger.error('msgpack module not found')
- raise
- logger.info('Dumping to msgpack')
- func = lambda x,y: msgpack.dump(x, y)
- mode = 'wb'
- else:
- round_off = options.get(constants.ENABLE_PRECISION)
- if round_off:
- _json.ROUND = options[constants.PRECISION]
- else:
- _json.ROUND = None
- logger.info('Dumping to JSON')
- func = lambda x,y: _json.json.dump(x, y, indent=4)
- mode = 'w'
- logger.info('Writing to %s', filepath)
- with open(filepath, mode=mode) as stream:
- func(data, stream)
- def load(filepath, options):
- logger.debug('io.load(%s, %s)', filepath, options)
- compress = options.get(constants.COMPRESSION, constants.NONE)
- if compress == constants.MSGPACK:
- try:
- import msgpack
- except ImportError:
- logger.error('msgpack module not found')
- raise
- module = msgpack
- mode = 'rb'
- else:
- logger.info('Loading JSON')
- module = _json.json
- mode = 'r'
- with open(filepath, mode=mode) as stream:
- data = module.load(stream)
- return data
|