DetachedArchive#

class lsst.images.serialization.DetachedArchive#

Bases: InputArchive[Any]

An input archive that is not attached to any file.

Every method that would read data from a file raises ArchiveAccessRequiredError.

Notes#

Passing an instance to ArchiveTree.deserialize_component probes whether a component can be deserialized from the tree alone: success means no file access was needed, while ArchiveAccessRequiredError means the caller must use a live archive instead. Instances hold no state, so a single instance can be shared by any number of probes.

Methods Summary

deserialize_pointer(pointer, model_type, ...)

Deserialize an object that was saved by serialize_pointer.

get_array(model, *[, slices, strip_header])

Load an array from the archive.

get_basic_info(path)

Return basic identifying information for the archive at path without deserializing pixel data.

get_frame_set(ref)

Return an already-deserialized frame set from the archive.

get_opaque_metadata()

Return opaque metadata loaded from the file that should be saved if another version of the object is saved to the same file format.

get_structured_array(model[, strip_header])

Load a table from the archive as a structured array.

get_table(model[, strip_header])

Load a table from the archive.

open_tree(path, *[, partial])

Open path, load and validate its top-level tree, and yield (archive, tree, info) as a context manager.

Methods Documentation

deserialize_pointer(pointer: Any, model_type: type[U], deserializer: Callable[[U, InputArchive[Any]], V]) V#

Deserialize an object that was saved by serialize_pointer.

Parameters#

pointer

JSON Pointer model to dereference.

model_type

Pydantic model type that the pointer should dereference to.

deserializer

Callable that takes an instance of model_type and an input archive, and returns the deserialized object.

Returns#

V

The deserialized object.

Notes#

Implementations are required to remember previously-deserialized objects and return them when the same pointer is passed in multiple times.

There is no deserialize_direct (to pair with serialize_direct) because the caller can just call a deserializer function directly on a sub-model of its Pydantic tree.

get_array(model: ~lsst.images.serialization._asdf_utils.ArrayReferenceModel | ~lsst.images.serialization._asdf_utils.InlineArrayModel, *, slices: tuple[slice, ...] | ellipsis = Ellipsis, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) ndarray#

Load an array from the archive.

Parameters#

model

A Pydantic model that references or holds the array.

slices

Slices that specify a subset of the original array to read.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_array.

classmethod get_basic_info(path: str | ParseResult | ResourcePath | Path) ArchiveInfo#

Return basic identifying information for the archive at path without deserializing pixel data.

Each concrete backend reads only the headers/metadata it needs.

get_frame_set(ref: Any) FrameSet#

Return an already-deserialized frame set from the archive.

Parameters#

ref

Implementation-specific reference to the frame set.

Returns#

FrameSet

Loaded frame set.

get_opaque_metadata() OpaqueArchiveMetadata | None#

Return opaque metadata loaded from the file that should be saved if another version of the object is saved to the same file format.

Returns#

OpaqueArchiveMetadata

Opaque metadata specific to this archive type that should be round-tripped if it is saved in the same format.

get_structured_array(model: ~lsst.images.serialization._tables.TableModel, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) ndarray#

Load a table from the archive as a structured array.

Parameters#

model

A Pydantic model that references or holds the table.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_structured_array.

Returns#

numpy.ndarray

The loaded table as a structured array.

get_table(model: ~lsst.images.serialization._tables.TableModel, strip_header: ~collections.abc.Callable[[~astropy.io.fits.header.Header], None] = <function no_header_updates>) Table#

Load a table from the archive.

Parameters#

model

A Pydantic model that references or holds the table.

strip_header

A callable that strips out any FITS header cards added by the update_header argument in the corresponding call to add_table.

Returns#

astropy.table.Table

The loaded table.

classmethod open_tree(path: str | ParseResult | ResourcePath | Path, *, partial: bool = True, **backend_kwargs: Any) AbstractContextManager[tuple[InputArchive[P], ArchiveTree, ArchiveInfo]]#

Open path, load and validate its top-level tree, and yield (archive, tree, info) as a context manager.

Parameters#

path

File to be opened. Can be local or remote.

partial

Whether the file should be opened for incremental reads or not. Can be ignored by a backend where not relevant.

**backend_kwargs

Any keyword parameters that should be forwarded to the backend open.

Raises#

ArchiveReadError

If the file’s schema is not registered.

Notes#

Each concrete backend implements this.