Skip to content

Commit

Permalink
move reference to converter
Browse files Browse the repository at this point in the history
  • Loading branch information
braingram committed Jun 9, 2023
1 parent 8502ff2 commit 8747c85
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 13 deletions.
18 changes: 18 additions & 0 deletions asdf/core/_converters/reference.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from asdf.extension import Converter


class ReferenceConverter(Converter):
tags = []
types = ["asdf.reference.Reference"]

def to_yaml_tree(self, obj, tag, ctx):
from asdf.generic_io import relative_uri

uri = relative_uri(ctx.url, obj._uri) if ctx.url is not None else obj._uri
return {"$ref": uri}

def from_yaml_tree(self, node, tag, ctx):
raise NotImplementedError()

def select_tag(self, obj, tags, ctx):
return None
2 changes: 2 additions & 0 deletions asdf/core/_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from ._converters.complex import ComplexConverter
from ._converters.constant import ConstantConverter
from ._converters.external_reference import ExternalArrayReferenceConverter
from ._converters.reference import ReferenceConverter
from ._converters.tree import (
AsdfObjectConverter,
ExtensionMetadataConverter,
Expand All @@ -21,6 +22,7 @@
HistoryEntryConverter(),
SoftwareConverter(),
SubclassMetadataConverter(),
ReferenceConverter(),
]


Expand Down
5 changes: 5 additions & 0 deletions asdf/extension/_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,11 @@ def __init__(self, delegate, extension):
self._tags = sorted(relevant_tags)

self._types = []

if not len(self._tags) and not hasattr(delegate, "select_tag"):
# this converter supports no tags so don't inspect the types
return

for typ in delegate.types:
if isinstance(typ, (str, type)):
self._types.append(typ)
Expand Down
15 changes: 2 additions & 13 deletions asdf/reference.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

import numpy as np

from . import _types, generic_io, treeutil, util
from . import generic_io, treeutil, util
from .util import patched_urllib_parse

__all__ = ["resolve_fragment", "Reference", "find_references", "resolve_references", "make_reference"]
Expand Down Expand Up @@ -42,9 +42,7 @@ def resolve_fragment(tree, pointer):
return tree


class Reference(_types._AsdfType):
yaml_tag = "tag:yaml.org,2002:map"

class Reference:
def __init__(self, uri, base_uri=None, asdffile=None, target=None):
self._uri = uri
if asdffile is not None:
Expand Down Expand Up @@ -105,15 +103,6 @@ def __call__(self, **kwargs):
def __contains__(self, item):
return item in self._get_target()

@classmethod
def to_tree(cls, data, ctx):
uri = generic_io.relative_uri(ctx.uri, data._uri) if ctx.uri is not None else data._uri
return {"$ref": uri}

@classmethod
def validate(cls, data):
pass


def find_references(tree, ctx):
"""
Expand Down

0 comments on commit 8747c85

Please sign in to comment.