Overview

Request 663419 accepted

- Use pytest-astropy since it is in Factory now.
- Update to version 3.1
+ New Features
> astropy.convolution
* ``convolve`` now accepts any array-like input, not just ``numpy.ndarray`` or
lists. [#7303]
* ``convolve`` Now raises AstropyUserWarning if nan_treatment='interpolate' and
preserve_nan=False and NaN values are present post convolution. [#8088]
> astropy.coordinates
* The ``SkyCoord.from_name`` constructor now has the ability to create
coordinate objects by parsing object catalogue names that have embedded
J-coordinates. [#7830]
* The new function ``make_transform_graph_docs`` can be used to create a
docstring graph from a custom ``TransformGraph`` object. [#7135]
* ``KDTree`` for catalog matching is now built with sliding midpoint rule
rather than standard. In code, this means setting ``compact_nodes=False``
and ``balanced_tree=False`` in ``cKDTree``. The sliding midpoint rule is much
more suitable for catalog matching, and results in 1000x speedup in some
cases. [#7324]
* Additional information about a site loaded from the Astropy sites registry is
now available in ``EarthLocation.info.meta``. [#7857]
* Added a ``concatenate_representations`` function to combine coordinate
representation data and any associated differentials. [#7922]
* ``BaseCoordinateFrame`` will now check for a method named
``_astropy_repr_in_frame`` when constructing the string forms of attributes.
Allowing any class to control how ``BaseCoordinateFrame`` represents it when
it is an attribute of a frame. [#7745]
* Some rarely-changed attributes of frame classes are now cached, resulting in
speedups (up to 50% in some cases) when creating new scalar frame or
``SkyCoord`` objects. [#7949, #5952]
* Added a ``directional_offset_by`` method to ``SkyCoord`` that computes a new
coordinate given a coordinate, position angle, and angular separation [#5727]
> astropy.cosmology
* The default cosmology has been changed from ``WMAP9`` to ``Planck15``. [#8123]
* Distance calculations with ``LambaCDM`` with no radiation (T_CMB0=0)
are now 20x faster by using elliptic integrals for non-flat cases. [#7155]
* Distance calculations with ``FlatLambaCDM`` with no radiation (T_CMB0=0)
are now 20x faster by using the hypergeometric function solution
for this special case. [#7087]
* Age calculations with ``FlatLambdaCDM`` with no radiation (Tcmb0=0)
are now 1000x faster by using analytic solutions instead of integrating.
[#7117]
> astropy.io.ascii
* Latex reader now ignores ``\toprule``, ``\midrule``, and ``\bottomrule``
commands. [#7349]
* Added the RST (Restructured-text) table format and the fast version of the
RDB reader to the set of formats that are guessed by default. [#5578]
* The read trace (used primarily for debugging) now includes guess argument
sets that were skipped entirely e.g. for not supporting user-supplied kwargs.
All guesses thus removed from ``filtered_guess_kwargs`` are now listed as
"Disabled" at the beginning of the trace. [#5578]
* Emit a warning when reading an ECSV file without specifying the ``format``
and without PyYAML installed. Previously this silently fell through to
parsing as a basic format file and the file metadata was lost. [#7580]
* Optionally allow writing masked columns to ECSV with the mask explicitly
specified as a separate column instead of marking masked elements with ""
(empty string). This allows handling the case of a masked string column
with "" data rows. [#7481]
> astropy.io.misc
* Added support for saving all representation classes and many coordinate
frames to the asdf format. [#7079]
* Added support for saving models with units to the asdf format. [#7237]
* Added a new ``character_as_bytes`` keyword to the HDF5 Table reading
function to control whether byte string columns in the HDF5 file
are left as bytes or converted to unicode. The default is to read
as bytes (``character_as_bytes=True``). [#7024, #8017]
> astropy.io.fits
* ``HDUList.pop()`` now accepts string and tuple extension name
specifications. [#7236]
* Add an ``ignore_hdus`` keyword to ``FITSDiff`` to allow ignoring HDUs by
NAME when diffing two FITS files [#7538]
* Optionally allow writing masked columns to FITS with the mask explicitly
specified as a separate column instead of using the FITS standard of
certain embedded null values (``NaN`` for float, ``TNULL`` for integers).
This can be used to work around limitations in the FITS standard. [#7481]
* All time coordinates can now be written to and read from FITS binary tables,
including those with vectorized locations. [#7430]
* The ``fitsheader`` command line tool now supports a ``dfits+fitsort`` mode,
and the dotted notation for keywords (e.g. ``ESO.INS.ID``). [#7240]
* Fall back to reading arrays using mode='denywrite' if mode='readonly' fails
when using memory-mapping. This solves cases on some platforms when the
available address space was less than the file size (even when using memory
mapping). [#7926]
> astropy.modeling
* Add a ``Multiply`` model which preserves unit through evaluate, unlike
``Scale`` which is dimensionless. [#7210]
* Add a ``uses_quantity`` property to ``Model`` which allows introspection of if
the ``Model`` can accept ``Quantity`` objects. [#7417]
* Add a ``separability_matrix`` function which returns the correlation matrix
of inputs and outputs. [#7803]
* Fixed compatibility of ``JointFitter`` with the latest version of Numpy. [#7984]
* Add ``prior`` and ``posterior`` constraints to modeling parameters. These are
not used by any current fitters, but are provided to allow user code to
experiment with Bayesian fitters. [#7558]
> astropy.nddata
* ``NDUncertainty`` objects now have a ``quantity`` attribute for simple
conversion to quantities. [#7704]
* Add a ``bitmask`` module that provides functions for manipulating bitmasks
and data quality (DQ) arrays. [#7944]
> astropy.stats
* Add an ``astropy.stats.bls`` module with an implementation of the "box least
squares" periodogram that is commonly used for discovering transiting
exoplanets and eclipsing binaries. [#7391]
> astropy.table
* Added support for full use of ``Time`` mixin column for join, hstack, and
vstack table operations. [#6888]
* Added a new table index engine, ``SCEngine``, based on the Sorted Containers
package. [#7574]
* Add a new keyword argument ``serialize_method`` to ``Table.write`` to
control how ``Time`` and ``MaskedColumn`` columns are written. [#7481]
* Allow mixin columns to be used in table ``group`` and ``unique``
functions. This applies to both the key columns and the other data
columns. [#7712]
* Added support for stacking ``Column``, mixin column (e.g. ``Quantity``,
``Time``) or column-like objects. [#7674]
* Added support for inserting a row into a Table that has ``Time`` or
``TimeDelta`` column(s). [#7897]
> astropy.tests
* Added an option ``--readonly`` to the test command to change the
permissions on the temporary installation location to read-only. [#7598]
> astropy.time
* Allow array-valued ``Time`` object to be modified in place. [#6028]
* Added support for missing values (masking) to the ``Time`` class. [#6028]
* Added supper for a 'local' time scale (for free-running clocks, etc.),
and round-tripping to the corresponding FITS time scale. [#7122]
* Added `datetime.timedelta` format class for ``TimeDelta``. [#7441]
* Added ``strftime`` and ``strptime`` methods to ``Time`` class.
These methods are similar to those in the Python standard library
`time` package and provide flexible input and output formatting. [#7323]
* Added ``datetime64`` format to the ``Time`` class to support working with
``numpy.datetime64`` dtype arrays. [#7361]
* Add fractional second support for ``strftime`` and ``strptime`` methods
of ``Time`` class. [#7705]
* Added an ``insert`` method to allow inserting one or more values into a
``Time`` or ``TimeDelta`` object. [#7897]
* Remove timescale from string version of FITS format time string.
The timescale is not part of the FITS standard and should not be included.
This change may cause some compatibility issues for code that relies on
round-tripping a FITS format string with a timescale. Strings generated
from previous versions of this package are still understood but a
DeprecationWarning will be issued. [#7870]
> astropy.uncertainty
* This sub-package was added as a "preview" (i.e. API unstable), containing
the ``Distribution`` class and associated convenience functions. [#6945]
> astropy.units
* Add complex numbers support for ``Quantity._repr_latex_``. [#7676]
* Add ``thermodynamic_temperature`` equivalency to convert between
Jy/beam and "thermodynamic temperature" for cosmology. [#7054]
* Add millibar unit. [#7863]
* Add maggy and nanomaggy unit, as well as associated ``zero_point_flux``
equivalency. [#7891]
* ``AB`` and ``ST`` are now enabled by default, and have alternate names
``ABflux`` and ``STflux``. [#7891]
* Added ``littleh`` unit and associated ``with_H0`` equivalency. [#7970]
> astropy.visualization
* Added ``imshow_norm`` function, which combines imshow and creation of a
``ImageNormalize`` object. [#7785]
> astropy.visualization.wcsaxes
* Add support for setting ``set_separator(None)`` in WCSAxes to use default
separators. [#7570]
* Added two keyword argument options to ``CoordinateHelper.set_format_unit``:
``decimal`` can be used to specify whether to use decimal formatting for the
labels (by default this is False for degrees and hours and True otherwise),
and ``show_decimal_unit`` can be used to determine whether the units should be
shown for decimal labels. [#7318]
* Added documentation for ``transform=`` and ``coord_meta=``. [#7698]
* Allow ``coord_meta=`` to optionally include ``format_unit=``. [#7848]
* Add support for more rcParams related to the grid, ticks, and labels, and
should work with most built-in Matplotlib styles. [#7961]
* Improved rendering of outward-facing ticks. [#7961]
* Add support for ``tick_params`` (which is a standard Matplotlib
function/method) on both the ``WCSAxes`` class and the individual
``CoordinateHelper`` classes. Note that this is provided for compatibility
with Matplotlib syntax users may be familiar with, but it is not the
preferred way to change settings. Instead, methods such as ``set_ticks``
should be preferred. [#7969]
* Moved the argument ``exclude_overlapping`` from ``set_ticks`` to
``set_ticklabel``. [#7969]
* Added a ``pad=`` argument to ``set_ticklabel`` to provide a way to control
the padding between ticks and tick labels. [#7969]
* Added support for setting the tick direction in ``set_ticks`` using the
``direction=`` keyword argument. [#7969]
> astropy.wcs
* Map ITRS frames to terrestrial WCS coordinates. This will make it possible to
use WCSAxes to make figures that combine both celestial and terrestrial
features. An example is plotting the coordinates of an astronomical transient
over an all- sky satellite image to illustrate the position relative to the
Earth at the time of the event. The ITRS frame is identified with WCSs that
use the ``TLON-`` and ``TLAT-`` coordinate types. There are several examples
of WCSs where this syntax is used to describe terrestrial coordinate systems:
Section 7.4.1 of `WCS in FITS "Paper II" `_
and the `WCSTools documentation `_.
[#6990]
* Added the abstract base class for the low-level WCS API described in APE 14
(https://doi.org/10.5281/zenodo.1188875). [#7325]
* Add ``WCS.contains()`` function to check if the WCS footprint contains a given sky coordinate. [#7273]
* Added the abstract base class for the high-level WCS API described in APE 14
(https://doi.org/10.5281/zenodo.1188875). [#7325]
* Added the high-level wrapper class for low-level WCS objects as described in
APE 14 (https://doi.org/10.5281/zenodo.1188875). [#7326]
* Added a new property ``WCS.has_distortion``. [#7326]
* Deprecated ``_naxis1`` and ``_naxis2`` in favor of ``pixel_shape``. [#7973]
* Added compatibility to wcslib version 6. [#8093]
+ API Changes
> astropy.convolution
* ``kernel`` can now be a tuple. [#7561]
* Not technically an API changes, however, the docstring indicated that ``boundary=None``
was the default when actually it is ``boundary='fill'``. The docstring has been corrected,
however, someone may interpret this as an API change not realizing that nothing has actually
changed. [#7293]
* ``interpolate_replace_nans()`` can no longer accept the keyword argument
``preserve_nan``. It is explicitly set to ``False``. [#8088]
> astropy.coordinates
* Fixed ``astropy.coordinates.concatenate`` to include velocity data in the
concatenation. [#7922]
* Changed the name of the single argument to ``Frame.realize_frame()`` from the
(incorrect) ``representation_type`` to ``data``. [#7923]
* Negative parallaxes passed to ``Distance()`` now raise an error by default
(``allow_negative=False``), or are converted to NaN values with a warning
(``allow_negative=True``). [#7988]
* Negating a ``SphericalRepresentation`` object now changes the angular
coordinates (by rotating 180º) instead of negating the distance. [#7988]
* Creation of new frames now generally creates copies of frame attributes,
rather than inconsistently either copying or making references. [#8204]
* The frame class method ``is_equivalent_frame`` now checks for equality of
components to determine if a frame is the same when it has frame attributes
that are representations, rather than checking if they are the same
object. [#8218]
> astropy.io.ascii
* If a fast reader is explicitly selected (e.g. ``fast_reader='force'``) and
options which are incompatible with the fast reader are provided
(e.g. ``quotechar='##'``) then now a ``ParameterError`` exception will be
raised. [#5578]
* The fast readers will now raise ``InconsistentTableError`` instead of
``CParserError`` if the number of data and header columns do not match.
[#5578]
* Changed a number of ``ValueError`` exceptions to ``InconsistentTableError``
in places where the exception is related to parsing a table which is
inconsistent with the specified table format. Note that
``InconsistentTableError`` inherits from ``ValueError`` so no user code
changes are required. [#7425]
> astropy.io.fits
* The ``fits.table_to_hdu()`` function will translate any column ``format``
attributes to a TDISPn format string, if possible, and store it as a TDISPn
keyword in the ``HDU`` header. [#7226]
> astropy.modeling
* Change the order of the return values from ``FittingWithOutlierRemoval``,
such that ``fitted_model`` comes first, for consistency with other fitters.
For the second value, return only a boolean outlier ``mask``, instead of the
previous ``MaskedArray`` (which included a copy of the input data that was
both redundant and inadvertently corrupted at masked points). Return a
consistent type for the second value when ``niter=0``. [#7407]
* Set the minimum value for the ``bolometric_flux`` parameter of the
``BlackBody1D`` model to zero. [#7045]
> astropy.nddata
* Add two new uncertainty classes, ``astropy.nddata.VarianceUncertainty`` and
``astropy.nddata.InverseVariance``. [#6971]
> astropy.stats
* String values can now be used for the ``cenfunc`` and ``stdfunc``
keywords in the ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions. [#7478]
* The ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions now have a ``masked`` keyword,
which can be used to return either a masked array (default) or an
ndarray with the min/max values. [#7478]
* The ``iters`` keyword has been renamed (and deprecated) to
``maxiters`` in the ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions. [#7478]
> astropy.table
* ``Table.read()`` on a FITS binary table file will convert any TDISPn header
keywords to a Python formatting string when possible, and store it in the
column ``format`` attribute. [#7226]
* No values provided to stack will now raise ``ValueError`` rather than
``TypeError``. [#7674]
> astropy.tests
* ``from astropy.tests.helper import *`` no longer includes
``quantity_allclose``. However,
``from astropy.tests.helper import quantity_allclose`` would still work.
[#7381]
* ``warnings_to_ignore_by_pyver`` option in
``enable_deprecations_as_exceptions()`` now takes ``None`` as key.
Any deprecation message that is mapped to ``None`` will be ignored
regardless of the Python version. [#7790]
> astropy.time
* Added the ability to use ``local`` as time scale in ``Time`` and
``TimeDelta``. [#6487]
* Comparisons, addition, and subtraction of ``Time`` instances with non-time
instances will now return ``NotImplemented`` rather than raise the
``Time``-specific ``OperandTypeError``. This will generally lead to a
regular ``TypeError``. As a result, ``OperandTypeError`` now only occurs if
the operation is between ``Time`` instances of incompatible type or scale.
[#7584]
> astropy.units
* In ``UnitBase.compose()``, if a sequence (list|tuple) is passed in to
``units``, the default for ``include_prefix_units`` is set to
`True`, so that no units get ignored. [#6957]
* Negative parallaxes are now converted to NaN values when using the
``parallax`` equivalency. [#7988]
> astropy.utils
* ``InheritDocstrings`` now also works on class properties. [#7166]
* ``diff_values()``, ``report_diff_values()``, and ``where_not_allclose()``
utility functions are moved from ``astropy.io.fits.diff``. [#7444]
* ``invalidate_caches()`` has been removed from the
``astropy.utils.compat`` namespace, use it directly from ``importlib``. [#7872]
> astropy.visualization
* In ``ImageNormalize``, the default for ``clip`` is set to ``True``. [#7800]
* Changed ``AsymmetricPercentileInterval`` and ``MinMaxInterval`` to
ignore NaN values in arrays. [#7360]
* Automatically default to using ``grid_type='contours'`` in WCSAxes when using
a custom ``Transform`` object if the transform has no inverse. [#7847]
+ Performance Improvements
* Reduced import time by more cautious use of the standard library. [#7647]
> astropy.convolution
* Major performance overhaul to ``convolve()``. [#7293]
* ``convolve()``: Boundaries ``fill``, ``extend``, and ``wrap`` now use a single
implementation that pads the image with the correct boundary values before convolving.
The runtimes of these three were significantly skewed. They now have
equivalent runtimes that are also faster than before due to performant contiguous
memory access. However, this does increase the memory footprint as an entire
new image array is required plus that needed for the padded region.[#7293]
* ``convolve()``: Core computation ported from Cython to C. Several optimization
techniques have been implemented to achieve performance gains, e.g. compiler
hoisting, and vectorization, etc. Compiler optimization level ``-O2`` required for
hoisting and ``-O3`` for vectorization. [#7293]
* ``convolve()``: ``nan_treatment=‘interpolate’`` was slow to compute irrespective of
whether any NaN values exist within the array. The input array is now
checked for NaN values and interpolation is disabled if non are found. This is a
significant performance boost for arrays without NaN values. [#7293]
> astropy.coordinates
* Sped up creating SkyCoord objects by a factor of ~2 in some cases. [#7615]
* Sped up getting xyz vectors from ``CartesianRepresentation`` (which
is used a lot internally). [#7638]
* Sped up transformations and some representation methods by replacing
python code with (compiled) ``erfa`` ufuncs. [#7639]
* Sped up adding differential (velocity) data to representations by a factor of
~20, which improves the speed of frame and SkyCoord initialization. [#7924]
* Refactored ``SkyCoord`` initializer to improve performance and code clarity.
[#7958]
* Sped up initialization of ``Longitude`` by ~40%. [#7616]
> astropy.stats
* The ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions are now significantly faster. [#7478]
* A Cython implementation for `astropy.stats.kuiper_two` and a vectorized
implementation for `astropy.stats.kuiper_false_positive_probability` have
been added, speeding up both functions. [#8104]
> astropy.units
* Sped up creating new composite units, and raising units to some power
[#7549, #7649]
* Sped up Unit.to when target unit is the same as the original unit.
[#7643]
* Lazy-load ``scipy.special`` to shorten ``astropy.units`` import time. [#7636]
> astropy.visualization
* Significantly sped up drawing of contours in WCSAxes. [#7568]
+ Bug Fixes
> astropy.convolution
* Fixed bug in ``convolve_fft`` where masked input was copied with
``numpy.asarray`` instead of ``numpy.asanyarray``.
``numpy.asarray`` removes the mask subclass causing
``numpy.ma.ismasked(input)`` to fail, causing ``convolve_fft``
to ignore all masked input. [#8137]
* Remove function side-effects of input data from ``convolve_fft``.
It was possible for input data to remain modified if particular exceptions
were raised. [#8152]
> astropy.coordinates
* ``EarthLocation.of_address`` now uses the OpenStreetMap geocoding API by
default to retrieve coordinates, with the Google API (which now requires an
API key) as an option. [#7918]
* Fixed a bug that caused frame objects with NaN distances to have NaN sky
positions, even if valid sky coordinates were specified. [#7988]
* Fixed ``represent_as()`` to not round-trip through cartesian if the same
representation class as the instance is passed in. [#7988]
> astropy.io.ascii
* Fixed a problem when ``guess=True`` that ``fast_reader`` options
could be dropped after the first fast reader class was tried. [#5578]
* Units in CDS-formatted tables are now parsed correctly by the units
module. [#7348]
> astropy.io.misc
* Fixed bug when writing a table with masked columns to HDF5. Previously
the mask was being silently dropped. If the ``serialize_meta`` option is
enabled the data mask will now be written as an additional column and the
masked columns will round-trip correctly. [#7481]
* Fixed a bug where writing to HDF5 failed for for tables with columns of
unicode strings. Now those columns are first encoded to UTF-8 and
written as byte strings. [#7024, #8017]
* Fixed a bug with serializing the bounding_box of models initialized
with ``Quantities`` . [#8052]
> astropy.io.fits
* Added support for ``copy.copy`` and ``copy.deepcopy`` for ``HDUList``. [#7218]
* Override ``HDUList.copy()`` to return a shallow HDUList instance. [#7218]
> astropy.modeling
* Fix behaviour of certain models with units, by making certain unit-related
attributes readonly. [#7210]
* Fixed an issue with validating a ``bounding_box`` whose items are
``Quantities``. [#8052]
* Fix ``Moffat1D`` and ``Moffat2D`` derivatives. [#8108]
> astropy.nddata
* Fixed rounding behavior in ``overlap_slices`` for even-sized small
arrays. [#7859]
* Added support for pickling ``NDData`` instances that have an uncertainty.
[#7383]
> astropy.stats
* Fix errors in ``kuiper_false_positive_probability``. [#7975]
> astropy.tests
* Fixing bug that prevented to run the doctests on only a single rst documentation
file rather than all of them. [#8055]
> astropy.time
* Fix a bug when setting a ``TimeDelta`` array item with plain float value(s).
This was always interpreted as a JD (day) value regardless of the
``TimeDelta`` format. [#7990]
> astropy.units
* To simplify fast creation of ``Quantity`` instances from arrays, one can now
write ``array << unit`` (equivalent to ``Quantity(array, unit, copy=False)``).
If ``array`` is already a ``Quantity``, this will convert the quantity to the
requested units; in-place conversion can be done with ``quantity <<= unit``.
[#7734]
> astropy.utils
* Fixed a bug due to which ``report_diff_values()`` was reporting incorrect
number of differences when comparing two ``numpy.ndarray``. [#7470]
* The download progress bar is now only displayed in terminals, to avoid
polluting piped output. [#7577]
* Ignore URL mirror caching when there is no internet. [#8163]
> astropy.visualization
* Right ascension coordinates are now shown in hours by default, and the
``set_format_unit`` method on ``CoordinateHelper`` now works correctly
with angle coordinates. [#7215]
+ Other Changes and Additions
* The documentation build now uses the Sphinx configuration from sphinx-astropy
rather than from astropy-helpers. [#7139]
* Versions of Numpy <1.13 are no longer supported. [#7058]
* Running tests now suppresses the output of the installation stage by default,
to allow easier viewing of the test results. To re-enable the output as
before, use ``python setup.py test --verbose-install``. [#7512]
* The ERFA functions are now wrapped in ufuncs instead of custom C code,
leading to some speed improvements, and setting the stage for allowing
overrides with ``__array_ufunc__``. [#7502]
* Updated the bundled CFITSIO library to 3.450. See
``cextern/cfitsio/docs/changes.txt`` for additional information. [#8014]
* The ``representation`` keywords in coordinate frames are now deprecated in
favor of the ``representation_type`` keywords (which are less
ambiguously named). [#8119]
- Update to 3.0.5
* Update to 3.* is a large step, which contains these main
improvements:
- Full support for velocities in astropy.coordinates
- Support for position updates based on source motion for
SkyCoord objects
- Context managers for versioned constants
- Support for quantities in scipy special functions
- showtable command line script
- Lossless writing and reading mixin columns to HDF5 and
FITS
- Support for FITS time standard
- FITS table performance enhancements
- False alarm probabilities in astropy.stats.LombScargle
- Reading large ASCII files in chunks
- Astropy now only supports Python 3
- pytest plugins moved to external packages
Full changelog is available at http://docs.astropy.org/en/stable/changelog.html

Request History
Todd R's avatar

TheBlackCat created request

- Use pytest-astropy since it is in Factory now.
- Update to version 3.1
+ New Features
> astropy.convolution
* ``convolve`` now accepts any array-like input, not just ``numpy.ndarray`` or
lists. [#7303]
* ``convolve`` Now raises AstropyUserWarning if nan_treatment='interpolate' and
preserve_nan=False and NaN values are present post convolution. [#8088]
> astropy.coordinates
* The ``SkyCoord.from_name`` constructor now has the ability to create
coordinate objects by parsing object catalogue names that have embedded
J-coordinates. [#7830]
* The new function ``make_transform_graph_docs`` can be used to create a
docstring graph from a custom ``TransformGraph`` object. [#7135]
* ``KDTree`` for catalog matching is now built with sliding midpoint rule
rather than standard. In code, this means setting ``compact_nodes=False``
and ``balanced_tree=False`` in ``cKDTree``. The sliding midpoint rule is much
more suitable for catalog matching, and results in 1000x speedup in some
cases. [#7324]
* Additional information about a site loaded from the Astropy sites registry is
now available in ``EarthLocation.info.meta``. [#7857]
* Added a ``concatenate_representations`` function to combine coordinate
representation data and any associated differentials. [#7922]
* ``BaseCoordinateFrame`` will now check for a method named
``_astropy_repr_in_frame`` when constructing the string forms of attributes.
Allowing any class to control how ``BaseCoordinateFrame`` represents it when
it is an attribute of a frame. [#7745]
* Some rarely-changed attributes of frame classes are now cached, resulting in
speedups (up to 50% in some cases) when creating new scalar frame or
``SkyCoord`` objects. [#7949, #5952]
* Added a ``directional_offset_by`` method to ``SkyCoord`` that computes a new
coordinate given a coordinate, position angle, and angular separation [#5727]
> astropy.cosmology
* The default cosmology has been changed from ``WMAP9`` to ``Planck15``. [#8123]
* Distance calculations with ``LambaCDM`` with no radiation (T_CMB0=0)
are now 20x faster by using elliptic integrals for non-flat cases. [#7155]
* Distance calculations with ``FlatLambaCDM`` with no radiation (T_CMB0=0)
are now 20x faster by using the hypergeometric function solution
for this special case. [#7087]
* Age calculations with ``FlatLambdaCDM`` with no radiation (Tcmb0=0)
are now 1000x faster by using analytic solutions instead of integrating.
[#7117]
> astropy.io.ascii
* Latex reader now ignores ``\toprule``, ``\midrule``, and ``\bottomrule``
commands. [#7349]
* Added the RST (Restructured-text) table format and the fast version of the
RDB reader to the set of formats that are guessed by default. [#5578]
* The read trace (used primarily for debugging) now includes guess argument
sets that were skipped entirely e.g. for not supporting user-supplied kwargs.
All guesses thus removed from ``filtered_guess_kwargs`` are now listed as
"Disabled" at the beginning of the trace. [#5578]
* Emit a warning when reading an ECSV file without specifying the ``format``
and without PyYAML installed. Previously this silently fell through to
parsing as a basic format file and the file metadata was lost. [#7580]
* Optionally allow writing masked columns to ECSV with the mask explicitly
specified as a separate column instead of marking masked elements with ""
(empty string). This allows handling the case of a masked string column
with "" data rows. [#7481]
> astropy.io.misc
* Added support for saving all representation classes and many coordinate
frames to the asdf format. [#7079]
* Added support for saving models with units to the asdf format. [#7237]
* Added a new ``character_as_bytes`` keyword to the HDF5 Table reading
function to control whether byte string columns in the HDF5 file
are left as bytes or converted to unicode. The default is to read
as bytes (``character_as_bytes=True``). [#7024, #8017]
> astropy.io.fits
* ``HDUList.pop()`` now accepts string and tuple extension name
specifications. [#7236]
* Add an ``ignore_hdus`` keyword to ``FITSDiff`` to allow ignoring HDUs by
NAME when diffing two FITS files [#7538]
* Optionally allow writing masked columns to FITS with the mask explicitly
specified as a separate column instead of using the FITS standard of
certain embedded null values (``NaN`` for float, ``TNULL`` for integers).
This can be used to work around limitations in the FITS standard. [#7481]
* All time coordinates can now be written to and read from FITS binary tables,
including those with vectorized locations. [#7430]
* The ``fitsheader`` command line tool now supports a ``dfits+fitsort`` mode,
and the dotted notation for keywords (e.g. ``ESO.INS.ID``). [#7240]
* Fall back to reading arrays using mode='denywrite' if mode='readonly' fails
when using memory-mapping. This solves cases on some platforms when the
available address space was less than the file size (even when using memory
mapping). [#7926]
> astropy.modeling
* Add a ``Multiply`` model which preserves unit through evaluate, unlike
``Scale`` which is dimensionless. [#7210]
* Add a ``uses_quantity`` property to ``Model`` which allows introspection of if
the ``Model`` can accept ``Quantity`` objects. [#7417]
* Add a ``separability_matrix`` function which returns the correlation matrix
of inputs and outputs. [#7803]
* Fixed compatibility of ``JointFitter`` with the latest version of Numpy. [#7984]
* Add ``prior`` and ``posterior`` constraints to modeling parameters. These are
not used by any current fitters, but are provided to allow user code to
experiment with Bayesian fitters. [#7558]
> astropy.nddata
* ``NDUncertainty`` objects now have a ``quantity`` attribute for simple
conversion to quantities. [#7704]
* Add a ``bitmask`` module that provides functions for manipulating bitmasks
and data quality (DQ) arrays. [#7944]
> astropy.stats
* Add an ``astropy.stats.bls`` module with an implementation of the "box least
squares" periodogram that is commonly used for discovering transiting
exoplanets and eclipsing binaries. [#7391]
> astropy.table
* Added support for full use of ``Time`` mixin column for join, hstack, and
vstack table operations. [#6888]
* Added a new table index engine, ``SCEngine``, based on the Sorted Containers
package. [#7574]
* Add a new keyword argument ``serialize_method`` to ``Table.write`` to
control how ``Time`` and ``MaskedColumn`` columns are written. [#7481]
* Allow mixin columns to be used in table ``group`` and ``unique``
functions. This applies to both the key columns and the other data
columns. [#7712]
* Added support for stacking ``Column``, mixin column (e.g. ``Quantity``,
``Time``) or column-like objects. [#7674]
* Added support for inserting a row into a Table that has ``Time`` or
``TimeDelta`` column(s). [#7897]
> astropy.tests
* Added an option ``--readonly`` to the test command to change the
permissions on the temporary installation location to read-only. [#7598]
> astropy.time
* Allow array-valued ``Time`` object to be modified in place. [#6028]
* Added support for missing values (masking) to the ``Time`` class. [#6028]
* Added supper for a 'local' time scale (for free-running clocks, etc.),
and round-tripping to the corresponding FITS time scale. [#7122]
* Added `datetime.timedelta` format class for ``TimeDelta``. [#7441]
* Added ``strftime`` and ``strptime`` methods to ``Time`` class.
These methods are similar to those in the Python standard library
`time` package and provide flexible input and output formatting. [#7323]
* Added ``datetime64`` format to the ``Time`` class to support working with
``numpy.datetime64`` dtype arrays. [#7361]
* Add fractional second support for ``strftime`` and ``strptime`` methods
of ``Time`` class. [#7705]
* Added an ``insert`` method to allow inserting one or more values into a
``Time`` or ``TimeDelta`` object. [#7897]
* Remove timescale from string version of FITS format time string.
The timescale is not part of the FITS standard and should not be included.
This change may cause some compatibility issues for code that relies on
round-tripping a FITS format string with a timescale. Strings generated
from previous versions of this package are still understood but a
DeprecationWarning will be issued. [#7870]
> astropy.uncertainty
* This sub-package was added as a "preview" (i.e. API unstable), containing
the ``Distribution`` class and associated convenience functions. [#6945]
> astropy.units
* Add complex numbers support for ``Quantity._repr_latex_``. [#7676]
* Add ``thermodynamic_temperature`` equivalency to convert between
Jy/beam and "thermodynamic temperature" for cosmology. [#7054]
* Add millibar unit. [#7863]
* Add maggy and nanomaggy unit, as well as associated ``zero_point_flux``
equivalency. [#7891]
* ``AB`` and ``ST`` are now enabled by default, and have alternate names
``ABflux`` and ``STflux``. [#7891]
* Added ``littleh`` unit and associated ``with_H0`` equivalency. [#7970]
> astropy.visualization
* Added ``imshow_norm`` function, which combines imshow and creation of a
``ImageNormalize`` object. [#7785]
> astropy.visualization.wcsaxes
* Add support for setting ``set_separator(None)`` in WCSAxes to use default
separators. [#7570]
* Added two keyword argument options to ``CoordinateHelper.set_format_unit``:
``decimal`` can be used to specify whether to use decimal formatting for the
labels (by default this is False for degrees and hours and True otherwise),
and ``show_decimal_unit`` can be used to determine whether the units should be
shown for decimal labels. [#7318]
* Added documentation for ``transform=`` and ``coord_meta=``. [#7698]
* Allow ``coord_meta=`` to optionally include ``format_unit=``. [#7848]
* Add support for more rcParams related to the grid, ticks, and labels, and
should work with most built-in Matplotlib styles. [#7961]
* Improved rendering of outward-facing ticks. [#7961]
* Add support for ``tick_params`` (which is a standard Matplotlib
function/method) on both the ``WCSAxes`` class and the individual
``CoordinateHelper`` classes. Note that this is provided for compatibility
with Matplotlib syntax users may be familiar with, but it is not the
preferred way to change settings. Instead, methods such as ``set_ticks``
should be preferred. [#7969]
* Moved the argument ``exclude_overlapping`` from ``set_ticks`` to
``set_ticklabel``. [#7969]
* Added a ``pad=`` argument to ``set_ticklabel`` to provide a way to control
the padding between ticks and tick labels. [#7969]
* Added support for setting the tick direction in ``set_ticks`` using the
``direction=`` keyword argument. [#7969]
> astropy.wcs
* Map ITRS frames to terrestrial WCS coordinates. This will make it possible to
use WCSAxes to make figures that combine both celestial and terrestrial
features. An example is plotting the coordinates of an astronomical transient
over an all- sky satellite image to illustrate the position relative to the
Earth at the time of the event. The ITRS frame is identified with WCSs that
use the ``TLON-`` and ``TLAT-`` coordinate types. There are several examples
of WCSs where this syntax is used to describe terrestrial coordinate systems:
Section 7.4.1 of `WCS in FITS "Paper II" `_
and the `WCSTools documentation `_.
[#6990]
* Added the abstract base class for the low-level WCS API described in APE 14
(https://doi.org/10.5281/zenodo.1188875). [#7325]
* Add ``WCS.contains()`` function to check if the WCS footprint contains a given sky coordinate. [#7273]
* Added the abstract base class for the high-level WCS API described in APE 14
(https://doi.org/10.5281/zenodo.1188875). [#7325]
* Added the high-level wrapper class for low-level WCS objects as described in
APE 14 (https://doi.org/10.5281/zenodo.1188875). [#7326]
* Added a new property ``WCS.has_distortion``. [#7326]
* Deprecated ``_naxis1`` and ``_naxis2`` in favor of ``pixel_shape``. [#7973]
* Added compatibility to wcslib version 6. [#8093]
+ API Changes
> astropy.convolution
* ``kernel`` can now be a tuple. [#7561]
* Not technically an API changes, however, the docstring indicated that ``boundary=None``
was the default when actually it is ``boundary='fill'``. The docstring has been corrected,
however, someone may interpret this as an API change not realizing that nothing has actually
changed. [#7293]
* ``interpolate_replace_nans()`` can no longer accept the keyword argument
``preserve_nan``. It is explicitly set to ``False``. [#8088]
> astropy.coordinates
* Fixed ``astropy.coordinates.concatenate`` to include velocity data in the
concatenation. [#7922]
* Changed the name of the single argument to ``Frame.realize_frame()`` from the
(incorrect) ``representation_type`` to ``data``. [#7923]
* Negative parallaxes passed to ``Distance()`` now raise an error by default
(``allow_negative=False``), or are converted to NaN values with a warning
(``allow_negative=True``). [#7988]
* Negating a ``SphericalRepresentation`` object now changes the angular
coordinates (by rotating 180º) instead of negating the distance. [#7988]
* Creation of new frames now generally creates copies of frame attributes,
rather than inconsistently either copying or making references. [#8204]
* The frame class method ``is_equivalent_frame`` now checks for equality of
components to determine if a frame is the same when it has frame attributes
that are representations, rather than checking if they are the same
object. [#8218]
> astropy.io.ascii
* If a fast reader is explicitly selected (e.g. ``fast_reader='force'``) and
options which are incompatible with the fast reader are provided
(e.g. ``quotechar='##'``) then now a ``ParameterError`` exception will be
raised. [#5578]
* The fast readers will now raise ``InconsistentTableError`` instead of
``CParserError`` if the number of data and header columns do not match.
[#5578]
* Changed a number of ``ValueError`` exceptions to ``InconsistentTableError``
in places where the exception is related to parsing a table which is
inconsistent with the specified table format. Note that
``InconsistentTableError`` inherits from ``ValueError`` so no user code
changes are required. [#7425]
> astropy.io.fits
* The ``fits.table_to_hdu()`` function will translate any column ``format``
attributes to a TDISPn format string, if possible, and store it as a TDISPn
keyword in the ``HDU`` header. [#7226]
> astropy.modeling
* Change the order of the return values from ``FittingWithOutlierRemoval``,
such that ``fitted_model`` comes first, for consistency with other fitters.
For the second value, return only a boolean outlier ``mask``, instead of the
previous ``MaskedArray`` (which included a copy of the input data that was
both redundant and inadvertently corrupted at masked points). Return a
consistent type for the second value when ``niter=0``. [#7407]
* Set the minimum value for the ``bolometric_flux`` parameter of the
``BlackBody1D`` model to zero. [#7045]
> astropy.nddata
* Add two new uncertainty classes, ``astropy.nddata.VarianceUncertainty`` and
``astropy.nddata.InverseVariance``. [#6971]
> astropy.stats
* String values can now be used for the ``cenfunc`` and ``stdfunc``
keywords in the ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions. [#7478]
* The ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions now have a ``masked`` keyword,
which can be used to return either a masked array (default) or an
ndarray with the min/max values. [#7478]
* The ``iters`` keyword has been renamed (and deprecated) to
``maxiters`` in the ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions. [#7478]
> astropy.table
* ``Table.read()`` on a FITS binary table file will convert any TDISPn header
keywords to a Python formatting string when possible, and store it in the
column ``format`` attribute. [#7226]
* No values provided to stack will now raise ``ValueError`` rather than
``TypeError``. [#7674]
> astropy.tests
* ``from astropy.tests.helper import *`` no longer includes
``quantity_allclose``. However,
``from astropy.tests.helper import quantity_allclose`` would still work.
[#7381]
* ``warnings_to_ignore_by_pyver`` option in
``enable_deprecations_as_exceptions()`` now takes ``None`` as key.
Any deprecation message that is mapped to ``None`` will be ignored
regardless of the Python version. [#7790]
> astropy.time
* Added the ability to use ``local`` as time scale in ``Time`` and
``TimeDelta``. [#6487]
* Comparisons, addition, and subtraction of ``Time`` instances with non-time
instances will now return ``NotImplemented`` rather than raise the
``Time``-specific ``OperandTypeError``. This will generally lead to a
regular ``TypeError``. As a result, ``OperandTypeError`` now only occurs if
the operation is between ``Time`` instances of incompatible type or scale.
[#7584]
> astropy.units
* In ``UnitBase.compose()``, if a sequence (list|tuple) is passed in to
``units``, the default for ``include_prefix_units`` is set to
`True`, so that no units get ignored. [#6957]
* Negative parallaxes are now converted to NaN values when using the
``parallax`` equivalency. [#7988]
> astropy.utils
* ``InheritDocstrings`` now also works on class properties. [#7166]
* ``diff_values()``, ``report_diff_values()``, and ``where_not_allclose()``
utility functions are moved from ``astropy.io.fits.diff``. [#7444]
* ``invalidate_caches()`` has been removed from the
``astropy.utils.compat`` namespace, use it directly from ``importlib``. [#7872]
> astropy.visualization
* In ``ImageNormalize``, the default for ``clip`` is set to ``True``. [#7800]
* Changed ``AsymmetricPercentileInterval`` and ``MinMaxInterval`` to
ignore NaN values in arrays. [#7360]
* Automatically default to using ``grid_type='contours'`` in WCSAxes when using
a custom ``Transform`` object if the transform has no inverse. [#7847]
+ Performance Improvements
* Reduced import time by more cautious use of the standard library. [#7647]
> astropy.convolution
* Major performance overhaul to ``convolve()``. [#7293]
* ``convolve()``: Boundaries ``fill``, ``extend``, and ``wrap`` now use a single
implementation that pads the image with the correct boundary values before convolving.
The runtimes of these three were significantly skewed. They now have
equivalent runtimes that are also faster than before due to performant contiguous
memory access. However, this does increase the memory footprint as an entire
new image array is required plus that needed for the padded region.[#7293]
* ``convolve()``: Core computation ported from Cython to C. Several optimization
techniques have been implemented to achieve performance gains, e.g. compiler
hoisting, and vectorization, etc. Compiler optimization level ``-O2`` required for
hoisting and ``-O3`` for vectorization. [#7293]
* ``convolve()``: ``nan_treatment=‘interpolate’`` was slow to compute irrespective of
whether any NaN values exist within the array. The input array is now
checked for NaN values and interpolation is disabled if non are found. This is a
significant performance boost for arrays without NaN values. [#7293]
> astropy.coordinates
* Sped up creating SkyCoord objects by a factor of ~2 in some cases. [#7615]
* Sped up getting xyz vectors from ``CartesianRepresentation`` (which
is used a lot internally). [#7638]
* Sped up transformations and some representation methods by replacing
python code with (compiled) ``erfa`` ufuncs. [#7639]
* Sped up adding differential (velocity) data to representations by a factor of
~20, which improves the speed of frame and SkyCoord initialization. [#7924]
* Refactored ``SkyCoord`` initializer to improve performance and code clarity.
[#7958]
* Sped up initialization of ``Longitude`` by ~40%. [#7616]
> astropy.stats
* The ``SigmaClip`` class and ``sigma_clip`` and
``sigma_clipped_stats`` functions are now significantly faster. [#7478]
* A Cython implementation for `astropy.stats.kuiper_two` and a vectorized
implementation for `astropy.stats.kuiper_false_positive_probability` have
been added, speeding up both functions. [#8104]
> astropy.units
* Sped up creating new composite units, and raising units to some power
[#7549, #7649]
* Sped up Unit.to when target unit is the same as the original unit.
[#7643]
* Lazy-load ``scipy.special`` to shorten ``astropy.units`` import time. [#7636]
> astropy.visualization
* Significantly sped up drawing of contours in WCSAxes. [#7568]
+ Bug Fixes
> astropy.convolution
* Fixed bug in ``convolve_fft`` where masked input was copied with
``numpy.asarray`` instead of ``numpy.asanyarray``.
``numpy.asarray`` removes the mask subclass causing
``numpy.ma.ismasked(input)`` to fail, causing ``convolve_fft``
to ignore all masked input. [#8137]
* Remove function side-effects of input data from ``convolve_fft``.
It was possible for input data to remain modified if particular exceptions
were raised. [#8152]
> astropy.coordinates
* ``EarthLocation.of_address`` now uses the OpenStreetMap geocoding API by
default to retrieve coordinates, with the Google API (which now requires an
API key) as an option. [#7918]
* Fixed a bug that caused frame objects with NaN distances to have NaN sky
positions, even if valid sky coordinates were specified. [#7988]
* Fixed ``represent_as()`` to not round-trip through cartesian if the same
representation class as the instance is passed in. [#7988]
> astropy.io.ascii
* Fixed a problem when ``guess=True`` that ``fast_reader`` options
could be dropped after the first fast reader class was tried. [#5578]
* Units in CDS-formatted tables are now parsed correctly by the units
module. [#7348]
> astropy.io.misc
* Fixed bug when writing a table with masked columns to HDF5. Previously
the mask was being silently dropped. If the ``serialize_meta`` option is
enabled the data mask will now be written as an additional column and the
masked columns will round-trip correctly. [#7481]
* Fixed a bug where writing to HDF5 failed for for tables with columns of
unicode strings. Now those columns are first encoded to UTF-8 and
written as byte strings. [#7024, #8017]
* Fixed a bug with serializing the bounding_box of models initialized
with ``Quantities`` . [#8052]
> astropy.io.fits
* Added support for ``copy.copy`` and ``copy.deepcopy`` for ``HDUList``. [#7218]
* Override ``HDUList.copy()`` to return a shallow HDUList instance. [#7218]
> astropy.modeling
* Fix behaviour of certain models with units, by making certain unit-related
attributes readonly. [#7210]
* Fixed an issue with validating a ``bounding_box`` whose items are
``Quantities``. [#8052]
* Fix ``Moffat1D`` and ``Moffat2D`` derivatives. [#8108]
> astropy.nddata
* Fixed rounding behavior in ``overlap_slices`` for even-sized small
arrays. [#7859]
* Added support for pickling ``NDData`` instances that have an uncertainty.
[#7383]
> astropy.stats
* Fix errors in ``kuiper_false_positive_probability``. [#7975]
> astropy.tests
* Fixing bug that prevented to run the doctests on only a single rst documentation
file rather than all of them. [#8055]
> astropy.time
* Fix a bug when setting a ``TimeDelta`` array item with plain float value(s).
This was always interpreted as a JD (day) value regardless of the
``TimeDelta`` format. [#7990]
> astropy.units
* To simplify fast creation of ``Quantity`` instances from arrays, one can now
write ``array << unit`` (equivalent to ``Quantity(array, unit, copy=False)``).
If ``array`` is already a ``Quantity``, this will convert the quantity to the
requested units; in-place conversion can be done with ``quantity <<= unit``.
[#7734]
> astropy.utils
* Fixed a bug due to which ``report_diff_values()`` was reporting incorrect
number of differences when comparing two ``numpy.ndarray``. [#7470]
* The download progress bar is now only displayed in terminals, to avoid
polluting piped output. [#7577]
* Ignore URL mirror caching when there is no internet. [#8163]
> astropy.visualization
* Right ascension coordinates are now shown in hours by default, and the
``set_format_unit`` method on ``CoordinateHelper`` now works correctly
with angle coordinates. [#7215]
+ Other Changes and Additions
* The documentation build now uses the Sphinx configuration from sphinx-astropy
rather than from astropy-helpers. [#7139]
* Versions of Numpy <1.13 are no longer supported. [#7058]
* Running tests now suppresses the output of the installation stage by default,
to allow easier viewing of the test results. To re-enable the output as
before, use ``python setup.py test --verbose-install``. [#7512]
* The ERFA functions are now wrapped in ufuncs instead of custom C code,
leading to some speed improvements, and setting the stage for allowing
overrides with ``__array_ufunc__``. [#7502]
* Updated the bundled CFITSIO library to 3.450. See
``cextern/cfitsio/docs/changes.txt`` for additional information. [#8014]
* The ``representation`` keywords in coordinate frames are now deprecated in
favor of the ``representation_type`` keywords (which are less
ambiguously named). [#8119]
- Update to 3.0.5
* Update to 3.* is a large step, which contains these main
improvements:
- Full support for velocities in astropy.coordinates
- Support for position updates based on source motion for
SkyCoord objects
- Context managers for versioned constants
- Support for quantities in scipy special functions
- showtable command line script
- Lossless writing and reading mixin columns to HDF5 and
FITS
- Support for FITS time standard
- FITS table performance enhancements
- False alarm probabilities in astropy.stats.LombScargle
- Reading large ASCII files in chunks
- Astropy now only supports Python 3
- pytest plugins moved to external packages
Full changelog is available at http://docs.astropy.org/en/stable/changelog.html


Factory Auto's avatar

factory-auto added opensuse-review-team as a reviewer

Please review sources


Factory Auto's avatar

factory-auto added repo-checker as a reviewer

Please review build success


Factory Auto's avatar

factory-auto accepted review

Check script succeeded


Staging Bot's avatar

staging-bot added openSUSE:Factory:Staging:adi:22 as a reviewer

Being evaluated by staging project "openSUSE:Factory:Staging:adi:22"


Staging Bot's avatar

staging-bot accepted review

Picked openSUSE:Factory:Staging:adi:22


Repo Checker's avatar

repo-checker accepted review

cycle and install check passed


Ismail Dönmez's avatar

namtrac accepted review


Saul Goodman's avatar

licensedigger accepted review

ok


Staging Bot's avatar

staging-bot accepted review

ready to accept


Staging Bot's avatar

staging-bot approved review

ready to accept


Dominique Leuenberger's avatar

dimstar_suse accepted request

Accept to openSUSE:Factory

openSUSE Build Service is sponsored by