Releases: sunpy/sunpy
Releases · sunpy/sunpy
v7.1.1
7.1.1 (2026-03-26)
Bug Fixes
v7.0.5
v7.1.0
Breaking Changes
- Increased minimum versions for these dependencies:
- Python >= 3.12
- astropy >= 6.1.0
- h5py >= 3.10.0
- lxml >= 5.0.1
- matplotlib >= 3.8.0
- numpy >= 1.26.0
- pandas >= 2.2.0
- reproject >= 0.13.0
- scipy >= 1.12.0 (#8367)
Removals
- Removed backwards compatibility with the legacy keyword,
patternwithin sunpy.net.Scraper (#8338) - Remove deprecated
assume_spherical_screenmethod in favor of ~sunpy.coordinates.SphericalScreen. (#8386) - Removed
silence_errorskeyword for input to both sunpy.map.Map and sunpy.timeseries.TimeSeries constructors after its long deprecation period. (#8397) - Removed the ability to read SDO/EVE level 0CS average files in sunpy.timeseries.TimeSeries after its long deprecation period. (#8397)
- Removed all deprecated API (
all_maps_same_shape,at_least_one_map_has_mask,as_array,all_metaandderotate) from sunpy.map.MapSequence after its long deprecation period. In addition,derotatewas removed from the initialization of sunpy.map.MapSequence. Finally,resamplekeyword was removed from the plotting method of sunpy.map.MapSequence. (#8397) - Removed
contourmethod on sunpy.map.Map after its long deprecation period. (#8397) - Removed deprecated arguments from
sunpy.net.vso.VSOClient.translate_and_querymethod (progressandvso_response_format) after its long deprecation period. (#8397) - Removed legacy
QueryResponseused by thesunpy.net.vsomodule after its long deprecation period. (#8397) - Removed legacy
diff_rotafter its long deprecation period. (#8397) - Removed legacy
extendon sunpy.time.TimeRange after its long deprecation period. (#8397) - Removed legacy
read_filesandwrite_filesmethods insunpy.ioafter their long deprecation period. (#8397) - Removed
sunpy.coordinates.transformationsmodule after its long deprecation period. (#8397, #8397)
New Features
- Added support for querying data from solarnet API using a new ~sunpy.net.solarnet.SOLARNETClient. (#7880)
- Added
sunpy.net.fido_factory.UnifiedResponse.show_in_notebookto render ~sunpy.net.Fido search results and~sunpy.net.attr.AttrMeta.show_in_notebookon all attrs to render attrs tables in form of interactive table usingitablesin Jupyter notebooks. (#7899) - Added a helper function (
sunpy.coordinates.utils.get_heliocentric_angle) to get the heliocentric angle of a coordinate on the solar disk, which can be used to compute μ for limb-darkening calculations. (#7979) - Enhanced sunpy.net.Fido's
searchmethod to be robust against client errors. Any client error will be caught and attached to.errorsproperty on both the ~sunpy.net.fido_factory.UnifiedResponse and individual ~sunpy.net.base_client.QueryResponseTable, the search will continue. (#8009) - A ~sunpy.util.SunpyUserWarning will be raised when sunpy.image.resample is used with
method='spline'and a data array containing nans and/or infinities. (#8185) - Added support for ANA to compile and work on Windows. (#8372)
- Add a keyword argument to
~sunpy.map.GenericMap.reproject_toto preserve the original observation time (typically theDATE-OBSheader key) instead of the observation time in the target WCS. (#8382) - Added Python 3.14 support with wheel builds for all supported platforms. (#8391)
- Added a new map source for ASO-S mission, currently added ~sunpy.map.sources.HXIMap for the Hard X-ray Imager (HXI) payload. (#8398)
- Pass
sleep,timeout, andretries_notfoundfrom~sunpy.net.jsoc.JSOCClient.fetchtodrms.ExportRequest.wait. Previously,sleepwas a keyword to~sunpy.net.jsoc.JSOCClient.fetchbut was not being propagated correctly. (#8409) - Modified the approach of coordinate transformations between Earth-centered frames in order to avoid internal origin shifts, which could degrade numerical accuracy of coordinates close to Earth center. (#8415)
- Modified the approach of coordinate transformations between Earth-centered frames in order to minimize the unintended triggering of a correction for stellar aberration (due to Earth motion). (#8415)
sunpy.time.parse_timenow supports two new formats:"%Y-%m-%dT%H%M%SZ"- Example: 2010-08-30T111402Z"%Y-%m-%dT%H%M%S"- Example: 2010-08-30T111402 (#8419)
Bug Fixes
- ~sunpy.data.data_manager.cache.Cache will no longer delete a stale file if the download fails, it will now return the "stale" file. (#7935)
- Fixed a bug where the time format
2001-02-03T04:05:06Zwas being parsed through different code than2001-02-03T04:05:06or2001-02-03T04:05:06.0Z. (#8265) - Fixed a bug where
sunpy.util.system_infowould report sunpy as an optional dependency of itself instead of properly reporting all of the optional dependencies. (#8294) - Fixed
sunpy.util.system_infoso that the version reported for a development installation of sunpy itself or of a dependency is accurate. (#8297) - Fix inconsistent behaviour between local and remote (http/ftp) ~`sunpy.net.scraper.Scraper` searches. Local searches will no longer crash if an expected directory does not exist during search. (#8316)
- Fixed a bug where the ~sunpy.net.jsoc.attrs.Cutout class for requesting JSOC cutouts did not require the supplied coordinate to be in the ~sunpy.coordinates.Helioprojective coordinate frame. (#8346)
- For the ~sunpy.net.jsoc.attrs.Cutout class for requesting JSOC cutouts, added protection to require the center of the cutout to be on the solar disk when tracking is enabled, due to confusing output from JSOC. (#8346)
- Fix
GONGMagnetogramMapfor headers which have standardDATE-OBSkeys vs ones which have splitDATE-OBS&TIME-OBS. (#8347) - Fixed a bug where
~sunpy.time.parse_timefailed to parse time strings stored in an astropy.table.Column or a pandas.Series using the normal wide range of supported time-string formats. (#8356) - Fixed a bug where
~sunpy.time.parse_timecould not accept pandas.Index input. (#8356) - Fix ~sunpy.net.dataretriever.ADAPTClient returning no results for ADAPT maps after October 2024. The filename convention was changed on the NSO server. (#8388)
- Fix unintended dependency of
netmodule onmapmodule due to ~sunpy.net.jsoc.attrs.Cutout. (#8442) - Fixed a bug with HMI and MDI magnetic-field maps where the data array would always be read during map instantiation. (#8447)
Documentation
- Added a gallery example (
sphx_glr_generated_gallery_plotting_time_distance.py) demonstrating how to extract the intensities along a slit to create a time-distance plot taking into account differential rotation. (#8057) - The source-code links now go to the GitHub repository instead of rendered versions of the source code. (#8179)
- Fixed errors and added elaborations to the docstring for ~sunpy.coordinates.Helioprojective. (#8293)
- Added an example (
sphx_glr_generated_gallery_plotting_adding_earth.py) showing how to add an Earth scale image to a Map plot. (#8322) - Modifi...
v7.0.4
Bug Fixes
- Fix
sunpy.net.dataretriever.ADAPTClientreturning no results for ADAPT maps after October 2024. The filename convention was changed on the NSO server. (#8388) - Fix unintended dependency of
netmodule onmapmodule due tosunpy.net.jsoc.attrs.Cutout. (#8442)
Internal Changes
- Stop using deprecated
set_badmethod on a matplotlib colormap. (#8446)
v7.0.3
What's Changed
- Backport PR #8347 on branch 7.0 (Fix GONGMagnetogramMap for correct DATE-OBS) by @meeseeksmachine in #8359
- Backport PR #8362 on branch 7.0 (Updates from the package template) by @meeseeksmachine in #8363
- Backport PR #8364 on branch 7.0 ([pre-commit.ci] pre-commit autoupdate) by @meeseeksmachine in #8365
- Backport PR #8346 on branch 7.0 (Added input validation for the JSOC
Cutoutattribute) by @meeseeksmachine in #8371 - Backport PR #8370 on branch 7.0 (Actually set title in MapSequence.plot) by @meeseeksmachine in #8374
- Backport PR #8376 on branch 7.0 (Update tests for ANA and made the API explicit ) by @meeseeksmachine in #8377
- Revert "Backport PR #8376 on branch 7.0 (Update tests for ANA and made the API explicit )" by @Cadair in #8379
- Backport PR #8373 on branch 7.0 (Typo changes) by @meeseeksmachine in #8380
- Backport PR #8369 on branch 7.0 (Make the test suite run with only "core" extras) by @meeseeksmachine in #8378
Full Changelog: v7.0.2...v7.0.3
v7.0.2
What's Changed
- Backport PR #8312 on branch 7.0 (Updates from the package template) by @meeseeksmachine in #8313
- Backport PR #8319 on branch 7.0 (Updates from the package template) by @meeseeksmachine in #8320
- Backport PR #8314 on branch 7.0 (Fix warnings from documentation build) by @meeseeksmachine in #8321
- Backport PR #8318 on branch 7.0 (Add example showing frame creation before coordinate creation) by @meeseeksmachine in #8324
- Backport PR #8322 on branch 7.0 (Add earth to scale example) by @meeseeksmachine in #8325
- Backport PR #8327 on branch 7.0 (use new pytest asdf plugin) by @meeseeksmachine in #8328
- Backport PR #8316 on branch 7.0 (Fix inconsistent behaviour between local and remote scraper searches) by @meeseeksmachine in #8330
- Backport PR #8333 on branch 7.0 (Bump actions/checkout from 4 to 5) by @meeseeksmachine in #8334
- Backport PR #8336 on branch 7.0 (Remove old ANA compat block) by @meeseeksmachine in #8337
- Backport PR #8342 on branch 7.0 (Updates from the package template) by @meeseeksmachine in #8343
- Backport PR #8340 on branch 7.0 (Updates to the Earth-scale example) by @meeseeksmachine in #8350
- Backport PR #8348 on branch 7.0 (Fixed doctest that depended on a name) by @meeseeksmachine in #8351
- Backport PR #8356 on branch 7.0 (Fixed parsing of SunPy-supported time formats in common not-quite-lists) by @ayshih in #8357
Full Changelog: v7.0.1...v7.0.2
v7.0.1
7.0.1 (2025-07-31)
Bug Fixes
- Fixed a bug where the time format
2001-02-03T04:05:06Zwas being parsed through different code than2001-02-03T04:05:06or2001-02-03T04:05:06.0Z. (#8265) - Fixed a bug where
sunpy.util.system_infowould report sunpy as an optional dependency of itself instead of properly reporting all of the optional dependencies. (#8294) - Fixed
sunpy.util.system_infoso that the version reported for a development installation of sunpy itself or of a dependency is accurate. (#8297)
Documentation
- Fixed errors and added elaborations to the docstring for ~sunpy.coordinates.Helioprojective. (#8293)
v7.0.0
Breaking Changes
- The ~sunpy.net.hek.HEKClient now merges
columnsevent_coord1,event_coord2andevent_coord3into a new
column calledevent_coordthat returns a
astropy.coordinates.SkyCoord object.
event_coord1,event_coord2andevent_coord3are all dropped as
columns from the table. Columns which correspond to only units are
also dropped. If you need these columns, the unparsed HEK results can
be accessed via the.rawattribute on the HEK result.
(#7619) - The types of many columns in the results table returned by the
HEKClient have been changed. Columns which correspond to quantities
with units are now returned as
~astropy.units.Quantity objects rather
than arrays. Columns which correspond to times are now returned as
~astropy.time.Time objects rather than
strings. Columns which correspond to coordinates are now returned as
~astropy.coordinates.SkyCoord objects
rather than arrays or chain code strings. If you need these columns in
their original format, the raw output from the HEK can be accessed via
the.rawattribute on
~sunpy.net.hek.HEKTable.
(#7619)
Deprecations
- Renamed the mesh-based autoalignment option for the
~sunpy.map.Map method
~sunpy.map.GenericMap.plotfromautoalign='pcolormesh'to
autoalign='mesh'.
(#8036) - Deprecated sunpy.util.net.download_file
and sunpy.util.net.download_fileobj.
Internally sunpy now uses parfive.
(#8106)
Removals
- Removed the decorator
sunpy.util.deprecate_positional_args_since()
due to lack of continued use.
(#8165)
New Features
- Added a FIDO client for retrieving AIA "synoptic" data from the JSOC.
This dataset is not synoptic like HMI and MDI Synoptic images which
are images of the solar surface reconstructed from many observations
over a solar rotation but rather a synopsis of AIA data. The AIA
synoptic data are calibrated Level 1.5 images with reduced 1k x 1k
resolution at regular 2-minute cadence.
(#7842) - Added "SUITMap" with a custom color scheme for 11 filters of the SUIT
instrument. For more information about the payload, visit
suit.iucaa.in.
(#7971) - Add a GONG Magnetogram Map source.
(#8007) - Added a new autoalignment option for the
~sunpy.map.Map method
~sunpy.map.GenericMap.plotof directly plotting a warped image by
specifyingautoalign='image'. This autoalignment option is faster
than the existing option (autoalign='mesh'), but does not fully work
in all situations. (#8036) - The ~sunpy.map.Map method
~sunpy.map.GenericMap.reproject_tonow has the capability to
automatically determine the extent of the output map by setting the
keywordauto_extent, thus avoiding "clipping" any of the original
data. The best choice for the how the extent is determined depends on
the data being reprojected.
(#8040) - Added support for conservative mask propagation in
sunpy.map.GenericMap.superpixelby introducing a new
conservative_maskkeyword argument, which defaults toFalse. When
conservative_mask=True, the superpixel is masked if any of its
constituent pixels are masked.
(#8041) - Adds caching mechanism for Timeseries URL handling using
~sunpy.data.data_manager.cache.Cache.
(#8045) - Added support for PUNCH data within
sunpy.map.Map.
(#8133) - Autoalign plotting for ~sunpy.map.Map
is now significantly faster, especially for interactive plots.
(#8161) - Added direct support for EIT L1 data within
sunpy.map.Map.
(#8177) - The ~sunpy.map.Map method
~sunpy.map.GenericMap.plotnow performs autoalignment by default
(autoalign=True) and furthermore automatically determines which
autoalignment approach -- mesh-based or image-based -- to use for the
situation. (#8187)
Bug Fixes
- Allow ~sunpy.map.sources.HMIMap to have
units outside of the FITS standard. This prevents issuing repeated
warnings when HMI maps have units of "Mx/cm2".
(#8126) - Fixed a bug with the caching of
~sunpy.map.Map properties
observer_coordinateandwcswhere modifying the metadata to be
invalid would confuse the cache.
(#8158) - Fixed a bug where autoalign plotting of a
~sunpy.map.Map would not expand the
plot limits in some cases.
(#8161) - Fixed a bug where the three magnetic coordinate frames
(~sunpy.coordinates.frames.Geomagnetic,
~sunpy.coordinates.frames.SolarMagnetic,
~sunpy.coordinates.frames.GeocentricSolarMagnetospheric)
would raise an error if used nontrivially with arrayobstime(as
opposed to a scalar).
(#8193) - Fixed an incompatibility between the context manager for applying
rotation (~sunpy.coordinates.propagate_with_solar_surface) and the
context managers for applying screen assumptions
(~sunpy.coordinates.PlanarScreenand
~sunpy.coordinates.SphericalScreen), which for example resulted in
the discarding of most off-disk data in reprojections.
(#8212) - Ensure that ~sunpy.map.GenericMap uses
the private accessor for thedate-obskey, which can be overridden
by a source subclass. This fixesEITMap.reference_date.
(#8236) - Prevented a potential segmentation fault when calling
~sunpy.time.parse_timeon a list of more than 500 strings in a
format not specifically recognized by
sunpy.time itself and instead has to
fall back on recognition by
astropy.time.
(#8257)
Documentation
- Now using
sphinxcontrib-bibtex, to cite papers in a consistent and
centralized manner.
(#7837) - Added an example
sphx_glr_generated_gallery_plotting_offdisk_contours.pyto show how
to overlay off-disk contours from one map onto another map.
(#8012) - Fixed a small inaccuracy in the docstring of
sunpy.coordinates.sun.B0about the range of possible values for B0
angle. (#8113) - Fixed an error in the docstring of
~sunpy.coordinates.ephemeris.get_horizons_coordthat mistakenly
claimed that JPL Horizons supported the specification of "s" for
seconds as the unit for step size, but Horizons does not.
(#8190)
Internal Changes
- In order to support multiple versions of Python, the indentation of
some docstrings is now different when accessed directly (i.e., via
__doc__). The docstrings will look exactly the same when viewed in
other ways, including in built documentation.
(#8173) - Fixed a bug with the internal tracking of active context managers that
could result in incorrect tracking of complex nesting.
(#8211)
New Contributors
- @Sauravroy34 made their first contribution in #7762
- @Prtm2110 made their first contribution in #7752
- @advait-zx made their first contribution in #7807
- @raghav20232023 made their first contribution in #7866
- @ahmvdev made their first contribution in #7881
- @wmoapl made their first contribution in #7790
- @naxatra2 made their first contribution in #7902
- @ankitkhushwaha made their first contribution in #7911
- @settwi made their first contribution in #7924
- @sh-abinash-sh made their first contribution in #7917
- @tanishy7777 made their first contribution in #7974
- @Diya910 made their first contribution in #7953
- @PredictiveManish made their first contribution in #8032
- @parharti made their first contribution in #8038
- @pythonicforge made their ...
v6.1.2
What's Changed
- Backport PR #8107 on branch 6.1 (Add missing asdf_entry_points test decorations) by @meeseeksmachine in #8108
- Backport PR #8113 on branch 6.1 (Update the range for B0 angle that is stated in the docstring) by @meeseeksmachine in #8115
- Backport PR #8112 on branch 6.1 (Updates from the package template) by @meeseeksmachine in #8117
- Backport PR #8118 on branch 6.1 (Fix typo in 6.1 release notes) by @meeseeksmachine in #8119
- Backport PR #8120 on branch 6.1 (Unskip jsoc tests) by @meeseeksmachine in #8122
- Backport PR #8123 on branch 6.1 (Remove spurious file) by @meeseeksmachine in #8125
- Backport PR #8129 on branch 6.1 (Updates from the package template) by @meeseeksmachine in #8131
- Backport PR #8140 on branch 6.1 (Fixing url for scraper migration dep warning) by @meeseeksmachine in #8141
- Backport PR #8142 on branch 6.1 (Updates from the package template) by @meeseeksmachine in #8145
- Backport PR #8148 on branch 6.1 ([pre-commit.ci] pre-commit autoupdate) by @meeseeksmachine in #8149
- Backport PR #8154 on branch 6.1 (Remove use of deprecated astropy isiterable) by @meeseeksmachine in #8157
- Backport PR #8158 on branch 6.1 (Fixed a desync bug with property caching in
Map) by @meeseeksmachine in #8160 - Backport PR #8162 on branch 6.1 (Updates from the package template) by @meeseeksmachine in #8163
- Backport PR #8166 on branch 6.1 (Update .rtd-environment.yml) by @meeseeksmachine in #8168
- Backport PR #8169 on branch 6.1 (Update .rtd-environment.yml) by @meeseeksmachine in #8171
- Backport PR #8173 on branch 6.1 (Made dynamically constructed docstrings compatible with all Python versions) by @ayshih in #8174
- Backport PR #8180 on branch 6.1 (Fixed the dynamic construction of the GenericMap docstring) by @meeseeksmachine in #8182
- Backport PR #8190 on branch 6.1 (Fixed
get_horizons_coord()docstring to omit an unsupported option) by @meeseeksmachine in #8192 - Backport PR #8193 on branch 6.1 (Fixed a bug when using array obstime with the magnetic frames) by @meeseeksmachine in #8198
- Backport PR #8201 on branch 6.1 (Added a warning when combining
PlanarScreenwithpropagate_with_solar_surface) by @meeseeksmachine in #8203 - Backport PR #8228 on branch 6.1 (Updates from the package template) by @meeseeksmachine in #8229
- Backport PR #8237 on branch 6.1 (Fix failing CI for pytest 8.4.0 + pytest-xdist + pytest-cov) by @meeseeksmachine in #8239
- Backport PR #8251 on branch 6.1 (Fixed numpy 2.3 astropy Time segfault in goes example) by @meeseeksmachine in #8254
- Backport PR #8257 on branch 6.1 (Protected against a bad interaction between astropy's C fast parser of time strings and numpy>=2.3) by @meeseeksmachine in #8261
- Backport PR #8267 on branch 6.1 (Remove jsoc warning) by @meeseeksmachine in #8269
Full Changelog: v6.1.1...v6.1.2
v6.0.6
What's Changed
- Backport PR #8113 on branch 6.0 (Update the range for B0 angle that is stated in the docstring) by @meeseeksmachine in #8114
- Backport PR #8112 on branch 6.0 (Updates from the package template) by @meeseeksmachine in #8116
- Backport PR #8120 on branch 6.0 (Unskip jsoc tests) by @meeseeksmachine in #8121
- Backport PR #8123 on branch 6.0 (Remove spurious file) by @meeseeksmachine in #8124
- Backport PR #8129 on branch 6.0 (Updates from the package template) by @meeseeksmachine in #8130
- Backport PR #8142 on branch 6.0 (Updates from the package template) by @meeseeksmachine in #8144
- Backport PR #8154 on branch 6.0 (Remove use of deprecated astropy isiterable) by @meeseeksmachine in #8156
- Backport PR #8158 on branch 6.0 (Fixed a desync bug with property caching in
Map) by @meeseeksmachine in #8159 - Backport PR #8166 on branch 6.0 (Update .rtd-environment.yml) by @meeseeksmachine in #8167
- Backport PR #8169 on branch 6.0 (Update .rtd-environment.yml) by @meeseeksmachine in #8170
- Backport PR #8173 on branch 6.0 (Made dynamically constructed docstrings compatible with all Python versions) by @ayshih in #8175
- Backport PR #8180 on branch 6.0 (Fixed the dynamic construction of the GenericMap docstring) by @meeseeksmachine in #8181
- Backport PR #8190 on branch 6.0 (Fixed
get_horizons_coord()docstring to omit an unsupported option) by @meeseeksmachine in #8191 - Backport PR #8193 on branch 6.0 (Fixed a bug when using array obstime with the magnetic frames) by @meeseeksmachine in #8197
- Backport PR #8201 on branch 6.0 (Added a warning when combining
PlanarScreenwithpropagate_with_solar_surface) by @meeseeksmachine in #8202 - Backport PR #8237 on branch 6.0 (Fix failing CI for pytest 8.4.0 + pytest-xdist + pytest-cov) by @meeseeksmachine in #8238
- Backport PR #8251 on branch 6.0 (Fixed numpy 2.3 astropy Time segfault in goes example) by @meeseeksmachine in #8253
- Backport PR #8257 on branch 6.0 (Protected against a bad interaction between astropy's C fast parser of time strings and numpy>=2.3) by @meeseeksmachine in #8260
- Backport PR #8267 on branch 6.0 (Remove jsoc warning) by @meeseeksmachine in #8268
Full Changelog: v6.0.5...v6.0.6