# This is a stub package designed to roughly emulate the _yaml | |
# extension module, which previously existed as a standalone module | |
# and has been moved into the `yaml` package namespace. | |
# It does not perfectly mimic its old counterpart, but should get | |
# close enough for anyone who's relying on it even when they shouldn't. | |
import yaml | |
# in some circumstances, the yaml module we imoprted may be from a different version, so we need | |
# to tread carefully when poking at it here (it may not have the attributes we expect) | |
if not getattr(yaml, '__with_libyaml__', False): | |
from sys import version_info | |
exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError | |
raise exc("No module named '_yaml'") | |
else: | |
from yaml._yaml import * | |
import warnings | |
warnings.warn( | |
'The _yaml extension module is now located at yaml._yaml' | |
' and its location is subject to change. To use the' | |
' LibYAML-based parser and emitter, import from `yaml`:' | |
' `from yaml import CLoader as Loader, CDumper as Dumper`.', | |
DeprecationWarning | |
) | |
del warnings | |
# Don't `del yaml` here because yaml is actually an existing | |
# namespace member of _yaml. | |
__name__ = '_yaml' | |
# If the module is top-level (i.e. not a part of any specific package) | |
# then the attribute should be set to ''. | |
# https://docs.python.org/3.8/library/types.html | |
__package__ = '' | |