Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
Returns
-------
asdffile : AsdfFile
The new AsdfFile object.
"""
readonly = False
# For now retain backwards compatibility with the old API behavior,
# specifically when being called from AsdfFile.open
if not _compat:
mode = _check_and_set_mode(fd, mode)
readonly = (mode == 'r' and not copy_arrays)
instance = AsdfFile(extensions=extensions,
ignore_version_mismatch=ignore_version_mismatch,
ignore_unrecognized_tag=ignore_unrecognized_tag,
copy_arrays=copy_arrays, lazy_load=lazy_load,
custom_schema=custom_schema, _readonly=readonly)
return AsdfFile._open_impl(instance,
fd, uri=uri, mode=mode,
validate_checksums=validate_checksums,
do_not_fill_defaults=do_not_fill_defaults,
_force_raw_types=_force_raw_types,
strict_extension_check=strict_extension_check,
ignore_missing_extensions=ignore_missing_extensions)
Write all blocks to disk serially.
Parameters
----------
uri : str
The base uri of the external blocks
"""
from . import asdf
for i, block in enumerate(self.external_blocks):
if uri is None:
raise ValueError(
"Can't write external blocks, since URI of main file is "
"unknown.")
subfd = self.get_external_uri(uri, i)
asdffile = asdf.AsdfFile()
block = copy.copy(block)
block._array_storage = 'internal'
asdffile.blocks.add(block)
block._used = True
asdffile.write_to(subfd, pad_blocks=pad_blocks)
schema : schema, optional
Explicit schema to use. If not provided, the schema to use
is determined by the tag on instance (or subinstance).
validators : dict, optional
A dictionary mapping properties to validators to use (instead
of the built-in ones and ones provided by extension types).
reading: bool, optional
Indicates whether validation is being performed when the file is being
read. This is useful to allow for different validation behavior when
reading vs writing files.
"""
if ctx is None:
from .asdf import AsdfFile
ctx = AsdfFile()
validator = get_validator(schema, ctx, validators, ctx.resolver,
*args, **kwargs)
validator.validate(instance, _schema=(schema or None))
validate_large_literals(instance, reading=reading)
readonly = False
# For now retain backwards compatibility with the old API behavior,
# specifically when being called from AsdfFile.open
if not _compat:
mode = _check_and_set_mode(fd, mode)
readonly = (mode == 'r' and not copy_arrays)
instance = AsdfFile(extensions=extensions,
ignore_version_mismatch=ignore_version_mismatch,
ignore_unrecognized_tag=ignore_unrecognized_tag,
copy_arrays=copy_arrays, lazy_load=lazy_load,
custom_schema=custom_schema, _readonly=readonly)
return AsdfFile._open_impl(instance,
fd, uri=uri, mode=mode,
validate_checksums=validate_checksums,
do_not_fill_defaults=do_not_fill_defaults,
_force_raw_types=_force_raw_types,
strict_extension_check=strict_extension_check,
ignore_missing_extensions=ignore_missing_extensions)
def find_or_create_block_for_array(self, arr, ctx):
from .tags.core import ndarray
if not isinstance(arr, ndarray.NDArrayType):
base = util.get_array_base(arr)
for hdu in self._hdulist:
if hdu.data is None:
continue
if base is util.get_array_base(hdu.data):
return _FitsBlock(hdu)
return super(
_EmbeddedBlockManager, self).find_or_create_block_for_array(arr, ctx)
class AsdfInFits(asdf.AsdfFile):
"""
Embed ASDF tree content in a FITS file.
The YAML rendering of the tree is stored in a special FITS
extension with the EXTNAME of ``ASDF``. Arrays in the ASDF tree
may refer to binary data in other FITS extensions by setting
source to a string with the prefix ``fits:`` followed by an
``EXTNAME``, ``EXTVER`` pair, e.g. ``fits:SCI,0``.
Examples
--------
Create a FITS file with ASDF structure, based on an existing FITS
file::
from astropy.io import fits