Skip to content

Commit

Permalink
changes required by reviewer
Browse files Browse the repository at this point in the history
  • Loading branch information
braingram committed Feb 22, 2023
1 parent 520a2cb commit 9872c60
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 55 deletions.
2 changes: 1 addition & 1 deletion asdf/asdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from .config import config_context, get_config
from .exceptions import AsdfConversionWarning, AsdfDeprecationWarning, AsdfWarning
from .extension import AsdfExtension, AsdfExtensionList, Extension, ExtensionProxy, get_cached_extension_manager
from .extension._legacy import _get_cached_asdf_extension_list as get_cached_asdf_extension_list
from .extension._legacy import get_cached_asdf_extension_list
from .search import AsdfSearchResult
from .tags.core import AsdfObject, ExtensionMetadata, HistoryEntry, Software
from .util import NotSet
Expand Down
57 changes: 50 additions & 7 deletions asdf/extension/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@
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 ._legacy import (
AsdfExtension,
AsdfExtensionList,
BuiltinExtension,
get_cached_asdf_extension_list,
get_default_resolver,
)
from ._legacy import AsdfExtension, AsdfExtensionList, BuiltinExtension
from ._manager import ExtensionManager, get_cached_extension_manager
from ._manifest import ManifestExtension
from ._tag import TagDefinition
Expand Down Expand Up @@ -40,8 +38,53 @@
]


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)


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()


def __getattr__(name):
if name == "default_extensions":
warnings.warn(
"default_extensions is deprecated. "
"Please see the new extension API "
"https://asdf.readthedocs.io/en/stable/asdf/extending/converters.html",
AsdfDeprecationWarning,
)
return _legacy.default_extensions
msg = f"module {__name__!r} has no attribute {name!r}"
raise AttributeError(msg)
44 changes: 5 additions & 39 deletions asdf/extension/_legacy.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,16 +179,6 @@ def get_cached_asdf_extension_list(extensions):
-------
asdf.extension.AsdfExtensionList
"""
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)


def _get_cached_asdf_extension_list(extensions):
from ._extension import ExtensionProxy

# The tuple makes the extensions hashable so that we
Expand All @@ -199,11 +189,11 @@ def _get_cached_asdf_extension_list(extensions):
# instances in identical order.
extensions = tuple(ExtensionProxy.maybe_wrap(e) for e in extensions)

return __get_cached_asdf_extension_list(extensions)
return _get_cached_asdf_extension_list(extensions)


@lru_cache
def __get_cached_asdf_extension_list(extensions):
def _get_cached_asdf_extension_list(extensions):
return AsdfExtensionList(extensions)


Expand Down Expand Up @@ -239,7 +229,7 @@ def extensions(self):

@property
def extension_list(self):
return _get_cached_asdf_extension_list(self.extensions)
return get_cached_asdf_extension_list(self.extensions)

@property
def package_metadata(self):
Expand All @@ -258,35 +248,11 @@ def resolver(self):
return self.extension_list.resolver


_default_extensions = _DefaultExtensions()


def __getattr__(name):
if name == "default_extensions":
warnings.warn(
"default_extensions is deprecated. "
"Please see the new extension API "
"https://asdf.readthedocs.io/en/stable/asdf/extending/converters.html",
AsdfDeprecationWarning,
)
return _default_extensions
msg = f"module {__name__!r} has no attribute {name!r}"
raise AttributeError(msg)
default_extensions = _DefaultExtensions()


def get_default_resolver():
"""
Get the resolver that includes mappings from all installed extensions.
"""
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()


def _get_default_resolver():
return _default_extensions.resolver
return default_extensions.resolver
10 changes: 5 additions & 5 deletions asdf/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from . import constants, extension, generic_io, reference, tagged, treeutil, util, versioning, yamlutil
from .config import get_config
from .exceptions import AsdfDeprecationWarning, AsdfWarning
from .extension._legacy import _get_default_resolver
from .extension import _legacy
from .util import patched_urllib_parse

YAML_SCHEMA_METASCHEMA_ID = "http://stsci.edu/schemas/yaml-schema/draft-01"
Expand Down Expand Up @@ -243,7 +243,7 @@ def _make_seen_key(self, instance, schema):

@lru_cache
def _create_validator(validators=YAML_VALIDATORS, visit_repeat_nodes=False):
meta_schema = _load_schema_cached(YAML_SCHEMA_METASCHEMA_ID, _get_default_resolver(), False, False)
meta_schema = _load_schema_cached(YAML_SCHEMA_METASCHEMA_ID, _legacy.get_default_resolver(), False, False)

type_checker = mvalidators.Draft4Validator.TYPE_CHECKER.redefine_many(
{
Expand Down Expand Up @@ -442,7 +442,7 @@ def load_schema(url, resolver=None, resolve_references=False, resolve_local_refs
if resolver is None:
# We can't just set this as the default in load_schema's definition
# because invoking get_default_resolver at import time leads to a circular import.
resolver = _get_default_resolver()
resolver = _legacy.get_default_resolver()

# We want to cache the work that went into constructing the schema, but returning
# the same object is treacherous, because users who mutate the result will not
Expand Down Expand Up @@ -763,9 +763,9 @@ def applicable_validators(schema):
applicable_validators = methodcaller("items")

meta_schema_id = schema.get("$schema", YAML_SCHEMA_METASCHEMA_ID)
meta_schema = _load_schema_cached(meta_schema_id, _get_default_resolver(), False, False)
meta_schema = _load_schema_cached(meta_schema_id, _legacy.get_default_resolver(), False, False)

resolver = _make_resolver(_get_default_resolver())
resolver = _make_resolver(_legacy.get_default_resolver())

cls = mvalidators.create(
meta_schema=meta_schema,
Expand Down
4 changes: 2 additions & 2 deletions asdf/tests/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
from asdf.block import Block
from asdf.constants import YAML_TAG_PREFIX
from asdf.exceptions import AsdfConversionWarning, AsdfDeprecationWarning
from asdf.extension._legacy import _default_extensions as default_extensions
from asdf.extension import _legacy
from asdf.tags.core import AsdfObject
from asdf.versioning import (
AsdfVersion,
Expand Down Expand Up @@ -98,7 +98,7 @@ def assert_tree_match(old_tree, new_tree, ctx=None, funcname="assert_equal", ign

if ctx is None:
version_string = str(versioning.default_version)
ctx = default_extensions.extension_list
ctx = _legacy.default_extensions.extension_list
else:
version_string = ctx.version_string

Expand Down
2 changes: 1 addition & 1 deletion asdf/tests/test_versioning.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import pytest

from asdf.extension._legacy import _default_extensions as default_extensions
from asdf.extension._legacy import default_extensions
from asdf.schema import load_schema
from asdf.versioning import (
AsdfSpec,
Expand Down

0 comments on commit 9872c60

Please sign in to comment.