fix(deps): update dependency astropy to v7 #16
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
6.1.7->7.2.0Release Notes
astropy/astropy (astropy)
v7.2.0Compare Source
==========================
New Features
astropy.constants
^^^^^^^^^^^^^^^^^
Added CODATA 2022 support in
astropy.constants.This update affects the following constants while the rest are unchanged from CODATA 2018:
m_p(Proton mass)m_n(Neutron mass)m_e(Electron mass)u(Atomic mass)eps0(Vacuum electric permittivity)Ryd(Rydberg constant)a0(Bohr radius)muB(Bohr magneton)alpha(Fine-structure constant)mu0(Vacuum magnetic permeability)sigma_T(Thomson scattering cross-section) [#18118]astropy.coordinates
^^^^^^^^^^^^^^^^^^^
Allow
np.concatenate,np.stackand similar numpy functions tobe applied on representations and differentials.
They can also be applied to coordinate frames and
SkyCoord, thoughwith the same limitation as for setting elements of frames and
coordinates: all frame attributes have to be scalars (or arrays with
only identical elements). [#18193]
The results of
match_coordinates_3d(),match_coordinates_sky(),search_around_3d()andsearch_around_sky()and the correspondingSkyCoordmethods now have named attributes. [#18459]astropy.cosmology
^^^^^^^^^^^^^^^^^
The trait
astropy.cosmology.traits.CurvatureComponenthas been added to work withobjects that have attributes and methods related to the global curvature. [#18232]
The trait
astropy.cosmology.traits.HubbleParameterhas been added to work with objects that have attributes and methods related to the Hubble parameter. [#18271]The trait
astropy.cosmology.traits.DarkEnergyComponenthas been added to work with objects that have attributes and methods related to the Dark Energy component. [#18447]Cosmology methods now exclusively return arrays, not floats or other scalars. [#18632]
The trait
astropy.cosmology.traits.DarkMatterComponenthas been added to work withobjects that have attributes and methods related to dark matter. [#18760]
The trait
astropy.cosmology.traits.MatterComponenthas been added to work withobjects that have attributes and methods related to matter density.
The trait
astropy.cosmology.traits.BaryonComponenthas been added to work withobjects that have attributes and methods related to baryonic matter.
The trait
astropy.cosmology.traits.CriticalDensityhas been added to work withobjects that have attributes and methods related to the critical density. [#18769]
The trait
astropy.cosmology.traits.PhotonComponenthas been added to work with objects that have attributes and methods related to photons. [#18787]The trait
astropy.cosmology.traits.TotalComponenthas been added to work with objects that have attributes and methods related to the total density component of the universe. [#18794]astropy.io.ascii
^^^^^^^^^^^^^^^^
astropy.io.fits
^^^^^^^^^^^^^^^
Enable color and suggestion-on-typos in all
argparseCLIs for Python 3.14(
fitscheck,fitsdiff,fitsheaderandfitsinfo). [#18151]Allow reading a FITS file hosted on a cloud resource like Amazon S3 via
Table.read(). This is done with a newfsspec_kwargsdict argumentthat gets passed through to
fsspecto access cloud resources. [#18379]It is now possible to check the existence of
ColumnsinColDefsby using the membership operator. [#18717]astropy.io.misc
^^^^^^^^^^^^^^^
Added a new ECSV table reading module that supports different backend engines for the
CSV data parsing. In addition to the default "io.ascii" engine, this includes engines
that use the PyArrow and Pandas CSV readers. These can be up to 16 times faster and are
more memory efficient than the native astropy ECSV reader. To get help with this
interface run
Table.read.help(format="ecsv"). [#18267]Improve support for compressed file formats in the ECSV and the pyarrow CSV
Table readers. All formats supported by
astropy.utils.data.get_readable_fileobj()(currently gzip, bzip2, lzma (xz) or lzw (Z)) will now work with these readers. [#18712]
astropy.io.registry
^^^^^^^^^^^^^^^^^^^
Tableto a FITS file, e.g.tbl.write("filename.fits", name="CAT", append=True). [#18470]astropy.io.votable
^^^^^^^^^^^^^^^^^^
Enable color and suggestion-on-typos in
volintCLI for Python 3.14 [#18151]Modified the constructor for
astropy.io.votable.tree.TableElementto use the version configuration information from the parentVOTableFileinstance. This allows for better handling of version-specific features and ensures that the table element is created with the correct context regarding the VOTable version. [#18366]astropy.modeling
^^^^^^^^^^^^^^^^
|(model composition) operator,using either
~astropy.modeling.compose_models_with_unitsor by setting theunit_change_compositionattribute on the model after composition. [#17304]astropy.nddata
^^^^^^^^^^^^^^
interpret_bit_flagsfunction now strips whitespace from flag names. [#18205]astropy.samp
^^^^^^^^^^^^
samp_hubCLI for Python 3.14 [#18151]astropy.table
^^^^^^^^^^^^^
Enable color and suggestion-on-typos in
showtableCLI for Python 3.14 [#18151]Added generic
from_dfandto_dfmethods toastropy.Tableusingnarwhals. These methods provide a unified interface for converting betweenAstropy Tables and various DataFrame formats (pandas, polars, pyarrow, etc.)
through the narwhals library. The
to_dfmethod converts an Astropy Tableto any supported DataFrame format, while
from_dfcreates an Astropy Tablefrom any narwhals-compatible DataFrame. Narwhals is a lightweight compatibility
layer that provides a unified API across different DataFrame libraries, allowing
seamless interoperability without requiring all DataFrame libraries as dependencies. [#18435]
Setting the
unitsordescriptionsofQTableandTablehas been made more flexible for tables with optional columns that may
or may not appear in the data. This applies to directly creating a table
as well as reading formatted data with the
read()method.In both cases you can supply
unitsanddescriptionarguments as adictthat specifies the units and descriptions for column names inthe table. Previously, if the input table did not contain a column that
was specified in the
unitsordescriptiondict, aValueErrorwas raised. Now, such columns are simply ignored. [#18641]
A new method has been added for accessing a table index for tables with multiple
indices. You can now select the index with the
with_index(index_id)method of the.loc,.iloc, and.loc_indicesproperties. For example, for a tabletwhich has two indices on columns
"a"and"b"respectively,t.loc.with_index("b")[2]will use index"b"to find all the table rows wheret["b"] == 2. Doing this query using the previous syntaxt.loc["b", 2]isdeprecated and this functionality is planned for removal in astropy 9.0.
In addition, support has been added for using
.loc,.iloc, and.loc_indiceswith an index based on two or more key columns. Previously this raised a
ValueError. [#18680]astropy.time
^^^^^^^^^^^^
Allow
np.concatenate,np.stackand similar numpy functions tobe applied on
TimeandTimeDeltainstances. [#18193]Add a new time format
galexfor the GALEX satellite.In GALEX data, due to uncertainty in the spacecraft clock, the absolute time is only accurate to
about 1-10 seconds while the relative time within an observation is better than 0.005 s or so,
except on days with leap seconds, where relative times can be wrong by up to 1 s.
See question 101.2 in https://www.galex.caltech.edu/researcher/faq.html [#18330]
astropy.units
^^^^^^^^^^^^^
emits a warning.
The new
deprecationsparameter of the unitto_string()methods allowsautomatically converting deprecated units (if possible), silencing the warnings
or raising them as errors instead. [#18586]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
Enable color and suggestion-on-typos in
fits2bitmapCLI for Python 3.14 [#18151]Added
show_decimal_unittoset_major_formatterto control whetheror not units are shown in decimal mode. [#18312]
Added the methods
set_visible()andset_position()to control the visibility and position of ticks, tick labels, and axis labels in a single call.Also added
get_ticks_visible(),get_ticklabel_visible(), andget_axislabel_visible()methods to get the visibility state of each coordinate element. [#18443]Added an image interval option (
SymmetricInterval) for specifying asymmetric extent about a midpoint, and the extent that contains both the image
minimum and maximum can be automatically determined. [#18602]
astropy.wcs
^^^^^^^^^^^
Enable color and suggestion-on-typos in all
wcslintCLI for Python 3.14 [#18151]Added a
perserve_unitskeyword argument toWCSto optionally requestthat units are not converted to SI (the default behavior is for celestial axes
to have units converted to degrees, and spectral axes to m or Hz). [#18338]
API Changes
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
The functionality of
astropy.coordinates.concatenateandastropy.coordinates.concatenate_representationsis now available usingnp.concatenate. Hence, these functions are being deprecated, emitting anAstropyPendingDeprecationWarningstarting with astropy 7.2. This will befollowed by a regular deprecation warning in astropy 8.0, and removal in 9.0. [#18193]
The
matrix_utilitiesmodule was not included in theastropyAPIdocumentation, but it was nonetheless explicitly referred to in some of the
other documentation.
This made it unclear if the functions in the module are public or private.
The public matrix utilities
is_rotation_or_reflection()androtation_matrix()have been made available from theastropy.coordinatesnamespace and should be imported from there.
Functions not available from the
astropy.coordinatenamespace are privateand may be changed or removed without warning.
However, three functions have been explicitly deprecated, despite being
private, as a courtesy to existing users.
matrix_utilites.angle_axis()andmatrix_utilites.is_rotation()aredeprecated without replacement.
matrix_utilities.is_O3()is deprecated and the publicis_rotation_or_reflection()function can be used as a replacement. [#18418]The undocumented
earth_orientationmodule has been removed. [#18638]astropyprefers reading data required forEarthLocation.of_site()froma local cache and tries downloading (and caching) the data from the Internet if
the cache is empty.
As a last resort
astropyhas so far read a small bundled data file thatprovided data for Greenwich as the single entry, but now
astropywill raisean error. [#18649]
astropy.io.registry
^^^^^^^^^^^^^^^^^^^
UnifiedInputRegistryandUnifiedOutputRegistry'sdelay_doc_updatesmethod's effect is disabled under Python's optimized mode (
-OOflag). [#17572]astropy.io.votable
^^^^^^^^^^^^^^^^^^
configproperty toastropy.io.votable.tree.VOTableFile.This property can be passed to the
configparameter of constructors that need to know the associated VOTable version, such asTimeSysandCooSys. [#18366]astropy.table
^^^^^^^^^^^^^
Add additional detail to the text of the
ValueErrorthat is raised whenpprintcannot parse a column format string. [#17631]Selecting a table index in the
.loc,.iloc, or.loc_indicesproperties bypassing the index identifier as the first element of the item is deprecated and is
planned for removal in astropy 9.0. For example, if a table
thas two indices oncolumns
"a"and"b"respectively, thent.loc["b", 2](to find table rowswhere
t["b"] == 2) is deprecated. This is replaced byt.loc.with_index("b")[2]. [#18680]astropy.tests
^^^^^^^^^^^^^
API changes towards a future deprecation of astropy test runner:
astropy.tests.runner.keywordis removed from public API.It is used internally as a decorator within astropy test runner and
its exposure as public API was a mistake. In the future, it will be
removed without any deprecation.
astropy.test,astropy.tests.runner.TestRunnerBase, andastropy.tests.runner.TestRunnerare now pending deprecation (
AstropyPendingDeprecationWarning).This will also affect downstream
packagename.testgenerated usingTestRunner.They may start to emit
AstropyDeprecationWarningin v8.0 (but no earlier). [#17874]astropy.utils
^^^^^^^^^^^^^
The
isiterable()utility is deprecated.numpy.iterable()can be used as a drop-in replacement. [#18053]astropy.utils.metadata.MergeStrategyno longer modifies themerge()methods of its subclasses at runtime to re-raise all exceptions as
MergeConflictError.This does not affect the functionality of
MergeStrategysubclasses withinthe
astropymetadata merging machinery. [#18518]astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
A warning is now emitted for each axis name which is
invalid in
set_ticklabel_position,set_axislabel_position,and
set_ticks_position. This is a deprecation warning,and in future invalid axis names will result in an error. [#18324]
A warning is now emitted if arguments are given to the getter method
get_axislabel_visibility_rule. This is a deprecation warning, and infuture, giving arguments to this method will result in an error. [#18792]
Bug Fixes
astropy.config
^^^^^^^^^^^^^^
get_config_dir()andget_cache_dir()now emit warnings in all caseswhere the
XDG_CACHE_HOME(XDG_CONFIG_HOME, respectively) environmentvariable doesn't meet internal assumptions and is ignored as a result. [#17934]
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
angleargument of therotation_matrix()function can now be anyangle-like value, like its docstring states.
Previously some angle-like values (e.g. angle-like strings) were erroneously
rejected. [#18504]
astropy.io.fits
^^^^^^^^^^^^^^^
Fix bug with heap which was not updated after a VLA column is modified. [#18487]
Make
fitscheckverify all HDUs before listing errors. [#18574]Fix calculation of DATASUM/CHECKSUM for heap data in
BinTableHDU. [#18681]Fixed a bug in
fitsdiffscript where failing to read a single file couldcrash the entire program. A warning is now printed instead, and such files
are simply ignored. [#18882]
astropy.io.misc
^^^^^^^^^^^^^^^
contains a value that is a numpy string. [#18677]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
Updated IVOA UCD1+ controlled vocabulary from version 1.5 to 1.6. This adds
support for new atmospheric observation terms including
obs.atmos.wind,obs.atmos.humidity,obs.atmos.rain,obs.atmos.turbulence,obs.atmos.turbulence.isoplanatic,obs.atmos.water, andphys.temperature.dewwhich are now recognized when parsing UCDs withcheck_controlled_vocabulary=True. [#18483]Fixed a bug in
add_data_origin_info()wherecontentis ignored for some INFO names. [#18771]astropy.modeling
^^^^^^^^^^^^^^^^
modeling.tabularmodels when thelookup_tableis a Quantity, where the result might lose its unit in some cases. [#18958]astropy.nddata
^^^^^^^^^^^^^^
Fixed unexpected upcasting to 64 bits when doing arithmetic with Python scalars
on
numpy2.Don't upcast
NDDataunnecessarily when doing arithmetic involving a singleunit (consistent with the behaviour when there are no units). Upcasting still
occurs if an operand's unit gets converted to match the other, or where
required by the other operand's dtype. [#18392]
astropy.samp
^^^^^^^^^^^^
SAMPHubServer._call_and_waitraises a newSAMPProxyTimeoutError(derived fromSAMPProxyError) exception on timeout.This allows client code to more easily distinguish timeouts from other kind of exceptions. [#18169]
astropy.stats
^^^^^^^^^^^^^
poisson_conf_intervalkraft-burrows-nousekno longer fails for large N. [#18676]astropy.table
^^^^^^^^^^^^^
Fix a bug when slicing a table that has a multi-column index. Previously, after slicing
the table then
tbl.indiceswould show duplicates of the multi-column index, one foreach column in the index. The underlying indices on the index columns were incorrectly
distinct objects instead of the expected reference to a single index object. [#18694]
Fix bugs when indexing a
QTablewith aQuantitycolumn. Previously, after addingthe index then indexed item access via with a
Quantityor slicing was failing. [#18725]Fix a bug where the ECSV writer was not correctly quoting column names if the first name
starts with the "#" character or any names contain leading/trailing whitespace. In this
situation, all column names are now surrounded by double quotes per the ECSV standard.
Likewise the ECSV reader was incorrectly stripping surrounding whitespace from column
names, leading to a consistency check failure when reading. [#18752]
Fixed a bug when writing
Tableto FITS files, if the table contained masked arrays of integers. [#18818]astropy.units
^^^^^^^^^^^^^
The string representations of the liter with the different
astropyunitformatters are now more consistent with each other.
This change only affects converting units to strings, it has no effect on
parsing strings to units. [#18500]
So far only the
"cds"unit format has been capable of parsing the string"as"as the attosecond, but now the other unit formats recognize thatstring too. [#18723]
The
"ogip"unit formatter can now parse strings that include signedfractions in the exponent, e.g.
u.Unit("m**(-1/2)", format="ogip"). [#18776]astropy.utils
^^^^^^^^^^^^^
If
numpy.msort()is called with aMaskedarray thenastropynolonger erroneously hides the deprecation warning (with
numpyversions1.24-1.26). [#18173]
For
numpy < 2.0, applyingnp.atleast_*dto iterables of most astropyclasses will now return a list of instances instead of a tuple, to match the
behaviour for arrays. For numpy >= 2.0, tuples continue to be returned. [#18193]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
ImageNormalizeinstance could be ignored when plotting. [#18590]
astropy.wcs
^^^^^^^^^^^
Other Changes and Additions
The minimum required NumPy version is now 1.24. [#18160]
The minimum required Matplotlib version is now 3.8.0. [#18164]
Bundled
expatis updated to version 2.7.3. [#18657]Updated the bundled CFITSIO library to 4.6.3. [#18689]
Wheels are now provided for Windows arm64. [#18786]
v7.1.1Compare Source
==========================
Bug Fixes
astropy.io.fits
^^^^^^^^^^^^^^^
Writing zero-row BinTableHDU with string columns no longer raises a broadcast error in _ascii_encode() [#18230]
Compute maximum absolute and relative differences reported by
ImageDataDiffon the full arrays instead of only a few values. [#18451]
Fix slicing FITS compressed file with
.sectionwhen data is scaled. [#18640]astropy.io.misc
^^^^^^^^^^^^^^^
an exception when saving a
SkyCoordobject in particular frames likegalactocentricin which frame attributes are themselves a frame. [#18526]astropy.io.votable
^^^^^^^^^^^^^^^^^^
astropy.nddata
^^^^^^^^^^^^^^
Fixed key error with numpy functions
np.min,np.max,np.mean, andnp.sum. [#18424]Fix partial cutouts with FITS compressed file and scaled data. [#18640]
astropy.table
^^^^^^^^^^^^^
Fixed a bug in
table.table_helpers.ArrayWrapperwhere byteorder of theunderlying data was not necessarily preserved through roundtrips. [#18139]
Fix bug #10732 where removing rows on an indexed table that was subsequently sliced
(e.g.
t.add_index("a"); ts = t[1:5]; ts.remove_row(2)) was giving incorrect resultsor failing. [#18511]
astropy.time
^^^^^^^^^^^^
Timeworks also with numpy 2.3.0, fixinga bug in our implementation which had no effect in previous numpy versions. [#18265]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
aggregate_downsampleperformance degradation whennon-default
aggregate_funcis used. [#18188]astropy.units
^^^^^^^^^^^^^
DexUnitinastropy.units,and thus also how it is represented in, e.g., jupyter notebooks. [#18627]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
Fix a bug that caused
WCSAxes.get_transformto not return the correcttransform when using WCS instances with celestial axes that were not in
degrees. [#18311]
Fixed a bug that under certain conditions could lead to ticks being incorrectly
labelled with a single "$" dollar sign in WCSAxes. [#18313]
Fixed WCSAxes.get_transform() in the case of 1D WCS [#18327]
Fixed a bug that caused the default format unit to be incorrect for RA/Dec WCSes with non-degree units [#18346]
Fix a bug where the units of the
values=keyword argument toset_tickswas not respected. [#18577]astropy.wcs
^^^^^^^^^^^
Fixed an issue which caused calls to WCS coordinate conversion routines to not be thread-safe due to calls to WCS.wcs.set() from multiple threads. [#16411]
Fix a bug that caused the output of
WCS.wcs.print_contents()to be truncatedand to then cause the output of subsequent
print_contents()calls (onWCS.wcsor other wcs objects such asWCS.wcs.wtb) to be corrupted. [#18350]Fixed a bug in
WCS.pixel_to_worldfor spectral WCS whererestfrqwasdefined but CTYPE was
VOPT, and likewise whererestwavwas defined butCTYPE was
VRAD. [#18352]Fixed a bug where world->pixel conversions did not work correctly on a 1D WCS
sliced via
SlicedLowLevelWCS. [#18394]Fixed a bug that caused slicing of WCS objects with an ellipsis to not return a WCS
object but instead a SlicedLowLevelWCS object. [#18417]
Fixed a bug in
wcs.pythat caused the WCS object to not properly initializethe
_naxisattribute when the header was empty or did not contain any WCSinformation. This could lead to crashes when attempting to take a slice of a 3D
WCS object or it could lead unexpected behavior when accessing pixel shape
or other properties that depend on the number of axes. [#18419]
Fixed a race condition when using the APE-14 API for the
WCSclass in a multi-threaded environment. [#18692]Performance Improvements
astropy.modeling
^^^^^^^^^^^^^^^^
modeling.rotations.spherical2cartesian()by 11-18% depending on the size of the input data arrays. [#18238]Other Changes and Additions
Fixed errors with building the package from source on Windows via
python -m buildand similar commands. [#18253]Pre-built binaries (wheels) for Linux are now built using the
manylinux_2_28image (previously,
manylinux2014was used). [#18374]v7.1.0Compare Source
==========================
New Features
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
search_around_skyandsearch_around_3Dnow accept separations/distlimitsbroadcastable to the same shape as
coords1. [#17824]astropy.io.ascii
^^^^^^^^^^^^^^^^
Add functionality to read and write to a Table from the TDAT format as part of
the Unified File Read/Write Interface. [#16780]
io.asciinow supports on-the-fly decompression of LZW-compressed files(typically ".Z" extension) via the optional package uncompresspy. [#17960]
astropy.io.fits
^^^^^^^^^^^^^^^
Astropy can now not only read but also write headers that have
HIERARCHkeys with long values, by allowing the use of
CONTINUEcards for those(as was already the case for regular FITS keys). [#17748]
Add
strip_spacesoption toTable.readto strip trailing whitespaces instring columns. This will be activated by default in the next major release. [#17777]
io.fitsnow supports on-the-fly decompression of LZW-compressed files(typically ".Z" extension) via the optional package uncompresspy. [#17960]
io.fitsnow supports on-the-fly decompression of LZMA-compressed files(typically ".xz" extension) if the lzma module is provided by the Python
installation. [#17968]
astropy.io.misc
^^^^^^^^^^^^^^^
TableCSV reader that uses the PyArrowread_csv()function. This canbe significantly faster and more memory-efficient than the
astropy.io.asciifastreader. This new reader can be used with
Table.read()by settingformat="pyarrow.csv". [#17706]astropy.io.votable
^^^^^^^^^^^^^^^^^^
New module
astropy.io.votable.dataoriginto extract Data Origin information from INFO in VOTable. [#17839]CooSysVOTable elements now have a methodto_astropy_framethat returns thecorresponding astropy built-in frame, when possible. [#17999]
astropy.modeling
^^^^^^^^^^^^^^^^
fit_info=keyword argument toparallel_fit_daskto allow users to preserve fit information from each individual fit. [#17538]astropy.nddata
^^^^^^^^^^^^^^
Adds a utility class,
astropy.nddata.Covariance, used to construct, access,and store covariance matrices. The class depends on use of the
scipy.sparsemodule. [#16690]
Add the
limit_rounding_methodparameter to~astropy.nddata.Cutout2D,~astropy.nddata.overlap_slices,~astropy.nddata.extract_array, and~astropy.nddata.add_arrayto allow users to specify the rounding methodused when calculating the pixel limits of the cutout. The default method
is to use
~numpy.ceil. [#17876]astropy.table
^^^^^^^^^^^^^
Table.group_by's underlying sorting algorithm is guaranteedto be stable. This reflects behavior that was already present but undocumented,
at least since astropy 6.0 . [#17676]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
MaskedColumnandMaskedQuantitywith possibly masked elements. Furthermore, the type of(Masked) column will now be properly preserved in downsampling. [#18023]
astropy.units
^^^^^^^^^^^^^
Units with the "micro" prefix can now be imported using
"μ"in the name.For example, the microgram can now be imported with
from astropy.units import μg. [#17651]It is now possible to import angström, litre and ohm from
astropy.unitsusing the
Å,ℓandΩsymbols. [#17829]Unit conversions between kelvins and degrees Rankine no longer require the
temperatureequivalency. [#17985]astropy.utils
^^^^^^^^^^^^^
Make commonly used Masked subclasses importable for ASDF support.
Registered types associated with ASDF converters must be importable by
their fully qualified name. Masked classes are dynamically created and have
apparent names like
astropy.utils.masked.core.MaskedQuantityalthoughthey aren't actually attributes of this module. Customize module attribute
lookup so that certain commonly used Masked classes are importable.
See:
astropy.utils.data.download_filecan now recover from aTimeoutErrorwhen given a list of alternative source URLs. Previously, only
URLErrorexceptions were recoverable. An exception is still being raised after trying all
URLs provided if none of them could be reached. [#17691]
utils.datanow supports on-the-fly decompression of LZW-compressed files(typically ".Z" extension) via the optional package uncompresspy. [#17960]
API Changes
astropy.coordinates
^^^^^^^^^^^^^^^^^^^
get_namehas been deprecated in favor of the class-levelattribute
name. The method will be removed in a future release. [#17503]astropy.cosmology
^^^^^^^^^^^^^^^^^
A new public module,
astropy.cosmology.io, has been added to provide supportfor reading, writing, and converting cosmology instances.
The private modules
astropy.cosmology.funcs,astropy.cosmology.parameter,astropy.cosmology.connect,astropy.cosmology.core, andastropy.cosmology.flrwhave been deprecated.Their functionality remains accessible in the
astropy.cosmologymodule or inthe new
astropy.cosmology.iomodule. [#17543]Comoving distances now accept an optional 2nd argument, where the two-argument form is
the comoving distance between two redshifts. The one-argument form is the comoving
distance from redshift 0 to the input redshift. [#17701]
A new public module,
astropy.cosmology.traits, has been added to provide buildingblocks for custom cosmologies. The currently available traits are:
astropy.cosmology.traits.ScaleFactorastropy.cosmology.traits.TemperatureCMB[#17702]astropy.extern
^^^^^^^^^^^^^^
interactive (e.g. sorting by column values) tables using the
show_in_browser()method.
This bundling requires relatively large files in astropy itself, for a relatively minor feature.
Furthermore, the astropy developers are not experts in javascript development, and
javascript libraries many need updates to improve on security vulnerabilities.
This change removes the bundled versions of jQuery and DataTables from astropy,
updates the default version of the remote URLs to version 2.1.8 of DataTables, and
sets the default for
show_in_browser(use_local_files=False)to use the remote versionsin all cases. If the method is called with
use_local_files=True, a warning isdisplayed and remote version are used anyway.
This may break the use of the method when working offline, unless the javascript
files are cached by the browser from a previous online session. [#17521]
astropy.table
^^^^^^^^^^^^^
showtableCLI is now deprecated to avoid a name clash on Debian; useshowtable-astropyinstead. [#18047]Fix issues in the handling of a call like
tbl.loc[item]ortbl.loc_indices[item]and make the behavior consistent with pandas. Here
tblis aTableorQTablewith an index defined.
If
itemis an empty list or zero-lengthnp.ndarrayor an empty slice, thenpreviously
tbl.loc[item]would raise aKeyErrorexception. Now it returns thezero-length table
tbl[[]].If
itemis a one-element list like["foo"], then previouslytbl.loc[item]would return either aRowor aTablewith multiple row,depending on whether the index was unique. Now it always returns a
Table, consistentwith behavior for
tbl.loc[[]]andtbl.loc[["foo", "bar"]].See #18051 for more details. [#18051]
astropy.units
^^^^^^^^^^^^^
Passing
fraction='multiline'tounit.to_string()will no longer raisean exception if the given format does not support multiline fractions, but
rather give a warning and use an inline fraction. [#17374]
Automatic conversion of a
strorbytesinstance to a unit when it ismultiplied or divided with an existing unit or quantity is deprecated. [#17586]
Accessing the contents of the
units.deprecatedmodule now emits deprecationwarnings.
The module may be removed in a future version. [#17929]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
simple_normare marked as future keyword-only, with theexception of the first two (
dataandstretch).A warning is now displayed if any other arguments are passed positionally. [#17489]
Bug Fixes
astropy.io.fits
^^^^^^^^^^^^^^^
astropy.io.votable
^^^^^^^^^^^^^^^^^^
CooSyselements, the system was not checked for votable version 1.5 [#17999]astropy.samp
^^^^^^^^^^^^
samp_hubcommand line.Previously,
samp_hub --log-level OFFwas documented as supported but actually caused an exception to be raised.The patch infers valid choices from the standard library's
loggingmodule.A
CRITICALlevel will closely emulate the intendedOFFsetting. [#17673]astropy.table
^^^^^^^^^^^^^
Initializing a Table with
rowsordataset to[]or a numpy array withzero size (e.g.,
np.array([[], []])) is now equivalent toTable(data=None, ...)and creates a table with no data values. This allowsdefining the table names and/or dtype when creating the table, for instance:
Table(rows=[], names=["a", "b"], dtype=[int, float]). Previously thisraised an exception. [#17717]
Fix issues in the handling of a call like
tbl.loc[item]ortbl.loc_indices[item]and make the behavior consistent with pandas. Here
tblis aTableorQTablewith an index defined.
If
itemis an empty list or zero-lengthnp.ndarrayor an empty slice, thenpreviously
tbl.loc[item]would raise aKeyErrorexception. Now it returns thezero-length table
tbl[[]].If
itemis a one-element list like["foo"], then previouslytbl.loc[item]would return either aRowor aTablewith multiple row,depending on whether the index was unique. Now it always returns a
Table, consistentwith behavior for
tbl.loc[[]]andtbl.loc[["foo", "bar"]].See #18051 for more details. [#18051]
astropy.timeseries
^^^^^^^^^^^^^^^^^^
TimeSeries.from_pandasandBinnedTimeSeries.readmore robust tosubclassing. [#17351]
astropy.units
^^^^^^^^^^^^^
For the Angstrom unit in the CDS module,
u.cds.Angstrom, the stringrepresentation is now "Angstrom" (instead of "AA"), consistent with what was
always the case for
u.Angstrom, and conformant with the CDS standard. [#17536]Previously the string representation of the
solMassunit in the"cds"format depended on whether the unit was imported directly from
unitsorfrom
units.cds.Although both representations were valid according to the CDS standard, the
inconsistency was nonetheless needlessly surprising.
The representation of
units.cds.solMasshas been changed to match therepresentation of
units.solMass. [#17560]The degrees Rankine is now represented as "$\mathrm{{}^{\circ}R}$" in the
"latex"and"latex_inline"formats and as "°R" in the"unicode"format. [#18049]
astropy.utils
^^^^^^^^^^^^^
utils.data. [#17984]astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
plot_coordafter slicing theWCSobject coordinates. [#18005]Performance Improvements
astropy.timeseries
^^^^^^^^^^^^^^^^^^
aggregate_downsampleperformance using a new defaultaggregate_func. [#17574]astropy.units
^^^^^^^^^^^^^
Converting strings to units with
Unit()is now up to 225% faster. [#17399]UnitBase.compose()is now 20% faster. [#17425]Other Changes and Additions
After
import astropy,dir(astropy)will now list all subpackages,including those that have not yet been loaded. This also means tab
completion will work as expected (e.g.,
from astropy.coo<TAB>willexpand to
from astropy.coordinates). [#17598]Updated bundled WCSLIB version to 8.4, fixing issues in
wcs_chksumand
wcs_fletcher32. For a full list of changes - seeastropy/cextern/wcslib/CHANGES. [#17886]v7.0.2Compare Source
==========================
Bug Fixes
astropy.config
^^^^^^^^^^^^^^
astropy.config.ConfigNamespace. [#18107]astropy.io.fits
^^^^^^^^^^^^^^^
Fix a bug in
nddata.Cutout2Dwhen creating partial cutouts ofSectionobjects by adding adtypeproperty to theSectionclass. [#17611]Fixed a bug so that now the scaling state from the source HDU to the new appended HDU is copied on the
destination file, when the HDU is read with
do_not_scale_image_data=True. [#17642]Fix setting a slice on table rows (
FITS_record). [#17737]Fix checksum computation for tables with VLA columns, when table is loaded in
memory. [#17806]
Fix
.fileinfo()for compressed HDUs. [#17815]Fix FITS_rec repr when a column has scaling factors, leading to a crash with
numpy>=2.0. [#17933]
Fixed a bug that caused THEAP, ZBLANK, ZSCALE, and ZZERO to not be correctly
removed during decompression of tile-compressed FITS files. [#18072]
astropy.io.votable
^^^^^^^^^^^^^^^^^^
astropyv7.0.0 erroneously refused to write a VOTable if it contained units thatcould not be represented in the CDS format.
Now
astropycorrectly chooses the unit format based on the VOTable version.The bug in question did not cause any corruption in tables that were successfully
written because the newer VOUnit format is backwards compatible with the CDS format.
Furthermore, any unit that is in neither formats would still be written out
but would issue a warning. [#17570]
unicodeCharfields can now be of bounded variable size (arraysize="10*). [#18075]astropy.modeling
^^^^^^^^^^^^^^^^
filter_non_finiteoption was not workingfor 2D models. An error is raised when the
filter_non_finiteoptionis set to
Trueand all values are non-finite. [#17869]astropy.stats
^^^^^^^^^^^^^
bayesian_blocks(t, x, fitness="events")correctly handles the casewhen the input data
xcontains zeros. [#17800]astropy.table
^^^^^^^^^^^^^
Prevent corrupting a column by mutating its name to an invalid type.
A
TypeErroris now raised when a name is set to anything other than astring. [#17450]
Fix a bug in creating a
Tablefrom a list of rows that dropped the unitsof non-scalar Quantity, e.g.,
Table(rows=[([1] * u.m,), ([2] * u.m,)]). [#17936]astropy.units
^^^^^^^^^^^^^
Ensured that the units of
yp,refaandrefbare properlytaken into account when calling
erfa.apio(previously, theconversion required for
xpwas applied to those inputs too). [#17742]The machinery that injects units into a namespace (used e.g. by
def_unit())now applies NFKC normalization to unit names when checking for name collisions.
This prevents name collisions if the namespace belongs to a module and the unit
is accessed as an attribute of that module. [#17853]
The string representations of the prefixed versions of
solLum,solMassand
solRadunits can now be parsed by default.Previously they could only be parsed if the
required_by_vounitmodule hadbeen imported, possibly indirectly by using the
"vounit"format. [#17868]astropy.utils
^^^^^^^^^^^^^
infoattribute by mutating its name toan invalid type. A
TypeErroris now raised when a name is set to anythingother than a string. [#17450]
astropy.visualization
^^^^^^^^^^^^^^^^^^^^^
Ensure that the
astropy.visualization.wcsaxes.custom_ucd_coord_meta_mappingcontext manager performs a (correct) cleanup. [#17749]
Fixed interval classes for masked input (
MaskedArrayandMaskedNDArray). [#17927]Fixed the limits of
aparameter in thePowerDistStretchand
InvertedPowerDistStretchclasses so that a value of0 in no longer allowed. That value gives infinity values in
InvertedPowerDistStretchand it makes thePowerDistStretchresults independent of the input data. [#17941]
Fixed an issue where LinearStretch values were not being clipped to
[0:1] when
clip=True. [#17943]astropy.wcs
^^^^^^^^^^^
'em.wl'be reserved for vacuum wavelengths.
'em.wl;obs.atmos'is now used torepresent air wavelengths instead. [#17769]
Other Changes and Additions
v7.0.1Compare Source
==========================
API Changes
astropy.table
^^^^^^^^^^^^^
use_local_filesfor the js viewer inastropy.table.Table.show_in_browseris now deprecated. Starting in Astropy7.1 this keyword will be ignored and use of it will issue a warning. The
default behavior will be to use the remote versions of jQuery and DataTables
from a CDN. [#17480]
Bug Fixes
astropy.config
^^^^^^^^^^^^^^
With
astropyv7.0.0 the cache directory cannot be customized with theXDG_CACHE_HOMEenvironment variable.Instead,
XDG_CONFIG_HOMEerroneously controls both configuration and cachedirectories.
The correct pre-v7.0.0 behaviour has been restored, but it is possible that
astropyv7.0.0 has written cache files to surprising locations.Concerned users can use the
get_cache_dir_path()function to check wherethe cache files are written.
The bug in question does not affect systems where the
XDG_CACHE_HOMEandXDG_CONFIG_HOMEenvironment variables are unset. [#17514]astropy.coordinates
^^^^^^^^^^^^^^^^^^^
thetacomponent when converting from
CylindricalRepresentationtoPhysicsSphericalRepresentationfor vectors very close to the Z axis (withinmilliarcseconds). [#17693]
astropy.io.ascii
^^^^^^^^^^^^^^^^
Fixed parsing ASCII table with data that starts with a tilda. [#17565]
Find and read ASCII tables even if there is white space before
\begin{tabular},\tablehead, and similar markers. [#17624]astropy.io.fits
^^^^^^^^^^^^^^^
Fix memory leak in
BinTableHDU.copy()[#16143]Fix overflow error with Numpy 2 and VLA columns using P format. [#17328]
Fix
ImageHDU.scalewith float. [#17458]Fixed
Table.write(..., format="fits", overwrite=True)when filename isprovided as
pathlib.Path. [#17552]astropy.io.votable
^^^^^^^^^^^^^^^^^^
VOTableFileelement to include or dropcoordinate_systemsregardless of version. [[#17356]Configuration
📅 Schedule: Branch creation - "every 4th week on Thursday before 10am" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.