Revisions of python-astropy

Dominique Leuenberger's avatar Dominique Leuenberger (dimstar_suse) accepted request 811018 from Tomáš Chvátal's avatar Tomáš Chvátal (scarabeus_iv) (revision 10)
- Switch to multibuild to avoid cycle with python-asdf package

- %python3_only -> %python_alternative
Dominique Leuenberger's avatar Dominique Leuenberger (dimstar_suse) accepted request 761637 from Todd R's avatar Todd R (TheBlackCat) (revision 8)
- Require erfa >= 1.7 because of https://github.com/astropy/astropy/issues/9654
- Update to 4.0
  + New Features
    > astropy.config
      * The config and cache directories and the name of the config file are now
        customizable. This allows affiliated packages to put their configuration
        files in locations other than ``CONFIG_DIR/.astropy/``.
    > astropy.constants
      * The version of constants can be specified via ScienceState in a way
        that ``constants`` and ``units`` will be consistent.
      * Default constants now use CODATA 2018 and IAU 2015 definitions.
      * Constants can be pickled and unpickled.
    > astropy.convolution
      * Fixed a bug where having a kernel defined using unitless astropy
        quantity objects would result in a crash
    > astropy.coordinates
      * Changed ``coordinates.solar_system_ephemeris`` to also accept local files
        as input. The ephemeris can now be selected by either keyword (e.g. 'jpl',
        'de430'), URL or file path.
      * Added a ``cylindrical`` property to ``SkyCoord`` for shorthand access to a
        ``CylindricalRepresentation`` of the coordinate, as is already available
        for other common representations.
      * The default parameters for the ``Galactocentric`` frame are now controlled by
        a ``ScienceState`` subclass, ``galactocentric_frame_defaults``. New
        parameter sets will be added to this object periodically to keep up with
        ever-improved measurements of the solar position and motion.
      * Coordinate frame classes can now have multiple aliases by assigning a list
        of aliases to the class variable ``name``.  Any of the aliases can be used
        for attribute-style access or as the target of ``tranform_to()`` calls.
      * Passing a NaN to ``Distance`` no longer raises a warning.
    > astropy.cosmology
      * The pre-publication Planck 2018 cosmological parameters are included as the
        ``Planck2018_arXiv_v2`` object.  Please note that the values are preliminary,
        and when the paper is accepted a final version will be included as
        ``Planck18``.
    > astropy.io.ascii
      * Removed incorrect warnings on ``Overflow`` when reading in
        ``FloatType`` 0.0 with ``use_fast_converter``; synchronised
        ``IntType`` ``Overflow`` warning messages.
    > astropy.io.misc
      * Eliminate deprecated compatibility mode when writing ``Table`` metadata to
        HDF5 format.
      * Add support for orthogonal polynomial models to ASDF.
    > astropy.io.fits
      * Changed the ``fitscheck`` and ``fitsdiff`` script to use the ``argparse``
        module instead of ``optparse``.
      * Allow writing of ``Table`` objects with ``Time`` columns that are also table
        indices to FITS files.
    > astropy.io.votable
      * Support VOTable version 1.4.  The main addition is the new element, TIMESYS,
        which allows defining of metadata for temporal coordinates much like COOSYS
        defines metadata for celestial coordinates.
    > astropy.logger
      * Added a configuration option to specify the text encoding of the log file,
        with the default behavior being the platform-preferred encoding.
    > astropy.modeling
      * Major rework of modeling internals. `See modeling documentation for details.
        <https://docs.astropy.org/en/v4.0.x/modeling/changes_for_4.html>`_ .
      * Add ``Tabular1D.inverse``.
      * ``Model.rename`` was changed to add the ability to rename ``Model.inputs``
        and ``Model.outputs``.
      * New function ``fix_inputs`` to generate new models from others by fixing
        specific inputs variable values to constants.
      * ``inputs`` and ``outputs`` are now model instance attributes, and ``n_inputs``
        and ``n_outputs`` are class attributes. Backwards compatible default
        values of ``inputs`` and ``outputs`` are generated. ``Model.inputs`` and
        ``Model.outputs`` are now settable which allows renaming them on per user
        case.
      * Add a new model representing a sequence of rotations in 3D around an
        arbitrary number of axes.
      * Add many of the numpy ufunc functions as models.
      * Add ``BlackBody`` model.
      * Add ``Drude1D`` model.
      * Added analytical King model (KingProjectedAnalytic1D).
      * Added Exponential1D and Logarithmic1D models.
    > astropy.nddata
      * Add a way for technically invalid but unambiguous units in a fits header
        to be parsed by ``CCDData``.
      * ``NDData`` now only accepts WCS objects which implement either the high, or
        low level APE 14 WCS API. All WCS objects are converted to a high level WCS
        object, so ``NDData.wcs`` now always returns a high level APE 14 object. Not
        all array slices are valid for wcs objects, so some slicing operations which
        used to work may now fail.
    > astropy.stats
      * The ``biweight_location``, ``biweight_scale``, and
        ``biweight_midvariance`` functions now allow for the ``axis``
        keyword to be a tuple of integers.
      * Added an ``ignore_nan`` option to the ``biweight_location``,
        ``biweight_scale``, and ``biweight_midvariance`` functions.
      * A numpy ``MaskedArray`` can now be input to the ``biweight_location``,
        ``biweight_scale``, and ``biweight_midvariance`` functions.
      * Removed the warning related to p0 in the Bayesian blocks algorithm. The
        caveat related to p0 is described in the docstring for ``Events``.
    > astropy.table
      * Improved the implementation of ``Table.replace_column()`` to provide
        a speed-up of 5 to 10 times for wide tables.  The method can now accept
        any input which convertible to a column of the correct length, not just
        ``Column`` subclasses.
      * Improved the implementation of ``Table.add_column()`` to provide a speed-up
        of 2 to 10 (or more) when adding a column to tables, with increasing benefit
        as the number of columns increases.  The method can now accept any input
        which is convertible to a column of the correct length, not just ``Column``
        subclasses.
      * Changed the implementation of ``Table.add_columns()`` to use the new
        ``Table.add_column()`` method.  In most cases the performance is similar
        or slightly faster to the previous implemenation.
      * ``MaskedColumn.data`` will now return a plain ``MaskedArray`` rather than
        the previous (unintended) ``masked_BaseColumn``.
      * Added depth-wise stacking ``dstack()`` in higher level table operation.
        It help will in stacking table column depth-wise.
      * Added a new table equality method ``values_equal()`` which allows comparison
        table values to another table, list, or value, and returns an
        element-by-element equality table.
      * Added new ``join_type='cartesian'`` option to the ``join`` operation.
      * Allow adding a table column as a list of mixin-type objects, for instance
        ``t['q'] = [1 * u.m, 2 * u.m]``.
      * Allow table ``join()`` using any sortable key column (e.g. Time), not
        just ndarray subclasses. A column is considered sortable if there is a
        ``<column>.info.get_sortable_arrays()`` method that is implemented.
      * Added ``Table.iterrows()`` for making row-wise iteration faster.
      * Allow table to be initialized with a list of dict where the dict keys
        are not the same in every row. The table column names are the set of all keys
        found in the input data, and any missing key/value pairs are turned into
        missing data in the table.
      * Prevent unnecessary ERFA warnings when indexing by ``Time`` columns.
      * Added support for sorting tables which contain non-mutable mixin columns
        (like ``SkyCoord``) for which in-place item update is not allowed.
      * Ensured that inserting ``np.ma.masked`` (or any other value with a mask) into
        a ``MaskedColumn`` causes a masked entry to be inserted.
      * Fixed a bug that caused an exception when initializing a ``MaskedColumn`` from
        another ``MaskedColumn`` that has a structured dtype.
    > astropy.tests
      * The plugin that handles the custom header in the test output has been
        moved to the ``pytest-astropy-header plugin`` package. `See the README at
        <https://github.com/astropy/pytest-astropy-header>`__ for information about
        using this new plugin.
    > astropy.time
      * Added a new time format ``ymdhms`` for representing times via year, month,
        day, hour, minute, and second attributes.
      * ``TimeDelta`` gained a ``to_value`` method, so that it becomes easier to
        use it wherever a ``Quantity`` with units of time could be used.
      * Made scalar ``Time`` and ``TimeDelta`` objects hashable based on JD, time
        scale, and location attributes.
      * Improved error message when bad input is used to initialize a ``Time`` or
        ``TimeDelta`` object and the format is specified.
      * Allow numeric time formats to be initialized with numpy ``longdouble``,
        ``Decimal`` instances, and strings.  One can select just one of these
        using ``in_subfmt``.  The output can be similarly set using ``out_subfmt``.
      * Introduce a new ``.to_value()`` method for ``Time`` (and adjusted the
        existing method for ``TimeDelta``) so that one can get values in a given
        ``format`` and possible ``subfmt`` (e.g., ``to_value('mjd', 'str')``.
      * Prevent unecessary ERFA warnings when sorting ``Time`` objects.
    > astropy.timeseries
      * Addig ``epoch_phase``, ``wrap_phase`` and ``normalize_phase`` keywords to
        ``TimeSeries.fold()`` to control the phase of the epoch and to return
        normalized phase rather than time for the folded TimeSeries.
    > astropy.uncertainty
      * ``Distribution`` was rewritten such that it deals better with subclasses.
        As a result, Quantity distributions now behave correctly with ``to`` methods
        yielding new distributions of the kind expected for the starting
        distribution, and ``to_value`` yielding ``NdarrayDistribution`` instances.
      * The ``pdf_*`` properties that were used to calculate statistical properties
        of ``Distrubution`` instances were changed into methods. This allows one
        to pass parameters such as ``ddof`` to ``pdf_std`` and ``pdf_var`` (which
        generally should equal 1 instead of the default 0), and reflects that these
        are fairly involved calcuations, not just "properties".
    > astropy.units
      * Support for unicode parsing. Currently supported superscripts are Ohm,
        Ångström, and the micro-sign.
      * Accept non-unit type annotations in @quantity_input.
      * For numpy 1.17 and later, the new ``__array_function__`` protocol is used to
        ensure that all top-level numpy functions interact properly with
        ``Quantity``, preserving units also in operations like ``np.concatenate``.
      * Add equivalencies for surface brightness units to spectral_density.
    > astropy.utils
      * ``astropy.utils.data.download_file`` and
        ``astropy.utils.data.get_readable_fileobj`` now provides an ``http_headers``
        keyword to pass in specific request headers for the download. It also now
        defaults to providing ``User-Agent: Astropy`` and ``Accept: */*``
        headers. The default ``User-Agent`` value can be set with a new
        ``astropy.data.conf.default_http_user_agent`` configuration item.
      * Added a new ``astropy.utils.misc.unbroadcast`` function which can be used
        to return the smallest array that can be broadcasted back to the initial
        array.
      * The specific IERS Earth rotation parameter table used for time and
        coordinate transformations can now be set, either in a context or per
        session, using ``astropy.utils.iers.earth_rotation_table``.
      * Added ``export_cache`` and ``import_cache`` to permit transporting
        downloaded data to machines with no Internet connection. Several new
        functions are available to investigate the cache contents; e.g.,
        ``check_download_cache`` can be used to confirm that the persistent
        cache has not become damaged.
      * A new ``astropy.utils.iers.LeapSeconds`` class has been added to track
        leap seconds.
    > astropy.visualization
      * Added a new ``time_support`` context manager/function for making it easy to
        plot and format ``Time`` objects in Matplotlib.
      * Added support for plotting any WCS compliant with the generalized (APE 14)
        WCS API with WCSAxes.
      * Improved display of information when inspecting ``WCSAxes.coords``.
      * Improved error checking for the ``slices=`` argument to ``WCSAxes``.
      * Added support for more solar frames in WCSAxes.
      * Add support for one dimensional plots to ``WCSAxes``.
      * Add a ``get_format_unit`` to ``wcsaxes.CoordinateHelper``.
      * ``WCSAxes`` now, by default, sets a default label for plot axes which is the
        WCS physical type (and unit) for that axis. This can be disabled using the
        ``coords[i].set_auto_axislabel(False)`` or by explicitly setting an axis
        label.
      * Fixed the display of tick labels when plotting all sky images that have a
        coord_wrap less than 360.
    > astropy.wcs
      * Added a ``astropy.wcs.wcsapi.pixel_to_pixel`` function that can be used to
        transform pixel coordinates in one dataset with a WCS to pixel coordinates
        in another dataset with a different WCS. This function is designed to be
        efficient when the input arrays are broadcasted views of smaller
        arrays.
      * Added a ``local_partial_pixel_derivatives`` function that can be used to
        determine a matrix of partial derivatives of each world coordinate with
        respect to each pixel coordinate.
      * Updated wcslib to v6.4.
      * Improved the  ``SlicedLowLevelWCS`` class in ``astropy.wcs.wcsapi`` to avoid
        storing chains of nested ``SlicedLowLevelWCS`` objects when applying multiple
        slicing operations in turn.
      * Added a ``wcs_info_str`` function to ``astropy.wcs.wcsapi`` to show a summary
        of an APE-14-compliant WCS as a string.
      * Added two new optional attributes to the APE 14 low-level WCS:
        ``pixel_axis_names`` and ``world_axis_names``.
      * Updated the WCS class to now correctly take and return ``Time`` objects in
        the high-level APE 14 API (e.g. ``pixel_to_world``.
      * ``SlicedLowLevelWCS`` now raises ``IndexError`` rather than ``ValueError`` on
        an invalid slice.
      * Added ``fit_wcs_from_points`` function to ``astropy.wcs.utils``. Fits a WCS
        object to set of matched detector/sky coordinates.
      * Fix various bugs in ``SlicedLowLevelWCS`` when the WCS being sliced was one
        dimensional.
  + API Changes
    > astropy.constants
      * Deprecated ``set_enabled_constants`` context manager. Use
        ``astropy.physical_constants`` and ``astropy.astronomical_constants``.
    > astropy.convolution
      * Removed the deprecated keyword argument ``interpolate_nan`` from
        ``convolve_fft``.
      * Removed the deprecated keyword argument ``stddev`` from
        ``Gaussian2DKernel``.
      * Deprecated and renamed ``MexicanHat1DKernel`` and ``MexicanHat2DKernel``
        to ``RickerWavelet1DKernel`` and ``RickerWavelet2DKernel``.
    > astropy.coordinates
      * Removed the ``recommended_units`` attribute from Representations; it was
        deprecated since 3.0.
      * Removed the deprecated frame attribute classes, ``FrameAttribute``,
        ``TimeFrameAttribute``, ``QuantityFrameAttribute``,
        ``CartesianRepresentationFrameAttribute``; deprecated since 3.0.
      * Removed ``longitude`` and ``latitude`` attributes from ``EarthLocation``;
        deprecated since 2.0.
      * The ``DifferentialAttribute`` for frame classes now passes through any input
        to the ``allowed_classes`` if only one allowed class is specified, i.e. this
        now allows passing a quantity in for frame attributes that use
        ``DifferentialAttribute``.
      * Removed the deprecated ``galcen_ra`` and ``galcen_dec`` attributes from the
        ``Galactocentric`` frame.
    > astropy.extern
      * Remove the bundled ``six`` module.
    > astropy.io.ascii
      * Masked column handling has changed, see ``astropy.table`` entry below.
    > astropy.io.misc
      * Masked column handling has changed, see ``astropy.table`` entry below.
      * Removed deprecated ``usecPickle`` kwarg from ``fnunpickle`` and
        ``fnpickle``.
    > astropy.io.fits
      * Masked column handling has changed, see ``astropy.table`` entry below.
      * ``io.fits.Header`` has been made safe for subclasses for copying and slicing.
        As a result of this change, the private subclass ``CompImageHeader``
        now always should be passed an explicit ``image_header``.
      * Removed the deprecated ``tolerance`` option in ``fitsdiff`` and
        ``io.fits.diff`` classes.
      * Removed deprecated keyword arguments for ``CompImageHDU``:
        ``compressionType``, ``tileSize``, ``hcompScale``, ``hcompSmooth``,
        ``quantizeLevel``.
    > astropy.io.votable
      * Changed ``pedantic`` argument to ``verify`` and change it to have three
        string-based options (``ignore``, ``warn``, and ``exception``) instead of
        just being a boolean. In addition, changed default to ``ignore``, which means
        that warnings will not be shown by default when loading VO tables.
    > astropy.modeling
      * Eliminates support for compound classes (but not compound instances!)
      * Slicing compound models more restrictive.
      * Shape of parameters now includes n_models as dimension.
      * Parameter instances now hold values instead of models.
      * Compound model parameters now share instance and value with
        constituent models.
      * No longer possible to assign slices of parameter values to model parameters
        attribute (it is possible to replace it with a complete array).
      * Many private attributes and methods have changed (see documentation).
      * Deprecated ``BlackBody1D`` model and ``blackbody_nu`` and
        ``blackbody_lambda`` functions.
      * The deprecated ``rotations.rotation_matrix_from_angle`` was removed.
      * Deprecated and renamed ``MexicanHat1D`` and ``MexicanHat2D``
        to ``RickerWavelet1D`` and ``RickerWavelet2D``.
      * Deprecated ``modeling.utils.ExpressionTree``.
    > astropy.stats
      * Removed the ``iters`` keyword from sigma clipping stats functions.
      * Renamed the ``a`` parameter to ``data`` in biweight stat functions.
      * Renamed the ``a`` parameter to ``data`` in ``median_absolute_deviation``.
      * Renamed the ``conflevel`` keyword to ``confidence_level`` in
        ``poisson_conf_interval``. Usage of ``conflevel`` now issues
        ``AstropyDeprecationWarning``.
      * Renamed the ``conf`` keyword to ``confidence_level`` in
        ``binom_conf_interval`` and ``binned_binom_proportion``. Usage of ``conf``
        now issues ``AstropyDeprecationWarning``.
      * Renamed the ``conf_lvl`` keyword to ``confidence_level`` in
        ``jackknife_stats``. Usage of ``conf_lvl`` now issues
        ``AstropyDeprecationWarning``.
    > astropy.table
      * The handling of masked columns in the ``Table`` class has changed in a way
        that may impact program behavior. Now a ``Table`` with ``masked=False``
        may contain both ``Column`` and ``MaskedColumn`` objects, and adding a
        masked column or row to a table no longer "upgrades" the table and columns
        to masked.  This means that tables with masked data which are read via
        ``Table.read()`` will now always have ``masked=False``, though specific
        columns will be masked as needed. Two new table properties
        ``has_masked_columns`` and ``has_masked_values`` were added. See the
        `Masking change in astropy 4.0 section within
        <https://docs.astropy.org/en/v4.0.x/table/masking.html>`_ for
        details.
      * Table operation functions such as ``join``, ``vstack``, ``hstack``, etc now
        always return a table with ``masked=False``, though the individual columns
        may be masked as necessary.
      * Changed implementation of ``Table.add_column()`` and ``Table.add_columns()``
        methods.  Now it is possible add any object(s) which can be converted or
        broadcasted to a valid column for the table.  ``Table.__setitem__`` now
        just calls ``add_column``.
      * Changed default table configuration setting ``replace_warnings`` from
        ``['slice']`` to ``[]``.  This removes the default warning when replacing
        a table column that is a slice of another column.
      * Removed the non-public method
        ``astropy.table.np_utils.recarray_fromrecords``.
    > astropy.tests
      * In addition to ``DeprecationWarning``, now ``FutureWarning`` and
        ``ImportWarning`` would also be turned into exceptions.
      * ``warnings_to_ignore_by_pyver`` option in
        ``enable_deprecations_as_exceptions()`` has changed. Please refer to API
        documentation.
      * Default settings for ``warnings_to_ignore_by_pyver`` are updated to remove
        very old warnings that are no longer relevant and to add a new warning
        caused by ``pytest-doctestplus``.
    > astropy.time
      * ``Time.get_ut1_utc`` now uses the auto-updated ``IERS_Auto`` by default,
        instead of the bundled ``IERS_B`` file.
      * Time formats that do not use ``val2`` now raise ValueError instead of
        silently ignoring a provided value.
      * Custom time formats can now accept floating-point types with extended
        precision. Existing time formats raise exceptions rather than discarding
        extended precision through conversion to ordinary floating-point.
      * Time formats (implemented in subclasses of ``TimeFormat``) now have
        their input and output routines more thoroughly validated, making it more
        difficult to create damaged ``Time`` objects.
      * The ``TimeDelta.to_value()`` method now can also take the ``format`` name
        as its argument, in which case the value will be calculated using the
        ``TimeFormat`` machinery. For this case, one can also pass a ``subfmt``
        argument to retrieve the value in another form than ``float``.
    > astropy.timeseries
      * Keyword ``midpoint_epoch`` is renamed to ``epoch_time``.
    > astropy.uncertainty
      * ``Distribution`` was rewritten such that it deals better with subclasses.
        As a result, Quantity distributions now behave correctly with ``to`` methods
        yielding new distributions of the kind expected for the starting distribution,
        and ``to_value`` yielding ``NdarrayDistribution`` instances.
    > astropy.units
      * For consistency with ``ndarray``, scalar ``Quantity.value`` will now return
        a numpy scalar rather than a python one.  This should help keep track of
        precision better, but may lead to unexpected results for the rare cases
        where numpy scalars behave differently than python ones (e.g., taking the
        square root of a negative number).
      * Removed the ``magnitude_zero_points`` module, which was deprecated in
        favour of ``astropy.units.photometric`` since 3.1.
      * ``EquivalentUnitsList`` now has a ``_repr_html_`` method to output a HTML
        table on a call to ``find_equivalent_units`` in Jupyter notebooks.
    > astropy.utils
      * ``download_file`` and related functions now accept a list of fallback
        sources, and they are able to update the cache at the user's request.
      * Allow ``astropy.utils.console.ProgressBarOrSpinner.map`` and
        ``.map_unordered`` to take an argument ``multiprocessing_start_method`` to
        control how subprocesses are started; the different methods (``fork``,
        ``spawn``, and ``forkserver``) have different implications in terms of
        security, efficiency, and behavioural anomalies. The option is useful in
        particular for cross-platform testing because Windows supports only ``spawn``
        while Linux defaults to ``fork``.
      * All operations that act on the astropy download cache now take an argument
        ``pkgname`` that allows one to specify which package's cache to use.
      * Removed deprecated ``funcsigs`` and ``futures`` from
        ``astropy.utils.compat``.
      * Removed the deprecated ``astropy.utils.compat.numpy`` module.
      * Deprecated ``InheritDocstrings`` as it is natively supported by
        Sphinx 1.7 or higher.
      * Deprecated ``astropy.utils.timer`` module, which has been moved to
        ``astroquery.utils.timer`` and will be part of ``astroquery`` 0.4.0.
      * Deprecated ``astropy.utils.misc.set_locale`` function, as it is meant for
        internal use only.
      * The implementation of ``data_info.DataInfo`` has changed (for a considerable
        performance boost). Generally, this should not affect simple subclasses, but
        because the class now uses ``__slots__`` any attributes on the class have to
        be explicitly given a slot.
      * ``IERS`` tables now use ``nan`` to mark missing values
        (rather than ``1e20``).
    > astropy.visualization
      * The default ``clip`` value is now ``False`` in ``ImageNormalize``.
      * The default ``clip`` value is now ``False`` in ``simple_norm``.
      * Infinite values are now excluded when calculating limits in
        ``ManualInterval`` and ``MinMaxInterval``.  They were already excluded in
        all other interval classes.
  + Bug Fixes
    > astropy.coordinates
      * The ``QuantityAttribute`` class now supports a None default value if a unit
        is specified.
      * When ``Representation`` classes with the same name are defined, this no
        longer leads to a ``ValueError``, but instead to a warning and the removal
        of both from the name registry (i.e., one either has to use the class itself
        to set, e.g., ``representation_type``, or refer to the class by its fully
        qualified name).
    > astropy.io.fits
      * Implemented skip (after warning) of header cards with reserved
        keywords in ``table_to_hdu``.
      * Add ``AstropyDeprecationWarning`` to ``read_table_fits`` when ``hdu=`` is
        selected, but does not match single present table HDU.
    > astropy.io.votable
      * Ignore BINARY2 null mask bits for string values
        on parsing a VOTable.  In this way, the reader should never create masked
        values for string types.
      * Corrected a spurious warning issued for the ``value`` attribute of the
        ``<OPTION>`` element in VOTable, as well as a test that erroneously
        treated the warning as acceptable.
    > astropy.nddata
      * ``Cutout2D`` will now get the WCS from its first argument if that argument
        has with WCS property.
      * ``overlap_slices`` will now raise a ``ValueError`` if the input
        position contains any non-finite values (e.g. NaN or inf).
    > astropy.stats
      * Fixed a bug where ``bayesian_blocks`` returned a single edge.
      * Fixed input data type validation for ``bayesian_blocks`` to work int
        arrays.
    > astropy.table
      * Fix bug where adding a column consisting of a list of masked arrays was
        dropping the masks.
      * ``Quantity`` columns with custom units can now round-trip via FITS tables,
        as long as the custom unit is enabled during reading (otherwise, the unit
        will become an ``UnrecognizedUnit``).
      * Fix bug where string values could be truncated when inserting into a
        ``Column`` or ``MaskedColumn``, or when adding or inserting a row containing
        string values.
    > astropy.time
      * Fix bug when ``Time`` object is created with only masked elements.
      * Fix inaccuracy when converting between TimeDelta and datetime.timedelta.
    > astropy.units
      * Ensure that output from test functions of and comparisons between quantities
        can be stored into pre-allocated output arrays (using ``out=array``)
    > astropy.utils
      * For the default ``IERS_Auto`` table, which combines IERS A and B values, the
        IERS nutation parameters "dX_2000A" and "dY_2000A" are now also taken from
        the actual IERS B file rather than from the B values stored in the IERS A
        file.  Any differences should be negligible for any practical application,
        but this may help exactly reproducing results.
    > astropy.visualization
      * Calling ``WCSAxes.set_axis_off()`` now correctly turns off drawing the Axes.
      * Fix incorrect transformation behavior in ``WCSAxes.plot_coord`` and correctly
        handle when input coordinates are not already in spherical representations.
      * Fixed ``ImageNormalize`` so that when it is intialized without
        ``data`` it will still use the input ``interval`` class.
      * Fixed ``ImageNormalize`` to handle input data with non-finite
        values.
    > astropy.wcs
      * Fix incorrect value returned by
        ``wcsapi.HighLevelWCSWrapper.axis_correlation_matrix``.
      * Fix NaN-masking of world coordinates when some but not all of the coordinates
        were flagged as invalid by WCSLIB. This occurred for example with WCS with >2
        dimensions where two of the dimensions were celestial coordinates and pixel
        coordinates ouside of the 'sky' were converted to world coordinates -
        previously all world coordinates were masked even if uncorrelated with the
        celestial axes, but this is no longer the case.
      * The default WCS to celestial frame mapping for world coordinate systems that
        specify ``TLON`` and ``TLAT`` coordinates will now return an ITRS frame with
        the representation class set to ``SphericalRepresentation``. This fixes a bug
        that caused ``WCS.pixel_to_world`` to raise an error for such world
        coordinate systems.
      * ``FITSWCSAPIMixin`` now returns tuples not lists from ``pixel_to_world`` and
        ``world_to_pixel``.
  + Other Changes and Additions
    * Versions of Python <3.6 are no longer supported.
    * Matplotlib 2.1 and later is now required.
    * Versions of Numpy <1.16 are no longer supported.
    * Updated the bundled CFITSIO library to 3.470. See
      ``cextern/cfitsio/docs/changes.txt`` for additional information.
    * The bundled ERFA was updated to version 1.7.0. This is based on
      SOFA 20190722. This includes a fix to avoid precision loss for negative
      JDs, and also includes additional routines to allow updates to the
      leap-second table.
    * The default server for the IERS data files has been updated to reflect
      long-term downtime of the canonical USNO server.
Dominique Leuenberger's avatar Dominique Leuenberger (dimstar_suse) accepted request 663419 from Todd R's avatar Todd R (TheBlackCat) (revision 4)
- 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" <http://adsabs.harvard.edu/abs/2002A%26A...395.1077C>`_
        and the `WCSTools documentation <http://tdc-www.harvard.edu/software/wcstools/wcstools.multiwcs.html>`_.
        [#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
Displaying revisions 41 - 53 of 53
openSUSE Build Service is sponsored by