Repository: incubator-ariatosca Updated Branches: refs/heads/ARIA-392-Failing-to-load-ruamel.yaml [created] 8e1806233
ARIA-392 Failing to load ruamel.yaml Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/8e180623 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/8e180623 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/8e180623 Branch: refs/heads/ARIA-392-Failing-to-load-ruamel.yaml Commit: 8e18062339446512411789b7f5129ddcf2331816 Parents: 737fff5 Author: max-orlov <[email protected]> Authored: Mon Oct 23 15:58:14 2017 +0300 Committer: max-orlov <[email protected]> Committed: Mon Oct 23 15:58:14 2017 +0300 ---------------------------------------------------------------------- aria/__init__.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/8e180623/aria/__init__.py ---------------------------------------------------------------------- diff --git a/aria/__init__.py b/aria/__init__.py index 76a62ce..633c5c8 100644 --- a/aria/__init__.py +++ b/aria/__init__.py @@ -18,11 +18,43 @@ The ARIA root package provides entry points for extension and storage initializa """ import sys +import types +import os import pkg_resources aria_package_name = 'apache-ariatosca' __version__ = pkg_resources.get_distribution(aria_package_name).version + + + +try: + import ruamel # noqa: F401 +except ImportError: + if sys.version_info[0] > 2: + raise + + # Traverse all of the site-packages and try to load ruamel. + for packages_dir in sys.path: + ruamel_path = os.path.join(packages_dir, 'ruamel') + if not os.path.exists(ruamel_path): + continue + + # If the top dir has an __init__.py file, the loading should have + # succeeded automatically + if os.path.exists(os.path.join(ruamel_path, '__init__.py')): + raise + + # Dynamically create mapping to the ruamel package + ruamel_module = sys.modules.setdefault( + 'ruamel', + types.ModuleType('ruamel') + ) + # add path to the mapped package + ruamel_module.__dict__.setdefault('__path__', []).append(ruamel_path) + + + from .orchestrator.decorators import workflow, operation # pylint: disable=wrong-import-position from . import ( # pylint: disable=wrong-import-position extension, @@ -62,7 +94,7 @@ def install_aria_extensions(): if module_name.startswith('aria_extension_'): loader.find_module(module_name).load_module(module_name) for entry_point in pkg_resources.iter_entry_points(group='aria_extension'): - entry_point.load() + entry_point.resolve() extension.init()
