========================
New Features
------------
astropy.constants
^^^^^^^^^^^^^^^^^
- Added ``b_wien`` to represent Wien wavelength displacement law constant.
[2194]
astropy.convolution
^^^^^^^^^^^^^^^^^^^
- Changed the input parameter in ``Gaussian1DKernel`` and
``Gaussian2DKernel`` from ``width`` to ``stddev`` [2085].
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
- The coordinates package has undergone major changes to implement
`APE5 <https://github.com/astropy/astropy-APEs/blob/master/APE5.rst>`_ .
These include backwards-incompatible changes, as the underlying framework
has changed substantially. See the APE5 text and the package documentation
for more details. [2422]
- A ``position_angle`` method has been added to the new ``SkyCoord``. [2487]
- Updated ``Angle.dms`` and ``Angle.hms`` to return ``namedtuple`` -s instead
of regular tuples, and added ``Angle.signed_dms`` attribute that gives the
absolute value of the ``d``, ``m``, and ``s`` along with the sign. [1988]
- By default, ``Distance`` objects are now required to be positive. To
allow negative values, set ``allow_negative=True`` in the ``Distance``
constructor when creating a ``Distance`` instance.
- ``Longitude`` (resp. ``Latitude``) objects cannot be used any more to
initialize or set ``Latitude`` (resp. ``Longitude``) objects. An explicit
conversion to ``Angle`` is now required. [2461]
- The deprecated functions for pre-0.3 coordinate object names like
``ICRSCoordinates`` have been removed. [2422]
- The ``rotation_matrix`` and ``angle_axis`` functions in
``astropy.coordinates.angles`` were made more numerically consistent and
are now tested explicitly [2619]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- Added ``z_at_value`` function to find the redshift at which a cosmology
function matches a desired value. [1909]
- Added ``FLRW.differential_comoving_volume`` method to give the differential
comoving volume at redshift z. [2103]
- The functional interface is now deprecated in favor of the more-explicit
use of methods on cosmology objects. [2343]
- Updated documentation to reflect the removal of the functional
interface. [2507]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- The ``astropy.io.ascii`` output formats ``latex`` and ``aastex`` accept a
dictionary called ``latex_dict`` to specify options for LaTeX output. It is
now possible to specify the table alignment within the text via the
``tablealign`` keyword. [1838]
- If ``header_start`` is specified in a call to ``ascii.get_reader`` or any
method that calls ``get_reader`` (e.g. ``ascii.read``) but ``data_start``
is not specified at the same time, then ``data_start`` is calculated so
that the data starts after the header. Before this, the default was
that the header line was read again as the first data line
[855 and 1844].
- A new ``csv`` format was added as a convenience for handling CSV (comma-
separated values) data. [1935]
This format also recognises rows with an inconsistent number of elements.
[1562]
- An option was added to guess the start of data for CDS format files when
they do not strictly conform to the format standard. [2241]
- Added an HTML reader and writer to the ``astropy.io.ascii`` package.
Parsing requires the installation of BeautifulSoup and is therefore
an optional feature. [2160]
- Added support for inputting column descriptions and column units
with the ``io.ascii.SExtractor`` reader. [2372]
- Allow the use of non-local ReadMe files in the CDS reader. [2329]
- Provide a mechanism to select how masked values are printed. [2424]
- Added support for reading multi-aperture daophot file. [2656]
astropy.io.fits
^^^^^^^^^^^^^^^
- Included a new command-line script called ``fitsheader`` to display the
header(s) of a FITS file from the command line. [2092]
- Added new verification options ``fix+ignore``, ``fix+warn``,
``fix+exception``, ``silentfix+ignore``, ``silentfix+warn``, and
``silentfix+exception`` which give more control over how to report fixable
errors as opposed to unfixable errors.
astropy.modeling
^^^^^^^^^^^^^^^^
- Prototype implementation of fitters that treat optimization algorithms
separately from fit statistics, allowing new fitters to be created by
mixing and matching optimizers and statistic functions. [1914]
- Slight overhaul to how inputs to and outputs from models are handled with
respect to array-valued parameters and variables, as well as sets of
multiple models. See the associated PR and the modeling section of the
v0.4 documentation for more details. [2634]
- Added a new ``SimplexLSQFitter`` which uses a downhill simplex optimizer
with a least squares statistic. [1914]
- Changed ``Gaussian2D`` model such that ``theta`` now increases
counterclockwise. [2199]
- Replaced the ``MatrixRotation2D`` model with a new model called simply
``Rotation2D`` which requires only an angle to specify the rotation.
The new ``Rotation2D`` rotates in a counter-clockwise sense whereas
the old ``MatrixRotation2D`` increased the angle clockwise.
[2266, 2269]
- Added a new ``AffineTransformation2D`` model which serves as a
replacement for the capability of ``MatrixRotation2D`` to accept an
arbitrary matrix, while also adding a translation capability. [2269]
- Added ``GaussianAbsorption1D`` model. [2215]
- New ``Redshift`` model [2176].
astropy.nddata
^^^^^^^^^^^^^^
- Allow initialization ``NDData`` or ``StdDevUncertainty`` with a
``Quantity``. [2380]
astropy.stats
^^^^^^^^^^^^^
- Added flat prior to binom_conf_interval and binned_binom_proportion
- Change default in ``sigma_clip`` from ``np.median`` to ``np.ma.median``.
[2582]
astropy.sphinx
^^^^^^^^^^^^^^
- Note, the following new features are included in astropy-helpers as well:
- The ``automodapi`` and ``automodsumm`` extensions now include sphinx
configuration options to write out what ``automodapi`` and ``automodsumm``
generate, mainly for debugging purposes. [1975, 2022]
- Reference documentation now shows functions/class docstrings at the
intended user-facing API location rather than the actual file where
the implementation is found. [1826]
- The ``automodsumm`` extension configuration was changed to generate
documentation of class ``__call__`` member functions. [1817, 2135]
- ``automodapi`` and ``automodsumm`` now have an ``:allowed-package-names:``
option that make it possible to document functions and classes that
are in a different namespace. [2370]
astropy.table
^^^^^^^^^^^^^
- Improved grouped table aggregation by using the numpy ``reduceat()`` method
when possible. This can speed up the operation by a factor of at least 10
to 100 for large unmasked tables and columns with relatively small
group sizes. [2625]
- Allow row-oriented data input using a new ``rows`` keyword argument.
[850]
- Allow subclassing of ``Table`` and the component classes ``Row``, ``Column``,
``MaskedColumn``, ``TableColumns``, and ``TableFormatter``. [2287]
- Fix to allow numpy integer types as valid indices into tables in
Python 3.x [2477]
- Remove transition code related to the order change in ``Column`` and
``MaskedColumn`` arguments ``name`` and ``data`` from Astropy 0.2
to 0.3. [2511]
- Change HTML table representation in IPython notebook to show all
table columns instead of restricting to 80 column width. [2651]
astropy.time
^^^^^^^^^^^^
- Mean and apparent sidereal time can now be calculated using the
``sidereal_time`` method [1418].
- The time scale now defaults to UTC if no scale is provided. [2091]
- ``TimeDelta`` objects can have all scales but UTC, as well as, for
consistency with time-like quantities, undefined scale (where the
scale is taken from the object one adds to or subtracts from).
This allows, e.g., to work consistently in TDB. [1932]
- ``Time`` now supports ISO format strings that end in "Z". [2211, 2203]
astropy.units
^^^^^^^^^^^^^
- Support for the unit format `Office of Guest Investigator Programs (OGIP)
FITS files
<https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/>`__
has been added. [377]
- The ``spectral`` equivalency can now handle angular wave number. [1306 and
1899]
- Added ``one`` as a shorthand for ``dimensionless_unscaled``. [1980]
- Added ``dex`` and ``dB`` units. [1628]
- Added ``temperature()`` equivalencies to support conversion between
Kelvin, Celsius, and Fahrenheit. [2209]
- Added ``temperature_energy()`` equivalencies to support conversion
between electron-volt and Kelvin. [2637]
- The runtime of ``astropy.units.Unit.compose`` is greatly improved
(by a factor of 2 in most cases) [2544]
- Added ``electron`` unit. [2599]
astropy.utils
^^^^^^^^^^^^^
- ``timer.RunTimePredictor`` now uses ``astropy.modeling`` in its
``do_fit()`` method. [1896]
astropy.vo
^^^^^^^^^^
- A new sub-package, ``astropy.vo.samp``, is now available (this was
previously the SAMPy package, which has been refactored for use in
Astropy). [1907]
- Enhanced functionalities for ``VOSCatalog`` and ``VOSDatabase``. [1206]
astropy.wcs
^^^^^^^^^^^
- astropy now requires wcslib version 4.23. The version of wcslib
included with astropy has been updated to version 4.23.
- Bounds checking is now performed on native spherical
coordinates. Any out-of-bounds values will be returned as
``NaN``, and marked in the ``stat`` array, if using the
low-level ``wcslib`` interface such as
``astropy.wcs.Wcsprm.p2s``. [2107]
- A new method, ``astropy.wcs.WCS.compare()``, compares two wcsprm
structs for equality with varying degrees of strictness. [2361]
- New ``astropy.wcs.utils`` module, with a handful of tools for manipulating
WCS objects, including dropping, swapping, and adding axes.
Misc
^^^^
- Includes the new astropy-helpers package which separates some of Astropy's
build, installation, and documentation infrastructure out into an
independent package, making it easier for Affiliated Packages to depend on
these features. astropy-helpers replaces/deprecates some of the submodules
in the ``astropy`` package (see API Changes below). See also
`APE 4 <https://github.com/astropy/astropy-APEs/blob/master/APE4.rst>`_
for more details on the motivation behind and implementation of
astropy-helpers. [1563]
API Changes
-----------
astropy.config
^^^^^^^^^^^^^^
- The configuration system received a major overhaul, as part of APE3. It is
no longer possible to save configuration items from Python, but instead
users must edit the configuration file directly. The locations of
configuration items have moved, and some have been changed to science state
values. The old locations should continue to work until astropy 0.5, but
deprecation warnings will be displayed. See the `Configuration transition
<https://docs.astropy.org/en/v0.4/config/config_0_4_transition.html>`_
docs for a detailed description of the changes and how to update existing
code. [2094]
astropy.io.fits
^^^^^^^^^^^^^^^
- The ``astropy.io.fits.new_table`` function is now fully deprecated (though
will not be removed for a long time, considering how widely it is used).
Instead please use the more explicit ``BinTableHDU.from_columns`` to create
a new binary table HDU, and the similar ``TableHDU.from_columns`` to create
a new ASCII table. These otherwise accept the same arguments as
``new_table`` which is now just a wrapper for these.
- The ``.fromstring`` classmethod of each HDU type has been simplified such
that, true to its namesake, it only initializes an HDU from a string
containing its header *and* data.
- Fixed an issue where header wildcard matching (for example
``header['DATE*']``) can be used to match *any* characters that might
appear in a keyword. Previously this only matched keywords containing
characters in the set ``[0-9A-Za-z_]``. Now this can also match a hyphen
``-`` and any other characters, as some conventions like ``HIERARCH`` and
record-valued keyword cards allow a wider range of valid characters than
standard FITS keywords.
- This will be the *last* release to support the following APIs that have
been marked deprecated since Astropy v0.1/PyFITS v3.1:
- The ``CardList`` class, which was part of the old header implementation.
- The ``Card.key`` attribute. Use ``Card.keyword`` instead.
- The ``Card.cardimage`` and ``Card.ascardimage`` attributes. Use simply
``Card.image`` or ``str(card)`` instead.
- The ``create_card`` factory function. Simply use the normal ``Card``
constructor instead.
- The ``create_card_from_string`` factory function. Use ``Card.fromstring``
instead.
- The ``upper_key`` function. Use ``Card.normalize_keyword`` method
instead (this is not unlikely to be used outside of PyFITS itself, but it
was technically public API).
- The usage of ``Header.update`` with ``Header.update(keyword, value,
comment)`` arguments. ``Header.update`` should only be used analogously
to ``dict.update``. Use ``Header.set`` instead.
- The ``Header.ascard`` attribute. Use ``Header.cards`` instead for a list
of all the ``Card`` objects in the header.
- The ``Header.rename_key`` method. Use ``Header.rename_keyword`` instead.
- The ``Header.get_history`` method. Use ``header['HISTORY']`` instead
(normal keyword lookup).
- The ``Header.get_comment`` method. Use ``header['COMMENT']`` instead.
- The ``Header.toTxtFile`` method. Use ``header.totextfile`` instead.
- The ``Header.fromTxtFile`` method. Use ``Header.fromtextfile`` instead.
- The ``tdump`` and ``tcreate`` functions. Use ``tabledump`` and
``tableload`` respectively.
- The ``BinTableHDU.tdump`` and ``tcreate`` methods. Use
``BinTableHDU.dump`` and ``BinTableHDU.load`` respectively.
- The ``txtfile`` argument to the ``Header`` constructor. Use
``Header.fromfile`` instead.
- The ``startColumn`` and ``endColumn`` arguments to the ``FITS_record``
constructor. These are unlikely to be used by any user code.
These deprecated interfaces will be removed from the development version of
Astropy following the v0.4 release (they will still be available in any
v0.4.x bugfix releases, however).
astropy.modeling
^^^^^^^^^^^^^^^^
- The method computing the derivative of the model with respect
to parameters was renamed from ``deriv`` to ``fit_deriv``. [1739]
- ``ParametricModel`` and the associated ``Parametric1DModel`` and
``Parametric2DModel`` classes have been renamed ``FittableModel``,
``Fittable1DModel``, and ``Fittable2DModel`` respectively. The base
``Model`` class has subsumed the functionality of the old
``ParametricModel`` class so that all models support parameter constraints.
The only distinction of ``FittableModel`` is that anything which subclasses
it is assumed "safe" to use with Astropy fitters. [2276]
- ``NonLinearLSQFitter`` has been renamed ``LevMarLSQFitter`` to emphasise
that it uses the Levenberg-Marquardt optimization algorithm with a
least squares statistic function. [1914]
- The ``SLSQPFitter`` class has been renamed ``SLSQPLSQFitter`` to emphasize
that it uses the Sequential Least Squares Programming optimization
algorithm with a least squares statistic function. [1914]
- The ``Fitter.errorfunc`` method has been renamed to the more general
``Fitter.objective_function``. [1914]
astropy.nddata
^^^^^^^^^^^^^^
- Issue warning if unit is changed from a non-trivial value by directly
setting ``NDData.unit``. [2411]
- The ``mask`` and ``flag`` attributes of ``astropy.nddata.NDData`` can now
be set with any array-like object instead of requiring that they be set
with a ``numpy.ndarray``. [2419]
astropy.sphinx
^^^^^^^^^^^^^^
- Use of the ``astropy.sphinx`` module is deprecated; all new development of
this module is in ``astropy_helpers.sphinx`` which should be used instead
(therefore documentation builds that made use of any of the utilities in
``astropy.sphinx`` now have ``astropy_helpers`` as a documentation
dependency).
astropy.table
^^^^^^^^^^^^^
- The default table printing function now shows a table header row for units
if any columns have the unit attribute set. [1282]
- Before, an unmasked ``Table`` was automatically converted to a masked
table if generated from a masked Table or a ``MaskedColumn``.
Now, this conversion is only done if explicitly requested or if any
of the input values is actually masked. [1185]
- The repr() function of ``astropy.table.Table`` now shows the units
if any columns have the unit attribute set. [2180]
- The semantics of the config options ``table.max_lines`` and
``table.max_width`` has changed slightly. If these values are not
set in the config file, astropy will try to determine the size
automatically from the terminal. [2683]
astropy.time
^^^^^^^^^^^^
- Correct use of UT in TDB calculation [1938, 1939].
- ``TimeDelta`` objects can have scales other than TAI [1932].
- Location information should now be passed on via an ``EarthLocation``
instance or anything that initialises it, e.g., a tuple containing
either geocentric or geodetic coordinates. [1928]
astropy.units
^^^^^^^^^^^^^
- ``Quantity`` now converts input to float by default, as this is physically
most sensible for nearly all units [1776].
- ``Quantity`` comparisons with ``==`` or ``!=`` now always return ``True``
or ``False``, even if units do not match (for which case a ``UnitsError``
used to be raised). [2328]
- Applying ``float`` or ``int`` to a ``Quantity`` now works for all
dimensionless quantities; they are automatically converted to unscaled
dimensionless. [2249]
- The exception ``astropy.units.UnitException``, which was
deprecated in astropy 0.2, has been removed. Use
``astropy.units.UnitError`` instead [2386]
- Initializing a ``Quantity`` with a valid number/array with a ``unit``
attribute now interprets that attribute as the units of the input value.
This makes it possible to initialize a ``Quantity`` from an Astropy
``Table`` column and have it correctly pick up the units from the column.
[2486]
astropy.wcs
^^^^^^^^^^^
- ``calcFootprint`` was deprecated. It is replaced by
``calc_footprint``. An optional boolean keyword ``center`` was
added to ``calc_footprint``. It controls whether the centers or
the corners of the pixels are used in the computation. [2384]
- ``astropy.wcs.WCS.sip_pix2foc`` and
``astropy.wcs.WCS.sip_foc2pix`` formerly did not conform to the
``SIP`` standard: ``CRPIX`` was added to the ``foc`` result so
that it could be used as input to "core FITS WCS". As of astropy
0.4, ``CRPIX`` is no longer added to the result, so the ``foc``
space is correct as defined in the `SIP convention
<https://ui.adsabs.harvard.edu/abs/2005ASPC..347..491S>`__. [#2360]
- ``astropy.wcs.UnitConverter``, which was deprecated in astropy
0.2, has been removed. Use the ``astropy.units`` module
instead. [2386]
- The following methods on ``astropy.wcs.WCS``, which were
deprecated in astropy 0.1, have been removed [2386]:
- ``all_pix2sky`` -> ``all_pix2world``
- ``wcs_pix2sky`` -> ``wcs_pix2world``
- ``wcs_sky2pix`` -> ``wcs_world2pix``
- The ``naxis1`` and ``naxis2`` attributes and the ``get_naxis``
method of ``astropy.wcs.WCS``, which were deprecated in astropy
0.2, have been removed. Use the shape of the underlying FITS data
array instead. [2386]
Misc
^^^^
- The ``astropy.setup_helpers`` and ``astropy.version_helpers`` modules are
deprecated; any non-critical fixes and development to those modules should
be in ``astropy_helpers`` instead. Packages that use these modules in
their ``setup.py`` should depend on ``astropy_helpers`` following the same
pattern as in the Astropy package template.
Bug Fixes
---------
astropy.constants
^^^^^^^^^^^^^^^^^
- ``astropy.constants.Constant`` objects can now be deep
copied. [2601]
astropy.cosmology
^^^^^^^^^^^^^^^^^
- The distance modulus function in ``astropy.cosmology`` can now handle
negative distances, which can occur in certain closed cosmologies. [2008]
- Removed accidental imports of some extraneous variables in
``astropy.cosmology`` [2025]
astropy.io.ascii
^^^^^^^^^^^^^^^^
- ``astropy.io.ascii.read`` would fail to read lists of strings where some of
the strings consisted of just a newline ("\n"). [2648]
astropy.io.fits
^^^^^^^^^^^^^^^
- Use NaN for missing values in FITS when using Table.write for float
columns. Earlier the default fill value was close to 1e20.[2186]
- Fixes for checksums on 32-bit platforms. Results may be different
if writing or checking checksums in "nonstandard" mode. [2484]
- Additional minor bug fixes ported from PyFITS. [2575]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
- It is now possible to save an ``astropy.table.Table`` object as a
VOTable with any of the supported data formats, ``tabledata``,
``binary`` and ``binary2``, by using the ``tabledata_format``
kwarg. [2138]
- Fixed a crash writing out variable length arrays. [2577]
astropy.nddata
^^^^^^^^^^^^^^
- Indexing ``NDData`` in a way that results in a single element returns that
element. [2170]
- Change construction of result of arithmetic and unit conversion to allow
subclasses to require the presence of attribute like unit. [2300]
- Scale uncertainties to correct units in arithmetic operations and unit
conversion. [2393]
- Ensure uncertainty and mask members are copied in arithmetic and
convert_unit_to. [2394]
- Mask result of arithmetic if either of the operands is masked. [2403]
- Copy all attributes of input object if ``astropy.nddata.NDData`` is
initialized with an ``NDData`` object. [2406]
- Copy ``flags`` to new object in ``convert_unit_to``. [2409]
- Result of ``NDData`` arithmetic makes a copy of any WCS instead of using
a reference. [2410]
- Fix unit handling for multiplication/division and use
``astropy.units.Quantity`` for units arithmetic. [2413]
- A masked ``NDData`` is now converted to a masked array when used in an
operation or ufunc with a numpy array. [2414]
- An unmasked ``NDData`` now uses an internal representation of its mask
state that ``numpy.ma`` expects so that an ``NDData`` behaves as an
unmasked array. [2417]
astropy.sphinx
^^^^^^^^^^^^^^
- Fix crash in smart resolver when the resolution doesn't work. [2591]
astropy.table
^^^^^^^^^^^^^
- The ``astropy.table.Column`` object can now use both functions and callable
objects as formats. [2313]
- Fixed a problem on 64 bit windows that caused errors
"expected 'DTYPE_t' but got 'long long'" [2490]
- Fix initialisation of ``TableColumns`` with lists or tuples. [2647]
- Fix removal of single column using ``remove_columns``. [2699]
- Fix a problem that setting a row element within a masked table did not
update the corresponding table element. [2734]
astropy.time
^^^^^^^^^^^^
- Correct UT1->UTC->UT1 round-trip being off by 1 second if UT1 is
on a leap second. [2077]
astropy.units
^^^^^^^^^^^^^
- ``Quantity.copy`` now behaves identically to ``ndarray.copy``, and thus
supports the ``order`` argument (for numpy >=1.6). [2284]
- Composing base units into identical composite units now works. [2382]
- Creating and composing/decomposing units is now substantially faster [2544]
- ``Quantity`` objects now are able to be assigned NaN [2695]
astropy.wcs
^^^^^^^^^^^
- Astropy now requires wcslib version 4.23. The version of wcslib
included with astropy has been updated to version 4.23.
- Bug fixes in the projection routines: in ``hpxx2s`` [the
cartesian-to-spherical operation of the ``HPX`` projection]
relating to bounds checking, bug introduced at wcslib 4.20; in
``parx2s`` and molx2s`` [the cartesion-to-spherical operation of
the ``PAR`` and ``MOL`` projections respectively] relating to
setting the stat vector; in ``hpxx2s`` relating to implementation
of the vector API; and in ``xphx2s`` relating to setting an
out-of-bounds value of *phi*.
- In the ``PCO`` projection, use alternative projection equations
for greater numerical precision near theta == 0. In the ``COP``
projection, return an exact result for theta at the poles.
Relaxed the tolerance for bounds checking a little in ``SFL``
projection.
- Fix a bug allocating insufficient memory in
``astropy.wcs.WCS.sub`` [2468]
- A new method, ``Wcsprm.bounds_check`` (corresponding to wcslib's
``wcsbchk``) has been added to control what bounds checking is performed by
wcslib.
- ``WCS.to_header`` will now raise a more meaningful exception when the WCS
information is invalid or inconsistent in some way. [1854]
- In ``WCS.to_header``, ``RESTFRQ`` and ``RESTWAV`` are no longer
rewritten if zero. [2468]
- In ``WCS.to_header``, floating point values will now always be written
with an exponent or fractional part, i.e. ``.0`` being appended if necessary
to achieve this. [2468]
- If the C extension for ``astropy.wcs`` was not built or fails to import for
any reason, ``import astropy.wcs`` will result in an ``ImportError``,
rather than getting obscure errors once the ``astropy.wcs`` is used.
[2061]
- When the C extension for ``astropy.wcs`` is built using a version of
``wscslib`` already present in the system, the package does not try
to install ``wcslib`` headers under ``astropy/wcs/include``. [2536]
- Fixes an unresolved external symbol error in the
``astropy.wcs._wcs`` C extension on Microsoft Windows when built
with a Microsoft compiler. [2478]
Misc
^^^^
- Running the test suite with ``python setup.py test`` now works if
the path to the source contains spaces. [2488]
- The version of ERFA included with Astropy is now v1.1.0 [2497]
- Removed deprecated option from travis configuration and force use of
wheels rather than allowing build from source. [2576]
- The short option ``-n`` to run tests in parallel was broken
(conflicts with the distutils built-in option of "dry-run").
Changed to ``-j``. [2566]
Other Changes and Additions
---------------------------
- python setup.py test --coverage will now give more accurate
results, because the coverage analysis will include early imports of
astropy. There doesn't seem to be a way to get this to work when
doing ``import astropy; astropy.test()``, so the ``coverage``
keyword to ``astropy.test`` has been removed. Coverage testing now
depends only on `coverage.py
<http://coverage.readthedocs.io/en/latest/>`__, not
``pytest-cov``. [2112]
- The included version of py.test has been upgraded to 2.5.1. [1970]
- The included version of six.py has been upgraded to 1.5.2. [2006]
- Where appropriate, tests are now run both with and without the
``unicode_literals`` option to ensure that we support both cases. [1962]
- Running the Astropy test suite from within the IPython REPL is disabled for
now due to bad interaction between the test runner and IPython's logging
and I/O handler. For now, run the Astropy tests should be run in the basic
Python interpreter. [2684]
- Added support for numerical comparison of floating point values appearing in
the output of doctests using a ``+FLOAT_CMP`` doctest flag. [2087]
- A monkey patch is performed to fix a bug in Numpy version 1.7 and
earlier where unicode fill values on masked arrays are not
supported. This may cause unintended side effects if your
application also monkey patches ``numpy.ma`` or relies on the broken
behavior. If unicode support of masked arrays is important to your
application, upgrade to Numpy 1.8 or later for best results. [2059]
- The developer documentation has been extensively rearranged and
rewritten. [1712]
- The ``human_time`` function in ``astropy.utils`` now returns strings
without zero padding. [2420]
- The ``bdist_dmg`` command for ``setup.py`` has now been removed. [2553]
- Many broken API links have been fixed in the documentation, and the
``nitpick`` Sphinx option is now used to avoid broken links in future.
[1221, 2019, 2109, 2161, 2162, 2192, 2200, 2296, 2448, 2456,
2460, 2467, 2476, 2508, 2509]