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