yamlext.py (1695B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\brennivin\yamlext.py 2 import yaml as _yaml 3 __all__ = ['dumps', 4 'dumpfile', 5 'dump', 6 'loads', 7 'loadfile', 8 'load', 9 'PyIO'] 10 11 class PyIO(object): 12 13 def __init__(self): 14 self._loader = _yaml.Loader 15 self._dumper = _yaml.Dumper 16 17 def dumps(self, obj, **kwargs): 18 return self.dump(obj, None, **kwargs) 19 20 def dumpfile(self, obj, path, **kwargs): 21 with open(path, 'w') as f: 22 self.dump(obj, f, **kwargs) 23 24 def dump(self, obj, stream, **kwargs): 25 return _yaml.dump(obj, stream, Dumper=self._dumper, **kwargs) 26 27 def loads(self, s): 28 return self.load(s) 29 30 def loadfile(self, path): 31 with open(path) as f: 32 return self.load(f) 33 34 def load(self, stream): 35 return _yaml.load(stream, Loader=self._loader) 36 37 38 class CIO(PyIO): 39 40 @classmethod 41 def is_supported(cls): 42 return hasattr(_yaml, 'CLoader') 43 44 def __init__(self): 45 PyIO.__init__(self) 46 self._loader = self._dumper = None 47 if self.is_supported(): 48 self._loader = _yaml.CLoader 49 self._dumper = _yaml.CDumper 50 51 52 def _preferred(): 53 if CIO.is_supported(): 54 return CIO() 55 return PyIO() 56 57 58 def dumps(obj, **kwargs): 59 return _preferred().dumps(obj, **kwargs) 60 61 62 def dumpfile(obj, path, **kwargs): 63 return _preferred().dumpfile(obj, path, **kwargs) 64 65 66 def dump(obj, stream, **kwargs): 67 return _preferred().dump(obj, stream, **kwargs) 68 69 70 def loads(s): 71 return _preferred().loads(s) 72 73 74 def loadfile(path): 75 return _preferred().loadfile(path) 76 77 78 def load(stream): 79 return _preferred().load(stream)