All Versions
Latest Version
Avg Release Cycle
56 days
Latest Release
87 days ago

Changelog History
Page 4

  • v3.0.3 Changes

    June 01, 2018

    ๐Ÿ› Bug Fixes ^

    • ๐Ÿ›  Fix stripping correct (header) comment line from meta['comments'] in the CommentedHeader reader for all header_start settings. [#7508] ^

    • ๐Ÿšฉ Raise error when attempting to open gzipped FITS file in 'append' mode. [#7473]

    • ๐Ÿ›  Fix a bug when writing to FITS a table that has a column description with embedded blank lines. [#7482]

    โœ… astropy.tests ^

    • ๐Ÿ“ฆ Enabling running tests for multiple packages when specified comma separated. [#7463]
  • v3.0.2 Changes

    April 23, 2018

    ๐Ÿ› Bug Fixes


    • Computing a 3D separation between two SkyCoord objects (with the separation_3d method) now works with or without velocity data attached to the objects. [#7387]

    • ๐Ÿ›  Fix validate with xmllint=True. [#7255, #7283]

    astropy.modeling ^

    • FittingWithOutlierRemoval now handles model sets, as long as the underlying fitter supports masked values. [#7199]

    • Remove assumption that model_set_axis == 0 for 2D models in LinearLSQFitter. [#7317, #7199]

    • ๐Ÿ›  Fix the shape of the outputs when a model set is evaluated with model_set_axis=False . [#7317]

    astropy.stats ^

    • Accept a tuple for the axis parameter in sigma_clip, like the underlying numpy functions and some other functions in stats. [#7199]

    โœ… astropy.tests ^

    • ๐Ÿ“ฆ The function quantity_allclose was moved to the units package with the new, shorter name allclose. This eliminates a runtime dependency on pytest which was causing issues for some affiliated packages. The old import will continue to work but may be deprecated in the future. [#7252]

    astropy.units ^

    • โž• Added a units-aware allclose function (this was previously available in the tests module as quantity_allclose). To complement allclose, a new isclose function is also added and backported. [#7252]
  • v3.0.1 Changes

    March 12, 2018

    ๐Ÿ› Bug Fixes ^

    • ๐Ÿ›  Fix a unicode decode error when reading a table with non-ASCII characters. The fast C reader cannot handle unicode so the code now uses the pure-Python reader in this case. [#7103] ^

    • ๐Ÿš‘ Updated the bundled CFITSIO library to 3.430. This is to remedy a critical security vulnerability that was identified by NASA. See cextern/cfitsio/docs/changes.txt for additional information. [#7274] ^

    • ๐Ÿ‘‰ Make sure that a sufficiently recent version of ASDF is installed when running test suite against ASDF tags and schemas. [#7205]

    • ๐Ÿ›  Fix reading files with serialized metadata when using a Table subclass. [#7213]

    • ๐Ÿ›  Fix lookup fields by ID. [#7208]

    astropy.modeling ^

    • Fix model set evaluation over common input when model_set_axis > 0. [#7222]

    • ๐Ÿ›  Fixed the evaluation of compound models with units. This required adding the ability to have input_units_strict and input_units_allow_dimensionless be dictionaries with input names as keys. [#6952]

    astropy.units ^

    • quantity_helper no longer requires scipy>=0.18. [#7219]
  • v3.0 Changes

    February 12, 2018

    ๐Ÿ†• New Features


    • New context manager set_enabled_constants to temporarily use an older version. [#7008]


    • The Distance object now accepts parallax as a keyword in the initializer, and supports retrieving a parallax (as an Angle) via the .parallax attributes. [#6855]

    • The coordinate frame classes (subclasses of BaseCoordinateFrame) now always have .velocity, .proper_motion, and .radial_velocity properties that provide shorthands to the full-space Cartesian velocity as a CartesianDifferential, the 2D proper motion as a Quantity, and the radial or line-of-sight velocity as a Quantity. [#6869]

    • ๐Ÿ‘ SkyCoord objects now support storing and tranforming differentials - i.e., both radial velocities and proper motions. [#6944]

    • All frame classes now automatically get sensible representation mappings for velocity components. For example, d_x, d_y, d_z are all automatically mapped to frame component namse v_x, v_y, v_z. [#6856]

    • โšก๏ธ SkyCoord objects now support updating the position of a source given its space motion and a new time or time difference. [#6872]

    • The frame classes now accept a representation class or differential class, or string names for either, through the keyword arguments representation_type and differential_type instead of representation and differential_cls. [#6873]

    • The frame classes (and SkyCoord) now give more useful error messages when incorrect attribute names are given. Instead of using the representation attribute names, they use the frame attribute names. [#7106]

    • EarthLocation now has a method to compute the gravitational redshift due due to solar system bodies. [#6861, #6935]

    • EarthLocation now has a get_gcrs convenience method to get the location in GCRS coordinates. [#6861, #6935] ^

    • Expanded the FITS Column interface to accept attributes pertaining to the FITS World Coordinate System, which includes spatial(celestial) and time coordinates. [#6359]

    • โž• Added ver attribute to set the EXTVER header keyword to ImageHDU and TableHDU. [#6454]

    • ๐ŸŽ The performance for reading FITS tables has been significantly improved, in particular for cases where the tables contain one or more string columns and when done through [#6821]

    • ๐ŸŽ The performance for writing tables from Table.write has now been significantly improved for tables containing one or more string columns. [#6920]

    • ๐Ÿ‘ The now supports a memmap= keyword argument to control whether or not to use memory mapping when reading the table. [#6821]

    • When reading FITS tables with, a new keyword argument character_as_bytes can be passed - when set to True, character columns are returned as Numpy byte arrays (Numpy type S) while when set to False, the same columns are decoded to Unicode strings (Numpy type U) which uses more memory. [#6821]

    • The table_to_hdu function and the BinTableHDU.from_columns and FITS_rec.from_columns methods now include a character_as_bytes keyword argument - if set to True, then when string columns are accessed, byte columns will be returned, which can provide significantly improved performance. [#6920]

    • โž• Added support for writing and reading back a table which has "mixin columns" such as SkyCoord or EarthLocation with no loss of information. [#6912]

    • Enable tab-completion for FITS_rec column names and Header keywords with IPython 5 and later. [#7071] ^

    • ๐Ÿ“‡ When writing to HDF5 files, the serialized metadata are now saved in a new dataset, instead of the HDF5 dataset attributes. This allows for metadata of any dimensions. [#6304]

    • โž• Added support in HDF5 for writing and reading back a table which has "mixin columns" such as SkyCoord or EarthLocation with no loss of information. [#7007]

    • โž• Add implementations of astropy-specific ASDF tag types. [#6790]

    • โž• Add ASDF tag and schema for ICRSCoord. [#6904]

    astropy.modeling ^

    • โž• Add unit support for tabular models. [#6529]

    • A deepcopy() method was added to models. [#6515]

    • โž• Added units support to AffineTransformation. [#6853]

    • โž• Added is_separable function to modeling to test the separability of a model. [#6746]

    • โž• Added Model.separable property. It returns a boolean value or None if not set. [#6746]

    • ๐Ÿ‘Œ Support masked array values in LinearLSQFitter (instead of silently ignorning the mask). [#6927]

    astropy.stats ^

    • โž• Added false alarm probability computation to astropy.stats.LombScargle [#6488]

    • Implemented Kuiper functions in astropy.stats [#3724, #6565]

    astropy.table ^

    • โž• Added support for reading and writing astropy.time.Time Table columns to and from FITS tables, to the extent supported by the FITS standard. [#6176]

    • ๐Ÿ‘Œ Improved exception handling and error messages when column format attribute is incorrect for the column type. [#6385]

    • ๐Ÿ‘ Allow to pass htmldict option to the jsviewer writer. [#6551]

    • โž• Added new table operation astropy.table.setdiff that returns the set difference of table rows for two tables. [#6443]

    • โž• Added support for reading time columns in FITS compliant binary tables as astropy.time.Time Table columns. [#6442]

    • Allowed to remove table rows through the __delitem__ method. [#5839]

    • โž• Added a new showtable command-line script to view binary or ASCII table files. [#6859]

    • โž• Added new table property astropy.table.Table.loc_indices that returns the location of rows by indexes. [#6831]

    • ๐Ÿ‘ Allow updating of table by indices through the property astropy.table.Table.loc. [#6831]

    • Enable tab-completion for column names with IPython 5 and later. [#7071]

    • ๐Ÿ‘ Allow getting and setting a table Row using multiple column names. [#7107]

    โœ… astropy.tests ^

    • ๐Ÿšš Split pytest plugins into separate modules. Move remotedata, openfiles, doctestplus plugins to standalone repositories. [#6384, #6606]

    • ๐Ÿ“ฆ When testing, astropy (or the package being tested) is now installed to a temporary directory instead of copying the build. This allows entry points to work correctly. [#6890]

    • โœ… The tests_require setting in now works properly when running 'python test'. [#6892]

    astropy.units ^

    • ๐Ÿ—„ Deprecated conversion of quantities to truth values. Currently, the expression bool(0 * u.dimensionless_unscaled) evaluates to True. In the future, attempting to convert a Quantity to a bool will raise ValueError. [#6580, #6590]

    • Modify the brightness_temperature equivalency to provide a surface brightness equivalency instead of the awkward assumed-per-beam equivalency that previously existed [#5173, #6663]

    • ๐Ÿ‘Œ Support was added for a number of scipy.special functions. [#6852]

    astropy.utils ^

    • ๐Ÿ‘ The class method now supports the ipython_widget option. You can now pass it both multiprocess=True and ipython_widget=True to get both multiprocess speedup and a progress bar widget in an IPython Notebook. [#6368]

    • ๐Ÿ—„ The astropy.utils.compat.funcsigs module has now been deprecated. Use the Python 'inspect' module directly instead. [#6598]

    • ๐Ÿ—„ The astropy.utils.compat.futures module has now been deprecated. Use the Python 'concurrent.futures' module directly instead. [#6598]

    • JsonCustomEncoder is expanded to handle Quantity and UnitBase. [#5471]

    • Added a dcip_xy method to IERS that interpolates along the dX_2000A and dY_2000A columns of the IERS table. Hence, the data for the CIP offsets is now available for use in coordinate frame conversion. [#5837]

    • The functions matmul, broadcast_arrays, broadcast_to of the astropy.utils.compat.numpy module have been deprecated. Use the NumPy functions directly. [#6691]

    • The class method now returns results in sequential order. Previously, if you set multiprocess=True, then the results could arrive in any arbitrary order, which could be a nasty shock. Although the function will still be evaluated on the items in arbitrary order, the return values will arrive in the same order in which the input items were provided. The method is now a thin wrapper around astropy.utils.console.ProgressBar.map_unordered, which preserves the old behavior. [#6439]


    • Enable Matplotlib's subtraction shorthand syntax for composing and inverting trasformations for the WCSWorld2PixelTransform and WCSPixel2WorldTransform classes by setting has_inverse to True. In order to implement a unit test, also implement the equality comparison operator for both classes. [#6531]

    • โž• Added automatic hiding of axes labels when no tick labels are drawn on that axis. This parameter can be configured with WCSAxes.coords[*].set_axislabel_visibility_rule so that labels are automatically hidden when no ticks are drawn or always shown. [#6774]

    astropy.wcs ^

    • Added a new function celestial_frame_to_wcs to convert from coordinate frames to WCS (the opposite of what wcs_to_celestial_frame currently does. [#6481]

    • โšก๏ธ wcslib was updated to v 5.18. [#7066]

    API Changes


    • Gaussian2DKernel now accepts x_stddev in place of stddev with an option for y_stddev, if different. It also accepts theta like Gaussian2D model. [#3605, #6748]


    • ๐Ÿ—„ Deprecated recommended_units for representations. These were used to ensure that any angle was presented in degrees in sky coordinates and frames. This is more logically done in the frame itself. [#6858]

    • As noted above, the frame class attributes representation and differential_cls are being replaced by representation_type and differential_type. In the next version, using representation will raise a deprecation warning. [#6873]

    • Coordinate frame classes now can't be added to the frame transform graph if they have frame attribute names that conflict with any component names. This is so SkyCoord can uniquely identify and distinguish frame attributes from frame components. [#6871]

    • Slicing and reshaping of SkyCoord and coordinate frames no longer passes the new object through __init__, but directly sets atttributes on a new instance. This speeds up those methods by an order of magnitude, but means that any customization done in __init__ is by-passed. [#6941] ^

    • ๐Ÿ‘ Allow ECSV files to be auto-identified by or Table.write based on the .ecsv file name suffix. In this case it is not required to provide the format keyword. [#6552] ^

    • Automatically detect and handle compression in FITS files that are opened by passing a file handle to [#6373]

    • โœ‚ Remove the nonstandard checksum option. [#6571] ^

    • ๐Ÿ“‡ When writing to HDF5 files, the serialized metadata are now saved in a new dataset instead of the HDF5 dataset attributes. This allows for metadata of any dimensions. [#6304]

    • ๐Ÿ—„ Deprecated the usecPickle kwarg of fnunpickle and fnpickle as it was needed only for Python2 usage. [#6655]

    • โž• Add handling of tree.Group elements to tree.Resource. Unified I/O or conversion to astropy tables is not affected. [#6262]

    astropy.modeling ^

    • โœ‚ Removed deprecated GaussianAbsorption1D model. Use Const1D - Gaussian1D instead. [#6542]

    • โœ‚ Removed the registry from modeling. [#6706]

    astropy.table ^

    • When setting the column format attribute the value is now immediately validated. Previously one could set to any value and it was only checked when actually formatting the column. [#6385]

    • ๐Ÿ—„ Deprecated the python3_only kwarg of the convert_bytestring_to_unicode and convert_unicode_to_bytestring methods it was needed only for Python2 usage. [#6655]

    • When reading in FITS tables with, string columns are now represented using Numpy byte (dtype S) arrays rather than Numpy unicode arrays (dtype U). The Column class then ensures the bytes are automatically converted to string as needed. [#6821]

    • When getting a table row using multiple column names, if one of the names is not a valid column name then a KeyError exception is now raised (previously ValueError). When setting a table row, if the right hand side is not a sequence with the correct length then a ValueError is now raised (previously in certain cases a TypeError was raised). [#7107]

    astropy.utils ^

    • download_files_in_parallel now always uses cache=True to make the function work on Windows. [#6671]


    • ๐Ÿ’… The Astropy matplotlib plot style has been deprecated. It will continue to work in future but is no longer documented. [#6991]

    ๐Ÿ› Bug Fixes


    • 0๏ธโƒฃ Frame objects now use the default differential even if the representation is explicitly provided as long as the representation provided is the same type as the default representation. [#6944]

    • Coordinate frame classes now raise an error when they are added to the frame transform graph if they have frame attribute names that conflict with any component names. [#6871] ^

    • โž• Added support for reading very large tables in chunks to reduce memory usage. [#6458]

    • Strip leading/trailing white-space from latex lines to avoid issues when matching \begin{tabular} statements. This is done by introducing a new LatexInputter class to override the BaseInputter. [#6311] ^

    • Properly handle opening of FITS files from http.client.HTTPResponse (i.e. it now works correctly when passing the results of urllib.request.urlopen to [#6378]

    • ๐Ÿ›  Fix the fitscheck script for updating invalid checksums, or removing checksums. [#6571]

    • ๐Ÿ›  Fixed potential problems with the compression module [#6732]

    • Always use the 'D' format for floating point values in ascii tables. [#6938]

    astropy.table ^

    • ๐Ÿ›  Fix getting a table row when using multiple column names (for example t[3]['a', 'b', 'c']). Also fix a problem when setting an entire row: if setting one of the right-hand side values failed this could result in a partial update of the referenced parent table before the exception is raised. [#7107]

    astropy.time ^

    • ๐ŸŽ‰ Initialization of Time instances with bytes or arrays with dtype S will now automatically attempt to decode as ASCII. This ensures Column instances with ASCII strings stored with dtype S can be used. [#6823, #6903]

    astropy.units ^

    • ๐Ÿ›  Fixed a bug that caused PLY files to not be generated correctly in Python 3. [#7174]

    astropy.utils ^

    • ๐Ÿ—„ The deprecated decorator applied to a class will now modify the class itself, rather than to create a class that just looks and behave like the original. This is needed so that the Python 3 super without arguments works for decorated classes. [#6615]

    • ๐Ÿ›  Fixed HomogeneousList when setting one item or a slice. [#6773]

    • Also check the type when creating a new instance of HomogeneousList. [#6773]

    • ๐Ÿ‘‰ Make HomogeneousList work with iterators and generators when creating the instance, extending it, or using when setting a slice. [#6773]

    Other Changes and Additions

    • ๐Ÿ”– Versions of Python <3.5 are no longer supported. [#6556]

    • ๐Ÿ”– Versions of Pytest <3.1 are no longer supported. [#6419]

    • ๐Ÿ”– Versions of Numpy <1.10 are no longer supported. [#6593]

    • โšก๏ธ The bundled CFITSIO was updated to version 3.41 [#6477]

    • ๐Ÿ“ฆ analytic_functions sub-package is removed. Use astropy.modeling.blackbody. [#6541]

    • ๐Ÿ“ฆ astropy.vo sub-package is removed. Use astropy.samp for SAMP and astroquery for VO cone search. [#6540]

    • The guide to setting up Emacs for code development was simplified, and updated to recommend flycheck and flake8 for syntax checks. [#6692]

    • โšก๏ธ The bundled version of PLY was updated to 3.10. [#7174]

  • v2.0.16 Changes

    October 27, 2019

    ๐Ÿ› Bug Fixes

    astropy.time ^

    • ๐Ÿ›  Fixed a troubling bug in which Time could loose precision, with deviations of 300 ns. [#9328]

    Other Changes and Additions

    • โšก๏ธ Updated IERS A URLs due to USNO prolonged maintenance. [#9443]
  • v2.0.15 Changes

    October 06, 2019

    ๐Ÿ› Bug Fixes


    • ๐Ÿ›  Fixed a bug where the string representation of a BaseCoordinateFrame object could become garbled under specific circumstances when the frame defines custom component names via RepresentationMapping. [#8869] ^

    • ๐Ÿ›  Fix uint conversion in FITS_rec when slicing a table. [#8982]

    • ๐Ÿ›  Fix reading of unsigned 8-bit integer with compressed fits. [#9219]

    astropy.nddata ^

    • ๐Ÿ›  Fixed a bug in overlap_slices where the "strict" mode was too strict for a small array along the upper edge of the large array. [#8901]

    • ๐Ÿ›  Fixed a bug in overlap_slices where a NoOverlapError would be incorrectly raised for a 0-shaped small array at the origin. [#8901]

    astropy.samp ^

    • ๐Ÿ›  Fixed a bug that caused an incorrectly constructed warning message to raise an error. [#8966]

    astropy.table ^

    • ๐Ÿ›  Fix FixedWidthNoHeader to pay attention to data_start keyword when finding first data line to split columns [#8485, #8511]

    • ๐Ÿ›  Fix bug when initializing Table with rows as a generator. [#9315]

    • ๐Ÿ›  Fix join when there are multiple mixin (Quantity) columns as keys. [#9313]

    astropy.units ^

    • Quantity now preserves the dtype for anything that is floating point, including float16. [#8872]

    • Unit() now accepts units with fractional exponents such as m(3/2) in the default/fits and vounit formats that would previously have been rejected for containing multiple solidi (/). [#9000]

    • ๐Ÿ›  Fixed the LaTeX representation of units containing a superscript. [#9218]


    • ๐Ÿ›  Fixed compatibility issues with latest versions of Matplotlib. [#8961]

    Other Changes and Additions

    • โšก๏ธ Updated required version of Cython to v0.29.13 to make sure that generated C files are compatible with the upcoming Python 3.8 release as well as earlier supported versions of Python. [#9198]
  • v2.0.14 Changes

    June 14, 2019

    ๐Ÿ› Bug Fixes ^

    • ๐Ÿ›  Fix Header.update which was dropping the comments when passed a Header object. [#8840]

    astropy.modeling ^

    • Moffat1D.fwhm and Moffat2D.fwhm will return a positive value when gamma is negative. [#8801, #8815]

    astropy.units ^

    • ๐Ÿ›  Fixed a bug that prevented EarthLocation from being initialized with numpy >=1.17. [#8849]


    • ๐Ÿ›  Fixed quantity_support to work around the fact that matplotlib does not detect subclasses in its units framework. With this, Angle and other subclasses work correctly. [#8818]

    • ๐Ÿ›  Fixed quantity_support to work properly if multiple context managers are nested. [#8844]

  • v2.0.13 Changes

    June 08, 2019

    ๐Ÿ› Bug Fixes ^

    • Fixed bug in ColDefs._init_from_array() that caused unsigned datatypes with the opposite endianness as the host architecture to fail the TestColumnFunctions.test_coldefs_init_from_array unit test. [#8460] ^

    • ๐Ÿ’… Explicitly set PyYAML default flow style to None to ensure consistent astropy YAML output for PyYAML version 5.1 and later. [#8500]

    • Block floating-point columns from using repr format when converted to Table [#8358]

    astropy.stats ^

    • Fixed issue in bayesian_blocks when called with the ncp_prior keyword. [#8339]

    astropy.units ^

    • ๐Ÿ›  Fix take when one gets only a single element from a Quantity, ensuring it returns a Quantity rather than a scalar. [#8617]
  • v2.0.12 Changes

    February 23, 2019

    ๐Ÿ†• New Features

    astropy.utils ^

    • ๐Ÿ“‡ The deprecated_renamed_argument decorator now capable deprecating an argument without renaming it. It also got a new alternative keyword argument to suggest alternative functionality instead of the removed one. [#8324]

    ๐Ÿ› Bug Fixes ^

    • Fixed bug in ColDefs._init_from_array() that caused non-scalar unsigned entries to not have the correct bzero value set. [#8353]

    astropy.modeling ^

    • ๐Ÿ›  Fixed compatibility of JointFitter with the latest version of Numpy. [#7984]

    astropy.table ^

    • ๐Ÿ›  Fix .quantity property of Column class for function-units (e.g., dex). Previously setting this was possible, but getting raised an error. [#8425]

    • ๐Ÿ›  Fixes a bug where initializing a new Table from the final row of an existing Table failed. This happened when that row was generated using the item index [-1]. [#8422]

    astropy.wcs ^

    • Fix bug that caused WCS.has_celestial, wcs_to_celestial_frame, and other functionality depending on it to fail in the presence of correlated celestial and other axes. [#8420]

    Other Changes and Additions

    • ๐Ÿ›  Fixed make clean for the documentation on Windows to ensure it properly removes the api and generated directories. [#8346]

    • โšก๏ธ Updating bundled pytest-openfiles to v0.3.2. [#8434]

    • โš  Making ErfaWarning and ErfaError available via astropy.utils.exceptions. [#8441]

  • v2.0.11 Changes

    December 31, 2018

    ๐Ÿ› Bug Fixes ^

    • ๐Ÿ›  Fix fast reader C tokenizer to handle double quotes in quoted field. [#8283] ^

    • ๐Ÿ›  Fix a bug in io.fits with writing Fortran-ordered arrays to file objects. [#8282]

    astropy.units ^

    • โž• Add support for np.matmul as a ufunc (new in numpy 1.16). [#8264, #8305]

    astropy.utils ^

    • Fix failures caused by IERS_A_URL being unavailable by introducing IERS_A_URL_MIRROR. [#8308]