15.0 (2021-11-15)
2================
3
4
5New Features
6------------
7
8astropy.convolution
9^^^^^^^^^^^^^^^^^^^
10
11- Added dealiasing support to ``convolve_fft``. [#11495]
12
13astropy.coordinates
14^^^^^^^^^^^^^^^^^^^
15
16- Added missing coordinate transformations where the starting and ending frames
17  are the same (i.e., loopback transformations). [#10909]
18
19- Allow negation, multiplication and division also of representations that
20  include a differential (e.g., ``SphericalRepresentation`` with a
21  ``SphericalCosLatDifferential``).  For all operations, the outcome is
22  equivalent to transforming the representation and differential to cartesian,
23  then operating on those, and transforming back to the original representation
24  (except for ``UnitSphericalRepresentation``, which will return a
25  ``SphericalRepresentation`` if there is a scale change). [#11470]
26
27- ``RadialRepresentation.transform`` can work with a multiplication matrix only.
28  All other matrices still raise an exception. [#11576]
29
30- ``transform`` methods are added to ``BaseDifferential`` and ``CartesianDifferential``.
31  All transform methods on Representations now delegate transforming differentials
32  to the differential objects. [#11654]
33
34- Adds new ``HADec`` built-in frame with transformations to/from ``ICRS`` and ``CIRS``.
35  This frame complements ``AltAz`` to give observed coordinates (hour angle and declination)
36  in the ``ITRS`` for an equatorially mounted telescope. [#11676]
37
38- ``SkyCoord`` objects now have a ``to_table()`` method, which allows them to be
39  converted to a ``QTable``. [#11743]
40
41astropy.cosmology
42^^^^^^^^^^^^^^^^^
43
44- Cosmologies now store metadata in a mutable parameter ``meta``.
45  The initialization arguments ``name`` and ``meta`` are keyword-only. [#11542]
46
47- A new unit, ``redshift``, is defined. It is a dimensionless unit to distinguish
48  redshift quantities from other non-redshift values. For compatibility with
49  dimensionless quantities the equivalency ``dimensionless_redshift`` is added.
50  This equivalency is enabled by default. [#11786]
51
52- Add equality operator for comparing Cosmology instances. Comparison is done on
53  all immutable fields (this excludes 'meta').
54
55  Now the following will work:
56
57  .. code-block:: python
58
59      >>> from astropy.cosmology import Planck13, Planck18
60      >>> Planck13 == Planck18
61      False
62
63      >>> Planck18 == Planck18
64      True [#11813]
65
66- Added ``read/write`` methods to Cosmology using the Unified I/O registry.
67  Now custom file format readers, writers, and format-identifier functions
68  can be registered to read, write, and identify, respectively, Cosmology
69  objects. Details are discussed in an addition to the docs. [#11948]
70
71- Added ``to_format/from_format`` methods to Cosmology using the Unified I/O
72  registry. Now custom format converters and format-identifier functions
73  can be registered to transform Cosmology objects.
74  The transformation between Cosmology and dictionaries is pre-registered.
75  Details are discussed in an addition to the docs. [#11998]
76
77- Added units module for defining and collecting cosmological units and
78  equivalencies. [#12092]
79
80- Flat cosmologies are now set by a mixin class, ``FlatCosmologyMixin`` and its
81  FLRW-specific subclass ``FlatFLRWMixin``. All ``FlatCosmologyMixin`` are flat,
82  but not all flat cosmologies are instances of ``FlatCosmologyMixin``. As
83  example, ``LambdaCDM`` **may** be flat (for the a specific set of parameter
84  values),  but ``FlatLambdaCDM`` **will** be flat.
85
86  Cosmology parameters are now descriptors. When accessed from a class they
87  transparently stores information, like the units and accepted equivalencies.
88  On a cosmology instance, the descriptor will return the parameter value.
89  Parameters can have custom ``getter`` methods.
90
91  Cosmological equality is refactored to check Parameters (and the name)
92  A new method, ``is_equivalent``, is added to check Cosmology equivalence, so
93  a ``FlatLambdaCDM`` and flat ``LambdaCDM`` are equivalent. [#12136]
94
95- Replaced ``z = np.asarray(z)`` with ``z = u.Quantity(z, u.dimensionless_unscaled).value``
96  in Cosmology methods. Input of values with incorrect units raises a UnitConversionError
97  or TypeError. [#12145]
98
99- Cosmology Parameters allow for custom value setters.
100  Values can be set once, but will error if set a second time.
101  If not specified, the default setter is used, which will assign units
102  using the Parameters ``units`` and ``equivalencies`` (if present).
103  Alternate setters may be registered with Parameter to be specified by a str,
104  not a decorator on the Cosmology. [#12190]
105
106- Cosmology instance conversion to dict now accepts keyword argument ``cls`` to
107  determine dict type, e.g. ``OrderedDict``. [#12209]
108
109- A new equivalency is added between redshift and the Hubble parameter and values
110  with units of little-h.
111  This equivalency is also available in the catch-all equivalency ``with_redshift``. [#12211]
112
113- A new equivalency is added between redshift and distance -- comoving, lookback,
114  and luminosity. This equivalency is also available in the catch-all equivalency
115  ``with_redshift``. [#12212]
116
117- Register Astropy Table into Cosmology's ``to/from_format`` I/O, allowing
118  a Cosmology instance to be parsed from or converted to a Table instance.
119  Also adds the ``__astropy_table__`` method allowing ``Table(cosmology)``. [#12213]
120
121- The WMAP1 and WMAP3 are accessible as builtin cosmologies. [#12248]
122
123- Register Astropy Model into Cosmology's ``to/from_format`` I/O, allowing
124  a Cosmology instance to be parsed from or converted to a Model instance. [#12269]
125
126- Register an ECSV reader and writer into Cosmology's I/O, allowing a Cosmology
127  instance to be read from from or written to an ECSV file. [#12321]
128
129astropy.io.ascii
130^^^^^^^^^^^^^^^^
131
132- Added new way to specify the dtype for tables that are read: ``converters``
133  can specify column names with wildcards. [#11892]
134
135- Added a new ``astropy.io.ascii.Mrt`` class to write tables in the American
136  Astronomical Society Machine-Readable Table format,
137  including documentation and tests for the same. [#11897, #12301, #12302]
138
139- When writing, the input data are no longer copied, improving performance.
140  Metadata that might be changed, such as format and serialization
141  information, is copied, hence users can continue to count on no
142  changes being made to the input data. [#11919]
143
144astropy.io.misc
145^^^^^^^^^^^^^^^
146
147- Add Parquet serialization of Tables with pyarrow, including metadata support and
148  columnar access. [#12215]
149
150astropy.modeling
151^^^^^^^^^^^^^^^^
152
153- Added fittable spline models to ``modeling``. [#11634]
154
155- Extensive refactor of ``BoundingBox`` for better usability and maintainability. [#11930]
156
157- Added ``CompoundBoundingBox`` feature to ``~astropy.modeling``, which allows more flexibility in
158  defining bounding boxes for models that are applied to images with many slices. [#11942]
159
160- Improved parameter support for ``astropy.modeling.core.custom_model`` created models. [#11984]
161
162- Added the following trigonometric models and linked them to their appropriate inverse models:
163    * ``Cosine1D`` [#12158]
164    * ``Tangent1D``
165    * ``ArcSine1D``
166    * ``ArcCosine1D``
167    * ``ArcTangent1D`` [#12185]
168
169astropy.table
170^^^^^^^^^^^^^
171
172- Added a new method ``Table.update()`` which does a dictionary-style update of a
173  ``Table`` by adding or replacing columns. [#11904]
174
175- Masked quantities are now fully supported in tables.  This includes ``QTable``
176  automatically converting ``MaskedColumn`` instances to ``MaskedQuantity``,
177  and ``Table`` doing the reverse. [#11914]
178
179- Added new keyword arguments ``keys_left`` and ``keys_right`` to the table ``join``
180  function to support joining tables on key columns with different names. In
181  addition the new keywords can accept a list of column-like objects which are
182  used as the match keys. This allows joining on arbitrary data which are not part
183  of the tables being joined. [#11954]
184
185- Formatting of any numerical values in the output of ``Table.info()`` and
186  ``Column.info()`` has been improved. [#12022]
187
188- It is now possible to add dask arrays as columns in tables
189  and have them remain as dask arrays rather than be converted
190  to Numpy arrays. [#12219]
191
192- Added a new registry for mixin handlers, which can be used
193  to automatically convert array-like Python objects into
194  mixin columns when assigned to a table column. [#12219]
195
196astropy.time
197^^^^^^^^^^^^
198
199- Adds a new method ``earth_rotation_angle`` to calculate the Local Earth Rotation Angle.
200  Also adjusts Local Sidereal Time for the Terrestrial Intermediate Origin (``TIO``)
201  and adds a rigorous correction for polar motion. The ``TIO`` adjustment is approximately
202  3 microseconds per century from ``J2000`` and the polar motion correction is at most
203  about +/-50 nanoseconds. For models ``IAU1982`` and ``IAU1994``, no such adjustments are
204  made as they pre-date the TIO concept. [#11680]
205
206astropy.timeseries
207^^^^^^^^^^^^^^^^^^
208
209- A custom binning scheme is now available in ``aggregate_downsample``.
210  It allows ``time_bin_start`` and ``time_bin_size`` to be arrays, and adds
211  an optional ``time_bin_end``.
212  This scheme mirrors the API for ``BinnedTimeSeries``. [#11266]
213
214astropy.units
215^^^^^^^^^^^^^
216
217- ``Quantity`` gains a ``__class_getitem__`` to create unit-aware annotations
218   with the syntax ``Quantity[unit or physical_type, shape, numpy.dtype]``.
219   If the python version is 3.9+ or ``typing_extensions`` is installed,
220   these are valid static type annotations. [#10662]
221
222- Each physical type is added to ``astropy.units.physical``
223  (e.g., ``physical.length`` or ``physical.electrical_charge_ESU``).
224  The attribute-accessible names (underscored, without parenthesis) also
225  work with ``astropy.units.physical.get_physical_type``. [#11691]
226
227- It is now possible to have quantities based on structured arrays in
228  which the unit has matching structure, giving each field its own unit,
229  using units constructed like ``Unit('AU,AU/day')``. [#11775]
230
231- The milli- prefix has been added to ``astropy.units.Angstrom``. [#11788]
232
233- Added attributes ``base``, ``coords``, and ``index`` and method ``copy()`` to
234  ``QuantityIterator`` to match ``numpy.ndarray.flatiter``. [#11796]
235
236- Added "angular frequency" and "angular velocity" as aliases for the "angular
237  speed" physical type. [#11865]
238
239- Add light-second to units of length [#12128]
240
241astropy.utils
242^^^^^^^^^^^^^
243
244- The ``astropy.utils.deprecated_renamed_argument()`` decorator now supports
245  custom warning messages. [#12305]
246
247- The NaN-aware numpy functions such as ``np.nansum`` now work on Masked
248  arrays, with masked values being treated as NaN, but without raising
249  warnings or exceptions. [#12454]
250
251astropy.visualization
252^^^^^^^^^^^^^^^^^^^^^
253
254- Added a feature so that SphericalCircle will accept center parameter as a SkyCoord object. [#11790]
255
256astropy.wcs
257^^^^^^^^^^^
258
259- ``astropy.wcs.utils.obsgeo_to_frame`` has been added to convert the obsgeo coordinate
260  array on ``astropy.wcs.WCS`` objects to an ``ITRS`` coordinate frame instance. [#11716]
261
262- Updated bundled ``WCSLIB`` to version 7.7 with several bugfixes. [#12034]
263
264
265API Changes
266-----------
267
268astropy.config
269^^^^^^^^^^^^^^
270
271- ``update_default_config`` and ``ConfigurationMissingWarning`` are deprecated. [#11502]
272
273astropy.constants
274^^^^^^^^^^^^^^^^^
275
276- Removed deprecated ``astropy.constants.set_enabled_constants`` context manager. [#12105]
277
278astropy.coordinates
279^^^^^^^^^^^^^^^^^^^
280
281- Positions for the Moon using the 'builtin' ephemeris now use the new
282  ``erfa.moon98`` function instead of our own implementation of the Meeus
283  algorithm. As this also corrects a misunderstanding of the frame returned by
284  the Meeus, this improves the agreement with the JPL ephemeris from about 30 to
285  about 6 km rms. [#11753]
286
287- Removed deprecated ``representation`` attribute from
288  ``astropy.coordinates.BaseCoordinateFrame`` class. [#12257]
289
290- ``SpectralQuantity`` and ``SpectralCoord`` ``.to_value`` method can now be called without
291  ``unit`` argument in order to maintain a consistent interface with ``Quantity.to_value`` [#12440]
292
293astropy.cosmology
294^^^^^^^^^^^^^^^^^
295
296- ``z_at_value`` now works with arrays for all arguments (except ``func``,
297  ``verbose``, and ``method``). Consequently, ``coordinates.Distance.z`` can
298  be used when Distance is an array. [#11778]
299
300- Remove deprecation warning and error remapping in ``Cosmology.clone``.
301  Now unknown arguments will raise a ``TypeError``, not an ``AttributeError``. [#11785]
302
303- The ``read/write`` and ``to/from_format`` Unified I/O registries are separated
304  and apply only to ``Cosmology``. [#12015]
305
306- Cosmology parameters in ``cosmology.parameters.py`` now have units,
307  where applicable. [#12116]
308
309- The function ``astropy.cosmology.utils.inf_like()`` is deprecated. [#12175]
310
311- The function ``astropy.cosmology.utils.vectorize_if_needed()`` is deprecated.
312  A new function ``astropy.cosmology.utils.vectorize_redshift_method()`` is added
313  as replacement. [#12176]
314
315- Cosmology base class constructor now only accepts arguments ``name`` and ``meta``.
316  Subclasses should add relevant arguments and not pass them to the base class. [#12191]
317
318astropy.io
319^^^^^^^^^^
320
321- When ``astropy`` raises an ``OSError`` because a file it was told to write
322  already exists, the error message now always suggests the use of the
323  ``overwrite=True`` argument. The wording is now consistent for all I/O formats. [#12179]
324
325astropy.io.ascii
326^^^^^^^^^^^^^^^^
327
328- Removed deprecated ``overwrite=None`` option for
329  ``astropy.io.ascii.ui.write()``. Overwriting existing files now only happens if
330  ``overwrite=True``. [#12171]
331
332astropy.io.fits
333^^^^^^^^^^^^^^^
334
335- The internal class _CardAccessor is no longer registered as a subclass of
336  the Sequence or Mapping ABCs. [#11923]
337
338- The deprecated ``clobber`` argument will be removed from the
339  ``astropy.io.fits`` functions in version 5.1, and the deprecation warnings now
340  announce that too. [#12311]
341
342astropy.io.registry
343^^^^^^^^^^^^^^^^^^^
344
345- The ``write`` function now is allowed to return possible content results, which
346  means that custom writers could, for example, create and return an instance of
347  some container class rather than a file on disk. [#11916]
348
349- The registry functions are refactored into a class-based system.
350  New Read-only, write-only, and read/write registries can be created.
351  All functions accept a new argument ``registry``, which if not specified,
352  defaults to the global default registry. [#12015]
353
354astropy.io.votable
355^^^^^^^^^^^^^^^^^^
356
357- Deprecated the ``pedantic`` keyword argument in the
358  ``astropy.io.votable.table.parse`` function and the corresponding configuration
359  setting. It has been replaced by the ``verify`` option. [#12129]
360
361astropy.modeling
362^^^^^^^^^^^^^^^^
363
364- Refactored how ``astropy.modeling.Model`` handles model evaluation in order to better
365  organize the code. [#11931]
366
367- Removed the following deprecated modeling features:
368      ``astropy.modeling.utils.ExpressionTree`` class,
369      ``astropy.modeling.functional_models.MexicanHat1D`` model,
370      ``astropy.modeling.functional_models.MexicanHat2D`` model,
371      ``astropy.modeling.core.Model.inputs`` setting in model initialize,
372      ``astropy.modeling.core.CompoundModel.inverse`` setting in model initialize, and
373      ``astropy.modeling.core.CompoundModel.both_inverses_exist()`` method. [#11978]
374
375- Deprecated the ``AliasDict`` class in ``modeling.utils``. [#12411]
376
377astropy.nddata
378^^^^^^^^^^^^^^
379
380- Removed ``block_reduce`` and ``block_replicate`` functions from
381  ``nddata.utils``. These deprecated functions in ``nddata.utils`` were
382  moved to ``nddata.blocks``. [#12288]
383
384astropy.stats
385^^^^^^^^^^^^^
386
387- Removed the following deprecated features from ``astropy.stats``:
388
389  * ``conf`` argument for ``funcs.binom_conf_interval()`` and
390    ``funcs.binned_binom_proportion()``,
391  * ``conflevel`` argument for ``funcs.poisson_conf_interval()``, and
392  * ``conf_lvl`` argument for ``jackknife.jackknife_stats()``. [#12200]
393
394astropy.table
395^^^^^^^^^^^^^
396
397- Printing a ``Table`` now shows the qualified class name of mixin columns in the
398  dtype header row  instead of "object". This applies to all the ``Table`` formatted output
399  methods whenever ``show_dtype=True`` is selected. [#11660]
400
401- The 'overwrite' argument has been added to the jsviewer table writer.
402  Overwriting an existing file requires 'overwrite' to be True. [#11853]
403
404- The 'overwrite' argument has been added to the pandas table writers.
405  Overwriting an existing file requires 'overwrite' to be True. [#11854]
406
407- The table ``join`` function now accepts only the first four arguments ``left``,
408  ``right``, ``keys``, and ``join_type`` as positional arguments. All other
409  arguments must be supplied as keyword arguments. [#11954]
410
411- Adding a dask array to a Table will no longer convert
412  that dask to a Numpy array, so accessing t['dask_column']
413  will now return a dask array instead of a Numpy array. [#12219]
414
415astropy.time
416^^^^^^^^^^^^
417
418- Along with the new method ``earth_rotation_angle``, ``sidereal_time`` now accepts
419  an ``EarthLocation`` as the ``longitude`` argument. [#11680]
420
421astropy.units
422^^^^^^^^^^^^^
423
424- Unit ``littleh`` and equivalency ``with_H0`` have been moved to the
425  ``cosmology`` module and are deprecated from ``astropy.units``. [#12092]
426
427astropy.utils
428^^^^^^^^^^^^^
429
430- ``astropy.utils.introspection.minversion()`` now uses
431  ``importlib.metadata.version()``. Therefore, its ``version_path`` keyword is no
432  longer used and deprecated. This keyword will be removed in a future release. [#11714]
433
434- Updated ``utils.console.Spinner`` to better resemble the API of
435  ``utils.console.ProgressBar``, including an ``update()`` method and
436  iterator support. [#11772]
437
438- Removed deprecated ``check_hashes`` in ``check_download_cache()``. The function also
439  no longer returns anything. [#12293]
440
441- Removed unused ``download_cache_lock_attempts`` configuration item in
442  ``astropy.utils.data``. Deprecation was not possible. [#12293]
443
444- Removed deprecated ``hexdigest`` keyword from ``import_file_to_cache()``. [#12293]
445
446- Setting ``remote_timeout`` configuration item in ``astropy.utils.data`` to 0 will
447  no longer disable download from the Internet; Set ``allow_internet`` configuration
448  item to ``False`` instead. [#12293]
449
450astropy.visualization
451^^^^^^^^^^^^^^^^^^^^^
452
453- Removed deprecated ``imshow_only_kwargs`` keyword from ``imshow_norm``. [#12290]
454
455astropy.wcs
456^^^^^^^^^^^
457
458- Move complex logic from ``HighLevelWCSMixin.pixel_to_world`` and
459  ``HighLevelWCSMixin.world_to_pixel`` into the helper functions
460  ``astropy.wcs.wcsapi.high_level_api.high_level_objects_to_values`` and
461  ``astropy.wcs.wcsapi.high_level_api.values_to_high_level_objects`` to allow
462  reuse in other places. [#11950]
463
464
465Bug Fixes
466---------
467
468astropy.config
469^^^^^^^^^^^^^^
470
471- ``generate_config`` no longer outputs wrong syntax for list type. [#12037]
472
473astropy.constants
474^^^^^^^^^^^^^^^^^
475
476- Fixed a bug where an older constants version cannot be set directly after
477  astropy import. [#12084]
478
479astropy.convolution
480^^^^^^^^^^^^^^^^^^^
481
482- Passing an ``array`` argument for any Kernel1D or Kernel2D subclasses (with the
483  exception of CustomKernel) will now raise a ``TypeError``. [#11969]
484
485astropy.coordinates
486^^^^^^^^^^^^^^^^^^^
487
488- If a ``Table`` containing a ``SkyCoord`` object as a column is written to a
489  FITS, ECSV or HDF5 file then any velocity information that might be present
490  will be retained. [#11750]
491
492- The output of ``SkyCoord.apply_space_motion()`` now always has the same
493  differential type as the ``SkyCoord`` itself. [#11932]
494
495- Fixed bug where Angle, Latitude and Longitude with NaN values could not be printed. [#11943]
496
497- Fixed a bug with the transformation from ``PrecessedGeocentric`` to ``GCRS``
498  where changes in ``obstime``, ``obsgeoloc``, or ``obsgeovel`` were ignored.
499  This bug would also affect loopback transformations from one ``PrecessedGeocentric``
500  frame to another ``PrecessedGeocentric`` frame. [#12152]
501
502- Fixed a bug with the transformations between ``TEME`` and ``ITRS`` or between ``TEME``
503  and itself where a change in ``obstime`` was ignored. [#12152]
504
505- Avoid unnecessary transforms through CIRS for AltAz and HADec and
506  use ICRS as intermediate frame for these transformations instead. [#12203]
507
508- Fixed a bug where instantiating a representation with a longitude component
509  could mutate input provided for that component even when copying is specified. [#12307]
510
511- Wrapping an ``Angle`` array will now ignore NaN values instead of attempting to wrap
512  them, which would produce unexpected warnings/errors when working with coordinates
513  and representations due to internal broadcasting. [#12317]
514
515astropy.cosmology
516^^^^^^^^^^^^^^^^^
517
518- Dictionaries for in-built cosmology realizations are not altered by creating
519  the realization and are also made immutable. [#12278]
520
521astropy.io.fits
522^^^^^^^^^^^^^^^
523
524- Prevent zero-byte writes for FITS binary tables to
525  speed up writes on the Lustre filesystem. [#11955]
526
527- Enable ``json.dump`` for FITS_rec with variable length (VLF) arrays. [#11957]
528
529- Add support for reading and writing int8 images [#11996]
530
531- Ensure header passed to ``astropy.io.fits.CompImageHDU`` does not need to contain
532  standard cards that can be automatically generated, such as ``BITPIX`` and ``NAXIS``. [#12061]
533
534- Fixed a bug where ``astropy.io.fits.HDUDiff`` would ignore the ``ignore_blank_cards``
535  keyword argument. [#12122]
536
537- Open uncompressed file even if extension says it's compressed [#12135]
538
539- Fix the computation of the DATASUM in a ``CompImageHDU`` when the data is >1D. [#12138]
540
541- Reading files where the SIMPLE card is present but with an invalid format now
542  issues a warning instead of raising an exception [#12234]
543
544- Convert UNDEFINED to None when iterating over card values. [#12310]
545
546astropy.io.misc
547^^^^^^^^^^^^^^^
548
549- Update ASDF tag versions in ExtensionType subclasses to match ASDF Standard 1.5.0. [#11986]
550
551- Fix ASDF serialization of model inputs and outputs and add relevant assertion to
552  test helper. [#12381]
553
554- Fix bug preventing ASDF serialization of bounding box for models with only one input. [#12385]
555
556astropy.io.votable
557^^^^^^^^^^^^^^^^^^
558
559- Now accepting UCDs containing phot.color. [#11982]
560
561astropy.modeling
562^^^^^^^^^^^^^^^^
563
564- Added ``Parameter`` descriptions to the implemented models which were
565  missing. [#11232]
566
567- The ``separable`` property is now correctly set on models constructed with
568  ``astropy.modeling.custom_model``. [#11744]
569
570- Minor bugfixes and improvements to modeling including the following:
571      * Fixed typos and clarified several errors and their messages throughout
572        modeling.
573      * Removed incorrect try/except blocks around scipy code in
574        ``convolution.py`` and ``functional_models.py``.
575      * Fixed ``Ring2D`` model's init to properly accept all combinations
576        of ``r_in``, ``r_out``, and ``width``.
577      * Fixed bug in ``tau`` validator for the ``Logarithmic1D`` and
578        ``Exponential1D`` models when using them as model sets.
579      * Fixed ``copy`` method for ``Parameter`` in order to prevent an
580        automatic ``KeyError``, and fixed ``bool`` for ``Parameter`` so
581        that it functions with vector values.
582      * Removed unreachable code from ``Parameter``, the ``_Tabular`` model,
583        and the ``Drude1D`` model.
584      * Fixed validators in ``Drude1D`` model so that it functions in a
585        model set.
586      * Removed duplicated code from ``polynomial.py`` for handing of
587        ``domain`` and ``window``.
588      * Fixed the ``Pix2Sky_HEALPixPolar`` and ``Sky2Pix_HEALPixPolar`` modes
589        so that their ``evaluate`` and ``inverse`` methods actually work
590        without raising an error. [#12232]
591
592astropy.nddata
593^^^^^^^^^^^^^^
594
595- Ensure that the ``wcs=`` argument to ``NDData`` is always parsed into a high
596  level WCS object. [#11985]
597
598astropy.stats
599^^^^^^^^^^^^^
600
601- Fixed a bug in sigma clipping where the bounds would not be returned for
602  completely empty or masked data. [#11994]
603
604- Fixed a bug in ``biweight_midvariance`` and ``biweight_scale`` where
605  output data units would be dropped for constant data and where the
606  result was a scalar NaN. [#12146]
607
608astropy.table
609^^^^^^^^^^^^^
610
611- Ensured that ``MaskedColumn.info`` is propagated in all cases, so that when
612  tables are sliced, writing will still be as requested on
613  ``info.serialize_method``. [#11917]
614
615- ``table.conf.replace_warnings`` and ``table.jsviewer.conf.css_urls`` configuration
616  items now have correct ``'string_list'`` type. [#12037]
617
618- Fixed an issue where initializing from a list of dict-like rows (Mappings) did
619  not work unless the row values were instances of ``dict``. Now any object that
620  is an instance of the more general ``collections.abc.Mapping`` will work. [#12417]
621
622astropy.uncertainty
623^^^^^^^^^^^^^^^^^^^
624
625- Ensure that scalar ``QuantityDistribution`` unit conversion in ufuncs
626  works properly again. [#12471]
627
628astropy.units
629^^^^^^^^^^^^^
630
631- Add quantity support for ``scipy.special`` dimensionless functions
632  erfinv, erfcinv, gammaln and loggamma. [#10934]
633
634- ``VOUnit.to_string`` output is now compliant with IVOA VOUnits 1.0 standards. [#11565]
635
636- Units initialization with unicode has been expanded to include strings such as
637  'M☉' and 'e⁻'. [#11827]
638
639- Give a more informative ``NotImplementedError`` when trying to parse a unit
640  using an output-only format such as 'unicode' or 'latex'. [#11829]
641
642astropy.utils
643^^^^^^^^^^^^^
644
645- Fixed a bug in ``get_readable_fileobj`` that prevented the unified file read
646  interface from closing ASCII files. [#11809]
647
648- The function ``astropy.utils.decorators.deprecated_attribute()`` no longer
649  ignores its ``message``, ``alternative``, and ``pending`` arguments. [#12184]
650
651- Ensure that when taking the minimum or maximum of a ``Masked`` array,
652  any masked NaN values are ignored. [#12454]
653
654astropy.visualization
655^^^^^^^^^^^^^^^^^^^^^
656
657- The tick labelling for radians has been fixed to remove a redundant ``.0`` in
658  the label for integer multiples of pi at 2pi and above. [#12221]
659
660- Fix a bug where non-``astropy.wcs.WCS`` WCS instances were not accepted in
661  ``WCSAxes.get_transform``. [#12286]
662
663- Fix compatibility with Matplotlib 3.5 when using the ``grid_type='contours'``
664  mode for drawing grid lines. [#12447]
665
666astropy.wcs
667^^^^^^^^^^^
668
669- Enabled ``SlicedLowLevelWCS.pixel_to_world_values`` to handle slices including
670  non-``int`` integers, e.g. ``numpy.int64``. [#11980]
671
672
673Other Changes and Additions
674---------------------------
675
676- In docstrings, Sphinx cross-reference targets now use intersphinx, even if the
677  target is an internal link (``link`` is now ``'astropy:link``).
678  When built in Astropy these links are interpreted as internal links. When built
679  in affiliate packages, the link target is set by the key 'astropy' in the
680  intersphinx mapping. [#11690]
681
682- Made PyYaml >= 3.13 a strict runtime dependency. [#11903]
683
684- Minimum version of required Python is now 3.8. [#11934]
685
686- Minimum version of required Scipy is now 1.3. [#11934]
687
688- Minimum version of required Matplotlib is now 3.1. [#11934]
689
690- Minimum version of required Numpy is now 1.18. [#11935]
691
692- Fix deprecation warnings with Python 3.10 [#11962]
693
694- Speed up ``minversion()`` in cases where a module with a ``__version__``
695  attribute is passed. [#12174]
696
697- ``astropy`` now requires ``packaging``. [#12199]
698
699- Updated the bundled CFITSIO library to 4.0.0. When compiling with an external
700  library, version 3.35 or later is required. [#12272]
701
702
7034.3.1 (2021-08-11)
704==================
705
706Bug Fixes
707---------
708
709astropy.io.fits
710^^^^^^^^^^^^^^^
711
712- In ``fits.io.getdata`` do not fall back to first non-primary extension when
713  user explicitly specifies an extension. [#11860]
714
715- Ensure multidimensional masked columns round-trip properly to FITS. [#11911]
716
717- Ensure masked times round-trip to FITS, even if multi-dimensional. [#11913]
718
719- Raise ``ValueError`` if an ``np.float32`` NaN/Inf value is assigned to a
720  header keyword. [#11922]
721
722astropy.modeling
723^^^^^^^^^^^^^^^^
724
725- Fixed bug in ``fix_inputs`` handling of bounding boxes. [#11908]
726
727astropy.table
728^^^^^^^^^^^^^
729
730- Fix an error when converting to pandas any ``Table`` subclass that
731  automatically adds a table index when the table is created. An example is a
732  binned ``TimeSeries`` table. [#12018]
733
734astropy.units
735^^^^^^^^^^^^^
736
737- Ensure that unpickling quantities and units in new sessions does not change
738  hashes and thus cause problems with (de)composition such as getting different
739  answers from the ``.si`` attribute. [#11879]
740
741- Fixed cannot import name imperial from astropy.units namespace. [#11977]
742
743astropy.utils
744^^^^^^^^^^^^^
745
746- Ensure any ``.info`` on ``Masked`` instances is propagated correctly when
747  viewing or slicing. As a consequence, ``MaskedQuantity`` can now be correctly
748  written to, e.g., ECSV format with ``serialize_method='data_mask'``. [#11910]
749
750
7514.3 (2021-07-26)
752================
753
754New Features
755------------
756
757astropy.convolution
758^^^^^^^^^^^^^^^^^^^
759
760- Change padding sizes for ``fft_pad`` in ``convolve_fft`` from powers of
761  2 only to scipy-optimized numbers, applied separately to each dimension;
762  yielding some performance gains and avoiding potential large memory
763  impact for certain multi-dimensional inputs. [#11533]
764
765astropy.coordinates
766^^^^^^^^^^^^^^^^^^^
767
768- Adds the ability to create topocentric ``CIRS`` frames. Using these,
769  ``AltAz`` calculations are now accurate down to the milli-arcsecond
770  level. [#10994]
771
772- Adds a direct transformation from ``ICRS`` to ``AltAz`` frames. This
773  provides a modest speedup of approximately 10 percent. [#11079]
774
775- Adds new ``WGS84GeodeticRepresentation``, ``WGS72GeodeticRepresentation``,
776  and ``GRS80GeodeticRepresentation``. These are mostly for use inside
777  ``EarthLocation`` but can also be used to convert between geocentric
778  (cartesian) and different geodetic representations directly. [#11086]
779
780- ``SkyCoord.guess_from_table`` now also searches for differentials in the table.
781  In addition, multiple regex matches can be resolved when they are exact
782  component names, e.g. having both columns “dec” and “pm_dec” no longer errors
783  and will be included in the SkyCoord. [#11417]
784
785- All representations now have a ``transform`` method, which allows them to be
786  transformed by a 3x3 matrix in a Cartesian basis. By default, transformations
787  are routed through ``CartesianRepresentation``. ``SphericalRepresentation`` and
788  ``PhysicssphericalRepresentation`` override this for speed and to prevent NaN
789  leakage from the distance to the angular components.
790  Also, the functions ``is_O3`` and ``is_rotation`` have been added to
791  ``matrix_utities`` for checking whether a matrix is in the O(3) group or is a
792  rotation (proper or improper), respectively. [#11444]
793
794- Moved angle formatting and parsing utilities to
795  ``astropy.coordinates.angle_formats``.
796  Added new functionality to ``astropy.coordinates.angle_utilities`` for
797  generating points on or in spherical surfaces, either randomly or on a grid. [#11628]
798
799- Added a new method to ``SkyCoord``, ``spherical_offsets_by()``, which is the
800  conceptual inverse of ``spherical_offsets_to()``: Given angular offsets in
801  longitude and latitude, this method returns a new coordinate with the offsets
802  applied. [#11635]
803
804- Refactor conversions between ``GCRS`` and ``CIRS,TETE`` for better accuracy
805  and substantially improved speed. [#11069]
806
807- Also refactor ``EarthLocation.get_gcrs`` for an increase in performance of
808  an order of magnitude, which enters as well in getting observed positions of
809  planets using ``get_body``. [#11073]
810
811- Refactored the usage of metaclasses in ``astropy.coordinates`` to instead use
812  ``__init_subclass__`` where possible. [#11090]
813
814- Removed duplicate calls to ```transform_to``` from ```match_to_catalog_sky```
815  and ```match_to_catalog_3d```, improving their performance. [#11449]
816
817- The new DE440 and DE440s ephemerides are now available via shortcuts 'de440'
818  and 'de440s'.  The DE 440s ephemeris will probably become the default
819  ephemeris when chosing 'jpl' in 5.0. [#11601]
820
821astropy.cosmology
822^^^^^^^^^^^^^^^^^
823
824- Cosmology parameter dictionaries now also specify the Cosmology class to which
825  the parameters correspond. For example, the dictionary for
826  ``astropy.cosmology.parameters.Planck18`` has the added key-value pair
827  ("cosmology", "FlatLambdaCDM"). [#11530]
828
829astropy.io.ascii
830^^^^^^^^^^^^^^^^
831
832- Added support for reading and writing ASCII tables in QDP (Quick and Dandy
833  Plotter) format. [#11256]
834
835- Added support for reading and writing multidimensional column data (masked and
836  unmasked) to ECSV. Also added formal support for reading and writing object-type
837  column data which can contain items consisting of lists, dicts, and basic scalar
838  types. This can be used to store columns of variable-length arrays. Both of
839  these features use JSON to convert the object to a string that is stored in the
840  ECSV output. [#11569, #11662, #11720]
841
842astropy.io.fits
843^^^^^^^^^^^^^^^
844
845- Added ``append`` keyword to append table objects to an existing FITS file [#2632, #11149]
846
847- Check that the SIMPLE card is present when opening a file, to ensure that the
848  file is a valid FITS file and raise a better error when opening a non FITS
849  one. ``ignore_missing_simple`` can be used to skip this verification. [#10895]
850
851- Expose ``Header.strip`` as a public method, to remove the most common
852  structural keywords. [#11174]
853
854- Enable the use of ``os.PathLike`` objects when dealing with (mainly FITS) files. [#11580]
855
856astropy.io.registry
857^^^^^^^^^^^^^^^^^^^
858
859- Readers and writers can now set a priority, to assist with resolving which
860  format to use. [#11214]
861
862astropy.io.votable
863^^^^^^^^^^^^^^^^^^
864
865- Version 1.4 VOTables now use the VOUnit format specification. [#11032]
866
867- When reading VOTables using the Unified File Read/Write Interface (i.e. using
868  the ``Table.read()`` or ``QTable.read()`` functions) it is now possible to
869  specify all keyword arguments that are valid for
870  ``astropy.io.votable.table.parse()``. [#11643]
871
872astropy.modeling
873^^^^^^^^^^^^^^^^
874
875- Added a state attribute to models to allow preventing the synching of
876  constraint values from the constituent models. This synching can
877  greatly slow down fitting if there are large numbers of fit parameters.
878  model.sync_constraints = True means check constituent model constraints
879  for compound models every time the constraint is accessed, False, do not.
880  Fitters that support constraints will set this to False on the model copy
881  and then set back to True when the fit is complete before returning. [#11365]
882
883- The ``convolve_models_fft`` function implements model convolution so that one
884  insures that the convolution remains consistent across multiple different
885  inputs. [#11456]
886
887astropy.nddata
888^^^^^^^^^^^^^^
889
890- Prevent unnecessary copies of the data during ``NDData`` arithmetic when units
891  need to be added. [#11107]
892
893- NDData str representations now show units, if present. [#11553]
894
895astropy.stats
896^^^^^^^^^^^^^
897
898- Added the ability to specify stdfunc='mad_std' when doing sigma clipping,
899  which will use a built-in function and lead to significant performance
900  improvements if cenfunc is 'mean' or 'median'. [#11664]
901
902
903- Significantly improved the performance of sigma clipping when cenfunc and
904  stdfunc are passed as strings and the ``grow`` option is not used. [#11219]
905
906- Improved performance of ``bayesian_blocks()`` by removing one ``np.log()``
907  call [#11356]
908
909astropy.table
910^^^^^^^^^^^^^
911
912- Add table attributes to include or exclude columns from the output when
913  printing a table. This functionality includes a context manager to
914  include/exclude columns temporarily. [#11190]
915
916- Improved the string representation of objects related to ``Table.indices`` so
917  they now indicate the object type and relevant attributes. [#11333]
918
919astropy.timeseries
920^^^^^^^^^^^^^^^^^^
921
922- An exception is raised when ``n_bins`` is passed as an argument while
923  any of the parameters ``time_bin_start`` or ``time_bin_size`` is not
924  scalar. [#11463]
925
926astropy.units
927^^^^^^^^^^^^^
928
929- The ``physical_type`` attributes of each unit are now objects of the (new)
930  ``astropy.units.physical.PhysicalType`` class instead of strings and the
931  function ``astropy.units.physical.get_physical_type`` can now translate
932  strings to these objects. [#11204]
933
934-  The function ``astropy.units.physical.def_physical_type`` was created to
935   either define entirely new physical types, or to add more physical type
936   names to an existing physical types. [#11204]
937
938- ``PhysicalType``'s can be operated on using operations multiplication,
939  division, and exponentiation are to facilitate dimensional analysis. [#11204]
940
941- It is now possible to define aliases for units using
942  ``astropy.units.set_enabled_aliases``. This can be used when reading files
943  that have misspelled units. [#11258]
944
945- Add a new "DN" unit, ``units.dn`` or ``units.DN``, representing data number
946  for a detector. [#11591]
947
948astropy.utils
949^^^^^^^^^^^^^
950
951- Added ``ssl_context`` and ``allow_insecure`` options to ``download_file``,
952  as well as the ability to optionally use the ``certifi`` package to provide
953  root CA certificates when downloading from sites secured with
954  TLS/SSL. [#10434]
955
956- ``astropy.utils.data.get_pkg_data_path`` is publicly scoped (previously the
957  private function ``_find_pkg_data_path``) for obtaining file paths without
958  checking if the file/directory exists, as long as the package and module
959  do. [#11006]
960
961- Deprecated ``astropy.utils.OrderedDescriptor`` and
962  ``astropy.utils.OrderedDescriptorContainer``, as new features in Python 3
963  make their use less compelling. [#11094, #11099]
964
965- ``astropy.utils.masked`` provides a new ``Masked`` class/factory that can be
966  used to represent masked ``ndarray`` and all its subclasses, including
967  ``Quantity`` and its subclasses.  These classes can be used inside
968  coordinates, but the mask is not yet exposed.  Generally, the interface should
969  be considered experimental. [#11127, #11792]
970
971- Add new ``utils.parsing`` module to with helper wrappers around
972  ``ply``. [#11227]
973
974- Change the Time and IERS leap second handling so that the leap second table is
975  updated only when a Time transform involving UTC is performed. Previously this
976  update check was done the first time a ``Time`` object was created, which in
977  practice occured when importing common astropy subpackages like
978  ``astropy.coordinates``. Now you can prevent querying internet resources (for
979  instance on a cluster) by setting ``iers.conf.auto_download = False``. This
980  can  be done after importing astropy but prior to performing any ``Time``
981  scale transformations related to UTC. [#11638]
982
983
984- Added a new module at ``astropy.utils.compat.optional_deps`` to consolidate
985  the definition of ``HAS_x`` optional dependency flag variables,
986  like ``HAS_SCIPY``. [#11490]
987
988astropy.wcs
989^^^^^^^^^^^
990
991- Add IVOA UCD mappings for some FITS WCS keywords commonly used in solar
992  physics. [#10965]
993
994- Add ``STOKES`` FITS WCS keyword to the IVOA UCD mapping. [#11236]
995
996- Updated bundled version of WCSLIB to version 7.6. See
997  https://www.atnf.csiro.au/people/mcalabre/WCS/CHANGES for a list of
998  included changes. [#11549]
999
1000
1001API Changes
1002-----------
1003
1004astropy.coordinates
1005^^^^^^^^^^^^^^^^^^^
1006
1007- For input to representations, subclasses of the class required for a
1008  given attribute will now be allowed in. [#11113]
1009
1010- Except for ``UnitSphericalRepresentation``, shortcuts in representations now
1011  allow for attached differentials. [#11467]
1012
1013- Allow coordinate name strings as input to
1014  ``SkyCoord.is_transformable_to``. [#11552]
1015
1016astropy.cosmology
1017^^^^^^^^^^^^^^^^^
1018
1019- Change ``z_at_value`` to use ``scipy.optimize.minimize_scalar`` with default
1020  method ``Brent`` (other options ``Bounded`` and ``Golden``) and accept
1021  ``bracket`` option to set initial search region. [#11080]
1022
1023- Clarified definition of inputs to ``angular_diameter_distance_z1z2``.
1024  The function now emits ``AstropyUserWarning`` when ``z2`` is less than
1025  ``z1``. [#11197]
1026
1027- Split cosmology realizations from core classes, moving the former to new file
1028  ``realizations``. [#11345]
1029
1030- Since cosmologies are immutable, the initialization signature and values can
1031  be stored, greatly simplifying cloning logic and extending it to user-defined
1032  cosmology classes that do not have attributes with the same name as each
1033  initialization argument.  [#11515]
1034
1035- Cloning a cosmology with changed parameter(s) now appends "(modified)" to the
1036  new instance's name, unless a name is explicitly passed to ``clone``. [#11536]
1037
1038- Allow ``m_nu`` to be input as any quantity-like or array-like -- Quantity,
1039  array, float, str, etc. Input is passed to the Quantity constructor and
1040  converted to eV, still with the prior mass-energy equivalence
1041  enabled. [#11640]
1042
1043astropy.io.fits
1044^^^^^^^^^^^^^^^
1045
1046- For conversion between FITS tables and astropy ``Table``, the standard mask
1047  values of ``NaN`` for float and null string for string are now properly
1048  recognized, leading to a ``MaskedColumn`` with appropriately set mask
1049  instead of a ``Column`` with those values exposed. Conversely, when writing
1050  an astropy ``Table`` to a FITS tables, masked values are now consistently
1051  converted to the standard FITS mask values of ``NaN`` for float and null
1052  string for string (i.e., not just for tables with ``masked=True``, which no
1053  longer is guaranteed to signal the presence of ``MaskedColumn``). [#11222]
1054
1055astropy.io.votable
1056^^^^^^^^^^^^^^^^^^
1057
1058- The use of ``version='1.0'`` is now fully deprecated in constructing
1059  a ``astropy.io.votable.tree.VOTableFile``. [#11659]
1060
1061astropy.modeling
1062^^^^^^^^^^^^^^^^
1063
1064- Removed deprecated ``astropy.modeling.blackbody`` module. [#10972]
1065
1066astropy.table
1067^^^^^^^^^^^^^
1068
1069- Added ``Column.value`` as an alias for the existing ``Column.data`` attribute.
1070  This makes accessing a column's underlying data array consistent with the
1071  ``.value`` attribute available for ``Time`` and ``Quantity`` objects. [#10962]
1072
1073- In reading from a FITS tables, the standard mask values of ``NaN`` for float
1074  and null string for string are properly recognized, leading to a
1075  ``MaskedColumn`` with appropriately set mask. [#11222]
1076
1077- Changed the implementation of the ``table.index.Index`` class so instantiating
1078  from this class now returns an ``Index`` object as expected instead of a
1079  ``SlicedIndex`` object. [#11333]
1080
1081astropy.units
1082^^^^^^^^^^^^^
1083
1084- The ``physical_type`` attribute of units now returns an instance of
1085  ``astropy.units.physical.PhysicalType`` instead of a string.  Because
1086  ``PhysicalType`` instances can be compared to strings, no code changes
1087  should be necessary when making comparisons.  The string representations
1088  of different physical types will differ from previous releases. [#11204]
1089
1090- Calling ``Unit()`` with no argument now returns a dimensionless unit,
1091  as was documented but not implemented. [#11295]
1092
1093astropy.utils
1094^^^^^^^^^^^^^
1095
1096- Removed deprecated ``utils.misc.InheritDocstrings`` and ``utils.timer``. [#10281]
1097
1098- Removed usage of deprecated ``ipython`` stream in ``utils.console``. [#10942]
1099
1100astropy.wcs
1101^^^^^^^^^^^
1102
1103- Deprecate ``accuracy`` argument in ``all_world2pix`` which was mistakenly
1104  *documented*, in the case ``accuracy`` was ever used. [#11055]
1105
1106
1107Bug Fixes
1108---------
1109
1110astropy.convolution
1111^^^^^^^^^^^^^^^^^^^
1112
1113- Fixes for ``convolve_fft`` documentation examples. [#11510]
1114
1115astropy.coordinates
1116^^^^^^^^^^^^^^^^^^^
1117
1118- Allow ``Distance`` instances with negative distance values as input for
1119  ``SphericalRepresentation``.  This was always noted as allowed in an
1120  exception message when a negative ``Quantity`` with length units was
1121  passed in, but was not actually possible to do. [#11113]
1122
1123- Makes the ``Angle.to_string`` method to follow the format described in the
1124  docstring with up to 8 significant decimals instead of 4. [#11153]
1125
1126- Ensure that proper motions can be calculated when converting a ``SkyCoord``
1127  with cartesian representation to unit-spherical, by fixing the conversion of
1128  ``CartesianDifferential`` to ``UnitSphericalDifferential``. [#11469]
1129
1130- When re-representing coordinates from spherical to unit-spherical and vice
1131  versa, the type of differential will now be preserved. For instance, if only a
1132  radial velocity was present, that will remain the case (previously, a zero
1133  proper motion component was added). [#11482]
1134
1135- Ensure that wrapping of ``Angle`` does not raise a warning even if ``nan`` are
1136  present.  Also try to make sure that the result is within the wrapped range
1137  even in the presence of rounding errors. [#11568]
1138
1139- Comparing a non-SkyCoord object to a ``SkyCoord`` using ``==`` no longer
1140  raises an error. [#11666]
1141
1142- Different ``SkyOffsetFrame`` classes no longer interfere with each other,
1143  causing difficult to debug problems with the ``origin`` attribute. The
1144  ``origin`` attribute now no longer is propagated, so while it remains
1145  available on a ``SkyCoord`` that is an offset, it no longer is available once
1146  that coordinate is transformed to another frame. [#11730] [#11730]
1147
1148astropy.cosmology
1149^^^^^^^^^^^^^^^^^
1150
1151- Cosmology instance names are now immutable. [#11535]
1152
1153astropy.io.ascii
1154^^^^^^^^^^^^^^^^
1155
1156- Fixed bug where writing a table that has comments defined (via
1157  ``tbl.meta['comments']``) with the 'csv' format was failing. Since the
1158  formally defined CSV format does not support comments, the comments are now
1159  just ignored unless ``comment=<comment prefix>`` is supplied to the
1160  ``write()`` call. [#11475]
1161
1162- Fixed the issue where the CDS reader failed to treat columns
1163  as nullable if the ReadMe file contains a limits specifier. [#11531]
1164
1165- Made sure that the CDS reader does not ignore an order specifier that
1166  may be present after the null specifier '?'. Also made sure that it
1167  checks null values only when an '=' symbol is present and reads
1168  description text even if there is no whitespace after '?'. [#11593]
1169
1170astropy.io.fits
1171^^^^^^^^^^^^^^^
1172
1173- Fix ``ColDefs.add_col/del_col`` to allow in-place addition or removal of
1174  a column. [#11338]
1175
1176- Fix indexing of ``fits.Header`` with Numpy integers. [#11387]
1177
1178- Do not delete ``EXTNAME`` for compressed image header if a default and
1179  non-default ``EXTNAME`` are present. [#11396]
1180
1181- Prevent warnings about ``HIERARCH`` with ``CompImageHeader`` class. [#11404]
1182
1183- Fixed regression introduced in Astropy 4.0.5 and 4.2.1 with verification of
1184  FITS headers with HISTORY or COMMENT cards with long (> 72 characters)
1185  values. [#11487]
1186
1187- Fix reading variable-length arrays when there is a gap between the data and the
1188  heap. [#11688]
1189
1190astropy.io.votable
1191^^^^^^^^^^^^^^^^^^
1192
1193- ``NumericArray`` converter now properly broadcasts scalar mask to array. [#11157]
1194
1195- VOTables are now written with the correct namespace and schema location
1196  attributes. [#11659]
1197
1198astropy.modeling
1199^^^^^^^^^^^^^^^^
1200
1201- Fixes the improper propagation of ``bounding_box`` from
1202  ``astropy.modeling.models`` to their inverses. For cases in which the inverses
1203  ``bounding_box`` can be determined, the proper calculation has been
1204  implemented. [#11414]
1205
1206- Bugfix to allow rotation models to accept arbitrarily-shaped inputs. [#11435]
1207
1208- Bugfixes for ``astropy.modeling`` to allow ``fix_inputs`` to accept empty
1209  dictionaries and dictionaries with ``numpy`` integer keys. [#11443]
1210
1211- Bugfix for how ``SPECIAL_OPERATORS`` are handled. [#11512]
1212
1213- Fixes ``Model`` crashes when some inputs are scalars and during some types of
1214  output reshaping. [#11548]
1215
1216- Fixed bug in ``LevMarLSQFitter`` when using weights and vector inputs. [#11603]
1217
1218astropy.stats
1219^^^^^^^^^^^^^
1220
1221- Fixed a bug with the ``copy=False`` option when carrying out sigma
1222  clipping - previously if ``masked=False`` this still copied the data,
1223  but this will now change the array in-place. [#11219]
1224
1225astropy.table
1226^^^^^^^^^^^^^
1227
1228- Ensure that adding a ``Quantity`` or other mixin column to a ``Table``
1229  does not have side effects, such as creating an associated ``info``
1230  instance (which would lead to slow-down of, e.g., slicing afterwards). [#11077]
1231
1232- When writing to a FITS tables, masked values are again always converted to
1233  the standard FITS mask values of ``NaN`` for float and null string
1234  for string, not just for table with ``masked=True``. [#11222]
1235
1236- Using ``Table.to_pandas()`` on an indexed ``Table`` with masked integer values
1237  now correctly construct the ``pandas.DataFrame``. [#11432]
1238
1239- Fixed ``Table`` HTML representation in Jupyter notebooks so that it is
1240  horizontally scrollable within Visual Studio Code. This was done by wrapping
1241  the ``<table>`` in a ``<div>`` element. [#11476]
1242
1243- Fix a bug where a string-valued ``Column`` that happened to have a ``unit``
1244  attribute could not be added to a ``QTable``.  Such columns are now simply
1245  kept as ``Column`` instances (with a warning). [#11585]
1246
1247- Fix an issue in ``Table.to_pandas(index=<colname>)`` where the index column name
1248  was not being set properly for the ``DataFrame`` index. This was introduced by
1249  an API change in pandas version 1.3.0. Previously when creating a ``DataFrame``
1250  with the index set to an astropy ``Column``, the ``DataFrame`` index name was
1251  automatically set to the column name. [#11921]
1252
1253astropy.time
1254^^^^^^^^^^^^
1255
1256- Fix a thread-safety issue with initialization of the leap-second table
1257  (which is only an issue when ERFA's built-in table is out of date). [#11234]
1258
1259- Fixed converting a zero-length time object from UTC to
1260  UT1 when an empty array is passed. [#11516]
1261
1262astropy.uncertainty
1263^^^^^^^^^^^^^^^^^^^
1264
1265- ``Distribution`` instances can now be used as input to ``Quantity`` to
1266  initialize ``QuantityDistribution``.  Hence, ``distribution * unit``
1267  and ``distribution << unit`` will work too. [#11210]
1268
1269astropy.units
1270^^^^^^^^^^^^^
1271
1272- Move non-astronomy units from astrophys.py to a new misc.py file. [#11142]
1273
1274- The physical type of ``astropy.units.mol / astropy.units.m ** 3`` is now
1275  defined as molar concentration.  It was previously incorrectly defined
1276  as molar volume. [#11204]
1277
1278- Make ufunc helper lookup thread-safe. [#11226]
1279
1280- Make ``Unit`` string parsing (as well as ``Angle`` parsing) thread-safe. [#11227]
1281
1282- Decorator ``astropy.units.decorators.quantity_input`` now only evaluates
1283  return type annotations based on ``UnitBase`` or ``FunctionUnitBase`` types.
1284  Other annotations are skipped over and are not attempted to convert to the
1285  correct type. [#11506]
1286
1287astropy.utils
1288^^^^^^^^^^^^^
1289
1290- Make ``lazyproperty`` and ``classdecorator`` thread-safe. This should fix a
1291  number of thread safety issues. [#11224]
1292
1293astropy.visualization
1294^^^^^^^^^^^^^^^^^^^^^
1295
1296- Fixed a bug that resulted in some parts of grid lines being visible when they
1297  should have been hidden. [#11380]
1298
1299- Fixed a bug that resulted in ``time_support()`` failing for intervals of
1300  a few months if one of the ticks was the month December. [#11615]
1301
1302astropy.wcs
1303^^^^^^^^^^^
1304
1305- ``fit_wcs_from_points`` now produces a WCS with integer ``NAXIXn``
1306  values. [#10865]
1307
1308- Updated bundled version of ``WCSLIB`` to v7.4, fixing a bug that caused
1309  the coefficients of the TPD distortion function to not be written to the
1310  header. [#11260]
1311
1312- Fixed a bug in assigning type when converting ``colsel`` to
1313  ``numpy.ndarray``. [#11431]
1314
1315- Added ``WCSCOMPARE_*`` constants to the list of WCSLIB constants
1316  available/exposed through the ``astropy.wcs`` module. [#11647]
1317
1318- Fix a bug that caused APE 14 WCS transformations for FITS WCS with ZOPT, BETA,
1319  VELO, VOPT, or VRAD CTYPE to not work correctly. [#11781]
1320
1321
1322Other Changes and Additions
1323---------------------------
1324
1325- The configuration file is no longer created by default when importing astropy
1326  and its existence is no longer required. Affiliated packages should update their
1327  ``__init__.py`` module to remove the block using ``update_default_config`` and
1328  ``ConfigurationDefaultMissingWarning``. [#10877]
1329
1330- Replace ``pkg_resources`` (from setuptools) with ``importlib.metadata`` which
1331  comes from the stdlib, except for Python 3.7 where the backport package is added
1332  as a new dependency. [#11091]
1333
1334- Turn on numpydoc's ``numpydoc_xref_param_type``  to create cross-references
1335  for the parameter types in the Parameters, Other Parameters, Returns and Yields
1336  sections of the docstrings. [#11118]
1337
1338- Docstrings across the package are standardized to enable references.
1339  Also added is an Astropy glossary-of-terms to define standard inputs,
1340  e.g. ``quantity-like`` indicates an input that can be interpreted by
1341  ``astropy.units.Quantity``. [#11118]
1342
1343- Binary wheels are now built to the manylinux2010 specification. These wheels
1344  should be supported on all versions of pip shipped with Python 3.7+. [#11377]
1345
1346- The name of the default branch for the astropy git repository has been renamed
1347  to ``main``, and the documentation and tooling has been updated accordingly.
1348  If you have made a local clone you may wish to update it following the
1349  instructions in the repository's README. [#11379]
1350
1351- Sphinx cross-reference link targets are added for every ``PhysicalType``.
1352  Now in the parameter types in the Parameters, Other Parameters, Returns and
1353  Yields sections of the docstring, the physical type of a quantity can be
1354  annotated in square brackets.
1355  E.g. `` distance : `~astropy.units.Quantity` ['length'] `` [#11595]
1356
1357- The minimum supported version of ``ipython`` is now 4.2. [#10942]
1358
1359- The minimum supported version of ``pyerfa`` is now 1.7.3. [#11637]
1360
1361
13624.2.1 (2021-04-01)
1363==================
1364
1365Bug Fixes
1366---------
1367
1368astropy.cosmology
1369^^^^^^^^^^^^^^^^^
1370
1371- Fixed an issue where specializations of the comoving distance calculation
1372  for certain cosmologies could not handle redshift arrays. [#10980]
1373
1374astropy.io.fits
1375^^^^^^^^^^^^^^^
1376
1377- Fix bug where manual fixes to invalid header cards were not preserved when
1378  saving a FITS file. [#11108]
1379
1380astropy.io.votable
1381^^^^^^^^^^^^^^^^^^
1382
1383- ``NumericArray`` converter now properly broadcasts scalar mask to array.
1384  [#11157]
1385
1386astropy.table
1387^^^^^^^^^^^^^
1388
1389- Fix bug when initializing a ``Table`` subclass that uses ``TableAttribute``'s.
1390  If the data were an instance of the table then attributes provided in the
1391  table initialization call could be ignored. [#11217]
1392
1393astropy.time
1394^^^^^^^^^^^^
1395
1396- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC``
1397  to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
1398  This essentially changes the resulting times by 8.000082 seconds, the initial
1399  offset between TAI and UTC. [#11249]
1400
1401astropy.units
1402^^^^^^^^^^^^^
1403
1404- Fixed a bug with the ``quantity_input`` decorator where allowing
1405  dimensionless inputs for an argument inadvertently disabled any checking of
1406  compatible units for that argument. [#11283]
1407
1408astropy.utils
1409^^^^^^^^^^^^^
1410
1411- Fix a bug so that ``np.shape``, ``np.ndim`` and ``np.size`` again work on
1412  classes that use ``ShapedLikeNDArray``, like representations, frames,
1413  sky coordinates, and times. [#11133]
1414
1415astropy.wcs
1416^^^^^^^^^^^
1417
1418- Fix error when a user defined ``proj_point`` parameter is passed to ``fit_wcs_from_points``. [#11139]
1419
1420
1421Other Changes and Additions
1422---------------------------
1423
1424
1425- Change epoch of ``TimeUnixTAI`` (``"unix_tai"``) from ``1970-01-01T00:00:00 UTC``
1426  to ``1970-01-01T00:00:00 TAI`` to match the intended and documented behaviour.
1427  This essentially changes the resulting times by 8.000082 seconds, the initial
1428  offset between TAI and UTC. [#11249]
1429
1430
14314.2 (2020-11-24)
1432================
1433
1434New Features
1435------------
1436
1437astropy.convolution
1438^^^^^^^^^^^^^^^^^^^
1439
1440- Methods ``convolve`` and ``convolve_fft`` both now return Quantity arrays
1441  if user input is given in one. [#10822]
1442
1443astropy.coordinates
1444^^^^^^^^^^^^^^^^^^^
1445
1446- Numpy functions that broadcast, change shape, or index (like
1447  ``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on
1448  coordinates, frames, and representations. [#10337]
1449
1450- Add a new science state ``astropy.coordinates.erfa_astrom.erfa_astrom`` and
1451  two classes ``ErfaAstrom``, ``ErfaAstromInterpolator`` as wrappers to
1452  the ``pyerfa`` astrometric functions used in the coordinate transforms.
1453  Using ``ErfaAstromInterpolator``, which interpolates astrometric properties for
1454  ``SkyCoord`` instances with arrays of obstime, can dramatically speed up
1455  coordinate transformations while keeping microarcsecond resolution.
1456  Depending on needed precision and the obstime array in question, speed ups
1457  reach factors of 10x to >100x. [#10647]
1458
1459- ``galactocentric_frame_defaults`` can now also be used as a registry, with
1460  user-defined parameter values and metadata. [#10624]
1461
1462- Method ``.realize_frame`` from coordinate frames now accepts ``**kwargs``,
1463  including ``representation_type``. [#10727]
1464
1465- Avoid an unnecessary call to ``erfa.epv00`` in transformations between
1466  ``CIRS`` and ``ICRS``, improving performance by 50 %. [#10814]
1467
1468- A new equatorial coordinate frame, with RA and Dec measured w.r.t to the True
1469  Equator and Equinox (TETE). This frame is commonly known as "apparent place"
1470  and is the correct frame for coordinates returned from JPL Horizons. [#10867]
1471
1472- Added a context manager ``impose_finite_difference_dt`` to the
1473  ``TransformGraph`` class to override the finite-difference time step
1474  attribute (``finite_difference_dt``) for all transformations in the graph
1475  with that attribute. [#10341]
1476
1477- Improve performance of ``SpectralCoord`` by refactoring internal
1478  implementation. [#10398]
1479
1480astropy.cosmology
1481^^^^^^^^^^^^^^^^^
1482
1483- The final version of the Planck 2018 cosmological parameters are included
1484  as the ``Planck18`` object, which is now the default cosmology.  The
1485  parameters are identical to those of the ``Planck18_arXiv_v2`` object,
1486  which is now deprecated and will be removed in a future release. [#10915]
1487
1488astropy.modeling
1489^^^^^^^^^^^^^^^^
1490
1491- Added NFW profile and tests to modeling package [#10505]
1492
1493- Added missing logic for evaluate to compound models [#10002]
1494
1495- Stop iteration in ``FittingWithOutlierRemoval`` before reaching ``niter`` if
1496  the masked points are no longer changing. [#10642]
1497
1498- Keep a (shallow) copy of ``fit_info`` from the last iteration of the wrapped
1499  fitter in ``FittingWithOutlierRemoval`` and also record the actual number of
1500  iterations performed in it. [#10642]
1501
1502- Added attributes for fitting uncertainties (covariance matrix, standard
1503  deviations) to models. Parameter covariance matrix can be accessed via
1504  ``model.cov_matrix``, standard deviations by ``model.stds`` or individually
1505  for each parameter by ``parameter.std``. Currently implemented for
1506  ``LinearLSQFitter`` and ``LevMarLSQFitter``. [#10552]
1507
1508- N-dimensional least-squares statistic and specific 1,2,3-D methods [#10670]
1509
1510astropy.stats
1511^^^^^^^^^^^^^
1512
1513- Added ``circstd`` function to obtain a circular standard deviation. [#10690]
1514
1515astropy.table
1516^^^^^^^^^^^^^
1517
1518- Allow initializing a ``Table`` using a list of ``names`` in conjunction with
1519  a ``dtype`` from a numpy structured array. The list of ``names`` overrides the
1520  names specified in the ``dtype``. [#10419]
1521
1522astropy.time
1523^^^^^^^^^^^^
1524
1525- Add new ``isclose()`` method to ``Time`` and ``TimeDelta`` classes to allow
1526  comparison of time objects to within a specified tolerance. [#10646]
1527
1528- Improve initialization time by a factor of four when creating a scalar ``Time``
1529  object in a format like ``unix`` or ``cxcsec`` (time delta from a reference
1530  epoch time). [#10406]
1531
1532- Improve initialization time by a factor of ~25 or more for large arrays of
1533  string times in ISO, ISOT or year day-of-year formats. This is done with a new
1534  C-based time parser that can be adapted for other fixed-format custom time
1535  formats. [#10360]
1536
1537- Numpy functions that broadcast, change shape, or index (like
1538  ``np.broadcast_to``, ``np.rot90``, or ``np.roll``) now work on times.
1539  [#10337, #10502]
1540
1541astropy.timeseries
1542^^^^^^^^^^^^^^^^^^
1543
1544- Improve memory and speed performance when iterating over the entire time
1545  column of a ``TimeSeries`` object. Previously this involved O(N^2) operations
1546  and memory. [#10889]
1547
1548astropy.units
1549^^^^^^^^^^^^^
1550
1551- ``Quantity.to`` has gained a ``copy`` option to allow copies to be avoided
1552  when the units do not change. [#10517]
1553
1554- Added the ``spat`` unit of solid angle that represents the full sphere.
1555  [#10726]
1556
1557astropy.utils
1558^^^^^^^^^^^^^
1559
1560- ``ShapedLikeNDArray`` has gained the capability to use numpy functions
1561  that broadcast, change shape, or index. [#10337]
1562
1563- ``get_free_space_in_dir`` now takes a new ``unit`` keyword and
1564  ``check_free_space_in_dir`` takes ``size`` defined as ``Quantity``. [#10627]
1565
1566- New ``astropy.utils.data.conf.allow_internet`` configuration item to
1567  control downloading data from the Internet. Setting ``allow_internet=False``
1568  is the same as ``remote_timeout=0``. Using ``remote_timeout=0`` to control
1569  internet access will stop working in a future release. [#10632]
1570
1571- New ``is_url`` function so downstream packages do not have to secretly use
1572  the hidden ``_is_url`` anymore. [#10684]
1573
1574astropy.visualization
1575^^^^^^^^^^^^^^^^^^^^^
1576
1577- Added the ``Quadrangle`` patch for ``WCSAxes`` for a latitude-longitude
1578  quadrangle.  Unlike ``matplotlib.patches.Rectangle``, the edges of this
1579  patch will be rendered as curved lines if appropriate for the WCS
1580  transformation. [#10862]
1581
1582- The position of tick labels are now only calculated when needed. If any text
1583  parameters are changed (color, font weight, size etc.) that don't effect the
1584  tick label position, the positions are not recomputed, improving performance.
1585  [#10806]
1586
1587astropy.wcs
1588^^^^^^^^^^^
1589
1590- ``WCS.to_header()`` now appends comments to SIP coefficients. [#10480]
1591
1592- A new property ``dropped_world_dimensions`` has been added to
1593  ``SlicedLowLevelWCS`` to record information about any world axes removed by
1594  slicing a WCS. [#10195]
1595
1596- New ``WCS.proj_plane_pixel_scales()`` and ``WCS.proj_plane_pixel_area()``
1597  methods to return pixel scales and area, respectively, as Quantity. [#10872]
1598
1599
1600API Changes
1601-----------
1602
1603astropy.config
1604^^^^^^^^^^^^^^
1605
1606- ``set_temp_config`` now preserves the existing cache rather than deleting
1607  it and relying on reloading it from the previous config file. This ensures
1608  that any programmatically made changes are preserved as well. [#10474]
1609
1610- Configuration path detection logic has changed: Now, it looks for ``~`` first
1611  before falling back to older logic. In addition, ``HOMESHARE`` is no longer
1612  used in Windows. [#10705]
1613
1614astropy.coordinates
1615^^^^^^^^^^^^^^^^^^^
1616
1617- The passing of frame classes (as opposed to frame instances) to the
1618  ``transform_to()`` methods of low-level coordinate-frame classes has been
1619  deprecated.  Frame classes can still be passed to the ``transform_to()``
1620  method of the high-level ``SkyCoord`` class, and using ``SkyCoord`` is
1621  recommended for all typical use cases of transforming coordinates. [#10475]
1622
1623astropy.stats
1624^^^^^^^^^^^^^
1625
1626- Added a ``grow`` parameter to ``SigmaClip``, ``sigma_clip`` and
1627  ``sigma_clipped_stats``, to allow expanding the masking of each deviant
1628  value to its neighbours within a specified radius. [#10613]
1629
1630- Passing float ``n`` to ``poisson_conf_interval`` when using
1631  ``interval='kraft-burrows-nousek'`` now raises ``TypeError`` as its value
1632  must be an integer. [#10838]
1633
1634astropy.table
1635^^^^^^^^^^^^^
1636
1637- Change ``Table.columns.keys()`` and ``Table.columns.values()`` to both return
1638  generators instead of a list. This matches the behavior for Python ``dict``
1639  objects. [#10543]
1640
1641- Removed the ``FastBST`` and ``FastRBT`` indexing engines because they depend
1642  on the ``bintrees`` package, which is no longer maintained and is deprecated.
1643  Instead, use the ``SCEngine`` indexing engine, which is similar in
1644  performance and relies on the ``sortedcontainers`` package. [#10622]
1645
1646- When slicing a mixin column in a table that had indices, the indices are no
1647  longer copied since they generally are not useful, having the wrong shape.
1648  With this, the behaviour becomes the same as that for a regular ``Column``.
1649  (Note that this does not affect slicing of a table; sliced columns in those
1650  will continue to carry a sliced version of any indices). [#10890]
1651
1652- Change behavior so that when getting a single item out of a mixin column such
1653  as ``Time``, ``TimeDelta``, ``SkyCoord`` or ``Quantity``, the ``info``
1654  attribute is no longer copied. This improves performance, especially when the
1655  object is an indexed column in a ``Table``. [#10889]
1656
1657- Raise a TypeError when a scalar column is added to an unsized table. [#10476]
1658
1659- The order of columns when creating a table from a ``list`` of ``dict`` may be
1660  changed. Previously, the order was alphabetical because the ``dict`` keys
1661  were assumed to be in random order. Since Python 3.7, the keys are always in
1662  order of insertion, so ``Table`` now uses the order of keys in the first row
1663  to set the column order. To alphabetize the columns to match the previous
1664  behavior, use ``t = t[sorted(t.colnames)]``. [#10900]
1665
1666astropy.time
1667^^^^^^^^^^^^
1668
1669- Refactor ``Time`` and ``TimeDelta`` classes to inherit from a common
1670  ``TimeBase`` class. The ``TimeDelta`` class no longer inherits from ``Time``.
1671  A number of methods that only apply to ``Time`` (e.g. ``light_travel_time``)
1672  are no longer available in the ``TimeDelta`` class. [#10656]
1673
1674astropy.units
1675^^^^^^^^^^^^^
1676
1677- The ``bar`` unit is no longer wrongly considered an SI unit, meaning that
1678  SI decompositions like ``(u.kg*u.s**-2* u.sr**-1 * u.nm**-1).si`` will
1679  no longer include it. [#10586]
1680
1681astropy.utils
1682^^^^^^^^^^^^^
1683
1684- Shape-related items from ``astropy.utils.misc`` -- ``ShapedLikeNDArray``,
1685  ``check_broadcast``, ``unbroadcast``, and ``IncompatibleShapeError`` --
1686  have been moved to their own module, ``astropy.utils.shapes``. They remain
1687  importable from ``astropy.utils``. [#10337]
1688
1689- ``check_hashes`` keyword in ``check_download_cache`` is deprecated and will
1690  be removed in a future release. [#10628]
1691
1692- ``hexdigest`` keyword in ``import_file_to_cache`` is deprecated and will
1693  be removed in a future release. [#10628]
1694
1695
1696Bug Fixes
1697---------
1698
1699astropy.config
1700^^^^^^^^^^^^^^
1701
1702- Fix a few issues with ``generate_config`` when used with other packages.
1703  [#10893]
1704
1705astropy.coordinates
1706^^^^^^^^^^^^^^^^^^^
1707
1708- Fixed a bug in the coordinate-frame attribute ``CoordinateAttribute`` where
1709  the internal transformation could behave differently depending on whether
1710  the input was a low-level coordinate frame or a high-level ``SkyCoord``.
1711  ``CoordinateAttribute`` now always performs a ``SkyCoord``-style internal
1712  transformation, including the by-default merging of frame attributes. [#10475]
1713
1714astropy.modeling
1715^^^^^^^^^^^^^^^^
1716
1717- Fixed an issue of ``Model.render`` when the input ``out`` datatype is not
1718  float64. [#10542]
1719
1720astropy.visualization
1721^^^^^^^^^^^^^^^^^^^^^
1722
1723- Fix support for referencing WCSAxes coordinates by their world axes names.
1724  [#10484]
1725
1726astropy.wcs
1727^^^^^^^^^^^
1728
1729- Objective functions called by ``astropy.wcs.fit_wcs_from_points`` were
1730  treating longitude and latitude distances equally. Now longitude scaled
1731  properly. [#10759]
1732
1733
1734Other Changes and Additions
1735---------------------------
1736
1737- Minimum version of required Python is now 3.7. [#10900]
1738
1739- Minimum version of required Numpy is now 1.17. [#10664]
1740
1741- Minimum version of required Scipy is now 1.1. [#10900]
1742
1743- Minimum version of required PyYAML is now 3.13. [#10900]
1744
1745- Minimum version of required Matplotlib is now 3.0. [#10900]
1746
1747- The private ``_erfa`` module has been converted to its own package,
1748  ``pyerfa``, which is a required dependency for astropy, and can be imported
1749  with ``import erfa``.  Importing ``_erfa`` from ``astropy`` will give a
1750  deprecation warning.  [#10329]
1751
1752- Added ``optimize=True`` flag to calls of ``yacc.yacc`` (as already done for
1753  ``lex.lex``) to allow running in ``python -OO`` session without raising an
1754  exception in ``astropy.units.format``. [#10379]
1755
1756- Shortened FITS comment strings for some D2IM and CPDIS FITS keywords to
1757  reduce the number of FITS ``VerifyWarning`` warnings when working with WCSes
1758  containing lookup table distortions. [#10513]
1759
1760- When importing astropy without first building the extension modules first,
1761  raise an error directly instead of trying to auto-build. [#10883]
1762
1763
1764
17654.1 (2020-10-21)
1766================
1767
1768New Features
1769------------
1770
1771astropy.config
1772^^^^^^^^^^^^^^
1773
1774- Add new function ``generate_config`` to generate the configuration file and
1775  include it in the documentation. [#10148]
1776
1777- ``ConfigNamespace.__iter__`` and ``ConfigNamespace.keys`` now yield ``ConfigItem``
1778  names defined within it. Similarly, ``items`` and ``values`` would yield like a
1779  Python dictionary would. [#10139]
1780
1781astropy.coordinates
1782^^^^^^^^^^^^^^^^^^^
1783
1784- Added a new ``SpectralCoord`` class that can be used to define spectral
1785  coordinates and transform them between different velocity frames. [#10185]
1786
1787- Angle parsing now supports ``cardinal direction`` in the cases
1788  where angles are initialized as ``string`` instances. eg ``"17°53'27"W"``.[#9859]
1789
1790- Allow in-place modification of array-valued ``Frame`` and ``SkyCoord`` objects.
1791  This provides limited support for updating coordinate data values from another
1792  coordinate object of the same class and equivalent frame attributes. [#9857]
1793
1794- Added a robust equality operator for comparing ``SkyCoord``, frame, and
1795  representation objects. A comparison like ``sc1 == sc2`` will now return a
1796  boolean or boolean array where the objects are strictly equal in all relevant
1797  frame attributes and coordinate representation values. [#10154]
1798
1799- Added the True Equator Mean Equinox (TEME) frame. [#10149]
1800
1801- The ``Galactocentric`` frame will now use the "latest" parameter definitions
1802  by default. This currently corresponds to the values defined in v4.0, but will
1803  change with future releases. [#10238]
1804
1805- The ``SkyCoord.from_name()`` and Sesame name resolving functionality now is
1806  able to cache results locally and will do so by default. [#9162]
1807
1808- Allow in-place modification of array-valued ``Representation`` and ``Differential``
1809  objects, including of representations with attached differentials. [#10210]
1810
1811astropy.io.ascii
1812^^^^^^^^^^^^^^^^
1813
1814- Functional Units can now be processed in CDS-tables. [#9971]
1815
1816- Allow reading in ASCII tables which have duplicate column names. [#9939]
1817
1818- Fixed failure of ASCII ``fast_reader`` to handle ``names``, ``include_names``,
1819  ``exclude_names`` arguments for ``RDB`` formatted tables. Homogenised checks
1820  and exceptions for invalid ``names`` arguments. Improved performance when
1821  parsing "wide" tables with many columns. [#10306]
1822
1823- Added type validation of key arguments in calls to ``io.ascii.read()`` and
1824  ``io.ascii.write()`` functions. [#10005]
1825
1826astropy.io.misc
1827^^^^^^^^^^^^^^^
1828- Added serialization of parameter constraints fixed and bounds.  [#10082]
1829
1830- Added 'functional_models.py' and 'physical_models.py' to asdf/tags/transform,
1831  with to allow serialization of all functional and physical models. [#10028, #10293]
1832
1833- Fix ASDF serialization of circular model inverses, and remove explicit calls
1834  to ``asdf.yamlutil`` functions that became unnecessary in asdf 2.6.0. [#10189, #10384]
1835
1836astropy.io.fits
1837^^^^^^^^^^^^^^^
1838
1839- Added support for writing Dask arrays to disk efficiently for ``ImageHDU`` and
1840  ``PrimaryHDU``. [#9742]
1841
1842- Add HDU name and ver to FITSDiff report where appropriate [#10197]
1843
1844astropy.io.votable
1845^^^^^^^^^^^^^^^^^^
1846
1847- New ``exceptions.conf.max_warnings`` configuration item to control the number of times a
1848  type of warning appears before being suppressed. [#10152]
1849
1850- No longer ignore attributes whose values were specified as empty
1851  strings. [#10583]
1852
1853astropy.modeling
1854^^^^^^^^^^^^^^^^
1855- Added Plummer1D model to ``functional_models``. [#9896]
1856
1857- Added ``UnitsMapping`` model and ``Model.coerce_units`` to support units on otherwise
1858  unitless models. [#9936]
1859
1860- Added ``domain`` and ``window`` attributes to ``repr`` and ``str``. Fixed bug with
1861  ``_format_repr`` in core.py. [#9941]
1862
1863- Polynomial attributes ``domain`` and ``window`` are now tuples of size 2 and are
1864  validated. `repr` and `print` show only their non-default values. [#10145]
1865
1866- Added ``replace_submodel()`` method to ``CompoundModel`` to modify an
1867  existing instance. [#10176]
1868
1869- Delay construction of ``CompoundModel`` inverse until property is accessed,
1870  to support ASDF deserialization of circular inverses in component models. [#10384]
1871
1872astropy.nddata
1873^^^^^^^^^^^^^^
1874
1875- Added support in the ``bitmask`` module for using mnemonic bit flag names
1876  when specifying the bit flags to be used or ignored when converting a bit
1877  field to a boolean. [#10095, #10208]
1878
1879- Added ``reshape_as_blocks`` function to reshape a data array into
1880  blocks, which is useful to efficiently apply functions on block
1881  subsets of the data instead of using loops.  The reshaped array is a
1882  view of the input data array. [#10214]
1883
1884- Added a ``cache`` keyword option to allow caching for ``CCDData.read`` if
1885  filename is a URL. [#10265]
1886
1887astropy.table
1888^^^^^^^^^^^^^
1889
1890- Added ability to specify a custom matching function for table joins.  In
1891  particular this makes it possible to do cross-match table joins on ``SkyCoord``,
1892  ``Quantity``, or standard columns, where column entries within a specified
1893  distance are considered to be matched. [#10169]
1894
1895- Added ``units`` and ``descriptions`` keyword arguments to the Table object
1896  initialization and ``Table.read()`` methods.  This allows directly setting
1897  the ``unit`` and ``description`` for the table columns at the time of
1898  creating or reading the table. [#9671]
1899
1900- Make table ``Row`` work as mappings, by adding ``.keys()`` and ``.values()``
1901  methods. With this ``**row`` becomes possible, as does, more simply, turning
1902  a ``Row`` into a dictionary with ``dict(row)``. [#9712]
1903
1904- Added two new ``Table`` methods ``.items()`` and ``.values()``, which return
1905  respectively ``tbl.columns.items()`` (iterator over name, column tuples)  and
1906  ``tbl.columns.values()`` (list of columns) for a ``Table`` object ``tbl``. [#9780]
1907
1908- Added new ``Table`` method ``.round()``, which rounds numeric columns to the
1909  specified number of decimals. [#9862]
1910
1911- Updated ``to_pandas()`` and ``from_pandas()`` to use and support Pandas
1912  nullable integer data type for masked integer data. [#9541]
1913
1914- The HDF5 writer, ``write_table_hdf5()``, now allows passing through
1915  additional keyword arguments to the ``h5py.Group.create_dataset()``. [#9602]
1916
1917- Added capability to add custom table attributes to a ``Table`` subclass.
1918  These attributes are persistent and can be set during table creation. [#10097]
1919
1920- Added support for ``SkyCoord`` mixin columns in ``dstack``, ``vstack`` and
1921  ``insert_row`` functions. [#9857]
1922
1923- Added support for coordinate ``Representation`` and ``Differential`` mixin
1924  columns. [#10210]
1925
1926astropy.time
1927^^^^^^^^^^^^
1928
1929- Added a new time format ``unix_tai`` which is essentially Unix time but with
1930  leap seconds included.  More precisely, this is the number of seconds since
1931  ``1970-01-01 00:00:08 TAI`` and corresponds to the ``CLOCK_TAI`` clock
1932  available on some linux platforms. [#10081]
1933
1934astropy.units
1935^^^^^^^^^^^^^
1936
1937- Added ``torr`` pressure unit. [#9787]
1938
1939- Added the ``equal_nan`` keyword argument to ``isclose`` and ``allclose``, and
1940  updated the docstrings. [#9849]
1941
1942- Added ``Rankine`` temperature unit. [#9916]
1943
1944- Added integrated flux unit conversion to ``spectral_density`` equivalency.
1945  [#10015]
1946
1947- Changed ``pixel_scale`` equivalency to allow scales defined in any unit.
1948  [#10123]
1949
1950- The ``quantity_input`` decorator now optionally allows passing through
1951  numeric values or numpy arrays with numeric dtypes to arguments where
1952  ``dimensionless_unscaled`` is an allowed unit. [#10232]
1953
1954astropy.utils
1955^^^^^^^^^^^^^
1956
1957- Added a new ``MetaAttribute`` class to support easily adding custom attributes
1958  to a subclass of classes like ``Table`` or ``NDData`` that have a ``meta``
1959  attribute. [#10097]
1960
1961astropy.visualization
1962^^^^^^^^^^^^^^^^^^^^^
1963
1964- Added ``invalid`` keyword to ``SqrtStretch``, ``LogStretch``,
1965  ``PowerStretch``, and ``ImageNormalize`` classes and the
1966  ``simple_norm`` function.  This keyword is used to replace generated
1967  NaN values. [#10182]
1968
1969- Fixed an issue where ticks were sometimes not drawn at the edges of a spherical
1970  projection on a WCSAxes. [#10442]
1971
1972astropy.wcs
1973^^^^^^^^^^^
1974
1975- WCS objects with a spectral axis will now return ``SpectralCoord``
1976  objects when calling ``pixel_to_world`` instead of ``Quantity``,
1977  and can now take either ``Quantity`` or ``SpectralCoord`` as input
1978  to ``pixel_to_world``. [#10185]
1979
1980- Implemented support for the ``-TAB`` algorithm (WCS Paper III). [#9641]
1981
1982- Added an ``_as_mpl_axes`` method to the ``HightLevelWCSWrapper`` class. [#10138]
1983
1984- Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from
1985  unintended lower/upper case issues [#10557]
1986
1987API Changes
1988-----------
1989
1990astropy.coordinates
1991^^^^^^^^^^^^^^^^^^^
1992
1993- The equality operator for comparing ``SkyCoord``, frame, and representation
1994  objects was changed. A comparison like ``sc1 == sc2`` was previously
1995  equivalent to ``sc1 is sc2``. It will now return a boolean or boolean array
1996  where the objects are strictly equal in all relevant frame attributes and
1997  coordinate representation values. If the objects have different frame
1998  attributes or representation types then an exception will be raised. [#10154]
1999
2000- ```SkyCoord.radial_velocity_correction``` now allows you to pass an ```obstime``` directly
2001  when the ```SkyCoord``` also has an ```obstime``` set. In this situation, the position of the
2002  ```SkyCoord``` has space motion applied to correct to the passed ```obstime```. This allows
2003  mm/s radial velocity precision for objects with large space motion. [#10094]
2004
2005- For consistency with other astropy classes, coordinate ``Representations``
2006  and ``Differentials`` can now be initialized with an instance of their own class
2007  if that instance is passed in as the first argument. [#10210]
2008
2009astropy.io.ascii
2010^^^^^^^^^^^^^^^^
2011
2012- Changed the behavior when reading a table where both the ``names`` argument
2013  is provided (to specify the output column names) and the ``converters``
2014  argument is provided (to specify column conversion functions). Previously the
2015  ``converters`` dict names referred to the *input* table column names, but now
2016  they refer to the *output* table column names. [#9739]
2017
2018astropy.io.votable
2019^^^^^^^^^^^^^^^^^^
2020
2021- For FIELDs with datatype="char", store the values as strings instead
2022  of bytes. [#9505]
2023
2024astropy.table
2025^^^^^^^^^^^^^
2026
2027- ``Table.from_pandas`` now supports a ``units`` dictionary as argument to pass units
2028  for columns in the ``DataFrame``. [#9472]
2029
2030astropy.time
2031^^^^^^^^^^^^
2032
2033- Require that ``in_subfmt`` and ``out_subfmt`` properties of a ``Time`` object
2034  have allowed values at the time of being set, either when creating the object
2035  or when setting those properties on an existing ``Time`` instance.  Previously
2036  the validation of those properties was not strictly enforced. [#9868]
2037
2038astropy.utils
2039^^^^^^^^^^^^^
2040
2041- Changed the exception raised by ``get_readable_fileobj`` on missing
2042  compression modules (for ``bz2`` or ``lzma``/``xz`` support) to
2043  ``ModuleNotFoundError``, consistent with ``io.fits`` file handlers. [#9761]
2044
2045astropy.visualization
2046^^^^^^^^^^^^^^^^^^^^^
2047
2048- Deprecated the ``imshow_only_kwargs`` keyword in ``imshow_norm``.
2049  [#9915]
2050
2051- Non-finite input values are now automatically excluded in
2052  ``HistEqStretch`` and ``InvertedHistEqStretch``. [#10177]
2053
2054- The ``PowerDistStretch`` and ``InvertedPowerDistStretch`` ``a``
2055  value is restricted to be ``a >= 0`` in addition to ``a != 1``.
2056  [#10177]
2057
2058- The ``PowerStretch``, ``LogStretch``, and ``InvertedLogStretch``
2059  ``a`` value is restricted to be ``a > 0``. [#10177]
2060
2061- The ``AsinhStretch`` and ``SinhStretch`` ``a`` value is restricted
2062  to be ``0 < a <= 1``. [#10177]
2063
2064Bug Fixes
2065---------
2066
2067astropy.coordinates
2068^^^^^^^^^^^^^^^^^^^
2069
2070- Fix a bug where for light deflection by the Sun it was always assumed that the
2071  source was at infinite distance, which in the (rare and) absolute worst-case
2072  scenario could lead to errors up to 3 arcsec. [#10666]
2073
2074astropy.io.votable
2075^^^^^^^^^^^^^^^^^^
2076
2077- For FIELDs with datatype="char", store the values as strings instead
2078  of bytes. [#9505]
2079
2080astropy.table
2081^^^^^^^^^^^^^
2082
2083- Fix a bug that prevented ``Time`` columns from being used to sort a table.
2084  [#10824]
2085
2086astropy.wcs
2087^^^^^^^^^^^
2088
2089- WCS objects with a spectral axis will now return ``SpectralCoord``
2090  objects when calling ``pixel_to_world`` instead of ``Quantity``
2091  (note that ``SpectralCoord`` is a sub-class of ``Quantity``). [#10185]
2092
2093- Add .upper() to ctype or ctype names to wcsapi/fitwcs.py to mitigate bugs from
2094  unintended lower/upper case issues [#10557]
2095
2096- Added bounds to ``fit_wcs_from_points`` to ensure CRPIX is on
2097  input image. [#10346]
2098
2099
2100Other Changes and Additions
2101---------------------------
2102
2103- The way in which users can specify whether to build astropy against
2104  existing installations of C libraries rather than the bundled one
2105  has changed, and should now be done via environment variables rather
2106  than setup.py flags (e.g. --use-system-erfa). The available variables
2107  are ``ASTROPY_USE_SYSTEM_CFITSIO``, ``ASTROPY_USE_SYSTEM_ERFA``,
2108  ``ASTROPY_USE_SYSTEM_EXPAT``, ``ASTROPY_USE_SYSTEM_WCSLIB``, and
2109  ``ASTROPY_USE_SYSTEM_ALL``. These should be set to ``1`` to build
2110  against the system libraries. [#9730]
2111
2112- The infrastructure of the package has been updated in line with the
2113  APE 17 roadmap (https://github.com/astropy/astropy-APEs/blob/master/APE17.rst).
2114  The main changes are that the ``python setup.py test`` and
2115  ``python setup.py build_docs`` commands will no longer work. The easiest
2116  way to replicate these commands is to install the tox
2117  (https://tox.readthedocs.io) package and run ``tox -e test`` and
2118  ``tox -e build_docs``. It is also possible to run pytest and sphinx
2119  directly. Other significant changes include switching to setuptools_scm to
2120  manage the version number, and adding a ``pyproject.toml`` to opt in to
2121  isolated builds as described in PEP 517/518. [#9726]
2122
2123- Bundled ``expat`` is updated to version 2.2.9. [#10038]
2124
2125- Increase minimum asdf version to 2.6.0. [#10189]
2126
2127- The bundled version of PLY was updated to 3.11. [#10258]
2128
2129- Removed dependency on scikit-image. [#10214]
2130
21314.0.5 (2021-03-26)
2132==================
2133
2134Bug Fixes
2135---------
2136
2137astropy.io.fits
2138^^^^^^^^^^^^^^^
2139
2140- Fix bug where manual fixes to invalid header cards were not preserved when
2141  saving a FITS file. [#11108]
2142
2143- Fix parsing of RVKC header card patterns that were not recognised
2144  where multiple spaces were separating field-specifier and value like
2145  "DP1.AXIS.1:   1". [#11301]
2146
2147- Fix misleading missing END card error when extra data are found at the end
2148  of the file. [#11285]
2149
2150- Fix incorrect wrapping of long card values as CONTINUE cards when some
2151  words in the value are longer than a single card. [#11304]
2152
2153astropy.io.misc
2154^^^^^^^^^^^^^^^
2155
2156- Fixed problem when writing serialized metadata to HDF5 using h5py >= 3.0.
2157  With the newer h5py this was writing the metadata table as a variable-length
2158  string array instead of the previous fixed-length bytes array. Fixed astropy
2159  to force using a fixed-length bytes array. [#11359]
2160
2161astropy.modeling
2162^^^^^^^^^^^^^^^^
2163
2164- Change ``Voigt1D`` function to use Humlicek's approximation to avoid serious
2165  inaccuracies + option to use (compiled) ``scipy.special.wofz`` error function
2166  for yet more accurate results. [#11177]
2167
2168astropy.table
2169^^^^^^^^^^^^^
2170
2171- Fixed bug when initializing a ``Table`` with a column as list of ``Quantity``,
2172  for example ``Table({'x': [1*u.m, 2*u.m]})``. Previously this resulted in an
2173  ``object`` dtype with no column ``unit`` set, but now gives a float array with
2174  the correct unit. [#11329]
2175
2176- Fixed byteorder conversion in ``to_pandas()``, which had incorrectly
2177  triggered swapping when native endianness was stored with explicit
2178  ``dtype`` code ``'<'`` (or ``'>'``) instead of ``'='``. [#11288, #11294]
2179
2180- Fixed a compatibility issue with numpy 1.21. Initializing a Table with a
2181  column like ``['str', np.ma.masked]`` was failing in tests due to a change in
2182  numpy. [#11364]
2183
2184- Fixed bug when validating the inputs to ``table.hstack``, ``table.vstack``,
2185  and ``table.dstack``. Previously, mistakenly calling ``table.hstack(t1, t2)``
2186  (instead of ``table.hstack([t1, t2]))`` would return ``t1`` instead of raising
2187  an exception. [#11336]
2188
2189- Fixed byteorder conversion in ``to_pandas()``, which had incorrectly
2190  triggered swapping when native endianness was stored with explicit
2191  ``dtype`` code ``'<'`` (or ``'>'``) instead of ``'='``. [#11288]
2192
2193astropy.time
2194^^^^^^^^^^^^
2195
2196- Fix leap second update when using a non english locale. [#11062]
2197
2198- Fix default assumed location to be the geocenter when transforming times
2199  to and from solar-system barycenter scales. [#11134]
2200
2201- Fix inability to write masked times with ``formatted_value``. [#11195]
2202
2203astropy.units
2204^^^^^^^^^^^^^
2205
2206- Ensure ``keepdims`` works for taking ``mean``, ``std``, and ``var`` of
2207  ``Quantity``. [#11198]
2208
2209- For ``Quantity.to_string()``, ensure that the precision argument is also
2210  used when the format is not latex. [#11145]
2211
2212astropy.wcs
2213^^^^^^^^^^^
2214
2215- Allow "un-setting" of auxiliary WCS parameters in the ``aux`` attribute of
2216  ``Wcsprm``. [#11166]
2217
2218
2219
2220
2221
22224.0.4 (2020-11-24)
2223==================
2224
2225Bug Fixes
2226---------
2227
2228astropy.coordinates
2229^^^^^^^^^^^^^^^^^^^
2230
2231- The ``norm()`` method for ``RadialDifferential`` no longer requires ``base``
2232  to be specified.  The ``norm()`` method for other non-Cartesian differential
2233  classes now gives a clearer error message if ``base`` is not specified. [#10969]
2234
2235- The transformations between ``ICRS`` and any of the heliocentric ecliptic
2236  frames (``HeliocentricMeanEcliptic``, ``HeliocentricTrueEcliptic``, and
2237  ``HeliocentricEclipticIAU76``) now correctly account for the small motion of
2238  the Sun when transforming a coordinate with velocity information. [#10970]
2239
2240astropy.io.ascii
2241^^^^^^^^^^^^^^^^
2242
2243- Partially fixed a performance issue when reading in parallel mode. Parallel
2244  reading currently has substantially worse performance than the default serial
2245  reading, so we now ignore the parallel option and fall back to serial reading.
2246  [#10880]
2247
2248- Fixed a bug where "" (blank string) as input data for a boolean type column
2249  was causing an exception instead of indicating a masked value. As a
2250  consequence of the fix, the values "0" and "1" are now also allowed as valid
2251  inputs for boolean type columns. These new allowed values apply for both ECSV
2252  and for basic character-delimited data files ('basic' format with appropriate
2253  ``converters`` specified). [#10995]
2254
2255astropy.modeling
2256^^^^^^^^^^^^^^^^
2257
2258- Fixed use of weights with ``LinearLSQFitter``. [#10687]
2259
2260astropy.stats
2261^^^^^^^^^^^^^
2262
2263- Fixed an issue in biweight stats when MAD=0 to give the same output
2264  with and without an input ``axis``. [#10912]
2265
2266astropy.time
2267^^^^^^^^^^^^
2268
2269- Fix a problem with the ``plot_date`` format for matplotlib >= 3.3 caused by
2270  a change in the matplotlib plot date default reference epoch in that release.
2271  [#10876]
2272
2273- Improve initialization time by a factor of four when creating a scalar ``Time``
2274  object in a format like ``unix`` or ``cxcsec`` (time delta from a reference
2275  epoch time). [#10406]
2276
2277astropy.visualization
2278^^^^^^^^^^^^^^^^^^^^^
2279
2280- Fixed the calculation of the tight bounding box of a ``WCSAxes``. This should
2281  also significantly improve the application of ``tight_layout()`` to figures
2282  containing ``WCSAxes``. [#10797]
2283
2284
22854.0.3 (2020-10-14)
2286==================
2287
2288Bug Fixes
2289---------
2290
2291astropy.table
2292^^^^^^^^^^^^^
2293
2294- Fixed a small bug where initializing an empty ``Column`` with a structured dtype
2295  with a length and a shape failed to give the requested dtype. [#10819]
2296
2297Other Changes and Additions
2298---------------------------
2299
2300- Fixed installation of the source distribution with pip<19. [#10837, #10852]
2301
2302
23034.0.2 (2020-10-10)
2304==================
2305
2306New Features
2307------------
2308
2309astropy.utils
2310^^^^^^^^^^^^^
2311
2312- ``astropy.utils.data.download_file`` now supports FTPS/FTP over TLS. [#9964]
2313
2314- ``astropy.utils.data`` now uses a lock-free mechanism for caching. This new
2315  mechanism uses a new cache layout and so ignores caches created using earlier
2316  mechanisms (which were causing lockups on clusters). The two cache formats can
2317  coexist but do not share any files. [#10437, #10683]
2318
2319- ``astropy.utils.data`` now ignores the config item
2320  ``astropy.utils.data.conf.download_cache_lock_attempts`` since no locking is
2321  done. [#10437, #10683]
2322
2323- ``astropy.utils.data.download_file`` and related functions now interpret the
2324  parameter or config file setting ``timeout=0`` to mean they should make no
2325  attempt to download files. [#10437, #10683]
2326
2327- ``astropy.utils.import_file_to_cache`` now accepts a keyword-only argument
2328  ``replace``, defaulting to True, to determine whether it should replace existing
2329  files in the cache, in a way as close to atomic as possible. [#10437, #10683]
2330
2331- ``astropy.utils.data.download_file`` and related functions now treat
2332  ``http://example.com`` and ``http://example.com/`` as equivalent. [#10631]
2333
2334astropy.wcs
2335^^^^^^^^^^^
2336
2337- The new auxiliary WCS parameters added in WCSLIB 7.1 are now exposed as
2338  the ``aux`` attribute of ``Wcsprm``. [#10333]
2339
2340- Updated bundled version of ``WCSLIB`` to v7.3. [#10433]
2341
2342
2343Bug fixes
2344---------
2345
2346astropy.config
2347^^^^^^^^^^^^^^
2348
2349- Added an extra fallback to ``os.expanduser('~')`` when trying to find the
2350  user home directory. [#10570]
2351
2352astropy.constants
2353^^^^^^^^^^^^^^^^^
2354
2355- Corrected definition of parsec to 648 000 / pi AU following IAU 2015 B2 [#10569]
2356
2357astropy.convolution
2358^^^^^^^^^^^^^^^^^^^
2359
2360- Fixed a bug where a float-typed integers in the argument ``x_range`` of
2361  ``astropy.convolution.utils.discretize_oversample_1D`` (and the 2D version as
2362  well) fails because it uses ``numpy.linspace``, which requires an ``int``.
2363  [#10696]
2364
2365astropy.coordinates
2366^^^^^^^^^^^^^^^^^^^
2367
2368- Ensure that for size-1 array ``SkyCoord`` and coordinate frames
2369  the attributes also properly become scalars when indexed with 0.
2370  [#10113]
2371
2372- Fixed a bug where ``SkyCoord.separation()`` and ``SkyCoord.separation_3d``
2373  were not accepting a frame object. [#10332]
2374
2375- Ensure that the ``lon`` values in ``SkyOffsetFrame`` are wrapped correctly at
2376  180 degree regardless of how the underlying data is represented. [#10163]
2377
2378- Fixed an error in the obliquity of the ecliptic when transforming to/from the
2379  ``*TrueEcliptic`` coordinate frames. The error would primarily result in an
2380  inaccuracy in the ecliptic latitude on the order of arcseconds. [#10129]
2381
2382- Fixed an error in the computation of the location of solar system bodies where the
2383  Earth location of the observer was ignored during the correction for light travel
2384  time. [#10292]
2385
2386- Ensure that coordinates with proper motion that are transformed to other
2387  coordinate frames still can be represented properly. [#10276]
2388
2389- Improve the error message given when trying to get a cartesian representation
2390  for coordinates that have both proper motion and radial velocity, but no
2391  distance. [#10276]
2392
2393- Fixed an error where ``SkyCoord.apply_space_motion`` would return incorrect
2394  results when no distance is set and proper motion is high. [#10296]
2395
2396- Make the parsing of angles thread-safe so that ``Angle`` can be used in
2397  Python multithreading. [#10556]
2398
2399- Fixed reporting of ``EarthLocation.info`` which previously raised an exception.
2400  [#10592]
2401
2402astropy.io.ascii
2403^^^^^^^^^^^^^^^^
2404
2405- Fixed a bug with the C ``fast_reader`` not correctly parsing newlines when
2406  ``delimiter`` was also set to ``\n`` or ``\r``; ensured consistent handling
2407  of input strings without newline characters. [#9929]
2408
2409astropy.io.fits
2410^^^^^^^^^^^^^^^
2411
2412- Fix integer formats of ``TFORMn=Iw`` columns in ASCII tables to correctly read
2413  values exceeding int32 - setting int16, int32 or int64 according to ``w``. [#9901]
2414
2415- Fix unclosed memory-mapped FITS files in ``FITSDiff`` when difference found.
2416  [#10159]
2417
2418- Fix crash when reading an invalid table file. [#10171]
2419
2420- Fix duplication issue when setting a keyword ending with space. [#10482]
2421
2422- Fix ResourceWarning with ``fits.writeto`` and ``pathlib.Path`` object.
2423  [#10599]
2424
2425- Fix repr for commentary cards and strip spaces for commentary keywords.
2426  [#10640]
2427
2428- Fix compilation of cfitsio with Xcode 12. [#10772]
2429
2430- Fix handling of 1-dimensional arrays with a single element in ``BinTableHDU`` [#10768]
2431
2432astropy.io.misc
2433^^^^^^^^^^^^^^^
2434
2435- Fix id URL in ``baseframe-1.0.0`` ASDF schema. [#10223]
2436
2437- Write keys to ASDF only if the value is present, to account
2438  for a change in behavior in asdf 2.8. [#10674]
2439
2440astropy.io.registry
2441^^^^^^^^^^^^^^^^^^^
2442
2443- Fix ``Table.(read|write).help`` when reader or writer has no docstring. [#10460]
2444
2445astropy.io.votable
2446^^^^^^^^^^^^^^^^^^
2447
2448- Fixed parsing failure of VOTable with no fields. When detecting a non-empty
2449  table with no fields, the following warning/exception is issued:
2450  E25 "No FIELDs are defined; DATA section will be ignored." [#10192]
2451
2452astropy.modeling
2453^^^^^^^^^^^^^^^^
2454
2455- Fixed a problem with mapping ``input_units`` and ``return_units``
2456  of a ``CompoundModel`` to the units of the constituent models. [#10158]
2457
2458- Removed hard-coded names of inputs and outputs. [#10174]
2459
2460- Fixed a problem where slicing a ``CompoundModel`` by name will crash if
2461  there ``fix_inputs`` operators are present. [#10224]
2462
2463- Removed a limitation of fitting of data with units with compound models
2464  without units when the expression involves operators other than addition
2465  and subtraction. [#10415]
2466
2467- Fixed a problem with fitting ``Linear1D`` and ``Planar2D`` in model sets. [#10623]
2468
2469- Fixed reported module name of ``math_functions`` model classes. [#10694]
2470
2471- Fixed reported module name of ``tabular`` model classes. [#10709]
2472
2473- Do not create new ``math_functions`` models for ufuncs that are
2474  only aliases (divide and mod). [#10697]
2475
2476- Fix calculation of the ``Moffat2D`` derivative with respect to gamma. [#10784]
2477
2478astropy.stats
2479^^^^^^^^^^^^^
2480
2481- Fixed an API regression where ``SigmaClip.__call__`` would convert masked
2482  elements to ``nan`` and upcast the dtype to ``float64`` in its output
2483  ``MaskedArray`` when using the ``axis`` parameter along with the defaults
2484  ``masked=True`` and ``copy=True``. [#10610]
2485
2486- Fixed an issue where fully masked ``MaskedArray`` input to
2487  ``sigma_clipped_stats`` gave incorrect results. [#10099]
2488
2489- Fixed an issue where ``sigma_clip`` and ``SigmaClip.__call__``
2490  would return a masked array instead of a ``ndarray`` when
2491  ``masked=False`` and the input was a full-masked ``MaskedArray``.
2492  [#10099]
2493
2494- Fixed bug with ``funcs.poisson_conf_interval`` where an integer for N
2495  with ``interval='kraft-burrows-nousek'`` would throw an error with
2496  mpmath backend. [#10427]
2497
2498- Fixed bug in ``funcs.poisson_conf_interval`` with
2499  ``interval='kraft-burrows-nousek'`` where certain combinations of source
2500  and background count numbers led to ``ValueError`` due to the choice of
2501  starting value for numerical optimization. [#10618]
2502
2503astropy.table
2504^^^^^^^^^^^^^
2505
2506- Fixed a bug when writing a table with mixin columns to FITS, ECSV or HDF5.
2507  If one of the data attributes of the mixin (e.g. ``skycoord.ra``) had the
2508  same name as one of the table column names (``ra``), the column (``ra``)
2509  would be dropped when reading the table back. [#10222]
2510
2511- Fixed a bug when sorting an indexed table on the indexed column after first
2512  sorting on another column. [#10103]
2513
2514- Fixed a bug in table argsort when called with ``reverse=True`` for an
2515  indexed table. [#10103]
2516
2517- Fixed a performance regression introduced in #9048 when initializing a table
2518  from Python lists. Also fixed incorrect behavior (for data types other than
2519  float) when those lists contain ``np.ma.masked`` elements to indicate masked
2520  data. [#10636]
2521
2522- Avoid modifying ``.meta`` when serializing columns to FITS. [#10485]
2523
2524- Avoid crash when reading a FITS table that contains mixin info and PyYAML
2525  is missing. [#10485]
2526
2527astropy.time
2528^^^^^^^^^^^^
2529
2530- Ensure that for size-1 array ``Time``, the location also properly becomes
2531  a scalar when indexed with 0. [#10113]
2532
2533astropy.units
2534^^^^^^^^^^^^^
2535
2536- Refined test_parallax to resolve difference between 2012 and 2015 definitions. [#10569]
2537
2538astropy.utils
2539^^^^^^^^^^^^^
2540
2541- The default IERS server has been updated to use the FTPS server hosted by
2542  CDDIS. [#9964]
2543
2544- Fixed memory allocation on 64-bit systems within ``xml.iterparse`` [#10076]
2545
2546- Fix case where ``None`` could be used in a numerical computation. [#10126]
2547
2548astropy.visualization
2549^^^^^^^^^^^^^^^^^^^^^
2550
2551- Fixed a bug where the ``ImageNormalize`` ``clip`` keyword was
2552  ignored when used with calling the object on data. [#10098]
2553
2554- Fixed a bug where ``axes.xlabel``/``axes.ylabel`` where not correctly set
2555  nor returned on an ``EllipticalFrame`` class ``WCSAxes`` plot. [#10446]
2556
2557astropy.wcs
2558^^^^^^^^^^^
2559
2560- Handled WCS 360 -> 0 deg crossover in ``fit_wcs_from_points`` [#10155]
2561
2562- Do not issue ``DATREF`` warning when ``MJDREF`` has default value. [#10440]
2563
2564- Fixed a bug due to which ``naxis`` argument was ignored if ``header``
2565  was supplied during the initialization of a WCS object. [#10532]
2566
2567Other Changes and Additions
2568---------------------------
2569
2570- Improved the speed of sorting a large ``Table`` on a single column by a factor
2571  of around 5. [#10103]
2572
2573- Ensure that astropy can be used inside Application bundles built with
2574  pyinstaller. [#8795]
2575
2576- Updated the bundled CFITSIO library to 3.49. See
2577  ``cextern/cfitsio/docs/changes.txt`` for additional information.
2578  [#10256, #10665]
2579
2580- ``extract_array`` raises a ``ValueError`` if the data type of the
2581  input array is inconsistent with the ``fill_value``. [#10602]
2582
2583
25844.0.1 (2020-03-27)
2585==================
2586
2587Bug fixes
2588---------
2589
2590astropy.config
2591^^^^^^^^^^^^^^
2592
2593- Fixed a bug where importing a development version of a package that uses
2594  ``astropy`` configuration system can result in a
2595  ``~/.astropy/config/package..cfg`` file. [#9975]
2596
2597astropy.coordinates
2598^^^^^^^^^^^^^^^^^^^
2599
2600- Fixed a bug where a vestigal trace of a frame class could persist in the
2601  transformation graph even after the removal of all transformations involving
2602  that frame class. [#9815]
2603
2604- Fixed a bug with ``TransformGraph.remove_transform()`` when the "from" and
2605  "to" frame classes are not explicitly specified. [#9815]
2606
2607- Read-only longitudes can now be passed in to ``EarthLocation`` even if
2608  they include angles outside of the range of -180 to 180 degrees. [#9900]
2609
2610- ```SkyCoord.radial_velocity_correction``` no longer raises an Exception
2611  when space motion information is present on the SkyCoord. [#9980]
2612
2613astropy.io
2614^^^^^^^^^^
2615
2616- Fixed a bug that prevented the unified I/O infrastructure from working with
2617  datasets that are represented by directories rather than files. [#9866]
2618
2619astropy.io.ascii
2620^^^^^^^^^^^^^^^^
2621
2622- Fixed a bug in the ``fast_reader`` C parsers incorrectly returning entries
2623  of isolated positive/negative signs as ``float`` instead of ``str``. [#9918]
2624
2625- Fixed a segmentation fault in the ``fast_reader`` C parsers when parsing an
2626  invalid file with ``guess=True`` and the file contains inconsistent column
2627  numbers in combination with a quoted field; e.g., ``"1  2\n 3  4 '5'"``.
2628  [#9923]
2629
2630- Magnitude, decibel, and dex can now be stored in ``ecsv`` files. [#9933]
2631
2632astropy.io.misc
2633^^^^^^^^^^^^^^^
2634
2635- Magnitude, decibel, and dex can now be stored in ``hdf5`` files. [#9933]
2636
2637- Fixed serialization of polynomial models to include non default values of
2638  domain and window values. [#9956, #9961]
2639
2640- Fixed a bug which affected overwriting tables within ``hdf5`` files.
2641  Overwriting an existing path with associated column meta data now also
2642  overwrites the meta data associated with the table. [#9950]
2643
2644- Fixed serialization of Time objects with location under time-1.0.0
2645  ASDF schema. [#9983]
2646
2647astropy.io.fits
2648^^^^^^^^^^^^^^^
2649
2650- Fix regression with ``GroupsHDU`` which needs to modify the header to handle
2651  invalid headers, and fix accessing ``.data`` for empty HDU. [#9711, #9934]
2652
2653- Fix ``fitsdiff`` when its arguments are directories that contain other
2654  directories. [#9711]
2655
2656- Fix writing noncontiguous data to a compressed HDU. [#9958]
2657
2658- Added verification of ``disp`` (``TDISP``) keyword to ``fits.Column`` and
2659  extended tests for ``TFORM`` and ``TDISP`` validation. [#9978]
2660
2661- Fix checksum verification to process all HDUs instead of only the first one
2662  because of the lazy loading feature. [#10012]
2663
2664- Allow passing ``output_verify`` to ``.close`` when using the context manager.
2665  [#10030]
2666
2667- Prevent instantiation of ``PrimaryHDU`` and ``ImageHDU`` with a scalar.
2668  [#10041]
2669
2670- Fix column access by attribute with FITS_rec: columns with scaling or columns
2671  from ASCII tables where not properly converted when accessed by attribute
2672  name. [#10069]
2673
2674astropy.io.misc
2675^^^^^^^^^^^^^^^
2676
2677- Magnitude, decibel, and dex can now be stored in ``hdf5`` files. [#9933]
2678
2679- Fixed serialization of polynomial models to include non default values of
2680  domain and window values. [#9956, #9961]
2681
2682- Fixed a bug which affected overwriting tables within ``hdf5`` files.
2683  Overwriting an existing path with associated column meta data now also
2684  overwrites the meta data associated with the table. [#9950]
2685
2686- Fixed serialization of Time objects with location under time-1.0.0
2687  ASDF schema. [#9983]
2688
2689astropy.modeling
2690^^^^^^^^^^^^^^^^
2691
2692- Fixed a bug in setting default values of parameters of orthonormal
2693  polynomials when constructing a model set. [#9987]
2694
2695astropy.table
2696^^^^^^^^^^^^^
2697
2698- Fixed bug in ``Table.reverse`` for tables that contain non-mutable mixin columns
2699  (like ``SkyCoord``) for which in-place item update is not allowed. [#9839]
2700
2701- Tables containing Magnitude, decibel, and dex columns can now be saved to
2702  ``ecsv`` files. [#9933]
2703
2704- Fixed bug where adding or inserting a row fails on a table with an index
2705  defined on a column that is not the first one. [#10027]
2706
2707- Ensured that ``table.show_in_browser`` also worked for mixin columns like
2708  ``Time`` and ``SkyCoord``. [#10068]
2709
2710astropy.time
2711^^^^^^^^^^^^
2712
2713- Fix inaccuracy when converting between TimeDelta and datetime.timedelta. [#9679]
2714
2715- Fixed exception when changing ``format`` in the case when ``out_subfmt`` is
2716  defined and is incompatible with the new format. [#9812]
2717
2718- Fixed exceptions in ``Time.to_value()``: when supplying any ``subfmt`` argument
2719  for string-based formats like 'iso', and for ``subfmt='long'`` for the formats
2720  'byear', 'jyear', and 'decimalyear'. [#9812]
2721
2722- Fixed bug where the location attribute was lost when creating a new ``Time``
2723  object from an existing ``Time`` or list of ``Time`` objects. [#9969]
2724
2725- Fixed a bug where an exception occurred when creating a ``Time`` object
2726  if the ``val1`` argument was a regular double and the ``val2`` argument
2727  was a ``longdouble``. [#10034]
2728
2729astropy.timeseries
2730^^^^^^^^^^^^^^^^^^
2731
2732- Fixed issue with reference time for the ``transit_time`` parameter returned by
2733  the ``BoxLeastSquares`` periodogram. Now, the ``transit_time`` will be within
2734  the range of the input data and arbitrary time offsets/zero points no longer
2735  affect results. [#10013]
2736
2737astropy.units
2738^^^^^^^^^^^^^
2739
2740- Fix for ``quantity_input`` annotation raising an exception on iterable
2741  types that don't define a general ``__contains__`` for checking if ``None``
2742  is contained (e.g. Enum as of python3.8), by instead checking for instance of
2743  Sequence. [#9948]
2744
2745- Fix for ``u.Quantity`` not taking into account ``ndmin`` if constructed from
2746  another ``u.Quantity`` instance with different but convertible unit [#10066]
2747
2748astropy.utils
2749^^^^^^^^^^^^^
2750
2751- Fixed ``deprecated_renamed_argument`` not passing in user value to
2752  deprecated keyword when the keyword has no new name. [#9981]
2753
2754- Fixed ``deprecated_renamed_argument`` not issuing a deprecation warning when
2755  deprecated keyword without new name is passed in as positional argument.
2756  [#9985]
2757
2758- Fixed detection of read-only filesystems in the caching code. [#10007]
2759
2760astropy.visualization
2761^^^^^^^^^^^^^^^^^^^^^
2762
2763- Fixed bug from matplotlib >=3.1 where an empty Quantity array is
2764  sent for unit conversion as an empty list. [#9848]
2765
2766- Fix bug in ``ZScaleInterval`` to return the array minimum and
2767  maximum when there are less then ``min_npixels`` in the input array. [#9913]
2768
2769- Fix a bug in simplifying axis labels that affected non-rectangular frames.
2770  [#8004, #9991]
2771
2772
2773Other Changes and Additions
2774---------------------------
2775
2776- Increase minimum asdf version to 2.5.2. [#9996, #9819]
2777
2778- Updated bundled version of ``WCSLIB`` to v7.2. [#10021]
2779
2780
2781
27824.0 (2019-12-16)
2783================
2784
2785New Features
2786------------
2787
2788astropy.config
2789^^^^^^^^^^^^^^
2790
2791- The config and cache directories and the name of the config file are now
2792  customizable. This allows affiliated packages to put their configuration
2793  files in locations other than ``CONFIG_DIR/.astropy/``. [#8237]
2794
2795astropy.constants
2796^^^^^^^^^^^^^^^^^
2797
2798- The version of constants can be specified via ScienceState in a way
2799  that ``constants`` and ``units`` will be consistent. [#8517]
2800
2801- Default constants now use CODATA 2018 and IAU 2015 definitions. [#8761]
2802
2803- Constants can be pickled and unpickled. [#9377]
2804
2805astropy.convolution
2806^^^^^^^^^^^^^^^^^^^
2807
2808- Fixed a bug [#9168] where having a kernel defined using unitless astropy
2809  quantity objects would result in a crash [#9300]
2810
2811astropy.coordinates
2812^^^^^^^^^^^^^^^^^^^
2813
2814- Changed ``coordinates.solar_system_ephemeris`` to also accept local files
2815  as input. The ephemeris can now be selected by either keyword (e.g. 'jpl',
2816  'de430'), URL or file path. [#8767]
2817
2818- Added a ``cylindrical`` property to ``SkyCoord`` for shorthand access to a
2819  ``CylindricalRepresentation`` of the coordinate, as is already available
2820  for other common representations. [#8857]
2821
2822- The default parameters for the ``Galactocentric`` frame are now controlled by
2823  a ``ScienceState`` subclass, ``galactocentric_frame_defaults``. New
2824  parameter sets will be added to this object periodically to keep up with
2825  ever-improved measurements of the solar position and motion. [#9346]
2826
2827- Coordinate frame classes can now have multiple aliases by assigning a list
2828  of aliases to the class variable ``name``.  Any of the aliases can be used
2829  for attribute-style access or as the target of ``tranform_to()`` calls.
2830  [#8834]
2831
2832- Passing a NaN to ``Distance`` no longer raises a warning. [#9598]
2833
2834astropy.cosmology
2835^^^^^^^^^^^^^^^^^
2836
2837- The pre-publication Planck 2018 cosmological parameters are included as the
2838  ``Planck2018_arXiv_v2`` object.  Please note that the values are preliminary,
2839  and when the paper is accepted a final version will be included as
2840  ``Planck18``. [#8111]
2841
2842astropy.io.ascii
2843^^^^^^^^^^^^^^^^
2844
2845- Removed incorrect warnings on ``Overflow`` when reading in
2846  ``FloatType`` 0.0 with ``use_fast_converter``; synchronised
2847  ``IntType`` ``Overflow`` warning messages. [#9082]
2848
2849astropy.io.misc
2850^^^^^^^^^^^^^^^
2851
2852- Eliminate deprecated compatibility mode when writing ``Table`` metadata to
2853  HDF5 format. [#8899]
2854
2855- Add support for orthogonal polynomial models to ASDF. [#9107]
2856
2857astropy.io.fits
2858^^^^^^^^^^^^^^^
2859
2860- Changed the ``fitscheck`` and ``fitsdiff`` script to use the ``argparse``
2861  module instead of ``optparse``. [#9148]
2862
2863- Allow writing of ``Table`` objects with ``Time`` columns that are also table
2864  indices to FITS files. [#8077]
2865
2866astropy.io.votable
2867^^^^^^^^^^^^^^^^^^
2868
2869- Support VOTable version 1.4.  The main addition is the new element, TIMESYS,
2870  which allows defining of metadata for temporal coordinates much like COOSYS
2871  defines metadata for celestial coordinates. [#9475]
2872
2873astropy.logger
2874^^^^^^^^^^^^^^
2875
2876- Added a configuration option to specify the text encoding of the log file,
2877  with the default behavior being the platform-preferred encoding. [#9203]
2878
2879astropy.modeling
2880^^^^^^^^^^^^^^^^
2881
2882- Major rework of modeling internals. `See modeling documentation for details.
2883  <https://docs.astropy.org/en/v4.0.x/modeling/changes_for_4.html>`_ . [#8769]
2884
2885- Add ``Tabular1D.inverse``. [#9083]
2886
2887- ``Model.rename`` was changed to add the ability to rename ``Model.inputs``
2888  and ``Model.outputs``. [#9220]
2889
2890- New function ``fix_inputs`` to generate new models from others by fixing
2891  specific inputs variable values to constants. [#9135]
2892
2893- ``inputs`` and ``outputs`` are now model instance attributes, and ``n_inputs``
2894  and ``n_outputs`` are class attributes. Backwards compatible default
2895  values of ``inputs`` and ``outputs`` are generated. ``Model.inputs`` and
2896  ``Model.outputs`` are now settable which allows renaming them on per user
2897  case. [#9298]
2898
2899- Add a new model representing a sequence of rotations in 3D around an
2900  arbitrary number of axes. [#9369]
2901
2902- Add many of the numpy ufunc functions as models. [#9401]
2903
2904- Add ``BlackBody`` model. [#9282]
2905
2906- Add ``Drude1D`` model. [#9452]
2907
2908- Added analytical King model (KingProjectedAnalytic1D). [#9084]
2909
2910- Added Exponential1D and Logarithmic1D models. [#9351]
2911
2912astropy.nddata
2913^^^^^^^^^^^^^^
2914
2915- Add a way for technically invalid but unambiguous units in a fits header
2916  to be parsed by ``CCDData``. [#9397]
2917
2918- ``NDData`` now only accepts WCS objects which implement either the high, or
2919  low level APE 14 WCS API. All WCS objects are converted to a high level WCS
2920  object, so ``NDData.wcs`` now always returns a high level APE 14 object. Not
2921  all array slices are valid for wcs objects, so some slicing operations which
2922  used to work may now fail. [#9067]
2923
2924astropy.stats
2925^^^^^^^^^^^^^
2926
2927- The ``biweight_location``, ``biweight_scale``, and
2928  ``biweight_midvariance`` functions now allow for the ``axis``
2929  keyword to be a tuple of integers. [#9309]
2930
2931- Added an ``ignore_nan`` option to the ``biweight_location``,
2932  ``biweight_scale``, and ``biweight_midvariance`` functions. [#9457]
2933
2934- A numpy ``MaskedArray`` can now be input to the ``biweight_location``,
2935  ``biweight_scale``, and ``biweight_midvariance`` functions. [#9466]
2936
2937- Removed the warning related to p0 in the Bayesian blocks algorithm. The
2938  caveat related to p0 is described in the docstring for ``Events``. [#9567]
2939
2940astropy.table
2941^^^^^^^^^^^^^
2942
2943- Improved the implementation of ``Table.replace_column()`` to provide
2944  a speed-up of 5 to 10 times for wide tables.  The method can now accept
2945  any input which convertible to a column of the correct length, not just
2946  ``Column`` subclasses. [#8902]
2947
2948- Improved the implementation of ``Table.add_column()`` to provide a speed-up
2949  of 2 to 10 (or more) when adding a column to tables, with increasing benefit
2950  as the number of columns increases.  The method can now accept any input
2951  which is convertible to a column of the correct length, not just ``Column``
2952  subclasses. [#8933]
2953
2954- Changed the implementation of ``Table.add_columns()`` to use the new
2955  ``Table.add_column()`` method.  In most cases the performance is similar
2956  or slightly faster to the previous implementation. [#8933]
2957
2958- ``MaskedColumn.data`` will now return a plain ``MaskedArray`` rather than
2959  the previous (unintended) ``masked_BaseColumn``. [#8855]
2960
2961- Added depth-wise stacking ``dstack()`` in higher level table operation.
2962  It help will in stacking table column depth-wise. [#8939]
2963
2964- Added a new table equality method ``values_equal()`` which allows comparison
2965  table values to another table, list, or value, and returns an
2966  element-by-element equality table. [#9068]
2967
2968- Added new ``join_type='cartesian'`` option to the ``join`` operation. [#9288]
2969
2970- Allow adding a table column as a list of mixin-type objects, for instance
2971  ``t['q'] = [1 * u.m, 2 * u.m]``. [#9165]
2972
2973- Allow table ``join()`` using any sortable key column (e.g. Time), not
2974  just ndarray subclasses. A column is considered sortable if there is a
2975  ``<column>.info.get_sortable_arrays()`` method that is implemented. [#9340]
2976
2977- Added ``Table.iterrows()`` for making row-wise iteration faster. [#8969]
2978
2979- Allow table to be initialized with a list of dict where the dict keys
2980  are not the same in every row. The table column names are the set of all keys
2981  found in the input data, and any missing key/value pairs are turned into
2982  missing data in the table. [#9425]
2983
2984- Prevent unnecessary ERFA warnings when indexing by ``Time`` columns. [#9545]
2985
2986- Added support for sorting tables which contain non-mutable mixin columns
2987  (like ``SkyCoord``) for which in-place item update is not allowed. [#9549]
2988
2989- Ensured that inserting ``np.ma.masked`` (or any other value with a mask) into
2990  a ``MaskedColumn`` causes a masked entry to be inserted. [#9623]
2991
2992- Fixed a bug that caused an exception when initializing a ``MaskedColumn`` from
2993  another ``MaskedColumn`` that has a structured dtype. [#9651]
2994
2995astropy.tests
2996^^^^^^^^^^^^^
2997
2998- The plugin that handles the custom header in the test output has been
2999  moved to the ``pytest-astropy-header plugin`` package. `See the README at
3000  <https://github.com/astropy/pytest-astropy-header>`__ for information about
3001  using this new plugin. [#9214]
3002
3003astropy.time
3004^^^^^^^^^^^^
3005
3006- Added a new time format ``ymdhms`` for representing times via year, month,
3007  day, hour, minute, and second attributes. [#7644]
3008
3009- ``TimeDelta`` gained a ``to_value`` method, so that it becomes easier to
3010  use it wherever a ``Quantity`` with units of time could be used. [#8762]
3011
3012- Made scalar ``Time`` and ``TimeDelta`` objects hashable based on JD, time
3013  scale, and location attributes. [#8912]
3014
3015- Improved error message when bad input is used to initialize a ``Time`` or
3016  ``TimeDelta`` object and the format is specified. [#9296]
3017
3018- Allow numeric time formats to be initialized with numpy ``longdouble``,
3019  ``Decimal`` instances, and strings.  One can select just one of these
3020  using ``in_subfmt``.  The output can be similarly set using ``out_subfmt``.
3021  [#9361]
3022
3023- Introduce a new ``.to_value()`` method for ``Time`` (and adjusted the
3024  existing method for ``TimeDelta``) so that one can get values in a given
3025  ``format`` and possible ``subfmt`` (e.g., ``to_value('mjd', 'str')``. [#9361]
3026
3027- Prevent unnecessary ERFA warnings when sorting ``Time`` objects. [#9545]
3028
3029astropy.timeseries
3030^^^^^^^^^^^^^^^^^^
3031
3032- Adding ``epoch_phase``, ``wrap_phase`` and ``normalize_phase`` keywords to
3033  ``TimeSeries.fold()`` to control the phase of the epoch and to return
3034  normalized phase rather than time for the folded TimeSeries. [#9455]
3035
3036astropy.uncertainty
3037^^^^^^^^^^^^^^^^^^^
3038
3039- ``Distribution`` was rewritten such that it deals better with subclasses.
3040  As a result, Quantity distributions now behave correctly with ``to`` methods
3041  yielding new distributions of the kind expected for the starting
3042  distribution, and ``to_value`` yielding ``NdarrayDistribution`` instances.
3043  [#9429, #9442]
3044
3045- The ``pdf_*`` properties that were used to calculate statistical properties
3046  of ``Distrubution`` instances were changed into methods. This allows one
3047  to pass parameters such as ``ddof`` to ``pdf_std`` and ``pdf_var`` (which
3048  generally should equal 1 instead of the default 0), and reflects that these
3049  are fairly involved calculations, not just "properties". [#9613]
3050
3051astropy.units
3052^^^^^^^^^^^^^
3053
3054- Support for unicode parsing. Currently supported are superscripts, Ohm,
3055  Ångström, and the micro-sign. [#9348]
3056
3057- Accept non-unit type annotations in @quantity_input. [#8984]
3058
3059- For numpy 1.17 and later, the new ``__array_function__`` protocol is used to
3060  ensure that all top-level numpy functions interact properly with
3061  ``Quantity``, preserving units also in operations like ``np.concatenate``.
3062  [#8808]
3063
3064- Add equivalencies for surface brightness units to spectral_density. [#9282]
3065
3066astropy.utils
3067^^^^^^^^^^^^^
3068
3069- ``astropy.utils.data.download_file`` and
3070  ``astropy.utils.data.get_readable_fileobj`` now provides an ``http_headers``
3071  keyword to pass in specific request headers for the download. It also now
3072  defaults to providing ``User-Agent: Astropy`` and ``Accept: */*``
3073  headers. The default ``User-Agent`` value can be set with a new
3074  ``astropy.data.conf.default_http_user_agent`` configuration item.
3075  [#9508, #9564]
3076
3077- Added a new ``astropy.utils.misc.unbroadcast`` function which can be used
3078  to return the smallest array that can be broadcasted back to the initial
3079  array. [#9209]
3080
3081- The specific IERS Earth rotation parameter table used for time and
3082  coordinate transformations can now be set, either in a context or per
3083  session, using ``astropy.utils.iers.earth_rotation_table``. [#9244]
3084
3085- Added ``export_cache`` and ``import_cache`` to permit transporting
3086  downloaded data to machines with no Internet connection. Several new
3087  functions are available to investigate the cache contents; e.g.,
3088  ``check_download_cache`` can be used to confirm that the persistent
3089  cache has not become damaged. [#9182]
3090
3091- A new ``astropy.utils.iers.LeapSeconds`` class has been added to track
3092  leap seconds. [#9365]
3093
3094astropy.visualization
3095^^^^^^^^^^^^^^^^^^^^^
3096
3097- Added a new ``time_support`` context manager/function for making it easy to
3098  plot and format ``Time`` objects in Matplotlib. [#8782]
3099
3100- Added support for plotting any WCS compliant with the generalized (APE 14)
3101  WCS API with WCSAxes. [#8885, #9098]
3102
3103- Improved display of information when inspecting ``WCSAxes.coords``. [#9098]
3104
3105- Improved error checking for the ``slices=`` argument to ``WCSAxes``. [#9098]
3106
3107- Added support for more solar frames in WCSAxes. [#9275]
3108
3109- Add support for one dimensional plots to ``WCSAxes``. [#9266]
3110
3111- Add a ``get_format_unit`` to ``wcsaxes.CoordinateHelper``. [#9392]
3112
3113- ``WCSAxes`` now, by default, sets a default label for plot axes which is the
3114  WCS physical type (and unit) for that axis. This can be disabled using the
3115  ``coords[i].set_auto_axislabel(False)`` or by explicitly setting an axis
3116  label. [#9392]
3117
3118- Fixed the display of tick labels when plotting all sky images that have a
3119  coord_wrap less than 360. [#9542]
3120
3121astropy.wcs
3122^^^^^^^^^^^
3123
3124- Added a ``astropy.wcs.wcsapi.pixel_to_pixel`` function that can be used to
3125  transform pixel coordinates in one dataset with a WCS to pixel coordinates
3126  in another dataset with a different WCS. This function is designed to be
3127  efficient when the input arrays are broadcasted views of smaller
3128  arrays. [#9209]
3129
3130- Added a ``local_partial_pixel_derivatives`` function that can be used to
3131  determine a matrix of partial derivatives of each world coordinate with
3132  respect to each pixel coordinate. [#9392]
3133
3134- Updated wcslib to v6.4. [#9125]
3135
3136- Improved the  ``SlicedLowLevelWCS`` class in ``astropy.wcs.wcsapi`` to avoid
3137  storing chains of nested ``SlicedLowLevelWCS`` objects when applying multiple
3138  slicing operations in turn. [#9210]
3139
3140- Added a ``wcs_info_str`` function to ``astropy.wcs.wcsapi`` to show a summary
3141  of an APE-14-compliant WCS as a string. [#8546, #9207]
3142
3143- Added two new optional attributes to the APE 14 low-level WCS:
3144  ``pixel_axis_names`` and ``world_axis_names``. [#9156]
3145
3146- Updated the WCS class to now correctly take and return ``Time`` objects in
3147  the high-level APE 14 API (e.g. ``pixel_to_world``. [#9376]
3148
3149- ``SlicedLowLevelWCS`` now raises ``IndexError`` rather than ``ValueError`` on
3150  an invalid slice. [#9067]
3151
3152- Added ``fit_wcs_from_points`` function to ``astropy.wcs.utils``. Fits a WCS
3153  object to set of matched detector/sky coordinates. [#9469]
3154
3155- Fix various bugs in ``SlicedLowLevelWCS`` when the WCS being sliced was one
3156  dimensional. [#9693]
3157
3158
3159API Changes
3160-----------
3161
3162astropy.constants
3163^^^^^^^^^^^^^^^^^
3164
3165- Deprecated ``set_enabled_constants`` context manager. Use
3166  ``astropy.physical_constants`` and ``astropy.astronomical_constants``.
3167  [#9025]
3168
3169astropy.convolution
3170^^^^^^^^^^^^^^^^^^^
3171
3172- Removed the deprecated keyword argument ``interpolate_nan`` from
3173  ``convolve_fft``. [#9356]
3174
3175- Removed the deprecated keyword argument ``stddev`` from
3176  ``Gaussian2DKernel``. [#9356]
3177
3178- Deprecated and renamed ``MexicanHat1DKernel`` and ``MexicanHat2DKernel``
3179  to ``RickerWavelet1DKernel`` and ``RickerWavelet2DKernel``. [#9445]
3180
3181astropy.coordinates
3182^^^^^^^^^^^^^^^^^^^
3183
3184- Removed the ``recommended_units`` attribute from Representations; it was
3185  deprecated since 3.0. [#8892]
3186
3187- Removed the deprecated frame attribute classes, ``FrameAttribute``,
3188  ``TimeFrameAttribute``, ``QuantityFrameAttribute``,
3189  ``CartesianRepresentationFrameAttribute``; deprecated since 3.0. [#9326]
3190
3191- Removed ``longitude`` and ``latitude`` attributes from ``EarthLocation``;
3192  deprecated since 2.0. [#9326]
3193
3194- The ``DifferentialAttribute`` for frame classes now passes through any input
3195  to the ``allowed_classes`` if only one allowed class is specified, i.e. this
3196  now allows passing a quantity in for frame attributes that use
3197  ``DifferentialAttribute``. [#9325]
3198
3199- Removed the deprecated ``galcen_ra`` and ``galcen_dec`` attributes from the
3200  ``Galactocentric`` frame. [#9346]
3201
3202astropy.extern
3203^^^^^^^^^^^^^^
3204
3205- Remove the bundled ``six`` module. [#8315]
3206
3207astropy.io.ascii
3208^^^^^^^^^^^^^^^^
3209
3210- Masked column handling has changed, see ``astropy.table`` entry below.
3211  [#8789]
3212
3213astropy.io.misc
3214^^^^^^^^^^^^^^^
3215
3216- Masked column handling has changed, see ``astropy.table`` entry below.
3217  [#8789]
3218
3219- Removed deprecated ``usecPickle`` kwarg from ``fnunpickle`` and
3220  ``fnpickle``. [#8890]
3221
3222astropy.io.fits
3223^^^^^^^^^^^^^^^
3224
3225- Masked column handling has changed, see ``astropy.table`` entry below.
3226  [#8789]
3227
3228- ``io.fits.Header`` has been made safe for subclasses for copying and slicing.
3229  As a result of this change, the private subclass ``CompImageHeader``
3230  now always should be passed an explicit ``image_header``. [#9229]
3231
3232- Removed the deprecated ``tolerance`` option in ``fitsdiff`` and
3233  ``io.fits.diff`` classes. [#9520]
3234
3235- Removed deprecated keyword arguments for ``CompImageHDU``:
3236  ``compressionType``, ``tileSize``, ``hcompScale``, ``hcompSmooth``,
3237  ``quantizeLevel``. [#9520]
3238
3239astropy.io.votable
3240^^^^^^^^^^^^^^^^^^
3241
3242- Changed ``pedantic`` argument to ``verify`` and change it to have three
3243  string-based options (``ignore``, ``warn``, and ``exception``) instead of
3244  just being a boolean. In addition, changed default to ``ignore``, which means
3245  that warnings will not be shown by default when loading VO tables. [#8715]
3246
3247astropy.modeling
3248^^^^^^^^^^^^^^^^
3249
3250- Eliminates support for compound classes (but not compound instances!) [#8769]
3251
3252- Slicing compound models more restrictive. [#8769]
3253
3254- Shape of parameters now includes n_models as dimension. [#8769]
3255
3256- Parameter instances now hold values instead of models. [#8769]
3257
3258- Compound model parameters now share instance and value with
3259  constituent models. [#8769]
3260
3261- No longer possible to assign slices of parameter values to model parameters
3262  attribute (it is possible to replace it with a complete array). [#8769]
3263
3264- Many private attributes and methods have changed (see documentation). [#8769]
3265
3266- Deprecated ``BlackBody1D`` model and ``blackbody_nu`` and
3267  ``blackbody_lambda`` functions. [#9282]
3268
3269- The deprecated ``rotations.rotation_matrix_from_angle`` was removed. [#9363]
3270
3271- Deprecated and renamed ``MexicanHat1D`` and ``MexicanHat2D``
3272  to ``RickerWavelet1D`` and ``RickerWavelet2D``. [#9445]
3273
3274- Deprecated ``modeling.utils.ExpressionTree``. [#9576]
3275
3276astropy.stats
3277^^^^^^^^^^^^^
3278
3279- Removed the ``iters`` keyword from sigma clipping stats functions. [#8948]
3280
3281- Renamed the ``a`` parameter to ``data`` in biweight stat functions. [#8948]
3282
3283- Renamed the ``a`` parameter to ``data`` in ``median_absolute_deviation``.
3284  [#9011]
3285
3286- Renamed the ``conflevel`` keyword to ``confidence_level`` in
3287  ``poisson_conf_interval``. Usage of ``conflevel`` now issues
3288  ``AstropyDeprecationWarning``. [#9408]
3289
3290- Renamed the ``conf`` keyword to ``confidence_level`` in
3291  ``binom_conf_interval`` and ``binned_binom_proportion``. Usage of ``conf``
3292  now issues ``AstropyDeprecationWarning``. [#9408]
3293
3294- Renamed the ``conf_lvl`` keyword to ``confidence_level`` in
3295  ``jackknife_stats``. Usage of ``conf_lvl`` now issues
3296  ``AstropyDeprecationWarning``. [#9408]
3297
3298astropy.table
3299^^^^^^^^^^^^^
3300
3301- The handling of masked columns in the ``Table`` class has changed in a way
3302  that may impact program behavior. Now a ``Table`` with ``masked=False``
3303  may contain both ``Column`` and ``MaskedColumn`` objects, and adding a
3304  masked column or row to a table no longer "upgrades" the table and columns
3305  to masked.  This means that tables with masked data which are read via
3306  ``Table.read()`` will now always have ``masked=False``, though specific
3307  columns will be masked as needed. Two new table properties
3308  ``has_masked_columns`` and ``has_masked_values`` were added. See the
3309  `Masking change in astropy 4.0 section within
3310  <https://docs.astropy.org/en/v4.0.x/table/masking.html>`_ for
3311  details. [#8789]
3312
3313- Table operation functions such as ``join``, ``vstack``, ``hstack``, etc now
3314  always return a table with ``masked=False``, though the individual columns
3315  may be masked as necessary. [#8957]
3316
3317- Changed implementation of ``Table.add_column()`` and ``Table.add_columns()``
3318  methods.  Now it is possible add any object(s) which can be converted or
3319  broadcasted to a valid column for the table.  ``Table.__setitem__`` now
3320  just calls ``add_column``. [#8933]
3321
3322- Changed default table configuration setting ``replace_warnings`` from
3323  ``['slice']`` to ``[]``.  This removes the default warning when replacing
3324  a table column that is a slice of another column. [#9144]
3325
3326- Removed the non-public method
3327  ``astropy.table.np_utils.recarray_fromrecords``. [#9165]
3328
3329astropy.tests
3330^^^^^^^^^^^^^
3331
3332- In addition to ``DeprecationWarning``, now ``FutureWarning`` and
3333  ``ImportWarning`` would also be turned into exceptions. [#8506]
3334
3335- ``warnings_to_ignore_by_pyver`` option in
3336  ``enable_deprecations_as_exceptions()`` has changed. Please refer to API
3337  documentation. [#8506]
3338
3339- Default settings for ``warnings_to_ignore_by_pyver`` are updated to remove
3340  very old warnings that are no longer relevant and to add a new warning
3341  caused by ``pytest-doctestplus``. [#8506]
3342
3343astropy.time
3344^^^^^^^^^^^^
3345
3346- ``Time.get_ut1_utc`` now uses the auto-updated ``IERS_Auto`` by default,
3347  instead of the bundled ``IERS_B`` file. [#9226]
3348
3349- Time formats that do not use ``val2`` now raise ValueError instead of
3350  silently ignoring a provided value. [#9373]
3351
3352- Custom time formats can now accept floating-point types with extended
3353  precision. Existing time formats raise exceptions rather than discarding
3354  extended precision through conversion to ordinary floating-point. [#9368]
3355
3356- Time formats (implemented in subclasses of ``TimeFormat``) now have
3357  their input and output routines more thoroughly validated, making it more
3358  difficult to create damaged ``Time`` objects. [#9375]
3359
3360- The ``TimeDelta.to_value()`` method now can also take the ``format`` name
3361  as its argument, in which case the value will be calculated using the
3362  ``TimeFormat`` machinery. For this case, one can also pass a ``subfmt``
3363  argument to retrieve the value in another form than ``float``. [#9361]
3364
3365astropy.timeseries
3366^^^^^^^^^^^^^^^^^^
3367
3368- Keyword ``midpoint_epoch`` is renamed to ``epoch_time``. [#9455]
3369
3370astropy.uncertainty
3371^^^^^^^^^^^^^^^^^^^
3372
3373- ``Distribution`` was rewritten such that it deals better with subclasses.
3374  As a result, Quantity distributions now behave correctly with ``to`` methods
3375  yielding new distributions of the kind expected for the starting distribution,
3376  and ``to_value`` yielding ``NdarrayDistribution`` instances. [#9442]
3377
3378astropy.units
3379^^^^^^^^^^^^^
3380
3381- For consistency with ``ndarray``, scalar ``Quantity.value`` will now return
3382  a numpy scalar rather than a python one.  This should help keep track of
3383  precision better, but may lead to unexpected results for the rare cases
3384  where numpy scalars behave differently than python ones (e.g., taking the
3385  square root of a negative number). [#8876]
3386
3387- Removed the ``magnitude_zero_points`` module, which was deprecated in
3388  favour of ``astropy.units.photometric`` since 3.1. [#9353]
3389
3390- ``EquivalentUnitsList`` now has a ``_repr_html_`` method to output a HTML
3391  table on a call to ``find_equivalent_units`` in Jupyter notebooks. [#9495]
3392
3393astropy.utils
3394^^^^^^^^^^^^^
3395
3396- ``download_file`` and related functions now accept a list of fallback
3397  sources, and they are able to update the cache at the user's request. [#9182]
3398
3399- Allow ``astropy.utils.console.ProgressBarOrSpinner.map`` and
3400  ``.map_unordered`` to take an argument ``multiprocessing_start_method`` to
3401  control how subprocesses are started; the different methods (``fork``,
3402  ``spawn``, and ``forkserver``) have different implications in terms of
3403  security, efficiency, and behavioural anomalies. The option is useful in
3404  particular for cross-platform testing because Windows supports only ``spawn``
3405  while Linux defaults to ``fork``. [#9182]
3406
3407- All operations that act on the astropy download cache now take an argument
3408  ``pkgname`` that allows one to specify which package's cache to use.
3409  [#8237, #9182]
3410
3411- Removed deprecated ``funcsigs`` and ``futures`` from
3412  ``astropy.utils.compat``. [#8909]
3413
3414- Removed the deprecated ``astropy.utils.compat.numpy`` module. [#8910]
3415
3416- Deprecated ``InheritDocstrings`` as it is natively supported by
3417  Sphinx 1.7 or higher. [#8881]
3418
3419- Deprecated ``astropy.utils.timer`` module, which has been moved to
3420  ``astroquery.utils.timer`` and will be part of ``astroquery`` 0.4.0. [#9038]
3421
3422- Deprecated ``astropy.utils.misc.set_locale`` function, as it is meant for
3423  internal use only. [#9471]
3424
3425- The implementation of ``data_info.DataInfo`` has changed (for a considerable
3426  performance boost). Generally, this should not affect simple subclasses, but
3427  because the class now uses ``__slots__`` any attributes on the class have to
3428  be explicitly given a slot. [#8998]
3429
3430- ``IERS`` tables now use ``nan`` to mark missing values
3431  (rather than ``1e20``). [#9226]
3432
3433astropy.visualization
3434^^^^^^^^^^^^^^^^^^^^^
3435
3436- The default ``clip`` value is now ``False`` in ``ImageNormalize``. [#9478]
3437
3438- The default ``clip`` value is now ``False`` in ``simple_norm``.
3439  [#9698]
3440
3441- Infinite values are now excluded when calculating limits in
3442  ``ManualInterval`` and ``MinMaxInterval``.  They were already excluded in
3443  all other interval classes. [#9480]
3444
3445
3446Bug Fixes
3447---------
3448
3449astropy.convolution
3450^^^^^^^^^^^^^^^^^^^
3451
3452- Fixed ``nan_treatment='interpolate'`` option to ``convolve_fft`` to properly
3453  take into account ``fill_value``. [#8122]
3454
3455astropy.coordinates
3456^^^^^^^^^^^^^^^^^^^
3457
3458- The ``QuantityAttribute`` class now supports a None default value if a unit
3459  is specified. [#9345]
3460
3461- When ``Representation`` classes with the same name are defined, this no
3462  longer leads to a ``ValueError``, but instead to a warning and the removal
3463  of both from the name registry (i.e., one either has to use the class itself
3464  to set, e.g., ``representation_type``, or refer to the class by its fully
3465  qualified name). [#8561]
3466
3467astropy.io.fits
3468^^^^^^^^^^^^^^^
3469
3470- Implemented skip (after warning) of header cards with reserved
3471  keywords in ``table_to_hdu``. [#9390]
3472
3473- Add ``AstropyDeprecationWarning`` to ``read_table_fits`` when ``hdu=`` is
3474  selected, but does not match single present table HDU. [#9512]
3475
3476astropy.io.votable
3477^^^^^^^^^^^^^^^^^^
3478
3479- Address issue #8995 by ignoring BINARY2 null mask bits for string values
3480  on parsing a VOTable.  In this way, the reader should never create masked
3481  values for string types. [#9057]
3482
3483- Corrected a spurious warning issued for the ``value`` attribute of the
3484  ``<OPTION>`` element in VOTable, as well as a test that erroneously
3485  treated the warning as acceptable.  [#9470]
3486
3487astropy.nddata
3488^^^^^^^^^^^^^^
3489
3490- ``Cutout2D`` will now get the WCS from its first argument if that argument
3491  has with WCS property. [#9492]
3492
3493- ``overlap_slices`` will now raise a ``ValueError`` if the input
3494  position contains any non-finite values (e.g. NaN or inf). [#9648]
3495
3496astropy.stats
3497^^^^^^^^^^^^^
3498
3499- Fixed a bug where ``bayesian_blocks`` returned a single edge. [#8560]
3500
3501- Fixed input data type validation for ``bayesian_blocks`` to work int
3502  arrays. [#9513]
3503
3504astropy.table
3505^^^^^^^^^^^^^
3506
3507- Fix bug where adding a column consisting of a list of masked arrays was
3508  dropping the masks. [#9048]
3509
3510- ``Quantity`` columns with custom units can now round-trip via FITS tables,
3511  as long as the custom unit is enabled during reading (otherwise, the unit
3512  will become an ``UnrecognizedUnit``). [#9015]
3513
3514- Fix bug where string values could be truncated when inserting into a
3515  ``Column`` or ``MaskedColumn``, or when adding or inserting a row containing
3516  string values. [#9559]
3517
3518astropy.time
3519^^^^^^^^^^^^
3520
3521- Fix bug when ``Time`` object is created with only masked elements. [#9624]
3522
3523- Fix inaccuracy when converting between TimeDelta and datetime.timedelta.
3524  [#9679]
3525
3526astropy.units
3527^^^^^^^^^^^^^
3528
3529- Ensure that output from test functions of and comparisons between quantities
3530  can be stored into pre-allocated output arrays (using ``out=array``) [#9273]
3531
3532astropy.utils
3533^^^^^^^^^^^^^
3534
3535- For the default ``IERS_Auto`` table, which combines IERS A and B values, the
3536  IERS nutation parameters "dX_2000A" and "dY_2000A" are now also taken from
3537  the actual IERS B file rather than from the B values stored in the IERS A
3538  file.  Any differences should be negligible for any practical application,
3539  but this may help exactly reproducing results. [#9237]
3540
3541astropy.visualization
3542^^^^^^^^^^^^^^^^^^^^^
3543
3544- Calling ``WCSAxes.set_axis_off()`` now correctly turns off drawing the Axes.
3545  [#9411]
3546
3547- Fix incorrect transformation behavior in ``WCSAxes.plot_coord`` and correctly
3548  handle when input coordinates are not already in spherical representations.
3549  [#8927]
3550
3551- Fixed ``ImageNormalize`` so that when it is initialized without
3552  ``data`` it will still use the input ``interval`` class. [#9698]
3553
3554- Fixed ``ImageNormalize`` to handle input data with non-finite
3555  values. [#9698]
3556
3557astropy.wcs
3558^^^^^^^^^^^
3559
3560- Fix incorrect value returned by
3561  ``wcsapi.HighLevelWCSWrapper.axis_correlation_matrix``. [#9554]
3562
3563- Fix NaN-masking of world coordinates when some but not all of the coordinates
3564  were flagged as invalid by WCSLIB. This occurred for example with WCS with >2
3565  dimensions where two of the dimensions were celestial coordinates and pixel
3566  coordinates outside of the 'sky' were converted to world coordinates -
3567  previously all world coordinates were masked even if uncorrelated with the
3568  celestial axes, but this is no longer the case. [#9688]
3569
3570- The default WCS to celestial frame mapping for world coordinate systems that
3571  specify ``TLON`` and ``TLAT`` coordinates will now return an ITRS frame with
3572  the representation class set to ``SphericalRepresentation``. This fixes a bug
3573  that caused ``WCS.pixel_to_world`` to raise an error for such world
3574  coordinate systems. [#9609]
3575
3576- ``FITSWCSAPIMixin`` now returns tuples not lists from ``pixel_to_world`` and
3577  ``world_to_pixel``. [#9678]
3578
3579
3580Other Changes and Additions
3581---------------------------
3582
3583- Versions of Python <3.6 are no longer supported. [#8955]
3584
3585- Matplotlib 2.1 and later is now required. [#8787]
3586
3587- Versions of Numpy <1.16 are no longer supported. [#9292]
3588
3589- Updated the bundled CFITSIO library to 3.470. See
3590  ``cextern/cfitsio/docs/changes.txt`` for additional information. [#9233]
3591
3592- The bundled ERFA was updated to version 1.7.0. This is based on
3593  SOFA 20190722. This includes a fix to avoid precision loss for negative
3594  JDs, and also includes additional routines to allow updates to the
3595  leap-second table. [#9323, #9734]
3596
3597- The default server for the IERS data files has been updated to reflect
3598  long-term downtime of the canonical USNO server. [#9487, #9508]
3599
3600
3601
36023.2.3 (2019-10-27)
3603==================
3604
3605Other Changes and Additions
3606---------------------------
3607
3608- Updated IERS A URLs due to USNO prolonged maintenance. [#9443]
3609
3610
3611
36123.2.2 (2019-10-07)
3613==================
3614
3615Bug fixes
3616---------
3617
3618astropy.convolution
3619^^^^^^^^^^^^^^^^^^^
3620
3621- Fixed a bug in ``discretize_oversample_1D/2D()`` from
3622  ``astropy.convolution.utils``, which might occasionally introduce unexpected
3623  oversampling grid dimensions due to a numerical precision issue. [#9293]
3624
3625- Fixed a bug [#9168] where having a kernel defined using unitless astropy
3626  quantity objects would result in a crash [#9300]
3627
3628astropy.coordinates
3629^^^^^^^^^^^^^^^^^^^
3630
3631- Fix concatenation of representations for cases where the units were different.
3632  [#8877]
3633
3634- Check for NaN values in catalog and match coordinates before building and
3635  querying the ``KDTree`` for coordinate matching. [#9007]
3636
3637- Fix sky coordinate matching when a dimensionless distance is provided. [#9008]
3638
3639- Raise a faster and more meaningful error message when differential data units
3640  are not compatible with a containing representation's units. [#9064]
3641
3642- Changed the timescale in ICRS to CIRS from 'tdb' to 'tt' conversion and
3643  vice-versa, as the erfa function that gets called in the process, pnm06a
3644  accepts time in TT. [#9079]
3645
3646astropy.io.ascii
3647^^^^^^^^^^^^^^^^
3648
3649- Fixed the fast reader when used in parallel and with the multiprocessing
3650  'spawn' method (which is the default on MacOS X with Python 3.8 and later),
3651  and enable parallel fast reader on Windows. [#8853]
3652
3653astropy.io.fits
3654^^^^^^^^^^^^^^^
3655
3656- Fixes bug where an invalid TRPOS<n> keyword was being generated for FITS
3657  time column when no location was available. [#8784]
3658
3659- Fixed a wrong exception when converting a Table with a unit that is not FITS
3660  compliant and not convertible to a string using ``format='fits'``. [#8906]
3661
3662- Fixed an issue with A3DTABLE extension that could not be read. [#9012]
3663
3664- Fixed the update of the header when creating GroupsHDU from data. [#9216]
3665
3666astropy.nddata
3667^^^^^^^^^^^^^^
3668
3669- Fix to ``add_array``, which now accepts ``array_small`` having dimensions
3670  equal to ``array_large``, instead of only allowing smaller sizes of
3671  arrays. [#9118]
3672
3673astropy.stats
3674^^^^^^^^^^^^^
3675
3676- Fixed ``median_absolute_deviation`` for the case where ``ignore_nan=True``
3677  and an input masked array contained both NaNs and infs. [#9307]
3678
3679astropy.table
3680^^^^^^^^^^^^^
3681
3682- Comparisons between ``Column`` instances and ``Quantity`` will now
3683  correctly take into account the unit (as was already the case for
3684  regular operations such as addition). [#8904]
3685
3686astropy.time
3687^^^^^^^^^^^^
3688
3689- Allow ``Time`` to be initialized with an empty value for all formats. [#8854]
3690
3691- Fixed a troubling bug in which ``Time`` could loose precision, with deviations
3692  of 300 ns. [#9328]
3693
3694astropy.timeseries
3695^^^^^^^^^^^^^^^^^^
3696
3697- Fixed handling of ``Quantity`` input data for all methods of
3698  ``LombScarge.false_alarm_probabilty``. [#9246]
3699
3700astropy.units
3701^^^^^^^^^^^^^
3702
3703- Allow conversion of ``Column`` with logarithmic units to a suitable
3704  ``Quantity`` subclass if ``subok=True``. [#9188]
3705
3706- Ensured that we simplify powers to smaller denominators if that is
3707  consistent within rounding precision. [#9267]
3708
3709- Ensured that the powers shown in a unit's repr are always correct,
3710  not oversimplified. [#9267]
3711
3712astropy.utils
3713^^^^^^^^^^^^^
3714
3715- Fixed ``find_api_page`` access by using custom request headers and HTTPS
3716  when version is specified. [#9032]
3717
3718- Make ``download_file`` (and by extension ``get_readable_fileobj`` and others)
3719  check the size of downloaded files against the size claimed by the server.
3720  [#9302]
3721
3722- Fix ``find_current_module`` so that it works properly if astropy is being used
3723  inside a bundle such as that produced by PyInstaller. [#8845]
3724
3725- Fix path to renamed classes, which previously included duplicate path/module
3726  information under certain circumstances. [#8845]
3727
3728astropy.visualization
3729^^^^^^^^^^^^^^^^^^^^^
3730
3731- Silence numpy runtime warnings in ``WCSAxes`` when drawing grids. [#8882]
3732
3733astropy.wcs
3734^^^^^^^^^^^
3735
3736- Fixed equality test between ``cunit`` where the first element was equal but
3737  the following elements differed. [#9154]
3738
3739- Fixed a crash while loading a WCS from headers containing duplicate SIP
3740  keywords. [#8893]
3741
3742- Fixed a possible buffer overflow when using too large negative indices for
3743  ``cunit`` or ``ctype`` [#9151]
3744
3745- Fixed reference counting in ``WCSBase.__init__`` [#9166]
3746
3747- Fix ``SlicedLowLevelWCS`` ``world_to_pixel_values`` and
3748  ``pixel_to_world_values`` when inputs need broadcasting to the same shape.
3749  (i.e. when one input is sliced out) [#9250]
3750
3751- Fixed a bug that caused ``WCS.array_shape``, ``WCS.pixel_shape`` and
3752  ``WCS.pixel_bounds`` to be incorrect after using ``WCS.sub``. [#9095]
3753
3754
3755Other Changes and Additions
3756---------------------------
3757
3758- Fixed a bug that caused files outside of the astropy module directory to be
3759  included as package data, resulting in some cases in errors when doing
3760  repeated builds. [#9039]
3761
3762
3763
37643.2.1 (2019-06-14)
3765==================
3766
3767Bug fixes
3768---------
3769
3770astropy.io.fits
3771^^^^^^^^^^^^^^^
3772
3773- Avoid reporting a warning with ``BinTableHDU.from_columns`` with keywords that
3774  are not provided by the user.  [#8838]
3775
3776- Fix ``Header.fromfile`` to work on FITS files. [#8713]
3777
3778- Fix reading of empty ``BinTableHDU`` when stored in a gzip-compressed file.
3779  [#8848]
3780
3781astropy.table
3782^^^^^^^^^^^^^
3783
3784- Fix a problem where mask was dropped when creating a ``MaskedColumn``
3785  from a list of ``MaskedArray`` objects. [#8826]
3786
3787astropy.wcs
3788^^^^^^^^^^^
3789
3790- Added ``None`` to be displayed as a ``world_axis_physical_types`` in
3791  the ``WCS`` repr, as ``None`` values are now supported in ``APE14``. [#8811]
3792
3793
3794
37953.2 (2019-06-10)
3796================
3797
3798New Features
3799------------
3800
3801astropy.constants
3802^^^^^^^^^^^^^^^^^
3803
3804- Add CODATA 2018 constants but not make them default because the
3805  redefinition of SI units that will follow has not been implemented
3806  yet. [#8595]
3807
3808astropy.coordinates
3809^^^^^^^^^^^^^^^^^^^
3810
3811- New ``BarycentricMeanEcliptic``, ``HeliocentricTrueEcliptic`` and
3812  ``GeocentricTrueEcliptic`` frames.
3813  The ecliptic frames are no longer considered experimental. [#8394]
3814
3815- The default time scale for epochs like 'J2000' or 'B1975' is now "tt",
3816  which is the correct one for 'J2000' and avoids leap-second warnings
3817  for epochs in the far future or past. [#8600]
3818
3819astropy.extern
3820^^^^^^^^^^^^^^
3821
3822- Bundled ``six`` now emits ``AstropyDeprecationWarning``. It will be removed
3823  in 4.0. [#8323]
3824
3825astropy.io.ascii
3826^^^^^^^^^^^^^^^^
3827
3828- IPAC tables now output data types of ``float`` instead of ``double``, or
3829  ``int`` instead of ``long``, based on the column ``dtype.itemsize``. [#8216]
3830
3831- Update handling of MaskedColumn columns when using the 'data_mask' serialization
3832  method.  This can make writing ECSV significantly faster if the data do not
3833  actually have any masked values. [#8447]
3834
3835- Fixed a bug that caused newlines to be incorrect when writing out ASCII tables
3836  on Windows (they were ``\r\r\n`` instead of ``\r\n``). [#8659]
3837
3838astropy.io.misc
3839^^^^^^^^^^^^^^^
3840
3841- Implement serialization of ``TimeDelta`` in ASDF. [#8285]
3842
3843- Implement serialization of ``EarthLocation`` in ASDF. [#8286]
3844
3845- Implement serialization of ``SkyCoord`` in ASDF. [#8284]
3846
3847- Support serialization of Astropy tables with mixin columns in ASDF. [#8337]
3848
3849- No warnings when reading HDF5 files with only one table and no ``path=``
3850  argument [#8483]
3851
3852- The HDF5 writer will now create a default table instead of raising an
3853  exception when ``path=`` is not specified and when writing to empty/new HDF5
3854  files. [#8553]
3855
3856astropy.io.fits
3857^^^^^^^^^^^^^^^
3858
3859- Optimize parsing of cards within the ``Header`` class. [#8428]
3860
3861- Optimize the parsing of headers to get the structural keywords that are
3862  needed to find extensions. Thanks to this, getting a random HDU from a file
3863  with many extensions is much faster than before, in particular when the
3864  extension headers contain many keywords. [#8502]
3865
3866-  Change behavior of FITS undefined value in ``Header`` such that ``None``
3867   is used in Python to represent FITS undefined when using dict interface.
3868   ``Undefined`` can also be assigned and is translated to ``None``.
3869   Previously setting a header card value to ``None`` resulted in an
3870   empty string field rather than a FITS undefined value. [#8572]
3871
3872- Allow ``Header.fromstring`` and ``Card.fromstring`` to accept ``bytes``.
3873  [#8707]
3874
3875astropy.io.registry
3876^^^^^^^^^^^^^^^^^^^
3877
3878- Implement ``Table`` reader and writer for ``ASDF``. [#8261]
3879
3880- Implement ``Table`` reader and writer methods to wrap ``pandas`` I/O methods
3881  for CSV, Fixed width format, HTML, and JSON. [#8381]
3882
3883- Add ``help()`` and ``list_formats()`` methods to unified I/O ``read`` and
3884  ``write`` methods. For example ``Table.read.help()`` gives help on available
3885  ``Table`` read formats and ``Table.read.help('fits')`` gives detailed
3886  help on the arguments for reading FITS table file. [#8255]
3887
3888astropy.table
3889^^^^^^^^^^^^^
3890
3891- Initializing a table with ``Table(rows=...)``, if the first item is an ``OrderedDict``,
3892  now uses the column order of the first row. [#8587]
3893
3894- Added new pprint_all() and pformat_all() methods to Table. These two new
3895  methods print the entire table by default. [#8577]
3896
3897- Removed restriction of initializing a Table from a dict with copy=False. [#8541]
3898
3899- Improved speed of table row access by a factor of about 2-3.  Improved speed
3900  of Table len() by a factor of around 3-10 (depending on the number of columns).
3901  [#8494]
3902
3903- Improved the Table - pandas ``DataFrame`` interface (``to_pandas()`` and
3904  ``from_pandas()``).  Mixin columns like ``Time`` and ``Quantity`` can now be
3905  converted to pandas by flattening the columns as necessary to plain
3906  columns.  ``Time`` and ``TimeDelta`` columns get converted to
3907  corresponding pandas date or time delta types.  The ``DataFrame``
3908  index is now handled in the conversion methods. [#8247]
3909
3910- Added ``rename_columns`` method to rename multiple columns in one call.
3911  [#5159, #8070]
3912
3913- Improved Table performance by reducing unnecessary calls to copy and deepcopy,
3914  especially as related to the table and column ``meta`` attributes.  Changed the
3915  behavior when slicing a table (either in rows or with a list of column names)
3916  so now the sliced output gets a light (key-only) copy of ``meta`` instead of a
3917  deepcopy.  Changed the ``Table.meta`` class-level descriptor so that assigning
3918  directly to ``meta``, e.g. ``tbl.meta = new_meta`` no longer does a deepcopy
3919  and instead just directly assigns the ``new_meta`` object reference.  Changed
3920  Table initialization so that input ``meta`` is copied only if ``copy=True``.
3921  [#8404]
3922
3923- Improved Table slicing performance with internal implementation changes
3924  related to column attribute access and certain input validation. [#8493]
3925
3926- Added ``reverse`` argument to the ``sort`` and ``argsort`` methods to allow
3927  sorting in reverse order. [#8528]
3928
3929- Improved ``Table.sort()`` performance by removing ``self[keys]`` from code
3930  which is creating deep copies of ``meta`` attribute and adding a new keyword
3931  ``names`` in ``get_index()`` to get index by using a list or tuple containing
3932  names of columns. [#8570]
3933
3934- Expose ``represent_mixins_as_columns`` as a public function in the
3935  ``astropy.table`` subpackage.  This previously-private function in the
3936  ``table.serialize`` module is used to represent mixin columns in a Table as
3937  one or more plain Column objects. [#7729]
3938
3939astropy.timeseries
3940^^^^^^^^^^^^^^^^^^
3941
3942- Added a new astropy.timeseries sub-package to represent and manipulate
3943  sampled and binned time series. [#8540]
3944
3945- The ``BoxLeastSquares`` and ``LombScargle`` classes have been moved to
3946  ``astropy.timeseries.periodograms`` from ``astropy.stats``. [#8591]
3947
3948- Added the ability to provide absolute ``Time`` objects to the
3949  ``BoxLeastSquares`` and ``LombScargle`` periodogram classes. [#8599]
3950
3951- Added model inspection methods (``model_parameters()``, ``design_matrix()``,
3952  and ``offset()``) to ``astropy.timeseries.LombScargle`` class [#8397].
3953
3954astropy.units
3955^^^^^^^^^^^^^
3956
3957- ``Quantity`` overrides of ``ndarray`` methods such as ``sum``, ``min``,
3958  ``max``, which are implemented via reductions, have been removed since they
3959  are dealt with in ``Quantity.__array_ufunc__``. This should not affect
3960  subclasses, but they may consider doing similarly. [#8316]  Note that this
3961  does not include methods that use more complicated python code such as
3962  ``mean``, ``std`` and ``var``. [#8370]
3963
3964astropy.visualization
3965^^^^^^^^^^^^^^^^^^^^^
3966- Added ``CompositeStretch``, which inherits from ``CompositeTransform`` and
3967  also ``BaseStretch`` so that it can be used with ``ImageNormalize``. [#8564]
3968
3969- Added a ``log_a`` argument to the ``simple_norm`` method. Similar to the
3970  exposing of the ``asinh_a`` argument for ``AsinhStretch``, the new
3971  ``log_a`` argument is now exposed for ``LogStretch``. [#8436]
3972
3973astropy.wcs
3974^^^^^^^^^^^
3975
3976- WCSLIB was updated to v 6.2.
3977  This adds support for time-related WCS keywords (WCS Paper VII).
3978  FITS headers containing ``Time`` axis are parsed and the axis is included in
3979  the WCS object. [#8592]
3980
3981- The ``OBSGEO`` attribute as expanded to 6 members - ``XYZLBH``. [#8592]
3982
3983- Added a new class ``SlicedLowLevelWCS`` in ``astropy.wcs.wcsapi`` that can be
3984  used to slice any WCS that conforms to the ``BaseLowLevelWCS`` API. [#8546]
3985
3986- Updated implementation of ``WCS.__getitem__`` and ``WCS.slice`` to now return
3987  a ``SlicedLowLevelWCS`` rather than raising an error when reducing the
3988  dimensionality of the WCS. [#8546]
3989
3990
3991API Changes
3992-----------
3993
3994astropy.coordinates
3995^^^^^^^^^^^^^^^^^^^
3996
3997- ``QuantityAttribute`` no longer has a default value for ``default``.  The
3998  previous value of None was misleading as it always was an error. [#8450]
3999
4000- The default J2000 has been changed to use be January 1, 2000 12:00 TT instead
4001  of UTC.  This is more in line with convention. [#8594]
4002
4003astropy.io.ascii
4004^^^^^^^^^^^^^^^^
4005
4006- IPAC tables now output data types of ``float`` instead of ``double``, or
4007  ``int`` instead of ``long``, based on the column ``dtype.itemsize``. [#8216]
4008
4009astropy.io.misc
4010^^^^^^^^^^^^^^^
4011
4012- Unit equivalencies can now be serialized to ASDF. [#8252]
4013
4014astropy.modeling
4015^^^^^^^^^^^^^^^^
4016
4017- Composition of model classes is deprecated and will be removed in 4.0.
4018  Composition of model instances remain unaffected. [#8234, #8408]
4019
4020astropy.stats
4021^^^^^^^^^^^^^
4022
4023- The ``BoxLeastSquares`` and ``LombScargle`` classes have been moved to the
4024  ``astropy.timeseries.periodograms`` module and will now emit a deprecation
4025  warning when imported from ``astropy.stats``. [#8591]
4026
4027astropy.table
4028^^^^^^^^^^^^^
4029
4030- Converting an empty table to an array using ``as_array`` method now returns
4031  an empty array instead of ``None``. [#8647]
4032
4033- Changed the behavior when slicing a table (either in rows or with a list of column
4034  names) so now the sliced output gets a light (key-only) copy of ``meta`` instead of
4035  a deepcopy.  Changed the ``Table.meta`` class-level descriptor so that assigning
4036  directly to ``meta``, e.g. ``tbl.meta = new_meta`` no longer does a deepcopy
4037  and instead just directly assigns the ``new_meta`` object reference. Changed
4038  Table initialization so that input ``meta`` is copied only if ``copy=True``.
4039  [#8404]
4040
4041- Added a keyword ``names`` in ``Table.as_array()``.  If provided this specifies
4042  a list of column names to include for the returned structured array. [#8532]
4043
4044astropy.tests
4045^^^^^^^^^^^^^
4046
4047- Removed ``pytest_plugins`` as they are completely broken for ``pytest>=4``.
4048  [#7786]
4049
4050- Removed the ``astropy.tests.plugins.config`` plugin and removed the
4051  ``--astropy-config-dir`` and ``--astropy-cache-dir`` options from
4052  testing. Please use caching functionality that is natively in ``pytest``.
4053  [#7787, #8489]
4054
4055astropy.time
4056^^^^^^^^^^^^
4057
4058- The default time scale for epochs like 'J2000' or 'B1975' is now "tt",
4059  which is the correct one for 'J2000' and avoids leap-second warnings
4060  for epochs in the far future or past. [#8600]
4061
4062astropy.units
4063^^^^^^^^^^^^^
4064
4065- Unit equivalencies can now be introspected. [#8252]
4066
4067astropy.wcs
4068^^^^^^^^^^^
4069
4070- The ``world_to_pixel``, ``world_to_array_index*``, ``pixel_to_world*`` and
4071  ``array_index_to_world*`` methods now all consistently return scalars, arrays,
4072  or objects not wrapped in a one-element tuple/list when only one scalar,
4073  array, or object (as was previously already the case for ``WCS.pixel_to_world``
4074  and ``WCS.array_index_to_world``). [#8663]
4075
4076astropy.utils
4077^^^^^^^^^^^^^
4078
4079- It is now possible to control the number of cores used by ``ProgressBar.map``
4080  by passing a positive integer as the ``multiprocess`` keyword argument. Use
4081  ``True`` to use all cores. [#8083]
4082
4083
4084Bug Fixes
4085---------
4086
4087astropy.coordinates
4088^^^^^^^^^^^^^^^^^^^
4089
4090- ``BarycentricTrueEcliptic``, ``HeliocentricTrueEcliptic`` and
4091  ``GeocentricTrueEcliptic`` now use the correct transformation
4092  (including nutation), whereas the new ``*MeanEcliptic`` classes
4093  use the nutation-free transformation. [#8394]
4094
4095- Representations with ``float32`` coordinates can now be transformed,
4096  although the output will always be ``float64``. [#8759]
4097
4098- Fixed bug that prevented using differentials with HCRS<->ICRS
4099  transformations. [#8794]
4100
4101astropy.io.ascii
4102^^^^^^^^^^^^^^^^
4103
4104- Fixed a bug where an exception was raised when writing a table which includes
4105  mixin columns (e.g. a Quantity column) and the output format was specified
4106  using the ``formats`` keyword. [#8681]
4107
4108astropy.io.misc
4109^^^^^^^^^^^^^^^
4110
4111- Fixed bug in ASDF tag that inadvertently introduced dependency on ``pytest``.
4112  [#8456]
4113
4114astropy.modeling
4115^^^^^^^^^^^^^^^^
4116
4117- Fixed slowness for certain compound models consisting of large numbers
4118  of multi-input models [#8338, #8349]
4119
4120- Fixed bugs in fitting of compound models with units. [#8369]
4121
4122astropy.nddata
4123^^^^^^^^^^^^^^
4124
4125- Fixed bug in reading multi-extension FITS files written by earlier versions
4126  of ``CCDData``. [#8534]
4127
4128- Fixed two errors in the way ``CCDData`` handles FITS files with WCS in the
4129  header. Some of the WCS keywords that should have been removed from the
4130  header were not, potentially leading to FITS files with inconsistent
4131  WCS. [#8602]
4132
4133astropy.table
4134^^^^^^^^^^^^^
4135
4136- Fixed a bug when initializing from an empty list: ``Table([])`` no longer
4137  results in a crash. [#8647]
4138
4139- Fixed a bug when initializing from an existing ``Table``.  In this case the
4140  input ``meta`` argument was being ignored.  Now the input ``meta``, if
4141  supplied, will be used as the ``meta`` for the new ``Table``. [#8404]
4142
4143- Fix the conversion of bytes values to Python ``str`` with ``Table.tolist``.
4144  [#8739]
4145
4146astropy.time
4147^^^^^^^^^^^^
4148
4149- Fixed a number of issues to ensure a consistent output type resulting from
4150  multiplication or division involving a ``TimeDelta`` instance. The output is
4151  now always a ``TimeDelta`` if the result is a time unit (like u.s or u.d),
4152  otherwise it will be a ``Quantity``. [#8356]
4153
4154- Multiplication between two ``TimeDelta`` instances is now possible, resulting
4155  in a ``Quantity`` with units of time squared (division already correctly
4156  resulted in a dimensionless ``Quantity``). [#8356]
4157
4158- Like for comparisons, addition, and subtraction of ``Time`` instances with
4159  with non-time instances, multiplication and division of ``TimeDelta``
4160  instances with incompatible other instances no longer immediately raise an
4161  ``UnitsError`` or ``TypeError`` (depending on the other instance), but
4162  rather go through the regular Python mechanism of ``TimeDelta`` returning
4163  ``NotImplemented`` (which will lead to a regular ``TypeError`` unless the
4164  other instance can handle ``TimeDelta``). [#8356]
4165
4166- Corrected small rounding errors that could cause the ``jd2`` values in
4167  ``Time`` to fall outside the range of -0.5 to 0.5. [#8763]
4168
4169astropy.units
4170^^^^^^^^^^^^^
4171
4172- Added a ``Quantity.to_string`` method to add flexibility to the string formatting
4173  of quantities. It produces unadorned or LaTeX strings, and accepts two different
4174  sets of delimiters in the latter case: ``inline`` and ``display``. [#8313]
4175
4176- Ensure classes that mimic quantities by having a ``unit`` attribute and/or
4177  ``to`` and ``to_value`` methods can be properly used to initialize ``Quantity``
4178  or set ``Quantity`` instance items. [#8535]
4179
4180- Add support for ``<<`` to create logarithmic units. [#8290]
4181
4182- Add support for the ``clip`` ufunc, which in numpy 1.17 is used to implement
4183  ``np.clip``.  As part of that, remove the ``Quantity.clip`` method under
4184  numpy 1.17. [#8747]
4185
4186- Fix parsing of numerical powers in FITS-compatible units. [#8251]
4187
4188astropy.wcs
4189^^^^^^^^^^^
4190
4191- Added a ``PyUnitListProxy_richcmp`` method in ``UnitListProxy`` class to enable
4192  ``WCS.wcs.cunit`` equality testing. It helps to check whether the two instances of
4193  ``WCS.wcs.cunit`` are equal or not by comparing the data members of
4194  ``UnitListProxy`` class [#8480]
4195
4196- Fixed ``SlicedLowLevelWCS`` when ``array_shape`` is ``None``. [#8649]
4197
4198- Do not attempt to delete repeated distortion keywords multiple times when
4199  loading distortions with ``_read_distortion_kw`` and
4200  ``_read_det2im_kw``. [#8777]
4201
4202
4203Other Changes and Additions
4204---------------------------
4205
4206- Update bundled expat to 2.2.6. [#8343]
4207
4208- Added instructions for uploading releases to Zenodo. [#8395]
4209
4210- The bug fixes to the behaviour of ``TimeDelta`` for multiplcation and
4211  division, which ensure that the output is now always a ``TimeDelta`` if the
4212  result is a time unit (like u.s or u.d) and otherwise a ``Quantity``, imply
4213  that sometimes the output type will be different than it was before. [#8356]
4214
4215- For types unrecognized by ``TimeDelta``, multiplication and division now
4216  will consistently return a ``TypeError`` if the other instance cannot handle
4217  ``TimeDelta`` (rather than ``UnitsError`` or ``TypeError`` depending on
4218  presumed abilities of the other instance). [#8356]
4219
4220- Multiplication between two ``TimeDelta`` instances will no longer result in
4221  an ``OperandTypeError``, but rather result in a ``Quantity`` with units of
4222  time squared (division already correctly resulted in a dimensionless
4223  ``Quantity``). [#8356]
4224
4225- Made running the tests insensitive to local user configuration when running
4226  the tests in parallel mode or directly with pytest. [#8727]
4227
4228- Added a narrative style guide to the documentation for contributor reference.
4229  [#8588]
4230
4231- Ensure we call numpy equality functions in a way that reduces the number
4232  of ``DeprecationWarning``. [#8755]
4233
4234Installation
4235^^^^^^^^^^^^
4236
4237- We now require setuptools 30.3.0 or later to install the core astropy
4238  package. [#8240]
4239
4240- We now define groups of dependencies that can be installed with pip, e.g.
4241  ``pip install astropy[all]`` (to install all optional dependencies). [#8198]
4242
4243
4244
42453.1.2 (2019-02-23)
4246==================
4247
4248Bug fixes
4249---------
4250
4251astropy.coordinates
4252^^^^^^^^^^^^^^^^^^^
4253
4254- Convert the default of ``QuantityAttribute``, thereby catching the error case
4255  case of it being set to None at attribute creation, and giving a more useful
4256  error message in the process. [#8300]
4257
4258astropy.cosmology
4259^^^^^^^^^^^^^^^^^
4260
4261- Fix elliptic analytical solution for comoving distance. Only
4262  relevant for non-flat cosmologies without radiation and ``Om0`` > ``Ode0``.
4263  [#8391]
4264
4265astropy.modeling
4266^^^^^^^^^^^^^^^^
4267
4268- Fixed slowness for certain compound models consisting of large numbers
4269  of multi-input models [#8338, #8349]
4270
4271astropy.visualization.wcsaxes
4272^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4273
4274- Fix a bug that caused an error when passing an array with all values the same
4275  to contour or contourf. [#8321]
4276
4277- Fix a bug that caused contour and contourf to return None instead of the
4278  contour set. [#8321]
4279
4280
42813.1.1 (2018-12-31)
4282==================
4283
4284Bug fixes
4285---------
4286
4287astropy.io.ascii
4288^^^^^^^^^^^^^^^^
4289
4290- Fix error when writing out empty table. [#8279]
4291
4292astropy.io.fits
4293^^^^^^^^^^^^^^^
4294
4295- ``fitsdiff --ignore-hdus`` now prints input filenames in the diff report
4296  instead of ``<HDUList object at 0x1150f9778>``. [#8295]
4297
4298astropy.units
4299^^^^^^^^^^^^^
4300
4301- Ensure correctness of units when raising to a negative power. [#8263]
4302
4303- Fix ``with_H0`` equivalency to use the correct direction of
4304  conversion. [#8292]
4305
4306
4307
43083.1 (2018-12-06)
4309================
4310
4311New Features
4312------------
4313
4314astropy.convolution
4315^^^^^^^^^^^^^^^^^^^
4316
4317- ``convolve`` now accepts any array-like input, not just ``numpy.ndarray`` or
4318  lists. [#7303]
4319
4320- ``convolve`` Now raises AstropyUserWarning if nan_treatment='interpolate' and
4321  preserve_nan=False and NaN values are present post convolution. [#8088]
4322
4323astropy.coordinates
4324^^^^^^^^^^^^^^^^^^^
4325
4326- The ``SkyCoord.from_name`` constructor now has the ability to create
4327  coordinate objects by parsing object catalogue names that have embedded
4328  J-coordinates. [#7830]
4329
4330- The new function ``make_transform_graph_docs`` can be used to create a
4331  docstring graph from a custom ``TransformGraph`` object. [#7135]
4332
4333- ``KDTree`` for catalog matching is now built with sliding midpoint rule
4334  rather than standard.  In code, this means setting ``compact_nodes=False``
4335  and ``balanced_tree=False`` in ``cKDTree``. The sliding midpoint rule is much
4336  more suitable for catalog matching, and results in 1000x speedup in some
4337  cases. [#7324]
4338
4339- Additional information about a site loaded from the Astropy sites registry is
4340  now available in ``EarthLocation.info.meta``. [#7857]
4341
4342- Added a ``concatenate_representations`` function to combine coordinate
4343  representation data and any associated differentials. [#7922]
4344
4345- ``BaseCoordinateFrame`` will now check for a method named
4346  ``_astropy_repr_in_frame`` when constructing the string forms of attributes.
4347  Allowing any class to control how ``BaseCoordinateFrame`` represents it when
4348  it is an attribute of a frame. [#7745]
4349
4350- Some rarely-changed attributes of frame classes are now cached, resulting in
4351  speedups (up to 50% in some cases) when creating new scalar frame or
4352  ``SkyCoord`` objects. [#7949, #5952]
4353
4354- Added a ``directional_offset_by`` method to ``SkyCoord`` that computes a new
4355  coordinate given a coordinate, position angle, and angular separation [#5727]
4356
4357astropy.cosmology
4358^^^^^^^^^^^^^^^^^
4359
4360- The default cosmology has been changed from ``WMAP9`` to ``Planck15``. [#8123]
4361
4362- Distance calculations with ``LambaCDM`` with no radiation (T_CMB0=0)
4363  are now 20x faster by using elliptic integrals for non-flat cases. [#7155]
4364
4365- Distance calculations with ``FlatLambaCDM`` with no radiation (T_CMB0=0)
4366  are now 20x faster by using the hypergeometric function solution
4367  for this special case. [#7087]
4368
4369- Age calculations with ``FlatLambdaCDM`` with no radiation (Tcmb0=0)
4370  are now 1000x faster by using analytic solutions instead of integrating.
4371  [#7117]
4372
4373astropy.io.ascii
4374^^^^^^^^^^^^^^^^
4375
4376- Latex reader now ignores ``\toprule``, ``\midrule``, and ``\bottomrule``
4377  commands. [#7349]
4378
4379- Added the RST (Restructured-text) table format and the fast version of the
4380  RDB reader to the set of formats that are guessed by default. [#5578]
4381
4382- The read trace (used primarily for debugging) now includes guess argument
4383  sets that were skipped entirely e.g. for not supporting user-supplied kwargs.
4384  All guesses thus removed from ``filtered_guess_kwargs`` are now listed as
4385  "Disabled" at the beginning of the trace. [#5578]
4386
4387- Emit a warning when reading an ECSV file without specifying the ``format``
4388  and without PyYAML installed.  Previously this silently fell through to
4389  parsing as a basic format file and the file metadata was lost. [#7580]
4390
4391- Optionally allow writing masked columns to ECSV with the mask explicitly
4392  specified as a separate column instead of marking masked elements with ""
4393  (empty string).  This allows handling the case of a masked string column
4394  with "" data rows.  [#7481]
4395
4396astropy.io.misc
4397^^^^^^^^^^^^^^^
4398
4399- Added support for saving all representation classes and many coordinate
4400  frames to the asdf format. [#7079]
4401
4402- Added support for saving models with units to the asdf format. [#7237]
4403
4404- Added a new ``character_as_bytes`` keyword to the HDF5 Table reading
4405  function to control whether byte string columns in the HDF5 file
4406  are left as bytes or converted to unicode.  The default is to read
4407  as bytes (``character_as_bytes=True``). [#7024, #8017]
4408
4409astropy.io.fits
4410^^^^^^^^^^^^^^^
4411
4412- ``HDUList.pop()`` now accepts string and tuple extension name
4413  specifications. [#7236]
4414
4415- Add an ``ignore_hdus`` keyword to ``FITSDiff`` to allow ignoring HDUs by
4416  NAME when diffing two FITS files [#7538]
4417
4418- Optionally allow writing masked columns to FITS with the mask explicitly
4419  specified as a separate column instead of using the FITS standard of
4420  certain embedded null values (``NaN`` for float, ``TNULL`` for integers).
4421  This can be used to work around limitations in the FITS standard. [#7481]
4422
4423- All time coordinates can now be written to and read from FITS binary tables,
4424  including those with vectorized locations. [#7430]
4425
4426- The ``fitsheader`` command line tool now supports a ``dfits+fitsort`` mode,
4427  and the dotted notation for keywords (e.g. ``ESO.INS.ID``). [#7240]
4428
4429- Fall back to reading arrays using mode='denywrite' if mode='readonly' fails
4430  when using memory-mapping. This solves cases on some platforms when the
4431  available address space was less than the file size (even when using memory
4432  mapping). [#7926]
4433
4434astropy.modeling
4435^^^^^^^^^^^^^^^^
4436
4437- Add a ``Multiply`` model which preserves unit through evaluate, unlike
4438  ``Scale`` which is dimensionless. [#7210]
4439
4440- Add a ``uses_quantity`` property to ``Model`` which allows introspection of if
4441  the ``Model`` can accept ``Quantity`` objects. [#7417]
4442
4443- Add a ``separability_matrix`` function which returns the correlation matrix
4444  of inputs and outputs. [#7803]
4445
4446- Fixed compatibility of ``JointFitter`` with the latest version of Numpy. [#7984]
4447
4448- Add ``prior`` and ``posterior`` constraints to modeling parameters. These are
4449  not used by any current fitters, but are provided to allow user code to
4450  experiment with Bayesian fitters.  [#7558]
4451
4452astropy.nddata
4453^^^^^^^^^^^^^^
4454
4455- ``NDUncertainty`` objects now have a ``quantity`` attribute for simple
4456  conversion to quantities. [#7704]
4457
4458- Add a ``bitmask`` module that provides functions for manipulating bitmasks
4459  and data quality (DQ) arrays. [#7944]
4460
4461astropy.stats
4462^^^^^^^^^^^^^
4463
4464- Add an ``astropy.stats.bls`` module with an implementation of the "box least
4465  squares" periodogram that is commonly used for discovering transiting
4466  exoplanets and eclipsing binaries. [#7391]
4467
4468astropy.table
4469^^^^^^^^^^^^^
4470
4471- Added support for full use of ``Time`` mixin column for join, hstack, and
4472  vstack table operations. [#6888]
4473
4474- Added a new table index engine, ``SCEngine``, based on the Sorted Containers
4475  package. [#7574]
4476
4477- Add a new keyword argument ``serialize_method`` to ``Table.write`` to
4478  control how ``Time`` and ``MaskedColumn`` columns are written. [#7481]
4479
4480- Allow mixin columns to be used in table ``group`` and ``unique``
4481  functions. This applies to both the key columns and the other data
4482  columns. [#7712]
4483
4484- Added support for stacking ``Column``, mixin column (e.g. ``Quantity``,
4485  ``Time``) or column-like objects. [#7674]
4486
4487- Added support for inserting a row into a Table that has ``Time`` or
4488  ``TimeDelta`` column(s). [#7897]
4489
4490astropy.tests
4491^^^^^^^^^^^^^
4492
4493- Added an option ``--readonly`` to the test command to change the
4494  permissions on the temporary installation location to read-only. [#7598]
4495
4496astropy.time
4497^^^^^^^^^^^^
4498
4499- Allow array-valued ``Time`` object to be modified in place. [#6028]
4500
4501- Added support for missing values (masking) to the ``Time`` class. [#6028]
4502
4503- Added supper for a 'local' time scale (for free-running clocks, etc.),
4504  and round-tripping to the corresponding FITS time scale. [#7122]
4505
4506- Added `datetime.timedelta` format class for ``TimeDelta``. [#7441]
4507
4508- Added ``strftime`` and ``strptime`` methods to ``Time`` class.
4509  These methods are similar to those in the Python standard library
4510  `time` package and provide flexible input and output formatting. [#7323]
4511
4512- Added ``datetime64`` format to the ``Time`` class to support working with
4513  ``numpy.datetime64`` dtype arrays. [#7361]
4514
4515- Add fractional second support for ``strftime`` and ``strptime`` methods
4516  of ``Time`` class. [#7705]
4517
4518- Added an ``insert`` method to allow inserting one or more values into a
4519  ``Time`` or ``TimeDelta`` object. [#7897]
4520
4521- Remove timescale from string version of FITS format time string.
4522  The timescale is not part of the FITS standard and should not be included.
4523  This change may cause some compatibility issues for code that relies on
4524  round-tripping a FITS format string with a timescale. Strings generated
4525  from previous versions of this package are still understood but a
4526  DeprecationWarning will be issued. [#7870]
4527
4528astropy.uncertainty
4529^^^^^^^^^^^^^^^^^^^
4530
4531- This sub-package was added as a "preview" (i.e. API unstable), containing
4532  the ``Distribution`` class and associated convenience functions. [#6945]
4533
4534astropy.units
4535^^^^^^^^^^^^^
4536
4537- Add complex numbers support for ``Quantity._repr_latex_``. [#7676]
4538
4539- Add ``thermodynamic_temperature`` equivalency to convert between
4540  Jy/sr and "thermodynamic temperature" for cosmology. [#7054]
4541
4542- Add millibar unit. [#7863]
4543
4544- Add maggy and nanomaggy unit, as well as associated ``zero_point_flux``
4545  equivalency. [#7891]
4546
4547- ``AB`` and ``ST`` are now enabled by default, and have alternate names
4548  ``ABflux`` and ``STflux``. [#7891]
4549
4550- Added ``littleh`` unit and associated ``with_H0`` equivalency. [#7970]
4551
4552astropy.visualization
4553^^^^^^^^^^^^^^^^^^^^^
4554
4555- Added ``imshow_norm`` function, which combines imshow and creation of a
4556  ``ImageNormalize`` object. [#7785]
4557
4558astropy.visualization.wcsaxes
4559^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4560
4561- Add support for setting ``set_separator(None)`` in WCSAxes to use default
4562  separators. [#7570]
4563
4564- Added two keyword argument options to ``CoordinateHelper.set_format_unit``:
4565  ``decimal`` can be used to specify whether to use decimal formatting for the
4566  labels (by default this is False for degrees and hours and True otherwise),
4567  and ``show_decimal_unit`` can be used to determine whether the units should be
4568  shown for decimal labels. [#7318]
4569
4570- Added documentation for ``transform=`` and ``coord_meta=``. [#7698]
4571
4572- Allow ``coord_meta=`` to optionally include ``format_unit=``. [#7848]
4573
4574- Add support for more rcParams related to the grid, ticks, and labels, and
4575  should work with most built-in Matplotlib styles. [#7961]
4576
4577- Improved rendering of outward-facing ticks. [#7961]
4578
4579- Add support for ``tick_params`` (which is a standard Matplotlib
4580  function/method) on both the ``WCSAxes`` class and the individual
4581  ``CoordinateHelper`` classes. Note that this is provided for compatibility
4582  with Matplotlib syntax users may be familiar with, but it is not the
4583  preferred way to change settings. Instead, methods such as ``set_ticks``
4584  should be preferred. [#7969]
4585
4586- Moved the argument ``exclude_overlapping`` from ``set_ticks`` to
4587  ``set_ticklabel``. [#7969]
4588
4589- Added a ``pad=`` argument to ``set_ticklabel`` to provide a way to control
4590  the padding between ticks and tick labels. [#7969]
4591
4592- Added support for setting the tick direction in ``set_ticks`` using the
4593  ``direction=`` keyword argument. [#7969]
4594
4595astropy.wcs
4596^^^^^^^^^^^
4597
4598- Map ITRS frames to terrestrial WCS coordinates. This will make it possible to
4599  use WCSAxes to make figures that combine both celestial and terrestrial
4600  features. An example is plotting the coordinates of an astronomical transient
4601  over an all- sky satellite image to illustrate the position relative to the
4602  Earth at the time of the event. The ITRS frame is identified with WCSs that
4603  use the ``TLON-`` and ``TLAT-`` coordinate types. There are several examples
4604  of WCSs where this syntax is used to describe terrestrial coordinate systems:
4605  Section 7.4.1 of `WCS in FITS "Paper II" <https://ui.adsabs.harvard.edu/abs/2002A%26A...395.1077C>`_
4606  and the `WCSTools documentation <http://tdc-www.harvard.edu/software/wcstools/wcstools.multiwcs.html>`_.
4607  [#6990]
4608
4609- Added the abstract base class for the low-level WCS API described in APE 14
4610  (https://doi.org/10.5281/zenodo.1188875). [#7325]
4611
4612- Add ``WCS.footprint_contains()`` function to check if the WCS footprint contains a given sky coordinate. [#7273]
4613
4614- Added the abstract base class for the high-level WCS API described in APE 14
4615  (https://doi.org/10.5281/zenodo.1188875). [#7325]
4616
4617- Added the high-level wrapper class for low-level WCS objects as described in
4618  APE 14 (https://doi.org/10.5281/zenodo.1188875). [#7326]
4619
4620- Added a new property ``WCS.has_distortion``. [#7326]
4621
4622- Deprecated ``_naxis1`` and ``_naxis2`` in favor of ``pixel_shape``. [#7973]
4623
4624- Added compatibility to wcslib version 6. [#8093]
4625
4626
4627API Changes
4628-----------
4629
4630astropy.convolution
4631^^^^^^^^^^^^^^^^^^^
4632
4633- ``kernel`` can now be a tuple. [#7561]
4634
4635- Not technically an API changes, however, the doc string indicated that ``boundary=None``
4636  was the default when actually it is ``boundary='fill'``. The doc string has been corrected,
4637  however, someone may interpret this as an API change not realising that nothing has actually
4638  changed. [#7293]
4639
4640- ``interpolate_replace_nans()`` can no longer accept the keyword argument
4641  ``preserve_nan``. It is explicitly set to ``False``. [#8088]
4642
4643
4644astropy.coordinates
4645^^^^^^^^^^^^^^^^^^^
4646
4647- Fixed ``astropy.coordinates.concatenate`` to include velocity data in the
4648  concatenation. [#7922]
4649
4650- Changed the name of the single argument to ``Frame.realize_frame()`` from the
4651  (incorrect) ``representation_type`` to ``data``. [#7923]
4652
4653- Negative parallaxes passed to ``Distance()`` now raise an error by default
4654  (``allow_negative=False``), or are converted to NaN values with a warning
4655  (``allow_negative=True``). [#7988]
4656
4657- Negating a ``SphericalRepresentation`` object now changes the angular
4658  coordinates (by rotating 180º) instead of negating the distance. [#7988]
4659
4660- Creation of new frames now generally creates copies of frame attributes,
4661  rather than inconsistently either copying or making references. [#8204]
4662
4663- The frame class method ``is_equivalent_frame`` now checks for equality of
4664  components to determine if a frame is the same when it has frame attributes
4665  that are representations, rather than checking if they are the same
4666  object. [#8218]
4667
4668astropy.io.ascii
4669^^^^^^^^^^^^^^^^
4670
4671- If a fast reader is explicitly selected (e.g. ``fast_reader='force'``) and
4672  options which are incompatible with the fast reader are provided
4673  (e.g. ``quotechar='##'``) then now a ``ParameterError`` exception will be
4674  raised. [#5578]
4675
4676- The fast readers will now raise ``InconsistentTableError`` instead of
4677  ``CParserError`` if the number of data and header columns do not match.
4678  [#5578]
4679
4680- Changed a number of ``ValueError`` exceptions to ``InconsistentTableError``
4681  in places where the exception is related to parsing a table which is
4682  inconsistent with the specified table format.  Note that
4683  ``InconsistentTableError`` inherits from ``ValueError`` so no user code
4684  changes are required. [#7425]
4685
4686astropy.io.fits
4687^^^^^^^^^^^^^^^
4688
4689- The ``fits.table_to_hdu()`` function will translate any column ``format``
4690  attributes to a TDISPn format string, if possible, and store it as a TDISPn
4691  keyword in the ``HDU`` header. [#7226]
4692
4693astropy.modeling
4694^^^^^^^^^^^^^^^^
4695
4696- Change the order of the return values from ``FittingWithOutlierRemoval``,
4697  such that ``fitted_model`` comes first, for consistency with other fitters.
4698  For the second value, return only a boolean outlier ``mask``, instead of the
4699  previous ``MaskedArray`` (which included a copy of the input data that was
4700  both redundant and inadvertently corrupted at masked points). Return a
4701  consistent type for the second value when ``niter=0``. [#7407]
4702
4703- Set the minimum value for the ``bolometric_flux`` parameter of the
4704  ``BlackBody1D`` model to zero. [#7045]
4705
4706astropy.nddata
4707^^^^^^^^^^^^^^
4708
4709- Add two new uncertainty classes, ``astropy.nddata.VarianceUncertainty`` and
4710  ``astropy.nddata.InverseVariance``. [#6971]
4711
4712astropy.stats
4713^^^^^^^^^^^^^
4714
4715- String values can now be used for the ``cenfunc`` and ``stdfunc``
4716  keywords in the ``SigmaClip`` class and ``sigma_clip`` and
4717  ``sigma_clipped_stats`` functions. [#7478]
4718
4719- The ``SigmaClip`` class and ``sigma_clip`` and
4720  ``sigma_clipped_stats`` functions now have a ``masked`` keyword,
4721  which can be used to return either a masked array (default) or an
4722  ndarray with the min/max values. [#7478]
4723
4724- The ``iters`` keyword has been renamed (and deprecated) to
4725  ``maxiters`` in the ``SigmaClip`` class and ``sigma_clip`` and
4726  ``sigma_clipped_stats`` functions. [#7478]
4727
4728astropy.table
4729^^^^^^^^^^^^^
4730
4731- ``Table.read()`` on a FITS binary table file will convert any TDISPn header
4732  keywords to a Python formatting string when possible, and store it in the
4733  column ``format`` attribute. [#7226]
4734
4735- No values provided to stack will now raise ``ValueError`` rather than
4736  ``TypeError``. [#7674]
4737
4738astropy.tests
4739^^^^^^^^^^^^^
4740
4741- ``from astropy.tests.helper import *`` no longer includes
4742  ``quantity_allclose``. However,
4743  ``from astropy.tests.helper import quantity_allclose`` would still work.
4744  [#7381]
4745
4746- ``warnings_to_ignore_by_pyver`` option in
4747  ``enable_deprecations_as_exceptions()`` now takes ``None`` as key.
4748  Any deprecation message that is mapped to ``None`` will be ignored
4749  regardless of the Python version. [#7790]
4750
4751astropy.time
4752^^^^^^^^^^^^
4753
4754- Added the ability to use ``local`` as time scale in ``Time`` and
4755  ``TimeDelta``. [#6487]
4756
4757- Comparisons, addition, and subtraction of ``Time`` instances with non-time
4758  instances will now return ``NotImplemented`` rather than raise the
4759  ``Time``-specific ``OperandTypeError``.  This will generally lead to a
4760  regular ``TypeError``.  As a result, ``OperandTypeError`` now only occurs if
4761  the operation is between ``Time`` instances of incompatible type or scale.
4762  [#7584]
4763
4764astropy.units
4765^^^^^^^^^^^^^
4766
4767- In ``UnitBase.compose()``, if a sequence (list|tuple) is passed in to
4768  ``units``, the default for ``include_prefix_units`` is set to
4769  `True`, so that no units get ignored. [#6957]
4770
4771- Negative parallaxes are now converted to NaN values when using the
4772  ``parallax`` equivalency. [#7988]
4773
4774astropy.utils
4775^^^^^^^^^^^^^
4776
4777- ``InheritDocstrings`` now also works on class properties. [#7166]
4778
4779- ``diff_values()``, ``report_diff_values()``, and ``where_not_allclose()``
4780  utility functions are moved from ``astropy.io.fits.diff``. [#7444]
4781
4782- ``invalidate_caches()`` has been removed from the
4783  ``astropy.utils.compat`` namespace, use it directly from ``importlib``. [#7872]
4784
4785astropy.visualization
4786^^^^^^^^^^^^^^^^^^^^^
4787
4788- In ``ImageNormalize``, the default for ``clip`` is set to ``True``. [#7800]
4789
4790- Changed ``AsymmetricPercentileInterval`` and ``MinMaxInterval`` to
4791  ignore NaN values in arrays. [#7360]
4792
4793- Automatically default to using ``grid_type='contours'`` in WCSAxes when using
4794  a custom ``Transform`` object if the transform has no inverse. [#7847]
4795
4796
4797Performance Improvements
4798------------------------
4799
4800- Reduced import time by more cautious use of the standard library. [#7647]
4801
4802astropy.convolution
4803^^^^^^^^^^^^^^^^^^^
4804
4805- Major performance overhaul to ``convolve()``. [#7293]
4806
4807- ``convolve()``: Boundaries ``fill``, ``extend``, and ``wrap`` now use a single
4808  implementation that pads the image with the correct boundary values before convolving.
4809  The runtimes of these three were significantly skewed. They now have
4810  equivalent runtimes that are also faster than before due to performant contiguous
4811  memory access. However, this does increase the memory footprint as an entire
4812  new image array is required plus that needed for the padded region.[#7293]
4813
4814- ``convolve()``: Core computation ported from Cython to C. Several optimization
4815  techniques have been implemented to achieve performance gains, e.g. compiler
4816  hoisting, and vectorization, etc. Compiler optimization level ``-O2`` required for
4817  hoisting and ``-O3`` for vectorization. [#7293]
4818
4819- ``convolve()``: ``nan_treatment=‘interpolate’`` was slow to compute irrespective of
4820  whether any NaN values exist within the array. The input array is now
4821  checked for NaN values and interpolation is disabled if non are found. This is a
4822  significant performance boost for arrays without NaN values. [#7293]
4823
4824astropy.coordinates
4825^^^^^^^^^^^^^^^^^^^
4826
4827- Sped up creating SkyCoord objects by a factor of ~2 in some cases. [#7615]
4828
4829- Sped up getting xyz vectors from ``CartesianRepresentation`` (which
4830  is used a lot internally). [#7638]
4831
4832- Sped up transformations and some representation methods by replacing
4833  python code with (compiled) ``erfa`` ufuncs. [#7639]
4834
4835- Sped up adding differential (velocity) data to representations by a factor of
4836  ~20, which improves the speed of frame and SkyCoord initialization. [#7924]
4837
4838- Refactored ``SkyCoord`` initializer to improve performance and code clarity.
4839  [#7958]
4840
4841- Sped up initialization of ``Longitude`` by ~40%. [#7616]
4842
4843astropy.stats
4844^^^^^^^^^^^^^
4845
4846- The ``SigmaClip`` class and ``sigma_clip`` and
4847  ``sigma_clipped_stats`` functions are now significantly faster. [#7478]
4848
4849- A Cython implementation for `astropy.stats.kuiper_two` and a vectorized
4850  implementation for `astropy.stats.kuiper_false_positive_probability` have
4851  been added, speeding up both functions.  [#8104]
4852
4853astropy.units
4854^^^^^^^^^^^^^
4855
4856- Sped up creating new composite units, and raising units to some power
4857  [#7549, #7649]
4858
4859- Sped up Unit.to when target unit is the same as the original unit. [#7643]
4860
4861- Lazy-load ``scipy.special`` to shorten ``astropy.units`` import time. [#7636]
4862
4863astropy.visualization
4864^^^^^^^^^^^^^^^^^^^^^
4865
4866- Significantly sped up drawing of contours in WCSAxes. [#7568]
4867
4868
4869Bug Fixes
4870---------
4871
4872astropy.convolution
4873^^^^^^^^^^^^^^^^^^^
4874
4875- Fixed bug in ``convolve_fft`` where masked input was copied with
4876  ``numpy.asarray`` instead of ``numpy.asanyarray``.
4877  ``numpy.asarray`` removes the mask subclass causing
4878  ``numpy.ma.ismasked(input)`` to fail, causing ``convolve_fft``
4879  to ignore all masked input. [#8137]
4880
4881- Remove function side-effects of input data from ``convolve_fft``.
4882  It was possible for input data to remain modified if particular exceptions
4883  were raised. [#8152]
4884
4885astropy.coordinates
4886^^^^^^^^^^^^^^^^^^^
4887
4888- ``EarthLocation.of_address`` now uses the OpenStreetMap geocoding API by
4889  default to retrieve coordinates, with the Google API (which now requires an
4890  API key) as an option. [#7918]
4891
4892- Fixed a bug that caused frame objects with NaN distances to have NaN sky
4893  positions, even if valid sky coordinates were specified. [#7988]
4894
4895- Fixed ``represent_as()`` to not round-trip through cartesian if the same
4896  representation class as the instance is passed in. [#7988]
4897
4898astropy.io.ascii
4899^^^^^^^^^^^^^^^^
4900
4901- Fixed a problem when ``guess=True`` that ``fast_reader`` options
4902  could be dropped after the first fast reader class was tried. [#5578]
4903
4904- Units in CDS-formatted tables are now parsed correctly by the units
4905  module. [#7348]
4906
4907astropy.io.misc
4908^^^^^^^^^^^^^^^
4909
4910- Fixed bug when writing a table with masked columns to HDF5. Previously
4911  the mask was being silently dropped.  If the ``serialize_meta`` option is
4912  enabled the data mask will now be written as an additional column and the
4913  masked columns will round-trip correctly. [#7481]
4914
4915- Fixed a bug where writing to HDF5 failed for for tables with columns of
4916  unicode strings.  Now those columns are first encoded to UTF-8 and
4917  written as byte strings. [#7024, #8017]
4918
4919- Fixed a bug with serializing the bounding_box of models initialized
4920  with ``Quantities`` . [#8052]
4921
4922astropy.io.fits
4923^^^^^^^^^^^^^^^
4924
4925- Added support for ``copy.copy`` and ``copy.deepcopy`` for ``HDUList``. [#7218]
4926
4927- Override ``HDUList.copy()`` to return a shallow HDUList instance. [#7218]
4928
4929astropy.modeling
4930^^^^^^^^^^^^^^^^
4931
4932- Fix behaviour of certain models with units, by making certain unit-related
4933  attributes readonly. [#7210]
4934
4935- Fixed an issue with validating a ``bounding_box`` whose items are
4936  ``Quantities``. [#8052]
4937
4938- Fix ``Moffat1D`` and ``Moffat2D`` derivatives. [#8108]
4939
4940astropy.nddata
4941^^^^^^^^^^^^^^
4942
4943- Fixed rounding behavior in ``overlap_slices`` for even-sized small
4944  arrays. [#7859]
4945
4946- Added support for pickling ``NDData`` instances that have an uncertainty.
4947  [#7383]
4948
4949astropy.stats
4950^^^^^^^^^^^^^
4951
4952- Fix errors in ``kuiper_false_positive_probability``. [#7975]
4953
4954astropy.tests
4955^^^^^^^^^^^^^
4956
4957- Fixing bug that prevented to run the doctests on only a single rst documentation
4958  file rather than all of them. [#8055]
4959
4960astropy.time
4961^^^^^^^^^^^^
4962
4963- Fix a bug when setting a ``TimeDelta`` array item with plain float value(s).
4964  This was always interpreted as a JD (day) value regardless of the
4965  ``TimeDelta`` format. [#7990]
4966
4967astropy.units
4968^^^^^^^^^^^^^
4969
4970- To simplify fast creation of ``Quantity`` instances from arrays, one can now
4971  write ``array << unit`` (equivalent to ``Quantity(array, unit, copy=False)``).
4972  If ``array`` is already a ``Quantity``, this will convert the quantity to the
4973  requested units; in-place conversion can be done with ``quantity <<= unit``.
4974  [#7734]
4975
4976astropy.utils
4977^^^^^^^^^^^^^
4978
4979- Fixed a bug due to which ``report_diff_values()`` was reporting incorrect
4980  number of differences when comparing two ``numpy.ndarray``. [#7470]
4981
4982- The download progress bar is now only displayed in terminals, to avoid
4983  polluting piped output. [#7577]
4984
4985- Ignore URL mirror caching when there is no internet. [#8163]
4986
4987astropy.visualization
4988^^^^^^^^^^^^^^^^^^^^^
4989
4990- Right ascension coordinates are now shown in hours by default, and the
4991  ``set_format_unit`` method on ``CoordinateHelper`` now works correctly
4992  with angle coordinates. [#7215]
4993
4994
4995Other Changes and Additions
4996---------------------------
4997
4998- The documentation build now uses the Sphinx configuration from sphinx-astropy
4999  rather than from astropy-helpers. [#7139]
5000
5001- Versions of Numpy <1.13 are no longer supported. [#7058]
5002
5003- Running tests now suppresses the output of the installation stage by default,
5004  to allow easier viewing of the test results. To re-enable the output as
5005  before, use ``python setup.py test --verbose-install``. [#7512]
5006
5007- The ERFA functions are now wrapped in ufuncs instead of custom C code,
5008  leading to some speed improvements, and setting the stage for allowing
5009  overrides with ``__array_ufunc__``. [#7502]
5010
5011- Updated the bundled CFITSIO library to 3.450. See
5012  ``cextern/cfitsio/docs/changes.txt`` for additional information. [#8014]
5013
5014- The ``representation`` keywords in coordinate frames are now deprecated in
5015  favor of the ``representation_type`` keywords (which are less
5016  ambiguously named). [#8119]
5017
5018
5019
50203.0.5 (2018-10-14)
5021==================
5022
5023Bug Fixes
5024---------
5025
5026astropy.coordinates
5027^^^^^^^^^^^^^^^^^^^
5028
5029- Fixed bug in which consecutive ``StaticMatrixTransform``'s in a frame
5030  transform path would be combined in the incorrect order. [#7707]
5031
5032astropy.tests
5033^^^^^^^^^^^^^
5034
5035- Fixing bug that doctests were not picked up from the narrative
5036  documentation when tests were run for all modules. [#7767]
5037
5038
5039
50403.0.4 (2018-08-02)
5041==================
5042
5043API Changes
5044-----------
5045
5046astropy.table
5047^^^^^^^^^^^^^
5048
5049- The private ``_parent`` attribute in the ``info`` attribute of table
5050  columns was changed from a direct reference to the parent column to a weak
5051  reference.  This was in response to a memory leak caused by having a
5052  circular reference cycle.  This change means that expressions like
5053  ``col[3:5].info`` will now fail because at the point of the ``info``
5054  property being evaluated the ``col[3:5]`` weak reference is dead.  Instead
5055  force a reference with ``c = col[3:5]`` followed by
5056  ``c.info.indices``. [#6277, #7448]
5057
5058
5059Bug Fixes
5060---------
5061
5062astropy.nddata
5063^^^^^^^^^^^^^^
5064
5065- Fixed an bug when creating the ``WCS`` of a cutout (see ``nddata.Cutout2D``)
5066  when input image's ``WCS`` contains ``SIP`` distortion corrections by
5067  adjusting the ``crpix`` of the ``astropy.wcs.Sip`` (in addition to
5068  adjusting the ``crpix`` of the ``astropy.wcs.WCS`` object). This bug
5069  had the potential to produce large errors in ``WCS`` coordinate
5070  transformations depending on the position of the cutout relative
5071  to the input image's ``crpix``. [#7556, #7550]
5072
5073astropy.table
5074^^^^^^^^^^^^^
5075
5076- Fix memory leak where updating a table column or deleting a table
5077  object was not releasing the memory due to a reference cycle
5078  in the column ``info`` attributes. [#6277, #7448]
5079
5080astropy.wcs
5081^^^^^^^^^^^
5082
5083- Fixed an bug when creating the ``WCS`` slice (see ``WCS.slice()``)
5084  when ``WCS`` contains ``SIP`` distortion corrections by
5085  adjusting the ``WCS.sip.crpix`` in addition to adjusting
5086  ``WCS.wcs.crpix``. This bug had the potential to produce large errors in
5087  ``WCS`` coordinate transformations depending on the position of the slice
5088  relative to ``WCS.wcs.crpix``. [#7556, #7550]
5089
5090
5091Other Changes and Additions
5092---------------------------
5093
5094- Updated bundled wcslib to v 5.19.1 [#7688]
5095
5096
50973.0.3 (2018-06-01)
5098==================
5099
5100Bug Fixes
5101---------
5102
5103astropy.io.ascii
5104^^^^^^^^^^^^^^^^
5105
5106- Fix stripping correct (header) comment line from ``meta['comments']``
5107  in the ``CommentedHeader`` reader for all ``header_start`` settings. [#7508]
5108
5109astropy.io.fits
5110^^^^^^^^^^^^^^^
5111
5112- Raise error when attempting to open gzipped FITS file in 'append' mode.
5113  [#7473]
5114
5115- Fix a bug when writing to FITS a table that has a column description
5116  with embedded blank lines. [#7482]
5117
5118astropy.tests
5119^^^^^^^^^^^^^
5120
5121- Enabling running tests for multiple packages when specified comma
5122  separated. [#7463]
5123
5124
51253.0.2 (2018-04-23)
5126==================
5127
5128Bug Fixes
5129---------
5130
5131astropy.coordinates
5132^^^^^^^^^^^^^^^^^^^
5133
5134- Computing a 3D separation between two ``SkyCoord`` objects (with the
5135  ``separation_3d`` method) now works with or without velocity data attached to
5136  the objects. [#7387]
5137
5138astropy.io.votable
5139^^^^^^^^^^^^^^^^^^
5140
5141- Fix validate with xmllint=True. [#7255, #7283]
5142
5143astropy.modeling
5144^^^^^^^^^^^^^^^^
5145
5146- ``FittingWithOutlierRemoval`` now handles model sets, as long as the
5147  underlying fitter supports masked values. [#7199]
5148
5149- Remove assumption that ``model_set_axis == 0`` for 2D models in
5150  ``LinearLSQFitter``. [#7317, #7199]
5151
5152- Fix the shape of the outputs when a model set is evaluated with
5153  ``model_set_axis=False`` . [#7317]
5154
5155astropy.stats
5156^^^^^^^^^^^^^
5157
5158- Accept a tuple for the ``axis`` parameter in ``sigma_clip``, like the
5159  underlying ``numpy`` functions and some other functions in ``stats``. [#7199]
5160
5161astropy.tests
5162^^^^^^^^^^^^^
5163
5164- The function ``quantity_allclose`` was moved to the ``units`` package with
5165  the new, shorter name ``allclose``. This eliminates a runtime dependency on
5166  ``pytest`` which was causing issues for some affiliated packages. The old
5167  import will continue to work but may be deprecated in the future. [#7252]
5168
5169astropy.units
5170^^^^^^^^^^^^^
5171
5172- Added a units-aware ``allclose`` function (this was previously available in
5173  the ``tests`` module as ``quantity_allclose``). To complement ``allclose``,
5174  a new ``isclose`` function is also added and backported. [#7252]
5175
5176
51773.0.1 (2018-03-12)
5178==================
5179
5180Bug Fixes
5181---------
5182
5183astropy.io.ascii
5184^^^^^^^^^^^^^^^^
5185
5186- Fix a unicode decode error when reading a table with non-ASCII characters.
5187  The fast C reader cannot handle unicode so the code now uses the pure-Python
5188  reader in this case. [#7103]
5189
5190astropy.io.fits
5191^^^^^^^^^^^^^^^
5192
5193- Updated the bundled CFITSIO library to 3.430. This is to remedy a critical
5194  security vulnerability that was identified by NASA. See
5195  ``cextern/cfitsio/docs/changes.txt`` for additional information. [#7274]
5196
5197astropy.io.misc
5198^^^^^^^^^^^^^^^
5199
5200- Make sure that a sufficiently recent version of ASDF is installed when
5201  running test suite against ASDF tags and schemas. [#7205]
5202
5203astropy.io.registry
5204^^^^^^^^^^^^^^^^^^^
5205
5206- Fix reading files with serialized metadata when using a Table subclass. [#7213]
5207
5208astropy.io.votable
5209^^^^^^^^^^^^^^^^^^
5210
5211- Fix lookup fields by ID. [#7208]
5212
5213astropy.modeling
5214^^^^^^^^^^^^^^^^
5215
5216- Fix model set evaluation over common input when model_set_axis > 0. [#7222]
5217
5218- Fixed the evaluation of compound models with units. This required adding the
5219  ability to have ``input_units_strict`` and ``input_units_allow_dimensionless``
5220  be dictionaries with input names as keys. [#6952]
5221
5222astropy.units
5223^^^^^^^^^^^^^
5224
5225- ``quantity_helper`` no longer requires ``scipy>=0.18``. [#7219]
5226
5227
52283.0 (2018-02-12)
5229================
5230
5231New Features
5232------------
5233
5234astropy.constants
5235^^^^^^^^^^^^^^^^^
5236
5237- New context manager ``set_enabled_constants`` to temporarily use an older
5238  version. [#7008]
5239
5240astropy.coordinates
5241^^^^^^^^^^^^^^^^^^^
5242
5243- The ``Distance`` object now accepts ``parallax`` as a keyword in the
5244  initializer, and supports retrieving a parallax (as an ``Angle``) via
5245  the ``.parallax`` attributes. [#6855]
5246
5247- The coordinate frame classes (subclasses of ``BaseCoordinateFrame``) now
5248  always have ``.velocity``, ``.proper_motion``, and ``.radial_velocity``
5249  properties that provide shorthands to the full-space Cartesian velocity as
5250  a ``CartesianDifferential``, the 2D proper motion as a ``Quantity``, and the
5251  radial or line-of-sight velocity as a ``Quantity``. [#6869]
5252
5253- ``SkyCoord`` objects now support storing and transforming differentials - i.e.,
5254  both radial velocities and proper motions. [#6944]
5255
5256- All frame classes now automatically get sensible representation mappings for
5257  velocity components. For example, ``d_x``, ``d_y``, ``d_z`` are all
5258  automatically mapped to frame component namse ``v_x``, ``v_y``, ``v_z``.
5259  [#6856]
5260
5261- ``SkyCoord`` objects now support updating the position of a source given its
5262  space motion and a new time or time difference. [#6872]
5263
5264- The frame classes now accept a representation class or differential class, or
5265  string names for either, through the keyword arguments ``representation_type``
5266  and ``differential_type`` instead of ``representation`` and
5267  ``differential_cls``. [#6873]
5268
5269- The frame classes (and ``SkyCoord``) now give more useful error messages when
5270  incorrect attribute names are given.  Instead of using the representation
5271  attribute names, they use the frame attribute names. [#7106]
5272
5273- ``EarthLocation`` now has a method to compute the  gravitational redshift due
5274  due to solar system bodies.  [#6861, #6935]
5275
5276- ``EarthLocation`` now has a ``get_gcrs`` convenience method to get the
5277  location in GCRS coordinates.  [#6861, #6935]
5278
5279astropy.io.fits
5280^^^^^^^^^^^^^^^
5281
5282- Expanded the FITS ``Column`` interface to accept attributes pertaining to the FITS
5283  World Coordinate System, which includes spatial(celestial) and time coordinates. [#6359]
5284
5285- Added ``ver`` attribute to set the ``EXTVER`` header keyword to ``ImageHDU``
5286  and ``TableHDU``. [#6454]
5287
5288- The performance for reading FITS tables has been significantly improved,
5289  in particular for cases where the tables contain one or more string columns
5290  and when done through ``Table.read``. [#6821]
5291
5292- The performance for writing tables from ``Table.write`` has now been
5293  significantly improved for tables containing one or more string columns. [#6920]
5294
5295- The ``Table.read`` now supports a ``memmap=`` keyword argument to control
5296  whether or not to use  memory mapping when reading the table. [#6821]
5297
5298- When reading FITS tables with ``fits.open``, a new keyword argument
5299  ``character_as_bytes`` can be passed - when set to `True`, character columns
5300  are returned as Numpy byte arrays (Numpy type S) while when set to `False`,
5301  the same columns are decoded to Unicode strings (Numpy type U) which uses more
5302  memory. [#6821]
5303
5304- The ``table_to_hdu`` function and the ``BinTableHDU.from_columns`` and
5305  ``FITS_rec.from_columns`` methods now include a ``character_as_bytes``
5306  keyword argument - if set to `True`, then when string columns are accessed,
5307  byte columns will be returned, which can provide significantly improved
5308  performance. [#6920]
5309
5310- Added support for writing and reading back a table which has "mixin columns"
5311  such as ``SkyCoord`` or ``EarthLocation`` with no loss of information. [#6912]
5312
5313- Enable tab-completion for ``FITS_rec`` column names and ``Header`` keywords
5314  with IPython 5 and later. [#7071]
5315
5316astropy.io.misc
5317^^^^^^^^^^^^^^^
5318
5319- When writing to HDF5 files, the serialized metadata are now saved in a new
5320  dataset, instead of the HDF5 dataset attributes. This allows for metadata of
5321  any dimensions. [#6304]
5322
5323- Added support in HDF5 for writing and reading back a table which has "mixin
5324  columns" such as ``SkyCoord`` or ``EarthLocation`` with no loss of
5325  information. [#7007]
5326
5327- Add implementations of astropy-specific ASDF tag types. [#6790]
5328
5329- Add ASDF tag and schema for ICRSCoord. [#6904]
5330
5331astropy.modeling
5332^^^^^^^^^^^^^^^^
5333
5334- Add unit support for tabular models. [#6529]
5335
5336- A ``deepcopy()`` method was added to models. [#6515]
5337
5338- Added units support to ``AffineTransformation``. [#6853]
5339
5340- Added ``is_separable`` function to modeling to test the
5341  separability of a model. [#6746]
5342
5343- Added ``Model.separable`` property. It returns a boolean value or
5344  ``None`` if not set. [#6746]
5345
5346- Support masked array values in ``LinearLSQFitter`` (instead of silently
5347  ignoring the mask). [#6927]
5348
5349astropy.stats
5350^^^^^^^^^^^^^
5351
5352- Added false alarm probability computation to ``astropy.stats.LombScargle``
5353  [#6488]
5354
5355- Implemented Kuiper functions in ``astropy.stats`` [#3724, #6565]
5356
5357astropy.table
5358^^^^^^^^^^^^^
5359
5360- Added support for reading and writing ``astropy.time.Time`` Table columns
5361  to and from FITS tables, to the extent supported by the FITS standard. [#6176]
5362
5363- Improved exception handling and error messages when column ``format``
5364  attribute is incorrect for the column type. [#6385]
5365
5366- Allow to pass ``htmldict`` option to the jsviewer writer. [#6551]
5367
5368- Added new table operation ``astropy.table.setdiff`` that returns the set
5369  difference of table rows for two tables. [#6443]
5370
5371- Added support for reading time columns in FITS compliant binary tables
5372  as ``astropy.time.Time`` Table columns. [#6442]
5373
5374- Allowed to remove table rows through the ``__delitem__`` method. [#5839]
5375
5376- Added a new ``showtable`` command-line script to view binary or ASCII table
5377  files. [#6859]
5378
5379- Added new table property ``astropy.table.Table.loc_indices`` that returns the
5380  location of rows by indexes. [#6831]
5381
5382- Allow updating of table by indices through the property ``astropy.table.Table.loc``. [#6831]
5383
5384- Enable tab-completion for column names with IPython 5 and later. [#7071]
5385
5386- Allow getting and setting a table Row using multiple column names. [#7107]
5387
5388astropy.tests
5389^^^^^^^^^^^^^
5390
5391- Split pytest plugins into separate modules. Move remotedata, openfiles,
5392  doctestplus plugins to standalone repositories. [#6384, #6606]
5393
5394- When testing, astropy (or the package being tested) is now installed to
5395  a temporary directory instead of copying the build. This allows
5396  entry points to work correctly. [#6890]
5397
5398- The tests_require setting in setup.py now works properly when running
5399  'python setup.py test'. [#6892]
5400
5401astropy.units
5402^^^^^^^^^^^^^
5403
5404- Deprecated conversion of quantities to truth values. Currently, the expression
5405  ``bool(0 * u.dimensionless_unscaled)`` evaluates to ``True``. In the future,
5406  attempting to convert a ``Quantity`` to a ``bool`` will raise ``ValueError``.
5407  [#6580, #6590]
5408
5409- Modify the ``brightness_temperature`` equivalency to provide a surface
5410  brightness equivalency instead of the awkward assumed-per-beam equivalency
5411  that previously existed [#5173, #6663]
5412
5413- Support was added for a number of ``scipy.special`` functions. [#6852]
5414
5415astropy.utils
5416^^^^^^^^^^^^^
5417
5418- The ``astropy.utils.console.ProgressBar.map`` class method now supports the
5419  ``ipython_widget`` option. You can now pass it both ``multiprocess=True`` and
5420  ``ipython_widget=True`` to get both multiprocess speedup and a progress bar
5421  widget in an IPython Notebook. [#6368]
5422
5423- The ``astropy.utils.compat.funcsigs`` module has now been deprecated. Use the
5424  Python 'inspect' module directly instead. [#6598]
5425
5426- The ``astropy.utils.compat.futures`` module has now been deprecated. Use the
5427  Python 'concurrent.futures' module directly instead. [#6598]
5428
5429- ``JsonCustomEncoder`` is expanded to handle ``Quantity`` and ``UnitBase``.
5430  [#5471]
5431
5432- Added a ``dcip_xy`` method to IERS that interpolates along the dX_2000A and
5433  dY_2000A columns of the IERS table.  Hence, the data for the CIP offsets is
5434  now available for use in coordinate frame conversion. [#5837]
5435
5436- The functions ``matmul``, ``broadcast_arrays``, ``broadcast_to`` of the
5437  ``astropy.utils.compat.numpy`` module have been deprecated. Use the
5438  NumPy functions directly. [#6691]
5439
5440- The ``astropy.utils.console.ProgressBar.map`` class method now returns
5441  results in sequential order. Previously, if you set ``multiprocess=True``,
5442  then the results could arrive in any arbitrary order, which could be a nasty
5443  shock. Although the function will still be evaluated on the items in
5444  arbitrary order, the return values will arrive in the same order in which the
5445  input items were provided. The method is now a thin wrapper around
5446  ``astropy.utils.console.ProgressBar.map_unordered``, which preserves the old
5447  behavior. [#6439]
5448
5449astropy.visualization
5450^^^^^^^^^^^^^^^^^^^^^
5451
5452- Enable Matplotlib's subtraction shorthand syntax for composing and
5453  inverting transformations for the ``WCSWorld2PixelTransform`` and
5454  ``WCSPixel2WorldTransform`` classes by setting ``has_inverse`` to ``True``.
5455  In order to implement a unit test, also implement the equality comparison
5456  operator for both classes. [#6531]
5457
5458- Added automatic hiding of axes labels when no tick labels are drawn on that
5459  axis. This parameter can be configured with
5460  ``WCSAxes.coords[*].set_axislabel_visibility_rule`` so that labels are automatically
5461  hidden when no ticks are drawn or always shown. [#6774]
5462
5463astropy.wcs
5464^^^^^^^^^^^
5465
5466- Added a new function ``celestial_frame_to_wcs`` to convert from
5467  coordinate frames to WCS (the opposite of what ``wcs_to_celestial_frame``
5468  currently does. [#6481]
5469
5470- ``wcslib`` was updated to v 5.18. [#7066]
5471
5472
5473API Changes
5474-----------
5475
5476astropy.convolution
5477^^^^^^^^^^^^^^^^^^^
5478
5479- ``Gaussian2DKernel`` now accepts ``x_stddev`` in place of ``stddev`` with
5480  an option for ``y_stddev``, if different. It also accepts ``theta`` like
5481  ``Gaussian2D`` model. [#3605, #6748]
5482
5483astropy.coordinates
5484^^^^^^^^^^^^^^^^^^^
5485
5486- Deprecated ``recommended_units`` for representations. These were used to
5487  ensure that any angle was presented in degrees in sky coordinates and
5488  frames. This is more logically done in the frame itself. [#6858]
5489
5490- As noted above, the frame class attributes ``representation`` and
5491  ``differential_cls`` are being replaced by ``representation_type`` and
5492  ``differential_type``. In the next version, using ``representation`` will raise
5493  a deprecation warning. [#6873]
5494
5495- Coordinate frame classes now can't be added to the frame transform graph if
5496  they have frame attribute names that conflict with any component names. This
5497  is so ``SkyCoord`` can uniquely identify and distinguish frame attributes from
5498  frame components. [#6871]
5499
5500- Slicing and reshaping of ``SkyCoord`` and coordinate frames no longer passes
5501  the new object through ``__init__``, but directly sets attributes on a new
5502  instance. This speeds up those methods by an order of magnitude, but means
5503  that any customization done in ``__init__`` is by-passed. [#6941]
5504
5505astropy.io.ascii
5506^^^^^^^^^^^^^^^^
5507
5508- Allow ECSV files to be auto-identified by ``Table.read`` or
5509  ``Table.write`` based on the ``.ecsv`` file name suffix. In this case it
5510  is not required to provide the ``format`` keyword. [#6552]
5511
5512astropy.io.fits
5513^^^^^^^^^^^^^^^
5514
5515- Automatically detect and handle compression in FITS files that are opened by
5516  passing a file handle to ``fits.open`` [#6373]
5517
5518- Remove the ``nonstandard`` checksum option. [#6571]
5519
5520astropy.io.misc
5521^^^^^^^^^^^^^^^
5522
5523- When writing to HDF5 files, the serialized metadata are now saved in a new
5524  dataset instead of the HDF5 dataset attributes. This allows for metadata of
5525  any dimensions. [#6304]
5526
5527- Deprecated the ``usecPickle`` kwarg of ``fnunpickle`` and ``fnpickle`` as
5528  it was needed only for Python2 usage. [#6655]
5529
5530astropy.io.votable
5531^^^^^^^^^^^^^^^^^^
5532
5533- Add handling of ``tree.Group`` elements to ``tree.Resource``.  Unified I/O
5534  or conversion to astropy tables is not affected. [#6262]
5535
5536astropy.modeling
5537^^^^^^^^^^^^^^^^
5538
5539- Removed deprecated ``GaussianAbsorption1D`` model.
5540  Use ``Const1D - Gaussian1D`` instead. [#6542]
5541
5542- Removed the registry from modeling. [#6706]
5543
5544astropy.table
5545^^^^^^^^^^^^^
5546
5547- When setting the column ``format`` attribute the value is now immediately
5548  validated. Previously one could set to any value and it was only checked
5549  when actually formatting the column. [#6385]
5550
5551- Deprecated the ``python3_only`` kwarg of the
5552  ``convert_bytestring_to_unicode`` and ``convert_unicode_to_bytestring``
5553  methods it was needed only for Python2 usage. [#6655]
5554
5555- When reading in FITS tables with ``Table.read``, string columns are now
5556  represented using Numpy byte (dtype ``S``) arrays rather than Numpy
5557  unicode arrays (dtype ``U``). The ``Column`` class then ensures the
5558  bytes are automatically converted to string as needed. [#6821]
5559
5560- When getting a table row using multiple column names, if one of the
5561  names is not a valid column name then a ``KeyError`` exception is
5562  now raised (previously ``ValueError``).  When setting a table row,
5563  if the right hand side is not a sequence with the correct length
5564  then a ``ValueError`` is now raised (previously in certain cases
5565  a ``TypeError`` was raised). [#7107]
5566
5567astropy.utils
5568^^^^^^^^^^^^^
5569
5570- ``download_files_in_parallel`` now always uses ``cache=True`` to make the
5571  function work on Windows. [#6671]
5572
5573astropy.visualization
5574^^^^^^^^^^^^^^^^^^^^^
5575
5576- The Astropy matplotlib plot style has been deprecated. It will continue to
5577  work in future but is no longer documented. [#6991]
5578
5579
5580Bug Fixes
5581---------
5582
5583astropy.coordinates
5584^^^^^^^^^^^^^^^^^^^
5585
5586- Frame objects now use the default differential even if the representation is
5587  explicitly provided as long as the representation provided is the same type as
5588  the default representation. [#6944]
5589
5590- Coordinate frame classes now raise an error when they are added to the frame
5591  transform graph if they have frame attribute names that conflict with any
5592  component names. [#6871]
5593
5594astropy.io.ascii
5595^^^^^^^^^^^^^^^^
5596
5597- Added support for reading very large tables in chunks to reduce memory
5598  usage. [#6458]
5599
5600- Strip leading/trailing white-space from latex lines to avoid issues when
5601  matching ``\begin{tabular}`` statements.  This is done by introducing a new
5602  ``LatexInputter`` class to override the ``BaseInputter``. [#6311]
5603
5604astropy.io.fits
5605^^^^^^^^^^^^^^^
5606
5607- Properly handle opening of FITS files from ``http.client.HTTPResponse`` (i.e.
5608  it now works correctly when passing the results of ``urllib.request.urlopen``
5609  to ``fits.open``). [#6378]
5610
5611- Fix the ``fitscheck`` script for updating invalid checksums, or removing
5612  checksums. [#6571]
5613
5614- Fixed potential problems with the compression module [#6732]
5615
5616- Always use the 'D' format for floating point values in ascii tables. [#6938]
5617
5618astropy.table
5619^^^^^^^^^^^^^
5620
5621- Fix getting a table row when using multiple column names (for example
5622  ``t[3]['a', 'b', 'c']``).  Also fix a problem when setting an entire row:
5623  if setting one of the right-hand side values failed this could result in
5624  a partial update of the referenced parent table before the exception is
5625  raised. [#7107]
5626
5627astropy.time
5628^^^^^^^^^^^^
5629
5630- Initialization of ``Time`` instances with bytes or arrays with dtype ``S``
5631  will now automatically attempt to decode as ASCII. This ensures ``Column``
5632  instances with ASCII strings stored with dtype ``S`` can be used.
5633  [#6823, #6903]
5634
5635astropy.units
5636^^^^^^^^^^^^^
5637
5638- Fixed a bug that caused PLY files to not be generated correctly in Python 3.
5639  [#7174]
5640
5641astropy.utils
5642^^^^^^^^^^^^^
5643
5644- The ``deprecated`` decorator applied to a class will now modify the class
5645  itself, rather than to create a class that just looks and behave like the
5646  original. This is needed so that the Python 3 ``super`` without arguments
5647  works for decorated classes. [#6615]
5648
5649- Fixed ``HomogeneousList`` when setting one item or a slice. [#6773]
5650
5651- Also check the type when creating a new instance of
5652  ``HomogeneousList``. [#6773]
5653
5654- Make ``HomogeneousList`` work with iterators and generators when creating the
5655  instance, extending it, or using when setting a slice. [#6773]
5656
5657
5658Other Changes and Additions
5659---------------------------
5660
5661- Versions of Python <3.5 are no longer supported. [#6556]
5662
5663- Versions of Pytest <3.1 are no longer supported. [#6419]
5664
5665- Versions of Numpy <1.10 are no longer supported. [#6593]
5666
5667- The bundled CFITSIO was updated to version 3.41 [#6477]
5668
5669- ``analytic_functions`` sub-package is removed.
5670  Use ``astropy.modeling.blackbody``. [#6541]
5671
5672- ``astropy.vo`` sub-package is removed. Use ``astropy.samp`` for SAMP and
5673  ``astroquery`` for VO cone search. [#6540]
5674
5675- The guide to setting up Emacs for code development was simplified, and
5676  updated to recommend ``flycheck`` and ``flake8`` for syntax checks. [#6692]
5677
5678- The bundled version of PLY was updated to 3.10. [#7174]
5679
5680
5681
56822.0.16 (2019-10-27)
5683===================
5684
5685Bug Fixes
5686---------
5687
5688astropy.time
5689^^^^^^^^^^^^
5690
5691- Fixed a troubling bug in which ``Time`` could loose precision, with deviations
5692  of 300 ns. [#9328]
5693
5694
5695Other Changes and Additions
5696---------------------------
5697
5698- Updated IERS A URLs due to USNO prolonged maintenance. [#9443]
5699
5700
5701
57022.0.15 (2019-10-06)
5703===================
5704
5705Bug Fixes
5706---------
5707
5708astropy.coordinates
5709^^^^^^^^^^^^^^^^^^^
5710
5711- Fixed a bug where the string representation of a ``BaseCoordinateFrame``
5712  object could become garbled under specific circumstances when the frame
5713  defines custom component names via ``RepresentationMapping``. [#8869]
5714
5715astropy.io.fits
5716^^^^^^^^^^^^^^^
5717
5718- Fix uint conversion in ``FITS_rec`` when slicing a table. [#8982]
5719
5720- Fix reading of unsigned 8-bit integer with compressed fits. [#9219]
5721
5722astropy.nddata
5723^^^^^^^^^^^^^^
5724
5725- Fixed a bug in ``overlap_slices`` where the ``"strict"`` mode was
5726  too strict for a small array along the upper edge of the large array.
5727  [#8901]
5728
5729- Fixed a bug in ``overlap_slices`` where a ``NoOverlapError`` would
5730  be incorrectly raised for a 0-shaped small array at the origin.
5731  [#8901]
5732
5733astropy.samp
5734^^^^^^^^^^^^
5735
5736- Fixed a bug that caused an incorrectly constructed warning message
5737  to raise an error. [#8966]
5738
5739astropy.table
5740^^^^^^^^^^^^^
5741
5742- Fix ``FixedWidthNoHeader`` to pay attention to ``data_start`` keyword when
5743  finding first data line to split columns [#8485, #8511]
5744
5745- Fix bug when initializing ``Table`` with ``rows`` as a generator. [#9315]
5746
5747- Fix ``join`` when there are multiple mixin (Quantity) columns as keys. [#9313]
5748
5749astropy.units
5750^^^^^^^^^^^^^
5751
5752- ``Quantity`` now preserves the ``dtype`` for anything that is floating
5753  point, including ``float16``. [#8872]
5754
5755- ``Unit()`` now accepts units with fractional exponents such as ``m(3/2)``
5756  in the default/``fits`` and ``vounit`` formats that would previously
5757  have been rejected for containing multiple solidi (``/``). [#9000]
5758
5759- Fixed the LaTeX representation of units containing a superscript. [#9218]
5760
5761astropy.visualization
5762^^^^^^^^^^^^^^^^^^^^^
5763
5764- Fixed compatibility issues with latest versions of Matplotlib. [#8961]
5765
5766
5767Other Changes and Additions
5768---------------------------
5769
5770- Updated required version of Cython to v0.29.13 to make sure that
5771  generated C files are compatible with the upcoming Python 3.8 release
5772  as well as earlier supported versions of Python. [#9198]
5773
5774
5775
57762.0.14 (2019-06-14)
5777===================
5778
5779Bug Fixes
5780---------
5781
5782astropy.io.fits
5783^^^^^^^^^^^^^^^
5784
5785- Fix ``Header.update`` which was dropping the comments when passed
5786  a ``Header`` object. [#8840]
5787
5788astropy.modeling
5789^^^^^^^^^^^^^^^^
5790
5791- ``Moffat1D.fwhm`` and ``Moffat2D.fwhm`` will return a positive value when
5792  ``gamma`` is negative. [#8801, #8815]
5793
5794astropy.units
5795^^^^^^^^^^^^^
5796
5797- Fixed a bug that prevented ``EarthLocation`` from being initialized with
5798  numpy >=1.17. [#8849]
5799
5800astropy.visualization
5801^^^^^^^^^^^^^^^^^^^^^
5802
5803- Fixed ``quantity_support`` to work around the fact that matplotlib
5804  does not detect subclasses in its ``units`` framework. With this,
5805  ``Angle`` and other subclasses work correctly. [#8818]
5806
5807- Fixed ``quantity_support`` to work properly if multiple context managers
5808  are nested. [#8844]
5809
5810
58112.0.13 (2019-06-08)
5812===================
5813
5814Bug Fixes
5815---------
5816
5817astropy.io.fits
5818^^^^^^^^^^^^^^^
5819- Fixed bug in ``ColDefs._init_from_array()`` that caused unsigned datatypes
5820  with the opposite endianness as the host architecture to fail the
5821  TestColumnFunctions.test_coldefs_init_from_array unit test. [#8460]
5822
5823astropy.io.misc
5824^^^^^^^^^^^^^^^
5825
5826- Explicitly set PyYAML default flow style to None to ensure consistent
5827  astropy YAML output for PyYAML version 5.1 and later. [#8500]
5828
5829astropy.io.votable
5830^^^^^^^^^^^^^^^^^^
5831
5832- Block floating-point columns from using repr format when converted to Table
5833  [#8358]
5834
5835astropy.stats
5836^^^^^^^^^^^^^
5837
5838- Fixed issue in ``bayesian_blocks`` when called with the ``ncp_prior``
5839  keyword. [#8339]
5840
5841astropy.units
5842^^^^^^^^^^^^^
5843
5844- Fix ``take`` when one gets only a single element from a ``Quantity``,
5845  ensuring it returns a ``Quantity`` rather than a scalar. [#8617]
5846
5847
5848
58492.0.12 (2019-02-23)
5850===================
5851
5852New Features
5853------------
5854
5855astropy.utils
5856^^^^^^^^^^^^^
5857
5858- The ``deprecated_renamed_argument`` decorator now capable deprecating an
5859  argument without renaming it. It also got a new ``alternative`` keyword
5860  argument to suggest alternative functionality instead of the removed
5861  one. [#8324]
5862
5863
5864Bug Fixes
5865---------
5866
5867astropy.io.fits
5868^^^^^^^^^^^^^^^
5869
5870- Fixed bug in ``ColDefs._init_from_array()`` that caused non-scalar unsigned
5871  entries to not have the correct bzero value set. [#8353]
5872
5873astropy.modeling
5874^^^^^^^^^^^^^^^^
5875
5876- Fixed compatibility of ``JointFitter`` with the latest version of Numpy.
5877  [#7984]
5878
5879astropy.table
5880^^^^^^^^^^^^^
5881
5882- Fix ``.quantity`` property of ``Column`` class for function-units (e.g.,
5883  ``dex``). Previously setting this was possible, but getting raised
5884  an error. [#8425]
5885
5886- Fixes a bug where initializing a new ``Table`` from the final row of an
5887  existing ``Table`` failed.  This happened when that row was generated using
5888  the item index ``[-1]``. [#8422]
5889
5890astropy.wcs
5891^^^^^^^^^^^
5892
5893- Fix bug that caused ``WCS.has_celestial``, ``wcs_to_celestial_frame``, and
5894  other functionality depending on it to fail in the presence of correlated
5895  celestial and other axes. [#8420]
5896
5897
5898Other Changes and Additions
5899---------------------------
5900
5901- Fixed ``make clean`` for the documentation on Windows to ensure it
5902  properly removes the ``api`` and ``generated`` directories. [#8346]
5903
5904- Updating bundled ``pytest-openfiles`` to v0.3.2. [#8434]
5905
5906- Making ``ErfaWarning`` and ``ErfaError`` available via
5907  ``astropy.utils.exceptions``. [#8441]
5908
5909
5910
59112.0.11 (2018-12-31)
5912===================
5913
5914Bug Fixes
5915---------
5916
5917astropy.io.ascii
5918^^^^^^^^^^^^^^^^
5919
5920- Fix fast reader C tokenizer to handle double quotes in quoted field.
5921  [#8283]
5922
5923astropy.io.fits
5924^^^^^^^^^^^^^^^
5925
5926- Fix a bug in ``io.fits`` with writing Fortran-ordered arrays to file
5927  objects. [#8282]
5928
5929astropy.units
5930^^^^^^^^^^^^^
5931
5932- Add support for ``np.matmul`` as a ``ufunc`` (new in numpy 1.16).
5933  [#8264, #8305]
5934
5935astropy.utils
5936^^^^^^^^^^^^^
5937
5938- Fix failures caused by IERS_A_URL being unavailable by introducing
5939  IERS_A_URL_MIRROR. [#8308]
5940
5941
5942
59432.0.10 (2018-12-04)
5944===================
5945
5946Bug Fixes
5947---------
5948
5949astropy.convolution
5950^^^^^^^^^^^^^^^^^^^
5951
5952- Fix Moffat2DKernel's FWHM computation, which has an influence on the default
5953  size of the kernel when no size is given. [#8105]
5954
5955astropy.coordinates
5956^^^^^^^^^^^^^^^^^^^
5957
5958- Disable ``of_address`` usage due to Google API now requiring API key. [#7993]
5959
5960astropy.io.fits
5961^^^^^^^^^^^^^^^
5962
5963- ``fits.append`` now correctly handles file objects with valid modes other
5964  than ``ostream``. [#7856]
5965
5966astropy.table
5967^^^^^^^^^^^^^
5968
5969- Fix ``Table.show_in_notebook`` failure when mixin columns are present. [#8069]
5970
5971astropy.tests
5972^^^^^^^^^^^^^
5973
5974- Explicitly disallow incompatible versions of ``pytest`` when using the test
5975  runner. [#8188]
5976
5977astropy.units
5978^^^^^^^^^^^^^
5979
5980- Fixed the spelling of the 'luminous emittance/illuminance' physical
5981  property. [#7942]
5982
5983astropy.visualization
5984^^^^^^^^^^^^^^^^^^^^^
5985
5986- Fixed a bug that caused origin to be incorrect if not specified. [#7927]
5987
5988- Fixed a bug that caused an error when plotting grids multiple times
5989  with grid_type='contours'. [#7927]
5990
5991- Put an upper limit on the number of bins in ``hist`` and ``histogram`` and
5992  factor out calculation of bin edges into public function
5993  ``calculate_bin_edges``. [#7991]
5994
5995
5996Other Changes and Additions
5997---------------------------
5998
5999- Fixing ``astropy.__citation__`` to provide the full bibtex entry of the 2018
6000  paper. [#8110]
6001
6002- Pytest 4.0 is not supported by the 2.0.x LTS releases. [#8173]
6003
6004- Updating bundled ``pytest-remotedata`` to v0.3.1. [#8174]
6005
6006- Updating bundled ``pytest-doctestplus`` to v0.2.0. [#8175]
6007
6008- Updating bundled ``pytest-openfiles`` to v0.3.0. [#8176]
6009
6010- Adding ``warning_type`` keyword argument to the "deprecated" decorators to
6011  allow issuing custom warning types instead of the default
6012  ``AstropyDeprecationWarning``. [#8178]
6013
6014
60152.0.9 (2018-10-14)
6016==================
6017
6018Bug Fixes
6019---------
6020
6021astropy.io.ascii
6022^^^^^^^^^^^^^^^^
6023
6024- Fix reading of big files with the fast reader. [#7885]
6025
6026astropy.io.fits
6027^^^^^^^^^^^^^^^
6028
6029- ``HDUList.__contains__()`` now works with ``HDU`` arguments. That is,
6030  ``hdulist[0] in hdulist`` now works as expected. [#7282]
6031
6032- ``HDUList`` s can now be written to streams in Python 3 [#7850]
6033
6034astropy.nddata
6035^^^^^^^^^^^^^^
6036
6037- Fixed the bug in CCData.read when the HDU is not specified and the first one
6038  is empty so the function searches for the first HDU with data which may not
6039  have an image extension. [#7739]
6040
6041astropy.stats
6042^^^^^^^^^^^^^
6043
6044- Fixed bugs in biweight statistics functions where a constant data
6045  array (or if using the axis keyword, constant along an axis) would
6046  return NaN. [#7737]
6047
6048astropy.table
6049^^^^^^^^^^^^^
6050
6051- Fixed a bug in ``to_pandas()`` where integer type masked columns were always
6052  getting converted to float. This could cause loss of precision. Now this only
6053  occurs if there are actually masked data values, in which case ``pandas``
6054  does require the values to be float so that ``NaN`` can be used to mark the
6055  masked values. [#7741, #7747]
6056
6057astropy.tests
6058^^^^^^^^^^^^^
6059
6060- Change the name of the configuration variable controlling the location of the
6061  Astropy cache in the Pytest plugin from ``cache_dir`` to
6062  ``astropy_cache_dir``. The command line flag also changed to
6063  ``--astropy-cache-dir``.  This prevents a conflict with the ``cache_dir``
6064  variable provided by pytest itself. Also made similar change to
6065  ``config_dir`` option as a precaution. [#7721]
6066
6067astropy.units
6068^^^^^^^^^^^^^
6069
6070- ``UnrecognizedUnit`` instances can now be compared to any other object
6071  without raising `TypeError`. [#7606]
6072
6073astropy.visualization
6074^^^^^^^^^^^^^^^^^^^^^
6075
6076- Fix compatibility with Matplotlib 3.0. [#7839]
6077
6078- Fix an issue that caused a crash when using WCSAxes with a custom Transform
6079  object and when using ``grid_type='contours'`` to plot a grid. [#7846]
6080
6081astropy.wcs
6082^^^^^^^^^^^
6083
6084- Instead of raising an error ``astropy.wcs`` now returns the input when
6085  the input has zero size.                                       [#7746]
6086
6087- Fix ``malloc(0)`` bug in ``pipeline_all_pixel2world()`` and
6088  ``pipeline_pix2foc()``. They now raise an exception for input with
6089  zero coordinates, i.e. shape = (0, n). [#7806]
6090
6091- Fixed an issue with scalar input when WCS.naxis is one. [#7858]
6092
6093Other Changes and Additions
6094---------------------------
6095
6096- Added a new ``astropy.__citation__`` attribute which gives a citation
6097  for Astropy in bibtex format. Made sure that both this and
6098  ``astropy.__bibtex__`` works outside the source environment, too. [#7718]
6099
6100
6101
61022.0.8 (2018-08-02)
6103==================
6104
6105Bug Fixes
6106---------
6107
6108astropy.convolution
6109^^^^^^^^^^^^^^^^^^^
6110
6111- Correct data type conversion for non-float masked kernels. [#7542]
6112
6113- Fix non-float or masked, zero sum kernels when ``normalize_kernel=False``.
6114  Non-floats would yield a type error and masked kernels were not being filled.
6115  [#7541]
6116
6117astropy.coordinates
6118^^^^^^^^^^^^^^^^^^^
6119
6120- Ensure that relative humidities can be given as Quantities, rather than take
6121  any quantity and just strip its unit. [#7668]
6122
6123astropy.nddata
6124^^^^^^^^^^^^^^
6125
6126- Fixed ``Cutout2D`` output WCS NAXIS values to reflect the cutout
6127  image size. [#7552]
6128
6129astropy.table
6130^^^^^^^^^^^^^
6131
6132- Fixed a bug in ``add_columns`` method where ``rename_duplicate=True`` would
6133  cause an error if there were no duplicates. [#7540]
6134
6135astropy.tests
6136^^^^^^^^^^^^^
6137
6138- Fixed bug in ``python setup.py test --coverage`` on Windows machines. [#7673]
6139
6140astropy.time
6141^^^^^^^^^^^^
6142
6143- Avoid rounding errors when converting ``Quantity`` to ``TimeDelta``. [#7625]
6144
6145astropy.visualization
6146^^^^^^^^^^^^^^^^^^^^^
6147
6148- Fixed a bug that caused the position of the tick values in decimal mode
6149  to be incorrectly determined. [#7332]
6150
6151astropy.wcs
6152^^^^^^^^^^^
6153
6154- Fixed a bug that caused ``wcs_to_celestial_frame``, ``skycoord_to_pixel``, and
6155  ``pixel_to_skycoord`` to raise an error if the axes of the celestial WCS were
6156  swapped. [#7691]
6157
6158
61592.0.7 (2018-06-01)
6160==================
6161
6162Bug Fixes
6163---------
6164
6165astropy.modeling
6166^^^^^^^^^^^^^^^^
6167
6168- Fixed ``Tabular`` models to not change the shape of data. [#7411]
6169
6170astropy.stats
6171^^^^^^^^^^^^^
6172
6173- In ``freedman_bin_width``, if the data has too small IQR,
6174  raise ``ValueError``. [#7248, #7402]
6175
6176astropy.table
6177^^^^^^^^^^^^^
6178
6179- Fix a performance issue in ``MaskedColumn`` where initialization was
6180  extremely slow for large arrays with the default ``mask=None``. [#7422]
6181
6182- Fix printing table row indexed with unsigned integer. [#7469]
6183
6184- Fix copy of mask when copying a Table, as this is no more done systematically
6185  by Numpy since version 1.14. Also fixed a problem when MaskedColumn was
6186  initialized with ``mask=np.ma.nomask``. [#7486]
6187
6188astropy.time
6189^^^^^^^^^^^^
6190
6191- Fixed a bug in Time that raised an error when initializing a subclass of Time
6192  with a Time object. [#7453]
6193
6194astropy.utils
6195^^^^^^^^^^^^^
6196
6197- Fixed a bug that improperly handled unicode case of URL mirror in Python 2.
6198  [#7493]
6199
6200astropy.visualization
6201^^^^^^^^^^^^^^^^^^^^^
6202
6203- Fixed a bug that prevented legends from being added to plots done with
6204  units. [#7510]
6205
6206
6207Other Changes and Additions
6208---------------------------
6209
6210- Bundled ``pytest-remotedata`` plugin is upgraded to 0.3. [#7493]
6211
6212
62132.0.6 (2018-04-23)
6214==================
6215
6216Bug Fixes
6217---------
6218
6219astropy.convolution
6220^^^^^^^^^^^^^^^^^^^
6221
6222- convolve(boundary=None) requires the kernel to be smaller than the image.
6223  This was never actually checked, it now is and an exception is raised.
6224  [#7313]
6225
6226astropy.units
6227^^^^^^^^^^^^^
6228
6229- ``u.quantity_input`` no longer errors if the return annotation for a
6230  function is ``None``. [#7336, #7380]
6231
6232astropy.visualization
6233^^^^^^^^^^^^^^^^^^^^^
6234
6235- Explicitly default to origin='lower' in WCSAxes. [#7331]
6236
6237- Lists of units are now converted in the Matplotlib unit converter. This means
6238  that for Matplotlib versions later than 2.2, more plotting functions now work
6239  with units (e.g. errorbar). [#7037]
6240
6241
6242Other Changes and Additions
6243---------------------------
6244
6245- Updated the bundled CFITSIO library to 3.44. This is to remedy another
6246  critical security vulnerability that was identified by NASA. See
6247  ``cextern/cfitsio/docs/changes.txt`` for additional information. [#7370]
6248
6249
62502.0.5 (2018-03-12)
6251==================
6252
6253Bug Fixes
6254---------
6255
6256astropy.coordinates
6257^^^^^^^^^^^^^^^^^^^
6258
6259- Add a workaround for a bug in the einsum function in Numpy 1.14.0. [#7187]
6260
6261- Fix problems with printing ``Angle`` instances under numpy 1.14.1. [#7234]
6262
6263astropy.io.fits
6264^^^^^^^^^^^^^^^
6265
6266- Fixed the ``fitsdiff`` script for matching fits file with one in a
6267  directory path. [#7085]
6268
6269- Make sure that lazily-loaded ``HDUList`` is automatically loaded when calling
6270  ``hdulist.pop``. [#7186]
6271
6272astropy.modeling
6273^^^^^^^^^^^^^^^^
6274
6275- Propagate weights to underlying fitter in ``FittingWithOutlierRemoval`` [#7249]
6276
6277astropy.tests
6278^^^^^^^^^^^^^
6279
6280- Support dotted package names as namespace packages when gathering test
6281  coverage. [#7170]
6282
6283astropy.visualization
6284^^^^^^^^^^^^^^^^^^^^^
6285
6286- Matplotlib axes have the ``axisbelow`` property to control the z-order of
6287  ticks, tick labels, and grid lines. WCSAxes will now respect this property.
6288  This is useful for drawing scale bars or inset boxes, which should have a
6289  z-order that places them above all ticks and gridlines. [#7098]
6290
6291
6292Other Changes and Additions
6293---------------------------
6294
6295- Updated the bundled CFITSIO library to 3.430. This is to remedy a critical
6296  security vulnerability that was identified by NASA. See
6297  ``cextern/cfitsio/docs/changes.txt`` for additional information. [#7274, #7275]
6298
6299
63002.0.4 (2018-02-06)
6301==================
6302
6303Bug Fixes
6304---------
6305
6306astropy.convolution
6307^^^^^^^^^^^^^^^^^^^
6308
6309- Fixed IndexError when ``preserve_nan=True`` in ``convolve_fft``. Added
6310  testing with ``preserve_nan=True``. [#7000]
6311
6312astropy.coordinates
6313^^^^^^^^^^^^^^^^^^^
6314
6315- The ``sites.json`` file is now parsed explicitly with a UTF-8 encoding. This
6316  means that future revisions to the file with unicode observatory names can
6317  be done without breaking the site registry parser.  [#7082]
6318
6319- Working around a bug in Numpy 1.14.0 that broke some coordinate
6320  transformations. [#7105]
6321
6322- Fixed a bug where negative angles could be rounded wrongly when converting
6323  to a string with seconds omitted. [#7148]
6324
6325astropy.io.fits
6326^^^^^^^^^^^^^^^
6327
6328- When datafile is missing, fits.tabledump uses input file name to build
6329  output file name. Fixed how it gets input file name from HDUList. [#6976]
6330
6331- Fix in-place updates to scaled columns. [#6956]
6332
6333astropy.io.registry
6334^^^^^^^^^^^^^^^^^^^
6335
6336- Fixed bug in identifying inherited registrations from multiple ancestors [#7156]
6337
6338astropy.modeling
6339^^^^^^^^^^^^^^^^
6340
6341- Fixed a bug in ``LevMarLSQFitter`` when fitting 2D models with constraints. [#6705]
6342
6343astropy.utils
6344^^^^^^^^^^^^^
6345
6346- ``download_file`` function will check for cache downloaded from mirror URL
6347  first before attempting actual download if primary URL is unavailable. [#6987]
6348
6349astropy.visualization
6350^^^^^^^^^^^^^^^^^^^^^
6351
6352- Fixed test failures for ``astropy.visualization.wcsaxes`` which were due to
6353  local matplotlibrc files being taken into account. [#7132]
6354
6355
6356Other Changes and Additions
6357---------------------------
6358
6359- Fixed broken links in the documentation. [#6745]
6360
6361- Substantial performance improvement (potentially >1000x for some cases) when
6362  converting non-scalar ``coordinates.Angle`` objects to strings. [#7004]
6363
6364
63652.0.3 (2017-12-13)
6366==================
6367
6368Bug Fixes
6369---------
6370
6371astropy.coordinates
6372^^^^^^^^^^^^^^^^^^^
6373
6374- Ecliptic frame classes now support attributes ``v_x``, ``v_y``, ``v_z`` when
6375  using with a Cartesian representation. [#6569]
6376
6377- Added a nicer error message when accidentally calling ``frame.representation``
6378  instead of ``frame.data`` in the context of methods that use ``._apply()``.
6379  [#6561]
6380
6381- Creating a new ``SkyCoord`` from a list of multiple ``SkyCoord`` objects now
6382  yield the correct type of frame, and works at all for non-equatorial frames.
6383  [#6612]
6384
6385- Improved accuracy of velocity calculation in ``EarthLocation.get_gcrs_posvel``.
6386  [#6699]
6387
6388- Improved accuracy of radial velocity corrections in
6389  ``SkyCoord.radial_velocity_correction```. [#6861]
6390
6391- The precision of ecliptic frames is now much better, after removing the
6392  nutation from the rotation and fixing the computation of the position of the
6393  Sun. [#6508]
6394
6395astropy.extern
6396^^^^^^^^^^^^^^
6397
6398- Version 0.2.1 of ``pytest-astropy`` is included as an external package.
6399  [#6918]
6400
6401astropy.io.fits
6402^^^^^^^^^^^^^^^
6403
6404- Fix writing the result of ``fitsdiff`` to file with ``--output-file``. [#6621]
6405
6406- Fix a minor bug where ``FITS_rec`` instances can not be indexed with tuples
6407  and other sequences that end up with a scalar. [#6955, #6966]
6408
6409astropy.io.misc
6410^^^^^^^^^^^^^^^
6411
6412- Fix ``ImportError`` when ``hdf5`` is imported first in a fresh Python
6413  interpreter in Python 3. [#6604, #6610]
6414
6415astropy.nddata
6416^^^^^^^^^^^^^^
6417
6418- Suppress errors during WCS creation in CCDData.read(). [#6500]
6419
6420- Fixed a problem with ``CCDData.read`` when the extension wasn't given and the
6421  primary HDU contained no ``data`` but another HDU did. In that case the header
6422  were not correctly combined. [#6489]
6423
6424astropy.stats
6425^^^^^^^^^^^^^
6426
6427- Fixed an issue where the biweight statistics functions would
6428  sometimes cause runtime underflow/overflow errors for float32 input
6429  arrays. [#6905]
6430
6431astropy.table
6432^^^^^^^^^^^^^
6433
6434- Fixed a problem when printing a table when a column is deleted and
6435  garbage-collected, and the format function caching mechanism happens
6436  to re-use the same cache key. [#6714]
6437
6438- Fixed a problem when comparing a unicode masked column (on left side) to
6439  a bytes masked column (on right side). [#6899]
6440
6441- Fixed a problem in comparing masked columns in bytes and unicode when the
6442  unicode had masked entries. [#6899]
6443
6444astropy.tests
6445^^^^^^^^^^^^^
6446
6447- Fixed a bug that causes tests for rst files to not be run on certain
6448  platforms. [#6555, #6608]
6449
6450- Fixed a bug that caused the doctestplus plugin to not work nicely with the
6451  hypothesis package. [#6605, #6609]
6452
6453- Fixed a bug that meant that the data.astropy.org mirror could not be used when
6454  using --remote-data=astropy. [#6724]
6455
6456- Support compatibility with new ``pytest-astropy`` plugins. [#6918]
6457
6458- When testing, astropy (or the package being tested) is now installed to
6459  a temporary directory instead of copying the build. This allows
6460  entry points to work correctly. [#6890]
6461
6462astropy.time
6463^^^^^^^^^^^^
6464
6465- Initialization of Time instances now is consistent for all formats to
6466  ensure that ``-0.5 <= jd2 < 0.5``. [#6653]
6467
6468astropy.units
6469^^^^^^^^^^^^^
6470
6471- Ensure that ``Quantity`` slices can be set with objects that have a ``unit``
6472  attribute (such as ``Column``). [#6123]
6473
6474astropy.utils
6475^^^^^^^^^^^^^
6476
6477- ``download_files_in_parallel`` now respects the given ``timeout`` value.
6478  [#6658]
6479
6480- Fixed bugs in remote data handling and also in IERS unit test related to path
6481  URL, and URI normalization on Windows. [#6651]
6482
6483- Fixed a bug that caused ``get_pkg_data_fileobj`` to not work correctly when
6484  used with non-local data from inside packages. [#6724]
6485
6486- Make sure ``get_pkg_data_fileobj`` fails if the URL can not be read, and
6487  correctly falls back on the mirror if necessary. [#6767]
6488
6489- Fix the ``finddiff`` option in ``find_current_module`` to properly deal
6490  with submodules. [#6767]
6491
6492- Fixed ``pyreadline`` import in ``utils.console.isatty`` for older IPython
6493  versions on Windows. [#6800]
6494
6495astropy.visualization
6496^^^^^^^^^^^^^^^^^^^^^
6497
6498- Fixed the vertical orientation of the ``fits2bitmap`` output bitmap
6499  image to match that of the FITS image. [#6844, #6969]
6500
6501- Added a workaround for a bug in matplotlib so that the ``fits2bitmap``
6502  script generates the correct output file type. [#6969]
6503
6504
6505Other Changes and Additions
6506---------------------------
6507
6508- No longer require LaTeX to build the documentation locally and
6509  use mathjax instead. [#6701]
6510
6511- Ensured that all tests use the Astropy data mirror if needed. [#6767]
6512
6513
65142.0.2 (2017-09-08)
6515==================
6516
6517Bug Fixes
6518---------
6519
6520astropy.coordinates
6521^^^^^^^^^^^^^^^^^^^
6522
6523- Ensure transformations via ICRS also work for coordinates that use cartesian
6524  representations. [#6440]
6525
6526- Fixed a bug that was preventing ``SkyCoord`` objects made from lists of other
6527  coordinate objects from being written out to ECSV files. [#6448]
6528
6529astropy.io.fits
6530^^^^^^^^^^^^^^^
6531
6532- Support the ``GZIP_2`` FITS image compression algorithm as claimed
6533  in docs. [#6486]
6534
6535astropy.io.votable
6536^^^^^^^^^^^^^^^^^^
6537
6538- Fixed a bug that wrote out VO table as version 1.2 instead of 1.3. [#6521]
6539
6540astropy.table
6541^^^^^^^^^^^^^
6542
6543- Fix a bug when combining unicode columns via join or vstack.  The character
6544  width of the output column was a factor of 4 larger than needed. [#6459]
6545
6546astropy.tests
6547^^^^^^^^^^^^^
6548
6549- Fixed running the test suite using --parallel. [#6415]
6550
6551- Added error handling for attempting to run tests in parallel without having
6552  the ``pytest-xdist`` package installed. [#6416]
6553
6554- Fixed issue running doctests with pytest>=3.2. [#6423, #6430]
6555
6556- Fixed issue caused by antivirus software in response to malformed compressed
6557  files used for testing. [#6522]
6558
6559- Updated top-level config file to properly ignore top-level directories.
6560  [#6449]
6561
6562astropy.units
6563^^^^^^^^^^^^^
6564
6565- Quantity._repr_latex_ now respects precision option from numpy
6566  printoptions. [#6412]
6567
6568astropy.utils
6569^^^^^^^^^^^^^
6570
6571- For the ``deprecated_renamed_argument`` decorator, refer to the deprecation‘s
6572  caller instead of ``astropy.utils.decorators``, to makes it easier to find
6573  where the deprecation warnings comes from. [#6422]
6574
6575
65762.0.1 (2017-07-30)
6577==================
6578
6579Bug Fixes
6580---------
6581
6582astropy.constants
6583^^^^^^^^^^^^^^^^^
6584
6585- Fixed Earth radius to be the IAU2015 value for the equatorial radius.
6586  The polar value had erroneously been used in 2.0. [#6400]
6587
6588astropy.coordinates
6589^^^^^^^^^^^^^^^^^^^
6590
6591- Added old frame attribute classes back to top-level namespace of
6592  ``astropy.coordinates``. [#6357]
6593
6594astropy.io.fits
6595^^^^^^^^^^^^^^^
6596
6597- Scaling an image always uses user-supplied values when given. Added
6598  defaults for scaling when bscale/bzero are not present (float images).
6599  Fixed a small bug in when to reset ``_orig_bscale``. [#5955]
6600
6601astropy.modeling
6602^^^^^^^^^^^^^^^^
6603
6604- Fixed a bug in initializing compound models with units. [#6398]
6605
6606astropy.nddata
6607^^^^^^^^^^^^^^
6608
6609- Updating CCDData.read() to be more flexible with inputs, don't try to
6610  delete keywords that are missing from the header. [#6388]
6611
6612astropy.tests
6613^^^^^^^^^^^^^
6614- Fixed the test command that is run from ``setuptools`` to allow it to
6615  gracefully handle keyboard interrupts and pass them on to the ``pytest``
6616  subprocess. This prompts ``pytest`` to teardown and display useful traceback
6617  and test information [#6369]
6618
6619astropy.visualization
6620^^^^^^^^^^^^^^^^^^^^^
6621
6622- Ticks and tick labels are now drawn in front of, rather than behind,
6623  gridlines in WCS axes. This improves legibility in situations where
6624  tick labels may be on the interior of the axes frame, such as the right
6625  ascension axis of an all-sky Aitoff or Mollweide projection. [#6361]
6626
6627astropy.wcs
6628^^^^^^^^^^^
6629
6630- Fix the missing wcskey part in _read_sip_kw, this will cause error when
6631  reading sip wcs while there is no default CRPIX1 CRPIX2 keywords and only
6632  CRPIX1n CRPIX2n in header. [#6372]
6633
6634
6635
66362.0 (2017-07-07)
6637================
6638
6639New Features
6640------------
6641
6642astropy.constants
6643^^^^^^^^^^^^^^^^^
6644
6645- Constants are now organized into version modules, with physical CODATA
6646  constants in the ``codata2010`` and ``codata2014`` sub-modules,
6647  and astronomical constants defined by the IAU in the ``iau2012`` and
6648  ``iau2015`` sub-modules. The default constants in ``astropy.constants``
6649  in Astropy 2.0 have been updated from ``iau2012`` to ``iau2015`` and
6650  from ``codata2010`` to ``codata2014``. The constants for 1.3 can be
6651  accessed in the ``astropyconst13`` sub-module and the constants for 2.0
6652  (the default in ``astropy.constants``) can also be accessed in the
6653  ``astropyconst20`` sub-module [#6083]
6654
6655- The GM mass parameters recommended by IAU 2015 Resolution B 3 have been
6656  added as ``GM_sun``, ``GM_jup``, and ``GM_earth``, for the Sun,
6657  Jupiter and the Earth. [#6083]
6658
6659astropy.convolution
6660^^^^^^^^^^^^^^^^^^^
6661
6662- Major change in convolution behavior and keyword arguments. Additional
6663  details are in the API section. [#5782]
6664
6665- Convolution with un-normalized and un-normalizable kernels is now possible.
6666  [#5782]
6667
6668- Add a new argument, ``normalization_rtol``, to ``convolve_fft``, allowing
6669  the user to specify the relative error tolerance in the normalization of
6670  the convolution kernel. [#5649, #5177]
6671
6672- Models can now be convoluted using ``convolve`` or ``convolve_fft``,
6673  which generates a regular compound model. [#6015]
6674
6675astropy.coordinates
6676^^^^^^^^^^^^^^^^^^^
6677
6678- Frame attributes set on ``SkyCoord`` are now always validated, and any
6679  ndarray-like operation (like slicing) will also be done on those. [#5751]
6680
6681- Caching of  all possible frame attributes was implemented. This greatly
6682  speeds up many ``SkyCoord`` operations. [#5703, #5751]
6683
6684- A class hierarchy was added to allow the representation layer to store
6685  differentials (i.e., finite derivatives) of coordinates.  This is intended
6686  to enable support for velocities in coordinate frames. [#5871]
6687
6688- ``replicate_without_data`` and ``replicate`` methods were added to
6689  coordinate frames that allow copying an existing frame object with various
6690  reference or copy behaviors and possibly overriding frame attributes. [#6182]
6691
6692- The representation class instances can now contain differential objects.
6693  This is primarily useful for internal operations that will provide support
6694  for transforming velocity components in coordinate frames. [#6169]
6695
6696- ``EarthLocation.to_geodetic()`` (and ``EarthLocation.geodetic``) now return
6697  namedtuples instead of regular tuples. [#6237]
6698
6699- ``EarthLocation`` now has ``lat`` and ``lon`` properties (equivalent to, but
6700  preferred over, the previous ``latitude`` and ``longitude``). [#6237]
6701
6702- Added a ``radial_velocity_correction`` method to ``SkyCoord`` to do compute
6703  barycentric and heliocentric velocity corrections. [#5752]
6704
6705- Added a new ``AffineTransform`` class for coordinate frame transformations.
6706  This class supports matrix operations with vector offsets in position or
6707  any differential quantities (so far, only velocity is supported). The
6708  matrix transform classes now subclass from the base affine transform.
6709  [#6218]
6710
6711- Frame objects now have experimental support for velocity components. Most
6712  frames default to accepting proper motion components and radial velocity,
6713  and the velocities transform correctly for any transformation that uses
6714  one of the ``AffineTransform``-type transformations.  For other
6715  transformations a finite-difference velocity transformation is available,
6716  although it is not as numerically stable as those that use
6717  ``AffineTransform``-type transformations. [#6219, #6226]
6718
6719astropy.io.ascii
6720^^^^^^^^^^^^^^^^
6721
6722- Allow to specify encoding in ``ascii.read``, only for Python 3 and with the
6723  pure-Python readers. [#5448]
6724
6725- Writing latex tables with only a ``tabular`` environment is now possible by
6726  setting ``latexdict['tabletyle']`` to ``None``. [#6205]
6727
6728- Allow ECSV format to support reading and writing mixin columns like
6729  ``Time``, ``SkyCoord``, ``Latitude``, and ``EarthLocation``. [#6181]
6730
6731astropy.io.fits
6732^^^^^^^^^^^^^^^
6733
6734- Checking available disk space before writing out file. [#5550, #4065]
6735
6736- Change behavior to warn about units that are not FITS-compliant when
6737  writing a FITS file but not when reading. [#5675]
6738
6739- Added absolute tolerance parameter when comparing FITS files. [#4729]
6740
6741- New convenience function ``printdiff`` to print out diff reports. [#5759]
6742
6743- Allow to instantiate a ``BinTableHDU`` directly from a ``Table`` object.
6744  [#6139]
6745
6746astropy.io.misc
6747^^^^^^^^^^^^^^^
6748
6749- YAML representer now also accepts numpy types. [#6077]
6750
6751astropy.io.registry
6752^^^^^^^^^^^^^^^^^^^
6753
6754- New functions to unregister readers, writers, and identifiers. [#6217]
6755
6756astropy.modeling
6757^^^^^^^^^^^^^^^^
6758
6759- Added ``SmoothlyBrokenPowerLaw1D`` model. [#5656]
6760
6761- Add ``n_submodels`` shared method to single and compound models, which
6762  allows users to get the number of components of a given single (compound)
6763  model. [#5747]
6764
6765- Added a ``name`` setter for instances of ``_CompoundModel``. [#5741]
6766
6767- Added FWHM properties to Gaussian and Moffat models. [#6027]
6768
6769- Added support for evaluating models and setting the results for inputs
6770  outside the bounding_box to a user specified ``fill_value``. This
6771  is controlled by a new optional boolean keyword ``with_bounding_box``. [#6081]
6772
6773- Added infrastructure support for units on parameters and during
6774  model evaluation and fitting, added support for units on all
6775  functional, power-law, polynomial, and rotation models where this
6776  is appropriate. A new BlackBody1D model has been added.
6777  [#4855, #6183, #6204, #6235]
6778
6779astropy.nddata
6780^^^^^^^^^^^^^^
6781
6782- Added an image class, ``CCDData``. [#6173]
6783
6784astropy.stats
6785^^^^^^^^^^^^^
6786
6787- Added ``biweight_midcovariance`` function. [#5777]
6788
6789- Added ``biweight_scale`` and ``biweight_midcorrelation``
6790  functions. [#5991]
6791
6792- ``median_absolute_deviation`` and ``mad_std`` have ``ignore_nan`` option
6793  that will use ``np.ma.median`` with nans masked out or ``np.nanmedian``
6794  instead of ``np.median`` when computing the median. [#5232]
6795
6796- Implemented statistical estimators for Ripley's K Function. [#5712]
6797
6798- Added ``SigmaClip`` class. [#6206]
6799
6800- Added ``std_ddof`` keyword option to ``sigma_clipped_stats``.
6801  [#6066, #6207]
6802
6803astropy.table
6804^^^^^^^^^^^^^
6805
6806- Issue a warning when assigning a string value to a column and
6807  the string gets truncated.  This can occur because numpy string
6808  arrays are fixed-width and silently drop characters which do not
6809  fit within the fixed width. [#5624, #5819]
6810
6811- Added functionality to allow ``astropy.units.Quantity`` to be written
6812  as a normal column to FITS files. [#5910]
6813
6814- Add support for Quantity columns (within a ``QTable``) in table
6815  ``join()``, ``hstack()`` and ``vstack()`` operations. [#5841]
6816
6817- Allow unicode strings to be stored in a Table bytestring column in
6818  Python 3 using UTF-8 encoding.  Allow comparison and assignment of
6819  Python 3 ``str`` object in a bytestring column (numpy ``'S'`` dtype).
6820  If comparison with ``str`` instead of ``bytes`` is a problem
6821  (and ``bytes`` is really more logical), please open an issue on GitHub.
6822  [#5700]
6823
6824- Added functionality to allow ``astropy.units.Quantity`` to be read
6825  from and written to a VOtable file. [#6132]
6826
6827- Added support for reading and writing a table with mixin columns like
6828  ``Time``, ``SkyCoord``, ``Latitude``, and ``EarthLocation`` via the
6829  ASCII ECSV format. [#6181]
6830
6831- Bug fix for ``MaskedColumn`` insert method, where ``fill_value`` attribute
6832  was not being passed along to the copy of the ``MaskedColumn`` that was
6833  returned. [#7585]
6834
6835astropy.tests
6836^^^^^^^^^^^^^
6837
6838- ``enable_deprecations_as_exceptions`` function now accepts additional
6839  user-defined module imports and warning messages to ignore. [#6223, #6334]
6840
6841astropy.units
6842^^^^^^^^^^^^^
6843
6844- The ``astropy.units.quantity_input`` decorator will now convert the output to
6845  the unit specified as a return annotation under Python 3. [#5606]
6846
6847- Passing a logarithmic unit to the ``Quantity`` constructor now returns the
6848  appropriate logarithmic quantity class if ``subok=True``. For instance,
6849  ``Quantity(1, u.dex(u.m), subok=True)`` yields ``<Dex 1.0 dex(m)>``. [#5928]
6850
6851- The ``quantity_input`` decorator now accepts a string physical type in
6852  addition to of a unit object to specify the expected input ``Quantity``'s
6853  physical type. For example, ``@u.quantity_input(x='angle')`` is now
6854  functionally the same as ``@u.quantity_input(x=u.degree)``. [#3847]
6855
6856- The ``quantity_input`` decorator now also supports unit checking for
6857  optional keyword arguments and accepts iterables of units or physical types
6858  for specifying multiple valid equivalent inputs. For example,
6859  ``@u.quantity_input(x=['angle', 'angular speed'])`` or
6860  ``@u.quantity_input(x=[u.radian, u.radian/u.yr])`` would both allow either
6861  a ``Quantity`` angle or angular speed passed in to the argument ``x``.
6862  [#5653]
6863
6864- Added a new equivalence ``molar_mass_amu`` between g/mol to
6865  atomic mass units. [#6040, #6113]
6866
6867- ``Quantity`` has gained a new ``to_value`` method which returns the value
6868  of the quantity in a given unit. [#6127]
6869
6870- ``Quantity`` now supports the ``@`` operator for matrix multiplication that
6871  was introduced in Python 3.5, for all supported versions of numpy. [#6144]
6872
6873- ``Quantity`` supports the new ``__array_ufunc__`` protocol introduced in
6874  numpy 1.13.  As a result, operations that involve unit conversion will be
6875  sped up considerably (by up to a factor of two for costly operations such
6876  as trigonometric ones). [#2583]
6877
6878astropy.utils
6879^^^^^^^^^^^^^
6880
6881- Added a new ``dataurl_mirror`` configuration item in ``astropy.utils.data``
6882  that is used to indicate a mirror for the astropy data server. [#5547]
6883
6884- Added a new convenience method ``get_cached_urls`` to ``astropy.utils.data``
6885  for getting a list of the URLs in your cache. [#6242]
6886
6887astropy.wcs
6888^^^^^^^^^^^
6889
6890- Upgraded the included wcslib to version 5.16. [#6225]
6891
6892  The minimum required version of wcslib in is 5.14.
6893
6894
6895API Changes
6896-----------
6897
6898astropy.analytic_functions
6899^^^^^^^^^^^^^^^^^^^^^^^^^^
6900
6901- This entire sub-package is deprecated because blackbody has been moved to
6902  ``astropy.modeling.blackbody``. [#6191]
6903
6904astropy.convolution
6905^^^^^^^^^^^^^^^^^^^
6906
6907- Major change in convolution behavior and keyword arguments.
6908  ``astropy.convolution.convolve_fft`` replaced ``interpolate_nan`` with
6909  ``nan_treatment``, and ``astropy.convolution.convolve`` received a new
6910  ``nan_treatment`` argument. ``astropy.convolution.convolve`` also no longer
6911  double-interpolates interpolates over NaNs, although that is now available
6912  as a separate ``astropy.convolution.interpolate_replace_nans`` function. See
6913  `the backwards compatibility note
6914  <https://docs.astropy.org/en/v2.0.16/convolution/index.html#a-note-on-backward-compatibility-pre-v2-0>`_
6915  for more on how to get the old behavior (and why you probably don't want to.)
6916  [#5782]
6917
6918astropy.coordinates
6919^^^^^^^^^^^^^^^^^^^
6920
6921- The ``astropy.coordinates.Galactic`` frame previously was had the cartesian
6922  ordering 'w', 'u', 'v' (for 'x', 'y', and 'z', respectively).  This was an
6923  error and against the common convention.  The 'x', 'y', and 'z' axes now
6924  map to 'u', 'v', and 'w', following the right-handed ('u' points to
6925  the Galactic center) convention. [#6330]
6926
6927- Removed deprecated ``angles.rotation_matrix`` and
6928  ``angles.angle_axis``. Use the routines in
6929  ``coordinates.matrix_utilities`` instead. [#6170]
6930
6931- ``EarthLocation.latitude`` and ``EarthLocation.longitude`` are now
6932  deprecated in favor of ``EarthLocation.lat`` and ``EarthLocation.lon``.
6933  They former will be removed in a future version. [#6237]
6934
6935- The ``FrameAttribute`` class and subclasses have been renamed to just contain
6936  ``Attribute``. For example, ``QuantityFrameAttribute`` is now
6937  ``QuantityAttribute``. [#6300]
6938
6939astropy.cosmology
6940^^^^^^^^^^^^^^^^^
6941
6942- Cosmological models do not include any contribution from neutrinos or photons
6943  by default -- that is, the default value of Tcmb0 is 0.  This does not affect
6944  built in models (such as WMAP or Planck). [#6112]
6945
6946astropy.io.fits
6947^^^^^^^^^^^^^^^
6948
6949- Remove deprecated ``NumCode`` and ``ImgCode`` properties on FITS
6950  ``_ImageBaseHDU``.  Use module-level constants ``BITPIX2DTYPE`` and
6951  ``DTYPE2BITPIX`` instead. [#4993]
6952
6953- ``comments`` meta key (which is ``io.ascii``'s table convention) is output
6954  to ``COMMENT`` instead of ``COMMENTS`` header. Similarly, ``COMMENT``
6955  headers are read into ``comments`` meta [#6097]
6956
6957- Remove compatibility code which forced loading all HDUs on close. The old
6958  behavior can be used with ``lazy_load_hdus=False``. Because of this change,
6959  trying to access the ``.data`` attribute from an HDU which is not loaded
6960  now raises a ``IndexError`` instead of a ``ValueError``. [#6082]
6961
6962- Deprecated ``clobber`` keyword; use ``overwrite``. [#6203]
6963
6964- Add EXTVER column to the output of ``HDUList.info()``. [#6124]
6965
6966astropy.modeling
6967^^^^^^^^^^^^^^^^
6968
6969- Removed deprecated ``Redshift`` model; Use ``RedshiftScaleFactor``. [#6053]
6970
6971- Removed deprecated ``Pix2Sky_AZP.check_mu`` and ``Pix2Sky_SZP.check_mu``
6972  methods. [#6170]
6973
6974- Deprecated ``GaussianAbsorption1D`` model, as it can be better represented
6975  by subtracting ``Gaussian1D`` from ``Const1D``. [#6200]
6976
6977- Added method ``sum_of_implicit_terms`` to ``Model``, needed when performing
6978  a linear fit to a model that has built-in terms with no corresponding
6979  parameters (primarily the ``1*x`` term of ``Shift``). [#6174]
6980
6981astropy.nddata
6982^^^^^^^^^^^^^^
6983
6984- Removed deprecated usage of parameter ``propagate_uncertainties`` as a
6985  positional keyword. [#6170]
6986
6987- Removed deprecated ``support_correlated`` attribute. [#6170]
6988
6989- Removed deprecated ``propagate_add``, ``propagate_subtract``,
6990  ``propagate_multiply`` and ``propagate_divide`` methods. [#6170]
6991
6992astropy.stats
6993^^^^^^^^^^^^^
6994
6995- Removed the deprecated ``sig`` and ``varfunc`` keywords in the
6996  ``sigma_clip`` function. [#5715]
6997
6998- Added ``modify_sample_size`` keyword to ``biweight_midvariance``
6999  function. [#5991]
7000
7001astropy.table
7002^^^^^^^^^^^^^
7003
7004- In Python 3, when getting an item from a bytestring Column it is now
7005  converted to ``str``.  This means comparing a single item to a ``bytes``
7006  object will always fail, and instead one must compare with a ``str``
7007  object. [#5700]
7008
7009- Removed the deprecated ``data`` property of Row. [#5729]
7010
7011- Removed the deprecated functions ``join``, ``hstack``, ``vstack`` and
7012  ``get_groups`` from np_utils. [#5729]
7013
7014- Added ``name`` parameter to method ``astropy.table.Table.add_column`` and
7015  ``names`` parameter to method ``astropy.table.Table.add_columns``, to
7016  provide the flexibility to add unnamed columns, mixin objects and also to
7017  specify explicit names. Default names will be used if not
7018  specified. [#5996]
7019
7020- Added optional ``axis`` parameter to ``insert`` method for ``Column`` and
7021  ``MaskedColumn`` classes. [#6092]
7022
7023astropy.units
7024^^^^^^^^^^^^^
7025
7026- Moved ``units.cgs.emu`` to ``units.deprecated.emu`` due to ambiguous
7027  definition of "emu". [#4918, #5906]
7028
7029- ``jupiterMass``, ``earthMass``, ``jupiterRad``, and ``earthRad`` no longer
7030  have their prefixed units included in the standard units.  If needed, they
7031  can still  be found in ``units.deprecated``. [#5661]
7032
7033- ``solLum``,``solMass``, and ``solRad`` no longer have  their prefixed units
7034  included in the standard units.  If needed, they can still be found in
7035  ``units.required_by_vounit``, and are enabled by default. [#5661]
7036
7037- Removed deprecated ``Unit.get_converter``. [#6170]
7038
7039- Internally, astropy replaced use of ``.to(unit).value`` with the new
7040  ``to_value(unit)`` method, since this is somewhat faster. Any subclasses
7041  that overwrote ``.to``, should also overwrite ``.to_value`` (or
7042  possibly just the private ``._to_value`` method.  (If you did this,
7043  please let us know what was lacking that made this necessary!). [#6137]
7044
7045astropy.utils
7046^^^^^^^^^^^^^
7047
7048- Removed the deprecated compatibility modules for Python 2.6 (``argparse``,
7049  ``fractions``, ``gzip``, ``odict``, ``subprocess``) [#5975,#6157,#6164]
7050
7051- Removed the deprecated ``zest.releaser`` machinery. [#6282]
7052
7053astropy.visualization
7054^^^^^^^^^^^^^^^^^^^^^
7055
7056- Removed the deprecated ``scale_image`` function. [#6170]
7057
7058astropy.vo
7059^^^^^^^^^^
7060
7061- Cone Search now issues deprecation warning because it is moved to
7062  Astroquery 0.3.5 and will be removed from Astropy in a future version.
7063  [#5558, #5904]
7064
7065- The ``astropy.vo.samp`` package has been moved to ``astropy.samp``, and no
7066  longer supports HTTPS/SSL. [#6201, #6213]
7067
7068astropy.wcs
7069^^^^^^^^^^^
7070
7071- Removed deprecated ``wcs.rotateCD``. [#6170]
7072
7073
7074Bug Fixes
7075---------
7076
7077astropy.convolution
7078^^^^^^^^^^^^^^^^^^^
7079
7080- Major change in convolution behavior and keyword arguments:
7081  ``astropy.convolution.convolve`` was not performing normalized convolution
7082  in earlier versions of astropy. [#5782]
7083
7084- Direct convolution previously implemented the wrong definition of
7085  convolution.  This error only affects *asymmetric* kernels. [#6267]
7086
7087astropy.coordinates
7088^^^^^^^^^^^^^^^^^^^
7089
7090- The ``astropy.coordinates.Galactic`` frame had an incorrect ording for the
7091  'u', 'v', and 'w' cartesian coordinates. [#6330]
7092
7093- The ``astropy.coordinates.search_around_sky``,
7094  ``astropy.coordinates.search_around_3d``, and ``SkyCoord`` equivalent methods
7095  now correctly yield an ``astropy.coordinates.Angle`` as the third return type
7096  even if there are no matches (previously it returned a raw Quantity). [#6347]
7097
7098astropy.io.ascii
7099^^^^^^^^^^^^^^^^
7100
7101- Fix an issue where the fast C-reader was dropping table comments for a
7102  table with no data lines. [#8274]
7103
7104astropy.io.fits
7105^^^^^^^^^^^^^^^
7106
7107- ``comments`` meta key (which is ``io.ascii``'s table convention) is output
7108  to ``COMMENT`` instead of ``COMMENTS`` header. Similarly, ``COMMENT``
7109  headers are read into ``comments`` meta [#6097]
7110
7111- Use more sensible fix values for invalid NAXISj header values. [#5935]
7112
7113- Close file on error to avoid creating a ``ResourceWarning`` warning
7114  about an unclosed file. [#6168, #6177]
7115
7116astropy.modeling
7117^^^^^^^^^^^^^^^^
7118
7119- Creating a compound model where one of the submodels is
7120  a compound model whose parameters were changed now uses the
7121  updated parameters and not the parameters of the original model. [#5741]
7122
7123- Allow ``Mapping`` and ``Identity`` to be fittable. [#6018]
7124
7125- Gaussian models now impose positive ``stddev`` in fitting. [#6019]
7126
7127- OrthoPolynomialBase (Chebyshev2D / Legendre2D) models were being evaluated
7128  incorrectly when part of a compound model (using the parameters from the
7129  original model), which in turn caused fitting to fail as a no-op. [#6085]
7130
7131- Allow ``Ring2D`` to be defined using ``r_out``. [#6192]
7132
7133- Make ``LinearLSQFitter`` produce correct results with fixed model
7134  parameters and allow ``Shift`` and ``Scale`` to be fitted with
7135  ``LinearLSQFitter`` and ``LevMarLSQFitter``. [#6174]
7136
7137astropy.stats
7138^^^^^^^^^^^^^
7139
7140- Allow to choose which median function is used in ``mad_std`` and
7141  ``median_absolute_deviation``. And allow to use these functions with
7142  a multi-dimensional ``axis``. [#5835]
7143
7144- Fixed ``biweight_midvariance`` so that by default it returns a
7145  variance that agrees with the standard definition. [#5991]
7146
7147astropy.table
7148^^^^^^^^^^^^^
7149
7150- Fix a problem with vstack for bytes columns in Python 3. [#5628]
7151
7152- Fix QTable add/insert row for multidimensional Quantity. [#6092]
7153
7154astropy.time
7155^^^^^^^^^^^^
7156
7157- Fixed the initial condition of ``TimeFITS`` to allow scale, FITS scale
7158  and FITS realization to be checked and equated properly. [#6202]
7159
7160astropy.visualization
7161^^^^^^^^^^^^^^^^^^^^^
7162
7163- Fixed a bug that caused the default WCS to return coordinates offset by
7164  one. [#6339]
7165
7166astropy.vo
7167^^^^^^^^^^
7168
7169- Fixed a bug in vo.samp when stopping a hub for which a lockfile was
7170  not created. [#6211]
7171
7172
7173Other Changes and Additions
7174---------------------------
7175
7176- Numpy 1.7 and 1.8 are no longer supported. [#6006]
7177
7178- Python 3.3 is no longer supported. [#6020]
7179
7180- The bundled ERFA was updated to version 1.4.0. [#6239]
7181
7182- The bundled version of pytest has now been removed, but the
7183  astropy.tests.helper.pytest import will continue to work properly.
7184  Affiliated packages should nevertheless transition to importing pytest
7185  directly rather than from astropy.tests.helper. This also means that
7186  pytest is now a formal requirement for testing for both Astropy and
7187  for affiliated packages. [#5694]
7188
7189
71901.3.3 (2017-05-29)
7191==================
7192
7193Bug Fixes
7194---------
7195
7196astropy.coordinates
7197^^^^^^^^^^^^^^^^^^^
7198
7199- Fixed a bug where ``StaticMatrixTransform`` erroneously copied frame
7200  attributes from the input coordinate to the output frame. In practice, this
7201  didn't actually affect any transforms in Astropy but may change behavior for
7202  users who explicitly used the ``StaticMatrixTransform`` in their own code.
7203  [#6045]
7204
7205- Fixed ``get_icrs_coordinates`` to loop through all the urls in case one
7206  raises an exception. [#5864]
7207
7208astropy.io.fits
7209^^^^^^^^^^^^^^^
7210
7211- Fix table header not written out properly when ``fits.writeto()``
7212  convenience function is used. [#6042]
7213
7214- Fix writing out read-only arrays. [#6036]
7215
7216- Extension headers are written out properly when the ``fits.update()``
7217  convenience function is used. [#6058]
7218
7219- Angstrom, erg, G, and barn are no more reported as deprecated FITS units.
7220  [#5929]
7221
7222astropy.table
7223^^^^^^^^^^^^^
7224
7225- Fix problem with Table pprint/pformat raising an exception for
7226  non-UTF-8 compliant bytestring data. [#6117]
7227
7228astropy.units
7229^^^^^^^^^^^^^
7230
7231- Allow strings 'nan' and 'inf' as Quantity inputs. [#5958]
7232
7233- Add support for ``positive`` and ``divmod`` ufuncs (new in numpy 1.13).
7234  [#5998, #6020, #6116]
7235
7236astropy.utils
7237^^^^^^^^^^^^^
7238
7239- On systems that do not have ``pkg_resources`` non-numerical additions to
7240  version numbers like ``dev`` or ``rc1`` are stripped in ``minversion`` to
7241  avoid a ``TypeError`` in ``distutils.version.LooseVersion`` [#5944]
7242
7243- Fix ``auto_download`` setting ignored in ``Time.ut1``. [#6033]
7244
7245astropy.visualization
7246^^^^^^^^^^^^^^^^^^^^^
7247
7248- Fix bug in ManualInterval which caused the limits to be returned incorrectly
7249  if set to zero, and fix defaults for ManualInterval in the presence of NaNs.
7250  [#6088]
7251
7252- Get rid of warnings that occurred when slicing a cube due to the tick
7253  locator trying to find ticks for the sliced axis. [#6104]
7254
7255- Accept normal Matplotlib keyword arguments in set_xlabel and set_ylabel
7256  functions. [#5686, #5692, #6060]
7257
7258- Fix a bug that caused labels to be missing from frames with labels that
7259  could change direction mid-axis, such as EllipticalFrame. Also ensure
7260  that empty tick labels do not cause any warnings. [#6063]
7261
7262
72631.3.2 (2017-03-30)
7264==================
7265
7266Bug Fixes
7267---------
7268
7269astropy.coordinates
7270^^^^^^^^^^^^^^^^^^^
7271
7272- Ensure that checking equivalence of ``SkyCoord`` objects works with
7273  non-scalar attributes [#5884, #5887]
7274
7275- Ensure that transformation to frames with multi-dimensional attributes
7276  works as expected [#5890, #5897]
7277
7278- Make sure all ``BaseRepresentation`` objects can be output as strings.
7279  [#5889, #5897]
7280
7281astropy.units
7282^^^^^^^^^^^^^
7283
7284- Add support for ``heaviside`` ufunc (new in numpy 1.13). [#5920]
7285
7286astropy.utils
7287^^^^^^^^^^^^^
7288
7289- Fix to allow the C-based _fast_iterparse() VOTable XML parser to
7290  relloc() its buffers instead of overflowing them. [#5824, #5869]
7291
7292
7293Other Changes and Additions
7294---------------------------
7295
7296- File permissions are revised in the released source distribution. [#5912]
7297
7298
72991.3.1 (2017-03-18)
7300==================
7301
7302New Features
7303------------
7304
7305astropy.utils
7306^^^^^^^^^^^^^
7307
7308- The ``deprecated_renamed_argument`` decorator got a new ``pending``
7309  parameter to suppress the deprecation warnings. [#5761]
7310
7311Bug Fixes
7312---------
7313
7314astropy.coordinates
7315^^^^^^^^^^^^^^^^^^^
7316
7317- Changed ``SkyCoord`` so that frame attributes which are not valid for the
7318  current ``frame`` (but are valid for other frames) are stored on the
7319  ``SkyCoord`` instance instead of the underlying ``frame`` instance (e.g.,
7320  setting ``relative_humidity`` on an ICRS ``SkyCoord`` instance.) [#5750]
7321
7322- Ensured that ``position_angle`` and ``separation`` give correct answers for
7323  frames with different equinox (see #5722). [#5762]
7324
7325astropy.io.fits
7326^^^^^^^^^^^^^^^
7327
7328- Fix problem with padding bytes written for BinTable columns converted
7329  from unicode [#5280, #5287, #5288, #5296].
7330
7331- Fix out-of-order TUNITn cards when writing tables to FITS. [#5720]
7332
7333- Recognize PrimaryHDU when non boolean values are present for the
7334  'GROUPS' header keyword. [#5808]
7335
7336- Fix the insertion of new keywords in compressed image headers
7337  (``CompImageHeader``). [#5866]
7338
7339astropy.modeling
7340^^^^^^^^^^^^^^^^
7341
7342- Fixed a problem with setting ``bounding_box`` on 1D models. [#5718]
7343
7344- Fixed a broadcasting problem with weighted fitting of 2D models
7345  with ``LevMarLSQFitter``. [#5788]
7346
7347- Fixed a problem with passing kwargs to fitters, specifically ``verblevel``. [#5815]
7348
7349- Changed FittingWithOutlierRemoval to reject on the residual to the fit [#5831]
7350
7351astropy.stats
7352^^^^^^^^^^^^^
7353
7354- Fix the psd normalization for Lomb-Scargle periodograms in the presence
7355  of noise. [#5713]
7356
7357- Fix bug in the autofrequency range when ``minimum_frequency`` is specified
7358  but ``maximum_frequency`` is not. [#5738]
7359
7360- Ensure that a masked array is returned when sigma clipping fully masked
7361  data. [#5711]
7362
7363astropy.table
7364^^^^^^^^^^^^^
7365
7366- Fix problem where key for caching column format function was not
7367  sufficiently unique. [#5803]
7368
7369- Handle sorting NaNs and masked values in jsviewer. [#4052, #5572]
7370
7371- Ensure mixin columns can be added to a table using a scalar value for the
7372  right-hand side if the type supports broadcasting. E.g., for an existing
7373  ``QTable``, ``t['q'] = 3*u.m`` will now add a column as expected. [#5820]
7374
7375- Fixes the bug of setting/getting values from rows/columns of a table using
7376  numpy array scalars. [#5772]
7377
7378astropy.units
7379^^^^^^^^^^^^^
7380
7381- Fixed problem where IrreducibleUnits could fail to unpickle. [#5868]
7382
7383astropy.utils
7384^^^^^^^^^^^^^
7385
7386- Avoid importing ``ipython`` in ``utils.console`` until it is necessary, to
7387  prevent deprecation warnings when importing, e.g., ``Column``. [#5755]
7388
7389astropy.visualization
7390^^^^^^^^^^^^^^^^^^^^^
7391
7392- Avoid importing matplotlib.pyplot when importing
7393  astropy.visualization.wcsaxes. [#5680, #5684]
7394
7395- Ignore Numpy warnings that happen in coordinate transforms in WCSAxes.
7396  [#5792]
7397
7398- Fix compatibility issues between WCSAxes and Matplotlib 2.x. [#5786]
7399
7400- Fix a bug that caused WCSAxes frame visual properties to not be copied
7401  over when resetting the WCS. [#5791]
7402
7403astropy.extern
7404^^^^^^^^^^^^^^
7405
7406- Fixed a bug where PLY was overwriting its generated files. [#5728]
7407
7408Other Changes and Additions
7409---------------------------
7410
7411- Fixed a deprecation warning that occurred when running tests with
7412  astropy.test(). [#5689]
7413
7414- The deprecation of the ``clobber`` argument (originally deprecated in 1.3.0)
7415  in the ``io.fits`` write functions was changed to a "pending" deprecation
7416  (without displaying warnings) for now. [#5761]
7417
7418- Updated bundled astropy-helpers to v1.3.1. [#5880]
7419
7420
74211.3 (2016-12-22)
7422================
7423
7424New Features
7425------------
7426
7427astropy.convolution
7428^^^^^^^^^^^^^^^^^^^
7429
7430- The ``convolve`` and ``convolve_fft`` arguments now support a ``mask`` keyword,
7431  which allows them to also support ``NDData`` objects as inputs. [#5554]
7432
7433astropy.coordinates
7434^^^^^^^^^^^^^^^^^^^
7435
7436- Added an ``of_address`` classmethod to ``EarthLocation`` to enable fast creation of
7437  ``EarthLocation`` objects given an address by querying the Google maps API [#5154].
7438
7439- A new routine, ``get_body_barycentric_posvel`` has been added that allows
7440  one to calculate positions as well as velocities for solar system bodies.
7441  For JPL kernels, this roughly doubles the execution time, so if one requires
7442  only the positions, one should use ``get_body_barycentric``. [#5231]
7443
7444- Transformations between coordinate systems can use the more accurate JPL
7445  ephemerides. [#5273, #5436]
7446
7447- Arithmetic on representations, such as addition of two representations,
7448  multiplication with a ``Quantity``, or calculating the norm via ``abs``,
7449  has now become possible. Furthermore, there are new methods ``mean``,
7450  ``sum``, ``dot``, and ``cross``. For all these, the representations are
7451  treated as vectors in cartesian space (temporarily converting to
7452  ``CartesianRepresentation`` if necessary).  [#5301]
7453  has now become possible. Furthermore, there are news methods ``mean``,
7454  ``sum``, ``dot``, and ``cross`` with obvious meaning. [#5301]
7455  multiplication with a ``Quantity`` has now become possible. Furthermore,
7456  there are new methods ``norm``, ``mean``, ``sum``, ``dot``, and ``cross``.
7457  In all operations, the representations are treated as vectors. They are
7458  temporarily converted to ``CartesianRepresentation`` if necessary.  [#5301]
7459
7460- ``CartesianRepresentation`` can be initialized with plain arrays by passing
7461  in a ``unit``. Furthermore, for input with a vector array, the coordinates
7462  no longer have to be in the first dimension, but can be at any ``xyz_axis``.
7463  To complement the latter, a new ``get_xyz(xyz_axis)`` method allows one to
7464  get a vector array out along a given axis. [#5439]
7465
7466astropy.io.ascii
7467^^^^^^^^^^^^^^^^
7468
7469- Files with "Fortran-style" columns (i.e. double-precision scientific notation
7470  with a character other than "e", like ``1.495978707D+13``) can now be parsed by
7471  the fast reader natively. [#5552]
7472
7473- Allow round-tripping masked data tables in most formats by using an
7474  empty string ``''`` as the default representation of masked values
7475  when writing. [#5347]
7476
7477- Allow reading HTML tables with unicode column values in Python 2.7. [#5410]
7478
7479- Check for self-consistency of ECSV header column names. [#5463]
7480
7481- Produce warnings when writing an IPAC table from an astropy table that
7482  contains metadata not supported by the IPAC format. [#4700]
7483
7484astropy.io.fits
7485^^^^^^^^^^^^^^^
7486
7487- "Lazy" loading of HDUs now occurs - when an HDU is requested, the file is
7488  only read up to the point where that HDU is found.  This can mean a
7489  substantial speedup when accessing files that have many HDUs. [#5065]
7490
7491astropy.io.misc
7492^^^^^^^^^^^^^^^
7493
7494- Added ``io.misc.yaml`` module to support serializing core astropy objects
7495  using the YAML protocol. [#5486]
7496
7497astropy.io.registry
7498^^^^^^^^^^^^^^^^^^^
7499
7500- Added ``delay_doc_updates`` contextmanager to postpone the formatting of
7501  the documentation for the ``read`` and ``write`` methods of the class to
7502  optionally reduce the import time. [#5275]
7503
7504astropy.modeling
7505^^^^^^^^^^^^^^^^
7506
7507- Added a class to combine astropy fitters and functions to remove outliers
7508  e. g., sigma clip. [#4760]
7509
7510- Added a ``Tabular`` model. [#5105]
7511
7512- Added ``Hermite1D`` and ``Hermite2D`` polynomial models [#5242]
7513
7514- Added the injection of EntryPoints into astropy.modeling.fitting if
7515  they inherit from Fitters class. [#5241]
7516
7517- Added bounding box to ``Lorentz1D`` and ``MexicanHat1D`` models. [#5393]
7518
7519- Added ``Planar2D`` functional model. [#5456]
7520
7521- Updated ``Gaussian2D`` to accept no arguments (will use default x/y_stddev
7522  and theta). [#5537]
7523
7524astropy.nddata
7525^^^^^^^^^^^^^^
7526
7527- Added ``keep`` and ``**kwargs`` parameter to ``support_nddata``. [#5477]
7528
7529astropy.stats
7530^^^^^^^^^^^^^
7531
7532- Added ``axis`` keyword to ``biweight_location`` and
7533  ``biweight_midvariance``. [#5127, #5158]
7534
7535astropy.table
7536^^^^^^^^^^^^^
7537
7538- Allow renaming mixin columns. [#5469]
7539
7540- Support generalized value formatting for mixin columns in tables. [#5274]
7541
7542- Support persistence of table indices when pickling and copying table. [#5468]
7543
7544astropy.tests
7545^^^^^^^^^^^^^
7546
7547- Install both runtime and test dependencies when running the
7548  ./setup.py test command. These dependencies are specified by the
7549  install_requires and tests_require keywords via setuptools. [#5092]
7550
7551- Enable easier subclassing of the TestRunner class. [#5505]
7552
7553astropy.time
7554^^^^^^^^^^^^
7555
7556- ``light_travel_time`` can now use more accurate JPL ephemerides. [#5273, #5436]
7557
7558astropy.units
7559^^^^^^^^^^^^^
7560
7561- Added ``pixel_scale`` and ``plate_scale`` equivalencies. [#4987]
7562
7563- The ``spectral_density`` equivalency now supports transformations of
7564  luminosity density. [#5151]
7565
7566- ``Quantity`` now accepts strings consisting of a number and unit such
7567  as '10 km/s'. [#5245]
7568
7569astropy.utils
7570^^^^^^^^^^^^^
7571
7572- Added a new decorator: ``deprecated_renamed_argument``. This can be used to
7573  rename a function argument, while it still allows for the use of the older
7574  argument name. [#5214]
7575
7576astropy.visualization
7577^^^^^^^^^^^^^^^^^^^^^
7578
7579- Added a ``make_lupton_rgb`` function to generate color images from three
7580  greyscale images, following the algorithm of Lupton et al. (2004). [#5535]
7581
7582- Added ``data`` and ``interval`` inputs to the ``ImageNormalize``
7583  class. [#5206]
7584
7585- Added a new ``simple_norm`` convenience function. [#5206]
7586
7587- Added a default stretch for the ``Normalization`` class. [#5206].
7588
7589- Added a default ``vmin/vmax`` for the ``ManualInterval`` class.
7590  [#5206].
7591
7592- The ``wcsaxes`` subpackage has now been integrated in astropy as
7593  ``astropy.visualization.wcsaxes``.  This allows plotting of astronomical
7594  data/coordinate systems in Matplotlib. [#5496]
7595
7596astropy.wcs
7597^^^^^^^^^^^
7598
7599- Improved ``footprint_to_file``: allow to specify the coordinate system, and
7600  use by default the one from ``RADESYS``. Overwrite the file instead of
7601  appending to it. [#5494]
7602
7603
7604API Changes
7605-----------
7606
7607astropy.convolution
7608^^^^^^^^^^^^^^^^^^^
7609
7610- ``discretize_model`` now raises an exception if non-integer ranges are used.
7611  Previously it had incorrect behavior but did not raise an exception. [#5538]
7612
7613astropy.coordinates
7614^^^^^^^^^^^^^^^^^^^
7615
7616- ``SkyCoord``, ``ICRS``, and other coordinate objects, as well as the
7617  underlying representations such as ``SphericalRepresentation`` and
7618  ``CartesianRepresentation`` can now be reshaped using methods named like the
7619  numpy ones for ``ndarray`` (``reshape``, ``swapaxes``, etc.)
7620  [#4123, #5254, #5482]
7621
7622- The ``obsgeoloc`` and ``obsgeovel`` attributes of ``GCRS`` and
7623  ``PrecessedGeocentric`` frames are now stored and returned as
7624  ``CartesianRepresentation`` objects, rather than ``Quantity`` objects.
7625  Similarly, ``EarthLocation.get_gcrs_posvel`` now returns a tuple of
7626  ``CartesianRepresentation`` objects. [#5253]
7627
7628- ``search_around_3d`` and ``search_around_sky`` now return units
7629  for the distance matching their input argument when no match is
7630  found, instead of ``dimensionless_unscaled``. [#5528]
7631
7632astropy.io.ascii
7633^^^^^^^^^^^^^^^^
7634
7635- ASCII writers now accept an 'overwrite' argument.
7636  The default behavior is changed so that a warning will be
7637  issued when overwriting an existing file unless ``overwrite=True``.
7638  In a future version this will be changed from a warning to an
7639  exception to prevent accidentally overwriting a file. [#5007]
7640
7641- The default representation of masked values when writing tables was
7642  changed from ``'--'`` to the empty string ``''``.  Previously any
7643  user-supplied ``fill_values`` parameter would overwrite the class
7644  default, but now the values are prepended to the class default. [#5347]
7645
7646astropy.io.fits
7647^^^^^^^^^^^^^^^
7648
7649- The old ``Header`` interface, deprecated since Astropy 0.1 (PyFITS 3.1), has
7650  been removed entirely. See :ref:`header-transition-guide` for explanations
7651  on this change and help on the transition. [#5310]
7652
7653- The following functions, classes and methods have been removed:
7654  ``CardList``, ``Card.key``, ``Card.cardimage``, ``Card.ascardimage``,
7655  ``create_card``, ``create_card_from_string``, ``upper_key``,
7656  ``Header.ascard``, ``Header.rename_key``, ``Header.get_history``,
7657  ``Header.get_comment``, ``Header.toTxtFile``, ``Header.fromTxtFile``,
7658  ``new_table``, ``tdump``, ``tcreate``, ``BinTableHDU.tdump``,
7659  ``BinTableHDU.tcreate``.
7660
7661- Removed ``txtfile`` argument to the ``Header`` constructor.
7662
7663- Removed usage of ``Header.update`` with ``Header.update(keyword, value,
7664  comment)`` arguments.
7665
7666- Removed ``startColumn`` and ``endColumn`` arguments to the ``FITS_record``
7667  constructor.
7668
7669- The ``clobber`` argument in FITS writers has been renamed to
7670  ``overwrite``. This change affects the following functions and
7671  methods: ``tabledump``, ``writeto``, ``Header.tofile``,
7672  ``Header.totextfile``, ``_BaseDiff.report``,
7673  ``_BaseHDU.overwrite``, ``BinTableHDU.dump`` and
7674  ``HDUList.writeto``. [#5171]
7675
7676- Added an optional ``copy`` parameter to ``fits.Header`` which controls if
7677  a copy is made when creating an ``Header`` from another ``Header``.
7678  [#5005, #5326]
7679
7680astropy.io.registry
7681^^^^^^^^^^^^^^^^^^^
7682
7683- ``.fts`` and ``.fts.gz`` files will be automatically identified as
7684  ``io.fits`` files if no explicit ``format`` is given. [#5211]
7685
7686- Added an optional ``readwrite`` parameter for ``get_formats`` to filter
7687  formats for read or write. [#5275]
7688
7689astropy.modeling
7690^^^^^^^^^^^^^^^^
7691
7692- ``Gaussian2D`` now raises an error if ``theta`` is set at the same time as
7693  ``cov_matrix`` (previously ``theta`` was silently ignored). [#5537]
7694
7695astropy.table
7696^^^^^^^^^^^^^
7697
7698- Setting an existing table column (e.g. ``t['a'] = [1, 2, 3]``) now defaults
7699  to *replacing* the column with a column corresponding to the new value
7700  (using ``t.replace_column()``) instead of doing an in-place update.  Any
7701  existing meta-data in the column (e.g. the unit) is discarded.  An
7702  in-place update is still done when the new value is not a valid column,
7703  e.g. ``t['a'] = 0``.  To force an in-place update use the pattern
7704  ``t['a'][:] = [1, 2, 3]``. [#5556]
7705
7706- Allow ``collections.Mapping``-like ``data`` attribute when initializing a
7707  ``Table`` object (``dict``-like was already possible). [#5213]
7708
7709astropy.tests
7710^^^^^^^^^^^^^
7711
7712- The inputs to the ``TestRunner.run_tests()`` method now must be
7713  keyword arguments (no positional arguments).  This applies to the
7714  ``astropy.test()`` function as well. [#5505]
7715
7716astropy.utils
7717^^^^^^^^^^^^^
7718
7719- Renamed ``ignored`` context manager in ``compat.misc`` to ``suppress``
7720  to be consistent with https://bugs.python.org/issue19266 . [#5003]
7721
7722astropy.visualization
7723^^^^^^^^^^^^^^^^^^^^^
7724
7725- Deprecated the ``scale_image`` function. [#5206]
7726
7727- The ``mpl_normalize`` module (containing the ``ImageNormalize``
7728  class) is now automatically imported with the ``visualization``
7729  subpackage. [#5491]
7730
7731astropy.vo
7732^^^^^^^^^^
7733
7734- The ``clobber`` argument in ``VOSDatabase.to_json()`` has been
7735  renamed to ``overwrite``. [#5171]
7736
7737astropy.wcs
7738^^^^^^^^^^^
7739
7740- ``wcs.rotateCD()`` was deprecated without a replacement. [#5240]
7741
7742Bug Fixes
7743---------
7744
7745astropy.coordinates
7746^^^^^^^^^^^^^^^^^^^
7747
7748- Transformations between CIRS and AltAz now correctly account for the
7749  location of the observer. [#5591]
7750
7751- GCRS frames representing a location on Earth with multiple obstimes are now
7752  allowed. This means that the solar system routines ``get_body``,
7753  ``get_moon`` and ``get_sun`` now work with non-scalar times and a
7754  non-geocentric observer. [#5253]
7755
7756astropy.io.ascii
7757^^^^^^^^^^^^^^^^
7758
7759- Fix issue with units or other astropy core classes stored in table meta.
7760  [#5605]
7761
7762astropy.io.fits
7763^^^^^^^^^^^^^^^
7764
7765- Copying a ``fits.Header`` using ``copy`` or ``deepcopy`` from the ``copy``
7766  module will use ``Header.copy`` to ensure that modifying the copy will
7767  not alter the other original Header and vice-versa. [#4990, #5323]
7768
7769- ``HDUList.info()`` no longer raises ``AttributeError`` in presence of
7770  ``BZERO``. [#5508]
7771
7772- Avoid exceptions with numpy 1.10 and up when using scaled integer data
7773  where ``BZERO`` has float type but integer value. [#4639, #5527]
7774
7775- Converting a header card to a string now calls ``self.verify('fix+warn')``
7776  instead of ``self.verify('fix')`` so headers with invalid keywords will
7777  not raise a ``VerifyError`` on printing. [#887,#5054]
7778
7779- ``FITS_Record._convert_ascii`` now converts blank fields to 0 when a
7780  non-blank null column value is set. [#5134, #5394]
7781
7782astropy.io.registry
7783^^^^^^^^^^^^^^^^^^^
7784
7785- ``read`` now correctly raises an IOError if a file with an unknown
7786  extension can't be found, instead of raising IORegistryError:
7787  "Format could not be identified." [#4779]
7788
7789astropy.time
7790^^^^^^^^^^^^
7791
7792- Ensure ``Time`` instances holding a single ``delta_ut1_utc`` can be copied,
7793  flattened, etc. [#5225]
7794
7795astropy.units
7796^^^^^^^^^^^^^
7797
7798- Operations involving ``Angle`` or ``Distance``, or any other
7799  ``SpecificTypeQuantity`` instance, now also keep return an instance of the
7800  same type if the instance was the second argument (if the resulting unit
7801  is consistent with the specific type). [#5327]
7802
7803- Inplace operations on ``Angle`` and ``Distance`` instances now raise an
7804  exception if the final unit is not equivalent to radian and meter, resp.
7805  Similarly, views as ``Angle`` and ``Distance`` can now only be taken
7806  from quantities with appropriate units, and views as ``Quantity`` can only
7807  be taken from logarithmic quanties such as ``Magnitude`` if the physical
7808  unit is dimensionless. [#5070]
7809
7810- Conversion from quantities to logarithmic units now correctly causes a
7811  logarithmic quantity such as ``Magnitude`` to be returned. [#5183]
7812
7813
7814astropy.wcs
7815^^^^^^^^^^^
7816
7817- SIP distortion for an alternate WCS is correctly initialized now by
7818  looking at the "CTYPE" values matching the alternate WCS. [#5443]
7819
7820Other Changes and Additions
7821---------------------------
7822
7823- The bundled ERFA was updated to version 1.3.0.  This includes the
7824  leap second planned for 2016 Dec 31.
7825
7826astropy.coordinates
7827^^^^^^^^^^^^^^^^^^^
7828
7829- Initialization of ``Angle`` has been sped up for ``Quantity`` and ``Angle``
7830  input. [#4970]
7831
7832- The use of ``np.matrix`` instances in the transformations has been
7833  deprecated, since this class does not allow stacks of matrices.  As a
7834  result, the semi-public functions ``angles.rotation_matrix`` and
7835  ``angles.angle_axis`` are also deprecated, in favour of the new routines
7836  with the same name in ``coordinates.matrix_utilities``. [#5104]
7837
7838- A new ``BaseCoordinateFrame.cache`` dictionary has been created to expose
7839  the internal cache. This is useful when modifying representation data
7840  in-place without using ``realize_frame``. Additionally, documentation for
7841  in-place operations on coordinates were added. [#5575]
7842
7843- Coordinates and their representations are printed with a slightly different
7844  format, following how numpy >= 1.12 prints structured arrays. [#5423]
7845
7846astropy.cosmology
7847^^^^^^^^^^^^^^^^^
7848
7849- The default cosmological model has been changed to Planck 2015,
7850  and the citation strings have been updated. [#5372]
7851
7852astropy.extern
7853^^^^^^^^^^^^^^
7854
7855- Updated the bundled ``six`` module to version 1.10.0. [#5521]
7856
7857- Updated the astropy shipped version of ``PLY`` to version 3.9. [#5526]
7858
7859- Updated the astropy shipped version of jQuery to v3.3.1, and dataTables
7860  to v1.10.12. [#5564]
7861
7862astropy.io.fits
7863^^^^^^^^^^^^^^^
7864
7865- Performance improvements for tables with many columns. [#4985]
7866
7867- Removed obsolete code that was previously needed to properly
7868  implement the append mode. [#4793]
7869
7870astropy.io.registry
7871^^^^^^^^^^^^^^^^^^^
7872
7873- Reduced the time spent in the ``get_formats`` function. This also reduces
7874  the time it takes to import astropy subpackages, i.e.
7875  ``astropy.coordinates``. [#5262]
7876
7877astropy.units
7878^^^^^^^^^^^^^
7879
7880- The functions ``add_enabled_units``, ``set_enabled_equivalencies`` and
7881  ``add_enabled_equivalencies`` have been sped up by copying the current
7882  ``_UnitRegistry`` instead of building it from scratch. [#5306]
7883
7884- To build the documentation, the ``build_sphinx`` command has been deprecated
7885  in favor of ``build_docs``. [#5179]
7886
7887- The ``--remote-data`` option to ``python setup.py test`` can now take
7888  different arguments: ``--remote-data=none`` is the same as not specifying
7889  ``--remote-data`` (skip all tests that require the internet),
7890  ``--remote-data=astropy`` skips all tests that need remote data except those
7891  that require only data from data.astropy.org, and ``--remote-data=any`` is
7892  the same as ``--remote-data`` (run all tests that use remote data). [#5506]
7893
7894- The pytest ``recwarn`` fixture has been removed from the tests in favor of
7895  ``utils.catch_warnings``. [#5489]
7896
7897- Deprecated escape sequences in strings (Python 3.6) have been removed. [#5489]
7898
7899
79001.2.2 (2016-12-22)
7901==================
7902
7903Bug Fixes
7904---------
7905
7906astropy.io.ascii
7907^^^^^^^^^^^^^^^^
7908
7909- Fix a bug where the ``fill_values`` parameter was ignored when writing a
7910  table to HTML format. [#5379]
7911
7912astropy.io.fits
7913^^^^^^^^^^^^^^^
7914
7915- Handle unicode FITS BinTable column names on Python 2 [#5204, #4805]
7916
7917- Fix reading of float values from ASCII tables, that could be read as
7918  float32 instead of float64 (with the E and F formats). These values are now
7919  always read as float64. [#5362]
7920
7921- Fixed memoryleak when using the compression module. [#5399, #5464]
7922
7923- Able to insert and remove lower case HIERARCH keywords in a consistent
7924  manner [#5313, #5321]
7925
7926astropy.stats
7927^^^^^^^^^^^^^
7928
7929- Fixed broadcasting in ``sigma_clip`` when using negative ``axis``. [#4988]
7930
7931astropy.table
7932^^^^^^^^^^^^^
7933
7934- Assigning a logarithmic unit to a ``QTable`` column that did not have a
7935  unit yet now correctly turns it into the appropriate function quantity
7936  subclass (such as ``Magnitude`` or ``Dex``). [#5345]
7937
7938- Fix default value for ``show_row_index`` in ``Table.show_in_browser``.
7939  [#5562]
7940
7941astropy.units
7942^^^^^^^^^^^^^
7943
7944- For inverse trig functions that operate on quantities, catch any warnings
7945  that occur from evaluating the function on the unscaled quantity value
7946  between __array_prepare__ and __array_wrap__. [#5153]
7947
7948- Ensure ``!=`` also works for function units such as ``MagUnit`` [#5345]
7949
7950astropy.wcs
7951^^^^^^^^^^^
7952
7953- Fix use of the ``relax`` keyword in ``to_header`` when used to change the
7954  output precision. [#5164]
7955
7956- ``wcs.to_header(relax=True)`` adds a "-SIP" suffix to ``CTYPE`` when SIP
7957  distortion is present in the WCS object. [#5239]
7958
7959- Improved log messages in ``to_header``. [#5239]
7960
7961Other Changes and Additions
7962---------------------------
7963
7964- The bundled ERFA was updated to version 1.3.0.  This includes the
7965  leap second planned for 2016 Dec 31.
7966
7967astropy.stats
7968^^^^^^^^^^^^^
7969
7970- ``poisson_conf_interval`` with ``'kraft-burrows-nousek'`` interval is now
7971  faster and usable with SciPy versions < 0.14. [#5064, #5290]
7972
7973
7974
79751.2.1 (2016-06-22)
7976==================
7977
7978Bug Fixes
7979---------
7980
7981astropy.io.fits
7982^^^^^^^^^^^^^^^
7983
7984- Fixed a bug that caused TFIELDS to not be in the correct position in
7985  compressed image HDU headers under certain circumstances, which created
7986  invalid FITS files. [#5118, #5125]
7987
7988astropy.units
7989^^^^^^^^^^^^^
7990
7991- Fixed an  ``ImportError`` that occurred whenever ``astropy.constants`` was
7992  imported before ``astropy.units``. [#5030, #5121]
7993
7994- Magnitude zero points used to define ``STmag``, ``ABmag``, ``M_bol`` and
7995  ``m_bol`` are now collected in ``astropy.units.magnitude_zero_points``.
7996  They are not enabled as regular units by default, but can be included
7997  using ``astropy.units.magnitude_zero_points.enable()``. This makes it
7998  possible to round-trip magnitudes as originally intended.  [#5030]
7999
80001.2 (2016-06-19)
8001================
8002
8003General
8004-------
8005
8006- Astropy now requires Numpy 1.7.0 or later. [#4784]
8007
8008New Features
8009------------
8010
8011astropy.constants
8012^^^^^^^^^^^^^^^^^
8013
8014- Add ``L_bol0``, the luminosity corresponding to absolute bolometric
8015  magnitude zero. [#4262]
8016
8017astropy.coordinates
8018^^^^^^^^^^^^^^^^^^^
8019
8020- ``CartesianRepresentation`` now includes a transform() method that can take
8021  a 3x3 matrix to transform coordinates. [#4860]
8022
8023- Solar system and lunar ephemerides accessible via ``get_body``,
8024  ``get_body_barycentric`` and ``get_moon`` functions. [#4890]
8025
8026- Added astrometric frames (i.e., a frame centered on a particular
8027  point/object specified in another frame). [#4909, #4941]
8028
8029- Added ``SkyCoord.spherical_offsets_to`` method. [#4338]
8030
8031- Recent Earth rotation (IERS) data are now auto-downloaded so that AltAz
8032  transformations for future dates now use the most accurate available
8033  rotation values. [#4436]
8034
8035- Add support for heliocentric coordinate frames. [#4314]
8036
8037astropy.cosmology
8038^^^^^^^^^^^^^^^^^
8039
8040- ``angular_diameter_distance_z1z2`` now supports the computation of
8041  the angular diameter distance between a scalar and an array like
8042  argument. [#4593] The method now supports models with negative
8043  Omega_k0 (positive curvature universes) [#4661] and allows z2 < z1.
8044
8045astropy.io.ascii
8046^^^^^^^^^^^^^^^^
8047
8048- File name could be passed as ``Path`` object. [#4606]
8049
8050- Check that columns in ``formats`` specifier exist in the output table
8051  when writing. [#4508, #4511]
8052
8053- Allow trailing whitespace in the IPAC header lines. [#4758]
8054
8055- Updated to filter out the default parser warning of BeautifulSoup.
8056  [#4551]
8057
8058- Added support for reading and writing reStructuredText simple tables.
8059  [#4812]
8060
8061astropy.io.fits
8062^^^^^^^^^^^^^^^
8063
8064- File name could be passed as ``Path`` object. [#4606]
8065
8066- Header allows a dictionary-like cards argument during creation. [#4663]
8067
8068- New function ``convenience.table_to_hdu`` to allow creating a FITS
8069  HDU object directly from an astropy ``Table``. [#4778]
8070
8071- New optional arguments ``ignore_missing`` and ``remove_all`` are added
8072  to ``astropy.io.fits.header.remove()``. [#5020]
8073
8074astropy.io.registry
8075^^^^^^^^^^^^^^^^^^^
8076
8077- Added custom ``IORegistryError``. [#4833]
8078
8079astropy.io.votable
8080^^^^^^^^^^^^^^^^^^
8081
8082- File name could be passed as ``Path`` object. [#4606]
8083
8084astropy.modeling
8085^^^^^^^^^^^^^^^^
8086
8087- Added the fittable=True attribute to the Scale and Shift models with tests. [#4718]
8088
8089- Added example plots to docstrings for some built-in models. [#4008]
8090
8091astropy.nddata
8092^^^^^^^^^^^^^^
8093
8094- ``UnknownUncertainty`` new subclass of ``NDUncertainty`` that can be used to
8095  save uncertainties that cannot be used for error propagation. [#4272]
8096
8097- ``NDArithmeticMixin``: ``add``, ``subtract``, ``multiply`` and ``divide``
8098  can be used as classmethods but require that two operands are given. These
8099  operands don't need to be NDData instances but they must be convertible to
8100  NDData. This conversion is done internally. Using it on the instance does
8101  not require (but also allows) two operands. [#4272, #4851]
8102
8103- ``NDDataRef`` new subclass that implements ``NDData`` together with all
8104  currently available mixins. This class does not implement additional
8105  attributes, methods or a numpy.ndarray-like interface like ``NDDataArray``.
8106  attributes, methods or a numpy.ndarray-like interface like ``NDDataArray``.
8107  [#4797]
8108
8109astropy.stats
8110^^^^^^^^^^^^^
8111
8112- Added ``axis`` keyword for ``mad_std`` function. [#4688, #4689]
8113
8114- Added Bayesian and Akaike Information Criteria. [#4716]
8115
8116- Added Bayesian upper limits for Poisson count rates. [#4622]
8117
8118- Added ``circstats``; a module for computing circular statistics. [#3705, #4472]
8119
8120- Added ``jackknife`` resampling method. [#3708, #4439]
8121
8122- Updated ``bootstrap`` to allow bootstrapping statistics with multiple
8123  outputs. [#3601]
8124
8125- Added ``LombScargle`` class to compute Lomb-Scargle periodograms [#4811]
8126
8127astropy.table
8128^^^^^^^^^^^^^
8129
8130- ``Table.show_in_notebook`` and ``Table.show_in_browser(jsviewer=True)`` now
8131  yield tables with an "idx" column, allowing easy identification of the index
8132  of a row even when the table is re-sorted in the browser. [#4404]
8133
8134- Added ``AttributeError`` when trying to set mask on non-masked table. [#4637]
8135
8136- Allow to use a tuple of keys in ``Table.sort``.  [#4671]
8137
8138- Added ``itercols``; a way to iterate through columns of a table. [#3805,
8139  #4888]
8140
8141- ``Table.show_in_notebook`` and the default notebook display (i.e.,
8142  ``Table._repr_html_``) now use consistent table styles which can be set
8143  using the ``astropy.table.default_notebook_table_class`` configuration
8144  item. [#4886]
8145
8146- Added interface to create ``Table`` directly from any table-like object
8147  that has an ``__astropy_table__`` method.  [#4885]
8148
8149astropy.tests
8150^^^^^^^^^^^^^
8151
8152- Enable test runner to obtain documentation source files from directory
8153  other than "docs". [#4748]
8154
8155astropy.time
8156^^^^^^^^^^^^
8157
8158- Added caching of scale and format transformations for improved performance.
8159  [#4422]
8160
8161- Recent Earth rotation (IERS) data are now auto-downloaded so that UT1
8162  transformations for future times now work out of the box. [#4436]
8163
8164- Add support for barycentric/heliocentric time corrections. [#4314]
8165
8166astropy.units
8167^^^^^^^^^^^^^
8168
8169- The option to use tuples to indicate fractional powers of units,
8170  deprecated in 0.3.1, has been removed. [#4449]
8171
8172- Added slug to imperial units. [#4670]
8173
8174- Added Earth radius (``R_earth``) and Jupiter radius (``R_jup``) to units.
8175  [#4818]
8176
8177- Added a ``represents`` property to allow access to the definition of a
8178  named unit (e.g., ``u.kpc.represents`` yields ``1000 pc``). [#4806]
8179
8180- Add bolometric absolute and apparent magnitudes, ``M_bol`` and ``m_bol``.
8181  [#4262]
8182
8183astropy.utils
8184^^^^^^^^^^^^^
8185
8186- ``Path`` object could be passed to ``get_readable_fileobj``. [#4606]
8187
8188- Implemented a generic and extensible way of merging metadata. [#4459]
8189
8190- Added ``format_doc`` decorator which allows to replace and/or format the
8191  current docstring of an object. [#4242]
8192
8193- Added a new context manager ``set_locale`` to temporarily set the
8194  current locale. [#4363]
8195
8196- Added new IERS_Auto class to auto-download recent IERS (Earth rotation)
8197  data when required by coordinate or time transformations. [#4436]
8198
8199astropy.visualization
8200^^^^^^^^^^^^^^^^^^^^^
8201
8202- Add zscale interval based on Numdisplay's implementation. [#4776]
8203
8204API changes
8205-----------
8206
8207astropy.config
8208^^^^^^^^^^^^^^
8209
8210- The deprecated ``ConfigurationItem`` and ``ConfigAlias`` classes and the
8211  ``save_config``, ``get_config_items``, and ``generate_all_config_items``
8212  functions have now been removed. [#2767, #4446]
8213
8214astropy.coordinates
8215^^^^^^^^^^^^^^^^^^^
8216
8217- Removed compatibility layer for pre-v0.4 API. [#4447]
8218
8219- Added ``copy`` keyword-only argument to allow initialization without
8220  copying the (possibly large) input coordinate arrays. [#4883]
8221
8222astropy.cosmology
8223^^^^^^^^^^^^^^^^^
8224
8225- Improve documentation of z validity range of cosmology objects [#4882, #4949]
8226
8227astropy.io.ascii
8228^^^^^^^^^^^^^^^^
8229
8230- Add a way to control HTML escaping when writing a table as an HTML file. [#4423]
8231
8232astropy.io.fits
8233^^^^^^^^^^^^^^^
8234
8235- Two optional boolean arguments ``ignore_missing`` and ``remove_all`` are
8236  added to ``Header.remove``. [#5020]
8237
8238astropy.modeling
8239^^^^^^^^^^^^^^^^
8240
8241- Renamed ``Redshift`` model to ``RedshiftScaleFactor``. [#3672]
8242
8243- Inputs (``coords`` and ``out``) to ``render`` function in ``Model`` are
8244  converted to float. [#4697]
8245
8246- ``RotateNative2Celestial`` and ``RotateCelestial2Native`` are now
8247  implemented as subclasses of ``EulerAngleRotation``. [#4881, #4940]
8248
8249astropy.nddata
8250^^^^^^^^^^^^^^
8251
8252- ``NDDataBase`` does not set the private uncertainty property anymore. This
8253  only affects you if you subclass ``NDDataBase`` directly. [#4270]
8254
8255- ``NDDataBase``: the ``uncertainty``-setter is removed. A similar one is
8256  added in ``NDData`` so this also only affects you if you subclassed
8257  ``NDDataBase`` directly. [#4270]
8258
8259- ``NDDataBase``: ``uncertainty``-getter returns ``None`` instead of the
8260  private uncertainty and is now abstract. This getter is moved to
8261  ``NDData`` so it only affects direct subclasses of ``NDDataBase``. [#4270]
8262
8263- ``NDData`` accepts a Quantity-like data and an explicitly given unit.
8264  Before a ValueError was raised in this case. The final instance will use the
8265  explicitly given unit-attribute but doesn't check if the units are
8266  convertible and the data will not be scaled. [#4270]
8267
8268- ``NDData`` : the given mask, explicit or implicit if the data was masked,
8269  will be saved by the setter. It will not be saved directly as the private
8270  attribute. [#4879]
8271
8272- ``NDData`` accepts an additional argument ``copy`` which will copy every
8273  parameter before it is saved as attribute of the instance. [#4270]
8274
8275- ``NDData``: added an ``uncertainty.getter`` that returns the private
8276  attribute. It is equivalent to the old ``NDDataBase.uncertainty``-getter.
8277  [#4270]
8278
8279- ``NDData``: added an ``uncertainty.setter``. It is slightly modified with
8280  respect to the old ``NDDataBase.uncertainty``-setter. The changes include:
8281
8282- if the uncertainty has no uncertainty_type an info message is printed
8283  instead of a TypeError and the uncertainty is saved as
8284  ``UnknownUncertainty`` except the uncertainty is None. [#4270]
8285
8286- the requirement that the uncertainty_type of the uncertainty needs to be a
8287  string was removed. [#4270]
8288
8289- if the uncertainty is a subclass of NDUncertainty the parent_nddata
8290  attribute will be set so the uncertainty knows to which data it belongs.
8291  This is also a Bugfix. [#4152, #4270]
8292
8293- ``NDData``: added a ``meta``-getter, which will set and return an empty
8294  OrderedDict if no meta was previously set. [#4509, #4469]
8295
8296- ``NDData``: added an ``meta``-setter. It requires that the meta is
8297  dictionary-like (it also accepts Headers or ordered dictionaries and others)
8298  or None. [#4509, #4469, #4921]
8299
8300- ``NDArithmeticMixin``: The operand in arithmetic methods (``add``, ...)
8301  doesn't need to be a subclass of ``NDData``. It is sufficient if it can be
8302  converted to one. This conversion is done internally. [#4272]
8303
8304- ``NDArithmeticMixin``: The arithmetic methods allow several new arguments to
8305  control how or if different attributes of the class will be processed during
8306  the operation. [#4272]
8307
8308- ``NDArithmeticMixin``: Giving the parameter ``propagate_uncertainties`` as
8309  positional keyword is deprecated and will be removed in the future. You now
8310  need to specify it as keyword-parameter. Besides ``True`` and ``False`` also
8311  ``None`` is now a valid value for this parameter. [#4272, #4851]
8312
8313- ``NDArithmeticMixin``: The wcs attribute of the operands is not compared and
8314  thus raises no ValueError if they differ, except if a ``compare_wcs``
8315  parameter is specified. [#4272]
8316
8317- ``NDArithmeticMixin``: The arithmetic operation was split from a general
8318  ``_arithmetic`` method to different specialized private methods to allow
8319  subclasses more control on how the attributes are processed without
8320  overriding ``_arithmetic``. The ``_arithmetic`` method is now used to call
8321  these other methods. [#4272]
8322
8323- ``NDSlicingMixin``: If the attempt at slicing the mask, wcs or uncertainty
8324  fails with a ``TypeError`` a Warning is issued instead of the TypeError. [#4271]
8325
8326- ``NDUncertainty``: ``support_correlated`` attribute is deprecated in favor of
8327  ``supports_correlated`` which is a property. Also affects
8328  ``StdDevUncertainty``. [#4272]
8329
8330- ``NDUncertainty``: added the ``__init__`` that was previously implemented in
8331  ``StdDevUncertainty`` and takes an additional ``unit`` parameter. [#4272]
8332
8333- ``NDUncertainty``: added a ``unit`` property without setter that returns the
8334  set unit or if not set the unit of the parent. [#4272]
8335
8336- ``NDUncertainty``: included a ``parent_nddata`` property similar to the one
8337  previously implemented in StdDevUncertainty. [#4272]
8338
8339- ``NDUncertainty``: added an ``array`` property with setter. The setter will
8340  convert the value to a plain numpy array if it is a list or a subclass of a
8341  numpy array. [#4272]
8342
8343- ``NDUncertainty``: ``propagate_multiply`` and similar were removed. Before
8344  they were abstract properties and replaced by methods with the same name but
8345  with a leading underscore. The entry point for propagation is a method
8346  called ``propagate``. [#4272]
8347
8348- ``NDUncertainty`` and subclasses: implement a representation (``__repr__``).
8349  [#4787]
8350
8351- ``StdDevUncertainty``: error propagation allows an explicitly given
8352  correlation factor, which may be a scalar or an array which will be taken
8353  into account during propagation.
8354  This correlation must be determined manually and is not done by the
8355  uncertainty! [#4272]
8356
8357- ``StdDevUncertainty``: the ``array`` is converted to a plain numpy array
8358  only if it's a list or a subclass of numpy.ndarray. Previously it was always
8359  cast to a numpy array but also allowed subclasses. [#4272]
8360
8361- ``StdDevUncertainty``: setting the ``parent_nddata`` does not compare if the
8362  shape of it's array is identical to the parents data shape. [#4272]
8363
8364- ``StdDevUncertainty``: the ``array.setter`` doesn't compare if the array has
8365  the same shape as the parents data. [#4272]
8366
8367- ``StdDevUncertainty``: deprecated ``support_correlated`` in favor of
8368  ``supports_correlated``. [#4272, #4828]
8369
8370- ``StdDevUncertainty``: deprecated ``propagate_add`` and similar methods in
8371  favor of ``propagate``. [#4272, #4828]
8372
8373- Allow ``data`` to be a named argument in ``NDDataArray``. [#4626]
8374
8375astropy.table
8376^^^^^^^^^^^^^
8377
8378- ``operations.unique`` now has a ``keep`` parameter, which allows
8379  one to select whether to keep the first or last row in a set of
8380  duplicate rows, or to remove all rows that are duplicates. [#4632]
8381
8382- ``QTable`` now behaves more consistently by making columns act as a
8383  ``Quantity`` even if they are assigned a unit after the table is
8384  created. [#4497, #4884]
8385
8386astropy.units
8387^^^^^^^^^^^^^
8388
8389- Remove deprecated ``register`` argument for Unit classes. [#4448]
8390
8391astropy.utils
8392^^^^^^^^^^^^^
8393
8394- The astropy.utils.compat.argparse module has now been deprecated. Use the
8395  Python 'argparse' module directly instead. [#4462]
8396
8397- The astropy.utils.compat.odict module has now been deprecated. Use the
8398  Python 'collections' module directly instead. [#4466]
8399
8400- The astropy.utils.compat.gzip module has now been deprecated. Use the
8401  Python 'gzip' module directly instead. [#4464]
8402
8403- The deprecated ``ScienceStateAlias`` class has been removed. [#2767, #4446]
8404
8405- The astropy.utils.compat.subprocess module has now been deprecated. Use the
8406  Python 'subprocess' module instead. [#4483]
8407
8408- The astropy.utils.xml.unescaper module now also unescapes ``'%2F'`` to
8409  ``'/'`` and ``'&&'`` to ``'&'`` in a given URL. [#4699]
8410
8411- The astropy.utils.metadata.MetaData descriptor has now two optional
8412  parameters: doc and copy. [#4921]
8413
8414- The default IERS (Earth rotation) data now is now auto-downloaded via a
8415  new class IERS_Auto.  When extrapolating UT1-UTC or polar motion values
8416  outside the available time range, the values are now clipped at the last
8417  available value instead of being linearly extrapolated. [#4436]
8418
8419astropy.wcs
8420^^^^^^^^^^^
8421
8422- WCS objects can now be initialized with an ImageHDU or
8423  PrimaryHDU object. [#4493, #4505]
8424
8425- astropy.wcs now issues an INFO message when the header has SIP coefficients but
8426  "-SIP" is missing from CTYPE. [#4814]
8427
8428Bug fixes
8429---------
8430
8431astropy.coordinates
8432^^^^^^^^^^^^^^^^^^^
8433
8434- Ameliorate a problem with ``get_sun`` not round-tripping due to
8435  approximations in the light deflection calculation. [#4952]
8436
8437- Ensure that ``angle_utilities.position_angle`` accepts floats, as stated
8438  in the docstring. [#3800]
8439
8440- Ensured that transformations for ``GCRS`` frames are correct for
8441  non-geocentric observers. [#4986]
8442
8443- Fixed a problem with the ``Quantity._repr_latex_`` method causing errors
8444  when showing an ``EarthLocation`` in a Jupyter notebook. [#4542, #5068]
8445
8446astropy.io.ascii
8447^^^^^^^^^^^^^^^^
8448
8449- Fix a problem where the fast reader (with use_fast_converter=False) can
8450  fail on non-US locales. [#4363]
8451
8452- Fix astropy.io.ascii.read handling of units for IPAC formatted files.
8453  Columns with no unit are treated as unitless not dimensionless.
8454  [#4867, #4947]
8455
8456- Fix problems the header parsing in the sextractor reader. [#4603, #4910]
8457
8458astropy.io.fits
8459^^^^^^^^^^^^^^^
8460
8461- ``GroupsHDU.is_image`` property is now set to ``False``. [#4742]
8462
8463- Ensure scaling keywords are removed from header when unsigned integer data
8464  is converted to signed type. [#4974, #5053]
8465
8466- Made TFORMx keyword check more flexible in test of compressed images to
8467  enable compatibility of the test with cfitsio 3.380. [#4646, #4653]
8468
8469astropy.io.votable
8470^^^^^^^^^^^^^^^^^^
8471
8472- The astropy.io.votable.validator.html module is updated to handle division
8473  by zero when generating validation report. [#4699]
8474
8475- KeyError when converting Table v1.2 numeric arrays fixed. [#4782]
8476
8477astropy.modeling
8478^^^^^^^^^^^^^^^^
8479
8480- Refactored ``AiryDisk2D``, ``Sersic1D``, and ``Sersic2D`` models
8481  to be able to combine them as classes as well as instances. [#4720]
8482
8483- Modified the "LevMarLSQFitter" class to use the weights in the
8484  calculation of the Jacobian. [#4751]
8485
8486astropy.nddata
8487^^^^^^^^^^^^^^
8488
8489- ``NDData`` giving masked_Quantities as data-argument will use the
8490  implicitly passed mask, unit and value. [#4270]
8491
8492- ``NDData`` using a subclass implementing ``NDData`` with
8493  ``NDArithmeticMixin`` now allows error propagation. [#4270]
8494
8495- Fixed memory leak that happened when uncertainty of ``NDDataArray`` was
8496  set. [#4825, #4862]
8497
8498- ``StdDevUncertainty``: During error propagation the unit of the uncertainty
8499  is taken into account. [#4272]
8500
8501- ``NDArithmeticMixin``: ``divide`` and ``multiply`` yield correct
8502  uncertainties if only one uncertainty is set. [#4152, #4272]
8503
8504astropy.stats
8505^^^^^^^^^^^^^
8506
8507- Fix ``sigma_clipped_stats`` to use the ``axis`` argument. [#4726, #4808]
8508
8509astropy.table
8510^^^^^^^^^^^^^
8511
8512- Fixed bug where Tables created from existing Table objects were not
8513  inheriting the ``primary_key`` attribute. [#4672, #4930]
8514
8515- Provide more detail in the error message when reading a table fails due to a
8516  problem converting column string values. [#4759]
8517
8518astropy.units
8519^^^^^^^^^^^^^
8520
8521- Exponentiation using a ``Quantity`` with a unit equivalent to dimensionless
8522  as base and an ``array``-like exponent yields the correct result. [#4770]
8523
8524- Ensured that with ``spectral_density`` equivalency one could also convert
8525  between ``photlam`` and ``STmag``/``ABmag``. [#5017]
8526
8527astropy.utils
8528^^^^^^^^^^^^^
8529
8530- The astropy.utils.compat.fractions module has now been deprecated. Use the
8531  Python 'fractions' module directly instead. [#4463]
8532
8533- Added ``format_doc`` decorator which allows to replace and/or format the
8534  current docstring of an object. [#4242]
8535
8536- Attributes using the astropy.utils.metadata.MetaData descriptor are now
8537  included in the sphinx documentation. [#4921]
8538
8539astropy.vo
8540^^^^^^^^^^
8541
8542- Relaxed expected accuracy of Cone Search prediction test to reduce spurious
8543  failures. [#4382]
8544
8545astropy.wcs
8546^^^^^^^^^^^
8547
8548- astropy.wcs.to_header removes "-SIP" from CTYPE when SIP coefficients
8549  are not written out, i.e. ``relax`` is either ``False`` or ``None``.
8550  astropy.wcs.to_header appends "-SIP" to CTYPE when SIP coefficients
8551  are written out, i.e. ``relax=True``. [#4814]
8552
8553- Made ``wcs.bounds_check`` call ``wcsprm_python2c``, which means it
8554  works even if ``wcs.set`` has not been called yet. [#4957, #4966].
8555
8556- WCS objects can no longer be reverse-indexed, which was technically
8557  permitted but incorrectly implemented previously [#4962]
8558
8559Other Changes and Additions
8560---------------------------
8561
8562- Python 2.6 is no longer supported. [#4486]
8563
8564- The bundled version of py.test has been updated to 2.8.3. [#4349]
8565
8566- Reduce Astropy's import time (``import astropy``) by almost a factor 2. [#4649]
8567
8568- Cython prerequisite for building changed to v0.19 in install.rst [#4705,
8569  #4710, #4719]
8570
8571- All astropy.modeling functionality that was deprecated in Astropy 1.0 has
8572  been removed. [#4857]
8573
8574- Added instructions for installing Astropy into CASA. [#4840]
8575
8576- Added an example gallery to the docs demonstrating short
8577  snippets/examples. [#4734]
8578
8579
85801.1.2 (2016-03-10)
8581==================
8582
8583New Features
8584------------
8585
8586astropy.wcs
8587^^^^^^^^^^^
8588
8589- The ``astropy.wcs`` module now exposes ``WCSHDO_P*`` constants that can be
8590  used to allow more control over output precision when using the ``relax``
8591  keyword argument. [#4616]
8592
8593Bug Fixes
8594---------
8595
8596astropy.io.ascii
8597^^^^^^^^^^^^^^^^
8598
8599- Fixed handling of CDS data file when no description is given and also
8600  included stripping out of markup for missing value from description. [#4437, #4474]
8601
8602astropy.io.fits
8603^^^^^^^^^^^^^^^
8604
8605- Fixed possible segfault during error handling in FITS tile
8606  compression. [#4489]
8607
8608- Fixed crash on pickling of binary table columns with the 'X', 'P', or
8609  'Q' format. [#4514]
8610
8611- Fixed memory / reference leak that could occur when copying a ``FITS_rec``
8612  object (the ``.data`` for table HDUs). [#520]
8613
8614- Fixed a memory / reference leak in ``FITS_rec`` that occurred in a wide
8615  range of cases, especially after writing FITS tables to a file, but in
8616  other cases as well. [#4539]
8617
8618astropy.modeling
8619^^^^^^^^^^^^^^^^
8620
8621- Fix a bug to allow instantiation of a modeling class having a parameter
8622  with a custom setter that takes two parameters ``(value, model)`` [#4656]
8623
8624astropy.table
8625^^^^^^^^^^^^^
8626
8627- Fixed bug when replacing a table column with a mixin column like
8628  Quantity or Time. [#4601]
8629
8630- Disable initial ordering in jsviewer (``show_in_browser``,
8631  ``show_in_notebook``) to respect the order from the Table. [#4628]
8632
8633astropy.units
8634^^^^^^^^^^^^^
8635
8636- Fixed sphinx issues on plotting quantities. [#4527]
8637
8638astropy.utils
8639^^^^^^^^^^^^^
8640
8641- Fixed latex representation of function units. [#4563]
8642
8643- The ``zest.releaser`` hooks included in Astropy are now injected locally to
8644  Astropy, rather than being global. [#4650]
8645
8646astropy.visualization
8647^^^^^^^^^^^^^^^^^^^^^
8648
8649- Fixed ``fits2bitmap`` script to allow ext flag to contain extension
8650  names or numbers. [#4468]
8651
8652- Fixed ``fits2bitmap`` default output filename generation for
8653  compressed FITS files. [#4468]
8654
8655- Fixed ``quantity_support`` to ensure its conversion returns ndarray
8656  instances (needed for numpy >=1.10). [#4654]
8657
8658astropy.wcs
8659^^^^^^^^^^^
8660
8661- Fixed possible exception in handling of SIP headers that was introduced in
8662  v1.1.1. [#4492]
8663
8664- Fixed a bug that caused WCS objects with a high dynamic range of values for
8665  certain parameters to lose precision when converted to a header. This
8666  occurred for example in cases of spectral cubes, where a spectral axis in
8667  Hz might have a CRVAL3 value greater than 1e10 but the spatial coordinates
8668  would have CRVAL1/2 values 8 to 10 orders of magnitude smaller. This bug
8669  was present in Astropy 1.1 and 1.1.1 but not 1.0.x. This has now been fixed
8670  by ensuring that all WCS keywords are output with 14 significant figures by
8671  default. [#4616]
8672
8673Other Changes and Additions
8674---------------------------
8675
8676- Updated bundled astropy-helpers to v1.1.2. [#4678]
8677
8678- Updated bundled copy of WCSLIB to 5.14. [#4579]
8679
8680
86811.1.1 (2016-01-08)
8682==================
8683
8684New Features
8685------------
8686
8687astropy.io.registry
8688^^^^^^^^^^^^^^^^^^^
8689
8690- Allow ``pathlib.Path`` objects (available in Python 3.4 and later) for
8691  specifying the file name in registry read / write functions. [#4405]
8692
8693astropy.utils
8694^^^^^^^^^^^^^
8695
8696- ``console.human_file_size`` now accepts quantities with byte-equivalent
8697  units [#4373]
8698
8699Bug Fixes
8700---------
8701
8702astropy.analytic_functions
8703^^^^^^^^^^^^^^^^^^^^^^^^^^
8704
8705- Fixed the blackbody functions' handling of overflows on some platforms
8706  (Windows with MSVC, older Linux versions) with a buggy ``expm1`` function.
8707  [#4393]
8708
8709astropy.io.fits
8710^^^^^^^^^^^^^^^
8711
8712- Fixed an bug where updates to string columns in FITS tables were not saved
8713  on Python 3. [#4452]
8714
8715Other Changes and Additions
8716---------------------------
8717
8718- Updated bundled astropy-helpers to v1.1.1. [#4413]
8719
8720
87211.1 (2015-12-11)
8722================
8723
8724New Features
8725------------
8726
8727astropy.config
8728^^^^^^^^^^^^^^
8729
8730- Added new tools ``set_temp_config`` and ``set_temp_cache`` which can be
8731  used either as function decorators or context managers to temporarily
8732  use alternative directories in which to read/write the Astropy config
8733  files and download caches respectively.  This is especially useful for
8734  testing, though ``set_temp_cache`` may also be used as a way to provide
8735  an alternative (application specific) download cache for large data files,
8736  rather than relying on the default cache location in users' home
8737  directories. [#3975]
8738
8739astropy.constants
8740^^^^^^^^^^^^^^^^^
8741
8742- Added the Thomson scattering cross-section. [#3839]
8743
8744astropy.convolution
8745^^^^^^^^^^^^^^^^^^^
8746
8747- Added Moffat2DKernel. [#3965]
8748
8749astropy.coordinates
8750^^^^^^^^^^^^^^^^^^^
8751
8752- Added ``get_constellation`` function and ``SkyCoord.get_constellation``
8753  convenience method to determine the constellation that a coordinate
8754  is in. [#3758]
8755
8756- Added ``PrecessedGeocentric`` frame, which is based on GCRS, but precessed
8757  to a specific requested mean equinox. [#3758]
8758
8759- Added ``Supergalactic`` frame to support de Vaucouleurs supergalactic
8760  coordinates. [#3892]
8761
8762- ``SphericalRepresentation`` now has a ``._unit_representation`` class attribute to specify
8763  an equivalent UnitSphericalRepresentation. This allows subclasses of
8764  representations to pair up correctly. [#3757]
8765
8766- Added functionality to support getting the locations of observatories by
8767  name. See ``astropy.coordinates.EarthLocation.of_site``. [#4042]
8768
8769- Added ecliptic coordinates, including ``GeocentricTrueEcliptic``,
8770  ``BarycentricTrueEcliptic``, and ``HeliocentricTrueEcliptic``. [#3749]
8771
8772astropy.cosmology
8773^^^^^^^^^^^^^^^^^
8774
8775- Add Planck 2015 cosmology [#3476]
8776
8777- Distance calculations now > 20-40x faster for the supplied
8778  cosmologies due to implementing Cython scalar versions of
8779  ``FLRW.inv_efunc``.[#4127]
8780
8781astropy.io.ascii
8782^^^^^^^^^^^^^^^^
8783
8784- Automatically use ``guess=False`` when reading if the file ``format`` is
8785  provided and the format parameters are uniquely specified.  This update
8786  also removes duplicate format guesses to improve performance. [#3418]
8787
8788- Calls to ascii.read() for fixed-width tables may now omit one of the keyword
8789  arguments ``col_starts`` or ``col_ends``. Columns will be assumed to begin and
8790  end immediately adjacent to each other. [#3657]
8791
8792- Add a function ``get_read_trace()`` that returns a traceback of the
8793  attempted read formats for the last call to ``astropy.io.ascii.read``. [#3688]
8794
8795- Supports LZMA decompression via ``get_readable_fileobj`` [#3667]
8796
8797- Allow ``-`` character is Sextractor format column names. [#4168]
8798
8799- Improve DAOphot reader to read multi-aperture files [#3535, #4207]
8800
8801astropy.io.fits
8802^^^^^^^^^^^^^^^
8803
8804- Support reading and writing from bzip2 compressed files. i.e. ``.fits.bz2``
8805  files. [#3789]
8806
8807- Included a new command-line script called ``fitsinfo`` to display
8808  a summary of the HDUs in one or more FITS files. [#3677]
8809
8810astropy.io.misc
8811^^^^^^^^^^^^^^^
8812
8813- Support saving all meta information, description and units of tables and columns
8814  in HDF5 files [#4103]
8815
8816astropy.io.votable
8817^^^^^^^^^^^^^^^^^^
8818
8819- A new method was added to ``astropy.io.votable.VOTable``,
8820  ``get_info_by_id`` to conveniently find an ``INFO`` element by its
8821  ``ID`` attribute. [#3633]
8822
8823- Instances in the votable tree now have better ``__repr__`` methods. [#3639]
8824
8825astropy.logger.py
8826^^^^^^^^^^^^^^^^^
8827
8828- Added log levels (e.g., DEBUG, INFO, CRITICAL) to ``astropy.log`` [#3947]
8829
8830astropy.modeling
8831^^^^^^^^^^^^^^^^
8832
8833- Added a new ``Parameter.validator`` interface for setting a validation
8834  method on individual model parameters.  See the ``Parameter``
8835  documentation for more details. [#3910]
8836
8837- The projection classes that are named based on the 3-letter FITS
8838  WCS projections (e.g. ``Pix2Sky_TAN``) now have aliases using
8839  longer, more descriptive names (e.g. ``Pix2Sky_Gnomonic``).
8840  [#3583]
8841
8842- All of the standard FITS WCS projection types have been
8843  implemented in ``astropy.modeling.projections`` (by wrapping
8844  WCSLIB). [#3906]
8845
8846- Added ``Sersic1D`` and ``Sersic2D`` model classes. [#3889]
8847
8848- Added the Voigt profile to existing models. [#3901]
8849
8850- Added ``bounding_box`` property and ``render_model`` function [#3909]
8851
8852astropy.nddata
8853^^^^^^^^^^^^^^
8854
8855- Added ``block_reduce`` and ``block_replicate`` functions. [#3453]
8856
8857- ``extract_array`` now offers different options to deal with array
8858  boundaries [#3727]
8859
8860- Added a new ``Cutout2D`` class to create postage stamp image cutouts
8861  with optional WCS propagation. [#3823]
8862
8863astropy.stats
8864^^^^^^^^^^^^^
8865
8866- Added ``sigma_lower`` and ``sigma_upper`` keywords to
8867  ``sigma_clip`` to allow for non-symmetric clipping. [#3595]
8868
8869- Added ``cenfunc``, ``stdfunc``, and ``axis`` keywords to
8870  ``sigma_clipped_stats``. [#3792]
8871
8872- ``sigma_clip`` automatically masks invalid input values (NaNs, Infs) before
8873  performing the clipping [#4051]
8874
8875- Added the ``histogram`` routine, which is similar to ``np.histogram`` but
8876  includes several additional options for automatic determination of optimal
8877  histogram bins. Associated helper routines include ``bayesian_blocks``,
8878  ``friedman_bin_width``, ``scott_bin_width``, and ``knuth_bin_width``.
8879  This functionality was ported from the astroML library. [#3756]
8880
8881- Added the ``bayesian_blocks`` routine, which implements a dynamic algorithm
8882  for locating change-points in various time series. [#3756]
8883
8884- A new function ``poisson_conf_interval()`` was added to allow easy calculation
8885  of several standard formulae for the error bars on the mean of a Poisson variable
8886  estimated from a single sample.
8887
8888astropy.table
8889^^^^^^^^^^^^^
8890
8891- ``add_column()`` and ``add_columns()`` now have ``rename_duplicate``
8892  option to rename new column(s) rather than raise exception when its name
8893  already exists. [#3592]
8894
8895- Added ``Table.to_pandas`` and ``Table.from_pandas`` for converting to/from
8896  pandas dataframes. [#3504]
8897
8898- Initializing a ``Table`` with ``Column`` objects no longer requires
8899  that the column ``name`` attribute be defined. [#3781]
8900
8901- Added an ``info`` property to ``Table`` objects which provides configurable
8902  summary information about the table and its columns. [#3731]
8903
8904- Added an ``info`` property to column classes (``Column`` or mixins).  This
8905  serves a dual function of providing configurable summary information about
8906  the column, and acting as a manager of column attributes such as
8907  name, format, or description. [#3731]
8908
8909- Updated table and column representation to use the ``dtype_info_name``
8910  function for the dtype value.  Removed the default "masked=False"
8911  from the table representation. [#3868, #3869]
8912
8913- Updated row representation to be consistent with the corresponding
8914  table representation for that row.  Added HTML representation so a
8915  row displays nicely in IPython notebook.
8916
8917- Added a new table indexing engine allowing for the creation of
8918  indices on one or more columns of a table using ``add_index``. These
8919  indices enable new functionality such as searching for rows by value
8920  using ``loc`` and ``iloc``, as well as increased performance for
8921  certain operations. [#3915, #4202]
8922
8923- Added capability to include a structured array or recarray in a table
8924  as a mixin column.  This allows for an approximation of nested tables.
8925  [#3925]
8926
8927- Added ``keep_byteorder`` option to ``Table.as_array()``.  See the
8928  "API Changes" section below. [#4080]
8929
8930- Added a new method ``Table.replace_column()`` to replace an existing
8931  column with a new data column. [#4090]
8932
8933- Added a ``tableclass`` option to ``Table.pformat()`` to allow specifying
8934  a list of CSS classes added to the HTML table. [#4131]
8935
8936- New CSS for jsviewer table [#2917, #2982, #4174]
8937
8938- Added a new ``Table.show_in_notebook`` method that shows an interactive view
8939  of a Table (similar to ``Table.show_in_browser(jsviewer=True)``) in an
8940  Python/Jupyter notebook. [#4197]
8941
8942- Added column alignment formatting for better pprint viewing
8943  experience. [#3644]
8944
8945astropy.tests
8946^^^^^^^^^^^^^
8947
8948- Added new test config options, ``config_dir`` and ``cache_dir``  (these
8949  can be edited in ``setup.cfg`` or as extra command-line options to
8950  py.test) for setting the locations to use for the Astropy config files
8951  and download caches (see also the related ``set_temp_config/cache``
8952  features added in ``astropy.config``). [#3975]
8953
8954astropy.time
8955^^^^^^^^^^^^
8956
8957- Add support for FITS standard time strings. [#3547]
8958
8959- Allow the ``format`` attribute to be updated in place to change the
8960  default representation of a ``Time`` object. [#3673]
8961
8962- Add support for shape manipulation (reshape, ravel, etc.). [#3224]
8963
8964- Add argmin, argmax, argsort, min, max, ptp, sort methods. [#3681]
8965
8966- Add ``Time.to_datetime`` method for converting ``Time`` objects to
8967  timezone-aware datetimes. [#4119, #4124]
8968
8969astropy.units
8970^^^^^^^^^^^^^
8971
8972- Added furlong to imperial units. [#3529]
8973
8974- Added mil to imperial units. [#3716]
8975
8976- Added stone to imperial units. [#4192]
8977
8978- Added Earth Mass (``M_earth``) and Jupiter mass (``M_jup``) to units [#3907]
8979
8980- Added support for functional units, in particular the logarithmic ones
8981  ``Magnitude``, ``Decibel``, and ``Dex``. [#1894]
8982
8983- Quantities now work with the unit support in matplotlib.  See
8984  :ref:`plotting-quantities`. [#3981]
8985
8986- Clarified imperial mass measurements and added pound force (lbf),
8987  kilopound (kip), and pound per square inch (psi). [#3409]
8988
8989astropy.utils
8990^^^^^^^^^^^^^
8991
8992- Added new ``OrderedDescriptor`` and ``OrderedDescriptorContainer`` utility
8993  classes that make it easier to implement classes with declarative APIs,
8994  wherein class-level attributes have an inherit "ordering" to them that is
8995  specified by the order in which those attributes are defined in the class
8996  declaration (by defining them using special descriptors that have
8997  ``OrderedDescriptor`` as a base class).  See the API documentation for
8998  these classes for more details. Coordinate frames and models now use this
8999  interface. [#3679]
9000
9001- The ``get_pkg_data_*`` functions now take an optional ``package`` argument
9002  which allows specifying any package to read package data filenames or
9003  content out of, as opposed to only being able to use data from the package
9004  that the function is called from. [#4079]
9005
9006- Added function ``dtype_info_name`` to the ``data_info`` module to provide
9007  the name of a ``dtype`` for human-readable informational purposes. [#3868]
9008
9009- Added ``classproperty`` decorator--this is to ``property`` as
9010  ``classmethod`` is to normal instance methods. [#3982]
9011
9012- ``iers.open`` now handles network URLs, as well as local paths. [#3850]
9013
9014- The ``astropy.utils.wraps`` decorator now takes an optional
9015  ``exclude_args`` argument not shared by the standard library ``wraps``
9016  decorator (as it is unique to the Astropy version's ability of copying
9017  the wrapped function's argument signature).  ``exclude_args`` allows
9018  certain arguments on the wrapped function to be excluded from the signature
9019  of the wrapper function.  This is particularly useful when wrapping an
9020  instance method as a function (to exclude the ``self`` argument). [#4017]
9021
9022- ``get_readable_fileobj`` can automatically decompress LZMA ('.xz')
9023  files using the ``lzma`` module of Python 3.3+ or, when available, the
9024  ``backports.lzma`` package on earlier versions. [#3667]
9025
9026- The ``resolve_name`` utility now accepts any number of additional
9027  positional arguments that are automatically dotted together with the
9028  first ``name`` argument. [#4083]
9029
9030- Added ``is_url_in_cache`` for resolving paths to cached files via URLS
9031  and checking if files exist. [#4095]
9032
9033- Added a ``step`` argument to the ``ProgressBar.map`` method to give
9034  users control over the update frequency of the progress bar. [#4191]
9035
9036astropy.visualization
9037^^^^^^^^^^^^^^^^^^^^^
9038
9039- Added a function / context manager ``quantity_support`` for enabling
9040  seamless plotting of ``Quantity`` instances in matplotlib. [#3981]
9041
9042- Added the ``hist`` function, which is similar to ``plt.hist`` but
9043  includes several additional options for automatic determination of optimal
9044  histogram bins. This functionality was ported from the astroML library.
9045  [#3756]
9046
9047astropy.wcs
9048^^^^^^^^^^^
9049
9050- The included version of wcslib has been upgraded to 5.10. [#3992, #4239]
9051
9052  The minimum required version of wcslib in the 4.x series remains 4.24.
9053
9054  The minimum required version of wcslib in the 5.x series is
9055  5.8.  Building astropy against a wcslib 5.x prior to 5.8
9056  will raise an ``ImportError`` when ``astropy.wcs`` is imported.
9057
9058  The wcslib changes relevant to astropy are:
9059
9060- The FITS headers returned by ``astropy.wcs.WCS.to_header`` and
9061  ``astropy.wcs.WCS.to_header_string`` now include values with
9062  more precision.  This will result in numerical differences in
9063  your results if you convert ``astropy.wcs.WCS`` objects to FITS
9064  headers and use the results.
9065
9066- ``astropy.wcs.WCS`` now recognises the ``TPV``, ``TPD``,
9067  ``TPU``, ``DSS``, ``TNX`` and ``ZPX`` polynomial distortions.
9068
9069- Added relaxation flags to allow ``PC0i_0ja``, ``PV0j_0ma``, and
9070  ``PS0j_0ma`` (i.e. with leading zeroes on the index).
9071
9072- Tidied up error reporting, particularly relating to translating
9073  status returns from lower-level functions.
9074
9075- Changed output formatting of floating point values in
9076  ``to_header``.
9077
9078- Enhanced text representation of ``WCS`` objects. [#3604]
9079
9080- The ``astropy.tests.helper`` module is now part of the public API (and has a
9081  documentation page).  This module was in previous releases of astropy,
9082  but was not considered part of the public API until now. [#3890]
9083
9084- There is a new function ``astropy.online_help`` to search the
9085  astropy documentation and display the result in a web
9086  browser. [#3642]
9087
9088API changes
9089-----------
9090
9091astropy.cosmology
9092^^^^^^^^^^^^^^^^^
9093
9094- ``FLRW._tfunc`` and ``FLRW._xfunc`` are marked as deprecated.  Users
9095  should use the new public interfaces ``FLRW.lookback_time_integrand``
9096  and ``FLRW.abs_distance_integrand`` instead. [#3767]
9097
9098astropy.io.ascii
9099^^^^^^^^^^^^^^^^
9100
9101- The default header line processing was made to be consistent with data line
9102  processing in that it now ignores blank lines that may have whitespace
9103  characters.  Any code that explicitly specifies a ``header_start`` value
9104  for parsing a file with blank lines in the header containing whitespace will
9105  need to be updated. [#2654]
9106
9107astropy.io.fits
9108^^^^^^^^^^^^^^^
9109
9110- The ``uint`` argument to ``fits.open`` is now True by default; that is,
9111  arrays using the FITS unsigned integer convention will be detected, and
9112  read as unsigned integers by default.  A new config option for
9113  ``io.fits``, ``enable_uint``, can be changed to False to revert to the
9114  original behavior of ignoring the ``uint`` convention unless it is
9115  explicitly requested with ``uint=True``. [#3916]
9116
9117- The ``ImageHDU.NumCode`` and ``ImageHDU.ImgCode`` attributes (and same
9118  for other classes derived from ``_ImageBaseHDU``) are deprecated.  Instead,
9119  the ``astropy.io.fits`` module-level constants ``BITPIX2DTYPE`` and
9120  ``DTYPE2BITPIX`` can be used. [#3916]
9121
9122astropy.modeling
9123^^^^^^^^^^^^^^^^
9124
9125- Note: Comparisons of model parameters with array-like values now
9126  yields a Numpy boolean array as one would get with normal Numpy
9127  array comparison.  Previously this returned a scalar True or False,
9128  with True only if the comparison was true for all elements compared,
9129  which could lead to confusing circumstances. [#3912]
9130
9131- Using ``model.inverse = None`` to reset a model's inverse to its
9132  default is deprecated.  In the future this syntax will explicitly make
9133  a model not have an inverse (even if it has a default).  Instead, use
9134  ``del model.inverse`` to reset a model's inverse to its default (if it
9135  has a default, otherwise this just deletes any custom inverse that has
9136  been assigned to the model and is still equivalent to setting
9137  ``model.inverse = None``). [#4236]
9138
9139- Adds a ``model.has_user_inverse`` attribute which indicates whether or not
9140  a user has assigned a custom inverse to ``model.inverse``.  This is just
9141  for informational purposes, for example, for software that introspects
9142  model objects. [#4236]
9143
9144- Renamed the parameters of ``RotateNative2Celestial`` and
9145  ``RotateCelestial2Native`` from ``phi``, ``theta``, ``psi`` to
9146  ``lon``, ``lat`` and ``lon_pole``. [#3578]
9147
9148- Deprecated the ``Pix2Sky_AZP.check_mu`` and ``Sky2Pix_AZP.check_mu``
9149  methods (these were obscure "accidentally public" methods that were
9150  probably not used by anyone). [#3910]
9151
9152- Added a phase parameter to the Sine1D model. [#3807]
9153
9154astropy.stats
9155^^^^^^^^^^^^^
9156
9157- Renamed the ``sigma_clip`` ``sig`` keyword as ``sigma``. [#3595]
9158
9159- Changed the ``sigma_clip`` ``varfunc`` keyword to ``stdfunc``. [#3595]
9160
9161- Renamed the ``sigma_clipped_stats`` ``mask_val`` keyword to
9162  ``mask_value``. [#3595]
9163
9164- Changed the default ``iters`` keyword value to 5 in both the
9165  ``sigma_clip`` and ``sigma_clipped_stats`` functions. [#4067]
9166
9167astropy.table
9168^^^^^^^^^^^^^
9169
9170- ``Table.as_array()`` always returns a structured array with each column in
9171  the system's native byte order.  The optional ``keep_byteorder=True``
9172  option will keep each column's data in its original byteorder. [#4080]
9173
9174- ``Table.simple_table()`` now creates tables with int64 and float64 types
9175  instead of int32 and float64. [#4114]
9176
9177- An empty table can now be initialized without a ``names`` argument as long
9178  as a valid ``dtype`` argument (with names embedded) is supplied. [#3977]
9179
9180astropy.time
9181^^^^^^^^^^^^
9182
9183- The ``astropy_time`` attribute and time format has been removed from the
9184  public interface.  Existing code that instantiates a new time object using
9185  ``format='astropy_time'`` can simply omit the ``format``
9186  specification. [#3857]
9187
9188astropy.units
9189^^^^^^^^^^^^^
9190
9191- Single-item ``Quantity`` instances with record ``dtype`` will now have
9192  their ``isscalar`` property return ``True``, consistent with behaviour for
9193  numpy arrays, where ``np.void`` records are considered scalar. [#3899]
9194
9195- Three changes relating to the FITS unit format [#3993]:
9196
9197- The FITS unit format will no longer parse an arbitrary number as a
9198  scale value.  It must be a power of 10 of the form ``10^^k``,
9199  ``10^k``, ``10+k``, ``10-k`` and ``10(k)``. [#3993]
9200
9201- Scales that are powers of 10 can be written out.  Previously, any
9202  non-1.0 scale was rejected.
9203
9204- The ``*`` character is accepted as a separator between the scale
9205  and the units.
9206
9207- Unit formatter classes now require the ``parse`` and ``to_string``
9208  methods are now required to be classmethods (and the formatter
9209  classes themselves are assumed to be singletons that are not
9210  instantiated).  As unit formatters are mostly an internal implementation
9211  detail this is not likely to affect any users. [#4001]
9212
9213- CGS E&M units are now defined separately from SI E&M units, and have
9214  distinct physical types. [#4255, #4355]
9215
9216astropy.utils
9217^^^^^^^^^^^^^
9218
9219- All of the ``get_pkg_data_*`` functions take an optional ``package``
9220  argument as their second positional argument.  So any code that previously
9221  passed other arguments to these functions as positional arguments might
9222  break.  Use keyword argument passing instead to mitigate this. [#4079]
9223
9224- ``astropy.utils.iers`` now uses a ``QTable`` internally, which means that
9225  the numerical columns are stored as ``Quantity``, with full support for
9226  units.  Furthermore, the ``ut1_utc`` method now returns a ``Quantity``
9227  instead of a float or an array (as did ``pm_xy`` already). [#3223]
9228
9229- ``astropy.utils.iers`` now throws an ``IERSRangeError``, a subclass
9230  of ``IndexError``, rather than a raw ``IndexError``.  This allows more
9231  fine-grained catching of situations where a ``Time`` is beyond the range
9232  of the loaded IERS tables. [#4302]
9233
9234astropy.wcs
9235^^^^^^^^^^^
9236
9237- When compiled with wcslib 5.9 or later, the FITS headers returned
9238  by ``astropy.wcs.WCS.to_header`` and
9239  ``astropy.wcs.WCS.to_header_string`` now include values with more
9240  precision.  This will result in numerical differences in your
9241  results if you convert ``astropy.wcs.WCS`` objects to FITS headers
9242  and use the results.
9243
9244- If NAXIS1 or NAXIS2 is not passed with the header object to
9245  WCS.calc_footprint, a ValueError is raised. [#3557]
9246
9247Bug fixes
9248---------
9249
9250astropy.constants
9251^^^^^^^^^^^^^^^^^
9252
9253- The constants ``Ry`` and ``u`` are now properly used inside the
9254  corresponding units.  The latter have changed slightly as a result. [#4229]
9255
9256astropy.coordinates
9257^^^^^^^^^^^^^^^^^^^
9258
9259- Internally, ``coordinates`` now consistently uses the appropriate time
9260  scales for using ERFA functions. [#4302]
9261
9262astropy.io.ascii
9263^^^^^^^^^^^^^^^^
9264
9265- Fix a segfault in the fast C parser when one of the column headers
9266  is empty [#3545].
9267
9268- Fix several bugs that prevented the fast readers from being used
9269  when guessing the file format.  Also improved the read trace
9270  information to better understand format guessing. [#4115]
9271
9272- Fix an underlying problem that resulted in an uncaught TypeError
9273  exception when reading a CDS-format file with guessing enabled. [#4120]
9274
9275astropy.modeling
9276^^^^^^^^^^^^^^^^
9277
9278- ``Simplex`` fitter now correctly passes additional keywords arguments to
9279  the scipy solver. [#3966]
9280
9281- The keyword ``acc`` (for accuracy) is now correctly accepted by
9282  ``Simplex``. [#3966]
9283
9284astropy.units
9285^^^^^^^^^^^^^
9286
9287- The units ``Ryd`` and ``u`` are no longer hard-coded numbers, but depend
9288  on the appropriate values in the ``constants`` module.  As a result, these
9289  units now imply slightly different conversions.  [#4229]
9290
9291Other Changes and Additions
9292---------------------------
9293
9294- The ``./setup.py test`` command is now implemented in the ``astropy.tests``
9295  module again (previously its implementation had been moved into
9296  astropy-helpers).  However, that made it difficult to synchronize changes
9297  to the Astropy test runner with changes to the ``./setup.py test`` UI.
9298  astropy-helpers v1.1 and above will detect this implementation of the
9299  ``test`` command, when present, and use it instead of the old version that
9300  was included in astropy-helpers (most users will not notice any difference
9301  as a result of this change). [#4020]
9302
9303- The repr for ``Table`` no longer displays ``masked=False`` since tables
9304  are not masked by default anyway. [#3869]
9305
9306- The version of ``PLY`` that ships with astropy has been updated to 3.6.
9307
9308- WCSAxes is now required for doc builds. [#4074]
9309
9310- The migration guide from pre-v0.4 coordinates has been removed to avoid
9311  cluttering the ``astropy.coordinates`` documentation with increasingly
9312  irrelevant material.  To see the migration guide, we recommend you simply look
9313  to the archived documentation for previous versions, e.g.
9314  https://docs.astropy.org/en/v1.0/coordinates/index.html#migrating-from-pre-v0-4-coordinates
9315  [#4203]
9316
9317- In ``astropy.coordinates``, the transformations between GCRS, CIRS,
9318  and ITRS have been adjusted to more logically reflect the order in
9319  which they actually apply.  This should not affect most coordinate
9320  transformations, but may affect code that is especially sensitive to
9321  machine precision effects that change when the order in which
9322  transformations occur is changed. [#4255]
9323
9324- Astropy v1.1.0 will be the last release series to officially support
9325  Python 2.6.  A deprecation warning will now be issued when using Astropy
9326  in Python 2.6 (this warning can be disabled through the usual Python warning
9327  filtering mechanisms). [#3779]
9328
9329
93301.0.13 (2017-05-29)
9331===================
9332
9333Bug Fixes
9334---------
9335
9336astropy.io.fits
9337^^^^^^^^^^^^^^^
9338
9339- Fix use of quantize level parameter for ``CompImageHDU``. [#6029]
9340
9341- Prevent crash when a header contains non-ASCII (e.g. UTF-8) characters, to
9342  allow fixing the problematic cards. [#6084]
9343
9344
93451.0.12 (2017-03-05)
9346===================
9347
9348Bug Fixes
9349---------
9350
9351astropy.convolution
9352^^^^^^^^^^^^^^^^^^^
9353
9354- Fixed bug in ``discretize_integrate_2D`` in which x and y coordinates
9355  where swapped. [#5634]
9356
9357astropy.coordinates
9358^^^^^^^^^^^^^^^^^^^
9359
9360- Fixed a bug where ``get_transform`` could sometimes produce confusing errors
9361  because of a typo in the input validation. [#5645]
9362
9363astropy.io.fits
9364^^^^^^^^^^^^^^^
9365
9366- Guard against extremely unlikely problems in compressed images, which
9367  could lead to memory unmapping errors. [#5775]
9368
9369astropy.io.votable
9370^^^^^^^^^^^^^^^^^^
9371
9372- Fixed a bug where stdlib ``realloc()`` was used instead of
9373  ``PyMem_Realloc()`` [#5696, #4739, #2100]
9374
9375astropy.utils
9376^^^^^^^^^^^^^
9377
9378- Fixed ImportError with NumPy < 1.7 and Python 3.x in
9379  ``_register_patched_dtype_reduce``. [#5848]
9380
9381
93821.0.11 (2016-12-22)
9383===================
9384
9385Bug Fixes
9386---------
9387
9388astropy.coordinates
9389^^^^^^^^^^^^^^^^^^^
9390
9391- Initialising a SkyCoord from a list containing a single SkyCoord no longer removes
9392  the distance from the coordinate. [#5270]
9393
9394- Fix errors in the implementation of the conversion to and from FK4 frames
9395  without e-terms, which will have affected coordinates not on the unit
9396  sphere (i.e., with distances). [#4293]
9397
9398- Fix bug where with cds units enabled it was no longer possible to initialize
9399  an ``Angle``. [#5483]
9400
9401- Ensure that ``search_around_sky`` and ``search_around_3d`` return
9402  integer type index arrays for empty (non) matches. [#4877, #5083]
9403
9404- Return an empty set of matches for ``search_around_sky`` and
9405  ``search_around_3d`` when one or both of the input coordinate
9406  arrays is empty. [#4875, #5083]
9407
9408astropy.io.ascii
9409^^^^^^^^^^^^^^^^
9410
9411- Fix a bug with empty value at end of tab-delimited table on Windows. [#5370]
9412
9413- Fix reading of big ASCII tables (more than 2Gb) with the fast reader.
9414  [#5319]
9415
9416- Fix segfault with FastCsv and row with too many columns. [#5534]
9417
9418- Fix problem reading an AASTex format table that does not have ``\\``
9419  at the end of the last table row. [#5427]
9420
9421astropy.io.fits
9422^^^^^^^^^^^^^^^
9423
9424- Removed raising of AssertionError that could occur after closing or
9425  deleting compressed image data. [#4690, #4694, #4948]
9426
9427- Fixed bug that caused an ignored exception to be displayed under certain
9428  conditions when terminating a script after using fits.getdata(). [#4977]
9429
9430- Fixed usage of inplace operations that were raising an exception with
9431  recent versions of Numpy due to implicit casting. [#5250]
9432
9433astropy.io.votable
9434^^^^^^^^^^^^^^^^^^
9435
9436- Fixed bug of ``Resource.__repr__()`` having undefined attributes and
9437  variables. [#5382]
9438
9439astropy.modeling
9440^^^^^^^^^^^^^^^^
9441
9442- CompoundModel now correctly inherits _n_models, allowing the use of model sets [#5358]
9443
9444astropy.units
9445^^^^^^^^^^^^^
9446
9447- Fixed bug in Ci definition. [#5106]
9448
9449- Non-ascii cds unit strings are now correctly represented using ``str`` also
9450  on python2. This solves bugs in parsing coordinates involving strings too.
9451  [#5355]
9452
9453- Ensure ``Quantity`` supports ``np.float_power``, which is new in numpy 1.12.
9454  [#5480]
9455
9456astropy.utils
9457^^^^^^^^^^^^^
9458
9459- Fixed AttributeError when calling ``utils.misc.signal_number_to_name`` with
9460  Python3 [#5430].
9461
9462astropy.wcs
9463^^^^^^^^^^^
9464
9465- Update the ``_naxis{x}`` attributes when calling ``WCS.slice``. [#5411]
9466
9467
9468Other Changes and Additions
9469---------------------------
9470
9471- The bundled ERFA was updated to version 1.3.0.  This includes the
9472  leap second planned for 2016 Dec 31. [#5418]
9473
94741.0.10 (2016-06-09)
9475===================
9476
9477Bug Fixes
9478---------
9479
9480astropy.coordinates
9481^^^^^^^^^^^^^^^^^^^
9482
9483- ``SkyCoord`` objects created before a new frame which has frame attributes
9484  is created no longer raise ``AttributeError`` when the new attributes are
9485  accessed [#5021]
9486
9487- Fix some errors in the implementation of aberration  for ``get_sun``. [#4979]
9488
9489astropy.io.ascii
9490^^^^^^^^^^^^^^^^
9491
9492- Fix problem reading a zero-length ECSV table with a bool type column. [#5010]
9493
9494astropy.io.fits
9495^^^^^^^^^^^^^^^
9496
9497- Fix convenience functions (``getdata``, ``getheader``, ``append``,
9498  ``update``) to close files. [#4786]
9499
9500astropy.io.votable
9501^^^^^^^^^^^^^^^^^^
9502
9503- The astropy.io.votable.validator.html module is updated to handle division
9504  by zero when generating validation report. [#4699]
9505
9506astropy.table
9507^^^^^^^^^^^^^
9508
9509- Fixed a bug where ``pprint()`` sometimes raises ``UnicodeDecodeError``
9510  in Python 2. [#4946]
9511
9512- Fix bug when doing outer join on multi-dimensional columns. [#4060]
9513
9514- Fixed bug where Tables created from existing Table objects were not
9515  inheriting the ``primary_key`` attribute. [#4672]
9516
9517astropy.tests
9518^^^^^^^^^^^^^
9519
9520- Fix coverage reporting in Python 3. [#4822]
9521
9522astropy.units
9523^^^^^^^^^^^^^
9524
9525- Duplicates between long and short names are now removed in the ``names``
9526  and ``aliases`` properties of units. [#5036]
9527
9528astropy.utils
9529^^^^^^^^^^^^^
9530
9531- The astropy.utils.xml.unescaper module now also unescapes ``'%2F'`` to
9532  ``'/'`` and ``'&&'`` to ``'&'`` in a given URL. [#4699]
9533
9534- Fix two problems related to the download cache: clear_download_cache() does
9535  not work in Python 2.7 and downloading in Python 2.7 and then Python 3
9536  can result in an exception. [#4810]
9537
9538astropy.vo
9539^^^^^^^^^^
9540
9541- Cache option now properly caches both downloaded JSON database and XML VO
9542  tables. [#4699]
9543
9544- The astropy.vo.validator.conf.conesearch_urls listing is updated to reflect
9545  external changes to some VizieR Cone Search services. [#4699]
9546
9547- VOSDatabase decodes byte-string to UTF-8 instead of ASCII to avoid
9548  UnicodeDecodeError for some rare cases. Fixed a Cone Search test that is
9549  failing as a side-effect of #4699. [#4757]
9550
9551Other Changes and Additions
9552---------------------------
9553
9554- Updated ``astropy.tests`` test runner code to work with Coverage v4.0 when
9555  generating test coverage reports. [#4176]
9556
9557
95581.0.9 (2016-03-10)
9559==================
9560
9561New Features
9562------------
9563
9564astropy.nddata
9565^^^^^^^^^^^^^^
9566
9567- ``NDArithmeticMixin`` check for matching WCS now works with
9568  ``astropy.wcs.WCS`` objects [#4499, #4503]
9569
9570Bug Fixes
9571---------
9572
9573astropy.convolution
9574^^^^^^^^^^^^^^^^^^^
9575
9576- Correct a bug in which ``psf_pad`` and ``fft_pad`` would be ignored [#4366]
9577
9578astropy.io.ascii
9579^^^^^^^^^^^^^^^^
9580
9581- Fixed addition of new line characters after last row of data in
9582  ascii.latex.AASTex. [#4561]
9583
9584- Fixed reading of Latex tables where the ``\tabular`` tag is in the first
9585  line. [#4595]
9586
9587- Fix use of plain format strings with the fast writer. [#4517]
9588
9589- Fix bug writing space-delimited file when table has empty fields. [#4417]
9590
9591astropy.io.fits
9592^^^^^^^^^^^^^^^
9593
9594- Fixed possible segfault during error handling in FITS tile
9595  compression. [#4489]
9596
9597- Fixed crash on pickling of binary table columns with the 'X', 'P', or
9598  'Q' format. [#4514]
9599
9600- Fixed memory / reference leak that could occur when copying a ``FITS_rec``
9601  object (the ``.data`` for table HDUs). [#520]
9602
9603- Fixed a memory / reference leak in ``FITS_rec`` that occurred in a wide
9604  range of cases, especially after writing FITS tables to a file, but in
9605  other cases as well. [#4539]
9606
9607astropy.modeling
9608^^^^^^^^^^^^^^^^
9609
9610- Fixed display of compound model expressions and components when printing
9611  compound model instances. [#4414, #4482]
9612
9613astropy.stats
9614^^^^^^^^^^^^^
9615
9616- the input for median_absolute_deviation will not be cast to plain numpy
9617  arrays when given subclasses of numpy arrays
9618  (like Quantity, numpy.ma.MaskedArray, etc.) [#4658]
9619
9620- Fixed incorrect results when using median_absolute_deviation with masked
9621  arrays. [#4658]
9622
9623astropy.utils
9624^^^^^^^^^^^^^
9625
9626- The ``zest.releaser`` hooks included in Astropy are now injected locally to
9627  Astropy, rather than being global. [#4650]
9628
9629astropy.visualization
9630^^^^^^^^^^^^^^^^^^^^^
9631
9632- Fixed ``fits2bitmap`` script to allow ext flag to contain extension
9633  names or numbers. [#4468]
9634
9635- Fixed ``fits2bitmap`` default output filename generation for
9636  compressed FITS files. [#4468]
9637
9638
96391.0.8 (2016-01-08)
9640==================
9641
9642Bug Fixes
9643---------
9644
9645astropy.io.fits
9646^^^^^^^^^^^^^^^
9647
9648- Fixed an bug where updates to string columns in FITS tables were not saved
9649  on Python 3. [#4452]
9650
9651astropy.units
9652^^^^^^^^^^^^^
9653
9654- In-place peak-to-peak calculations now work on ``Quantity``. [#4442]
9655
9656astropy.utils
9657^^^^^^^^^^^^^
9658
9659- Fixed ``find_api_page`` to work correctly on python 3.x [#4378, #4379]
9660
9661
96621.0.7 (2015-12-04)
9663==================
9664
9665Bug Fixes
9666---------
9667
9668astropy.coordinates
9669^^^^^^^^^^^^^^^^^^^
9670
9671- Pickling of ``EarthLocation`` instances now also works on Python 2. [#4304]
9672
9673astropy.io.ascii
9674^^^^^^^^^^^^^^^^
9675
9676- Fix fast writer so bytestring column output is not prefixed by 'b' in
9677  Python 3. [#4350]
9678
9679astropy.io.fits
9680^^^^^^^^^^^^^^^
9681
9682- Fixed a regression that could cause writes of large FITS files to be
9683  truncated. [#4307]
9684
9685- Astropy v1.0.6 included a fix (#4228) for an obscure case where the TDIM
9686  of a table column is smaller than the repeat count of its data format.
9687  This updates that fix in such a way that it works with Numpy 1.10 as well.
9688  [#4266]
9689
9690astropy.table
9691^^^^^^^^^^^^^
9692
9693- Fix a bug when pickling a Table with mixin columns (e.g. Time). [#4098]
9694
9695astropy.time
9696^^^^^^^^^^^^
9697
9698- Fix incorrect ``value`` attribute for epoch formats like "unix"
9699  when ``scale`` is different from the class ``epoch_scale``. [#4312]
9700
9701astropy.utils
9702^^^^^^^^^^^^^
9703
9704- Fixed an issue where if ipython is installed but ipykernel is not
9705  installed then importing astropy from the ipython console gave an
9706  IPython.kernel deprecation warning. [#4279]
9707
9708- Fixed crash that could occur in ``ProgressBar`` when ``astropy`` is
9709  imported in an IPython startup script. [#4274]
9710
9711Other Changes and Additions
9712---------------------------
9713
9714- Updated bundled astropy-helpers to v1.0.6. [#4372]
9715
9716
97171.0.6 (2015-10-22)
9718==================
9719
9720Bug Fixes
9721---------
9722
9723astropy.analytic_functions
9724^^^^^^^^^^^^^^^^^^^^^^^^^^
9725
9726- Fixed blackbody analytic functions to properly support arrays of
9727  temperatures. [#4251]
9728
9729astropy.coordinates
9730^^^^^^^^^^^^^^^^^^^
9731
9732- Fixed errors in transformations for objects within a few AU of the
9733  Earth.  Included substantive changes to transformation machinery
9734  that may change distances at levels ~machine precision for other
9735  objects. [#4254]
9736
9737astropy.io.fits
9738^^^^^^^^^^^^^^^
9739
9740- ``fitsdiff`` and related functions now do a better job reporting differences
9741  between values that are different types but have the same representation
9742  (ex: the string '0' versus the number 0). [#4122]
9743
9744- Miscellaneous fixes for supporting Numpy 1.10. [#4228]
9745
9746- Fixed an issue where writing a column of unicode strings to a FITS table
9747  resulted in a quadrupling of size of the column (i.e. the format of the
9748  FITS column was 4 characters for every one in the original strings).
9749  [#4228]
9750
9751- Added support for an obscure case (but nonetheless allowed by the FITS
9752  standard) where a column has some TDIMn keyword, but a repeat count in
9753  the TFORMn column greater than the number of elements implied by the
9754  TDIMn.  For example TFORMn = 100I, but TDIMn = '(5,5)'.  In this case
9755  the TDIMn implies 5x5 arrays in the column, but the TFORMn implies
9756  a 100 element 1-D array in the column.  In this case the TDIM takes
9757  precedence, and the remaining bytes in the column are ignored. [#4228]
9758
9759astropy.io.votable
9760^^^^^^^^^^^^^^^^^^
9761
9762- Fixed crash with Python compiler optimization level = 2. [#4231]
9763
9764astropy.vo
9765^^^^^^^^^^
9766
9767- Fixed ``check_conesearch_sites`` with ``parallel=True`` on Python >= 3.3
9768  and on Windows (it was broken in both those cases for separate reasons).
9769  [#2970]
9770
9771Other Changes and Additions
9772---------------------------
9773
9774- All tests now pass against Numpy v1.10.x. This implies nominal support for
9775  Numpy 1.10.x moving forward (but there may still be unknown issues). For
9776  example, there is already a known performance issue with tables containing
9777  large multi-dimensional columns--for example, tables that contain entire
9778  images in one or more of their columns.  This is a known upstream issue in
9779  Numpy. [#4259]
9780
9781
97821.0.5 (2015-10-05)
9783==================
9784
9785Bug Fixes
9786---------
9787
9788astropy.constants
9789^^^^^^^^^^^^^^^^^
9790
9791- Rename units -> unit and error -> uncertainty in the ``repr`` and ``str``
9792  of constants to match attribute names. [#4147]
9793
9794astropy.coordinates
9795^^^^^^^^^^^^^^^^^^^
9796
9797- Fix string representation of ``SkyCoord`` objects transformed into
9798  the ``AltAz`` frame [#4055, #4057]
9799
9800- Fix the ``search_around_sky`` function to allow ``storekdtree`` to be
9801  ``False`` as was intended. [#4082, #4212]
9802
9803astropy.io.fits
9804^^^^^^^^^^^^^^^
9805
9806- Fix bug when extending one header (without comments) with another
9807  (with comments). [#3967]
9808
9809- Somewhat improved resource usage for FITS data--previously a new ``mmap``
9810  was opened for each HDU of a FITS file accessed through an ``HDUList``.
9811  Each ``mmap`` used up a single file descriptor, causing problems with
9812  system resource limits for some users.  Now only a single ``mmap`` is
9813  opened, and shared for the data of all HDUs.  Note: The problem still
9814  persists with using the "convenience" functions.  For example using
9815  ``fits.getdata`` will create one ``mmap`` per HDU read this way (as
9816  opposed to opening the file with ``fits.open`` and accessing the HDUs
9817  through the ``HDUList`` object). [#4097]
9818
9819- Fix bug where reading a file without a newline failed with an
9820  unrelated / unhelpful exception. [#4160]
9821
9822astropy.modeling
9823^^^^^^^^^^^^^^^^
9824
9825- Cleaned up ``repr`` of models that have no parameters. [#4076]
9826
9827astropy.nddata
9828^^^^^^^^^^^^^^
9829
9830- Initializing ``NDDataArray`` from another instance now sets ``flags`` as
9831  expected and no longer fails when ``uncertainty`` is set [#4129].
9832  Initializing an ``NDData`` subclass from a parent instance
9833  (eg. ``NDDataArray`` from ``NDData``) now sets the attributes other than
9834  ``data`` as it should [#4130, #4137].
9835
9836astropy.table
9837^^^^^^^^^^^^^
9838
9839- Fix an issue with setting fill value when column dtype is changed. [#4088]
9840
9841- Fix bug when unpickling a bare Column where the _parent_table
9842  attribute was not set.  This impacted the Column representation. [#4099]
9843
9844- Fix issue with the web browser opening with an empty page, and ensure that
9845  the url is correctly formatted for Windows. [#4132]
9846
9847- Fix NameError in table stack exception message. [#4213]
9848
9849astropy.utils
9850^^^^^^^^^^^^^
9851
9852- ``resolve_name`` no longer causes ``sys.modules`` to be cluttered with
9853  additional copies of modules under a package imported like
9854  ``resolve_name('numpy')``. [#4084]
9855
9856- ``console`` was updated to support IPython 4.x and Jupyter 1.x.
9857  This should suppress a ShimWarning that was appearing at
9858  import of astropy with IPython 4.0 or later. [#4078]
9859
9860- Temporary downloaded files created by ``get_readable_fileobj`` when passed
9861  a URL are now deleted immediately after the file is closed. [#4198]
9862
9863astropy.visualization
9864^^^^^^^^^^^^^^^^^^^^^
9865
9866- The color for axes labels was set to white. Since white labels on white
9867  background are hard to read, the label color has been changed to black.
9868  [#4143]
9869
9870- ``ImageNormalize`` now automatically determines ``vmin``/``vmax``
9871  (via the ``autoscale_None`` method) when they have not been set
9872  explicitly. [#4117]
9873
9874astropy.vo
9875^^^^^^^^^^
9876
9877- Cone Search validation no longer crashes when the provider gives an
9878  incomplete test query. It also ensures search radius for a test query
9879  is not too large to avoid timeout. [#4158, #4159]
9880
9881Other Changes and Additions
9882---------------------------
9883
9884- Astropy now supports Python 3.5. [#4027]
9885
9886- Updated bundled version of astropy-helpers to 1.0.5. [#4215]
9887
9888- Updated tests to support py.test 2.7, and upgraded the bundled copy of
9889  py.test to v2.7.3. [#4027]
9890
9891
98921.0.4 (2015-08-11)
9893==================
9894
9895New Features
9896------------
9897
9898astropy.convolution
9899^^^^^^^^^^^^^^^^^^^
9900
9901- Modified Cython functions to release the GIL. This enables convolution
9902  to be parallelized effectively and gives large speedups when used with
9903  multithreaded task schedulers such as Dask. [#3949]
9904
9905API Changes
9906-----------
9907
9908astropy.coordinates
9909^^^^^^^^^^^^^^^^^^^
9910
9911- Some transformations for an input coordinate that's a scalar now correctly
9912  return a scalar.  This was always the intended behavior, but it may break
9913  code that has been written to work-around this bug, so it may be viewed as
9914  an unplanned API change [#3920, #4039]
9915
9916astropy.visualization
9917^^^^^^^^^^^^^^^^^^^^^
9918
9919- The ``astropy_mpl_style`` no longer sets ``interactive`` to ``True``, but
9920  instead leaves it at the user preference.  This makes using the style
9921  compatible with building docs with Sphinx, and other non-interactive
9922  contexts. [#4030]
9923
9924Bug Fixes
9925---------
9926
9927astropy.coordinates
9928^^^^^^^^^^^^^^^^^^^
9929
9930- Fix bug where coordinate representation setting gets reset to default value
9931  when coordinate array is indexed or sliced. [#3824]
9932
9933- Fixed confusing warning message shown when using dates outside current IERS
9934  data. [#3844]
9935
9936- ``get_sun`` now yields a scalar when the input time is a scalar (this was a
9937  regression in v1.0.3 from v1.0.2) [#3998, #4039]
9938
9939- Fixed bug where some scalar coordinates were incorrectly being changed to
9940  length-1 array coordinates after transforming through certain frames.
9941  [#3920, #4039]
9942
9943- Fixed bug causing the ``separation`` methods of ``SkyCoord`` and frame
9944  classes to fail due to infinite recursion [#4033, #4039]
9945
9946- Made it so that passing in a list of ``SkyCoord`` objects that are in
9947  UnitSphericalRepresentation to the ``SkyCoord`` constructor appropriately
9948  yields a new object in UnitSphericalRepresentation [#3938, #4039]
9949
9950astropy.cosmology
9951^^^^^^^^^^^^^^^^^
9952
9953- Fixed wCDM to not ignore the Ob0 parameter on initialization. [#3934]
9954
9955astropy.io.fits
9956^^^^^^^^^^^^^^^
9957
9958- Fixed crash when updating data in a random groups HDU opened in update
9959  mode. [#3730]
9960
9961- Fixed incorrect checksum / datasum being written when re-writing a scaled
9962  HDU (i.e. non-trivial BSCALE and/or BZERO) with
9963  ``do_not_scale_image_data=False``. [#3883]
9964
9965- Fixed stray deprecation warning in ``BinTableHDU.copy()``. [#3798]
9966
9967- Better handling of the ``BLANK`` keyword when auto-scaling scaled image
9968  data.  The ``BLANK`` keyword is now removed from the header after
9969  auto-scaling is applied, and it is restored properly (with floating point
9970  NaNs replaced by the filler value) when updating a file opened with the
9971  ``scale_back=True`` argument.  Invalid usage of the ``BLANK`` keyword is
9972  also better warned about during validation. [#3865]
9973
9974- Reading memmaped scaled images won't fail when
9975  ``do_not_scale_image_data=True`` (that is, since we're just reading the raw
9976  / physical data there is no reason mmap can't be used). [#3766]
9977
9978- Fixed a reference cycle that could sometimes cause FITS table-related
9979  objects (``BinTableHDU``, ``ColDefs``, etc.) to hang around in memory
9980  longer than expected. [#4012]
9981
9982astropy.modeling
9983^^^^^^^^^^^^^^^^
9984
9985- Improved support for pickling of compound models, including both compound
9986  model instances, and new compound model classes. [#3867]
9987
9988- Added missing default values for ``Ellipse2D`` parameters. [#3903]
9989
9990astropy.time
9991^^^^^^^^^^^^
9992
9993- Fixed iteration of scalar ``Time`` objects so that ``iter()`` correctly
9994  raises a ``TypeError`` on them (while still allowing ``Time`` arrays to be
9995  iterated). [#4048]
9996
9997astropy.units
9998^^^^^^^^^^^^^
9999
10000- Added frequency-equivalency check when declaring doppler equivalencies
10001  [#3728]
10002
10003- Define ``floor_divide`` (``//``) for ``Quantity`` to be consistent
10004  ``divmod``, such that it only works where the quotient is dimensionless.
10005  This guarantees that ``(q1 // q2) * q2 + (q1 % q2) == q1``. [#3817]
10006
10007- Fixed the documentation of supported units to correctly report support for
10008  SI prefixes.  Previously the table of supported units incorrectly showed
10009  several derived unit as not supporting prefixes, when in fact they do.
10010  [#3835]
10011
10012- Fix a crash when calling ``astropy.units.cds.enable()``.  This will now
10013  "set" rather than "add" units to the active set to avoid the namespace
10014  clash with the default units. [#3873]
10015
10016- Ensure in-place operations on ``float32`` quantities work. [#4007]
10017
10018astropy.utils
10019^^^^^^^^^^^^^
10020
10021- The ``deprecated`` decorator did not correctly wrap classes that have a
10022  custom metaclass--the metaclass could be dropped from the deprecated
10023  version of the class. [#3997]
10024
10025- The ``wraps`` decorator would copy the wrapped function's name to the
10026  wrapper function even when ``'__name__'`` is excluded from the ``assigned``
10027  argument. [#4016]
10028
10029Misc
10030^^^^
10031
10032- ``fitscheck`` no longer causes scaled image data to be rescaled when
10033  adding checksums to existing files. [#3884]
10034
10035- Fixed an issue where running ``import astropy`` from within the source
10036  tree did not automatically build the extension modules if the source is
10037  from a source distribution (as opposed to a git repository). [#3932]
10038
10039- Fixed multiple instances of a bug that prevented Astropy from being used
10040  when compiled with the ``python -OO`` flag, due to it causing all
10041  docstrings to be stripped out. [#3923]
10042
10043- Removed source code template files that were being installed
10044  accidentally alongside installed Python modules. [#4014]
10045
10046- Fixed a bug in the exception logging that caused a crash in the exception
10047  handler itself on Python 3 when exceptions do not include a message.
10048  [#4056]
10049
10050
100511.0.3 (2015-06-05)
10052==================
10053
10054New Features
10055------------
10056
10057astropy.table
10058^^^^^^^^^^^^^
10059
10060- Greatly improved the speed of printing a large table to the screen when
10061  only a few rows are being displayed. [#3796]
10062
10063astropy.time
10064^^^^^^^^^^^^
10065
10066- Add support for the 2015-Jun-30 leap second. [#3794]
10067
10068API Changes
10069-----------
10070
10071astropy.io.ascii
10072^^^^^^^^^^^^^^^^
10073
10074- Note that HTML formatted tables will not always be found with guess mode
10075  unless it passes certain heuristics that strongly suggest the presence of
10076  HTML in the input.  Code that expects to read tables from HTML should
10077  specify ``format='html'`` explicitly. See bug fixes below for more
10078  details. [#3693]
10079
10080Bug Fixes
10081---------
10082
10083astropy.convolution
10084^^^^^^^^^^^^^^^^^^^
10085
10086- Fix issue with repeated normalizations of ``Kernels``. [#3747]
10087
10088astropy.coordinates
10089^^^^^^^^^^^^^^^^^^^
10090
10091- Fixed ``get_sun`` to yield frames with the ``obstime`` set to what's passed into the function (previously it incorrectly always had J2000). [#3750]
10092
10093- Fixed ``get_sun`` to account for aberration of light. [#3750]
10094
10095- Fixed error in the GCRS->ICRS transformation that gave incorrect distances. [#3750]
10096
10097astropy.io.ascii
10098^^^^^^^^^^^^^^^^
10099
10100- Remove HTML from the list of automatically-guessed formats when reading if
10101  the file does not appear to be HTML.  This was necessary to avoid a
10102  commonly-encountered segmentation fault occurring in the libxml parser on
10103  MacOSX. [#3693]
10104
10105astropy.io.fits
10106^^^^^^^^^^^^^^^
10107
10108- Fixes to support the upcoming Numpy 1.10. [#3419]
10109
10110astropy.modeling
10111^^^^^^^^^^^^^^^^
10112
10113- Polynomials are now scaled when used in a compound model. [#3702]
10114
10115- Fixed the ``Ellipse2D`` model to be consistent with ``Disk2D`` in
10116  how pixels are included. [#3736]
10117
10118- Fixed crash when evaluating a model that accepts no inputs. [#3772]
10119
10120astropy.testing
10121^^^^^^^^^^^^^^^
10122
10123- The Astropy py.test plugins that disable unintentional internet access
10124  in tests were also blocking use of local UNIX sockets in tests, which
10125  prevented testing some multiprocessing code--fixed. [#3713]
10126
10127astropy.units
10128^^^^^^^^^^^^^
10129
10130- Supported full SI prefixes for the barn unit ("picobarn", "femtobarn",
10131  etc.)  [#3753]
10132
10133- Fix loss of precision when multiplying non-whole-numbered powers
10134  of units together.  For example, before this change, ``(u.m **
10135  1.5) ** Fraction(4, 5)`` resulted in an inaccurate floating-point
10136  power of ``1.2000000000000002``.  After this change, the exact
10137  rational number of ``Fraction(6, 5)`` is maintained. [#3790]
10138
10139- Fixed printing of object ndarrays containing multiple Quantity
10140  objects with differing / incompatible units. Note: Unit conversion errors
10141  now cause a ``UnitConversionError`` exception to be raised.  However, this
10142  is a subclass of the ``UnitsError`` exception used previously, so existing
10143  code that catches ``UnitsError`` should still work. [#3778]
10144
10145Other Changes and Additions
10146---------------------------
10147
10148- Added a new ``astropy.__bibtex__`` attribute which gives a citation
10149  for Astropy in bibtex format. [#3697]
10150
10151- The bundled version of ERFA was updated to v1.2.0 to address leapsecond
10152  updates. [#3802]
10153
10154
101550.4.6 (2015-05-29)
10156==================
10157
10158Bug Fixes
10159---------
10160
10161astropy.time
10162^^^^^^^^^^^^
10163
10164- Fixed ERFA code to handle the 2015-Jun-30 leap second. [#3795]
10165
10166
101671.0.2 (2015-04-16)
10168==================
10169
10170New Features
10171------------
10172
10173astropy.modeling
10174^^^^^^^^^^^^^^^^
10175
10176- Added support for polynomials with degree 0 or degree greater than 15.
10177  [#3574, 3589]
10178
10179Bug Fixes
10180---------
10181
10182astropy.config
10183^^^^^^^^^^^^^^
10184
10185- The pre-astropy-0.4 configuration API has been fixed. It was
10186  inadvertently broken in 1.0.1. [#3627]
10187
10188astropy.io.fits
10189^^^^^^^^^^^^^^^
10190
10191- Fixed a severe memory leak that occurred when reading tile compressed
10192  images. [#3680]
10193
10194- Fixed bug where column data could be unintentionally byte-swapped when
10195  copying data from an existing FITS file to a new FITS table with a
10196  TDIMn keyword for that column. [#3561]
10197
10198- The ``ColDefs.change_attrib``, ``ColDefs.change_name``, and
10199  ``ColDefs.change_unit`` methods now work as advertised.  It is also
10200  possible (and preferable) to update attributes directly on ``Column``
10201  objects (for example setting ``column.name``), and the change will be
10202  accurately reflected in any associated table data and its FITS header.
10203  [#3283, #1539, #2618]
10204
10205- Fixes an issue with the ``FITS_rec`` interface to FITS table data, where a
10206  ``FITS_rec`` created by copying an existing FITS table but adding new rows
10207  could not be sliced or masked correctly.  [#3641]
10208
10209- Fixed handling of BINTABLE with TDIMn of size 1. [#3580]
10210
10211astropy.io.votable
10212^^^^^^^^^^^^^^^^^^
10213
10214- Loading a ``TABLE`` element without any ``DATA`` now correctly
10215  creates a 0-row array. [#3636]
10216
10217astropy.modeling
10218^^^^^^^^^^^^^^^^
10219
10220- Added workaround to support inverses on compound models when one of the
10221  sub-models is itself a compound model with a manually-assigned custom
10222  inverse. [#3542]
10223
10224- Fixed instantiation of polynomial models with constraints for parameters
10225  (constraints could still be assigned after instantiation, but not during).
10226  [#3606]
10227
10228- Fixed fitting of 2D polynomial models with the ``LeVMarLSQFitter``. [#3606]
10229
10230astropy.table
10231^^^^^^^^^^^^^
10232
10233- Ensure ``QTable`` can be pickled [#3590]
10234
10235- Some corner cases when instantiating an ``astropy.table.Table``
10236  with a Numpy array are handled [#3637]. Notably:
10237
10238- a zero-length array is the same as passing ``None``
10239
10240- a scalar raises a ``ValueError``
10241
10242- a one-dimensional array is treated as a single row of a table.
10243
10244- Ensure a ``Column`` without units is treated as an ``array``, not as an
10245  dimensionless ``Quantity``. [#3648]
10246
10247astropy.units
10248^^^^^^^^^^^^^
10249
10250- Ensure equivalencies that do more than just scale a ``Quantity`` are
10251  properly handled also in ``ufunc`` evaluations. [#2496, #3586]
10252
10253- The LaTeX representation of the Angstrom unit has changed from
10254  ``\overset{\circ}{A}`` to ``\mathring{A}``, which should have
10255  better support across regular LaTeX, MathJax and matplotlib (as of
10256  version 1.5) [#3617]
10257
10258astropy.vo
10259^^^^^^^^^^
10260
10261- Using HTTPS/SSL for communication between SAMP hubs now works
10262  correctly on all supported versions of Python [#3613]
10263
10264astropy.wcs
10265^^^^^^^^^^^
10266
10267- When no ``relax`` argument is passed to ``WCS.to_header()`` and
10268  the result omits non-standard WCS keywords, a warning is
10269  emitted. [#3652]
10270
10271Other Changes and Additions
10272---------------------------
10273
10274astropy.vo
10275^^^^^^^^^^
10276
10277- The number of retries for connections in ``astropy.vo.samp`` can now be
10278  configured by a ``n_retries`` configuration option. [#3612]
10279
10280- Testing
10281
10282- Running ``astropy.test()`` from within the IPython prompt has been
10283  provisionally re-enabled. [#3184]
10284
10285
102861.0.1 (2015-03-06)
10287==================
10288
10289Bug Fixes
10290---------
10291
10292astropy.constants
10293^^^^^^^^^^^^^^^^^
10294
10295- Ensure constants can be turned into ``Quantity`` safely. [#3537, #3538]
10296
10297astropy.io.ascii
10298^^^^^^^^^^^^^^^^
10299
10300- Fix a segfault in the fast C parser when one of the column headers
10301  is empty [#3545].
10302
10303- Fixed support for reading inf and nan values with the fast reader in
10304  Windows.  Also fixed in the case of using ``use_fast_converter=True``
10305  with the fast reader. [#3525]
10306
10307- Fixed use of mmap in the fast reader on Windows. [#3525]
10308
10309- Fixed issue where commented header would treat comments defining the table
10310  (i.e. column headers) as purely information comments, leading to problems
10311  when trying to round-trip the table. [#3562]
10312
10313astropy.modeling
10314^^^^^^^^^^^^^^^^
10315
10316- Fixed propagation of parameter constraints ('fixed', 'bounds', 'tied')
10317  between compound models and their components.  There is may still be some
10318  difficulty defining 'tied' constraints properly for use with compound
10319  models, however. [#3481]
10320
10321astropy.nddata
10322^^^^^^^^^^^^^^
10323
10324- Restore several properties to the compatibility class ``NDDataArray`` that
10325  were inadvertently omitted [#3466].
10326
10327astropy.time
10328^^^^^^^^^^^^
10329
10330- Time objects now always evaluate to ``True``, except when empty. [#3530]
10331
10332Miscellaneous
10333-------------
10334
10335- The ERFA wrappers are now written directly in the Python/C API
10336  rather than using Cython, for greater performance. [#3521]
10337
10338- Improve import time of astropy [#3488].
10339
10340Other Changes and Additions
10341---------------------------
10342
10343- Updated bundled astropy-helpers version to v1.0.1 to address installation
10344  issues with some packages that depend on Astropy. [#3541]
10345
10346
103471.0 (2015-02-18)
10348================
10349
10350General
10351-------
10352
10353- Astropy now requires Numpy 1.6.0 or later.
10354
10355New Features
10356------------
10357
10358astropy.analytic_functions
10359^^^^^^^^^^^^^^^^^^^^^^^^^^
10360
10361- The ``astropy.analytic_functions`` was added to contain analytic functions
10362  useful for astronomy [#3077].
10363
10364astropy.coordinates
10365^^^^^^^^^^^^^^^^^^^
10366
10367- ``astropy.coordinates`` now has a full stack of frames allowing
10368  transformations from ICRS or other celestial systems down to Alt/Az
10369  coordinates. [#3217]
10370
10371- ``astropy.coordinates`` now has a ``get_sun`` function that gives
10372  the coordinates  of the Sun at a specified time. [#3217]
10373
10374- ``SkyCoord`` now has ``to_pixel`` and ``from_pixel`` methods that convert
10375  between celestial coordinates as ``SkyCoord`` objects and pixel coordinates
10376  given an ``astropy.wcs.WCS`` object. [#3002]
10377
10378- ``SkyCoord`` now has ``search_around_sky`` and ``search_around_3d``
10379  convenience methods that allow searching for all coordinates within
10380  a certain distance of another ``SkyCoord``. [#2953]
10381
10382- ``SkyCoord`` can now accept a frame instance for the ``frame=`` keyword
10383  argument. [#3063]
10384
10385- ``SkyCoord`` now has a ``guess_from_table`` method that can be used to
10386  quickly create ``SkyCoord`` objects from an ``astropy.table.Table``
10387  object. [#2951]
10388
10389- ``astropy.coordinates`` now has a ``Galactocentric`` frame, a coordinate
10390  frame centered on a (user specified) center of the Milky Way. [#2761, #3286]
10391
10392- ``SkyCoord`` now accepts more formats of the coordinate string when the
10393  representation has ``ra`` and ``dec`` attributes. [#2920]
10394
10395- ``SkyCoord`` can now accept lists of ``SkyCoord`` objects, frame objects,
10396  or representation objects and will combine them into a single object.
10397  [#3285]
10398
10399- Frames and ``SkyCoord`` instances now have a method ``is_equivalent_frame``
10400  that can be used to check that two frames are equivalent (ignoring the
10401  data).  [#3330]
10402
10403- The ``__repr__`` of coordinate objects now shows scalar coordinates in the
10404  same format as vector coordinates. [#3350, 3448]
10405
10406astropy.cosmology
10407^^^^^^^^^^^^^^^^^
10408
10409- Added ``lookback_distance``, which is ``c * lookback_time``. [#3145]
10410
10411- Add baryonic matter density and dark matter only density parameters
10412  to cosmology objects [#2757].
10413
10414- Add a ``clone`` method to cosmology objects to allow copies
10415  of cosmological objects to be created with the specified variables
10416  modified [#2592].
10417
10418- Increase default numerical precision of ``z_at_value`` following
10419  the accurate by default, fast by explicit request model [#3074].
10420
10421- Cosmology functions that take a single (redshift) input now
10422  broadcast like numpy ufuncs.  So, passing an arbitrarily shaped
10423  array of inputs will produce an output of the same shape. [#3178, #3194]
10424
10425astropy.io.ascii
10426^^^^^^^^^^^^^^^^
10427
10428- Simplify the way new Reader classes are defined, allowing custom behavior
10429  entirely by overriding inherited class attributes instead of setting
10430  instance attributes in the Reader ``__init__`` method. [#2812]
10431
10432- There is now a faster C/Cython engine available for reading and writing
10433  simple ASCII formats like CSV. Both are enabled by default, and fast
10434  reading will fall back on an ordinary reader in case of a parsing
10435  failure. Their behavior can be altered with the parameter ``fast_reader``
10436  in ``read`` and ``fast_writer`` in ``write``. [#2716]
10437
10438- Make Latex/AASTex tables use unit attribute of Column for output. [#3064]
10439
10440- Store comment lines encountered during reading in metadata of the
10441  output table via ``meta['comment_lines']``. [#3222]
10442
10443- Write comment lines in Table metadata during output for all basic formats,
10444  IPAC, and fast writers. This functionality can be disabled with
10445  ``comment=False``. [#3255]
10446
10447- Add reader / writer for the Enhanced CSV format which stores table and
10448  column meta data, in particular data type and unit. [#2319]
10449
10450astropy.io.fits
10451^^^^^^^^^^^^^^^
10452
10453- The ``fitsdiff`` script ignores some things by default when comparing fits
10454  files (e.g. empty header lines). This adds a ``--exact`` option where
10455  nothing is ignored. [#2782, #3110]
10456
10457- The ``fitsheader`` script now takes a ``--keyword`` option to extract a
10458  specific keyword from the header of a FITS file, and a ``--table`` option
10459  to export headers into any of the data formats supported by
10460  ``astropy.table``. [#2555, #2588]
10461
10462- ``Section`` now supports all advanced indexing features ``ndarray`` does
10463  (slices with any steps, integer arrays, boolean arrays, None, Ellipsis).
10464  It also properly returns scalars when this is appropriate. [#3148]
10465
10466astropy.io.votable
10467^^^^^^^^^^^^^^^^^^
10468
10469- ``astropy.io.votable.parse`` now takes a ``datatype_mapping``
10470  keyword argument to map invalid datatype names to valid ones in
10471  order to support non-compliant files. [#2675]
10472
10473astropy.modeling
10474^^^^^^^^^^^^^^^^
10475
10476- Added the capability of creating new "compound" models by combining
10477  existing models using arithmetic operators.  See the "What's New in 1.0"
10478  page in the Astropy documentation for more details. [#3231]
10479
10480- A new ``custom_model`` decorator/factory function has been added for
10481  converting normal functions to ``Model`` classes that can work within
10482  the Astropy modeling framework.  This replaces the old ``custom_model_1d``
10483  function which is now deprecated.  The new function works the same as
10484  the old one but is less limited in the types of models it can be used to
10485  created.  [#1763]
10486
10487- The ``Model`` and ``Fitter`` classes have ``.registry`` attributes which
10488  provide sets of all loaded ``Model`` and ``Fitter`` classes (this is
10489  useful for building UIs for models and fitting). [#2725]
10490
10491- A dict-like ``meta`` member was added to ``Model``. it is to be used to
10492  store any optional information which is relevant to a project and is not
10493  in the standard ``Model`` class. [#2189]
10494
10495- Added ``Ellipse2D`` model. [#3124]
10496
10497astropy.nddata
10498^^^^^^^^^^^^^^
10499
10500- New array-related utility functions in ``astropy.nddata.utils`` for adding
10501  and removing arrays from other arrays with different sizes/shapes. [#3201]
10502
10503- New metaclass ``NDDataBase`` for enforcing the nddata interface in
10504  subclasses without restricting implementation of the data storage. [#2905]
10505
10506- New mixin classes ``NDSlicingMixin`` for slicing, ``NDArithmeticMixin``
10507  for arithmetic operations, and ``NDIOMixin`` for input/output in NDData. [#2905]
10508
10509- Added a decorator ``support_nddata`` that can be used to write functions
10510  that can either take separate arguments or NDData objects. [#2855]
10511
10512astropy.stats
10513^^^^^^^^^^^^^
10514
10515- Added ``mad_std()`` function. [#3208]
10516
10517- Added ``gaussian_fwhm_to_sigma`` and ``gaussian_sigma_to_fwhm``
10518  constants. [#3208]
10519
10520- New function ``sigma_clipped_stats`` which can be used to quickly get
10521  common statistics for an array, using sigma clipping at the same time.
10522  [#3201]
10523
10524astropy.table
10525^^^^^^^^^^^^^
10526
10527- Changed the internal implementation of the ``Table`` class changed so that
10528  it no longer uses numpy structured arrays as the core table data container.
10529  [#2790, #3179]
10530
10531- Tables can now be written to an html file that includes interactive
10532  browsing capabilities. To write out to this format, use
10533  ``Table.write('filename.html', format='jsviewer')``. [#2875]
10534
10535- A ``quantity`` property and ``to`` method were added to ``Table``
10536  columns that allow the column values to be easily converted to
10537  ``astropy.units.Quantity`` objects. [#2950]
10538
10539- Add ``unique`` convenience method to table. [#3185]
10540
10541astropy.tests
10542^^^^^^^^^^^^^
10543
10544- Added a new Quantity-aware ``assert_quantity_allclose``. [#3273]
10545
10546astropy.time
10547^^^^^^^^^^^^
10548
10549- ``Time`` can now handle arbitrary array dimensions, with operations
10550  following standard numpy broadcasting rules. [#3138]
10551
10552astropy.units
10553^^^^^^^^^^^^^
10554
10555- Support for VOUnit has been updated to be compliant with version
10556  1.0 of the standard. [#2901]
10557
10558- Added an ``insert`` method to insert values into a ``Quantity`` object.
10559  This is similar to the ``numpy.insert`` function. [#3049]
10560
10561- When viewed in IPython, ``Quantity`` objects with array values now render
10562  using LaTeX and scientific notation. [#2271]
10563
10564- Added ``units.quantity_input`` decorator to validate quantity inputs to a
10565  function for unit compatibility. [#3072]
10566
10567- Added ``units.astronomical_unit`` as a long form for ``units.au``. [#3303]
10568
10569astropy.utils
10570^^^^^^^^^^^^^
10571
10572- Added a new decorator ``astropy.utils.wraps`` which acts as a replacement
10573  for the standard library's ``functools.wraps``, the only difference being
10574  that the decorated function also preserves the wrapped function's call
10575  signature. [#2849]
10576
10577- ``astropy.utils.compat.numpy`` has been revised such that it can include
10578  patched versions of routines from newer ``numpy`` versions.  The first
10579  addition is a version of ``broadcast_arrays`` that can be used with
10580  ``Quantity`` and other ``ndarray`` subclasses (using the ``subok=True``
10581  flag). [#2327]
10582
10583- Added ``astropy.utils.resolve_name`` which returns a member of a module
10584  or class given the fully qualified dotted name of that object as a
10585  string. [#3389]
10586
10587- Added ``astropy.utils.minversion`` which can be used to check minimum
10588  version requirements of Python modules (to test for specific features and/
10589  or bugs and the like). [#3389]
10590
10591astropy.visualization
10592^^^^^^^^^^^^^^^^^^^^^
10593
10594- Created ``astropy.visualization`` module and added functionality relating
10595  to image normalization (i.e. stretching and scaling) as well as a new
10596  script ``fits2bitmap`` that can produce a bitmap image from a FITS file.
10597  [#3201]
10598
10599- Added dictionary ``astropy.visualization.mpl_style.astropy_mpl_style``
10600  which can be used to set a uniform plotstyle specifically for tutorials
10601  that is improved compared to matplotlib defaults. [#2719, #2787, #3200]
10602
10603astropy.wcs
10604^^^^^^^^^^^
10605
10606- ``wcslib`` has been upgraded to version 4.25.  This brings a
10607  single new feature:
10608
10609- ``equinox`` and ``radesys`` will now be given default values
10610  conforming with the WCS specification if ``EQUINOXa`` and
10611  ``RADESYSa``, respectively, are not present in the header.
10612
10613- The minimum required version of ``wcslib`` is now 4.24. [#2503]
10614
10615- Added a new function ``wcs_to_celestial_frame`` that can be used to find
10616  the astropy.coordinates celestial frame corresponding to a particular WCS.
10617  [#2730]
10618
10619- ``astropy.wcs.WCS.compare`` now supports a ``tolerance`` keyword argument
10620  to allow for approximate comparison of floating-point values. [#2503]
10621
10622- added ``pixel_scale_matrix``, ``celestial``, ``is_celestial``, and
10623  ``has_celestial`` convenience attributes. Added
10624  ``proj_plane_pixel_scales``, ``proj_plane_pixel_area``, and
10625  ``non_celestial_pixel_scales`` utility functions for retrieving WCS pixel
10626  scale and area information [#2832, #3304]
10627
10628- Added two functions ``pixel_to_skycoord`` and
10629  ``skycoord_to_pixel`` that make it easy to convert between
10630  SkyCoord objects and pixel coordinates. [#2885]
10631
10632- ``all_world2pix`` now uses a much more sophisticated and complete
10633  algorithm to iteratively compute the inverse WCS transform. [#2816]
10634
10635- Add ability to use ``WCS`` object to define projections in Matplotlib,
10636  using the ``WCSAxes`` package. [#3183]
10637
10638- Added ``is_proj_plane_distorted`` for testing if pixels are
10639  distorted. [#3329]
10640
10641Misc
10642^^^^
10643
10644- ``astropy._erfa`` was added as a new subpackage wrapping the functionality
10645  of the ERFA library in python.  This is primarily of use for other astropy
10646  subpackages, but the API may be made more public in the future. [#2992]
10647
10648
10649API Changes
10650-----------
10651
10652astropy.coordinates
10653^^^^^^^^^^^^^^^^^^^
10654
10655- Subclasses of ``BaseCoordinateFrame`` which define a custom ``repr`` should
10656  be aware of the format expected in ``SkyCoord.__repr__()``, which changed in
10657  this release. [#2704, #2882]
10658
10659- The ``CartesianPoints`` class (deprecated in v0.4) has now been removed.
10660  [#2990]
10661
10662- The previous ``astropy.coordinates.builtin_frames`` module is now a
10663  subpackage.  Everything that was in the
10664  ``astropy.coordinates.builtin_frames`` module is still accessible from the
10665  new package, but the classes are now in separate modules.  This should have
10666  no direct impact at the user level. [#3120]
10667
10668- Support for passing a frame as a positional argument in the ``SkyCoord``
10669  class has now been deprecated, except in the case where a frame with data
10670  is passed as the sole positional argument. [#3152]
10671
10672- Improved ``__repr__`` of coordinate objects representing a single
10673  coordinate point for the sake of easier copy/pasting. [#3350]
10674
10675astropy.cosmology
10676^^^^^^^^^^^^^^^^^
10677
10678- The functional interface to the cosmological routines as well as
10679  ``set_current`` and ``get_current`` (deprecated in v0.4) have now been
10680  removed. [#2990]
10681
10682astropy.io.ascii
10683^^^^^^^^^^^^^^^^
10684
10685- Added a new argument to ``htmldict`` in the HTML reader named
10686  ``parser``, which allows the user to specify which parser
10687  BeautifulSoup should use as a backend. [#2815]
10688
10689- Add ``FixedWidthTwoLine`` reader to guessing. This will allows to read
10690  tables that a copied from screen output like ``print my_table`` to be read
10691  automatically. Discussed in #3025 and #3099 [#3109]
10692
10693astropy.io.fits
10694^^^^^^^^^^^^^^^
10695
10696- A new optional argument ``cache`` has been added to
10697  ``astropy.io.fits.open()``.  When opening a FITS file from a URL,
10698  ``cache`` is a boolean value specifying whether or not to save the
10699  file locally in Astropy's download cache (``True`` by default). [#3041]
10700
10701astropy.modeling
10702^^^^^^^^^^^^^^^^
10703
10704- Model classes should now specify ``inputs`` and ``outputs`` class
10705  attributes instead of the old ``n_inputs`` and ``n_outputs``.  These
10706  should be tuples providing human-readable *labels* for all inputs and
10707  outputs of the model.  The length of the tuple indicates the numbers
10708  of inputs and outputs.  See "What's New in Astropy 1.0" for more
10709  details. [#2835]
10710
10711- It is no longer necessary to include ``__init__`` or ``__call__``
10712  definitions in ``Model`` subclasses if all they do is wrap the
10713  super-method in order to provide a nice call signature to the docs.
10714  The ``inputs`` class attribute is now used to generate a nice call
10715  signature, so these methods should only be overridden by ``Model``
10716  subclasses in order to provide new functionality. [#2835]
10717
10718- Most models included in Astropy now have sensible default values for most
10719  or all of their parameters.  Call ``help(ModelClass)`` on any model to
10720  check what those defaults are.  Most of them time they should be
10721  overridden, but some of them are useful (for example spatial offsets are
10722  always set at the origin by default). Another rule of thumb is that, where
10723  possible, default parameters are set so that the model is a no-op, or
10724  close to it, by default. [#2932]
10725
10726- The ``Model.inverse`` method has been changed to a *property*, so that
10727  now accessing ``model.inverse`` on a model returns a new model that
10728  implements that model's inverse, and *calling* ``model.inverse(...)``` on
10729  some independent variable computes the value of the inverse (similar to what
10730  the old ``Model.invert()`` method was meant to do).  [#3024]
10731
10732- The ``Model.invert()`` method has been removed entirely (it was never
10733  implemented and there should not be any existing code that relies on it).
10734  [#3024]
10735
10736- ``custom_model_1d`` is deprecated in favor of the new ``custom_model``
10737  (see "New Features" above).  [#1763]
10738
10739- The ``Model.param_dim`` property (deprecated in v0.4) has now been removed.
10740  [#2990]
10741
10742- The ``Beta1D`` and ``Beta2D`` models have been renamed to ``Moffat1D`` and
10743  ``Moffat2D``. [#3029]
10744
10745astropy.nddata
10746^^^^^^^^^^^^^^
10747
10748- ``flags``, ``shape``, ``size``, ``dtype`` and ``ndim`` properties removed
10749  from ``astropy.nddata.NDData``. [#2905]
10750
10751- Arithmetic operations, uncertainty propagation, slicing and automatic
10752  conversion to a numpy array removed from ``astropy.nddata.NDData``. The
10753  class ``astropy.nddata.NDDataArray`` is functionally equivalent to the
10754  old ``NDData``.  [#2905]
10755
10756astropy.table
10757^^^^^^^^^^^^^
10758
10759- The ``Column.units`` property (deprecated in v0.3) has now been removed.
10760  [#2990]
10761
10762- The ``Row.data`` and ``Table._data`` attributes have been deprecated
10763  related to the change in Table implementation.  They are replaced by
10764  ``Row.as_void()`` and ``Table.as_array()`` methods, respectively. [#2790]
10765
10766- The ``Table.create_mask`` method has been removed.  This undocumented
10767  method was a development orphan and would cause corruption of the
10768  table if called. [#2790]
10769
10770- The return type for integer item access to a Column (e.g. col[12] or
10771  t['a'][12]) is now always a numpy scalar, numpy ``ndarray``, or numpy
10772  ``MaskedArray``.  Previously if the column was multidimensional then a
10773  Column object would be returned. [#3095]
10774
10775- The representation of Table and Column objects has been changed to
10776  be formatted similar to the print output. [#3239]
10777
10778astropy.time
10779^^^^^^^^^^^^
10780
10781- The ``Time.val`` and ``Time.vals`` properties (deprecated in v0.3) and the
10782  ``Time.lon``, and ``Time.lat`` properties (deprecated in v0.4) have now
10783  been removed. [#2990]
10784
10785- Add ``decimalyear`` format that represents time as a decimal year. [#3265]
10786
10787astropy.units
10788^^^^^^^^^^^^^
10789
10790- Support for VOUnit has been updated to be compliant with version
10791  1.0 of the standard. This means that some VOUnit strings that were
10792  rejected before are now acceptable. [#2901] Notably:
10793
10794- SI prefixes are supported on most units
10795
10796- Binary prefixes are supported on "bits" and "bytes"
10797
10798- Custom units can be defined "inline" by placing them between single
10799  quotes.
10800
10801- ``Unit.get_converter`` has been deprecated.  It is not strictly
10802  necessary for end users, and it was confusing due to lack of
10803  support for ``Quantity`` objects. [#3456]
10804
10805astropy.utils
10806^^^^^^^^^^^^^
10807
10808- Some members of ``astropy.utils.misc`` were moved into new submodules.
10809  Specifically:
10810
10811- ``deprecated``, ``deprecated_attribute``, and ``lazyproperty`` ->
10812  ``astropy.utils.decorators``
10813
10814- ``find_current_module``, ``find_mod_objs`` ->
10815  ``astropy.utils.introspection``
10816
10817  All of these functions can be imported directly from ``astropy.utils``
10818  which should be preferred over referencing individual submodules of
10819  ``astropy.utils``.  [#2857]
10820
10821- The ProgressBar.iterate class method (deprecated in v0.3) has now been
10822  removed. [#2990]
10823
10824- Updated ``astropy/utils/console.py`` ProgressBar() module to
10825  display output to IPython notebook with the addition of an
10826  ``interactive`` kwarg. [#2658, #2789]
10827
10828astropy.wcs
10829^^^^^^^^^^^
10830
10831- The ``WCS.calcFootprint`` method (deprecated in v0.4) has now been removed.
10832  [#2990]
10833
10834- An invalid unit in a ``CUNITn`` keyword now displays a warning and
10835  returns a ``UnrecognizedUnit`` instance rather than raising an
10836  exception [#3190]
10837
10838Bug Fixes
10839---------
10840
10841astropy.convolution
10842^^^^^^^^^^^^^^^^^^^
10843
10844- ``astropy.convolution.discretize_model`` now handles arbitrary callables
10845  correctly [#2274].
10846
10847astropy.coordinates
10848^^^^^^^^^^^^^^^^^^^
10849
10850- ``Angle.to_string`` now outputs unicode arrays instead of object arrays.
10851  [#2981]
10852
10853- ``SkyCoord.to_string`` no longer gives an error when used with an array
10854  coordinate with more than one dimension. [#3340]
10855
10856- Fixed support for subclasses of ``UnitSphericalRepresentation`` and
10857  ``SphericalRepresentation`` [#3354, #3366]
10858
10859- Fixed latex display of array angles in IPython notebook. [#3480]
10860
10861astropy.io.ascii
10862^^^^^^^^^^^^^^^^
10863
10864- In the ``CommentedHeader`` the ``data_start`` parameter now defaults to
10865  ``0``, which is the first uncommented line. Discussed in #2692. [#3054]
10866
10867- Position lines in ``FixedWidthTwoLine`` reader could consist of many characters.
10868  Now, only one character in addition to the delimiter is allowed. This bug was
10869  discovered as part of [#3109]
10870
10871- The IPAC table writer now consistently uses the ``fill_values`` keyword to
10872  specify the output null values.  Previously the behavior was inconsistent
10873  or incorrect. [#3259]
10874
10875- The IPAC table reader now correctly interprets abbreviated column types.
10876  [#3279]
10877
10878- Tables that look almost, but not quite like DAOPhot tables could cause
10879  guessing to fail. [#3342]
10880
10881astropy.io.fits
10882^^^^^^^^^^^^^^^
10883
10884- Fixed the problem in ``fits.open`` of some filenames with colon (``:``) in
10885  the name being recognized as URLs instead of file names. [#3122]
10886
10887- Setting ``memmap=True`` in ``fits.open`` and related functions now raises
10888  a ValueError if opening a file in memory-mapped mode is impossible. [#2298]
10889
10890- CONTINUE cards no longer end the value of the final card in the series with
10891  an ampersand, per the specification of the CONTINUE card convention. [#3282]
10892
10893- Fixed a crash that occurred when reading an ASCII table containing
10894  zero-precision floating point fields. [#3422]
10895
10896- When a float field for an ASCII table has zero-precision a decimal point
10897  (with no digits following it) is still written to the field as long as
10898  there is space for it, as recommended by the FITS standard.  This makes it
10899  less ambiguous that these columns should be interpreted as floats. [#3422]
10900
10901astropy.logger
10902^^^^^^^^^^^^^^
10903
10904- Fix a bug that occurred when displaying warnings that produced an error
10905  message ``dictionary changed size during iteration``. [#3353]
10906
10907astropy.modeling
10908^^^^^^^^^^^^^^^^
10909
10910- Fixed a bug in ``SLSQPLSQFitter`` where the ``maxiter`` argument was not
10911  passed correctly to the optimizer. [#3339]
10912
10913astropy.table
10914^^^^^^^^^^^^^
10915
10916- Fix a problem where ``table.hstack`` fails to stack multiple references to
10917  the same table, e.g. ``table.hstack([t, t])``. [#2995]
10918
10919- Fixed a problem where ``table.vstack`` and ``table.hstack`` failed to stack
10920  a single table, e.g. ``table.vstack([t])``. [#3313]
10921
10922- Fix a problem when doing nested iterators on a single table. [#3358]
10923
10924- Fix an error when an empty list, tuple, or ndarray is used for item access
10925  within a table.  This now returns the table with no rows. [#3442]
10926
10927astropy.time
10928^^^^^^^^^^^^
10929
10930- When creating a Time object from a datetime object the time zone
10931  info is now correctly used. [#3160]
10932
10933- For Time objects, it is now checked that numerical input is finite. [#3396]
10934
10935astropy.units
10936^^^^^^^^^^^^^
10937
10938- Added a ``latex_inline`` unit format that returns the units in LaTeX math
10939  notation with negative exponents instead of fractions [#2622].
10940
10941- When using a unit that is deprecated in a given unit format,
10942  non-deprecated alternatives will be suggested. [#2806] For
10943  example::
10944
10945      >>> import astropy.units as u
10946      >>> u.Unit('Angstrom', format='fits')
10947      WARNING: UnitsWarning: The unit 'Angstrom' has been deprecated
10948      in the FITS standard. Suggested: nm (with data multiplied by
10949      0.1).  [astropy.units.format.utils]
10950
10951astropy.utils
10952^^^^^^^^^^^^^
10953
10954- ``treat_deprecations_as_exceptions`` has been fixed to recognize Astropy
10955  deprecation warnings. [#3015]
10956
10957- Converted representation of progress bar units without suffix
10958  from float to int in console.human_file_size. [#2201, #2202, #2721, #3299]
10959
10960astropy.wcs
10961^^^^^^^^^^^
10962
10963- ``astropy.wcs.WCS.sub`` now accepts unicode strings as input on
10964  Python 2.x [#3356]
10965
10966Misc
10967^^^^
10968
10969- Some modules and tests that would crash upon import when using a non-final
10970  release of Numpy (e.g. 1.9.0rc1). [#3471]
10971
10972Other Changes and Additions
10973---------------------------
10974
10975- The bundled copy of astropy-helpers has been updated to v1.0. [#3515]
10976
10977- Updated ``astropy.extern.configobj`` to Version 5. Version 5 uses ``six``
10978  and the same code covers both Python 2 and Python 3. [#3149]
10979
10980astropy.coordinates
10981^^^^^^^^^^^^^^^^^^^
10982
10983- The ``repr`` of ``SkyCoord`` and coordinate frame classes now separate
10984  frame attributes and coordinate information.  [#2704, #2882]
10985
10986astropy.io.fits
10987^^^^^^^^^^^^^^^
10988
10989- Overwriting an existing file using the ``clobber=True`` option no longer
10990  displays a warning message. [#1963]
10991
10992- ``fits.open`` no longer catches ``OSError`` exceptions on missing or
10993  unreadable files-- instead it raises the standard Python exceptions in such
10994  cases. [#2756, #2785]
10995
10996astropy.table
10997^^^^^^^^^^^^^
10998
10999- Sped up setting of ``Column`` slices by an order of magnitude. [#2994, #3020]
11000
11001- Updated the bundled ``six`` module to version 1.7.3 and made 1.7.3 the
11002  minimum acceptable version of ``six``. [#2814]
11003
11004- The version of ERFA included with Astropy is now v1.1.1 [#2971]
11005
11006- The code base is now fully Python 2 and 3 compatible and no longer requires
11007  2to3. [#2033]
11008
11009- `funcsigs <https://pypi.org/project/funcsigs>`_ is included in
11010  utils.compat, but defaults to the inspect module components where available
11011  (3.3+) [#3151].
11012
11013- The list of modules displayed in the pytest header can now be customized.
11014  [#3157]
11015
11016- `jinja2 <http://jinja.pocoo.org/docs/dev/>`_>=2.7 is now required to build the
11017  source code from the git repository, in order to allow the ERFA wrappers to
11018  be generated. [#3166]
11019
11020
110210.4.5 (2015-02-16)
11022==================
11023
11024Bug Fixes
11025---------
11026
11027- Fixed unnecessary attempt to run ``git`` when importing astropy.  In
11028  particular, fixed a crash in Python 3 that could result from this when
11029  importing Astropy when the the current working directory is an empty git
11030  repository. [#3475]
11031
11032Other Changes and Additions
11033---------------------------
11034
11035- Updated bundled copy of astropy-helpers to v0.4.6. [#3508]
11036
11037
110380.4.4 (2015-01-21)
11039==================
11040
11041Bug Fixes
11042---------
11043
11044astropy.vo.samp
11045^^^^^^^^^^^^^^^
11046
11047- ``astropy.vo.samp`` is now usable on Python builds that do not
11048  support the SSLv3 protocol (which depends both on the version of
11049  Python and the version of OpenSSL or LibreSSL that it is built
11050  against.) [#3308]
11051
11052API Changes
11053-----------
11054
11055astropy.vo.samp
11056^^^^^^^^^^^^^^^
11057
11058- The default SSL protocol used is now determined from the default
11059  used in the Python ``ssl`` standard library.  This default may be
11060  different depending on the exact version of Python you are using.
11061  [#3308]
11062
11063astropy.wcs
11064^^^^^^^^^^^
11065
11066- WCS allows slices of the form slice(None, x, y), which previously resulted
11067  in an unsliced copy being returned (note: this was previously incorrectly
11068  reported as fixed in v0.4.3) [#2909]
11069
11070
110710.4.3 (2015-01-15)
11072==================
11073
11074Bug Fixes
11075---------
11076
11077astropy.coordinates
11078^^^^^^^^^^^^^^^^^^^
11079
11080- The ``Distance`` class has been fixed to no longer rely on the deprecated
11081  cosmology functions. [#2991]
11082
11083- Ensure ``float32`` values can be used in coordinate representations. [#2983]
11084
11085- Fix frame attribute inheritance in ``SkyCoord.transform_to()`` method so
11086  that the default attribute value (e.g. equinox) for the destination frame
11087  gets used if no corresponding value was explicitly specified. [#3106]
11088
11089- ``Angle`` accepts hours:mins or deg:mins initializers (without
11090  seconds). In these cases float minutes are also accepted. [#2843]
11091
11092- ``astropy.coordinates.SkyCoord`` objects are now copyable. [#2888]
11093
11094- ``astropy.coordinates.SkyCoord`` object attributes are now
11095  immutable.  It is still technically possible to change the
11096  internal data for an array-valued coordinate object but this leads
11097  to inconsistencies [#2889] and should not be done. [#2888]
11098
11099astropy.cosmology
11100^^^^^^^^^^^^^^^^^
11101
11102- The ``ztol`` keyword argument to z_at_value now works correctly [#2993].
11103
11104astropy.io.ascii
11105^^^^^^^^^^^^^^^^
11106
11107- Fix a bug in Python 3 when guessing file format using a file object as
11108  input.  Also improve performance in same situation for Python 2. [#3132]
11109
11110- Fix a problem where URL was being downloaded for each guess. [#2001]
11111
11112astropy.io.fits
11113^^^^^^^^^^^^^^^
11114
11115- The ``in`` operator now works correctly for checking if an extension
11116  is in an ``HDUList`` (as given via EXTNAME, (EXTNAME, EXTVER) tuples,
11117  etc.) [#3060]
11118
11119- Added workaround for bug in MacOS X <= 10.8 that caused np.fromfile to
11120  fail. [#3078]
11121
11122- Added support for the ``RICE_ONE`` compression type synonym. [#3115]
11123
11124astropy.modeling
11125^^^^^^^^^^^^^^^^
11126
11127- Fixed a test failure on Debian/PowerPC and Debian/s390x. [#2708]
11128
11129- Fixed crash in evaluating models that have more outputs than inputs--this
11130  case may not be handled as desired for all conceivable models of this
11131  format (some may have to implement custom ``prepare_inputs`` and
11132  ``prepare_outputs`` methods).  But as long as all outputs can be assumed
11133  to have a shape determined from the broadcast of all inputs with all
11134  parameters then this can be used safely. [#3250]
11135
11136astropy.table
11137^^^^^^^^^^^^^
11138
11139- Fix a bug that caused join to fail for multi-dimensional columns. [#2984]
11140
11141- Fix a bug where MaskedColumn attributes which had been changed since
11142  the object was created were not being carried through when slicing. [#3023]
11143
11144- Fix a bug that prevented initializing a table from a structured array
11145  with multi-dimensional columns with copy=True. [#3034]
11146
11147- Fixed unnecessarily large unicode columns when instantiating a table from
11148  row data on Python 3. [#3052]
11149
11150- Improved the warning message when unable to aggregate non-numeric
11151  columns. [#2700]
11152
11153astropy.units
11154^^^^^^^^^^^^^
11155
11156- Operations on quantities with incompatible types now raises a much
11157  more informative ``TypeError``. [#2934]
11158
11159- ``Quantity.tolist`` now overrides the ``ndarray`` method to give a
11160  ``NotImplementedError`` (by renaming the previous ``list`` method). [#3050]
11161
11162- ``Quantity.round`` now always returns a ``Quantity`` (previously it
11163  returned an ``ndarray`` for ``decimals>0``). [#3062]
11164
11165- Ensured ``np.squeeze`` always returns a ``Quantity`` (it only worked if
11166  no dimensions were removed). [#3045]
11167
11168- Input to ``Quantity`` with a ``unit`` attribute no longer can get mangled
11169  with ``copy=False``. [#3051]
11170
11171- Remove trailing space in ``__format__`` calls for dimensionless quantities.
11172  [#3097]
11173
11174- Comparisons between units and non-unit-like objects now works
11175  correctly. [#3108]
11176
11177- Units with fractional powers are now correctly multiplied together
11178  by using rational arithmetic.  [#3121]
11179
11180- Removed a few entries from spectral density equivalencies which did not
11181  make sense. [#3153]
11182
11183astropy.utils
11184^^^^^^^^^^^^^
11185
11186- Fixed an issue with the ``deprecated`` decorator on classes that invoke
11187  ``super()`` in their ``__init__`` method. [#3004]
11188
11189- Fixed a bug which caused the ``metadata_conflicts`` parameter to be
11190  ignored in the ``astropy.utils.metadata.merge`` function. [#3294]
11191
11192astropy.vo
11193^^^^^^^^^^
11194
11195- Fixed an issue with reconnecting to a SAMP Hub. [#2674]
11196
11197astropy.wcs
11198^^^^^^^^^^^
11199
11200- Invalid or out of range values passed to ``wcs_world2pix`` will
11201  now be correctly identified and returned as ``nan``
11202  values. [#2965]
11203
11204- Fixed an issue which meant that Python thought ``WCS`` objects were
11205  iterable. [#3066]
11206
11207Misc
11208^^^^
11209
11210- Astropy will now work if your Python interpreter does not have the
11211  ``bz2`` module installed. [#3104]
11212
11213- Fixed ``ResourceWarning`` for ``astropy/extern/bundled/six.py`` that could
11214  occur sometimes after using Astropy in Python 3.4. [#3156]
11215
11216Other Changes and Additions
11217---------------------------
11218
11219astropy.coordinates
11220^^^^^^^^^^^^^^^^^^^
11221
11222- Improved the agreement of the FK5 <-> Galactic conversion with other
11223  codes, and with the FK5 <-> FK4 <-> Galactic route. [#3107]
11224
11225
112260.4.2 (2014-09-23)
11227==================
11228
11229Bug Fixes
11230---------
11231
11232astropy.coordinates
11233^^^^^^^^^^^^^^^^^^^
11234
11235- ``Angle`` accepts hours:mins or deg:mins initializers (without
11236  seconds). In these cases float minutes are also accepted.
11237
11238- The ``repr`` for coordinate frames now displays the frame attributes
11239  (ex: ra, dec) in a consistent order.  It should be noted that as part of
11240  this fix, the ``BaseCoordinateFrame.get_frame_attr_names()`` method now
11241  returns an ``OrderedDict`` instead of just a ``dict``. [#2845]
11242
11243astropy.io.fits
11244^^^^^^^^^^^^^^^
11245
11246- Fixed a crash when reading scaled float data out of a FITS file that was
11247  loaded from a string (using ``HDUList.fromfile``) rather than from a file.
11248  [#2710]
11249
11250- Fixed a crash when reading data from an HDU whose header contained in
11251  invalid value for the BLANK keyword (e.g., a string value instead of an
11252  integer as required by the FITS Standard). Invalid BLANK keywords are now
11253  warned about, but are otherwise ignored. [#2711]
11254
11255- Fixed a crash when reading the header of a tile-compressed HDU if that
11256  header contained invalid duplicate keywords resulting in a ``KeyError``
11257  [#2750]
11258
11259- Fixed crash when reading gzip-compressed FITS tables through the Astropy
11260  ``Table`` interface. [#2783]
11261
11262- Fixed corruption when writing new FITS files through to gzipped files.
11263  [#2794]
11264
11265- Fixed crash when writing HDUs made with non-contiguous data arrays to
11266  file-like objects. [#2794]
11267
11268- It is now possible to create ``astropy.io.fits.BinTableHDU``
11269  objects with a table with zero rows. [#2916]
11270
11271astropy.io.misc
11272^^^^^^^^^^^^^^^
11273
11274- Fixed a bug that prevented h5py ``Dataset`` objects from being
11275  automatically recognized by ``Table.read``. [#2831]
11276
11277astropy.modeling
11278^^^^^^^^^^^^^^^^
11279
11280- Make ``LevMarLSQFitter`` work with ``weights`` keyword. [#2900]
11281
11282astropy.table
11283^^^^^^^^^^^^^
11284
11285- Fixed reference cycle in tables that could prevent ``Table`` objects
11286  from being freed from memory. [#2879]
11287
11288- Fixed an issue where ``Table.pprint()`` did not print the header to
11289  ``stdout`` when ``stdout`` is redirected (say, to a file). [#2878]
11290
11291- Fixed printing of masked values when a format is specified. [#1026]
11292
11293- Ensured that numpy ufuncs that return booleans return plain ``ndarray``
11294  instances, just like the comparison operators. [#2963]
11295
11296astropy.time
11297^^^^^^^^^^^^
11298
11299- Ensure bigendian input to Time works on a little-endian machine
11300  (and vice versa).  [#2942]
11301
11302astropy.units
11303^^^^^^^^^^^^^
11304
11305- Ensure unit is kept when adding 0 to quantities. [#2968]
11306
11307astropy.utils
11308^^^^^^^^^^^^^
11309
11310- Fixed color printing on Windows with IPython 2.0. [#2878]
11311
11312astropy.vo
11313^^^^^^^^^^
11314
11315- Improved error message on Cone Search time out. [#2687]
11316
11317Other Changes and Additions
11318---------------------------
11319
11320- Fixed a couple issues with files being inappropriately included and/or
11321  excluded from the source archive distributions of Astropy. [#2843, #2854]
11322
11323- As part of fixing the fact that masked elements of table columns could not be
11324  printed when a format was specified, the column format string options were
11325  expanded to allow simple specifiers such as ``'5.2f'``. [#2898]
11326
11327- Ensure numpy 1.9 is supported. [#2917]
11328
11329- Ensure numpy master is supported, by making ``np.cbrt`` work with quantities.
11330  [#2937]
11331
113320.4.1 (2014-08-08)
11333==================
11334
11335Bug Fixes
11336---------
11337
11338astropy.config
11339^^^^^^^^^^^^^^
11340
11341- Fixed a bug where an unedited configuration file from astropy
11342  0.3.2 would not be correctly identified as unedited. [#2772] This
11343  resulted in the warning::
11344
11345      WARNING: ConfigurationChangedWarning: The configuration options
11346      in astropy 0.4 may have changed, your configuration file was not
11347      updated in order to preserve local changes.  A new configuration
11348      template has been saved to
11349      '~/.astropy/config/astropy.0.4.cfg'. [astropy.config.configuration]
11350
11351- Fixed the error message that is displayed when an old
11352  configuration item has moved.  Before, the destination
11353  section was wrong.  [#2772]
11354
11355- Added configuration settings for ``io.fits``, ``io.votable`` and
11356  ``table.jsviewer`` that were missing from the configuration file
11357  template. [#2772]
11358
11359- The configuration template is no longer rewritten on every import
11360  of astropy, causing race conditions. [#2805]
11361
11362astropy.convolution
11363^^^^^^^^^^^^^^^^^^^
11364
11365- Fixed the multiplication of ``Kernel`` with numpy floats. [#2174]
11366
11367astropy.coordinates
11368^^^^^^^^^^^^^^^^^^^
11369
11370- ``Distance`` can now take a list of quantities. [#2261]
11371
11372- For in-place operations for ``Angle`` instances in which the result unit
11373  is not an angle, an exception is raised before the instance is corrupted.
11374  [#2718]
11375
11376- ``CartesianPoints`` are now deprecated in favor of
11377  ``CartesianRepresentation``. [#2727]
11378
11379astropy.io.misc
11380^^^^^^^^^^^^^^^
11381
11382- An existing table within an HDF5 file can be overwritten without affecting
11383  other datasets in the same HDF5 file by simultaneously using
11384  ``overwrite=True`` and ``append=True`` arguments to the ``Table.write``
11385  method. [#2624]
11386
11387astropy.logger
11388^^^^^^^^^^^^^^
11389
11390- Fixed a crash that could occur in rare cases when (such as in bundled
11391  apps) where submodules of the ``email`` package are not importable. [#2671]
11392
11393astropy.nddata
11394^^^^^^^^^^^^^^
11395
11396- ``astropy.nddata.NDData()`` no longer raises a ``ValueError`` when passed
11397  a numpy masked array which has no masked entries. [#2784]
11398
11399astropy.table
11400^^^^^^^^^^^^^
11401
11402- When saving a table to a FITS file containing a unit that is not
11403  supported by the FITS standard, a warning rather than an exception
11404  is raised. [#2797]
11405
11406astropy.units
11407^^^^^^^^^^^^^
11408
11409- By default, ``Quantity`` and its subclasses will now convert to float also
11410  numerical types such as ``decimal.Decimal``, which are stored as objects
11411  by numpy. [#1419]
11412
11413- The units ``count``, ``pixel``, ``voxel`` and ``dbyte`` now output
11414  to FITS, OGIP and VOUnit formats correctly. [#2798]
11415
11416astropy.utils
11417^^^^^^^^^^^^^
11418
11419- Restored missing information from deprecation warning messages
11420  from the ``deprecated`` decorator. [#2811]
11421
11422- Fixed support for ``staticmethod`` deprecation in the ``deprecated``
11423  decorator. [#2811]
11424
11425astropy.wcs
11426^^^^^^^^^^^
11427
11428- Fixed a memory leak when ``astropy.wcs.WCS`` objects are copied
11429  [#2754]
11430
11431- Fixed a crash when passing ``ra_dec_order=True`` to any of the
11432  ``*2world`` methods. [#2791]
11433
11434Other Changes and Additions
11435---------------------------
11436
11437- Bundled copy of astropy-helpers upgraded to v0.4.1. [#2825]
11438
11439- General improvements to documentation and docstrings [#2722, #2728, #2742]
11440
11441- Made it easier for third-party packagers to have Astropy use their own
11442  version of the ``six`` module (so long as it meets the minimum version
11443  requirement) and remove the copy bundled with Astropy.  See the
11444  astropy/extern/README file in the source tree.  [#2623]
11445
11446
114470.4 (2014-07-16)
11448================
11449
11450New Features
11451------------
11452
11453astropy.constants
11454^^^^^^^^^^^^^^^^^
11455
11456- Added ``b_wien`` to represent Wien wavelength displacement law constant.
11457  [#2194]
11458
11459astropy.convolution
11460^^^^^^^^^^^^^^^^^^^
11461
11462- Changed the input parameter in ``Gaussian1DKernel`` and
11463  ``Gaussian2DKernel`` from ``width`` to ``stddev`` [#2085].
11464
11465astropy.coordinates
11466^^^^^^^^^^^^^^^^^^^
11467
11468- The coordinates package has undergone major changes to implement
11469  `APE5 <https://github.com/astropy/astropy-APEs/blob/master/APE5.rst>`_ .
11470  These include backwards-incompatible changes, as the underlying framework
11471  has changed substantially. See the APE5 text and the package documentation
11472  for more details. [#2422]
11473
11474- A ``position_angle`` method has been added to the new ``SkyCoord``. [#2487]
11475
11476- Updated ``Angle.dms`` and ``Angle.hms`` to return ``namedtuple`` -s instead
11477  of regular tuples, and added ``Angle.signed_dms`` attribute that gives the
11478  absolute value of the ``d``, ``m``, and ``s`` along with the sign.  [#1988]
11479
11480- By default, ``Distance`` objects are now required to be positive. To
11481  allow negative values, set ``allow_negative=True`` in the ``Distance``
11482  constructor when creating a ``Distance`` instance.
11483
11484- ``Longitude`` (resp. ``Latitude``) objects cannot be used any more to
11485  initialize or set ``Latitude`` (resp. ``Longitude``) objects. An explicit
11486  conversion to ``Angle`` is now required. [#2461]
11487
11488- The deprecated functions for pre-0.3 coordinate object names like
11489  ``ICRSCoordinates`` have been removed. [#2422]
11490
11491- The ``rotation_matrix`` and ``angle_axis`` functions in
11492  ``astropy.coordinates.angles`` were made more numerically consistent and
11493  are now tested explicitly [#2619]
11494
11495astropy.cosmology
11496^^^^^^^^^^^^^^^^^
11497
11498- Added ``z_at_value`` function to find the redshift at which a cosmology
11499  function matches a desired value. [#1909]
11500
11501- Added ``FLRW.differential_comoving_volume`` method to give the differential
11502  comoving volume at redshift z. [#2103]
11503
11504- The functional interface is now deprecated in favor of the more-explicit
11505  use of methods on cosmology objects. [#2343]
11506
11507- Updated documentation to reflect the removal of the functional
11508  interface. [#2507]
11509
11510astropy.io.ascii
11511^^^^^^^^^^^^^^^^
11512
11513- The ``astropy.io.ascii`` output formats ``latex`` and ``aastex`` accept a
11514  dictionary called ``latex_dict`` to specify options for LaTeX output.  It is
11515  now possible to specify the table alignment within the text via the
11516  ``tablealign`` keyword. [#1838]
11517
11518- If ``header_start`` is specified in a call to ``ascii.get_reader`` or any
11519  method that calls ``get_reader`` (e.g. ``ascii.read``) but ``data_start``
11520  is not specified at the same time, then ``data_start`` is calculated so
11521  that the data starts after the header. Before this, the default was
11522  that the header line was read again as the first data line
11523  [#855 and #1844].
11524
11525- A new ``csv`` format was added as a convenience for handling CSV (comma-
11526  separated values) data. [#1935]
11527  This format also recognises rows with an inconsistent number of elements.
11528  [#1562]
11529
11530- An option was added to guess the start of data for CDS format files when
11531  they do not strictly conform to the format standard. [#2241]
11532
11533- Added an HTML reader and writer to the ``astropy.io.ascii`` package.
11534  Parsing requires the installation of BeautifulSoup and is therefore
11535  an optional feature. [#2160]
11536
11537- Added support for inputting column descriptions and column units
11538  with the ``io.ascii.SExtractor`` reader. [#2372]
11539
11540- Allow the use of non-local ReadMe files in the CDS reader. [#2329]
11541
11542- Provide a mechanism to select how masked values are printed. [#2424]
11543
11544- Added support for reading multi-aperture daophot file. [#2656]
11545
11546astropy.io.fits
11547^^^^^^^^^^^^^^^
11548
11549- Included a new command-line script called ``fitsheader`` to display the
11550  header(s) of a FITS file from the command line. [#2092]
11551
11552- Added new verification options ``fix+ignore``, ``fix+warn``,
11553  ``fix+exception``, ``silentfix+ignore``, ``silentfix+warn``, and
11554  ``silentfix+exception`` which give more control over how to report fixable
11555  errors as opposed to unfixable errors.
11556
11557astropy.modeling
11558^^^^^^^^^^^^^^^^
11559
11560- Prototype implementation of fitters that treat optimization algorithms
11561  separately from fit statistics, allowing new fitters to be created by
11562  mixing and matching optimizers and statistic functions. [#1914]
11563
11564- Slight overhaul to how inputs to and outputs from models are handled with
11565  respect to array-valued parameters and variables, as well as sets of
11566  multiple models.  See the associated PR and the modeling section of the
11567  v0.4 documentation for more details. [#2634]
11568
11569- Added a new ``SimplexLSQFitter`` which uses a downhill simplex optimizer
11570  with a least squares statistic. [#1914]
11571
11572- Changed ``Gaussian2D`` model such that ``theta`` now increases
11573  counterclockwise. [#2199]
11574
11575- Replaced the ``MatrixRotation2D`` model with a new model called simply
11576  ``Rotation2D`` which requires only an angle to specify the rotation.
11577  The new ``Rotation2D`` rotates in a counter-clockwise sense whereas
11578  the old ``MatrixRotation2D`` increased the angle clockwise.
11579  [#2266, #2269]
11580
11581- Added a new ``AffineTransformation2D`` model which serves as a
11582  replacement for the capability of ``MatrixRotation2D`` to accept an
11583  arbitrary matrix, while also adding a translation capability. [#2269]
11584
11585- Added ``GaussianAbsorption1D`` model. [#2215]
11586
11587- New ``Redshift`` model [#2176].
11588
11589astropy.nddata
11590^^^^^^^^^^^^^^
11591
11592- Allow initialization ``NDData`` or ``StdDevUncertainty`` with a
11593  ``Quantity``. [#2380]
11594
11595astropy.stats
11596^^^^^^^^^^^^^
11597
11598- Added flat prior to binom_conf_interval and binned_binom_proportion
11599
11600- Change default in ``sigma_clip`` from ``np.median`` to ``np.ma.median``.
11601  [#2582]
11602
11603astropy.sphinx
11604^^^^^^^^^^^^^^
11605
11606- Note, the following new features are included in astropy-helpers as well:
11607
11608- The ``automodapi`` and ``automodsumm`` extensions now include sphinx
11609  configuration options to write out what ``automodapi`` and ``automodsumm``
11610  generate, mainly for debugging purposes. [#1975, #2022]
11611
11612- Reference documentation now shows functions/class docstrings at the
11613  intended user-facing API location rather than the actual file where
11614  the implementation is found. [#1826]
11615
11616- The ``automodsumm`` extension configuration was changed to generate
11617  documentation of class ``__call__`` member functions. [#1817, #2135]
11618
11619- ``automodapi`` and ``automodsumm`` now have an ``:allowed-package-names:``
11620  option that make it possible to document functions and classes that
11621  are in a different namespace.  [#2370]
11622
11623astropy.table
11624^^^^^^^^^^^^^
11625
11626- Improved grouped table aggregation by using the numpy ``reduceat()`` method
11627  when possible. This can speed up the operation by a factor of at least 10
11628  to 100 for large unmasked tables and columns with relatively small
11629  group sizes.  [#2625]
11630
11631- Allow row-oriented data input using a new ``rows`` keyword argument.
11632  [#850]
11633
11634- Allow subclassing of ``Table`` and the component classes ``Row``, ``Column``,
11635  ``MaskedColumn``, ``TableColumns``, and ``TableFormatter``. [#2287]
11636
11637- Fix to allow numpy integer types as valid indices into tables in
11638  Python 3.x [#2477]
11639
11640- Remove transition code related to the order change in ``Column`` and
11641  ``MaskedColumn`` arguments ``name`` and ``data`` from Astropy 0.2
11642  to 0.3. [#2511]
11643
11644- Change HTML table representation in IPython notebook to show all
11645  table columns instead of restricting to 80 column width.  [#2651]
11646
11647astropy.time
11648^^^^^^^^^^^^
11649
11650- Mean and apparent sidereal time can now be calculated using the
11651  ``sidereal_time`` method [#1418].
11652
11653- The time scale now defaults to UTC if no scale is provided. [#2091]
11654
11655- ``TimeDelta`` objects can have all scales but UTC, as well as, for
11656  consistency with time-like quantities, undefined scale (where the
11657  scale is taken from the object one adds to or subtracts from).
11658  This allows, e.g., to work consistently in TDB.  [#1932]
11659
11660- ``Time`` now supports ISO format strings that end in "Z". [#2211, #2203]
11661
11662astropy.units
11663^^^^^^^^^^^^^
11664
11665- Support for the unit format `Office of Guest Investigator Programs (OGIP)
11666  FITS files
11667  <https://heasarc.gsfc.nasa.gov/docs/heasarc/ofwg/docs/general/ogip_93_001/>`__
11668  has been added. [#377]
11669
11670- The ``spectral`` equivalency can now handle angular wave number. [#1306 and
11671  #1899]
11672
11673- Added ``one`` as a shorthand for ``dimensionless_unscaled``. [#1980]
11674
11675- Added ``dex`` and ``dB`` units. [#1628]
11676
11677- Added ``temperature()`` equivalencies to support conversion between
11678  Kelvin, Celsius, and Fahrenheit. [#2209]
11679
11680- Added ``temperature_energy()`` equivalencies to support conversion
11681  between electron-volt and Kelvin. [#2637]
11682
11683- The runtime of ``astropy.units.Unit.compose`` is greatly improved
11684  (by a factor of 2 in most cases) [#2544]
11685
11686- Added ``electron`` unit. [#2599]
11687
11688astropy.utils
11689^^^^^^^^^^^^^
11690
11691- ``timer.RunTimePredictor`` now uses ``astropy.modeling`` in its
11692  ``do_fit()`` method. [#1896]
11693
11694astropy.vo
11695^^^^^^^^^^
11696
11697- A new sub-package, ``astropy.vo.samp``, is now available (this was
11698  previously the SAMPy package, which has been refactored for use in
11699  Astropy). [#1907]
11700
11701- Enhanced functionalities for ``VOSCatalog`` and ``VOSDatabase``. [#1206]
11702
11703astropy.wcs
11704^^^^^^^^^^^
11705
11706- astropy now requires wcslib version 4.23.  The version of wcslib
11707  included with astropy has been updated to version 4.23.
11708
11709- Bounds checking is now performed on native spherical
11710  coordinates.  Any out-of-bounds values will be returned as
11711  ``NaN``, and marked in the ``stat`` array, if using the
11712  low-level ``wcslib`` interface such as
11713  ``astropy.wcs.Wcsprm.p2s``. [#2107]
11714
11715- A new method, ``astropy.wcs.WCS.compare()``, compares two wcsprm
11716  structs for equality with varying degrees of strictness. [#2361]
11717
11718- New ``astropy.wcs.utils`` module, with a handful of tools for manipulating
11719  WCS objects, including dropping, swapping, and adding axes.
11720
11721Misc
11722^^^^
11723
11724- Includes the new astropy-helpers package which separates some of Astropy's
11725  build, installation, and documentation infrastructure out into an
11726  independent package, making it easier for Affiliated Packages to depend on
11727  these features.  astropy-helpers replaces/deprecates some of the submodules
11728  in the ``astropy`` package (see API Changes below).  See also
11729  `APE 4 <https://github.com/astropy/astropy-APEs/blob/master/APE4.rst>`_
11730  for more details on the motivation behind and implementation of
11731  astropy-helpers.  [#1563]
11732
11733
11734API Changes
11735-----------
11736
11737astropy.config
11738^^^^^^^^^^^^^^
11739
11740- The configuration system received a major overhaul, as part of APE3.  It is
11741  no longer possible to save configuration items from Python, but instead
11742  users must edit the configuration file directly.  The locations of
11743  configuration items have moved, and some have been changed to science state
11744  values.  The old locations should continue to work until astropy 0.5, but
11745  deprecation warnings will be displayed.  See the `Configuration transition
11746  <https://docs.astropy.org/en/v0.4/config/config_0_4_transition.html>`_
11747  docs for a detailed description of the changes and how to update existing
11748  code. [#2094]
11749
11750astropy.io.fits
11751^^^^^^^^^^^^^^^
11752
11753- The ``astropy.io.fits.new_table`` function is now fully deprecated (though
11754  will not be removed for a long time, considering how widely it is used).
11755
11756  Instead please use the more explicit ``BinTableHDU.from_columns`` to create
11757  a new binary table HDU, and the similar ``TableHDU.from_columns`` to create
11758  a new ASCII table.  These otherwise accept the same arguments as
11759  ``new_table`` which is now just a wrapper for these.
11760
11761- The ``.fromstring`` classmethod of each HDU type has been simplified such
11762  that, true to its namesake, it only initializes an HDU from a string
11763  containing its header *and* data.
11764
11765- Fixed an issue where header wildcard matching (for example
11766  ``header['DATE*']``) can be used to match *any* characters that might
11767  appear in a keyword.  Previously this only matched keywords containing
11768  characters in the set ``[0-9A-Za-z_]``.  Now this can also match a hyphen
11769  ``-`` and any other characters, as some conventions like ``HIERARCH`` and
11770  record-valued keyword cards allow a wider range of valid characters than
11771  standard FITS keywords.
11772
11773- This will be the *last* release to support the following APIs that have
11774  been marked deprecated since Astropy v0.1/PyFITS v3.1:
11775
11776- The ``CardList`` class, which was part of the old header implementation.
11777
11778- The ``Card.key`` attribute.  Use ``Card.keyword`` instead.
11779
11780- The ``Card.cardimage`` and ``Card.ascardimage`` attributes.  Use simply
11781  ``Card.image`` or ``str(card)`` instead.
11782
11783- The ``create_card`` factory function.  Simply use the normal ``Card``
11784  constructor instead.
11785
11786- The ``create_card_from_string`` factory function.  Use ``Card.fromstring``
11787  instead.
11788
11789- The ``upper_key`` function.  Use ``Card.normalize_keyword`` method
11790  instead (this is not unlikely to be used outside of PyFITS itself, but it
11791  was technically public API).
11792
11793- The usage of ``Header.update`` with ``Header.update(keyword, value,
11794  comment)`` arguments.  ``Header.update`` should only be used analogously
11795  to ``dict.update``.  Use ``Header.set`` instead.
11796
11797- The ``Header.ascard`` attribute.  Use ``Header.cards`` instead for a list
11798  of all the ``Card`` objects in the header.
11799
11800- The ``Header.rename_key`` method.  Use ``Header.rename_keyword`` instead.
11801
11802- The ``Header.get_history`` method.  Use ``header['HISTORY']`` instead
11803  (normal keyword lookup).
11804
11805- The ``Header.get_comment`` method.  Use ``header['COMMENT']`` instead.
11806
11807- The ``Header.toTxtFile`` method.  Use ``header.totextfile`` instead.
11808
11809- The ``Header.fromTxtFile`` method.  Use ``Header.fromtextfile`` instead.
11810
11811- The ``tdump`` and ``tcreate`` functions.  Use ``tabledump`` and
11812  ``tableload`` respectively.
11813
11814- The ``BinTableHDU.tdump`` and ``tcreate`` methods.  Use
11815  ``BinTableHDU.dump`` and ``BinTableHDU.load`` respectively.
11816
11817- The ``txtfile`` argument to the ``Header`` constructor.  Use
11818  ``Header.fromfile`` instead.
11819
11820- The ``startColumn`` and ``endColumn`` arguments to the ``FITS_record``
11821  constructor.  These are unlikely to be used by any user code.
11822
11823  These deprecated interfaces will be removed from the development version of
11824  Astropy following the v0.4 release (they will still be available in any
11825  v0.4.x bugfix releases, however).
11826
11827astropy.modeling
11828^^^^^^^^^^^^^^^^
11829
11830- The method computing the derivative of the model with respect
11831  to parameters was renamed from ``deriv`` to ``fit_deriv``. [#1739]
11832
11833- ``ParametricModel`` and the associated ``Parametric1DModel`` and
11834  ``Parametric2DModel`` classes have been renamed ``FittableModel``,
11835  ``Fittable1DModel``, and ``Fittable2DModel`` respectively.  The base
11836  ``Model`` class has subsumed the functionality of the old
11837
11838  ``ParametricModel`` class so that all models support parameter constraints.
11839  The only distinction of ``FittableModel`` is that anything which subclasses
11840  it is assumed "safe" to use with Astropy fitters. [#2276]
11841
11842- ``NonLinearLSQFitter`` has been renamed ``LevMarLSQFitter`` to emphasise
11843  that it uses the Levenberg-Marquardt optimization algorithm with a
11844  least squares statistic function. [#1914]
11845
11846- The ``SLSQPFitter`` class has been renamed ``SLSQPLSQFitter`` to emphasize
11847  that it uses the Sequential Least Squares Programming optimization
11848  algorithm with a least squares statistic function. [#1914]
11849
11850- The ``Fitter.errorfunc`` method has been renamed to the more general
11851  ``Fitter.objective_function``. [#1914]
11852
11853astropy.nddata
11854^^^^^^^^^^^^^^
11855
11856- Issue warning if unit is changed from a non-trivial value by directly
11857  setting ``NDData.unit``. [#2411]
11858
11859- The ``mask`` and ``flag`` attributes of ``astropy.nddata.NDData`` can now
11860  be set with any array-like object instead of requiring that they be set
11861  with a ``numpy.ndarray``. [#2419]
11862
11863astropy.sphinx
11864^^^^^^^^^^^^^^
11865
11866- Use of the ``astropy.sphinx`` module is deprecated; all new development of
11867  this module is in ``astropy_helpers.sphinx`` which should be used instead
11868  (therefore documentation builds that made use of any of the utilities in
11869  ``astropy.sphinx`` now have ``astropy_helpers`` as a documentation
11870  dependency).
11871
11872astropy.table
11873^^^^^^^^^^^^^
11874
11875- The default table printing function now shows a table header row for units
11876  if any columns have the unit attribute set.  [#1282]
11877
11878- Before, an unmasked ``Table`` was automatically converted to a masked
11879  table if generated from a masked Table or a ``MaskedColumn``.
11880  Now, this conversion is only done if explicitly requested or if any
11881  of the input values is actually masked. [#1185]
11882
11883- The repr() function of ``astropy.table.Table`` now shows the units
11884  if any columns have the unit attribute set.  [#2180]
11885
11886- The semantics of the config options ``table.max_lines`` and
11887  ``table.max_width`` has changed slightly.  If these values are not
11888  set in the config file, astropy will try to determine the size
11889  automatically from the terminal. [#2683]
11890
11891astropy.time
11892^^^^^^^^^^^^
11893
11894- Correct use of UT in TDB calculation [#1938, #1939].
11895
11896- ``TimeDelta`` objects can have scales other than TAI [#1932].
11897
11898- Location information should now be passed on via an ``EarthLocation``
11899  instance or anything that initialises it, e.g., a tuple containing
11900  either geocentric or geodetic coordinates. [#1928]
11901
11902astropy.units
11903^^^^^^^^^^^^^
11904
11905- ``Quantity`` now converts input to float by default, as this is physically
11906  most sensible for nearly all units [#1776].
11907
11908- ``Quantity`` comparisons with ``==`` or ``!=`` now always return ``True``
11909  or ``False``, even if units do not match (for which case a ``UnitsError``
11910  used to be raised).  [#2328]
11911
11912- Applying ``float`` or ``int`` to a ``Quantity`` now works for all
11913  dimensionless quantities; they are automatically converted to unscaled
11914  dimensionless. [#2249]
11915
11916- The exception ``astropy.units.UnitException``, which was
11917  deprecated in astropy 0.2, has been removed.  Use
11918  ``astropy.units.UnitError`` instead [#2386]
11919
11920- Initializing a ``Quantity`` with a valid number/array with a ``unit``
11921  attribute now interprets that attribute as the units of the input value.
11922  This makes it possible to initialize a ``Quantity`` from an Astropy
11923  ``Table`` column and have it correctly pick up the units from the column.
11924  [#2486]
11925
11926astropy.wcs
11927^^^^^^^^^^^
11928
11929- ``calcFootprint`` was deprecated. It is replaced by
11930  ``calc_footprint``.  An optional boolean keyword ``center`` was
11931  added to ``calc_footprint``.  It controls whether the centers or
11932  the corners of the pixels are used in the computation. [#2384]
11933
11934- ``astropy.wcs.WCS.sip_pix2foc`` and
11935  ``astropy.wcs.WCS.sip_foc2pix`` formerly did not conform to the
11936  ``SIP`` standard: ``CRPIX`` was added to the ``foc`` result so
11937  that it could be used as input to "core FITS WCS".  As of astropy
11938  0.4, ``CRPIX`` is no longer added to the result, so the ``foc``
11939  space is correct as defined in the `SIP convention
11940  <https://ui.adsabs.harvard.edu/abs/2005ASPC..347..491S>`__. [#2360]
11941
11942- ``astropy.wcs.UnitConverter``, which was deprecated in astropy
11943  0.2, has been removed.  Use the ``astropy.units`` module
11944  instead. [#2386]
11945
11946- The following methods on ``astropy.wcs.WCS``, which were
11947  deprecated in astropy 0.1, have been removed [#2386]:
11948
11949- ``all_pix2sky`` -> ``all_pix2world``
11950
11951- ``wcs_pix2sky`` -> ``wcs_pix2world``
11952
11953- ``wcs_sky2pix`` -> ``wcs_world2pix``
11954
11955- The ``naxis1`` and ``naxis2`` attributes and the ``get_naxis``
11956  method of ``astropy.wcs.WCS``, which were deprecated in astropy
11957  0.2, have been removed.  Use the shape of the underlying FITS data
11958  array instead.  [#2386]
11959
11960Misc
11961^^^^
11962
11963- The ``astropy.setup_helpers`` and ``astropy.version_helpers`` modules are
11964  deprecated; any non-critical fixes and development to those modules should
11965  be in ``astropy_helpers`` instead.  Packages that use these modules in
11966  their ``setup.py`` should depend on ``astropy_helpers`` following the same
11967  pattern as in the Astropy package template.
11968
11969
11970Bug Fixes
11971---------
11972
11973astropy.constants
11974^^^^^^^^^^^^^^^^^
11975
11976- ``astropy.constants.Contant`` objects can now be deep
11977  copied. [#2601]
11978
11979astropy.cosmology
11980^^^^^^^^^^^^^^^^^
11981
11982- The distance modulus function in ``astropy.cosmology`` can now handle
11983  negative distances, which can occur in certain closed cosmologies. [#2008]
11984
11985- Removed accidental imports of some extraneous variables in
11986  ``astropy.cosmology`` [#2025]
11987
11988astropy.io.ascii
11989^^^^^^^^^^^^^^^^
11990
11991- ``astropy.io.ascii.read`` would fail to read lists of strings where some of
11992  the strings consisted of just a newline ("\n"). [#2648]
11993
11994astropy.io.fits
11995^^^^^^^^^^^^^^^
11996
11997- Use NaN for missing values in FITS when using Table.write for float
11998  columns. Earlier the default fill value was close to 1e20.[#2186]
11999
12000- Fixes for checksums on 32-bit platforms.  Results may be different
12001  if writing or checking checksums in "nonstandard" mode.  [#2484]
12002
12003- Additional minor bug fixes ported from PyFITS.  [#2575]
12004
12005astropy.io.votable
12006^^^^^^^^^^^^^^^^^^
12007
12008- It is now possible to save an ``astropy.table.Table`` object as a
12009  VOTable with any of the supported data formats, ``tabledata``,
12010  ``binary`` and ``binary2``, by using the ``tabledata_format``
12011  kwarg. [#2138]
12012
12013- Fixed a crash writing out variable length arrays. [#2577]
12014
12015astropy.nddata
12016^^^^^^^^^^^^^^
12017
12018- Indexing ``NDData`` in a way that results in a single element returns that
12019  element. [#2170]
12020
12021- Change construction of result of arithmetic and unit conversion to allow
12022  subclasses to require the presence of attribute like unit. [#2300]
12023
12024- Scale uncertainties to correct units in arithmetic operations and unit
12025  conversion. [#2393]
12026
12027- Ensure uncertainty and mask members are copied in arithmetic and
12028  convert_unit_to. [#2394]
12029
12030- Mask result of arithmetic if either of the operands is masked. [#2403]
12031
12032- Copy all attributes of input object if ``astropy.nddata.NDData`` is
12033  initialized with an ``NDData`` object. [#2406]
12034
12035- Copy ``flags`` to new object in ``convert_unit_to``. [#2409]
12036
12037- Result of ``NDData`` arithmetic makes a copy of any WCS instead of using
12038  a reference. [#2410]
12039
12040- Fix unit handling for multiplication/division and use
12041  ``astropy.units.Quantity`` for units arithmetic. [#2413]
12042
12043- A masked ``NDData`` is now converted to a masked array when used in an
12044  operation or ufunc with a numpy array. [#2414]
12045
12046- An unmasked ``NDData`` now uses an internal representation of its mask
12047  state that ``numpy.ma`` expects so that an ``NDData`` behaves as an
12048  unmasked array. [#2417]
12049
12050astropy.sphinx
12051^^^^^^^^^^^^^^
12052
12053- Fix crash in smart resolver when the resolution doesn't work. [#2591]
12054
12055astropy.table
12056^^^^^^^^^^^^^
12057
12058- The ``astropy.table.Column`` object can now use both functions and callable
12059  objects as formats. [#2313]
12060
12061- Fixed a problem on 64 bit windows that caused errors
12062  "expected 'DTYPE_t' but got 'long long'" [#2490]
12063
12064- Fix initialisation of ``TableColumns`` with lists or tuples.  [#2647]
12065
12066- Fix removal of single column using ``remove_columns``. [#2699]
12067
12068- Fix a problem that setting a row element within a masked table did not
12069  update the corresponding table element. [#2734]
12070
12071astropy.time
12072^^^^^^^^^^^^
12073
12074- Correct UT1->UTC->UT1 round-trip being off by 1 second if UT1 is
12075  on a leap second. [#2077]
12076
12077astropy.units
12078^^^^^^^^^^^^^
12079
12080- ``Quantity.copy`` now behaves identically to ``ndarray.copy``, and thus
12081  supports the ``order`` argument (for numpy >=1.6). [#2284]
12082
12083- Composing base units into identical composite units now works. [#2382]
12084
12085- Creating and composing/decomposing units is now substantially faster [#2544]
12086
12087- ``Quantity`` objects now are able to be assigned NaN [#2695]
12088
12089astropy.wcs
12090^^^^^^^^^^^
12091
12092- Astropy now requires wcslib version 4.23.  The version of wcslib
12093  included with astropy has been updated to version 4.23.
12094
12095- Bug fixes in the projection routines: in ``hpxx2s`` [the
12096  cartesian-to-spherical operation of the ``HPX`` projection]
12097  relating to bounds checking, bug introduced at wcslib 4.20; in
12098  ``parx2s`` and molx2s`` [the cartesion-to-spherical operation of
12099  the ``PAR`` and ``MOL`` projections respectively] relating to
12100  setting the stat vector; in ``hpxx2s`` relating to implementation
12101  of the vector API; and in ``xphx2s`` relating to setting an
12102  out-of-bounds value of *phi*.
12103
12104- In the ``PCO`` projection, use alternative projection equations
12105  for greater numerical precision near theta == 0.  In the ``COP``
12106  projection, return an exact result for theta at the poles.
12107  Relaxed the tolerance for bounds checking a little in ``SFL``
12108  projection.
12109
12110- Fix a bug allocating insufficient memory in
12111  ``astropy.wcs.WCS.sub`` [#2468]
12112
12113- A new method, ``Wcsprm.bounds_check`` (corresponding to wcslib's
12114  ``wcsbchk``) has been added to control what bounds checking is performed by
12115  wcslib.
12116
12117- ``WCS.to_header`` will now raise a more meaningful exception when the WCS
12118  information is invalid or inconsistent in some way. [#1854]
12119
12120- In ``WCS.to_header``, ``RESTFRQ`` and ``RESTWAV`` are no longer
12121  rewritten if zero. [#2468]
12122
12123- In ``WCS.to_header``, floating point values will now always be written
12124  with an exponent or fractional part, i.e. ``.0`` being appended if necessary
12125  to achieve this. [#2468]
12126
12127- If the C extension for ``astropy.wcs`` was not built or fails to import for
12128  any reason, ``import astropy.wcs`` will result in an ``ImportError``,
12129  rather than getting obscure errors once the ``astropy.wcs`` is used.
12130  [#2061]
12131
12132- When the C extension for ``astropy.wcs`` is built using a version of
12133  ``wscslib`` already present in the system, the package does not try
12134  to install ``wcslib`` headers under ``astropy/wcs/include``. [#2536]
12135
12136- Fixes an unresolved external symbol error in the
12137  ``astropy.wcs._wcs`` C extension on Microsoft Windows when built
12138  with a Microsoft compiler. [#2478]
12139
12140Misc
12141^^^^
12142
12143- Running the test suite with ``python setup.py test`` now works if
12144  the path to the source contains spaces. [#2488]
12145
12146- The version of ERFA included with Astropy is now v1.1.0 [#2497]
12147
12148- Removed deprecated option from travis configuration and force use of
12149  wheels rather than allowing build from source. [#2576]
12150
12151- The short option ``-n`` to run tests in parallel was broken
12152  (conflicts with the distutils built-in option of "dry-run").
12153  Changed to ``-j``. [#2566]
12154
12155Other Changes and Additions
12156---------------------------
12157
12158- python setup.py test --coverage will now give more accurate
12159  results, because the coverage analysis will include early imports of
12160  astropy.  There doesn't seem to be a way to get this to work when
12161  doing ``import astropy; astropy.test()``, so the ``coverage``
12162  keyword to ``astropy.test`` has been removed.  Coverage testing now
12163  depends only on `coverage.py
12164  <http://coverage.readthedocs.io/en/latest/>`__, not
12165  ``pytest-cov``. [#2112]
12166
12167- The included version of py.test has been upgraded to 2.5.1. [#1970]
12168
12169- The included version of six.py has been upgraded to 1.5.2. [#2006]
12170
12171- Where appropriate, tests are now run both with and without the
12172  ``unicode_literals`` option to ensure that we support both cases. [#1962]
12173
12174- Running the Astropy test suite from within the IPython REPL is disabled for
12175  now due to bad interaction between the test runner and IPython's logging
12176  and I/O handler.  For now, run the Astropy tests should be run in the basic
12177  Python interpreter. [#2684]
12178
12179- Added support for numerical comparison of floating point values appearing in
12180  the output of doctests using a ``+FLOAT_CMP`` doctest flag. [#2087]
12181
12182- A monkey patch is performed to fix a bug in Numpy version 1.7 and
12183  earlier where unicode fill values on masked arrays are not
12184  supported.  This may cause unintended side effects if your
12185  application also monkey patches ``numpy.ma`` or relies on the broken
12186  behavior.  If unicode support of masked arrays is important to your
12187  application, upgrade to Numpy 1.8 or later for best results. [#2059]
12188
12189- The developer documentation has been extensively rearranged and
12190  rewritten. [#1712]
12191
12192- The ``human_time`` function in ``astropy.utils`` now returns strings
12193  without zero padding. [#2420]
12194
12195- The ``bdist_dmg`` command for ``setup.py`` has now been removed. [#2553]
12196
12197- Many broken API links have been fixed in the documentation, and the
12198  ``nitpick`` Sphinx option is now used to avoid broken links in future.
12199  [#1221, #2019, #2109, #2161, #2162, #2192, #2200, #2296, #2448, #2456,
12200  #2460, #2467, #2476, #2508, #2509]
12201
12202
122030.3.2 (2014-05-13)
12204==================
12205
12206Bug Fixes
12207---------
12208
12209astropy.coordinates
12210^^^^^^^^^^^^^^^^^^^
12211
12212- if ``sep`` argument is specified to be a single character in
12213  ``sexagisimal_to_string``, it now includes separators only between
12214  items [#2183]
12215
12216- Ensure comparisons involving ``Distance`` objects do not raise exceptions;
12217  also ensure operations that lead to units other than length return
12218  ``Quantity``. [#2206, #2250]
12219
12220- Multiplication and division of ``Angle`` objects is now
12221  supported. [#2273]
12222
12223- Fixed ``Angle.to_string`` functionality so that negative angles have the
12224  correct amount of padding when ``pad=True``. [#2337]
12225
12226- Mixing strings and quantities in the ``Angle`` constructor now
12227  works.  For example: ``Angle(['1d', 1. * u.d])``.  [#2398]
12228
12229- If ``Longitude`` is given a ``Longitude`` as input, use its ``wrap_angle``
12230  by default [#2705]
12231
12232astropy.cosmology
12233^^^^^^^^^^^^^^^^^
12234
12235- Fixed ``format()`` compatibility with Python 2.6. [#2129]
12236
12237- Be more careful about converting to floating point internally [#1815, #1818]
12238
12239astropy.io.ascii
12240^^^^^^^^^^^^^^^^
12241
12242- The CDS reader in ``astropy.io.ascii`` can now handle multiple
12243  description lines in ReadMe files. [#2225]
12244
12245- When reading a table with values that generate an overflow error during
12246  type conversion (e.g. overflowing the native C long type), fall through to
12247  using string. Previously this generated an exception [#2234].
12248
12249- Recognize any string with one to four dashes as null value. [#1335]
12250
12251astropy.io.fits
12252^^^^^^^^^^^^^^^
12253
12254- Allow pickling of ``FITS_rec`` objects. [#1597]
12255
12256- Improved behavior when writing large compressed images on OSX by removing
12257  an unnecessary check for platform architecture. [#2345]
12258
12259- Fixed an issue where Astropy ``Table`` objects containing boolean columns
12260  were not correctly written out to FITS files. [#1953]
12261
12262- Several other bug fixes ported from PyFITS v3.2.3 [#2368]
12263
12264- Fixed a crash on Python 2.x when writing a FITS file directly to a
12265  ``StringIO.StringIO`` object. [#2463]
12266
12267astropy.io.registry
12268^^^^^^^^^^^^^^^^^^^
12269
12270- Allow readers/writers with the same name to be attached to different
12271  classes. [#2312]
12272
12273astropy.io.votable
12274^^^^^^^^^^^^^^^^^^
12275
12276- By default, floating point values are now written out using
12277  ``repr`` rather than ``str`` to preserve precision [#2137]
12278
12279astropy.modeling
12280^^^^^^^^^^^^^^^^
12281
12282- Fixed the ``SIP`` and ``InverseSIP`` models both so that they work in the
12283  first place, and so that they return results consistent with the SIP
12284  functions in ``astropy.wcs``. [#2177]
12285
12286astropy.stats
12287^^^^^^^^^^^^^
12288
12289- Ensure the ``axis`` keyword in ``astropy.stats.funcs`` can now be used for
12290  all axes. [#2173]
12291
12292astropy.table
12293^^^^^^^^^^^^^
12294
12295- Ensure nameless columns can be printed, using 'None' for the header. [#2213]
12296
12297astropy.time
12298^^^^^^^^^^^^
12299
12300- Fixed pickling of ``Time`` objects. [#2123]
12301
12302astropy.units
12303^^^^^^^^^^^^^
12304
12305- ``Quantity._repr_latex_()`` returns ``NotImplementedError`` for quantity
12306  arrays instead of an uninformative formatting exception. [#2258]
12307
12308- Ensure ``Quantity.flat`` always returns ``Quantity``. [#2251]
12309
12310- Angstrom unit renders better in MathJax [#2286]
12311
12312astropy.utils
12313^^^^^^^^^^^^^
12314
12315- Progress bars will now be displayed inside the IPython
12316  qtconsole. [#2230]
12317
12318- ``data.download_file()`` now evaluates ``REMOTE_TIMEOUT()`` at runtime
12319  rather than import time. Previously, setting ``REMOTE_TIMEOUT`` after
12320  import had no effect on the function's behavior. [#2302]
12321
12322- Progressbar will be limited to 100% so that the bar does not exceed the
12323  terminal width.  The numerical display can still exceed 100%, however.
12324
12325astropy.vo
12326^^^^^^^^^^
12327
12328- Fixed ``format()`` compatibility with Python 2.6. [#2129]
12329
12330- Cone Search validation no longer raises ``ConeSearchError`` for positive RA.
12331  [#2240, #2242]
12332
12333astropy.wcs
12334^^^^^^^^^^^
12335
12336- Fixed a bug where calling ``astropy.wcs.Wcsprm.sub`` with
12337  ``WCSSUB_CELESTIAL`` may cause memory corruption due to
12338  underallocation of a temporary buffer. [#2350]
12339
12340- Fixed a memory allocation bug in ``astropy.wcs.Wcsprm.sub`` and
12341  ``astropy.wcs.Wcsprm.copy``.  [#2439]
12342
12343Misc
12344^^^^
12345
12346- Fixes for compatibility with Python 3.4. [#1945]
12347
12348- ``import astropy; astropy.test()`` now correctly uses the same test
12349  configuration as ``python setup.py test`` [#1811]
12350
12351
123520.3.1 (2014-03-04)
12353==================
12354
12355Bug Fixes
12356---------
12357
12358astropy.config
12359^^^^^^^^^^^^^^
12360
12361- Fixed a bug where ``ConfigurationItem.set_temp()`` does not reset to
12362  default value when exception is raised within ``with`` block. [#2117]
12363
12364astropy.convolution
12365^^^^^^^^^^^^^^^^^^^
12366
12367- Fixed a bug where ``_truncation`` was left undefined for ``CustomKernel``.
12368  [#2016]
12369
12370- Fixed a bug with ``_normalization`` when ``CustomKernel`` input array
12371  sums to zero. [#2016]
12372
12373astropy.coordinates
12374^^^^^^^^^^^^^^^^^^^
12375
12376- Fixed a bug where using ``==`` on two array coordinates wouldn't
12377  work. [#1832]
12378
12379- Fixed bug which caused ``len()`` not to work for coordinate objects and
12380  added a ``.shape`` property to get appropriately array-like behavior.
12381  [#1761, #2014]
12382
12383- Fixed a bug where sexagesimal notation would sometimes include
12384  exponential notation in the last field. [#1908, #1913]
12385
12386- ``CompositeStaticMatrixTransform`` no longer attempts to reference the
12387  undefined variable ``self.matrix`` during instantiation. [#1944]
12388
12389- Fixed pickling of ``Longitude``, ensuring ``wrap_angle`` is preserved
12390  [#1961]
12391
12392- Allow ``sep`` argument in ``Angle.to_string`` to be empty (resulting in no
12393  separators) [#1989]
12394
12395astropy.io.ascii
12396^^^^^^^^^^^^^^^^
12397
12398- Allow passing unicode delimiters when reading or writing tables.  The
12399  delimiter must be convertible to pure ASCII.  [#1949]
12400
12401- Fix a problem when reading a table and renaming the columns to names that
12402  already exist. [#1991]
12403
12404astropy.io.fits
12405^^^^^^^^^^^^^^^
12406
12407- Ported all bug fixes from PyFITS 3.2.1.  See the PyFITS changelog at
12408  https://pyfits.readthedocs.io/en/v3.2.1/ [#2056]
12409
12410astropy.io.misc
12411^^^^^^^^^^^^^^^
12412
12413- Fixed issues in the HDF5 Table reader/writer functions that occurred on
12414  Windows. [#2099]
12415
12416astropy.io.votable
12417^^^^^^^^^^^^^^^^^^
12418
12419- The ``write_null_values`` kwarg to ``VOTable.to_xml``, when set to `False`
12420  (the default) would produce non-standard VOTable files.  Therefore, this
12421  functionality has been replaced by a better understanding that knows which
12422  fields in a VOTable may be left empty (only ``char``, ``float`` and
12423  ``double`` in VOTable 1.1 and 1.2, and all fields in VOTable 1.3).  The
12424  kwarg is still accepted but it will be ignored, and a warning is emitted.
12425  [#1809]
12426
12427- Printing out a ``astropy.io.votable.tree.Table`` object using `repr` or
12428  `str` now uses the pretty formatting in ``astropy.table``, so it's possible
12429  to easily preview the contents of a ``VOTable``. [#1766]
12430
12431astropy.modeling
12432^^^^^^^^^^^^^^^^
12433
12434- Fixed bug in computation of model derivatives in ``LinearLSQFitter``.
12435  [#1903]
12436
12437- Raise a ``NotImplementedError`` when fitting composite models. [#1915]
12438
12439- Fixed bug in the computation of the ``Gaussian2D`` model. [#2038]
12440
12441- Fixed bug in the computation of the ``AiryDisk2D`` model. [#2093]
12442
12443astropy.sphinx
12444^^^^^^^^^^^^^^
12445
12446- Added slightly more useful debug info for AstropyAutosummary. [#2024]
12447
12448astropy.table
12449^^^^^^^^^^^^^
12450
12451- The column string representation for n-dimensional cells with only
12452  one element has been fixed. [#1522]
12453
12454- Fix a problem that caused ``MaskedColumn.__getitem__`` to not preserve
12455  column metadata. [#1471, #1872]
12456
12457- With Numpy prior to version 1.6.2, tables with Unicode columns now
12458  sort correctly. [#1867]
12459
12460- ``astropy.table`` can now print out tables with Unicode columns containing
12461  non-ascii characters. [#1864]
12462
12463- Columns can now be named with Unicode strings, as long as they contain only
12464  ascii characters.  This makes using ``astropy.table`` easier on Python 2
12465  when ``from __future__ import unicode_literals`` is used. [#1864]
12466
12467- Allow pickling of ``Table``, ``Column``, and ``MaskedColumn`` objects. [#792]
12468
12469- Fix a problem where it was not possible to rename columns after sorting or
12470  adding a row. [#2039]
12471
12472astropy.time
12473^^^^^^^^^^^^
12474
12475- Fix a problem where scale conversion problem in TimeFromEpoch
12476  was not showing a useful error [#2046]
12477
12478- Fix a problem when converting to one of the formats ``unix``, ``cxcsec``,
12479  ``gps`` or ``plot_date`` when the time scale is ``UT1``, ``TDB`` or ``TCB``
12480  [#1732]
12481
12482- Ensure that ``delta_ut1_utc`` gets calculated when accessed directly,
12483  instead of failing and giving a rather obscure error message [#1925]
12484
12485- Fix a bug when computing the TDB to TT offset.  The transform routine was
12486  using meters instead of kilometers for the Earth vector.  [#1929]
12487
12488- Increase ``__array_priority__`` so that ``TimeDelta`` can convert itself
12489  to a ``Quantity`` also in reverse operations [#1940]
12490
12491- Correct hop list from TCG to TDB to ensure that conversion is
12492  possible [#2074]
12493
12494astropy.units
12495^^^^^^^^^^^^^
12496
12497- ``Quantity`` initialisation rewritten for speed [#1775]
12498
12499- Fixed minor string formatting issue for dimensionless quantities. [#1772]
12500
12501- Fix error for inplace operations on non-contiguous quantities [#1834].
12502
12503- The definition of the unit ``bar`` has been corrected to "1e5
12504  Pascal" from "100 Pascal" [#1910]
12505
12506- For units that are close to known units, but not quite, for
12507  example due to differences in case, the exception will now include
12508  recommendations. [#1870]
12509
12510- The generic and FITS unit parsers now accept multiple slashes in
12511  the unit string.  There are multiple ways to interpret them, but
12512  the approach taken here is to convert "m/s/kg" to "m s-1 kg-1".
12513  Multiple slashes are accepted, but discouraged, by the FITS
12514  standard, due to the ambiguity of parsing, so a warning is raised
12515  when it is encountered. [#1911]
12516
12517- The use of "angstrom" (with a lower case "a") is now accepted in FITS unit
12518  strings, since it is in common usage.  However, since it is not officially
12519  part of the FITS standard, a warning will be issued when it is encountered.
12520  [#1911]
12521
12522- Pickling unrecognized units will not raise a ``AttributeError``. [#2047]
12523
12524- ``astropy.units`` now correctly preserves the precision of
12525  fractional powers. [#2070]
12526
12527- If a ``Unit`` or ``Quantity`` is raised to a floating point power
12528  that is very close to a rational number with a denominator less
12529  than or equal to 10, it is converted to a ``Fraction`` object to
12530  preserve its precision through complex unit conversion operations.
12531  [#2070]
12532
12533astropy.utils
12534^^^^^^^^^^^^^
12535
12536- Fixed crash in ``timer.RunTimePredictor.do_fit``. [#1905]
12537
12538- Fixed ``astropy.utils.compat.argparse`` for Python 3.1. [#2017]
12539
12540astropy.wcs
12541^^^^^^^^^^^
12542
12543- ``astropy.wcs.WCS``, ``astropy.wcs.WCS.fix`` and
12544  ``astropy.wcs.find_all_wcs`` now have a ``translate_units`` keyword
12545  argument that is passed down to ``astropy.wcs.Wcsprm.fix``.  This can be
12546  used to specify any unsafe translations of units from rarely used ones to
12547  more commonly used ones.
12548
12549  Although ``"S"`` is commonly used to represent seconds, its translation to
12550  ``"s"`` is potentially unsafe since the standard recognizes ``"S"``
12551  formally as Siemens, however rarely that may be used.  The same applies to
12552  ``"H"`` for hours (Henry), and ``"D"`` for days (Debye).
12553
12554  When these sorts of changes are performed, a warning is emitted.
12555  [#1854]
12556
12557- When a unit is "fixed" by ``astropy.wcs.WCS.fix`` or
12558  ``astropy.wcs.Wcsprm.unitfix``, it now correctly reports the ``CUNIT``
12559  field that was changed. [#1854]
12560
12561- ``astropy.wcs.Wcs.printwcs`` will no longer warn that ``cdelt`` is being
12562  ignored when none was present in the FITS file. [#1845]
12563
12564- ``astropy.wcs.Wcsprm.set`` is called from within the ``astropy.wcs.WCS``
12565  constructor, therefore any invalid information in the keywords will be
12566  raised from the constructor, rather than on a subsequent call to a
12567  transformation method. [#1918]
12568
12569- Fix a memory corruption bug when using ``astropy.wcs.Wcs.sub`` with
12570  ``astropy.wcs.WCSSUB_CELESTIAL``. [#1960]
12571
12572- Fixed the ``AttributeError`` exception that was raised when using
12573  ``astropy.wcs.WCS.footprint_to_file``. [#1912]
12574
12575- Fixed a ``NameError`` exception that was raised when using
12576  ``astropy.wcs.validate`` or the ``wcslint`` script. [#2053]
12577
12578- Fixed a bug where named WCSes may be erroneously reported as ``' '`` when
12579  using ``astropy.wcs.validate`` or the ``wcslint`` script. [#2053]
12580
12581- Fixed a bug where error messages about incorrect header keywords
12582  may not be propagated correctly, resulting in a "NULL error object
12583  in wcslib" message. [#2106]
12584
12585Misc
12586^^^^
12587
12588- There are a number of improvements to make Astropy work better on big
12589  endian platforms, such as MIPS, PPC, s390x and SPARC. [#1849]
12590
12591- The test suite will now raise exceptions when a deprecated feature of
12592  Python or Numpy is used.  [#1948]
12593
12594Other Changes and Additions
12595---------------------------
12596
12597- A new function, ``astropy.wcs.get_include``, has been added to get the
12598  location of the ``astropy.wcs`` C header files. [#1755]
12599
12600- The doctests in the ``.rst`` files in the ``docs`` folder are now
12601  tested along with the other unit tests.  This is in addition to the
12602  testing of doctests in docstrings that was already being performed.
12603  See ``docs/development/testguide.rst`` for more information. [#1771]
12604
12605- Fix a problem where import fails on Python 3 if setup.py exists
12606  in current directory. [#1877]
12607
12608
126090.3 (2013-11-20)
12610================
12611
12612New Features
12613------------
12614
12615- General
12616
12617- A top-level configuration item, ``unicode_output`` has been added to
12618  control whether the Unicode string representation of certain
12619  objects will contain Unicode characters.  For example, when
12620  ``use_unicode`` is `False` (default)::
12621
12622      >>> from astropy import units as u
12623      >>> print(unicode(u.degree))
12624      deg
12625
12626  When ``use_unicode`` is `True`::
12627
12628      >>> from astropy import units as u
12629      >>> print(unicode(u.degree))
12630      °
12631
12632  See `handling-unicode
12633  <https://docs.astropy.org/en/v0.3/development/codeguide.html#unicode-guidelines>`_
12634  for more information. [#1441]
12635
12636- ``astropy.utils.misc.find_api_page`` is now imported into the top-level.
12637  This allows usage like ``astropy.find_api_page(astropy.units.Quantity)``.
12638  [#1779]
12639
12640astropy.convolution
12641^^^^^^^^^^^^^^^^^^^
12642
12643- New class-based system for generating kernels, replacing ``make_kernel``.
12644  [#1255] The ``astropy.nddata.convolution`` sub-package has now been moved
12645  to ``astropy.convolution``. [#1451]
12646
12647astropy.coordinates
12648^^^^^^^^^^^^^^^^^^^
12649
12650- Two classes ``astropy.coordinates.Longitude`` and
12651  ``astropy.coordinates.Latitude`` have been added.  These are derived from
12652  the new ``Angle`` class and used for all longitude-like (RA, azimuth,
12653  galactic L) and latitude-like coordinates (Dec, elevation, galactic B)
12654  respectively.  The ``Longitude`` class provides auto-wrapping capability
12655  and ``Latitude`` performs bounds checking.
12656
12657- ``astropy.coordinates.Distance`` supports conversion to and from distance
12658  modulii. [#1472]
12659
12660- ``astropy.coordinates.SphericalCoordinateBase`` and derived classes now
12661  support arrays of coordinates, enabling large speed-ups for some operations
12662  on multiple coordinates at the same time. These coordinates can also be
12663  indexed using standard slicing or any Numpy-compatible indexing. [#1535,
12664  #1615]
12665
12666- Array coordinates can be matched to other array coordinates, finding the
12667  closest matches between the two sets of coordinates (see the
12668  ``astropy.coordinates.matching.match_coordinates_3d`` and
12669  ``astropy.coordinates.matching.match_coordinates_sky`` functions). [#1535]
12670
12671astropy.cosmology
12672^^^^^^^^^^^^^^^^^
12673
12674- Added support for including massive Neutrinos in the cosmology classes. The
12675  Planck (2013) cosmology has been updated to use this. [#1364]
12676
12677- Calculations now use and return ``Quantity`` objects where appropriate.
12678  [#1237]
12679
12680astropy.io.ascii
12681^^^^^^^^^^^^^^^^
12682
12683- Added support for writing IPAC format tables [#1152].
12684
12685astropy.io.fits
12686^^^^^^^^^^^^^^^
12687
12688- Added initial support for table columns containing pseudo-unsigned
12689  integers.  This is currently enabled by using the ``uint=True`` option when
12690  opening files; any table columns with the correct BZERO value will be
12691  interpreted and returned as arrays of unsigned integers. [#906]
12692
12693- Upgraded vendored copy of CFITSIO to v3.35, though backwards compatibility
12694  back to version v3.28 is maintained.
12695
12696- Added support for reading and writing tables using the Q format for columns.
12697  The Q format is identical to the P format (variable-length arrays) except
12698  that it uses 64-bit integers for the data descriptors, allowing more than
12699  4 GB of variable-length array data in a single table.
12700
12701- Some refactoring of the table and ``FITS_rec`` modules in order to better
12702  separate the details of the FITS binary and ASCII table data structures from
12703  the HDU data structures that encapsulate them.  Most of these changes should
12704  not be apparent to users (but see API Changes below).
12705
12706astropy.io.votable
12707^^^^^^^^^^^^^^^^^^
12708
12709- Updated to support the VOTable 1.3 draft. [#433]
12710
12711- Added the ability to look up and group elements by their utype attribute.
12712  [#622]
12713
12714- The format of the units of a VOTable file can be specified using the
12715  ``unit_format`` parameter.  Note that units are still always written out
12716  using the CDS format, to ensure compatibility with the standard.
12717
12718astropy.modeling
12719^^^^^^^^^^^^^^^^
12720
12721- Added a new framework for representing and evaluating mathematical models
12722  and for fitting data to models.  See "What's New in Astropy 0.3" in the
12723  documentation for further details. [#493]
12724
12725astropy.stats
12726^^^^^^^^^^^^^
12727
12728- Added robust statistics functions
12729  ``astropy.stats.funcs.median_absolute_deviation``,
12730  ``astropy.stats.funcs.biweight_location``, and
12731  ``astropy.stats.funcs.biweight_midvariance``. [#621]
12732
12733- Added ``astropy.stats.funcs.signal_to_noise_oir_ccd`` for computing the
12734  signal to noise ratio for source being observed in the optical/IR using a
12735  CCD. [#870]
12736
12737- Add ``axis=int`` option to ``stropy.stats.funcs.sigma_clip`` to allow
12738  clipping along a given axis for multidimensional data. [#1083]
12739
12740astropy.table
12741^^^^^^^^^^^^^
12742
12743- New columns can be added to a table via assignment to a non-existing
12744  column by name. [#726]
12745
12746- Added ``join`` function to perform a database-like join on two tables. This
12747  includes support for inner, left, right, and outer joins as well as
12748  metadata merging.  [#903]
12749
12750- Added ``hstack`` and ``vstack`` functions to stack two or more tables.
12751  [#937]
12752
12753- Tables now have a ``.copy`` method and include support for ``copy`` and
12754  ``deepcopy``. [#1208]
12755
12756- Added support for selecting and manipulating groups within a table with
12757  a database style ``group_by`` method. [#1424]
12758
12759- Table ``read`` and ``write`` functions now include rudimentary support
12760  reading and writing of FITS tables via the unified reading/writing
12761  interface. [#591]
12762
12763- The ``units`` and ``dtypes`` attributes and keyword arguments in Column,
12764  MaskedColumn, Row, and Table are now deprecated in favor of the
12765  single-tense ``unit`` and ``dtype``. [#1174]
12766
12767- Setting a column from a Quantity now correctly sets the unit on the Column
12768  object. [#732]
12769
12770- Add ``remove_row`` and ``remove_rows`` to remove table rows. [#1230]
12771
12772- Added a new ``Table.show_in_browser`` method that opens a web browser
12773  and displays the table rendered as HTML. [#1342]
12774
12775- New tables can now be instantiated using a single row from an existing
12776  table. [#1417]
12777
12778astropy.time
12779^^^^^^^^^^^^
12780
12781- New ``Time`` objects can be instantiated from existing ``Time`` objects
12782  (but with different format, scale, etc.) [#889]
12783
12784- Added a ``Time.now`` classmethod that returns the current UTC time,
12785  similarly to Python's ``datetime.now``. [#1061]
12786
12787- Update internal time manipulations so that arithmetic with Time and
12788  TimeDelta objects maintains sub-nanosecond precision over a time span
12789  longer than the age of the universe. [#1189]
12790
12791- Use ``astropy.utils.iers`` to provide ``delta_ut1_utc``, so that
12792  automatic calculation of UT1 becomes possible. [#1145]
12793
12794- Add ``datetime`` format which allows converting to and from standard
12795  library ``datetime.datetime`` objects. [#860]
12796
12797- Add ``plot_date`` format which allows converting to and from the date
12798  representation used when plotting dates with matplotlib via the
12799  ``matplotlib.pyplot.plot_date`` function. [#860]
12800
12801- Add ``gps`` format (seconds since 1980-01-01 00:00:00 UTC,
12802  including leap seconds) [#1164]
12803
12804- Add array indexing to Time objects [#1132]
12805
12806- Allow for arithmetic of multi-element and single-element Time and TimeDelta
12807  objects. [#1081]
12808
12809- Allow multiplication and division of TimeDelta objects by
12810  constants and arrays, as well as changing sign (negation) and
12811  taking the absolute value of TimeDelta objects. [#1082]
12812
12813- Allow comparisons of Time and TimeDelta objects. [#1171]
12814
12815- Support interaction of Time and Quantity objects that represent a time
12816  interval. [#1431]
12817
12818astropy.units
12819^^^^^^^^^^^^^
12820
12821- Added parallax equivalency for length-angle. [#985]
12822
12823- Added mass-energy equivalency. [#1333]
12824
12825- Added a new-style format method which will use format specifiers
12826  (like ``0.03f``) in new-style format strings for the Quantity's value.
12827  Specifiers which can't be applied to the value will fall back to the
12828  entire string representation of the quantity. [#1383]
12829
12830- Added support for complex number values in quantities. [#1384]
12831
12832- Added new spectroscopic equivalencies for velocity conversions
12833  (relativistic, optical, and radio conventions are supported) [#1200]
12834
12835- The ``spectral`` equivalency now also handles wave number.
12836
12837- The ``spectral_density`` equivalency now also accepts a Quantity for the
12838  frequency or wavelength. It also handles additional flux units.
12839
12840- Added Brightness Temperature (antenna gain) equivalency for conversion
12841  between :math:`T_B` and flux density. [#1327]
12842
12843- Added percent unit, and allowed any string containing just a number to be
12844  interpreted as a scaled dimensionless unit. [#1409]
12845
12846- New-style format strings can be used to set the unit output format.  For
12847  example, ``"{0:latex}".format(u.km)`` will print with the latex formatter.
12848  [#1462]
12849
12850- The ``Unit.is_equivalent`` method can now take a tuple. In this case, the
12851  method returns ``True`` if the unit is equivalent to any of the units
12852  listed in the tuple. [#1521]
12853
12854- ``def_unit`` can now take a 2-tuple of names of the form (short, long),
12855  where each entry is a list.  This allows for handling strange units that
12856  might have multiple short names. [#1543]
12857
12858- Added ``dimensionless_angles`` equivalency, which allows conversion of any
12859  power of radian to dimensionless. [#1161]
12860
12861- Added the ability to enable set of units, or equivalencies that are used by
12862  default.  Also provided context managers for these cases. [#1268]
12863
12864- Imperial units are disabled by default. [#1593, #1662]
12865
12866- Added an ``astropy.units.add_enabled_units`` context manager, which allows
12867  creating a temporary context with additional units temporarily enabled in
12868  the global units namespace. [#1662]
12869
12870- ``Unit`` instances now have ``.si`` and ``.cgs`` properties a la
12871  ``Quantity``.  These serve as shortcuts for ``Unit.to_system(cgs)[0]``
12872  etc. [#1610]
12873
12874astropy.vo
12875^^^^^^^^^^
12876
12877- New package added to support Virtual Observatory Simple Cone Search query
12878  and service validation. [#552]
12879
12880astropy.wcs
12881^^^^^^^^^^^
12882
12883- Fixed attribute error in ``astropy.wcs.Wcsprm`` (lattype->lattyp) [#1463]
12884
12885- Included a new command-line script called ``wcslint`` and accompanying API
12886  for validating the WCS in a given FITS file or header. [#580]
12887
12888- Upgraded included version of WCSLIB to 4.19.
12889
12890astropy.utils
12891^^^^^^^^^^^^^
12892
12893- Added a new set of utilities in ``astropy.utils.timer`` for analyzing the
12894  runtime of functions and making runtime predections for larger inputs.
12895  [#743]
12896
12897- ``ProgressBar`` and ``Spinner`` classes can now be used directly to return
12898  generator expressions. [#771]
12899
12900- Added ``astropy.utils.iers`` which allows reading in of IERS A or IERS B
12901  bulletins and interpolation in UT1-UTC.
12902
12903- Added a function ``astropy.utils.find_api_page``--given a class or object
12904  from the ``astropy`` package, this will open that class's API documentation
12905  in a web browser. [#663]
12906
12907- Data download functions such as ``download_file`` now accept a
12908  ``show_progress`` argument to suppress console output, and a ``timeout``
12909  argument. [#865, #1258]
12910
12911astropy.extern.six
12912^^^^^^^^^^^^^^^^^^
12913
12914- Added `six <https://pypi.org/project/six/>`_ for python2/python3
12915  compatibility
12916
12917- Astropy now uses the ERFA library instead of the IAU SOFA library for
12918  fundamental time transformation routines.  The ERFA library is derived, with
12919  permission, from the IAU SOFA library but is distributed under a BSD license.
12920  See ``license/ERFA.rst`` for details. [#1293]
12921
12922astropy.logger
12923^^^^^^^^^^^^^^
12924
12925- The Astropy logger now no longer catches exceptions by default, and also
12926  only captures warnings emitted by Astropy itself (prior to this change,
12927  following an import of Astropy, any warning got re-directed through the
12928  Astropy logger). Logging to the Astropy log file has also been disabled by
12929  default. However, users of Astropy 0.2 will likely still see the previous
12930  behavior with Astropy 0.3 for exceptions and logging to file since the
12931  default configuration file installed by 0.2 set the exception logging to be
12932  on by default. To get the new behavior, set the ``log_exceptions`` and
12933  ``log_to_file`` configuration items to ``False`` in the ``astropy.cfg``
12934  file. [#1331]
12935
12936API Changes
12937-----------
12938
12939- General
12940
12941- The configuration option ``utils.console.use_unicode`` has been
12942  moved to the top level and renamed to ``unicode_output``.  It now
12943  not only affects console widgets, such as progress bars, but also
12944  controls whether calling `unicode` on certain classes will return a
12945  string containing unicode characters.
12946
12947astropy.coordinates
12948^^^^^^^^^^^^^^^^^^^
12949
12950- The ``astropy.coordinates.Angle`` class is now a subclass of
12951  ``astropy.units.Quantity``. This means it has all of the methods of a
12952  `numpy.ndarray`. [#1006]
12953
12954- The ``astropy.coordinates.Distance`` class is now a subclass of
12955  ``astropy.units.Quantity``. This means it has all of the methods of a
12956  `numpy.ndarray`. [#1472]
12957
12958- All angular units are now supported, not just ``radian``, ``degree`` and
12959  ``hour``, but now ``arcsecond`` and ``arcminute`` as well.  The object
12960  will retain its native unit, so when printing out a value initially
12961  provided in hours, its ``to_string()`` will, by default, also be
12962  expressed in hours.
12963
12964- The ``Angle`` class now supports arrays of angles.
12965
12966- To be consistent with ``units.Unit``, ``Angle.format`` has been
12967  deprecated and renamed to ``Angle.to_string``.
12968
12969- To be consistent with ``astropy.units``, all plural forms of unit names
12970  have been removed.  Therefore, the following properties of
12971  ``astropy.coordinates.Angle`` should be renamed:
12972
12973- ``radians`` -> ``radian``
12974
12975- ``degrees`` -> ``degree``
12976
12977- ``hours`` -> ``hour``
12978
12979- Multiplication and division of two ``Angle`` objects used to raise
12980  ``NotImplementedError``.  Now they raise ``TypeError``.
12981
12982- The ``astropy.coordinates.Angle`` class no longer has a ``bounds``
12983  attribute so there is no bounds-checking or auto-wrapping at this level.
12984  This allows ``Angle`` objects to be used in arbitrary arithmetic
12985  expressions (e.g. coordinate distance computation).
12986
12987- The ``astropy.coordinates.RA`` and ``astropy.coordinates.Dec`` classes have
12988  been removed and replaced with ``astropy.coordinates.Longitude`` and
12989  ``astropy.coordinates.Latitude`` respectively.  These are now used for the
12990  components of Galactic and Horizontal (Alt-Az) coordinates as well instead
12991  of plain ``Angle`` objects.
12992
12993- ``astropy.coordinates.angles.rotation_matrix`` and
12994  ``astropy.coordinates.angles.angle_axis`` now take a ``unit`` kwarg instead
12995  of ``degrees`` kwarg to specify the units of the angles.
12996  ``rotation_matrix`` will also take the unit from the given ``Angle`` object
12997  if no unit is provided.
12998
12999- The ``AngularSeparation`` class has been removed.  The output of the
13000  coordinates ``separation()`` method is now an
13001  ``astropy.coordinates.Angle``.  [#1007]
13002
13003- The coordinate classes have been renamed in a way that remove the
13004  ``Coordinates`` at the end of the class names.  E.g., ``ICRSCoordinates``
13005  from previous versions is now called ``ICRS``. [#1614]
13006
13007- ``HorizontalCoordinates`` are now named ``AltAz``, to reflect more common
13008  terminology.
13009
13010astropy.cosmology
13011^^^^^^^^^^^^^^^^^
13012
13013- The Planck (2013) cosmology will likely give slightly different (and more
13014  accurate) results due to the inclusion of Neutrino masses. [#1364]
13015
13016- Cosmology class properties now return ``Quantity`` objects instead of
13017  simple floating-point values. [#1237]
13018
13019- The names of cosmology instances are now truly optional, and are set to
13020  ``None`` rather than the name of the class if the user does not provide
13021  them.  [#1705]
13022
13023astropy.io.ascii
13024^^^^^^^^^^^^^^^^
13025
13026- In the ``read`` method of ``astropy.io.ascii``, empty column values in an
13027  ASCII table are now treated as missing values instead of the previous
13028  treatment as a zero-length string "".  This now corresponds to the behavior
13029  of other table readers like ``numpy.genfromtxt``.  To restore the previous
13030  behavior set ``fill_values=None`` in the call to ``ascii.read()``. [#919]
13031
13032- The ``read`` and ``write`` methods of ``astropy.io.ascii`` now have a
13033  ``format`` argument for specifying the file format.  This is the preferred
13034  way to choose the format instead of the ``Reader`` and ``Writer``
13035  arguments. [#961]
13036
13037- The ``include_names`` and ``exclude_names`` arguments were removed from
13038  the ``BaseHeader`` initializer, and now instead handled by the reader and
13039  writer classes directly. [#1350]
13040
13041- Allow numeric and otherwise unusual column names when reading a table
13042  where the ``format`` argument is specified, but other format details such
13043  as the delimiter or quote character are being guessed. [#1692]
13044
13045- When reading an ASCII table using the ``Table.read()`` method, the default
13046  has changed from ``guess=False`` to ``guess=True`` to allow auto-detection
13047  of file format.  This matches the default behavior of ``ascii.read()``.
13048
13049astropy.io.fits
13050^^^^^^^^^^^^^^^
13051
13052- The ``astropy.io.fits.new_table`` function is marked "pending deprecation".
13053  This does not mean it will be removed outright or that its functionality
13054  has changed.  It will likely be replaced in the future for a function with
13055  similar, if not subtly different functionality.  A better, if not slightly
13056  more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
13057  a new ``FITS_rec`` table--this has the same interface as
13058  ``pyfits.new_table``.  The difference is that it returns a plan
13059  ``FITS_rec`` array, and not an HDU instance.  This ``FITS_rec`` object can
13060  then be used as the data argument in the constructors for ``BinTableHDU``
13061  (for binary tables) or ``TableHDU`` (for ASCII tables).  This is analogous
13062  to creating an ``ImageHDU`` by passing in an image array.
13063  ``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
13064  FITS-compatible recarray from a FITS column specification.
13065
13066- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
13067  methods of the ``CompDataHDU`` class are pending deprecation and moved to
13068  internal methods.  The operation of these methods depended too much on
13069  internal state to be used safely by users; instead they are invoked
13070  automatically in the appropriate places when reading/writing compressed
13071  image HDUs.
13072
13073- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
13074  the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.
13075
13076- The constructor for ``CompDataHDU`` has been changed to accept new keyword
13077  arguments.  The new keyword arguments are essentially the same, but are in
13078  underscore_separated format rather than camelCase format.  The old
13079  arguments are still pending deprecation.
13080
13081- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
13082  ``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
13083  and ``_data_size`` respectively.  The old attribute names are still pending
13084  deprecation.  This should only be of interest to advanced users who have
13085  created their own HDU subclasses.
13086
13087- The following previously deprecated functions and methods have been removed
13088  entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
13089  ``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
13090  ``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.
13091
13092- Interfaces that were pending deprecation are now fully deprecated.  These
13093  include: ``create_card``, ``create_card_from_string``, ``upper_key``,
13094  ``Header.get_history``, and ``Header.get_comment``.
13095
13096- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
13097  that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.
13098
13099astropy.io.registry
13100^^^^^^^^^^^^^^^^^^^
13101
13102- Identifier functions for reading/writing Table and NDData objects should
13103  now accept ``(origin, *args, **kwargs)`` instead of ``(origin, args,
13104  kwargs)``. [#591]
13105
13106- Added a new ``astropy.io.registry.get_formats`` function for listing
13107  registered I/O formats and details about the their readers/writers. [#1669]
13108
13109astropy.io.votable
13110^^^^^^^^^^^^^^^^^^
13111
13112- Added a new option ``use_names_over_ids`` option to use when converting
13113  from VOTable objects to Astropy Tables. This can prevent a situation where
13114  column names are not preserved when converting from a VOTable. [#609]
13115
13116astropy.nddata
13117^^^^^^^^^^^^^^
13118
13119- The ``astropy.nddata.convolution`` sub-package has now been moved to
13120  ``astropy.convolution``, and the ``make_kernel`` function has been removed.
13121  (the kernel classes should be used instead) [#1451]
13122
13123astropy.stats.funcs
13124^^^^^^^^^^^^^^^^^^^
13125
13126- For ``sigma_clip``, the ``maout`` optional parameter has been removed, and
13127  the function now always returns a masked array.  A new boolean parameter
13128  ``copy`` can be used to indicated whether the input data should be copied
13129  (``copy=True``, default) or used by reference (``copy=False``) in the
13130  output masked array. [#1083]
13131
13132astropy.table
13133^^^^^^^^^^^^^
13134
13135- The first argument to the ``Column`` and ``MaskedColumn`` classes is now
13136  the data array--the ``name`` argument has been changed to an optional
13137  keyword argument. [#840]
13138
13139- Added support for instantiating a ``Table`` from a list of dict, each one
13140  representing a single row with the keys mapping to column names. [#901]
13141
13142- The plural 'units' and 'dtypes' have been switched to 'unit' and 'dtype'
13143  where appropriate. The original attributes are still present in this
13144  version as deprecated attributes, but will be removed in the next version.
13145  [#1174]
13146
13147- The ``copy`` methods of ``Column`` and ``MaskedColumn`` were changed so
13148  that the first argument is now ``order='C'``.  This is required for
13149  compatibility with Numpy 1.8 which is currently in development. [#1250]
13150
13151- Comparing a column (with == or !=) to a scalar, an array, or another column
13152  now always returns a boolean Numpy array (which is a masked array if either
13153  of the arguments in the comparison was masked). This is in contrast to the
13154  previous behavior, which in some cases returned a boolean Numpy array, and
13155  in some cases returned a boolean Column object. [#1446]
13156
13157astropy.time
13158^^^^^^^^^^^^
13159
13160- For consistency with ``Quantity``, the attributes ``val`` and
13161  ``is_scalar`` have been renamed to ``value`` and ``isscalar``,
13162  respectively, and the attribute ``vals`` has been dropped. [#767]
13163
13164- The double-float64 internal representation of time is used more
13165  efficiently to enable better accuracy. [#366]
13166
13167- Format and scale arguments are now allowed to be case-insensitive. [#1128]
13168
13169astropy.units
13170^^^^^^^^^^^^^
13171
13172- The ``Quantity`` class now inherits from the Numpy array class, and
13173  includes the following API changes [#929]:
13174
13175- Using ``float(...)``, ``int(...)``, and ``long(...)`` on a quantity will
13176  now only work if the quantity is dimensionless and unscaled.
13177
13178- All Numpy ufuncs should now treat units correctly (or raise an exception
13179  if not supported), rather than extract the value of quantities and
13180  operate on this, emitting a warning about the implicit loss of units.
13181
13182- When using relevant Numpy ufuncs on dimensionless quantities (e.g.
13183  ``np.exp(h * nu / (k_B * T))``), or combining dimensionless quantities
13184  with Python scalars or plain Numpy arrays ``1 + v / c``, the
13185  dimensionless Quantity will automatically be converted to an unscaled
13186  dimensionless Quantity.
13187
13188- When initializing a quantity from a value with no unit, it is now set to
13189  be dimensionless and unscaled by default. When initializing a Quantity
13190  from another Quantity and with no unit specified in the initializer, the
13191  unit is now taken from the unit of the Quantity being initialized from.
13192
13193- Strings are no longer allowed as the values for Quantities. [#1005]
13194
13195- Quantities are always comparable with zero regardless of their units.
13196  [#1254]
13197
13198- The exception ``astropy.units.UnitsException`` has been renamed to
13199  ``astropy.units.UnitsError`` to be more consistent with the naming
13200  of built-in Python exceptions. [#1406]
13201
13202- Multiplication with and division by a string now always returns a Unit
13203  (rather than a Quantity when the string was first) [#1408]
13204
13205- Imperial units are disabled by default.
13206
13207astropy.wcs
13208^^^^^^^^^^^
13209
13210- For those including the ``astropy.wcs`` C headers in their project, they
13211  should now include it as:
13212
13213  #include "astropy_wcs/astropy_wcs_api.h"
13214
13215  instead of:
13216
13217  #include "astropy_wcs_api.h"
13218
13219  [#1631]
13220
13221- The ``--enable-legacy`` option for ``setup.py`` has been removed. [#1493]
13222
13223Bug Fixes
13224---------
13225
13226astropy.io.ascii
13227^^^^^^^^^^^^^^^^
13228
13229- The ``write()`` function was ignoring the ``fill_values`` argument. [#910]
13230
13231- Fixed an issue in ``DefaultSplitter.join`` where the delimiter attribute
13232  was ignored when writing the CSV. [#1020]
13233
13234- Fixed writing of IPAC tables containing null values. [#1366]
13235
13236- When a table with no header row was read without specifying the format and
13237  using the ``names`` argument, then the first row could be dropped. [#1692]
13238
13239astropy.io.fits
13240^^^^^^^^^^^^^^^
13241
13242- Binary tables containing compressed images may, optionally, contain other
13243  columns unrelated to the tile compression convention. Although this is an
13244  uncommon use case, it is permitted by the standard.
13245
13246- Reworked some of the file I/O routines to allow simpler, more consistent
13247  mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
13248  "PyFITS-specific" modes used by PyFITS like "readonly" and "update".  That
13249  is, if reading a FITS file from an open file object, it doesn't matter as
13250  much what "mode" it was opened in so long as it has the right capabilities
13251  (read/write/etc.)  Also works around bugs in the Python io module in 2.6+
13252  with regard to file modes.
13253
13254- Fixed a long-standing issue where writing binary tables did not correctly
13255  write the TFORMn keywords for variable-length array columns (they omitted
13256  the max array length parameter of the format).  This was thought fixed in
13257  an earlier version, but it was only fixed for compressed image HDUs and
13258  not for binary tables in general.
13259
13260astropy.nddata
13261^^^^^^^^^^^^^^
13262
13263- Fixed crash when trying to multiple or divide ``NDData`` objects with
13264  uncertainties. [#1547]
13265
13266astropy.table
13267^^^^^^^^^^^^^
13268
13269- Using a list of strings to index a table now correctly returns a new table
13270  with the columns named in the list. [#1454]
13271
13272- Inequality operators now work properly with ``Column`` objects. [#1685]
13273
13274astropy.time
13275^^^^^^^^^^^^
13276
13277- ``Time`` scale and format attributes are now shown when calling ``dir()``
13278  on a ``Time`` object. [#1130]
13279
13280astropy.wcs
13281^^^^^^^^^^^
13282
13283- Fixed assignment to string-like WCS attributes on Python 3. [#956]
13284
13285astropy.units
13286^^^^^^^^^^^^^
13287
13288- Fixed a bug that caused the order of multiplication/division of plain
13289  Numpy arrays with Quantities to matter (i.e. if the plain array comes
13290  first the units were not preserved in the output). [#899]
13291
13292- Directly instantiated ``CompositeUnits`` were made printable without
13293  crashing. [#1576]
13294
13295Misc
13296^^^^
13297
13298- Fixed various modules that hard-coded ``sys.stdout`` as default arguments
13299  to functions at import time, rather than using the runtime value of
13300  ``sys.stdout``. [#1648]
13301
13302- Minor documentation fixes and enhancements [#922, #1034, #1210, #1217,
13303  #1491, #1492, #1498, #1582, #1608, #1621, #1646, #1670, #1756]
13304
13305- Fixed a crash that could sometimes occur when running the test suite on
13306  systems with platform names containing non-ASCII characters. [#1698]
13307
13308Other Changes and Additions
13309---------------------------
13310
13311- General
13312
13313- Astropy now follows the PSF Code of Conduct. [#1216]
13314
13315- Astropy's test suite now tests all doctests in inline docstrings.  Support
13316  for running doctests in the reST documentation is planned to follow in
13317  v0.3.1.
13318
13319- Astropy's test suite can be run on multiple CPUs in parallel, often
13320  greatly improving runtime, using the ``--parallel`` option. [#1040]
13321
13322- A warning is now issued when using Astropy with Numpy < 1.5--much of
13323  Astropy may still work in this case but it shouldn't be expected to
13324  either. [#1479]
13325
13326- Added automatic download/build/installation of Numpy during Astropy
13327  installation if not already found. [#1483]
13328
13329- Handling of metadata for the ``NDData`` and ``Table`` classes has been
13330  unified by way of a common ``MetaData`` descriptor--it allows instantiating
13331  an object with metadata of any mapping type, and subsequently prevents
13332  replacing the mapping stored in the ``.meta`` attribute (only direct
13333  updates to that object are allowed). [#1686]
13334
13335astropy.coordinates
13336^^^^^^^^^^^^^^^^^^^
13337
13338- Angles containing out of bounds minutes or seconds (e.g. 60) can be
13339  parsed--the value modulo 60 is used with carry to the hours/minutes, and a
13340  warning is issued rather than raising an exception. [#990]
13341
13342astropy.io.fits
13343^^^^^^^^^^^^^^^
13344
13345- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
13346  keywords added in more recent versions of this FITS Tile Compression spec.
13347  This includes support for lossless compression with GZIP. (#198) By default
13348  no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
13349  ``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
13350  constants to the ``quantize_method`` argument to the ``CompImageHDU``
13351  constructor.  A seed can be manually specified, or automatically generated
13352  using either the system clock or checksum-based methods via the
13353  ``dither_seed`` argument.  See the documentation for ``CompImageHDU`` for
13354  more details.
13355
13356- Images compressed with the Tile Compression standard can now be larger than
13357  4 GB through support of the Q format.
13358
13359- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
13360  the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.
13361  This was added for consistency with the ``.name`` attribute which returns
13362  the EXTNAME value from the header.
13363
13364- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
13365  which give the Numpy dtype for the column data in the first case, and the
13366  full Numpy compound dtype for each table row in the latter case.
13367
13368- There was an issue where new tables created defaulted the values in all
13369  string columns to '0.0'.  Now string columns are filled with empty strings
13370  by default--this seems a less surprising default, but it may cause
13371  differences with tables created with older versions of PyFITS or Astropy.
13372
13373astropy.io.misc
13374^^^^^^^^^^^^^^^
13375
13376- The HDF5 reader can now refer to groups in the path as well as datasets;
13377  if given a group, the first dataset in that group is read. [#1159]
13378
13379astropy.nddata
13380^^^^^^^^^^^^^^
13381
13382- ``NDData`` objects have more helpful, though still rudimentary ``__str__`
13383  and ``__repr__`` displays. [#1313]
13384
13385astropy.units
13386^^^^^^^^^^^^^
13387
13388- Added 'cycle' unit. [#1160]
13389
13390- Extended units supported by the CDS formatter/parser. [#1468]
13391
13392- Added unicode an LaTeX symbols for liter. [#1618]
13393
13394astropy.wcs
13395^^^^^^^^^^^
13396
13397- Redundant SCAMP distortion parameters are removed with SIP distortions are
13398  also present. [#1278]
13399
13400- Added iterative implementation of ``all_world2pix`` that can be reliably
13401  inverted. [#1281]
13402
13403
134040.2.5 (2013-10-25)
13405==================
13406
13407Bug Fixes
13408---------
13409
13410astropy.coordinates
13411^^^^^^^^^^^^^^^^^^^
13412
13413- Fixed incorrect string formatting of Angles using ``precision=0``. [#1319]
13414
13415- Fixed string formatting of Angles using ``decimal=True`` which ignored the
13416  ``precision`` argument. [#1323]
13417
13418- Fixed parsing of format strings using appropriate unicode characters
13419  instead of the ASCII ``-`` for minus signs. [#1429]
13420
13421astropy.io.ascii
13422^^^^^^^^^^^^^^^^
13423
13424- Fixed a crash in the IPAC table reader when the ``include/exclude_names``
13425  option is set. [#1348]
13426
13427- Fixed writing AASTex tables to honor the ``tabletype`` option. [#1372]
13428
13429astropy.io.fits
13430^^^^^^^^^^^^^^^
13431
13432- Improved round-tripping and preservation of manually assigned column
13433  attributes (``TNULLn``, ``TSCALn``, etc.) in table HDU headers. (Note: This
13434  issue was previously reported as fixed in Astropy v0.2.2 by mistake; it is
13435  not fixed until v0.3.) [#996]
13436
13437- Fixed a bug that could cause a segfault when trying to decompress an
13438  compressed HDU whose contents are truncated (due to a corrupt file, for
13439  example). This still causes a Python traceback but better that than a
13440  segfault. [#1332]
13441
13442- Newly created ``CompImageHDU`` HDUs use the correct value of the
13443  ``DEFAULT_COMPRESSION_TYPE`` module-level constant instead of hard-coding
13444  "RICE_1" in the header.
13445
13446- Fixed a corner case where when extra memory is allocated to compress an
13447  image, it could lead to unnecessary in-memory copying of the compressed
13448  image data and a possible memory leak through Numpy.
13449
13450- Fixed a bug where assigning from an mmap'd array in one FITS file over
13451  the old (also mmap'd) array in another FITS file failed to update the
13452  destination file. Corresponds to PyFITS issue 25.
13453
13454- Some miscellaneous documentation fixes.
13455
13456astropy.io.votable
13457^^^^^^^^^^^^^^^^^^
13458
13459- Added a warning for when a VOTable 1.2 file contains no ``RESOURCES``
13460  elements (at least one should be present). [#1337]
13461
13462- Fixed a test failure specific to MIPS architecture caused by an errant
13463  floating point warning. [#1179]
13464
13465astropy.nddata.convolution
13466^^^^^^^^^^^^^^^^^^^^^^^^^^
13467
13468- Prevented in-place modification of the input arrays to ``convolve()``.
13469  [#1153]
13470
13471astropy.table
13472^^^^^^^^^^^^^
13473
13474- Added HTML escaping for string values in tables when outputting the table
13475  as HTML. [#1347]
13476
13477- Added a workaround in a bug in Numpy that could cause a crash when
13478  accessing a table row in a masked table containing ``dtype=object``
13479  columns. [#1229]
13480
13481- Fixed an issue similar to the one in #1229, but specific to unmasked
13482  tables. [#1403]
13483
13484astropy.units
13485^^^^^^^^^^^^^
13486
13487- Improved error handling for unparsable units and fixed parsing CDS units
13488  without mantissas in the exponent. [#1288]
13489
13490- Added a physical type for spectral flux density. [#1410]
13491
13492- Normalized conversions that should result in a scale of exactly 1.0 to
13493  round off slight floating point imprecisions. [#1407]
13494
13495- Added support in the CDS unit parser/formatter for unusual unit prefixes
13496  that are nonetheless required to be supported by that convention. [#1426]
13497
13498- Fixed the parsing of ``sqrt()`` in unit format strings which was returning
13499  ``unit ** 2`` instead of ``unit ** 0.5``. [#1458]
13500
13501astropy.wcs
13502^^^^^^^^^^^
13503
13504- When passing a single array to the wcs transformation functions,
13505  (``astropy.wcs.Wcs.all_pix2world``, etc.), its second dimension must now
13506  exactly match the number of dimensions in the transformation. [#1395]
13507
13508- Improved error message when incorrect arguments are passed to
13509  ``WCS.wcs_world2pix``. [#1394]
13510
13511- Fixed a crash when trying to read WCS from FITS headers on Python 3.3
13512  in Windows. [#1363]
13513
13514- Only headers that are required as part of the WCSLIB C API are installed
13515  by the package, per request of system packagers. [#1666]
13516
13517Misc
13518^^^^
13519
13520- Fixed crash when the ``COLUMNS`` environment variable is set to a
13521  non-integer value. [#1291]
13522
13523- Fixed a bug in ``ProgressBar.map`` where ``multiprocess=True`` could cause
13524  it to hang on waiting for the process pool to be destroyed. [#1381]
13525
13526- Fixed a crash on Python 3.2 when affiliated packages try to use the
13527  ``astropy.utils.data.get_pkg_data_*`` functions. [#1256]
13528
13529- Fixed a minor path normalization issue that could occur on Windows in
13530  ``astropy.utils.data.get_pkg_data_filename``. [#1444]
13531
13532- Fixed an annoyance where configuration items intended only for testing
13533  showed up in users' astropy.cfg files. [#1477]
13534
13535- Prevented crashes in exception logging in unusual cases where no traceback
13536  is associated with the exception. [#1518]
13537
13538- Fixed a crash when running the tests in unusual environments where
13539  ``sys.stdout.encoding`` is ``None``. [#1530]
13540
13541- Miscellaneous documentation fixes and improvements [#1308, #1317, #1377,
13542  #1393, #1362, #1516]
13543
13544Other Changes and Additions
13545---------------------------
13546
13547- Astropy installation now requests setuptools >= 0.7 during build/installation
13548  if neither distribute or setuptools >= 0.7 is already installed.  In other
13549  words, if ``import setuptools`` fails, ``ez_setup.py`` is used to bootstrap
13550  the latest setuptools (rather than using ``distribute_setup.py`` to bootstrap
13551  the now obsolete distribute package). [#1197]
13552
13553- When importing Astropy from a source checkout without having built the
13554  extension modules first an ``ImportError`` is raised rather than a
13555  ``SystemExit`` exception. [#1269]
13556
13557
135580.2.4 (2013-07-24)
13559==================
13560
13561Bug Fixes
13562---------
13563
13564astropy.coordinates
13565^^^^^^^^^^^^^^^^^^^
13566
13567- Fixed the angle parser to support parsing the string "1 degree". [#1168]
13568
13569astropy.cosmology
13570^^^^^^^^^^^^^^^^^
13571
13572- Fixed a crash in the ``comoving_volume`` method on non-flat cosmologies
13573  when passing it an array of redshifts.
13574
13575astropy.io.ascii
13576^^^^^^^^^^^^^^^^
13577
13578- Fixed a bug that prevented saving changes to the comment symbol when
13579  writing changes to a table. [#1167]
13580
13581astropy.io.fits
13582^^^^^^^^^^^^^^^
13583
13584- Added a workaround for a bug in 64-bit OSX that could cause truncation when
13585  writing files greater than 2^32 bytes in size. [#839]
13586
13587astropy.io.votable
13588^^^^^^^^^^^^^^^^^^
13589
13590- Fixed incorrect reading of tables containing multiple ``<RESOURCE>``
13591  elements. [#1223]
13592
13593astropy.table
13594^^^^^^^^^^^^^
13595
13596- Fixed a bug where ``Table.remove_column`` and ``Table.rename_column``
13597  could cause a masked table to lose its masking. [#1120]
13598
13599- Fixed bugs where subclasses of ``Table`` did not preserver their class in
13600  certain operations. [#1142]
13601
13602- Fixed a bug where slicing a masked table did not preserve the mask. [#1187]
13603
13604astropy.units
13605^^^^^^^^^^^^^
13606
13607- Fixed a bug where the ``.si`` and ``.cgs`` properties of dimensionless
13608  ``Quantity`` objects raised a ``ZeroDivisionError``. [#1150]
13609
13610- Fixed a bug where multiple subsequent calls to the ``.decompose()`` method
13611  on array quantities applied a scale factor each time. [#1163]
13612
13613Misc
13614^^^^
13615
13616- Fixed an installation crash that could occur sometimes on Debian/Ubuntu
13617  and other \*NIX systems where ``pkg_resources`` can be installed without
13618  installing ``setuptools``. [#1150]
13619
13620- Updated the ``distribute_setup.py`` bootstrapper to use setuptools >= 0.7
13621  when installing on systems that don't already have an up to date version
13622  of distribute/setuptools. [#1180]
13623
13624- Changed the ``version.py`` template so that Astropy affiliated packages can
13625  (and they should) use their own ``cython_version.py`` and
13626  ``utils._compiler`` modules where appropriate. This issue only pertains to
13627  affiliated package maintainers. [#1198]
13628
13629- Fixed a corner case where the default config file generation could crash
13630  if building with matplotlib but *not* Sphinx installed in a virtualenv.
13631  [#1225]
13632
13633- Fixed a crash that could occur in the logging module on systems that
13634  don't have a default preferred encoding (in particular this happened
13635  in some versions of PyCharm). [#1244]
13636
13637- The Astropy log now supports passing non-string objects (and calling
13638  ``str()`` on them by default) to the logging methods, in line with Python's
13639  standard logging API. [#1267]
13640
13641- Minor documentation fixes [#582, #696, #1154, #1194, #1212, #1213, #1246,
13642  #1252]
13643
13644Other Changes and Additions
13645---------------------------
13646
13647astropy.cosmology
13648^^^^^^^^^^^^^^^^^
13649
13650- Added a new ``Plank13`` object representing the Plank 2013 results. [#895]
13651
13652astropy.units
13653^^^^^^^^^^^^^
13654
13655- Performance improvements in initialization of ``Quantity`` objects with
13656  a large number of elements. [#1231]
13657
13658
136590.2.3 (2013-05-30)
13660==================
13661
13662Bug Fixes
13663---------
13664
13665astropy.time
13666^^^^^^^^^^^^
13667
13668- Fixed inaccurate handling of leap seconds when converting from UTC to UNIX
13669  timestamps. [#1118]
13670
13671- Tightened required accuracy in many of the time conversion tests. [#1121]
13672
13673Misc
13674^^^^
13675
13676- Fixed a regression that was introduced in v0.2.2 by the fix to issue #992
13677  that was preventing installation of Astropy affiliated packages that use
13678  Astropy's setup framework. [#1124]
13679
13680
136810.2.2 (2013-05-21)
13682==================
13683
13684Bug Fixes
13685---------
13686
13687astropy.io
13688^^^^^^^^^^
13689
13690- Fixed issues in both the ``fits`` and ``votable`` sub-packages where array
13691  byte order was not being handled consistently, leading to possible crashes
13692  especially on big-endian systems. [#1003]
13693
13694astropy.io.fits
13695^^^^^^^^^^^^^^^
13696
13697- When an error occurs opening a file in fitsdiff the exception message will
13698  now at least mention which file had the error.
13699
13700- Fixed a couple cases where creating a new table using TDIMn in some of the
13701  columns could cause a crash.
13702
13703- Slightly refactored how tables containing variable-length array columns are
13704  handled to add two improvements: Fixes an issue where accessing the data
13705  after a call to the ``astropy.io.fits.getdata`` convenience function caused
13706  an exception, and allows the VLA data to be read from an existing mmap of
13707  the FITS file.
13708
13709- Fixed a bug on Python 3 where attempting to open a non-existent file on
13710  Python 3 caused a seemingly unrelated traceback.
13711
13712- Fixed an issue in the tests that caused some tests to fail if Astropy is
13713  installed with read-only permissions.
13714
13715- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
13716  containing boolean fields converted all the values to ``False``.
13717
13718- Fixed an issue where passing an array of integers into the constructor of
13719  ``Column()`` when the column type is floats of the same byte width caused
13720  the column array to become garbled.
13721
13722- Fixed inconsistent behavior in creating CONTINUE cards from byte strings
13723  versus unicode strings in Python 2--CONTINUE cards can now be created
13724  properly from unicode strings (so long as they are convertible to ASCII).
13725
13726- Fixed a bug in parsing HIERARCH keywords that do not have a space after the
13727  first equals sign (before the value).
13728
13729- Prevented extra leading whitespace on HIERARCH keywords from being treated
13730  as part of the keyword.
13731
13732- Fixed a bug where HIERARCH keywords containing lower-case letters was
13733  mistakenly marked as invalid during header validation along with an
13734  ancillary issue where the ``Header.index()`` method id not work correctly
13735  with HIERARCH keywords containing lower-case letters.
13736
13737- Disallowed assigning NaN and Inf floating point values as header values,
13738  since the FITS standard does not define a way to represent them in. Because
13739  this is undefined, the previous behavior did not make sense and produced
13740  invalid FITS files. [#954]
13741
13742- Fixed an obscure issue that can occur on systems that don't have flush to
13743  memory-mapped files implemented (namely GNU Hurd). [#968]
13744
13745astropy.io.votable
13746^^^^^^^^^^^^^^^^^^
13747
13748- Stopped deprecation warnings from the ``astropy.io.votable`` package that
13749  could occur during setup. [#970]
13750
13751- Fixed an issue where INFO elements were being incorrectly dropped when
13752  occurring inside a TABLE element. [#1000]
13753
13754- Fixed obscure test failures on MIPS platforms. [#1010]
13755
13756astropy.nddata.convolution
13757^^^^^^^^^^^^^^^^^^^^^^^^^^
13758
13759- Fixed an issue in ``make_kernel()`` when using an Airy function kernel.
13760  Also removed the superfluous 'brickwall' option. [#939]
13761
13762astropy.table
13763^^^^^^^^^^^^^
13764
13765- Fixed a crash that could occur when adding a row to an empty (rowless)
13766  table with masked columns. [#973]
13767
13768- Made it possible to assign to one table row from the value of another row,
13769  effectively making it easier to copy rows, for example. [#1019]
13770
13771astropy.time
13772^^^^^^^^^^^^
13773
13774- Added appropriate ``__copy__`` and ``__deepcopy__`` behavior; this
13775  omission caused a seemingly unrelated error in FK5 coordinate separation.
13776  [#891]
13777
13778astropy.units
13779^^^^^^^^^^^^^
13780
13781- Fixed an issue where the ``isiterable()`` utility returned ``True`` for
13782  quantities with scalar values.  Added an ``__iter__`` method for the
13783  ``Quantity`` class and fixed ``isiterable()`` to catch false positives.
13784  [#878]
13785
13786- Fixed previously undefined behavior when multiplying a unit by a string.
13787  [#949]
13788
13789- Added 'time' as a physical type--this was a simple omission. [#959]
13790
13791- Fixed issues with pickling unit objects so as to play nicer with the
13792  multiprocessing module. [#974]
13793
13794- Made it more difficult to accidentally override existing units with a new
13795  unit of the same name. [#1070]
13796
13797- Added several more physical types and units that were previously omitted,
13798  including 'mass density', 'specific volume', 'molar volume', 'momentum',
13799  'angular momentum', 'angular speed', 'angular acceleration', 'electric
13800  current', 'electric current density', 'electric field strength', 'electric
13801  flux density', 'electric charge density', 'permittivity', 'electromagnetic
13802  field strength', 'radiant intensity', 'data quantity', 'bandwidth'; and
13803  'knots', 'nautical miles', 'becquerels', and 'curies' respectively. [#1072]
13804
13805Misc
13806^^^^
13807
13808- Fixed a permission error that could occur when running ``astropy.test()``
13809  on Python 3 when Astropy is installed as root. [#811]
13810
13811- Made it easier to filter warnings from the ``convolve()`` function and
13812  from ``Quantity`` objects. [#853]
13813
13814- Fixed a crash that could occur in Python 3 when generation of the default
13815  config file fails during setup. [#952]
13816
13817- Fixed an unrelated error message that could occur when trying to import
13818  astropy from a source checkout without having build the extension modules
13819  first. This issue was claimed to be fixed in v0.2.1, but the fix itself had
13820  a bug. [#971]
13821
13822- Fixed a crash that could occur when running the ``build_sphinx`` setup
13823  command in Python 3. [#977]
13824
13825- Added a more helpful error message when trying to run the
13826  ``setup.py build_sphinx`` command when Sphinx is not installed. [#1027]
13827
13828- Minor documentation fixes and restructuring.
13829  [#935, #967, #978, #1004, #1028, #1047]
13830
13831Other Changes and Additions
13832---------------------------
13833
13834- Some performance improvements to the ``astropy.units`` package, in particular
13835  improving the time it takes to import the sub-package. [#1015]
13836
13837
138380.2.1 (2013-04-03)
13839==================
13840
13841Bug Fixes
13842---------
13843
13844astropy.coordinates
13845^^^^^^^^^^^^^^^^^^^
13846
13847- Fixed encoding errors that could occur when formatting coordinate objects
13848  in code using ``from __future__ import unicode_literals``. [#817]
13849
13850- Fixed a bug where the minus sign was dropped when string formatting dms
13851  coordinates with -0 degrees. [#875]
13852
13853astropy.io.fits
13854^^^^^^^^^^^^^^^
13855
13856- Properly supports the ZQUANTIZ keyword used to support quantization
13857  level--this includes working support for lossless GZIP compression of
13858  images.
13859
13860- Fixed support for opening gzipped FITS files in a writeable mode. [#256]
13861
13862- Added a more helpful exception message when trying to read invalid values
13863  from a table when the required ``TNULLn`` keyword is missing. [#309]
13864
13865- More refactoring of the tile compression handling to work around a
13866  potential memory access violation that was particularly prevalent on
13867  Windows. [#507]
13868
13869- Fixed an integer size mismatch in the compression module that could affect
13870  32-bit systems. [#786]
13871
13872- Fixed malformatting of the ``TFORMn`` keywords when writing compressed
13873  image tables (they omitted the max array length parameter from the
13874  variable-length array format).
13875
13876- Fixed a crash that could occur when writing a table containing multi-
13877  dimensional array columns from an existing file into a new file.
13878
13879- Fixed a bug in fitsdiff that reported two header keywords containing NaN
13880  as having different values.
13881
13882astropy.io.votable
13883^^^^^^^^^^^^^^^^^^
13884
13885- Fixed links to the ``astropy.io.votable`` documentation in the VOTable
13886  validator output. [#806]
13887
13888- When reading VOTables containing integers that are out of range for their
13889  column type, display a warning rather than raising an exception. [#825]
13890
13891- Changed the default string format for floating point values for better
13892  round-tripping. [#856]
13893
13894- Fixed opening VOTables through the ``Table.read()`` interface for tables
13895  that have no names. [#927]
13896
13897- Fixed creation of VOTables from an Astropy table that does not have a data
13898  mask. [#928]
13899
13900- Minor documentation fixes. [#932]
13901
13902astropy.nddata.convolution
13903^^^^^^^^^^^^^^^^^^^^^^^^^^
13904
13905- Added better handling of ``inf`` values to the ``convolve_fft`` family of
13906  functions. [#893]
13907
13908astropy.table
13909^^^^^^^^^^^^^
13910
13911- Fixed silent failure to assign values to a row on multiple columns. [#764]
13912
13913- Fixed various buggy behavior when viewing a table after sorting by one of
13914  its columns. [#829]
13915
13916- Fixed using ``numpy.where()`` with table indexing. [#838]
13917
13918- Fixed a bug where opening a remote table with ``Table.read()`` could cause
13919  the entire table to be downloaded twice. [#845]
13920
13921- Fixed a bug where ``MaskedColumn`` no longer worked if the column being
13922  masked is renamed. [#916]
13923
13924astropy.units
13925^^^^^^^^^^^^^
13926
13927- Added missing capability for array ``Quantity``\s to be initializable by
13928  a list of ``Quantity``\s. [#835]
13929
13930- Fixed the definition of year and lightyear to be in terms of Julian year
13931  per the IAU definition. [#861]
13932
13933- "degree" was removed from the list of SI base units. [#863]
13934
13935astropy.wcs
13936^^^^^^^^^^^
13937
13938- Fixed ``TypeError`` when calling ``WCS.to_header_string()``. [#822]
13939
13940- Added new method ``WCS.all_world2pix`` for converting from world
13941  coordinates to pixel space, including inversion of the astrometric
13942  distortion correction. [#1066, #1281]
13943
13944Misc
13945^^^^
13946
13947- Fixed a minor issue when installing with ``./setup.py develop`` on a fresh
13948  git clone.  This is likely only of interest to developers on Astropy.
13949  [#725]
13950
13951- Fixes a crash with ``ImportError: No module named 'astropy.version'`` when
13952  running setup.py from a source checkout for the first time on OSX with
13953  Python 3.3. [#820]
13954
13955- Fixed an installation issue where running ``./setup.py install`` or when
13956  installing with pip the ``.astropy`` directory gets created in the home
13957  directory of the user running the command.  The user's ``.astropy``
13958  directory should only be created when they use Astropy, not when they
13959  install it. [#867]
13960
13961- Fixed an exception when creating a ``ProgressBar`` with a "total" of 0.
13962  [#752]
13963
13964- Added better documentation of behavior that can occur when trying to import
13965  the astropy package from within a source checkout without first building
13966  the extension modules. [#795, #864]
13967
13968- Added link to the installation instructions in the README. [#797]
13969
13970- Catches segfaults in xmllint which can occur sometimes and is otherwise out
13971  of our control. [#803]
13972
13973- Minor changes to the documentation template. [#805]
13974
13975- Fixed a minor exception handling bug in ``download_file()``. [#808]
13976
13977- Added cleanup of any temporary files if an error occurs in
13978  ``download_file()``. [#857]
13979
13980- Filesystem free space is checked for before attempting to download a file
13981  with ``download_file()``. [#858]
13982
13983- Fixed package data locating to work across symlinks--required to work with
13984  some OS packaging layouts. [#827]
13985
13986- Fixed a bug when building Cython extensions where hidden files containing
13987  ``.pyx`` extensions could cause the build to crash. This can be an issue
13988  with software and filesystems that autogenerate hidden files. [#834]
13989
13990- Fixed bug that could cause a "script" called README.rst to be installed
13991  in a bin directory. [#852]
13992
13993- Fixed some miscellaneous and mostly rare reference leaks caught by
13994  cpychecker. [#914]
13995
13996Other Changes and Additions
13997---------------------------
13998
13999- Added logo and branding for Windows binary installers. [#741]
14000
14001- Upgraded included version libexpat to 2.1.0. [#781]
14002
14003- ~25% performance improvement in unit composition/decomposition. [#836]
14004
14005- Added previously missing LaTeX formatting for ``L_sun`` and ``R_sun``. [#841]
14006
14007- ConfigurationItem\s now have a more useful and informative __repr__
14008  and improved documentation for how to use them. [#855]
14009
14010- Added a friendlier error message when trying to import astropy from a source
14011  checkout without first building the extension modules inplace. [#864]
14012
14013- py.test now outputs more system information for help in debugging issues
14014  from users. [#869]
14015
14016- Added unit definitions "mas" and "uas" for "milliarcsecond" and
14017  "microarcsecond" respectively. [#892]
14018
14019
140200.2 (2013-02-19)
14021================
14022
14023New Features
14024------------
14025
14026astropy.coordinates
14027^^^^^^^^^^^^^^^^^^^
14028
14029- This new subpackage contains a representation of celestial coordinates,
14030  and provides a wide range of related functionality.  While
14031  fully-functional, it is a work in progress and parts of the API may
14032  change in subsequent releases.
14033
14034astropy.cosmology
14035^^^^^^^^^^^^^^^^^
14036
14037- Update to include cosmologies with variable dark energy equations of state.
14038  (This introduces some API incompatibilities with the older Cosmology
14039  objects).
14040
14041- Added parameters for relativistic species (photons, neutrinos) to the
14042  astropy.cosmology classes. The current treatment assumes that neutrinos are
14043  massless. [#365]
14044
14045- Add a WMAP9 object using the final (9-year) WMAP parameters from
14046  Hinshaw et al. 2013. It has also been made the default cosmology.
14047  [#629, #724]
14048
14049- astropy.table I/O infrastructure for custom readers/writers
14050  implemented. [#305]
14051
14052- Added support for reading/writing HDF5 files [#461]
14053
14054- Added support for masked tables with missing or invalid data [#451]
14055
14056- New ``astropy.time`` sub-package. [#332]
14057
14058- New ``astropy.units`` sub-package that includes a class for units
14059  (``astropy.units.Unit``) and scalar quantities that have units
14060  (``astropy.units.Quantity``). [#370, #445]
14061
14062  This has the following effects on other sub-packages:
14063
14064- In ``astropy.wcs``, the ``wcs.cunit`` list now takes and returns
14065  ``astropy.units.Unit`` objects. [#379]
14066
14067- In ``astropy.nddata``, units are now stored as ``astropy.units.Unit``
14068  objects. [#382]
14069
14070- In ``astropy.table``, units on columns are now stored as
14071  ``astropy.units.Unit`` objects. [#380]
14072
14073- In ``astropy.constants``, constants are now stored as
14074  ``astropy.units.Quantity`` objects. [#529]
14075
14076astropy.io.ascii
14077^^^^^^^^^^^^^^^^
14078
14079- Improved integration with the ``astropy.table`` Table class so that
14080  table and column metadata (e.g. keywords, units, description,
14081  formatting) are directly available in the output table object.  The
14082  CDS, DAOphot, and IPAC format readers now provide this type of
14083  integrated metadata.
14084
14085- Changed to using ``astropy.table`` masked tables instead of NumPy
14086  masked arrays for tables with missing values.
14087
14088- Added SExtractor table reader to ``astropy.io.ascii`` [#420]
14089
14090- Removed the Memory reader class which was used to convert data input
14091  passed to the ``write`` function into an internal table.  Instead
14092  ``write`` instantiates an astropy Table object using the data
14093  input to ``write``.
14094
14095- Removed the NumpyOutputter as the output of reading a table is now
14096  always a ``Table`` object.
14097
14098- Removed the option of supplying a function as a column output
14099  formatter.
14100
14101- Added a new ``strip_whitespace`` keyword argument to the ``write``
14102  function.  This controls whether whitespace is stripped from
14103  the left and right sides of table elements before writing.
14104  Default is True.
14105
14106- Fixed a bug in reading IPAC tables with null values.
14107
14108- Generalized I/O infrastructure so that ``astropy.nddata`` can also have
14109  custom readers/writers [#659]
14110
14111astropy.wcs
14112^^^^^^^^^^^
14113
14114- From updating the underlying wcslib 4.16:
14115
14116- When ``astropy.wcs.WCS`` constructs a default coordinate representation
14117  it will give it the special name "DEFAULTS", and will not report "Found
14118  one coordinate representation".
14119
14120Other Changes and Additions
14121---------------------------
14122
14123- A configuration file with all options set to their defaults is now generated
14124  when astropy is installed.  This file will be pulled in as the users'
14125  astropy configuration file the first time they ``import astropy``.  [#498]
14126
14127- Astropy doc themes moved into ``astropy.sphinx`` to allow affiliated packages
14128  to access them.
14129
14130- Added expanded documentation for the ``astropy.cosmology`` sub-package.
14131  [#272]
14132
14133- Added option to disable building of "legacy" packages (pyfits, vo, etc.).
14134
14135- The value of the astronomical unit (au) has been updated to that adopted by
14136  IAU 2012 Resolution B2, and the values of the pc and kpc constants have been
14137  updated to reflect this. [#368]
14138
14139- Added links to the documentation pages to directly edit the documentation on
14140  GitHub. [#347]
14141
14142- Several updates merged from ``pywcs`` into ``astropy.wcs`` [#384]:
14143
14144- Improved the reading of distortion images.
14145
14146- Added a new option to choose whether or not to write SIP coefficients.
14147
14148- Uses the ``relax`` option by default so that non-standard keywords are
14149  allowed. [#585]
14150
14151
14152- Added HTML representation of tables in IPython notebook [#409]
14153
14154- Rewrote CFITSIO-based backend for handling tile compression of FITS files.
14155  It now uses a standard CFITSIO instead of heavily modified pieces of CFITSIO
14156  as before.  Astropy ships with its own copy of CFITSIO v3.30, but system
14157  packagers may choose instead to strip this out in favor of a
14158  system-installed version of CFITSIO.  This corresponds to PyFITS ticket 169.
14159  [#318]
14160
14161- Moved ``astropy.config.data`` to ``astropy.utils.data`` and re-factored the
14162  I/O routines to separate out the generic I/O code that can be used to open
14163  any file or resource from the code used to access Astropy-related data. The
14164  'core' I/O routine is now ``get_readable_fileobj``, which can be used to
14165  access any local as well as remote data, supports caching, and can decompress
14166  gzip and bzip2 files on-the-fly. [#425]
14167
14168- Added a classmethod to
14169  ``astropy.coordinates.coordsystems.SphericalCoordinatesBase`` that performs a
14170  name resolve query using Sesame to retrieve coordinates for the requested
14171  object. This works for any subclass of ``SphericalCoordinatesBase``, but
14172  requires an internet connection. [#556]
14173
14174- astropy.nddata.convolution removed requirement of PyFFTW3; uses Numpy's
14175  FFT by default instead with the added ability to specify an FFT
14176  implementation to use. [#660]
14177
14178
14179Bug Fixes
14180---------
14181
14182astropy.io.ascii
14183^^^^^^^^^^^^^^^^
14184
14185- Fixed crash when pprinting a row with INDEF values. [#511]
14186
14187- Fixed failure when reading DAOphot files with empty keyword values. [#666]
14188
14189astropy.io.fits
14190^^^^^^^^^^^^^^^
14191
14192- Improved handling of scaled images and pseudo-unsigned integer images in
14193  compressed image HDUs.  They now work more transparently like normal image
14194  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
14195  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
14196  works better too. Corresponds to PyFITS ticket 88.
14197
14198- Permits non-string values for the EXTNAME keyword when reading in a file,
14199  rather than throwing an exception due to the malformatting.  Added
14200  verification for the format of the EXTNAME keyword when writing.
14201  Corresponds to PyFITS ticket 96.
14202
14203- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
14204  is specified in the header, it will also be reflected in the ``.name``
14205  attribute and in ``fits.info()``.  These keywords used to be verboten in
14206  PRIMARY HDUs, but the latest version of the FITS standard allows them.
14207  Corresponds to PyFITS ticket 151.
14208
14209- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
14210  arrays) so long as the tile size is effectively 2-dimensional. In fact,
14211  compatible tile sizes will automatically be used even if they're not
14212  explicitly specified. Corresponds to PyFITS ticket 171.
14213
14214- Fixed a bug that could cause a deadlock in the filesystem on OSX when
14215  reading the data from certain types of FITS files. This only occurred
14216  when used in conjunction with Numpy 1.7. [#369]
14217
14218- Added support for the optional ``endcard`` parameter in the
14219  ``Header.fromtextfile()`` and ``Header.totextfile()`` methods.  Although
14220  ``endcard=False`` was a reasonable default assumption, there are still text
14221  dumps of FITS headers that include the END card, so this should have been
14222  more flexible. Corresponds to PyFITS ticket 176.
14223
14224- Fixed a crash when running fitsdiff on two empty (that is, zero row) tables.
14225  Corresponds to PyFITS ticket 178.
14226
14227- Fixed an issue where opening a FITS file containing a random group HDU in
14228  update mode could result in an unnecessary rewriting of the file even if
14229  no changes were made. This corresponds to PyFITS ticket 179.
14230
14231- Fixed a crash when generating diff reports from diffs using the
14232  ``ignore_comments`` options. Corresponds to PyFITS ticket 181.
14233
14234- Fixed some bugs with WCS distortion paper record-valued keyword cards:
14235
14236- Cards that looked kind of like RVKCs but were not intended to be were
14237  over-permissively treated as such--commentary keywords like COMMENT and
14238  HISTORY were particularly affected. Corresponds to PyFITS ticket 183.
14239
14240- Looking up a card in a header by its standard FITS keyword only should
14241  always return the raw value of that card.  That way cards containing
14242  values that happen to valid RVKCs but were not intended to be will still
14243  be treated like normal cards. Corresponds to PyFITS ticket 184.
14244
14245- Looking up a RVKC in a header with only part of the field-specifier (for
14246  example "DP1.AXIS" instead of "DP1.AXIS.1") was implicitly treated as a
14247  wildcard lookup. Corresponds to PyFITS ticket 184.
14248
14249- Fixed a crash when diffing two FITS files where at least one contains a
14250  compressed image HDU which was not recognized as an image instead of a
14251  table. Corresponds to PyFITS ticket 187.
14252
14253- Fixed a bug where opening a file containing compressed image HDUs in
14254  'update' mode and then immediately closing it without making any changes
14255  caused the file to be rewritten unnecessarily.
14256
14257- Fixed two memory leaks that could occur when writing compressed image data,
14258  or in some cases when opening files containing compressed image HDUs in
14259  'update' mode.
14260
14261- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at
14262  all--it was not restoring the image to its original BSCALE and BZERO
14263  values.
14264
14265- Fixed a bug when writing out files containing zero-width table columns,
14266  where the TFIELDS keyword would be updated incorrectly, leaving the table
14267  largely unreadable.
14268
14269- Fixed a minor string formatting issue.
14270
14271- Fixed bugs in the backwards compatibility layer for the ``CardList.index``
14272  and ``CardList.count`` methods. Corresponds to PyFITS ticket 190.
14273
14274- Improved ``__repr__`` and text file representation of cards with long
14275  values that are split into CONTINUE cards. Corresponds to PyFITS ticket
14276  193.
14277
14278- Fixed a crash when trying to assign a long (> 72 character) value to blank
14279  ('') keywords. This also changed how blank keywords are represented--there
14280  are still exactly 8 spaces before any commentary content can begin; this
14281  *may* affect the exact display of header cards that assumed there could be
14282  fewer spaces in a blank keyword card before the content begins. However,
14283  the current approach is more in line with the requirements of the FITS
14284  standard. Corresponds to PyFITS ticket 194.
14285
14286astropy.io.votable
14287^^^^^^^^^^^^^^^^^^
14288
14289- The ``Table`` class now maintains a single array object which is a
14290  Numpy masked array.  For variable-length columns, the object that
14291  is stored there is also a Numpy masked array.
14292
14293- Changed the ``pedantic`` configuration option to be ``False`` by default
14294  due to the vast proliferation of non-compliant VO Tables. [#296]
14295
14296- Renamed ``astropy.io.vo`` to ``astropy.io.votable``.
14297
14298astropy.table
14299^^^^^^^^^^^^^
14300
14301- Added a workaround for an upstream bug in Numpy 1.6.2 that could cause
14302  a maximum recursion depth RuntimeError when printing table rows. [#341]
14303
14304astropy.wcs
14305^^^^^^^^^^^
14306
14307- Updated to wcslib 4.15 [#418]
14308
14309- Fixed a problem with handling FITS headers on locales that do not use
14310  dot as a decimal separator. This required an upstream fix to wcslib which
14311  is included in wcslib 4.14. [#313]
14312
14313- Fixed some tests that could fail due to missing/incorrect logging
14314  configuration--ensures that tests don't have any impact on the default log
14315  location or contents. [#291]
14316
14317- Various minor documentation fixes [#293 and others]
14318
14319- Fixed a bug where running the tests with the ``py.test`` command still tried
14320  to replace the system-installed pytest with the one bundled with Astropy.
14321  [#454]
14322
14323- Improved multiprocessing compatibility for file downloads. [#615]
14324
14325- Fixed handling of Cython modules when building from a source checkout of a
14326  tagged release version. [#594]
14327
14328- Added a workaround for a bug in Sphinx that could occur when using the
14329  ``:tocdepth:`` directive. [#595]
14330
14331- Minor VOTable fixes [#596]
14332
14333- Fixed how ``setup.py`` uses ``distribute_setup.py`` to prevent possible
14334  ``VersionConflict`` errors when an older version of distribute is already
14335  installed on the user's system. [#616, #640]
14336
14337- Changed use of ``log.warn`` in the logging module to ``log.warning`` since
14338  the former is deprecated. [#624]
14339
14340
143410.1 (2012-06-19)
14342================
14343
14344- Initial release.
14345