diff options
author | Matt Clay <matt@mystile.com> | 2022-03-07 09:55:00 -0800 |
---|---|---|
committer | Matt Clay <matt@mystile.com> | 2022-03-08 12:51:33 -0800 |
commit | 822fddd627af5fe5648466eb418f144409e6e402 (patch) | |
tree | aeb956f0a2fe2c9cb54e8d0c96c69dc4b1c3f3be /lib | |
parent | f43c54d8902cdc3f7b1844beb429fa8239f1d671 (diff) | |
download | ansible-822fddd627af5fe5648466eb418f144409e6e402.tar.gz |
Fix yaml loader and compat.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ansible/module_utils/common/yaml.py | 34 | ||||
-rw-r--r-- | lib/ansible/parsing/yaml/loader.py | 5 |
2 files changed, 21 insertions, 18 deletions
diff --git a/lib/ansible/module_utils/common/yaml.py b/lib/ansible/module_utils/common/yaml.py index 68f837568a..f91bf1234d 100644 --- a/lib/ansible/module_utils/common/yaml.py +++ b/lib/ansible/module_utils/common/yaml.py @@ -11,34 +11,38 @@ __metaclass__ = type from functools import partial as _partial -import ansible.module_utils.compat.typing as t - HAS_LIBYAML = False + try: import yaml as _yaml except ImportError: HAS_YAML = False - SafeLoader = None - SafeDumper = None - Parser = None - yaml_load = None - yaml_load_all = None - yaml_dump = None - yaml_dump_all = None else: HAS_YAML = True + +if HAS_YAML: try: - SafeLoader = _yaml.CSafeLoader - SafeDumper = _yaml.CSafeDumper - Parser = _yaml.cyaml.CParser + from yaml import CSafeLoader as SafeLoader + from yaml import CSafeDumper as SafeDumper + from yaml.cyaml import CParser as Parser + HAS_LIBYAML = True except AttributeError: - SafeLoader = _yaml.SafeLoader # type: t.Type[_yaml.CSafeLoader] | t.Type[_yaml.SafeLoader] # type: ignore[no-redef] - SafeDumper = _yaml.SafeDumper # type: t.Type[_yaml.CSafeDumper] | t.Type[_yaml.SafeDumper] # type: ignore[no-redef] - Parser = _yaml.parser.Parser # type: t.Type[_yaml.cyaml.CParser] | t.Type[_yaml.parser.Parser] # type: ignore[no-redef] + from yaml import SafeLoader # type: ignore[misc] + from yaml import SafeDumper # type: ignore[misc] + from yaml.parser import Parser # type: ignore[misc] yaml_load = _partial(_yaml.load, Loader=SafeLoader) yaml_load_all = _partial(_yaml.load_all, Loader=SafeLoader) yaml_dump = _partial(_yaml.dump, Dumper=SafeDumper) yaml_dump_all = _partial(_yaml.dump_all, Dumper=SafeDumper) +else: + SafeLoader = object # type: ignore[assignment,misc] + SafeDumper = object # type: ignore[assignment,misc] + Parser = object # type: ignore[assignment,misc] + + yaml_load = None # type: ignore[assignment] + yaml_load_all = None # type: ignore[assignment] + yaml_dump = None # type: ignore[assignment] + yaml_dump_all = None # type: ignore[assignment] diff --git a/lib/ansible/parsing/yaml/loader.py b/lib/ansible/parsing/yaml/loader.py index e2989a49ed..15bde79aab 100644 --- a/lib/ansible/parsing/yaml/loader.py +++ b/lib/ansible/parsing/yaml/loader.py @@ -27,20 +27,19 @@ from ansible.module_utils.common.yaml import HAS_LIBYAML, Parser if HAS_LIBYAML: class AnsibleLoader(Parser, AnsibleConstructor, Resolver): # type: ignore[misc] # pylint: disable=inconsistent-mro def __init__(self, stream, file_name=None, vault_secrets=None): - Parser.__init__(self, stream) # pylint: disable=non-parent-init-called + Parser.__init__(self, stream) AnsibleConstructor.__init__(self, file_name=file_name, vault_secrets=vault_secrets) Resolver.__init__(self) else: from yaml.composer import Composer from yaml.reader import Reader from yaml.scanner import Scanner - from yaml.parser import Parser class AnsibleLoader(Reader, Scanner, Parser, Composer, AnsibleConstructor, Resolver): # type: ignore[misc,no-redef] # pylint: disable=inconsistent-mro def __init__(self, stream, file_name=None, vault_secrets=None): Reader.__init__(self, stream) Scanner.__init__(self) - Parser.__init__(self) # type: ignore[call-arg] # pylint: disable=non-parent-init-called + Parser.__init__(self) Composer.__init__(self) AnsibleConstructor.__init__(self, file_name=file_name, vault_secrets=vault_secrets) Resolver.__init__(self) |