Source code for asdf.extension
"""
Support for plugins that extend asdf to serialize
additional custom types.
"""
import warnings
from asdf.exceptions import AsdfDeprecationWarning
from . import _legacy
from ._compressor import Compressor
from ._converter import Converter, ConverterProxy
from ._extension import Extension, ExtensionProxy
from ._manager import ExtensionManager, get_cached_extension_manager
from ._manifest import ManifestExtension
from ._tag import TagDefinition
from ._validator import Validator
__all__ = [
# New API
"Extension",
"ExtensionProxy",
"ManifestExtension",
"ExtensionManager",
"get_cached_extension_manager",
"TagDefinition",
"Converter",
"ConverterProxy",
"Compressor",
"Validator",
# Legacy API
"AsdfExtension",
"AsdfExtensionList",
"BuiltinExtension",
"default_extensions",
"get_default_resolver",
"get_cached_asdf_extension_list",
]
[docs]def get_cached_asdf_extension_list(extensions):
"""
Get a previously created AsdfExtensionList for the specified
extensions, or create and cache one if necessary. Building
the type index is expensive, so it helps performance to reuse
the index when possible.
Parameters
----------
extensions : list of asdf.extension.AsdfExtension
Returns
-------
asdf.extension.AsdfExtensionList
"""
from ._legacy import get_cached_asdf_extension_list
warnings.warn(
"get_cached_asdf_extension_list is deprecated. "
"Please see the new extension API "
"https://asdf.readthedocs.io/en/stable/asdf/extending/converters.html",
AsdfDeprecationWarning,
)
return get_cached_asdf_extension_list(extensions)
[docs]def get_default_resolver():
"""
Get the resolver that includes mappings from all installed extensions.
"""
from ._legacy import get_default_resolver
warnings.warn(
"get_default_resolver is deprecated. "
"Please see the new extension API "
"https://asdf.readthedocs.io/en/stable/asdf/extending/converters.html",
AsdfDeprecationWarning,
)
return get_default_resolver()
_deprecated_legacy = {
"default_extensions",
"AsdfExtension",
"AsdfExtensionList",
"BuiltinExtension",
}
def __getattr__(name):
if name in _deprecated_legacy:
warnings.warn(
f"{name} is deprecated. "
"Please see the new extension API "
"https://asdf.readthedocs.io/en/stable/asdf/extending/converters.html",
AsdfDeprecationWarning,
)
return getattr(_legacy, name)
msg = f"module {__name__!r} has no attribute {name!r}"
raise AttributeError(msg)