Skip to content

Releases: sunpy/sunpy

v7.1.1

29 Apr 11:02
v7.1.1
5984e5d

Choose a tag to compare

7.1.1 (2026-03-26)

Bug Fixes

  • Fix sunpy.net.scraper.Scraper to correctly handle proper local file URI on Windows and make internal code more consistent. (#8493)
  • Fixed a bug in sunpy.coordinates.spice when converting times to the time scale/format used by SPICE, which resulted in a time inaccuracy of up to 1.6 ms. (#8534)

v7.0.5

29 Apr 11:03
v7.0.5
b1df31f

Choose a tag to compare

7.0.5 (2026-03-26)

Bug Fixes

  • Fixed a bug in sunpy.coordinates.spice when converting times to the time scale/format used by SPICE, which resulted in a time inaccuracy of up to 1.6 ms. (#8534)

v7.1.0

08 Dec 14:41
v7.1.0
ba75be8

Choose a tag to compare

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, pattern within sunpy.net.Scraper (#8338)
  • Remove deprecated assume_spherical_screen method in favor of ~sunpy.coordinates.SphericalScreen. (#8386)
  • Removed silence_errors keyword 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_meta and derotate) from sunpy.map.MapSequence after its long deprecation period. In addition, derotate was removed from the initialization of sunpy.map.MapSequence. Finally, resample keyword was removed from the plotting method of sunpy.map.MapSequence. (#8397)
  • Removed contour method on sunpy.map.Map after its long deprecation period. (#8397)
  • Removed deprecated arguments from sunpy.net.vso.VSOClient.translate_and_query method (progress and vso_response_format) after its long deprecation period. (#8397)
  • Removed legacy QueryResponse used by the sunpy.net.vso module after its long deprecation period. (#8397)
  • Removed legacy diff_rot after its long deprecation period. (#8397)
  • Removed legacy extend on sunpy.time.TimeRange after its long deprecation period. (#8397)
  • Removed legacy read_files and write_files methods in sunpy.io after their long deprecation period. (#8397)
  • Removed sunpy.coordinates.transformations module 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_notebook to render ~sunpy.net.Fido search results and ~sunpy.net.attr.AttrMeta.show_in_notebook on all attrs to render attrs tables in form of interactive table using itables in 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 search method to be robust against client errors. Any client error will be caught and attached to .errors property 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_to to preserve the original observation time (typically the DATE-OBS header 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, and retries_notfound from ~sunpy.net.jsoc.JSOCClient.fetch to drms.ExportRequest.wait. Previously, sleep was a keyword to ~sunpy.net.jsoc.JSOCClient.fetch but 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_time now 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:06Z was being parsed through different code than 2001-02-03T04:05:06 or 2001-02-03T04:05:06.0Z. (#8265)
  • Fixed a bug where sunpy.util.system_info would report sunpy as an optional dependency of itself instead of properly reporting all of the optional dependencies. (#8294)
  • Fixed sunpy.util.system_info so 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 GONGMagnetogramMap for headers which have standard DATE-OBS keys vs ones which have split DATE-OBS & TIME-OBS. (#8347)
  • Fixed a bug where ~sunpy.time.parse_time failed 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_time could 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 net module on map module 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...
Read more

v7.0.4

04 Dec 11:50
v7.0.4
faddbfc

Choose a tag to compare

Bug Fixes

  • 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 net module on map module due to sunpy.net.jsoc.attrs.Cutout. (#8442)

Internal Changes

  • Stop using deprecated set_bad method on a matplotlib colormap. (#8446)

v7.0.3

22 Oct 20:47
v7.0.3
5a4cb80

Choose a tag to compare

What's Changed

Full Changelog: v7.0.2...v7.0.3

v7.0.2

19 Sep 22:29

Choose a tag to compare

What's Changed

Full Changelog: v7.0.1...v7.0.2

v7.0.1

31 Jul 13:40
v7.0.1
9ab5a99

Choose a tag to compare

7.0.1 (2025-07-31)

Bug Fixes

  • Fixed a bug where the time format 2001-02-03T04:05:06Z was being parsed through different code than 2001-02-03T04:05:06 or 2001-02-03T04:05:06.0Z. (#8265)
  • Fixed a bug where sunpy.util.system_info would report sunpy as an optional dependency of itself instead of properly reporting all of the optional dependencies. (#8294)
  • Fixed sunpy.util.system_info so 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

18 Jun 14:51

Choose a tag to compare

Breaking Changes

  • The ~sunpy.net.hek.HEKClient now merges
    columns event_coord1, event_coord2 and event_coord3 into a new
    column called event_coord that returns a
    astropy.coordinates.SkyCoord object.
    event_coord1, event_coord2 and event_coord3 are 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 .raw attribute 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 .raw attribute on
    ~sunpy.net.hek.HEKTable.
    (#7619)

Deprecations

  • Renamed the mesh-based autoalignment option for the
    ~sunpy.map.Map method
    ~sunpy.map.GenericMap.plot from autoalign='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.plot of directly plotting a warped image by
    specifying autoalign='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_to now has the capability to
    automatically determine the extent of the output map by setting the
    keyword auto_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.superpixel by introducing a new
    conservative_mask keyword argument, which defaults to False. 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.plot now 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_coordinate and wcs where 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 array obstime (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.PlanarScreen and
    ~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 the date-obs key, which can be overridden
    by a source subclass. This fixes EITMap.reference_date.
    (#8236)
  • Prevented a potential segmentation fault when calling
    ~sunpy.time.parse_time on 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.py to 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.B0 about the range of possible values for B0
    angle. (#8113)
  • Fixed an error in the docstring of
    ~sunpy.coordinates.ephemeris.get_horizons_coord that 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

Read more

v6.1.2

18 Jun 13:33

Choose a tag to compare

What's Changed

Full Changelog: v6.1.1...v6.1.2

v6.0.6

18 Jun 13:32

Choose a tag to compare

What's Changed

Full Changelog: v6.0.5...v6.0.6