"""Load an Association from a file or object."""
from inspect import isclass
from jwst.associations import Association, AssociationRegistry
__all__ = ["load_asn"]
[docs]
def load_asn(
serialized, fmt=None, first=True, validate=True, registry=AssociationRegistry, **kwargs
):
"""
Load an Association from a file or object.
Parameters
----------
serialized : object
The serialized form of the association.
fmt : str or None
The format to force. If None, try all available.
first : bool
A serialization potentially matches many rules.
Only return the first successful load.
validate : bool
Validate against the class's defined schema, if any.
registry : AssociationRegistry or None
The `~jwst.associations.AssociationRegistry` to use.
If None, no registry is used.
Can be passed just a registry class instead of instance.
**kwargs : dict
Other arguments to pass to the ``load`` methods defined
in the `~jwst.associations.lib.keyvalue_registry.KeyValueRegistry`
Returns
-------
Association object
The loaded association.
Raises
------
AssociationNotValidError
Cannot create or validate the association.
Notes
-----
The serialized object can be in any format
supported by the registered I/O routines. For example, for
JSON and YAML formats, the input can be either a string or
a file object containing the string.
If no registry is specified, the default
:meth:`~jwst.associations.Association.load` method is used.
"""
if registry is None:
return Association.load(serialized, fmt=fmt, validate=validate)
if isclass(registry):
registry = registry()
return registry.load(serialized, fmt=fmt, first=first, validate=validate, **kwargs)