Path to this page:
Subject: CVS commit: pkgsrc/math/py-astropy
From: Dr. Thomas Orgis
Date: 2022-08-30 17:54:37
Message id: 20220830155437.70DB3FA89@cvs.NetBSD.org
Log Message:
math/py-astropy: update to 5.0.4 from wip
5.0.4 (2022-03-31)
==================
Bug Fixes
---------
astropy.modeling
^^^^^^^^^^^^^^^^
- Fixed the ``Gaussian2D`` ``bounding_box`` when ``theta`` is an angular
``Quantity``. [#13021]
astropy.utils
^^^^^^^^^^^^^
- Reverted ``astropy.utils.iers.iers.IERS_A_URL`` to ``maia.usno.navy.mil`` \
domain instead
of NASA FTP to work around server issues. [#13004]
Other Changes and Additions
---------------------------
- Updated bundled WCSLIB to version 7.9 with several bugfixes and added
support for time coordinate axes in ``wcsset()`` and ``wcssub()``. The
four-digit type code for the time axis will have the first digit set to 4,
i.e., four digit code will be 4xxx where x is a digit 0-9. For a full list of
bug fixes see https://www.atnf.csiro.au/people/mcalabre/WCS/CHANGES [#12994]
5.0.3 (2022-03-25)
==================
Bug Fixes
---------
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Bugfix in ``astropy.convolution.utils.discretize_model`` which allows the \
function to handle a ``CompoundModel``.
Before this fix, ``discretize_model`` was confusing ``CompoundModel`` with a \
callable function. [#12959]
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix write and read FITS tables with multidimensional items, using ``from_columns``
without previousely defined ``ColDefs`` structure. [#12863]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Fix VOTable linting to avoid use of shell option. [#12985]
astropy.utils
^^^^^^^^^^^^^
- Fix XML linting to avoid use of shell option. [#12985]
Other Changes and Additions
---------------------------
- Updated the bundled CFITSIO library to 4.1.0. [#12967]
5.0.2 (2022-03-10)
==================
Bug Fixes
---------
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Bugfix to add backwards compatibility for reading ECSV version 0.9 files with
non-standard column datatypes (such as ``object``, ``str``, ``datetime64``,
etc.), which would raise a ValueError in ECSV version 1.0. [#12880]
astropy.io.misc
^^^^^^^^^^^^^^^
- Bugfix for ``units_mapping`` schema's property name conflicts. Changes:
* ``inputs`` to ``unit_inputs``
* ``outputs`` to ``unit_outputs`` [#12800]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Fixed a bug where ``astropy.io.votable.validate`` was printing output to
``sys.stdout`` when the ``output`` paramter was set to ``None``. ``validate``
now returns a string when ``output`` is set to ``None``, as documented.
[#12604]
astropy.modeling
^^^^^^^^^^^^^^^^
- Fix handling of units on ``scale`` parameter in BlackBody model. [#12318]
- Indexing on models can now be used with all types of integers
(like ``numpy.int64``) instead of just ``int``. [#12561]
- Fix computation of the separability of a ``CompoundModel`` where another
``CompoundModel`` is on the right hand side of the ``&`` operator. [#12907]
- Provide a hook (``Model._calculate_separability_matrix``) to allow subclasses
of ``Model`` to define how to compute their separability matrix. [#12900]
astropy.stats
^^^^^^^^^^^^^
- Fixed a bug in which running ``kuiper_false_positive_probability(D,N)`` on
distributions with many data points could produce NaN values for the false
positive probability of the Kuiper statistic. [#12896]
astropy.wcs
^^^^^^^^^^^
- Fixed a bug due to which ``naxis``, ``pixel_shape``, and
``pixel_bounds`` attributes of ``astropy.wcs.WCS`` were not restored when
an ``astropy.wcs.WCS`` object was unpickled. This fix also eliminates
``FITSFixedWarning`` warning issued during unpiclikng of the WCS objects
related to the number of axes. This fix also eliminates errors when
unpickling WCS objects originally created using non-default values for
``key``, ``colsel``, and ``keysel`` parameters. [#12844]
5.0.1 (2022-01-26)
==================
Bug Fixes
---------
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Trying to create an instance of ``astropy.coordinates.Distance`` by providing
both ``z`` and ``parallax`` now raises the expected ``ValueError``. [#12531]
- Fixed a bug where changing the wrap angle of the longitude component of a
representation could raise a warning or error in certain situations. [#12556]
- ``astropy.coordinates.Distance`` constructor no longer ignores the ``unit``
keyword when ``parallax`` is provided. [#12569]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- ``astropy.cosmology.utils.aszarr`` can now convert ``Column`` objects. [#12525]
- Reading a cosmology from an ECSV will load redshift and Hubble parameter units
from the cosmology units module. [#12636]
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix formatting issue in ``_dump_coldefs`` and add tests for ``tabledump`` and
``tableload`` convenience functions. [#12526]
astropy.io.misc
^^^^^^^^^^^^^^^
- YAML can now also represent quantities and arrays with structured dtype,
as well as structured scalars based on ``np.void``. [#12509]
astropy.modeling
^^^^^^^^^^^^^^^^
- Fixes error when fitting multiplication or division based compound models
where the sub-models have different output units. [#12475]
- Bugfix for incorrectly initialized and filled ``parameters`` data for \
``Spline1D`` model. [#12523]
- Bugfix for ``keyerror`` thrown by ``Model.input_units_equivalencies`` when
used on ``fix_inputs`` models which have no set unit equivalencies. [#12597]
astropy.table
^^^^^^^^^^^^^
- ``astropy.table.Table.keep_columns()`` and
``astropy.table.Table.remove_columns()`` now work with generators of column
names. [#12529]
- Avoid duplicate storage of info in serialized columns if the column
used to serialize already can hold that information. [#12607]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
- Fixed edge case bugs which emerged when using ``aggregate_downsample`` with \
custom bins. [#12527]
astropy.units
^^^^^^^^^^^^^
- Structured units can be serialized to/from yaml. [#12492]
- Fix bad typing problems by removing interaction with \
``NDArray.__class_getitem__``. [#12511]
- Ensure that ``Quantity.to_string(format='latex')`` properly typesets exponents
also when ``u.quantity.conf.latex_array_threshold = -1`` (i.e., when the threshold
is taken from numpy). [#12573]
- Structured units can now be copied with ``copy.copy`` and ``copy.deepcopy``
and also pickled and unpicked also for ``protocol`` >= 2.
This does not work for big-endian architecture with older ``numpy<1.21.1``. \
[#12583]
astropy.utils
^^^^^^^^^^^^^
- Ensure that a ``Masked`` instance can be used to initialize (or viewed
as) a ``numpy.ma.Maskedarray``. [#12482]
- Ensure ``Masked`` also works with numpy >=1.22, which has a keyword argument
name change for ``np.quantile``. [#12511]
- ``astropy.utils.iers.LeapSeconds.auto_open()`` no longer emits unnecessary
warnings when ``astropy.utils.iers.conf.auto_max_age`` is set to ``None``. [#12713]
5.0 (2021-11-15)
================
New Features
------------
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Added dealiasing support to ``convolve_fft``. [#11495]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Added missing coordinate transformations where the starting and ending frames
are the same (i.e., loopback transformations). [#10909]
- Allow negation, multiplication and division also of representations that
include a differential (e.g., ``SphericalRepresentation`` with a
``SphericalCosLatDifferential``). For all operations, the outcome is
equivalent to transforming the representation and differential to cartesian,
then operating on those, and transforming back to the original representation
(except for ``UnitSphericalRepresentation``, which will return a
``SphericalRepresentation`` if there is a scale change). [#11470]
- ``RadialRepresentation.transform`` can work with a multiplication matrix only.
All other matrices still raise an exception. [#11576]
- ``transform`` methods are added to ``BaseDifferential`` and \
``CartesianDifferential``.
All transform methods on Representations now delegate transforming differentials
to the differential objects. [#11654]
- Adds new ``HADec`` built-in frame with transformations to/from ``ICRS`` and \
``CIRS``.
This frame complements ``AltAz`` to give observed coordinates (hour angle and \
declination)
in the ``ITRS`` for an equatorially mounted telescope. [#11676]
- ``SkyCoord`` objects now have a ``to_table()`` method, which allows them to be
converted to a ``QTable``. [#11743]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Cosmologies now store metadata in a mutable parameter ``meta``.
The initialization arguments ``name`` and ``meta`` are keyword-only. [#11542]
- A new unit, ``redshift``, is defined. It is a dimensionless unit to distinguish
redshift quantities from other non-redshift values. For compatibility with
dimensionless quantities the equivalency ``dimensionless_redshift`` is added.
This equivalency is enabled by default. [#11786]
- Add equality operator for comparing Cosmology instances. Comparison is done on
all immutable fields (this excludes 'meta').
Now the following will work:
.. code-block:: python
>>> from astropy.cosmology import Planck13, Planck18
>>> Planck13 == Planck18
False
>>> Planck18 == Planck18
True [#11813]
- Added ``read/write`` methods to Cosmology using the Unified I/O registry.
Now custom file format readers, writers, and format-identifier functions
can be registered to read, write, and identify, respectively, Cosmology
objects. Details are discussed in an addition to the docs. [#11948]
- Added ``to_format/from_format`` methods to Cosmology using the Unified I/O
registry. Now custom format converters and format-identifier functions
can be registered to transform Cosmology objects.
The transformation between Cosmology and dictionaries is pre-registered.
Details are discussed in an addition to the docs. [#11998]
- Added units module for defining and collecting cosmological units and
equivalencies. [#12092]
- Flat cosmologies are now set by a mixin class, ``FlatCosmologyMixin`` and its
FLRW-specific subclass ``FlatFLRWMixin``. All ``FlatCosmologyMixin`` are flat,
but not all flat cosmologies are instances of ``FlatCosmologyMixin``. As
example, ``LambdaCDM`` **may** be flat (for the a specific set of parameter
values), but ``FlatLambdaCDM`` **will** be flat.
Cosmology parameters are now descriptors. When accessed from a class they
transparently stores information, like the units and accepted equivalencies.
On a cosmology instance, the descriptor will return the parameter value.
Parameters can have custom ``getter`` methods.
Cosmological equality is refactored to check Parameters (and the name)
A new method, ``is_equivalent``, is added to check Cosmology equivalence, so
a ``FlatLambdaCDM`` and flat ``LambdaCDM`` are equivalent. [#12136]
- Replaced ``z = np.asarray(z)`` with ``z = u.Quantity(z, \
u.dimensionless_unscaled).value``
in Cosmology methods. Input of values with incorrect units raises a \
UnitConversionError
or TypeError. [#12145]
- Cosmology Parameters allow for custom value setters.
Values can be set once, but will error if set a second time.
If not specified, the default setter is used, which will assign units
using the Parameters ``units`` and ``equivalencies`` (if present).
Alternate setters may be registered with Parameter to be specified by a str,
not a decorator on the Cosmology. [#12190]
- Cosmology instance conversion to dict now accepts keyword argument ``cls`` to
determine dict type, e.g. ``OrderedDict``. [#12209]
- A new equivalency is added between redshift and the Hubble parameter and values
with units of little-h.
This equivalency is also available in the catch-all equivalency \
``with_redshift``. [#12211]
- A new equivalency is added between redshift and distance -- comoving, lookback,
and luminosity. This equivalency is also available in the catch-all equivalency
``with_redshift``. [#12212]
- Register Astropy Table into Cosmology's ``to/from_format`` I/O, allowing
a Cosmology instance to be parsed from or converted to a Table instance.
Also adds the ``__astropy_table__`` method allowing ``Table(cosmology)``. [#12213]
- The WMAP1 and WMAP3 are accessible as builtin cosmologies. [#12248]
- Register Astropy Model into Cosmology's ``to/from_format`` I/O, allowing
a Cosmology instance to be parsed from or converted to a Model instance. [#12269]
- Register an ECSV reader and writer into Cosmology's I/O, allowing a Cosmology
instance to be read from from or written to an ECSV file. [#12321]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Added new way to specify the dtype for tables that are read: ``converters``
can specify column names with wildcards. [#11892]
- Added a new ``astropy.io.ascii.Mrt`` class to write tables in the American
Astronomical Society Machine-Readable Table format,
including documentation and tests for the same. [#11897, #12301, #12302]
- When writing, the input data are no longer copied, improving performance.
Metadata that might be changed, such as format and serialization
information, is copied, hence users can continue to count on no
changes being made to the input data. [#11919]
astropy.io.misc
^^^^^^^^^^^^^^^
- Add Parquet serialization of Tables with pyarrow, including metadata support and
columnar access. [#12215]
astropy.modeling
^^^^^^^^^^^^^^^^
- Added fittable spline models to ``modeling``. [#11634]
- Extensive refactor of ``BoundingBox`` for better usability and \
maintainability. [#11930]
- Added ``CompoundBoundingBox`` feature to ``~astropy.modeling``, which allows \
more flexibility in
defining bounding boxes for models that are applied to images with many \
slices. [#11942]
- Improved parameter support for ``astropy.modeling.core.custom_model`` created \
models. [#11984]
- Added the following trigonometric models and linked them to their appropriate \
inverse models:
* ``Cosine1D`` [#12158]
* ``Tangent1D``
* ``ArcSine1D``
* ``ArcCosine1D``
* ``ArcTangent1D`` [#12185]
astropy.table
^^^^^^^^^^^^^
- Added a new method ``Table.update()`` which does a dictionary-style update of a
``Table`` by adding or replacing columns. [#11904]
- Masked quantities are now fully supported in tables. This includes ``QTable``
automatically converting ``MaskedColumn`` instances to ``MaskedQuantity``,
and ``Table`` doing the reverse. [#11914]
- Added new keyword arguments ``keys_left`` and ``keys_right`` to the table ``join``
function to support joining tables on key columns with different names. In
addition the new keywords can accept a list of column-like objects which are
used as the match keys. This allows joining on arbitrary data which are not part
of the tables being joined. [#11954]
- Formatting of any numerical values in the output of ``Table.info()`` and
``Column.info()`` has been improved. [#12022]
- It is now possible to add dask arrays as columns in tables
and have them remain as dask arrays rather than be converted
to Numpy arrays. [#12219]
- Added a new registry for mixin handlers, which can be used
to automatically convert array-like Python objects into
mixin columns when assigned to a table column. [#12219]
astropy.time
^^^^^^^^^^^^
- Adds a new method ``earth_rotation_angle`` to calculate the Local Earth \
Rotation Angle.
Also adjusts Local Sidereal Time for the Terrestrial Intermediate Origin (``TIO``)
and adds a rigorous correction for polar motion. The ``TIO`` adjustment is \
approximately
3 microseconds per century from ``J2000`` and the polar motion correction is \
at most
about +/-50 nanoseconds. For models ``IAU1982`` and ``IAU1994``, no such \
adjustments are
made as they pre-date the TIO concept. [#11680]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
- A custom binning scheme is now available in ``aggregate_downsample``.
It allows ``time_bin_start`` and ``time_bin_size`` to be arrays, and adds
an optional ``time_bin_end``.
This scheme mirrors the API for ``BinnedTimeSeries``. [#11266]
astropy.units
^^^^^^^^^^^^^
- ``Quantity`` gains a ``__class_getitem__`` to create unit-aware annotations
with the syntax ``Quantity[unit or physical_type, shape, numpy.dtype]``.
If the python version is 3.9+ or ``typing_extensions`` is installed,
these are valid static type annotations. [#10662]
- Each physical type is added to ``astropy.units.physical``
(e.g., ``physical.length`` or ``physical.electrical_charge_ESU``).
The attribute-accessible names (underscored, without parenthesis) also
work with ``astropy.units.physical.get_physical_type``. [#11691]
- It is now possible to have quantities based on structured arrays in
which the unit has matching structure, giving each field its own unit,
using units constructed like ``Unit('AU,AU/day')``. [#11775]
- The milli- prefix has been added to ``astropy.units.Angstrom``. [#11788]
- Added attributes ``base``, ``coords``, and ``index`` and method ``copy()`` to
``QuantityIterator`` to match ``numpy.ndarray.flatiter``. [#11796]
- Added "angular frequency" and "angular velocity" as \
aliases for the "angular
speed" physical type. [#11865]
- Add light-second to units of length [#12128]
astropy.utils
^^^^^^^^^^^^^
- The ``astropy.utils.deprecated_renamed_argument()`` decorator now supports
custom warning messages. [#12305]
- The NaN-aware numpy functions such as ``np.nansum`` now work on Masked
arrays, with masked values being treated as NaN, but without raising
warnings or exceptions. [#12454]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Added a feature so that SphericalCircle will accept center parameter as a \
SkyCoord object. [#11790]
astropy.wcs
^^^^^^^^^^^
- ``astropy.wcs.utils.obsgeo_to_frame`` has been added to convert the obsgeo \
coordinate
array on ``astropy.wcs.WCS`` objects to an ``ITRS`` coordinate frame instance. \
[#11716]
- Updated bundled ``WCSLIB`` to version 7.7 with several bugfixes. [#12034]
API Changes
-----------
astropy.config
^^^^^^^^^^^^^^
- ``update_default_config`` and ``ConfigurationMissingWarning`` are deprecated. \
[#11502]
astropy.constants
^^^^^^^^^^^^^^^^^
- Removed deprecated ``astropy.constants.set_enabled_constants`` context \
manager. [#12105]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Positions for the Moon using the 'builtin' ephemeris now use the new
``erfa.moon98`` function instead of our own implementation of the Meeus
algorithm. As this also corrects a misunderstanding of the frame returned by
the Meeus, this improves the agreement with the JPL ephemeris from about 30 to
about 6 km rms. [#11753]
- Removed deprecated ``representation`` attribute from
``astropy.coordinates.BaseCoordinateFrame`` class. [#12257]
- ``SpectralQuantity`` and ``SpectralCoord`` ``.to_value`` method can now be \
called without
``unit`` argument in order to maintain a consistent interface with \
``Quantity.to_value`` [#12440]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- ``z_at_value`` now works with arrays for all arguments (except ``func``,
``verbose``, and ``method``). Consequently, ``coordinates.Distance.z`` can
be used when Distance is an array. [#11778]
- Remove deprecation warning and error remapping in ``Cosmology.clone``.
Now unknown arguments will raise a ``TypeError``, not an ``AttributeError``. \
[#11785]
- The ``read/write`` and ``to/from_format`` Unified I/O registries are separated
and apply only to ``Cosmology``. [#12015]
- Cosmology parameters in ``cosmology.parameters.py`` now have units,
where applicable. [#12116]
- The function ``astropy.cosmology.utils.inf_like()`` is deprecated. [#12175]
- The function ``astropy.cosmology.utils.vectorize_if_needed()`` is deprecated.
A new function ``astropy.cosmology.utils.vectorize_redshift_method()`` is added
as replacement. [#12176]
- Cosmology base class constructor now only accepts arguments ``name`` and ``meta``.
Subclasses should add relevant arguments and not pass them to the base class. \
[#12191]
astropy.io
^^^^^^^^^^
- When ``astropy`` raises an ``OSError`` because a file it was told to write
already exists, the error message now always suggests the use of the
``overwrite=True`` argument. The wording is now consistent for all I/O \
formats. [#12179]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Removed deprecated ``overwrite=None`` option for
``astropy.io.ascii.ui.write()``. Overwriting existing files now only happens if
``overwrite=True``. [#12171]
astropy.io.fits
^^^^^^^^^^^^^^^
- The internal class _CardAccessor is no longer registered as a subclass of
the Sequence or Mapping ABCs. [#11923]
- The deprecated ``clobber`` argument will be removed from the
``astropy.io.fits`` functions in version 5.1, and the deprecation warnings now
announce that too. [#12311]
astropy.io.registry
^^^^^^^^^^^^^^^^^^^
- The ``write`` function now is allowed to return possible content results, which
means that custom writers could, for example, create and return an instance of
some container class rather than a file on disk. [#11916]
- The registry functions are refactored into a class-based system.
New Read-only, write-only, and read/write registries can be created.
All functions accept a new argument ``registry``, which if not specified,
defaults to the global default registry. [#12015]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Deprecated the ``pedantic`` keyword argument in the
``astropy.io.votable.table.parse`` function and the corresponding configuration
setting. It has been replaced by the ``verify`` option. [#12129]
astropy.modeling
^^^^^^^^^^^^^^^^
- Refactored how ``astropy.modeling.Model`` handles model evaluation in order to \
better
organize the code. [#11931]
- Removed the following deprecated modeling features:
``astropy.modeling.utils.ExpressionTree`` class,
``astropy.modeling.functional_models.MexicanHat1D`` model,
``astropy.modeling.functional_models.MexicanHat2D`` model,
``astropy.modeling.core.Model.inputs`` setting in model initialize,
``astropy.modeling.core.CompoundModel.inverse`` setting in model \
initialize, and
``astropy.modeling.core.CompoundModel.both_inverses_exist()`` method. [#11978]
- Deprecated the ``AliasDict`` class in ``modeling.utils``. [#12411]
astropy.nddata
^^^^^^^^^^^^^^
- Removed ``block_reduce`` and ``block_replicate`` functions from
``nddata.utils``. These deprecated functions in ``nddata.utils`` were
moved to ``nddata.blocks``. [#12288]
astropy.stats
^^^^^^^^^^^^^
- Removed the following deprecated features from ``astropy.stats``:
* ``conf`` argument for ``funcs.binom_conf_interval()`` and
``funcs.binned_binom_proportion()``,
* ``conflevel`` argument for ``funcs.poisson_conf_interval()``, and
* ``conf_lvl`` argument for ``jackknife.jackknife_stats()``. [#12200]
astropy.table
^^^^^^^^^^^^^
- Printing a ``Table`` now shows the qualified class name of mixin columns in the
dtype header row instead of "object". This applies to all the \
``Table`` formatted output
methods whenever ``show_dtype=True`` is selected. [#11660]
- The 'overwrite' argument has been added to the jsviewer table writer.
Overwriting an existing file requires 'overwrite' to be True. [#11853]
- The 'overwrite' argument has been added to the pandas table writers.
Overwriting an existing file requires 'overwrite' to be True. [#11854]
- The table ``join`` function now accepts only the first four arguments ``left``,
``right``, ``keys``, and ``join_type`` as positional arguments. All other
arguments must be supplied as keyword arguments. [#11954]
- Adding a dask array to a Table will no longer convert
that dask to a Numpy array, so accessing t['dask_column']
will now return a dask array instead of a Numpy array. [#12219]
astropy.time
^^^^^^^^^^^^
- Along with the new method ``earth_rotation_angle``, ``sidereal_time`` now accepts
an ``EarthLocation`` as the ``longitude`` argument. [#11680]
astropy.units
^^^^^^^^^^^^^
- Unit ``littleh`` and equivalency ``with_H0`` have been moved to the
``cosmology`` module and are deprecated from ``astropy.units``. [#12092]
astropy.utils
^^^^^^^^^^^^^
- ``astropy.utils.introspection.minversion()`` now uses
``importlib.metadata.version()``. Therefore, its ``version_path`` keyword is no
longer used and deprecated. This keyword will be removed in a future release. \
[#11714]
- Updated ``utils.console.Spinner`` to better resemble the API of
``utils.console.ProgressBar``, including an ``update()`` method and
iterator support. [#11772]
- Removed deprecated ``check_hashes`` in ``check_download_cache()``. The \
function also
no longer returns anything. [#12293]
- Removed unused ``download_cache_lock_attempts`` configuration item in
``astropy.utils.data``. Deprecation was not possible. [#12293]
- Removed deprecated ``hexdigest`` keyword from ``import_file_to_cache()``. [#12293]
- Setting ``remote_timeout`` configuration item in ``astropy.utils.data`` to 0 will
no longer disable download from the Internet; Set ``allow_internet`` configuration
item to ``False`` instead. [#12293]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Removed deprecated ``imshow_only_kwargs`` keyword from ``imshow_norm``. [#12290]
astropy.wcs
^^^^^^^^^^^
- Move complex logic from ``HighLevelWCSMixin.pixel_to_world`` and
``HighLevelWCSMixin.world_to_pixel`` into the helper functions
``astropy.wcs.wcsapi.high_level_api.high_level_objects_to_values`` and
``astropy.wcs.wcsapi.high_level_api.values_to_high_level_objects`` to allow
reuse in other places. [#11950]
Bug Fixes
---------
astropy.config
^^^^^^^^^^^^^^
- ``generate_config`` no longer outputs wrong syntax for list type. [#12037]
astropy.constants
^^^^^^^^^^^^^^^^^
- Fixed a bug where an older constants version cannot be set directly after
astropy import. [#12084]
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Passing an ``array`` argument for any Kernel1D or Kernel2D subclasses (with the
exception of CustomKernel) will now raise a ``TypeError``. [#11969]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- If a ``Table`` containing a ``SkyCoord`` object as a column is written to a
FITS, ECSV or HDF5 file then any velocity information that might be present
will be retained. [#11750]
- The output of ``SkyCoord.apply_space_motion()`` now always has the same
differential type as the ``SkyCoord`` itself. [#11932]
- Fixed bug where Angle, Latitude and Longitude with NaN values could not be \
printed. [#11943]
- Fixed a bug with the transformation from ``PrecessedGeocentric`` to ``GCRS``
where changes in ``obstime``, ``obsgeoloc``, or ``obsgeovel`` were ignored.
This bug would also affect loopback transformations from one \
``PrecessedGeocentric``
frame to another ``PrecessedGeocentric`` frame. [#12152]
- Fixed a bug with the transformations between ``TEME`` and ``ITRS`` or between \
``TEME``
and itself where a change in ``obstime`` was ignored. [#12152]
- Avoid unnecessary transforms through CIRS for AltAz and HADec and
use ICRS as intermediate frame for these transformations instead. [#12203]
- Fixed a bug where instantiating a representation with a longitude component
could mutate input provided for that component even when copying is specified. \
[#12307]
- Wrapping an ``Angle`` array will now ignore NaN values instead of attempting \
to wrap
them, which would produce unexpected warnings/errors when working with coordinates
and representations due to internal broadcasting. [#12317]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Dictionaries for in-built cosmology realizations are not altered by creating
the realization and are also made immutable. [#12278]
astropy.io.fits
^^^^^^^^^^^^^^^
- Preent zero-byte writes for FITS binary tables to
speed up writes on the Lustre filesystem. [#11955]
- Enable ``json.dump`` for FITS_rec with variable length (VLF) arrays. [#11957]
- Add support for reading and writing int8 images [#11996]
- Ensure header passed to ``astropy.io.fits.CompImageHDU`` does not need to contain
standard cards that can be automatically generated, such as ``BITPIX`` and \
``NAXIS``. [#12061]
- Fixed a bug where ``astropy.io.fits.HDUDiff`` would ignore the \
``ignore_blank_cards``
keyword argument. [#12122]
- Open uncompressed file even if extension says it's compressed [#12135]
- Fix the computation of the DATASUM in a ``CompImageHDU`` when the data is \
>1D. [#12138]
- Reading files where the SIMPLE card is present but with an invalid format now
issues a warning instead of raising an exception [#12234]
- Convert UNDEFINED to None when iterating over card values. [#12310]
astropy.io.misc
^^^^^^^^^^^^^^^
- Update ASDF tag versions in ExtensionType subclasses to match ASDF Standard \
1.5.0. [#11986]
- Fix ASDF serialization of model inputs and outputs and add relevant assertion to
test helper. [#12381]
- Fix bug preventing ASDF serialization of bounding box for models with only one \
input. [#12385]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Now accepting UCDs containing phot.color. [#11982]
astropy.modeling
^^^^^^^^^^^^^^^^
- Added ``Parameter`` descriptions to the implemented models which were
missing. [#11232]
- The ``separable`` property is now correctly set on models constructed with
``astropy.modeling.custom_model``. [#11744]
- Minor bugfixes and improvements to modeling including the following:
* Fixed typos and clarified several errors and their messages throughout
modeling.
* Removed incorrect try/except blocks around scipy code in
``convolution.py`` and ``functional_models.py``.
* Fixed ``Ring2D`` model's init to properly accept all combinations
of ``r_in``, ``r_out``, and ``width``.
* Fixed bug in ``tau`` validator for the ``Logarithmic1D`` and
``Exponential1D`` models when using them as model sets.
* Fixed ``copy`` method for ``Parameter`` in order to prevent an
automatic ``KeyError``, and fixed ``bool`` for ``Parameter`` so
that it functions with vector values.
* Removed unreachable code from ``Parameter``, the ``_Tabular`` model,
and the ``Drude1D`` model.
* Fixed validators in ``Drude1D`` model so that it functions in a
model set.
* Removed duplicated code from ``polynomial.py`` for handing of
``domain`` and ``window``.
* Fixed the ``Pix2Sky_HEALPixPolar`` and ``Sky2Pix_HEALPixPolar`` modes
so that their ``evaluate`` and ``inverse`` methods actually work
without raising an error. [#12232]
astropy.nddata
^^^^^^^^^^^^^^
- Ensure that the ``wcs=`` argument to ``NDData`` is always parsed into a high
level WCS object. [#11985]
astropy.stats
^^^^^^^^^^^^^
- Fixed a bug in sigma clipping where the bounds would not be returned for
completely empty or masked data. [#11994]
- Fixed a bug in ``biweight_midvariance`` and ``biweight_scale`` where
output data units would be dropped for constant data and where the
result was a scalar NaN. [#12146]
astropy.table
^^^^^^^^^^^^^
- Ensured that ``MaskedColumn.info`` is propagated in all cases, so that when
tables are sliced, writing will still be as requested on
``info.serialize_method``. [#11917]
- ``table.conf.replace_warnings`` and ``table.jsviewer.conf.css_urls`` configuration
items now have correct ``'string_list'`` type. [#12037]
- Fixed an issue where initializing from a list of dict-like rows (Mappings) did
not work unless the row values were instances of ``dict``. Now any object that
is an instance of the more general ``collections.abc.Mapping`` will work. [#12417]
astropy.uncertainty
^^^^^^^^^^^^^^^^^^^
- Ensure that scalar ``QuantityDistribution`` unit conversion in ufuncs
works properly again. [#12471]
astropy.units
^^^^^^^^^^^^^
- Add quantity support for ``scipy.special`` dimensionless functions
erfinv, erfcinv, gammaln and loggamma. [#10934]
- ``VOUnit.to_string`` output is now compliant with IVOA VOUnits 1.0 standards. \
[#11565]
- Units initialization with unicode has been expanded to include strings such as
'M☉' and 'e⁻'. [#11827]
- Give a more informative ``NotImplementedError`` when trying to parse a unit
using an output-only format such as 'unicode' or 'latex'. [#11829]
astropy.utils
^^^^^^^^^^^^^
- Fixed a bug in ``get_readable_fileobj`` that prevented the unified file read
interface from closing ASCII files. [#11809]
- The function ``astropy.utils.decorators.deprecated_attribute()`` no longer
ignores its ``message``, ``alternative``, and ``pending`` arguments. [#12184]
- Ensure that when taking the minimum or maximum of a ``Masked`` array,
any masked NaN values are ignored. [#12454]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- The tick labelling for radians has been fixed to remove a redundant ``.0`` in
the label for integer multiples of pi at 2pi and above. [#12221]
- Fix a bug where non-``astropy.wcs.WCS`` WCS instances were not accepted in
``WCSAxes.get_transform``. [#12286]
- Fix compatibility with Matplotlib 3.5 when using the ``grid_type='contours'``
mode for drawing grid lines. [#12447]
astropy.wcs
^^^^^^^^^^^
- Enabled ``SlicedLowLevelWCS.pixel_to_world_values`` to handle slices including
non-``int`` integers, e.g. ``numpy.int64``. [#11980]
Other Changes and Additions
---------------------------
- In docstrings, Sphinx cross-reference targets now use intersphinx, even if the
target is an internal link (``link`` is now ``'astropy:link``).
When built in Astropy these links are interpreted as internal links. When built
in affiliate packages, the link target is set by the key 'astropy' in the
intersphinx mapping. [#11690]
- Made PyYaml >= 3.13 a strict runtime dependency. [#11903]
- Minimum version of required Python is now 3.8. [#11934]
- Minimum version of required Scipy is now 1.3. [#11934]
- Minimum version of required Matplotlib is now 3.1. [#11934]
- Minimum version of required Numpy is now 1.18. [#11935]
- Fix deprecation warnings with Python 3.10 [#11962]
- Speed up ``minversion()`` in cases where a module with a ``__version__``
attribute is passed. [#12174]
- ``astropy`` now requires ``packaging``. [#12199]
- Updated the bundled CFITSIO library to 4.0.0. When compiling with an external
library, version 3.35 or later is required. [#12272]
4.3.1 (2021-08-11)
==================
Bug Fixes
---------
astropy.io.fits
^^^^^^^^^^^^^^^
- In ``fits.io.getdata`` do not fall back to first non-primary extension when
user explicitly specifies an extension. [#11860]
- Ensure multidimensional masked columns round-trip properly to FITS. [#11911]
- Ensure masked times round-trip to FITS, even if multi-dimensional. [#11913]
- Raise ``ValueError`` if an ``np.float32`` NaN/Inf value is assigned to a
header keyword. [#11922]
astropy.modeling
^^^^^^^^^^^^^^^^
- Fixed bug in ``fix_inputs`` handling of bounding boxes. [#11908]
astropy.table
^^^^^^^^^^^^^
- Fix an error when converting to pandas any ``Table`` subclass that
automatically adds a table index when the table is created. An example is a
binned ``TimeSeries`` table. [#12018]
astropy.units
^^^^^^^^^^^^^
- Ensure that unpickling quantities and units in new sessions does not change
hashes and thus cause problems with (de)composition such as getting different
answers from the ``.si`` attribute. [#11879]
- Fixed cannot import name imperial from astropy.units namespace. [#11977]
astropy.utils
^^^^^^^^^^^^^
- Ensure any ``.info`` on ``Masked`` instances is propagated correctly when
viewing or slicing. As a consequence, ``MaskedQuantity`` can now be correctly
written to, e.g., ECSV format with ``serialize_method='data_mask'``. [#11910]
4.3 (2021-07-26)
================
New Features
------------
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Change padding sizes for ``fft_pad`` in ``convolve_fft`` from powers of
2 only to scipy-optimized numbers, applied separately to each dimension;
yielding some performance gains and avoiding potential large memory
impact for certain multi-dimensional inputs. [#11533]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Adds the ability to create topocentric ``CIRS`` frames. Using these,
``AltAz`` calculations are now accurate down to the milli-arcsecond
level. [#10994]
- Adds a direct transformation from ``ICRS`` to ``AltAz`` frames. This
provides a modest speedup of approximately 10 percent. [#11079]
- Adds new ``WGS84GeodeticRepresentation``, ``WGS72GeodeticRepresentation``,
and ``GRS80GeodeticRepresentation``. These are mostly for use inside
``EarthLocation`` but can also be used to convert between geocentric
(cartesian) and different geodetic representations directly. [#11086]
- ``SkyCoord.guess_from_table`` now also searches for differentials in the table.
In addition, multiple regex matches can be resolved when they are exact
component names, e.g. having both columns “dec” and “pm_dec” no longer \
errors
and will be included in the SkyCoord. [#11417]
- All representations now have a ``transform`` method, which allows them to be
transformed by a 3x3 matrix in a Cartesian basis. By default, transformations
are routed through ``CartesianRepresentation``. ``SphericalRepresentation`` and
``PhysicssphericalRepresentation`` override this for speed and to prevent NaN
leakage from the distance to the angular components.
Also, the functions ``is_O3`` and ``is_rotation`` have been added to
``matrix_utities`` for checking whether a matrix is in the O(3) group or is a
rotation (proper or improper), respectively. [#11444]
- Moved angle formatting and parsing utilities to
``astropy.coordinates.angle_formats``.
Added new functionality to ``astropy.coordinates.angle_utilities`` for
generating points on or in spherical surfaces, either randomly or on a grid. \
[#11628]
- Added a new method to ``SkyCoord``, ``spherical_offsets_by()``, which is the
conceptual inverse of ``spherical_offsets_to()``: Given angular offsets in
longitude and latitude, this method returns a new coordinate with the offsets
applied. [#11635]
- Refactor conversions between ``GCRS`` and ``CIRS,TETE`` for better accuracy
and substantially improved speed. [#11069]
- Also refactor ``EarthLocation.get_gcrs`` for an increase in performance of
an order of magnitude, which enters as well in getting observed positions of
planets using ``get_body``. [#11073]
- Refactored the usage of metaclasses in ``astropy.coordinates`` to instead use
``__init_subclass__`` where possible. [#11090]
- Removed duplicate calls to ```transform_to``` from ```match_to_catalog_sky```
and ```match_to_catalog_3d```, improving their performance. [#11449]
- The new DE440 and DE440s ephemerides are now available via shortcuts 'de440'
and 'de440s'. The DE 440s ephemeris will probably become the default
ephemeris when chosing 'jpl' in 5.0. [#11601]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Cosmology parameter dictionaries now also specify the Cosmology class to which
the parameters correspond. For example, the dictionary for
``astropy.cosmology.parameters.Planck18`` has the added key-value pair
("cosmology", "FlatLambdaCDM"). [#11530]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Added support for reading and writing ASCII tables in QDP (Quick and Dandy
Plotter) format. [#11256]
- Added support for reading and writing multidimensional column data (masked and
unmasked) to ECSV. Also added formal support for reading and writing object-type
column data which can contain items consisting of lists, dicts, and basic scalar
types. This can be used to store columns of variable-length arrays. Both of
these features use JSON to convert the object to a string that is stored in the
ECSV output. [#11569, #11662, #11720]
astropy.io.fits
^^^^^^^^^^^^^^^
- Added ``append`` keyword to append table objects to an existing FITS file \
[#2632, #11149]
- Check that the SIMPLE card is present when opening a file, to ensure that t
file is a valid FITS file and raise a better error when opening a non FITS
one. ``ignore_missing_simple`` can be used to skip this verification. [#10895]
- Expose ``Header.strip`` as a public method, to remove the most common
structural keywords. [#11174]
- Enable the use of ``os.PathLike`` objects when dealing with (mainly FITS) \
files. [#11580]
astropy.io.registry
^^^^^^^^^^^^^^^^^^^
- Readers and writers can now set a priority, to assist with resolving which
format to use. [#11214]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- Version 1.4 VOTables now use the VOUnit format specification. [#11032]
- When reading VOTables using the Unified File Read/Write Interface (i.e. using
the ``Table.read()`` or ``QTable.read()`` functions) it is now possible to
specify all keyword arguments that are valid for
``astropy.io.votable.table.parse()``. [#11643]
astropy.modeling
^^^^^^^^^^^^^^^^
- Added a state attribute to models to allow preventing the synching of
constraint values from the constituent models. This synching can
greatly slow down fitting if there are large numbers of fit parameters.
model.sync_constraints = True means check constituent model constraints
for compound models every time the constraint is accessed, False, do not.
Fitters that support constraints will set this to False on the model copy
and then set back to True when the fit is complete before returning. [#11365]
- The ``convolve_models_fft`` function implements model convolution so that one
insures that the convolution remains consistent across multiple different
inputs. [#11456]
astropy.nddata
^^^^^^^^^^^^^^
- Prevent unnecessary copies of the data during ``NDData`` arithmetic when units
need to be added. [#11107]
- NDData str representations now show units, if present. [#11553]
astropy.stats
^^^^^^^^^^^^^
- Added the ability to specify stdfunc='mad_std' when doing sigma clipping,
which will use a built-in function and lead to significant performance
improvements if cenfunc is 'mean' or 'median'. [#11664]
- Significantly improved the performance of sigma clipping when cenfunc and
stdfunc are passed as strings and the ``grow`` option is not used. [#11219]
- Improved performance of ``bayesian_blocks()`` by removing one ``np.log()``
call [#11356]
astropy.table
^^^^^^^^^^^^^
- Add table attributes to include or exclude columns from the output when
printing a table. This functionality includes a context manager to
include/exclude columns temporarily. [#11190]
- Improved the string representation of objects related to ``Table.indices`` so
they now indicate the object type and relevant attributes. [#11333]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
- An exception is raised when ``n_bins`` is passed as an argument while
any of the parameters ``time_bin_start`` or ``time_bin_size`` is not
scalar. [#11463]
astropy.units
^^^^^^^^^^^^^
- The ``physical_type`` attributes of each unit are now objects of the (new)
``astropy.units.physical.PhysicalType`` class instead of strings and the
function ``astropy.units.physical.get_physical_type`` can now translate
strings to these objects. [#11204]
- The function ``astropy.units.physical.def_physical_type`` was created to
either define entirely new physical types, or to add more physical type
names to an existing physical types. [#11204]
- ``PhysicalType``'s can be operated on using operations multiplication,
division, and exponentiation are to facilitate dimensional analysis. [#11204]
- It is now possible to define aliases for units using
``astropy.units.set_enabled_aliases``. This can be used when reading files
that have misspelled units. [#11258]
- Add a new "DN" unit, ``units.dn`` or ``units.DN``, representing data \
number
for a detector. [#11591]
astropy.utils
^^^^^^^^^^^^^
- Added ``ssl_context`` and ``allow_insecure`` options to ``download_file``,
as well as the ability to optionally use the ``certifi`` package to provide
root CA certificates when downloading from sites secured with
TLS/SSL. [#10434]
- ``astropy.utils.data.get_pkg_data_path`` is publicly scoped (previously the
private function ``_find_pkg_data_path``) for obtaining file paths without
checking if the file/directory exists, as long as the package and module
do. [#11006]
- Deprecated ``astropy.utils.OrderedDescriptor`` and
``astropy.utils.OrderedDescriptorContainer``, as new features in Python 3
make their use less compelling. [#11094, #11099]
- ``astropy.utils.masked`` provides a new ``Masked`` class/factory that can be
used to represent masked ``ndarray`` and all its subclasses, including
``Quantity`` and its subclasses. These classes can be used inside
coordinates, but the mask is not yet exposed. Generally, the interface should
be considered experimental. [#11127, #11792]
- Add new ``utils.parsing`` module to with helper wrappers around
``ply``. [#11227]
- Change the Time and IERS leap second handling so that the leap second table is
updated only when a Time transform involving UTC is performed. Previously this
update check was done the first time a ``Time`` object was created, which in
practice occured when importing common astropy subpackages like
``astropy.coordinates``. Now you can prevent querying internet resources (for
instance on a cluster) by setting ``iers.conf.auto_download = False``. This
can be done after importing astropy but prior to performing any ``Time``
scale transformations related to UTC. [#11638]
- Added a new module at ``astropy.utils.compat.optional_deps`` to consolidate
the definition of ``HAS_x`` optional dependency flag variables,
like ``HAS_SCIPY``. [#11490]
astropy.wcs
^^^^^^^^^^^
- Add IVOA UCD mappings for some FITS WCS keywords commonly used in solar
physics. [#10965]
- Add ``STOKES`` FITS WCS keyword to the IVOA UCD mapping. [#11236]
- Updated bundled version of WCSLIB to version 7.6. See
https://www.atnf.csiro.au/people/mcalabre/WCS/CHANGES for a list of
included changes. [#11549]
API Changes
-----------
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- For input to representations, subclasses of the class required for a
given attribute will now be allowed in. [#11113]
- Except for ``UnitSphericalRepresentation``, shortcuts in representations now
allow for attached differentials. [#11467]
- Allow coordinate name strings as input to
``SkyCoord.is_transformable_to``. [#11552]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Change ``z_at_value`` to use ``scipy.optimize.minimize_scalar`` with default
method ``Brent`` (other options ``Bounded`` and ``Golden``) and accept
``bracket`` option to set initial search region. [#11080]
- Clarified definition of inputs to ``angular_diameter_distance_z1z2``.
The function now emits ``AstropyUserWarning`` when ``z2`` is less than
``z1``. [#11197]
- Split cosmology realizations from core classes, moving the former to new file
``realizations``. [#11345]
- Since cosmologies are immutable, the initialization signature and values can
be stored, greatly simplifying cloning logic and extending it to user-defined
cosmology classes that do not have attributes with the same name as each
initialization argument. [#11515]
- Cloning a cosmology with changed parameter(s) now appends \
"(modified)" to the
new instance's name, unless a name is explicitly passed to ``clone``. [#11536]
- Allow ``m_nu`` to be input as any quantity-like or array-like -- Quantity,
array, float, str, etc. Input is passed to the Quantity constructor and
converted to eV, still with the prior mass-energy equivalence
enabled. [#11640]
astropy.io.fits
^^^^^^^^^^^^^^^
- For conversion between FITS tables and astropy ``Table``, the standard mask
values of ``NaN`` for float and null string for string are now properly
recognized, leading to a ``MaskedColumn`` with appropriately set mask
instead of a ``Column`` with those values exposed. Conversely, when writing
an astropy ``Table`` to a FITS tables, masked values are now consistently
converted to the standard FITS mask values of ``NaN`` for float and null
string for string (i.e., not just for tables with ``masked=True``, which no
longer is guaranteed to signal the presence of ``MaskedColumn``). [#11222]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- The use of ``version='1.0'`` is now fully deprecated in constructing
a ``astropy.io.votable.tree.VOTableFile``. [#11659]
astropy.modeling
^^^^^^^^^^^^^^^^
- Removed deprecated ``astropy.modeling.blackbody`` module. [#10972]
astropy.table
^^^^^^^^^^^^^
- Added ``Column.value`` as an alias for the existing ``Column.data`` attribute.
This makes accessing a column's underlying data array consistent with the
``.value`` attribute available for ``Time`` and ``Quantity`` objects. [#10962]
- In reading from a FITS tables, the standard mask values of ``NaN`` for float
and null string for string are properly recognized, leading to a
``MaskedColumn`` with appropriately set mask. [#11222]
- Changed the implementation of the ``table.index.Index`` class so instantiating
from this class now returns an ``Index`` object as expected instead of a
``SlicedIndex`` object. [#11333]
astropy.units
^^^^^^^^^^^^^
- The ``physical_type`` attribute of units now returns an instance of
``astropy.units.physical.PhysicalType`` instead of a string. Because
``PhysicalType`` instances can be compared to strings, no code changes
should be necessary when making comparisons. The string representations
of different physical types will differ from previous releases. [#11204]
- Calling ``Unit()`` with no argument now returns a dimensionless unit,
as was documented but not implemented. [#11295]
astropy.utils
^^^^^^^^^^^^^
- Removed deprecated ``utils.misc.InheritDocstrings`` and ``utils.timer``. [#10281]
- Removed usage of deprecated ``ipython`` stream in ``utils.console``. [#10942]
astropy.wcs
^^^^^^^^^^^
- Deprecate ``accuracy`` argument in ``all_world2pix`` which was mistakenly
*documented*, in the case ``accuracy`` was ever used. [#11055]
Bug Fixes
---------
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Fixes for ``convolve_fft`` documentation examples. [#11510]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- Allow ``Distance`` instances with negative distance values as input for
``SphericalRepresentation``. This was always noted as allowed in an
exception message when a negative ``Quantity`` with length units was
passed in, but was not actually possible to do. [#11113]
- Makes the ``Angle.to_string`` method to follow the format described in the
docstring with up to 8 significant decimals instead of 4. [#11153]
- Ensure that proper motions can be calculated when converting a ``SkyCoord``
with cartesian representation to unit-spherical, by fixing the conversion of
``CartesianDifferential`` to ``UnitSphericalDifferential``. [#11469]
- When re-representing coordinates from spherical to unit-spherical and vice
versa, the type of differential will now be preserved. For instance, if only a
radial velocity was present, that will remain the case (previously, a zero
proper motion component was added). [#11482]
- Ensure that wrapping of ``Angle`` does not raise a warning even if ``nan`` are
present. Also try to make sure that the result is within the wrapped range
even in the presence of rounding errors. [#11568]
- Comparing a non-SkyCoord object to a ``SkyCoord`` using ``==`` no longer
raises an error. [#11666]
- Different ``SkyOffsetFrame`` classes no longer interfere with each other,
causing difficult to debug problems with the ``origin`` attribute. The
``origin`` attribute now no longer is propagated, so while it remains
available on a ``SkyCoord`` that is an offset, it no longer is available once
that coordinate is transformed to another frame. [#11730] [#11730]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Cosmology instance names are now immutable. [#11535]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- Fixed bug where writing a table that has comments defined (via
``tbl.meta['comments']``) with the 'csv' format was failing. Since the
formally defined CSV format does not support comments, the comments are now
just ignored unless ``comment=<comment prefix>``is supplied to the
``write()`` call. [#11475]
- Fixed the issue where the CDS reader failed to treat columns
as nullable if the ReadMe file contains a limits specifier. [#11531]
- Made sure that the CDS reader does not ignore an order specifier that
may be present after the null specifier '?'. Also made sure that it
checks null values only when an '=' symbol is present and reads
description text even if there is no whitespace after '?'. [#11593]
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix ``ColDefs.add_col/del_col`` to allow in-place addition or removal of
a column. [#11338]
- Fix indexing of ``fits.Header`` with Numpy integers. [#11387]
- Do not delete ``EXTNAME`` for compressed image header if a default and
non-default ``EXTNAME`` are present. [#11396]
- Prevent warnings about ``HIERARCH`` with ``CompImageHeader`` class. [#11404]
- Fixed regression introduced in Astropy 4.0.5 and 4.2.1 with verification of
FITS headers with HISTORY or COMMENT cards with long (> 72 characters)
values. [#11487]
- Fix reading variable-length arrays when there is a gap between the data and the
heap. [#11688]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- ``NumericArray`` converter now properly broadcasts scalar mask to array. [#11157]
- VOTables are now written with the correct namespace and schema location
attributes. [#11659]
astropy.modeling
^^^^^^^^^^^^^^^^
- Fixes the improper propagation of ``bounding_box`` from
``astropy.modeling.models`` to their inverses. For cases in which the inverses
``bounding_box`` can be determined, the proper calculation has been
implemented. [#11414]
- Bugfix to allow rotation models to accept arbitrarily-shaped inputs. [#11435]
- Bugfixes for ``astropy.modeling`` to allow ``fix_inputs`` to accept empty
dictionaries and dictionaries with ``numpy`` integer keys. [#11443]
- Bugfix for how ``SPECIAL_OPERATORS`` are handled. [#11512]
- Fixes ``Model`` crashes when some inputs are scalars and during some types of
output reshaping. [#11548]
- Fixed bug in ``LevMarLSQFitter`` when using weights and vector inputs. [#11603]
astropy.stats
^^^^^^^^^^^^^
- Fixed a bug with the ``copy=False`` option when carrying out sigma
clipping - previously if ``masked=False`` this still copied the data,
but this will now change the array in-place. [#11219]
astropy.table
^^^^^^^^^^^^^
- Ensure that adding a ``Quantity`` or other mixin column to a ``Table``
does not have side effects, such as creating an associated ``info``
instance (which would lead to slow-down of, e.g., slicing afterwards). [#11077]
- When writing to a FITS tables, masked values are again always converted to
the standard FITS mask values of ``NaN`` for float and null string
for string, not just for table with ``masked=True``. [#11222]
- Using ``Table.to_pandas()`` on an indexed ``Table`` with masked integer values
now correctly construct the ``pandas.DataFrame``. [#11432]
- Fixed ``Table`` HTML representation in Jupyter notebooks so that it is
horizontally scrollable within Visual Studio Code. This was done by wrapping
the ``<table>`` in a ``<div>`` element. [#11476]
- Fix a bug where a string-valued ``Column`` that happened to have a ``unit``
attribute could not be added to a ``QTable``. Such columns are now simply
kept as ``Column`` instances (with a warning). [#11585]
- Fix an issue in ``Table.to_pandas(index=<colname>)`` where the index \
column name
was not being set properly for the ``DataFrame`` index. This was introduced by
an API change in pandas version 1.3.0. Previously when creating a ``DataFrame``
with the index set to an astropy ``Column``, the ``DataFrame`` index name was
automatically set to the column name. [#11921]
astropy.time
^^^^^^^^^^^^
- Fix a thread-safety issue with initialization of the leap-second table
(which is only an issue when ERFA's built-in table is out of date). [#11234]
- Fixed converting a zero-length time object from UTC to
UT1 when an empty array is passed. [#11516]
astropy.uncertainty
^^^^^^^^^^^^^^^^^^^
- ``Distribution`` instances can now be used as input to ``Quantity`` to
initialize ``QuantityDistribution``. Hence, ``distribution * unit``
and ``distribution << unit`` will work too. [#11210]
astropy.units
^^^^^^^^^^^^^
- Move non-astronomy units from astrophys.py to a new misc.py file. [#11142]
- The physical type of ``astropy.units.mol / astropy.units.m ** 3`` is now
defined as molar concentration. It was previously incorrectly defined
as molar volume. [#11204]
- Make ufunc helper lookup thread-safe. [#11226]
- Make ``Unit`` string parsing (as well as ``Angle`` parsing) thread-safe. [#11227]
- Decorator ``astropy.units.decorators.quantity_input`` now only evaluates
return type annotations based on ``UnitBase`` or ``FunctionUnitBase`` types.
Other annotations are skipped over and are not attempted to convert to the
correct type. [#11506]
astropy.utils
^^^^^^^^^^^^^
- Make ``lazyproperty`` and ``classdecorator`` thread-safe. This should fix a
number of thread safety issues. [#11224]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
- Fixed a bug that resulted in some parts of grid lines being visible when they
should have been hidden. [#11380]
- Fixed a bug that resulted in ``time_support()`` failing for intervals of
a few months if one of the ticks was the month December. [#11615]
astropy.wcs
^^^^^^^^^^^
- ``fit_wcs_from_points`` now produces a WCS with integer ``NAXIXn``
values. [#10865]
- Updated bundled version of ``WCSLIB`` to v7.4, fixing a bug that caused
the coefficients of the TPD distortion function to not be written to the
header. [#11260]
- Fixed a bug in assigning type when converting ``colsel`` to
``numpy.ndarray``. [#11431]
- Added ``WCSCOMPARE_*`` constants to the list of WCSLIB constants
available/exposed through the ``astropy.wcs`` module. [#11647]
- Fix a bug that caused APE 14 WCS transformations for FITS WCS with ZOPT, BETA,
VELO, VOPT, or VRAD CTYPE to not work correctly. [#11781]
Other Changes and Additions
---------------------------
- The configuration file is no longer created by default when importing astropy
and its existence is no longer required. Affiliated packages should update their
``__init__.py`` module to remove the block using ``update_default_config`` and
``ConfigurationDefaultMissingWarning``. [#10877]
- Replace ``pkg_resources`` (from setuptools) with ``importlib.metadata`` which
comes from the stdlib, except for Python 3.7 where the backport package is added
as a new dependency. [#11091]
- Turn on numpydoc's ``numpydoc_xref_param_type`` to create cross-references
for the parameter types in the Parameters, Other Parameters, Returns and Yields
sections of the docstrings. [#11118]
- Docstrings across the package are standardized to enable references.
Also added is an Astropy glossary-of-terms to define standard inputs,
e.g. ``quantity-like`` indicates an input that can be interpreted by
``astropy.units.Quantity``. [#11118]
- Binary wheels are now built to the manylinux2010 specification. These wheels
should be supported on all versions of pip shipped with Python 3.7+. [#11377]
- The name of the default branch for the astropy git repository has been renamed
to ``main``, and the documentation and tooling has been updated accordingly.
If you have made a local clone you may wish to update it following the
instructions in the repository's README. [#11379]
- Sphinx cross-reference link targets are added for every ``PhysicalType``.
Now in the parameter types in the Parameters, Other Parameters, Returns and
Yields sections of the docstring, the physical type of a quantity can be
annotated in square brackets.
E.g. `` distance : `~astropy.units.Quantity` ['length'] `` [#11595]
- The minimum supported version of ``ipython`` is now 4.2. [#10942]
- The minimum supported version of ``pyerfa`` is now 1.7.3. [#11637]
4.2.1 (2021-04-01)
==================
Bug Fixes
---------
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Fixed an issue where specializations of the comoving distance calculation
for certain cosmologies could not handle redshift arrays. [#10980]
astropy.io.fits
^^^^^^^^^^^^^^^
- Fix bug where manual fixes to invalid header cards were not preserved when
saving a FITS file. [#11108]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- ``NumericArray`` converter now properly broadcasts scalar mask to array.
[#11157]
astropy.table
^^^^^^^^^^^^^
- Fix bug when initializing a ``Table`` subclass that uses ``TableAttribute``'s.
If the data were an instance of the table then attributes provided in the
table initialization call could be ignored. [#11217]
astropy.time
^^^^^^^^^^^^
- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from \
``1970-01-01T00:00:00 UTC``
to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
This essentially changes the resulting times by 8.000082 seconds, the initial
offset between TAI and UTC. [#11249]
astropy.units
^^^^^^^^^^^^^
- Fixed a bug with the ``quantity_input`` decorator where allowing
dimensionless inputs for an argument inadvertently disabled any checking of
compatible units for that argument. [#11283]
astropy.utils
^^^^^^^^^^^^^
- Fix a bug so that ``np.shape``, ``np.ndim`` and ``np.size`` again work on
classes that use ``ShapedLikeNDArray``, like representations, frames,
sky coordinates, and times. [#11133]
astropy.wcs
^^^^^^^^^^^
- Fix error when a user defined ``proj_point`` parameter is passed to \
``fit_wcs_from_points``. [#11139]
Other Changes and Additions
---------------------------
- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from \
``1970-01-01T00:00:00 UTC``
to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
This essentially changes the resulting times by 8.000082 seconds, the initial
offset between TAI and UTC. [#11249]
Files: