示例#1
0
def read_schema(schema_file, extensions=None):
    """
    Read a schema file from disk in order to pass it as an argument
    to a new datamodel.
    """
    def get_resolver(asdf_file):
        extensions = asdf_file._extensions

        def asdf_file_resolver(uri):
            return extensions._url_mapping(extensions._tag_mapping(uri))

        return asdf_file_resolver

    default_extensions = [GWCSExtension(), JWSTExtension()]

    if extensions is None:
        extensions = default_extensions[:]
    else:
        extensions.extend(default_extensions)
    asdf_file = AsdfFile(extensions=extensions)

    if hasattr(asdf_file, 'resolver'):
        file_resolver = asdf_file.resolver
    else:
        file_resolver = get_resolver(asdf_file)

    schema = asdf_schema.load_schema(schema_file,
                                     resolver=file_resolver,
                                     resolve_references=True)

    schema = merge_property_trees(schema)
    return schema
示例#2
0
from asdf import AsdfFile
from asdf import yamlutil
from asdf import schema as asdf_schema
from asdf import extension as asdf_extension

from . import ndmodel
from . import filetype
from . import fits_support
from . import properties
from . import schema as mschema

from .extension import BaseExtension
from jwst.transforms.jwextension import JWSTExtension
from gwcs.extension import GWCSExtension

jwst_extensions = [GWCSExtension(), JWSTExtension(), BaseExtension()]


class DataModel(properties.ObjectNode, ndmodel.NDModel):
    """
    Base class of all of the data models.
    """
    schema_url = "core.schema.yaml"

    def __init__(self,
                 init=None,
                 schema=None,
                 extensions=None,
                 pass_invalid_values=False):
        """
        Parameters