.. currentmodule:: asdf

*******
Changes
*******

What's new in asdf 2.9.2?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Fix deprecation warnings stemming from the release of pytest 7.0.0.

- Fix bug in pytest plugin when schemas are not in a directory named "schemas".

What's new in asdf 2.9.1?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Fix typo in testing module ``__init__.py`` name.

What's new in asdf 2.9.0?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Added the capability for classes to expose their contents
  to AsdfFile.info and AsdfFile.search via the ``__asdf_traverse__`` method.

- Drop support for Python 3.6.

- Update setup.py to raise error if "git submodule update --init" has
  not been run.

- Add ability for tags to correspond to multiple schema_uri, with an
  implied allOf among the schema_uris.

- Add the URL of the file being parsed to ``SerializationContext``.

- Add ``asdf.testing.helpers`` module with simplified versions of test
  helpers previously available in ``asdf.tests.helpers``.

What's new in asdf 2.8.3?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Fix use of "python" instead of "python3" in compatibility tests.

What's new in asdf 2.8.2?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Fix array compression for non-native byte order.

- Fix bug in schema loading when URI is claimed by both legacy
  and new-style extensions.

- Hide 'name' and 'version' attributes on instances of
  NDArrayType.

What's new in asdf 2.8.1?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- Fix bug that corrupts ndarray views when a new block is added
  to an existing file in absence of a block index.

What's new in asdf 2.8.0?
=========================

The ASDF Standard is at v1.6.0.

Changes include:

- New plugin APIs for block compressors, extensions, and schemas.

- New global configuration mechanism (``asdf.get_config()``).

- Support for the asdf:// URI scheme.

- Drop support for Python 3.5.

- Support for ASDF Standard 1.6.0, which is available via the
  ``version`` argument to ``AsdfFile.__init__`` but not yet the
  default.

- Values that match defaults defined in schemas are no longer
  automatically removed from the ASDF tree.

- ``None`` values are no longer removed from the tree on write.

- Remove the ``asdf.test`` method and ``asdf.__githash__`` attribute.

- And more, see full changelog below for details.

What's new in asdf 2.7.5?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

- Fix bug in ``asdf.schema.check_schema`` causing relative references in
  metaschemas to be resolved incorrectly.

- Fix bug that corrupts ndarray views when a new block is added
  to an existing file in absence of a block index.

What's New in asdf 2.7.4?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

- Fix pytest plugin failure under older versions of pytest.

- Fix bugs when serializing views over non-contiguous and FITS
  base arrays.

- Add support for opening files from HTTPS URLs and following
  HTTP/HTTPS redirects.

What's New in asdf 2.7.3?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

- Fix bug resulting in invalid strides values for views over
  FITS arrays.

- Add pytest plugin options to skip and xfail individual tests
  and xfail the unsupported ndarray-1.0.0 schema example.

What's New in asdf 2.7.2?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

* Fix bug causing test collection failures under Python 3.9.

* Fix bug when decompressing arrays with numpy 1.20.

* Replace ``assert`` statements with ``raise`` at the behest
  of the bandit security linter.

What's New in asdf 2.7.1?
=========================

The ASDF Standard is at v1.5.0.

The sole change in this release:

* Fix bug preventing access to copied array data after
  an ``AsdfFile`` is closed.

What's New in asdf 2.7.0?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

* Performance improvements when reading and validating
  ASDF files.

* Numerous bug fixes.  See complete changelog below for details.

* Add option to ``asdf.open`` that disables schema validation on read.

* Improved warning messages.  All `asdf` library warnings now
  subclass ``asdf.exceptions.AsdfWarning``.

* Drop support for filling default values from subschemas
  within oneOf or anyOf combiners.

* Resolve deprecation warnings from the `asdf` pytest plugin
  when used with newer versions of pytest.

* Drop support for 2.x versions of the jsonschema package.

What's New in asdf 2.6.0?
=========================

The ASDF Standard is at v1.5.0.

Changes include:

* ASDF Standard 1.5.0 is now the default for new files.  Changes to
  the standard include several new and updated transform schemas,
  and removal of wcs schemas that were previously deprecated and
  moved to the ``gwcs`` package.

* Add ``asdf.info`` and ``AsdfFile.search`` methods for visualizing
  and interactively searching an ASDF tree.

* Fix bug causing too many bytes to be consumed when reading
  compressed blocks.

* Support validation and serialization of additional numpy
  scalar types.

* Fix serialization of trees containing implicit internal references
  and reference cycles, and simplify handling of children in
  ``ExtensionType`` subclasses.

* Fix bug preventing addition of history entires to a file that
  was initially saved without them.

* Expand developer documentation to cover the details of pyyaml
  integration and conversion between tagged trees and custom trees.

What's New in asdf 2.5.2?
=========================

The ASDF Standard is at v1.4.0.

Changes include:

* Add schemas that were previously missing from ASDF Standard 1.4.0,
  and fix a variety of minor issues in ``AsdfType`` subclasses.

* Add general and versioning-specific developer documentation.

What's New in asdf 2.5.1?
=========================

The ASDF Standard is at v1.4.0.

Changes include:

* Fix bug in test causing failure when test suite is run against
  an installed `asdf` package.

What's New in asdf 2.5.0?
=========================

The ASDF Standard is at v1.4.0.

Changes include:

* Added convenience method for fetching the default resolver

* Fixed load_schema LRU cache memory usage issue

* Fixed bug causing segfault after update of a memory-mapped file.

What's New in asdf 2.4.2?
=========================

The ASDF Standard is at v1.3.0. Changes include:

* Define the ``in`` operator for top-level ``AsdfFile`` objects.

* Automatically register schema tester plugin. Do not enable schema tests by
  default. Add configuration setting and command line option to enable schema
  tests.

* Enable handling of subclasses of known custom types by using decorators for
  convenience.

* Add support for jsonschema 3.x.

* Fix bug in ``NDArrayType.__len__``.  It must be a method, not a
  property.

What's New in asdf 2.3.3?
=========================

The ASDF Standard is at v1.3.0. Changes include:

* Pass ``ignore_unrecognized_tag`` setting through to ASDF-in-FITS.

* Use ``$schema`` keyword if available to determine meta-schema to use when
  testing whether schemas themselves are valid.

* Take into account resolvers from installed extensions when loading schemas
  for validation.

* Fix compatibility issue with new release of ``pyyaml`` (version 5.1).

* Allow use of ``pathlib.Path`` objects for ``custom_schema`` option.

What's New in asdf 2.3.1?
=========================

he ASDF Standard is at v1.3.0. Changes include:

* Provide source information for ``AsdfDeprecationWarning`` that come from
  extensions from external packages.

* Fix the way ``generic_io`` handles URIs and paths on Windows.

* Fix bug in ``asdftool`` that prevented ``extract`` command from being
  visible.

What's New in asdf 2.3?
=======================

`asdf` 2.3 reflects the update of ASDF Standard to v1.3.0, and contains a few
notable features and an API change:

* Storage of arbitrary precision integers is now provided by
  `asdf.IntegerType`. This new type is provided by version 1.3.0 of the ASDF
  Standard.

* Reading a file with integer literals that are too large now causes only a
  warning instead of a validation error. This is to provide backwards
  compatibility for files that were created with a buggy version of `asdf`.

* The functions `asdf.open` and `AsdfFile.write_to` now support the use of
  `pathlib.Path`.

* The `asdf.asdftypes` module has been deprecated in favor of `asdf.types`. The
  old module will be removed entirely in the 3.0 release.

What's New in asdf 2.2?
=======================

`asdf` 2.2 contains several API changes, although backwards compatibilty is
preserved for now. The most significant changes are:

* The function `AsdfFile.open` has been deprecated in favor of `asdf.open`.
  It will be removed entirely in the 3.0 release. More intelligent file mode
  handling has been added to `asdf.open`. Files that are opened in read-only
  mode with `asdf.open` now explicitly block writes to memory-mapped arrays.
  This may cause problems for some existing code, but any such code was
  accessing these arrays in an unsafe manner, so backwards compatibility for
  this case is not provided. The old mode handling behavior is retained for now
  in `AsdfFile.open`.

* It is now possible to disable lazy loading of internal arrays. This is useful
  when the `AsdfFile` was opened using another open file. With lazy loading, it
  is possible to close the original file but still retain access to the array
  data.

* There is a new warning `AsdfConversionWarning` that occurs when failing to
  convert nodes in the ASDF tree into custom tagged types. This makes it easier
  for users to filter specifically for this failure case.

What's New in asdf 2.1?
=======================

`asdf` 2.1 is a minor release, and most of the changes affect only a subset of
users. The most notable changes are the following:

* `namedtuple` objects can now be serialized. They are automatically converted
  into `list` objects, and therefore are not strictly able to round-trip. By
  default a warning occurs when performing this conversion, but the warning can
  be disabled by passing `ignore_implicit_conversion=True` to the `AsdfFile`
  constructor.

* Added a method `AsdfFile.get_history_entries` for getting a list of history
  entries from the tree.

* Added an option to `generic_io.get_file` to close the underlying file handle.

Please see the :ref:`change_log` for additional details.

What's New in asdf 2.0?
=======================

`asdf` 2.0 is a major release that includes many improvements, new features, and
some API changes. It is the first release of the `asdf` package that only
supports Python 3.

The full list of changes, including bug fixes, can be found in the
:ref:`change_log`. A brief overview of changes is provided below:

* Support for Python 2.7 has been removed entirely.

* There is no longer a hard dependency on `astropy`. It is still required for
  some features, and for running the tests. Astropy-related tag implementations
  have been moved to the Astropy package itself.
* External packages can now install and register custom ASDF extensions using
  `setuptools` entry points (see :ref:`other_packages` and
  :ref:`packaging_extensions`). `asdf` detects extensions that are installed in
  this way and automatically uses them when reading and writing files with
  custom types.
* A bug was fixed that now allows fully-specified tags from external packages
  to be properly resolved.
* The file format now includes metadata about the extensions that were used to
  create an ASDF file. The software automatically adds this information when
  writing an ASDF file, and will check for installed extensions when reading
  a file containing such metadata (see :ref:`extension_checking`).
* The restrictions on the top-level attributes `data`, `wcs`, and `fits` have
  been removed.
* Clients that wish to impose additional validation requirements on files can
  now provide custom top-level schemas (see :ref:`custom-schemas`).
* There is a new way to reference array data that is defined in external files
  (see :ref:`array-references`).
* Several new commands have been added to the `asdftool` command line
  interface:

  * ``extensions`` for showing information about installed extensions (see
        :ref:`other_packages`).
  * ``remove-hdu`` for removing ASDF extension from ASDF-in-FITS file
      (requires `astropy`, see :ref:`asdf-in-fits`).

* The package now cleanly supports builds in `develop` mode and can be imported
  from the source tree.

.. _change_log:

Change Log
==========

.. include:: ../../CHANGES.rst
