astropy v4.0 Release Notes
Release Date: 2019-12-16 // over 4 years ago-
π New Features
astropy.config ^
- The config and cache directories and the name of the config file are now
customizable. This allows affiliated packages to put their configuration
files in locations other than
CONFIG_DIR/.astropy/
. [#8237]
astropy.constants
The version of constants can be specified via ScienceState in a way that
constants
andunits
will be consistent. [#8517]0οΈβ£ Default constants now use CODATA 2018 and IAU 2015 definitions. [#8761]
Constants can be pickled and unpickled. [#9377]
astropy.convolution
- π Fixed a bug [#9168] where having a kernel defined using unitless astropy quantity objects would result in a crash [#9300]
astropy.coordinates
Changed
coordinates.solar_system_ephemeris
to also accept local files as input. The ephemeris can now be selected by either keyword (e.g. 'jpl', 'de430'), URL or file path. [#8767]β Added a
cylindrical
property toSkyCoord
for shorthand access to aCylindricalRepresentation
of the coordinate, as is already available for other common representations. [#8857]0οΈβ£ The default parameters for the
Galactocentric
frame are now controlled by aScienceState
subclass,galactocentric_frame_defaults
. New parameter sets will be added to this object periodically to keep up with ever-improved measurements of the solar position and motion. [#9346]Coordinate frame classes can now have multiple aliases by assigning a list of aliases to the class variable
name
. Any of the aliases can be used for attribute-style access or as the target oftranform_to()
calls. [#8834]β Passing a NaN to
Distance
no longer raises a warning. [#9598]
astropy.cosmology
- The pre-publication Planck 2018 cosmological parameters are included as the
Planck2018_arXiv_v2
object. Please note that the values are preliminary, and when the paper is accepted a final version will be included asPlanck18
. [#8111]
astropy.io.ascii ^
- β Removed incorrect warnings on
Overflow
when reading inFloatType
0.0 withuse_fast_converter
; synchronisedIntType
Overflow
warning messages. [#9082]
astropy.io.misc ^
π Eliminate deprecated compatibility mode when writing
Table
metadata to HDF5 format. [#8899]β Add support for orthogonal polynomial models to ASDF. [#9107]
astropy.io.fits ^
π Changed the
fitscheck
andfitsdiff
script to use theargparse
module instead ofoptparse
. [#9148]π Allow writing of
Table
objects withTime
columns that are also table indices to FITS files. [#8077]
astropy.io.votable
- π Support VOTable version 1.4. The main addition is the new element, TIMESYS, which allows defining of metadata for temporal coordinates much like COOSYS defines metadata for celestial coordinates. [#9475]
astropy.logger ^
- β Added a configuration option to specify the text encoding of the log file, with the default behavior being the platform-preferred encoding. [#9203]
astropy.modeling ^
π Major rework of modeling internals.
See modeling documentation for details. <https://docs.astropy.org/en/v4.0.x/modeling/changes_for_4.html>
_ . [#8769]β Add
Tabular1D.inverse
. [#9083]Model.rename
was changed to add the ability to renameModel.inputs
andModel.outputs
. [#9220]π New function
fix_inputs
to generate new models from others by fixing specific inputs variable values to constants. [#9135]inputs
andoutputs
are now model instance attributes, andn_inputs
andn_outputs
are class attributes. Backwards compatible default values ofinputs
andoutputs
are generated.Model.inputs
andModel.outputs
are now settable which allows renaming them on per user case. [#9298]β Add a new model representing a sequence of rotations in 3D around an arbitrary number of axes. [#9369]
β Add many of the numpy ufunc functions as models. [#9401]
β Add
BlackBody
model. [#9282]β Add
Drude1D
model. [#9452]β Added analytical King model (KingProjectedAnalytic1D). [#9084]
β Added Exponential1D and Logarithmic1D models. [#9351]
astropy.nddata ^
β Add a way for technically invalid but unambiguous units in a fits header to be parsed by
CCDData
. [#9397]NDData
now only accepts WCS objects which implement either the high, or low level APE 14 WCS API. All WCS objects are converted to a high level WCS object, soNDData.wcs
now always returns a high level APE 14 object. Not all array slices are valid for wcs objects, so some slicing operations which used to work may now fail. [#9067]
astropy.stats ^
The
biweight_location
,biweight_scale
, andbiweight_midvariance
functions now allow for theaxis
keyword to be a tuple of integers. [#9309]Added an
ignore_nan
option to thebiweight_location
,biweight_scale
, andbiweight_midvariance
functions. [#9457]A numpy
MaskedArray
can now be input to thebiweight_location
,biweight_scale
, andbiweight_midvariance
functions. [#9466]β Removed the warning related to p0 in the Bayesian blocks algorithm. The caveat related to p0 is described in the docstring for
Events
. [#9567]
astropy.table ^
π Improved the implementation of
Table.replace_column()
to provide a speed-up of 5 to 10 times for wide tables. The method can now accept any input which convertible to a column of the correct length, not justColumn
subclasses. [#8902]π Improved the implementation of
Table.add_column()
to provide a speed-up of 2 to 10 (or more) when adding a column to tables, with increasing benefit as the number of columns increases. The method can now accept any input which is convertible to a column of the correct length, not justColumn
subclasses. [#8933]π Changed the implementation of
Table.add_columns()
to use the newTable.add_column()
method. In most cases the performance is similar or slightly faster to the previous implementation. [#8933]MaskedColumn.data
will now return a plainMaskedArray
rather than the previous (unintended)masked_BaseColumn
. [#8855]β Added depth-wise stacking
dstack()
in higher level table operation. It help will in stacking table column depth-wise. [#8939]β Added a new table equality method
values_equal()
which allows comparison table values to another table, list, or value, and returns an element-by-element equality table. [#9068]β Added new
join_type='cartesian'
option to thejoin
operation. [#9288]π Allow adding a table column as a list of mixin-type objects, for instance
t['q'] = [1 * u.m, 2 * u.m]
. [#9165]π Allow table
join()
using any sortable key column (e.g. Time), not just ndarray subclasses. A column is considered sortable if there is a<column>.info.get_sortable_arrays()
method that is implemented. [#9340]β Added
Table.iterrows()
for making row-wise iteration faster. [#8969]π Allow table to be initialized with a list of dict where the dict keys are not the same in every row. The table column names are the set of all keys found in the input data, and any missing key/value pairs are turned into missing data in the table. [#9425]
β Prevent unnecessary ERFA warnings when indexing by
Time
columns. [#9545]β Added support for sorting tables which contain non-mutable mixin columns (like
SkyCoord
) for which in-place item update is not allowed. [#9549]Ensured that inserting
np.ma.masked
(or any other value with a mask) into aMaskedColumn
causes a masked entry to be inserted. [#9623]π Fixed a bug that caused an exception when initializing a
MaskedColumn
from anotherMaskedColumn
that has a structured dtype. [#9651]
β astropy.tests ^
- β
The plugin that handles the custom header in the test output has been
moved to the
pytest-astropy-header plugin
package.See the README at <https://github.com/astropy/pytest-astropy-header>
__ for information about using this new plugin. [#9214]
astropy.time ^
β Added a new time format
ymdhms
for representing times via year, month, day, hour, minute, and second attributes. [#7644]TimeDelta
gained ato_value
method, so that it becomes easier to use it wherever aQuantity
with units of time could be used. [#8762]Made scalar
Time
andTimeDelta
objects hashable based on JD, time scale, and location attributes. [#8912]π Improved error message when bad input is used to initialize a
Time
orTimeDelta
object and the format is specified. [#9296]π Allow numeric time formats to be initialized with numpy
longdouble
,Decimal
instances, and strings. One can select just one of these usingin_subfmt
. The output can be similarly set usingout_subfmt
. [#9361]Introduce a new
.to_value()
method forTime
(and adjusted the existing method forTimeDelta
) so that one can get values in a givenformat
and possiblesubfmt
(e.g.,to_value('mjd', 'str')
. [#9361]β Prevent unnecessary ERFA warnings when sorting
Time
objects. [#9545]
astropy.timeseries
- Adding
epoch_phase
,wrap_phase
andnormalize_phase
keywords toTimeSeries.fold()
to control the phase of the epoch and to return normalized phase rather than time for the folded TimeSeries. [#9455]
astropy.uncertainty
π
Distribution
was rewritten such that it deals better with subclasses. As a result, Quantity distributions now behave correctly withto
methods yielding new distributions of the kind expected for the starting distribution, andto_value
yieldingNdarrayDistribution
instances. [#9429, #9442]The
pdf_*
properties that were used to calculate statistical properties ofDistrubution
instances were changed into methods. This allows one to pass parameters such asddof
topdf_std
andpdf_var
(which generally should equal 1 instead of the default 0), and reflects that these are fairly involved calculations, not just "properties". [#9613]
astropy.units ^
π Support for unicode parsing. Currently supported are superscripts, Ohm, Γ ngstrΓΆm, and the micro-sign. [#9348]
Accept non-unit type annotations in @quantity_input. [#8984]
For numpy 1.17 and later, the new
__array_function__
protocol is used to ensure that all top-level numpy functions interact properly withQuantity
, preserving units also in operations likenp.concatenate
. [#8808]β Add equivalencies for surface brightness units to spectral_density. [#9282]
astropy.utils ^
astropy.utils.data.download_file
andastropy.utils.data.get_readable_fileobj
now provides anhttp_headers
keyword to pass in specific request headers for the download. It also now defaults to providingUser-Agent: Astropy
andAccept: */*
headers. The defaultUser-Agent
value can be set with a newastropy.data.conf.default_http_user_agent
configuration item. [#9508, #9564]β Added a new
astropy.utils.misc.unbroadcast
function which can be used to return the smallest array that can be broadcasted back to the initial array. [#9209]The specific IERS Earth rotation parameter table used for time and coordinate transformations can now be set, either in a context or per session, using
astropy.utils.iers.earth_rotation_table
. [#9244]Added
export_cache
andimport_cache
to permit transporting downloaded data to machines with no Internet connection. Several new functions are available to investigate the cache contents; e.g.,check_download_cache
can be used to confirm that the persistent cache has not become damaged. [#9182]A new
astropy.utils.iers.LeapSeconds
class has been added to track leap seconds. [#9365]
astropy.visualization
β Added a new
time_support
context manager/function for making it easy to plot and formatTime
objects in Matplotlib. [#8782]β Added support for plotting any WCS compliant with the generalized (APE 14) WCS API with WCSAxes. [#8885, #9098]
π Improved display of information when inspecting
WCSAxes.coords
. [#9098]π Improved error checking for the
slices=
argument toWCSAxes
. [#9098]β Added support for more solar frames in WCSAxes. [#9275]
β Add support for one dimensional plots to
WCSAxes
. [#9266]Add a
get_format_unit
towcsaxes.CoordinateHelper
. [#9392]0οΈβ£
WCSAxes
now, by default, sets a default label for plot axes which is the WCS physical type (and unit) for that axis. This can be disabled using thecoords[i].set_auto_axislabel(False)
or by explicitly setting an axis label. [#9392]π Fixed the display of tick labels when plotting all sky images that have a coord_wrap less than 360. [#9542]
astropy.wcs ^
Added a
astropy.wcs.wcsapi.pixel_to_pixel
function that can be used to transform pixel coordinates in one dataset with a WCS to pixel coordinates in another dataset with a different WCS. This function is designed to be efficient when the input arrays are broadcasted views of smaller arrays. [#9209]Added a
local_partial_pixel_derivatives
function that can be used to determine a matrix of partial derivatives of each world coordinate with respect to each pixel coordinate. [#9392]β‘οΈ Updated wcslib to v6.4. [#9125]
π Improved the
SlicedLowLevelWCS
class inastropy.wcs.wcsapi
to avoid storing chains of nestedSlicedLowLevelWCS
objects when applying multiple slicing operations in turn. [#9210]Added a
wcs_info_str
function toastropy.wcs.wcsapi
to show a summary of an APE-14-compliant WCS as a string. [#8546, #9207]β Added two new optional attributes to the APE 14 low-level WCS:
pixel_axis_names
andworld_axis_names
. [#9156]β‘οΈ Updated the WCS class to now correctly take and return
Time
objects in the high-level APE 14 API (e.g.pixel_to_world
. [#9376]SlicedLowLevelWCS
now raisesIndexError
rather thanValueError
on an invalid slice. [#9067]Added
fit_wcs_from_points
function toastropy.wcs.utils
. Fits a WCS object to set of matched detector/sky coordinates. [#9469]π Fix various bugs in
SlicedLowLevelWCS
when the WCS being sliced was one dimensional. [#9693]
API Changes
astropy.constants
- Deprecated
set_enabled_constants
context manager. Useastropy.physical_constants
andastropy.astronomical_constants
. [#9025]
astropy.convolution
β Removed the deprecated keyword argument
interpolate_nan
fromconvolve_fft
. [#9356]β Removed the deprecated keyword argument
stddev
fromGaussian2DKernel
. [#9356]π Deprecated and renamed
MexicanHat1DKernel
andMexicanHat2DKernel
toRickerWavelet1DKernel
andRickerWavelet2DKernel
. [#9445]
astropy.coordinates
β Removed the
recommended_units
attribute from Representations; it was deprecated since 3.0. [#8892]β Removed the deprecated frame attribute classes,
FrameAttribute
,TimeFrameAttribute
,QuantityFrameAttribute
,CartesianRepresentationFrameAttribute
; deprecated since 3.0. [#9326]β Removed
longitude
andlatitude
attributes fromEarthLocation
; deprecated since 2.0. [#9326]The
DifferentialAttribute
for frame classes now passes through any input to theallowed_classes
if only one allowed class is specified, i.e. this now allows passing a quantity in for frame attributes that useDifferentialAttribute
. [#9325]Removed the deprecated
galcen_ra
andgalcen_dec
attributes from theGalactocentric
frame. [#9346]
astropy.extern ^
- β Remove the bundled
six
module. [#8315]
astropy.io.ascii ^
- π Masked column handling has changed, see
astropy.table
entry below. [#8789]
astropy.io.misc ^
π Masked column handling has changed, see
astropy.table
entry below. [#8789]β Removed deprecated
usecPickle
kwarg fromfnunpickle
andfnpickle
. [#8890]
astropy.io.fits ^
π Masked column handling has changed, see
astropy.table
entry below. [#8789]io.fits.Header
has been made safe for subclasses for copying and slicing. As a result of this change, the private subclassCompImageHeader
now always should be passed an explicitimage_header
. [#9229]β Removed the deprecated
tolerance
option infitsdiff
andio.fits.diff
classes. [#9520]β Removed deprecated keyword arguments for
CompImageHDU
:compressionType
,tileSize
,hcompScale
,hcompSmooth
,quantizeLevel
. [#9520]
astropy.io.votable
- π Changed
pedantic
argument toverify
and change it to have three string-based options (ignore
,warn
, andexception
) instead of just being a boolean. In addition, changed default toignore
, which means that warnings will not be shown by default when loading VO tables. [#8715]
astropy.modeling ^
π Eliminates support for compound classes (but not compound instances!) [#8769]
Slicing compound models more restrictive. [#8769]
Shape of parameters now includes n_models as dimension. [#8769]
Parameter instances now hold values instead of models. [#8769]
Compound model parameters now share instance and value with constituent models. [#8769]
No longer possible to assign slices of parameter values to model parameters attribute (it is possible to replace it with a complete array). [#8769]
π Many private attributes and methods have changed (see documentation). [#8769]
π Deprecated
BlackBody1D
model andblackbody_nu
andblackbody_lambda
functions. [#9282]The deprecated
rotations.rotation_matrix_from_angle
was removed. [#9363]π Deprecated and renamed
MexicanHat1D
andMexicanHat2D
toRickerWavelet1D
andRickerWavelet2D
. [#9445]π Deprecated
modeling.utils.ExpressionTree
. [#9576]
astropy.stats ^
β Removed the
iters
keyword from sigma clipping stats functions. [#8948]π Renamed the
a
parameter todata
in biweight stat functions. [#8948]Renamed the
a
parameter todata
inmedian_absolute_deviation
. [#9011]π Renamed the
conflevel
keyword toconfidence_level
inpoisson_conf_interval
. Usage ofconflevel
now issuesAstropyDeprecationWarning
. [#9408]π Renamed the
conf
keyword toconfidence_level
inbinom_conf_interval
andbinned_binom_proportion
. Usage ofconf
now issuesAstropyDeprecationWarning
. [#9408]Renamed the
conf_lvl
keyword toconfidence_level
injackknife_stats
. Usage ofconf_lvl
now issuesAstropyDeprecationWarning
. [#9408]
astropy.table ^
The handling of masked columns in the
Table
class has changed in a way that may impact program behavior. Now aTable
withmasked=False
may contain bothColumn
andMaskedColumn
objects, and adding a masked column or row to a table no longer "upgrades" the table and columns to masked. This means that tables with masked data which are read viaTable.read()
will now always havemasked=False
, though specific columns will be masked as needed. Two new table propertieshas_masked_columns
andhas_masked_values
were added. See theMasking change in astropy 4.0 section within <https://docs.astropy.org/en/v4.0.x/table/masking.html>
_ for details. [#8789]Table operation functions such as
join
,vstack
,hstack
, etc now always return a table withmasked=False
, though the individual columns may be masked as necessary. [#8957]Changed implementation of
Table.add_column()
andTable.add_columns()
methods. Now it is possible add any object(s) which can be converted or broadcasted to a valid column for the table.Table.__setitem__
now just callsadd_column
. [#8933]π Changed default table configuration setting
replace_warnings
from['slice']
to[]
. This removes the default warning when replacing a table column that is a slice of another column. [#9144]β Removed the non-public method
astropy.table.np_utils.recarray_fromrecords
. [#9165]
β astropy.tests ^
π In addition to
DeprecationWarning
, nowFutureWarning
andImportWarning
would also be turned into exceptions. [#8506]warnings_to_ignore_by_pyver
option inenable_deprecations_as_exceptions()
has changed. Please refer to API documentation. [#8506]Default settings for
warnings_to_ignore_by_pyver
are updated to remove very old warnings that are no longer relevant and to add a new warning caused bypytest-doctestplus
. [#8506]
astropy.time ^
Time.get_ut1_utc
now uses the auto-updatedIERS_Auto
by default, instead of the bundledIERS_B
file. [#9226]Time formats that do not use
val2
now raise ValueError instead of silently ignoring a provided value. [#9373]Custom time formats can now accept floating-point types with extended precision. Existing time formats raise exceptions rather than discarding extended precision through conversion to ordinary floating-point. [#9368]
Time formats (implemented in subclasses of
TimeFormat
) now have their input and output routines more thoroughly validated, making it more difficult to create damagedTime
objects. [#9375]The
TimeDelta.to_value()
method now can also take theformat
name as its argument, in which case the value will be calculated using theTimeFormat
machinery. For this case, one can also pass asubfmt
argument to retrieve the value in another form thanfloat
. [#9361]
astropy.timeseries
- Keyword
midpoint_epoch
is renamed toepoch_time
. [#9455]
astropy.uncertainty
- π
Distribution
was rewritten such that it deals better with subclasses. As a result, Quantity distributions now behave correctly withto
methods yielding new distributions of the kind expected for the starting distribution, andto_value
yieldingNdarrayDistribution
instances. [#9442]
astropy.units ^
For consistency with
ndarray
, scalarQuantity.value
will now return a numpy scalar rather than a python one. This should help keep track of precision better, but may lead to unexpected results for the rare cases where numpy scalars behave differently than python ones (e.g., taking the square root of a negative number). [#8876]Removed the
magnitude_zero_points
module, which was deprecated in favour ofastropy.units.photometric
since 3.1. [#9353]EquivalentUnitsList
now has a_repr_html_
method to output a HTML table on a call tofind_equivalent_units
in Jupyter notebooks. [#9495]
astropy.utils ^
download_file
and related functions now accept a list of fallback sources, and they are able to update the cache at the user's request. [#9182]π Allow
astropy.utils.console.ProgressBarOrSpinner.map
and.map_unordered
to take an argumentmultiprocessing_start_method
to control how subprocesses are started; the different methods (fork
,spawn
, andforkserver
) have different implications in terms of security, efficiency, and behavioural anomalies. The option is useful in particular for cross-platform testing because Windows supports onlyspawn
while Linux defaults tofork
. [#9182]All operations that act on the astropy download cache now take an argument
pkgname
that allows one to specify which package's cache to use. [#8237, #9182]β Removed deprecated
funcsigs
andfutures
fromastropy.utils.compat
. [#8909]β Removed the deprecated
astropy.utils.compat.numpy
module. [#8910]π Deprecated
InheritDocstrings
as it is natively supported by Sphinx 1.7 or higher. [#8881]π Deprecated
astropy.utils.timer
module, which has been moved toastroquery.utils.timer
and will be part ofastroquery
0.4.0. [#9038]π Deprecated
astropy.utils.misc.set_locale
function, as it is meant for internal use only. [#9471]The implementation of
data_info.DataInfo
has changed (for a considerable performance boost). Generally, this should not affect simple subclasses, but because the class now uses__slots__
any attributes on the class have to be explicitly given a slot. [#8998]IERS
tables now usenan
to mark missing values (rather than1e20
). [#9226]
astropy.visualization
0οΈβ£ The default
clip
value is nowFalse
inImageNormalize
. [#9478]0οΈβ£ The default
clip
value is nowFalse
insimple_norm
. [#9698]Infinite values are now excluded when calculating limits in
ManualInterval
andMinMaxInterval
. They were already excluded in all other interval classes. [#9480]
π Bug Fixes
astropy.convolution
- Fixed
nan_treatment='interpolate'
option toconvolve_fft
to properly take into accountfill_value
. [#8122]
astropy.coordinates
0οΈβ£ The
QuantityAttribute
class now supports a None default value if a unit is specified. [#9345]When
Representation
classes with the same name are defined, this no longer leads to aValueError
, but instead to a warning and the removal of both from the name registry (i.e., one either has to use the class itself to set, e.g.,representation_type
, or refer to the class by its fully qualified name). [#8561]
astropy.io.fits ^
β Implemented skip (after warning) of header cards with reserved keywords in
table_to_hdu
. [#9390]Add
AstropyDeprecationWarning
toread_table_fits
whenhdu=
is selected, but does not match single present table HDU. [#9512]
astropy.io.votable
β Address issue #8995 by ignoring BINARY2 null mask bits for string values on parsing a VOTable. In this way, the reader should never create masked values for string types. [#9057]
β Corrected a spurious warning issued for the
value
attribute of the<OPTION>
element in VOTable, as well as a test that erroneously treated the warning as acceptable. [#9470]
astropy.nddata ^
Cutout2D
will now get the WCS from its first argument if that argument has with WCS property. [#9492]overlap_slices
will now raise aValueError
if the input position contains any non-finite values (e.g. NaN or inf). [#9648]
astropy.stats ^
π Fixed a bug where
bayesian_blocks
returned a single edge. [#8560]π Fixed input data type validation for
bayesian_blocks
to work int arrays. [#9513]
astropy.table ^
π Fix bug where adding a column consisting of a list of masked arrays was dropping the masks. [#9048]
Quantity
columns with custom units can now round-trip via FITS tables, as long as the custom unit is enabled during reading (otherwise, the unit will become anUnrecognizedUnit
). [#9015]π Fix bug where string values could be truncated when inserting into a
Column
orMaskedColumn
, or when adding or inserting a row containing string values. [#9559]
astropy.time ^
π Fix bug when
Time
object is created with only masked elements. [#9624]π Fix inaccuracy when converting between TimeDelta and datetime.timedelta. [#9679]
astropy.units ^
- β
Ensure that output from test functions of and comparisons between quantities
can be stored into pre-allocated output arrays (using
out=array
) [#9273]
astropy.utils ^
- 0οΈβ£ For the default
IERS_Auto
table, which combines IERS A and B values, the IERS nutation parameters "dX_2000A" and "dY_2000A" are now also taken from the actual IERS B file rather than from the B values stored in the IERS A file. Any differences should be negligible for any practical application, but this may help exactly reproducing results. [#9237]
astropy.visualization
Calling
WCSAxes.set_axis_off()
now correctly turns off drawing the Axes. [#9411]π Fix incorrect transformation behavior in
WCSAxes.plot_coord
and correctly handle when input coordinates are not already in spherical representations. [#8927]π Fixed
ImageNormalize
so that when it is initialized withoutdata
it will still use the inputinterval
class. [#9698]π Fixed
ImageNormalize
to handle input data with non-finite values. [#9698]
astropy.wcs ^
π Fix incorrect value returned by
wcsapi.HighLevelWCSWrapper.axis_correlation_matrix
. [#9554]π Fix NaN-masking of world coordinates when some but not all of the coordinates were flagged as invalid by WCSLIB. This occurred for example with WCS with >2 dimensions where two of the dimensions were celestial coordinates and pixel coordinates outside of the 'sky' were converted to world coordinates - previously all world coordinates were masked even if uncorrelated with the celestial axes, but this is no longer the case. [#9688]
0οΈβ£ The default WCS to celestial frame mapping for world coordinate systems that specify
TLON
andTLAT
coordinates will now return an ITRS frame with the representation class set toSphericalRepresentation
. This fixes a bug that causedWCS.pixel_to_world
to raise an error for such world coordinate systems. [#9609]FITSWCSAPIMixin
now returns tuples not lists frompixel_to_world
andworld_to_pixel
. [#9678]
Other Changes and Additions
π Versions of Python <3.6 are no longer supported. [#8955]
Matplotlib 2.1 and later is now required. [#8787]
π Versions of Numpy <1.16 are no longer supported. [#9292]
β‘οΈ Updated the bundled CFITSIO library to 3.470. See
cextern/cfitsio/docs/changes.txt
for additional information. [#9233]β‘οΈ The bundled ERFA was updated to version 1.7.0. This is based on SOFA 20190722. This includes a fix to avoid precision loss for negative JDs, and also includes additional routines to allow updates to the leap-second table. [#9323, #9734]
β‘οΈ The default server for the IERS data files has been updated to reflect long-term downtime of the canonical USNO server. [#9487, #9508]
- The config and cache directories and the name of the config file are now
customizable. This allows affiliated packages to put their configuration
files in locations other than