loaders.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # -*- coding: utf-8 -*-
  2. # Description:
  3. # Author: Ilya Mashchenko (ilyam8)
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. from sys import version_info
  6. PY_VERSION = version_info[:2]
  7. try:
  8. if PY_VERSION > (3, 1):
  9. from pyyaml3 import SafeLoader as YamlSafeLoader
  10. else:
  11. from pyyaml2 import SafeLoader as YamlSafeLoader
  12. except ImportError:
  13. from yaml import SafeLoader as YamlSafeLoader
  14. try:
  15. from collections import OrderedDict
  16. except ImportError:
  17. from third_party.ordereddict import OrderedDict
  18. DEFAULT_MAPPING_TAG = 'tag:yaml.org,2002:map' if PY_VERSION > (3, 1) else u'tag:yaml.org,2002:map'
  19. def dict_constructor(loader, node):
  20. return OrderedDict(loader.construct_pairs(node))
  21. YamlSafeLoader.add_constructor(DEFAULT_MAPPING_TAG, dict_constructor)
  22. def load_yaml(stream):
  23. loader = YamlSafeLoader(stream)
  24. try:
  25. return loader.get_single_data()
  26. finally:
  27. loader.dispose()
  28. def load_config(file_name):
  29. with open(file_name, 'r') as stream:
  30. return load_yaml(stream)