Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-sunpy for openSUSE:Factory 
checked in at 2026-04-18 21:34:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sunpy (Old)
 and      /work/SRC/openSUSE:Factory/.python-sunpy.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-sunpy"

Sat Apr 18 21:34:15 2026 rev:40 rq:1344698 version:7.1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sunpy/python-sunpy.changes        
2026-01-02 14:31:06.814879564 +0100
+++ /work/SRC/openSUSE:Factory/.python-sunpy.new.11940/python-sunpy.changes     
2026-04-18 21:34:29.696966313 +0200
@@ -1,0 +2,11 @@
+Sun Mar 29 19:03:56 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 7.1.1:
+  * Fix ~`sunpy.net.scraper.Scraper` to correctly handle proper
+    local file URI on Windows and make internal code more
+    consistent.
+  * 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.
+
+-------------------------------------------------------------------

Old:
----
  sunpy-7.1.0.tar.gz

New:
----
  sunpy-7.1.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-sunpy.spec ++++++
--- /var/tmp/diff_new_pack.WmZ0CY/_old  2026-04-18 21:34:30.476998103 +0200
+++ /var/tmp/diff_new_pack.WmZ0CY/_new  2026-04-18 21:34:30.476998103 +0200
@@ -19,7 +19,7 @@
 %{?sle15_python_module_pythons}
 %define skip_python311 1
 Name:           python-sunpy
-Version:        7.1.0
+Version:        7.1.1
 Release:        0
 Summary:        SunPy core package: Python for Solar Physics
 License:        Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT

++++++ sunpy-7.1.0.tar.gz -> sunpy-7.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/.cruft.json new/sunpy-7.1.1/.cruft.json
--- old/sunpy-7.1.0/.cruft.json 2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/.cruft.json 2026-03-26 10:58:57.000000000 +0100
@@ -1,6 +1,6 @@
 {
   "template": "https://github.com/sunpy/package-template";,
-  "commit": "bea8060eef60df35f7df61d9db1d56b838bda01a",
+  "commit": "93c8bc491584f214226a039a35d0cbebe305cd31",
   "checkout": null,
   "context": {
     "cookiecutter": {
@@ -23,6 +23,7 @@
       "include_example_code": "n",
       "include_cruft_update_github_workflow": "y",
       "use_extended_ruff_linting": "n",
+      "matrix_room_id": "!JYqfIVJjWANcHnfktY:cadair.com",
       "_sphinx_theme": "sunpy",
       "_parent_project": "",
       "_install_requires": "",
@@ -32,7 +33,7 @@
         ".github/workflows/sub_package_update.yml"
       ],
       "_template": "https://github.com/sunpy/package-template";,
-      "_commit": "bea8060eef60df35f7df61d9db1d56b838bda01a"
+      "_commit": "93c8bc491584f214226a039a35d0cbebe305cd31"
     }
   },
   "directory": null
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/CHANGELOG.rst 
new/sunpy-7.1.1/CHANGELOG.rst
--- old/sunpy-7.1.0/CHANGELOG.rst       2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/CHANGELOG.rst       2026-03-26 10:58:57.000000000 +0100
@@ -1,3 +1,13 @@
+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 
<https://github.com/sunpy/sunpy/pull/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 <https://github.com/sunpy/sunpy/pull/8534>`__)
+
+
 7.1.0 (2025-12-08)
 ==================
 
@@ -82,7 +92,7 @@
 Documentation
 -------------
 
-- Added a gallery example 
(:ref:`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 
<https://github.com/sunpy/sunpy/pull/8057>`__)
+- Added a gallery example 
(:ref:`sphx_glr_generated_gallery_showcase_time_distance.py`) demonstrating how 
to extract the intensities along a slit to create a time-distance plot taking 
into account differential rotation. (`#8057 
<https://github.com/sunpy/sunpy/pull/8057>`__)
 - The source-code links now go to the GitHub repository instead of rendered 
versions of the source code. (`#8179 
<https://github.com/sunpy/sunpy/pull/8179>`__)
 - Fixed errors and added elaborations to the docstring for 
`~sunpy.coordinates.Helioprojective`. (`#8293 
<https://github.com/sunpy/sunpy/pull/8293>`__)
 - Added an example 
(:ref:`sphx_glr_generated_gallery_plotting_adding_earth.py`) showing how to add 
an Earth scale image to a Map plot. (`#8322 
<https://github.com/sunpy/sunpy/pull/8322>`__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/PKG-INFO new/sunpy-7.1.1/PKG-INFO
--- old/sunpy-7.1.0/PKG-INFO    2025-12-08 16:19:11.929378700 +0100
+++ new/sunpy-7.1.1/PKG-INFO    2026-03-26 10:59:06.566252200 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: sunpy
-Version: 7.1.0
+Version: 7.1.1
 Summary: SunPy core package: Python for Solar Physics
 Author-email: The SunPy Community <[email protected]>
 License-Expression: BSD-3-Clause
@@ -82,13 +82,15 @@
 Requires-Dist: sunpy[asdf,core,jpeg2000,opencv,scikit-image,spice]; extra == 
"all"
 Provides-Extra: s3
 Requires-Dist: fsspec[s3]>=2023.6.0; extra == "s3"
-Requires-Dist: aiobotocore[boto3]>=2.6.0; extra == "s3"
+Requires-Dist: aiobotocore>=2.6.0; extra == "s3"
+Requires-Dist: boto3>=1.31.17; extra == "s3"
 Provides-Extra: jupyter
 Requires-Dist: itables>=2.2.4; extra == "jupyter"
 Requires-Dist: ipywidgets>=8.1.0; extra == "jupyter"
 Provides-Extra: tests-only
 Requires-Dist: hvpy>=1.1.0; extra == "tests-only"
 Requires-Dist: jplephem>=2.19; extra == "tests-only"
+Requires-Dist: psutil>=6.0.0; extra == "tests-only"
 Requires-Dist: pytest-astropy>=0.11.0; extra == "tests-only"
 Requires-Dist: pytest-mpl>=0.18.0; extra == "tests-only"
 Requires-Dist: pytest>=7.4.0; extra == "tests-only"
@@ -112,6 +114,7 @@
 Requires-Dist: sunpy-sphinx-theme>=2.0.3; extra == "docs"
 Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
 Requires-Dist: joblib; extra == "docs"
+Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
 Provides-Extra: docs-gallery
 Requires-Dist: sunpy[docs]; extra == "docs-gallery"
 Requires-Dist: astroquery>=0.4.6; extra == "docs-gallery"
@@ -121,9 +124,9 @@
 Requires-Dist: sunpy[docs,tests]; extra == "dev"
 Dynamic: license-file
 
-*********
-``sunpy``
-*********
+SunPy core package: Python for Solar Physics
+============================================
+
 |SunPy Logo|
 
 
+-----------------------------------+-----------------------------------+-----------------------------------+
@@ -177,62 +180,60 @@
 It includes an interface for searching and downloading data from multiple data 
providers, data containers for image and time series data, commonly used solar 
coordinate frames and associated transformations, as well as other 
functionality needed for solar data analysis.
 
 Installation
-============
+------------
 
 We recommended following the `installation guide 
<https://docs.sunpy.org/en/stable/guide/installation.html>`__ in the ``sunpy`` 
documentation.
 This will walk you through installing ``sunpy`` and all of its dependencies.
 
 Usage
-=====
+-----
 
 If you are new to ``sunpy``, the best place to start is the `tutorial 
<https://docs.sunpy.org/en/stable/tutorial/index.html>`__.
 the `example gallery 
<https://docs.sunpy.org/en/stable/generated/gallery/index.html>`__ also 
includes a collection of shorter and more specific examples of using ``sunpy``.
 
 Changes
-=======
+-------
 
 See our `changelog 
<https://docs.sunpy.org/en/stable/whatsnew/changelog.html>`__. for the latest 
changes in ``sunpy``.
 
 Getting Help
-============
+------------
 
 For more information or to ask questions about ``sunpy`` or any other SunPy 
Project package, please check out:
 
 -  `sunpy documentation <https://docs.sunpy.org/en/stable/>`__
 -  `SunPy Affiliated Packages <https://sunpy.org/affiliated>`__
--  `SunPy Chat`_
+-  `SunPy Chat <https://app.element.io/#/room/#sunpy:openastronomy.org>`__
 -  `SunPy mailing list <https://groups.google.com/forum/#!forum/sunpy>`__
 -  `SunPy Community forum <https://community.openastronomy.org/c/sunpy/5>`__
 
 Acknowledging or Citing ``sunpy``
-=================================
+---------------------------------
 
 If you use ``sunpy`` in your scientific work, we would appreciate your `citing 
it in your publications <https://docs.sunpy.org/en/stable/citation.html>`__.
 The continued growth and development of ``sunpy`` is dependent on the 
community being aware of ``sunpy``.
 
-Contributing
-============
-
-The SunPy Project is a community-driven open-source project that welcomes any 
and all contributions.
-Whether you are a developer, student, or user, you can help by contributing 
code, documentation, or community support.
-
-If you would like to get involved, the `Newcomers Guide`_ guide explains the 
many different ways to contribute to the SunPy Project and also shows how to 
get set up with a development workflow.
+Usage of Generative AI
+----------------------
 
-Help is always welcome, so come and say hello by joining the `SunPy Chat`_ and 
look over the `Good First Issues list`_ for the ideal places to start.
+If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+For more information see our documentation on fair and appropriate `AI usage 
<https://docs.sunpy.org/en/latest/dev_guide/contents/ai_usage.html>`__.
 
-.. _Newcomers Guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
-.. _Good First Issues list: 
https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Good+First+Issue%22
+Contributing
+------------
 
-Usage of Generative AI
-======================
+We love contributions! sunpy is open source,
+built on open source, and we'd love to have you hang out in our community.
 
-We expect authentic engagement in our community.
-Be wary of posting output from Large Language Models or similar generative AI 
as comments on GitHub or any other platform, as such comments tend to be 
formulaic and low quality content.
-If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+If you would like to get involved, check out the `Developers Guide`_ section 
of the SunPy docs.
+Stop by our chat room `#sunpy:openastronomy.org`_ if you have any questions.
+Help is always welcome so let us know what you like to work on, or check out 
the `issues page`_ for the list of known outstanding items.
 
-Code of Conduct
-===============
+For more information on contributing to SunPy, please read our `Newcomers' 
guide`_.
 
-When you are interacting with the SunPy Community you are asked to follow our 
`Code of Conduct <https://sunpy.org/coc>`__.
+.. _Developers Guide: https://docs.sunpy.org/en/latest/dev_guide/index.html
+.. _`#sunpy:openastronomy.org`: 
https://app.element.io/#/room/#sunpy:openastronomy.org
+.. _issues page: https://github.com/sunpy/sunpy/issues
+.. _Newcomers' guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
 
-.. _SunPy Chat: https://app.element.io/#/room/#sunpy:openastronomy.org
+When you are interacting with the SunPy community you are asked at to follow 
our `code of conduct <https://sunpy.org/coc>`__.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/README.rst new/sunpy-7.1.1/README.rst
--- old/sunpy-7.1.0/README.rst  2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/README.rst  2026-03-26 10:58:57.000000000 +0100
@@ -1,6 +1,6 @@
-*********
-``sunpy``
-*********
+SunPy core package: Python for Solar Physics
+============================================
+
 |SunPy Logo|
 
 
+-----------------------------------+-----------------------------------+-----------------------------------+
@@ -54,62 +54,60 @@
 It includes an interface for searching and downloading data from multiple data 
providers, data containers for image and time series data, commonly used solar 
coordinate frames and associated transformations, as well as other 
functionality needed for solar data analysis.
 
 Installation
-============
+------------
 
 We recommended following the `installation guide 
<https://docs.sunpy.org/en/stable/guide/installation.html>`__ in the ``sunpy`` 
documentation.
 This will walk you through installing ``sunpy`` and all of its dependencies.
 
 Usage
-=====
+-----
 
 If you are new to ``sunpy``, the best place to start is the `tutorial 
<https://docs.sunpy.org/en/stable/tutorial/index.html>`__.
 the `example gallery 
<https://docs.sunpy.org/en/stable/generated/gallery/index.html>`__ also 
includes a collection of shorter and more specific examples of using ``sunpy``.
 
 Changes
-=======
+-------
 
 See our `changelog 
<https://docs.sunpy.org/en/stable/whatsnew/changelog.html>`__. for the latest 
changes in ``sunpy``.
 
 Getting Help
-============
+------------
 
 For more information or to ask questions about ``sunpy`` or any other SunPy 
Project package, please check out:
 
 -  `sunpy documentation <https://docs.sunpy.org/en/stable/>`__
 -  `SunPy Affiliated Packages <https://sunpy.org/affiliated>`__
--  `SunPy Chat`_
+-  `SunPy Chat <https://app.element.io/#/room/#sunpy:openastronomy.org>`__
 -  `SunPy mailing list <https://groups.google.com/forum/#!forum/sunpy>`__
 -  `SunPy Community forum <https://community.openastronomy.org/c/sunpy/5>`__
 
 Acknowledging or Citing ``sunpy``
-=================================
+---------------------------------
 
 If you use ``sunpy`` in your scientific work, we would appreciate your `citing 
it in your publications <https://docs.sunpy.org/en/stable/citation.html>`__.
 The continued growth and development of ``sunpy`` is dependent on the 
community being aware of ``sunpy``.
 
-Contributing
-============
-
-The SunPy Project is a community-driven open-source project that welcomes any 
and all contributions.
-Whether you are a developer, student, or user, you can help by contributing 
code, documentation, or community support.
-
-If you would like to get involved, the `Newcomers Guide`_ guide explains the 
many different ways to contribute to the SunPy Project and also shows how to 
get set up with a development workflow.
+Usage of Generative AI
+----------------------
 
-Help is always welcome, so come and say hello by joining the `SunPy Chat`_ and 
look over the `Good First Issues list`_ for the ideal places to start.
+If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+For more information see our documentation on fair and appropriate `AI usage 
<https://docs.sunpy.org/en/latest/dev_guide/contents/ai_usage.html>`__.
 
-.. _Newcomers Guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
-.. _Good First Issues list: 
https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Good+First+Issue%22
+Contributing
+------------
 
-Usage of Generative AI
-======================
+We love contributions! sunpy is open source,
+built on open source, and we'd love to have you hang out in our community.
 
-We expect authentic engagement in our community.
-Be wary of posting output from Large Language Models or similar generative AI 
as comments on GitHub or any other platform, as such comments tend to be 
formulaic and low quality content.
-If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+If you would like to get involved, check out the `Developers Guide`_ section 
of the SunPy docs.
+Stop by our chat room `#sunpy:openastronomy.org`_ if you have any questions.
+Help is always welcome so let us know what you like to work on, or check out 
the `issues page`_ for the list of known outstanding items.
 
-Code of Conduct
-===============
+For more information on contributing to SunPy, please read our `Newcomers' 
guide`_.
 
-When you are interacting with the SunPy Community you are asked to follow our 
`Code of Conduct <https://sunpy.org/coc>`__.
+.. _Developers Guide: https://docs.sunpy.org/en/latest/dev_guide/index.html
+.. _`#sunpy:openastronomy.org`: 
https://app.element.io/#/room/#sunpy:openastronomy.org
+.. _issues page: https://github.com/sunpy/sunpy/issues
+.. _Newcomers' guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
 
-.. _SunPy Chat: https://app.element.io/#/room/#sunpy:openastronomy.org
+When you are interacting with the SunPy community you are asked at to follow 
our `code of conduct <https://sunpy.org/coc>`__.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/docs/conf.py new/sunpy-7.1.1/docs/conf.py
--- old/sunpy-7.1.0/docs/conf.py        2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/docs/conf.py        2026-03-26 10:58:57.000000000 +0100
@@ -150,9 +150,10 @@
     'sphinx.ext.mathjax',
     'sphinx.ext.napoleon',
     'sphinx.ext.todo',
+    'sphinx_autodoc_typehints',
     'sunpy.util.sphinx.doctest',
     'sunpy.util.sphinx.generate',
-    "sphinxext.opengraph",
+    'sphinxext.opengraph',
     'sphinx_design',
     'sphinx_copybutton',
     'sphinxcontrib.bibtex',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/examples/plotting/time_distance.py 
new/sunpy-7.1.1/examples/plotting/time_distance.py
--- old/sunpy-7.1.0/examples/plotting/time_distance.py  2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/examples/plotting/time_distance.py  1970-01-01 
01:00:00.000000000 +0100
@@ -1,182 +0,0 @@
-"""
-=====================================================
-Creating a time-distance plot from a sequence of maps
-=====================================================
-
-This example showcases how you can use :func:`sunpy.map.pixelate_coord_path`
-and :func:`sunpy.map.sample_at_coords` on a sequence of images to create a
-time-distance diagram accounting for solar differential rotation using
-`sunpy.coordinates.propagate_with_solar_surface` and dealing with off-disk
-pixels using `sunpy.coordinates.screens.SphericalScreen`
-"""
-# sphinx_gallery_thumbnail_number = -1
-import matplotlib.dates as mdates
-import matplotlib.pyplot as plt
-import numpy as np
-
-import astropy.units as u
-from astropy.coordinates import SkyCoord
-
-from sunpy.coordinates import propagate_with_solar_surface
-from sunpy.coordinates.screens import SphericalScreen
-from sunpy.map import Map, pixelate_coord_path, sample_at_coords
-from sunpy.net import Fido
-from sunpy.net import attrs as a
-
-###############################################################################
-# First, we will need to acquire a sequence of images from SDO/AIA.
-# We will use a data from 2012 containing a nice example of loop oscillations.
-
-# To keep the online build and download low using a short time range expand to
-# 18:05 - 18:30 to see more of the oscillation.
-
-query = Fido.search(
-    a.Time('2012-10-20 18:14:00', '2012-10-20 18:19:00'),
-    a.Instrument.aia,
-    a.Wavelength(171*u.angstrom),
-)
-files = Fido.fetch(query, site="NSO")
-files = sorted(files)
-
-
-###############################################################################
-# Our target will be a set of loops in the corona above an active region.
-# First load the FITS files we downloaded above in to map sequence and create a
-# rectangular submap or cutout around the area of interest. We will also define
-# the path, in this case a line, along which we want to make the time-distance
-# plot.
-
-aia_seq = Map(files)
-corner = SkyCoord(Tx=-1150*u.arcsec, Ty=-500*u.arcsec,
-                  frame=aia_seq[0].coordinate_frame)
-ref_sub_map = aia_seq[0].submap(corner, width=250*u.arcsec, 
height=450*u.arcsec)
-
-line_coords = SkyCoord([-1030, -1057]*u.arcsec, [-220, -206]*u.arcsec,
-                       frame=aia_seq[0].coordinate_frame)
-
-###############################################################################
-# Next we can plot the full disk map, over-plotting the region of interest and
-# also plot the submap and the line along which we want to make the
-# time-distance plot.
-
-fig = plt.figure(figsize=(8, 5))
-full_disk_ax = fig.add_subplot(121, projection=aia_seq[0])
-aia_seq[0].plot(axes=full_disk_ax, clip_interval=[1,99]*u.percent)
-aia_seq[0].draw_quadrangle(corner, width=250*u.arcsec, height=450*u.arcsec,
-                           axes=full_disk_ax)
-sub_map_ax = fig.add_subplot(122, projection=ref_sub_map)
-ref_sub_map.plot(axes=sub_map_ax, clip_interval=[1,99]*u.percent)
-sub_map_ax.plot_coord(line_coords)
-
-###############################################################################
-# There are two approaches that can be used to extract time distance
-# measurements from the data:
-#
-# 1. Reproject all the maps to a common world coordinate system (WCS)
-# 2. Transform the coordinates of the line extracted from the reference map
-#    to the coordinate systems of the subsequent maps
-#
-# We will use both and show they achieve almost the same results choosing which
-# approach to use will depend on the exact use case.
-#
-# We will start of with the first approach and reproject all the maps to 
common WCS
-# of the ``ref_sub_map.wcs`` while also taking account of differential 
rotation of
-# using `~sunpy.coordinates.propagate_with_solar_surface` and off-disk pixels 
using
-# `~sunpy.coordinates.screens.SphericalScreen`.
-
-reprojected_sub_maps = []
-for cur_map in aia_seq:
-    cur_map = cur_map/cur_map.exposure_time
-    with (propagate_with_solar_surface(),
-          SphericalScreen(cur_map.observer_coordinate, only_off_disk=True)):
-        reprojected_sub_maps.append(cur_map.reproject_to(ref_sub_map.wcs, 
preserve_date_obs=True))
-reprojected_sub_maps = Map(reprojected_sub_maps, sequence=True)
-
-###############################################################################
-# Now that we have reprojected all the maps to common WCS we can extract the
-# pixel coordinates once using :func:`~sunpy.map.pixelate_coord_path` to
-# determine the coordinates for every pixel that intersects with the physical
-# path and then use :func:`~sunpy.map.sample_at_coords` sample the data at
-# these coordinates.
-
-# As the maps are all aligned only need to extract the coordinates once
-intensity_coords = pixelate_coord_path(aia_seq[0], line_coords)
-
-intensities_reproject = []
-
-for aia_map in reprojected_sub_maps:
-    intensities_reproject.append(sample_at_coords(aia_map, 
intensity_coords).value)
-
-###############################################################################
-# For the second approach we need to transform the ``intensity_coords`` into
-# the coordinate frame of each map and then extract the data at corresponding
-# pixel coordinates.
-
-intensities_transform = []
-for cur_map in aia_seq:
-    with propagate_with_solar_surface(), 
SphericalScreen(cur_map.observer_coordinate,
-                                                         only_off_disk=True):
-        # The coordinate will automatically be transformed into the cur_map 
frame
-        intensities_transform.append(
-            (sample_at_coords(cur_map, 
intensity_coords)/cur_map.exposure_time).value)
-
-###############################################################################
-# Now we have obtained the raw data we need to prepare it for platting and
-# calculate the extents of the x and y acies for the final plot.
-
-# The above will give us a list of 1D arrays, one for each map in the sequence.
-# We need to stack them into a 2D array.
-intensities_reproject = np.vstack(intensities_reproject)
-intensities_transform = np.vstack(intensities_transform)
-
-# This defines the distance along the path in arcseconds.
-angular_separation = 
intensity_coords.separation(intensity_coords[0]).to(u.arcsec)
-
-# Get correct values for the extent
-extent = [reprojected_sub_maps[0].date.datetime, 
reprojected_sub_maps[-1].date.datetime,
-          0, angular_separation[-1].value]
-
-###############################################################################
-# Plot the reference submap, line and extracted data from both methods and
-# the difference between them.
-
-fig = plt.figure(figsize=(10, 5), layout="constrained")
-left, right = fig.subfigures(nrows=1, ncols=2, width_ratios=[0.6, 0.75])
-left_ax = left.add_subplot(111, projection=reprojected_sub_maps[0])
-right_ax = right.subplot_mosaic([['repro'], ['trans'], ['diff']],
-                                sharex=True, sharey=True)
-
-imag_ax = reprojected_sub_maps[0].plot(axes=left_ax, clip_interval=[1, 
99]*u.percent)
-plt.colorbar(imag_ax, ax=left_ax)
-left_ax.plot_coord(line_coords)
-
-right_ax['repro'].imshow(
-    intensities_reproject.T, aspect='auto', interpolation='none',
-    extent=extent, cmap=imag_ax.get_cmap()
-)
-plt.colorbar(right_ax['repro'].images[0], ax=right_ax['repro'])
-right_ax['trans'].imshow(
-    intensities_transform.T, aspect='auto', interpolation='none',
-    extent=extent, cmap=imag_ax.get_cmap()
-)
-plt.colorbar(right_ax['trans'].images[0], ax=right_ax['trans'])
-right_ax['diff'].imshow(
-    (intensities_reproject-intensities_transform).T, interpolation='none',
-    aspect='auto', extent=extent, cmap='bwr'
-)
-plt.colorbar(right_ax['diff'].images[0], ax=right_ax['diff'])
-
-locator = mdates.AutoDateLocator(minticks=4)
-formatter = mdates.ConciseDateFormatter(locator)
-right_ax['diff'].xaxis.set_major_locator(locator)
-right_ax['diff'].xaxis.set_major_formatter(formatter)
-right_ax['diff'].xaxis.set_minor_locator(mdates.MinuteLocator())
-
-right_ax['repro'].set_title('Reproject')
-right_ax['trans'].set_title('Transform')
-right_ax['diff'].set_title('Difference')
-
-right_ax['diff'].set_xlabel('Time [UTC]')
-right_ax['trans'].set_ylabel('Distance [arcsec]')
-
-plt.show()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/examples/showcase/time_distance.py 
new/sunpy-7.1.1/examples/showcase/time_distance.py
--- old/sunpy-7.1.0/examples/showcase/time_distance.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/sunpy-7.1.1/examples/showcase/time_distance.py  2026-03-26 
10:58:57.000000000 +0100
@@ -0,0 +1,184 @@
+"""
+=====================================================
+Creating a time-distance plot from a sequence of maps
+=====================================================
+
+This example showcases how you can use :func:`sunpy.map.pixelate_coord_path`
+and :func:`sunpy.map.sample_at_coords` on a sequence of images to create a
+time-distance diagram accounting for solar differential rotation using
+:func:`sunpy.coordinates.propagate_with_solar_surface` and dealing with 
off-disk
+pixels using :func:`sunpy.coordinates.screens.SphericalScreen`
+"""
+import matplotlib.dates as mdates
+import matplotlib.pyplot as plt
+import numpy as np
+
+import astropy.units as u
+from astropy.coordinates import SkyCoord
+
+import sunpy.map
+from sunpy.coordinates import propagate_with_solar_surface
+from sunpy.coordinates.screens import SphericalScreen
+from sunpy.map import pixelate_coord_path, sample_at_coords
+from sunpy.net import Fido
+from sunpy.net import attrs as a
+
+###############################################################################
+# First, we will need to acquire a sequence of images from SDO/AIA.
+# We will use a data from 2012 containing a nice example of loop oscillations.
+#
+# For the online documentation, the time range specified here is kept short,
+# but you can expand the time range to 18:05 - 18:30 to see more of the
+# oscillations.
+
+query = Fido.search(
+    a.Time('2012-10-20 18:14:00', '2012-10-20 18:19:00'),
+    a.Instrument.aia,
+    a.Wavelength(171*u.angstrom),
+)
+files = Fido.fetch(query, site="NSO")
+files = sorted(files)
+
+###############################################################################
+# Our target will be a set of loops in the corona above an active region. First
+# load the FITS files we downloaded above into map sequence and divide by the
+# exposure time. We then create a rectangular submap or cutout around the area
+# of interest. We will also define the path, in this case a line, along which
+# we want to make the time-distance plot.
+
+aia_seq = [aia_map / aia_map.exposure_time for aia_map in sunpy.map.Map(files)]
+
+corner = SkyCoord(Tx=-1150*u.arcsec, Ty=-500*u.arcsec,
+                  frame=aia_seq[0].coordinate_frame)
+ref_sub_map = aia_seq[0].submap(corner, width=250*u.arcsec, 
height=450*u.arcsec)
+
+line_coords = SkyCoord([-1030, -1057]*u.arcsec, [-220, -206]*u.arcsec,
+                       frame=aia_seq[0].coordinate_frame)
+
+###############################################################################
+# Next we can plot the full disk map, over-plotting the region of interest and
+# also plot the submap and the line along which we want to make the
+# time-distance plot.
+
+fig = plt.figure(figsize=(9, 5))
+
+full_disk_ax = fig.add_subplot(121, projection=aia_seq[0])
+aia_seq[0].plot(axes=full_disk_ax, clip_interval=[1, 99.9]*u.percent)
+ref_sub_map.draw_extent(axes=full_disk_ax)
+
+sub_map_ax = fig.add_subplot(122, projection=ref_sub_map)
+ref_sub_map.plot(axes=sub_map_ax, clip_interval=[1, 99.9]*u.percent)
+sub_map_ax.plot_coord(line_coords)
+
+###############################################################################
+# There are two approaches that can be used to extract time distance
+# measurements from the data:
+#
+# 1. Reproject all the maps to a common world coordinate system (WCS)
+# 2. Transform the coordinates of the line extracted from the reference map
+#    to the coordinate systems of the subsequent maps
+#
+# We will use both and show they achieve almost the same results. Choosing 
which
+# approach to use will depend on the exact use case.
+#
+# We will start with the first approach and reproject all the maps to a common 
WCS
+# defined by ``ref_sub_map.wcs`` while also taking account of differential 
rotation
+# using :func:`~sunpy.coordinates.propagate_with_solar_surface` and off-disk 
pixels
+# using :func:`~sunpy.coordinates.screens.SphericalScreen`.
+
+reprojected_sub_maps = []
+for cur_map in aia_seq:
+    with (propagate_with_solar_surface(),
+          SphericalScreen(cur_map.observer_coordinate, only_off_disk=True)):
+        reprojected_sub_maps.append(cur_map.reproject_to(ref_sub_map.wcs, 
preserve_date_obs=True))
+
+###############################################################################
+# Now that we have reprojected all the maps to a common WCS, we can extract the
+# pixel coordinates once using :func:`~sunpy.map.pixelate_coord_path` to
+# determine the coordinates for every pixel that intersects with the physical
+# path and then use :func:`~sunpy.map.sample_at_coords` to sample the data at
+# these coordinates.
+
+# As the maps are all aligned only need to extract the coordinates once
+intensity_coords = pixelate_coord_path(aia_seq[0], line_coords)
+
+intensities_reproject = []
+
+for aia_map in reprojected_sub_maps:
+    intensities_reproject.append(sample_at_coords(aia_map, intensity_coords))
+
+###############################################################################
+# For the second approach we need to transform the ``intensity_coords`` into
+# the coordinate frame of each map and then extract the data at corresponding
+# pixel coordinates.
+
+intensities_transform = []
+for cur_map in aia_seq:
+    with (propagate_with_solar_surface(),
+          SphericalScreen(cur_map.observer_coordinate, only_off_disk=True)):
+        # The coordinate will automatically be transformed into the cur_map 
frame
+        intensities_transform.append(sample_at_coords(cur_map, 
intensity_coords))
+
+###############################################################################
+# Now that we have obtained the raw data, we need to prepare it for plotting
+# and calculate the extents of the x and y axes for the final plot.
+
+# The above will give us a list of 1D arrays, one for each map in the sequence.
+# We need to stack them into a 2D array.
+
+intensities_reproject = np.stack(intensities_reproject, axis=1).value
+intensities_transform = np.stack(intensities_transform, axis=1).value
+
+# This defines the distance along the path in arcseconds.
+angular_separation = 
intensity_coords.separation(intensity_coords[0]).to(u.arcsec)
+
+# Get correct values for the extent
+extent = [reprojected_sub_maps[0].date.datetime, 
reprojected_sub_maps[-1].date.datetime,
+          0, angular_separation[-1].value]
+
+###############################################################################
+# Plot the reference submap, line and extracted data from both approaches and
+# the difference between them.
+
+fig = plt.figure(figsize=(10, 5), layout="constrained")
+left, right = fig.subfigures(nrows=1, ncols=2, width_ratios=[0.6, 0.75])
+left_ax = left.add_subplot(111, projection=reprojected_sub_maps[0])
+right_ax = right.subplot_mosaic([['repro'], ['trans'], ['diff']],
+                                sharex=True, sharey=True)
+
+imag_ax = reprojected_sub_maps[0].plot(axes=left_ax, clip_interval=[1, 
99.9]*u.percent)
+plt.colorbar(imag_ax, ax=left_ax)
+left_ax.plot_coord(line_coords)
+
+right_ax['repro'].imshow(
+    intensities_reproject, aspect='auto', interpolation='none',
+    extent=extent, cmap=imag_ax.get_cmap()
+)
+plt.colorbar(right_ax['repro'].images[0], ax=right_ax['repro'])
+right_ax['trans'].imshow(
+    intensities_transform, aspect='auto', interpolation='none',
+    extent=extent, cmap=imag_ax.get_cmap()
+)
+plt.colorbar(right_ax['trans'].images[0], ax=right_ax['trans'])
+right_ax['diff'].imshow(
+    intensities_reproject - intensities_transform, interpolation='none',
+    aspect='auto', extent=extent, cmap='bwr'
+)
+plt.colorbar(right_ax['diff'].images[0], ax=right_ax['diff'])
+
+locator = mdates.AutoDateLocator(minticks=4)
+formatter = mdates.ConciseDateFormatter(locator)
+right_ax['diff'].xaxis.set_major_locator(locator)
+right_ax['diff'].xaxis.set_major_formatter(formatter)
+right_ax['diff'].xaxis.set_minor_locator(mdates.MinuteLocator())
+
+right_ax['repro'].set_title('Reproject approach')
+right_ax['trans'].set_title('Transform approach')
+right_ax['diff'].set_title('Difference between the approaches')
+
+right_ax['diff'].set_xlabel('Time [UTC]')
+right_ax['trans'].set_ylabel('Distance [arcsec]')
+
+plt.show()
+
+# sphinx_gallery_thumbnail_number = -1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/pyproject.toml 
new/sunpy-7.1.1/pyproject.toml
--- old/sunpy-7.1.0/pyproject.toml      2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/pyproject.toml      2026-03-26 10:58:57.000000000 +0100
@@ -93,14 +93,15 @@
 ]
 core = ["sunpy[image,map,net,timeseries,visualization]"]
 all = ["sunpy[core,asdf,jpeg2000,opencv,spice,scikit-image]"]
-# Because of some real *fun* dependency constraints between aiobotocore, s3fs
-# and boto3 this is the best way to get s3fs and boto3 (needed for cdflib)
-# installed simultaneously. We only use this extra for tests, but it is
-# provided separate for users who want to opt-in to s3 support. It should not 
be
-# included in [all] or conda deps.
+# We only use this extra for tests, but it is provided separate for
+# users who want to opt-in to s3 support. It should not be included in
+# [all] or conda deps.
+# We also can't easily test this in oldestdeps because of
+# co-versioning of aiobotocore & boto3 / botocore
 s3 = [
   "fsspec[s3]>=2023.6.0",
-  "aiobotocore[boto3]>=2.6.0",  # cdflib has it's own special s3 handling 
which requires boto3
+  "aiobotocore>=2.6.0",
+  "boto3>=1.31.17",
 ]
 jupyter = [
   "itables>=2.2.4",
@@ -110,6 +111,7 @@
 tests-only = [
   "hvpy>=1.1.0",
   "jplephem>=2.19",
+  "psutil>=6.0.0",
   "pytest-astropy>=0.11.0",
   "pytest-mpl>=0.18.0",
   "pytest>=7.4.0",
@@ -138,6 +140,7 @@
   "sunpy-sphinx-theme>=2.0.3",
   "sphinxcontrib-bibtex",
   "joblib", # for sphinx-gallery parallel
+  "sphinx-autodoc-typehints",
 ]
 docs-gallery = [
   "sunpy[docs]",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/pytest.ini new/sunpy-7.1.1/pytest.ini
--- old/sunpy-7.1.0/pytest.ini  2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/pytest.ini  2026-03-26 10:58:57.000000000 +0100
@@ -67,3 +67,11 @@
     ignore::sunpy.util.exceptions.SunpyConnectionWarning
     # parfive sometimes spews this in oldestdeps
     ignore:This download has been started in a thread which is not the main 
thread. You will not be able to interrupt the download.
+    # pyparsing 3.3 raises dep warnings with old mpl in oldestdeps
+    ignore::pyparsing.warnings.PyparsingDeprecationWarning
+    # devdeps - numpy 2.5 has deprecated setting .shape
+    # https://github.com/quintusdias/glymur/issues/717
+    ignore:Setting the shape on a NumPy array has been 
deprecated.*:DeprecationWarning:glymur.jp2kr
+    ignore:Setting the shape on a NumPy array has been 
deprecated.*:DeprecationWarning:reproject.adaptive.core
+    # A transient error from Angle.to_string
+    ignore:invalid value encountered in do_format \(vectorized\):RuntimeWarning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/_version.py 
new/sunpy-7.1.1/sunpy/_version.py
--- old/sunpy-7.1.0/sunpy/_version.py   2025-12-08 16:19:11.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/_version.py   2026-03-26 10:59:06.000000000 +0100
@@ -1,5 +1,6 @@
-# file generated by setuptools-scm
+# file generated by vcs-versioning
 # don't change, don't track in version control
+from __future__ import annotations
 
 __all__ = [
     "__version__",
@@ -10,25 +11,14 @@
     "commit_id",
 ]
 
-TYPE_CHECKING = False
-if TYPE_CHECKING:
-    from typing import Tuple
-    from typing import Union
-
-    VERSION_TUPLE = Tuple[Union[int, str], ...]
-    COMMIT_ID = Union[str, None]
-else:
-    VERSION_TUPLE = object
-    COMMIT_ID = object
-
 version: str
 __version__: str
-__version_tuple__: VERSION_TUPLE
-version_tuple: VERSION_TUPLE
-commit_id: COMMIT_ID
-__commit_id__: COMMIT_ID
+__version_tuple__: tuple[int | str, ...]
+version_tuple: tuple[int | str, ...]
+commit_id: str | None
+__commit_id__: str | None
 
-__version__ = version = '7.1.0'
-__version_tuple__ = version_tuple = (7, 1, 0)
+__version__ = version = '7.1.1'
+__version_tuple__ = version_tuple = (7, 1, 1)
 
-__commit_id__ = commit_id = 'gba75be8fc'
+__commit_id__ = commit_id = 'g5984e5d5b'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/coordinates/spice.py 
new/sunpy-7.1.1/sunpy/coordinates/spice.py
--- old/sunpy-7.1.0/sunpy/coordinates/spice.py  2025-12-08 16:19:01.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy/coordinates/spice.py  2026-03-26 10:58:57.000000000 
+0100
@@ -162,7 +162,7 @@
 
 
 def _convert_to_et(time):
-    return (time - _ET_REF_EPOCH).to_value('s')
+    return (time.tdb - _ET_REF_EPOCH).to_value('s')
 
 
 def _astropy_frame_name(spice_frame_name):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/coordinates/tests/test_spice.py 
new/sunpy-7.1.1/sunpy/coordinates/tests/test_spice.py
--- old/sunpy-7.1.0/sunpy/coordinates/tests/test_spice.py       2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/coordinates/tests/test_spice.py       2026-03-26 
10:58:57.000000000 +0100
@@ -230,3 +230,13 @@
                                  [-0.23020788,  0.97314148, 0],
                                  [0, 0, 1]])
     np.testing.assert_allclose(result2, expected_result2, atol=1e-6)
+
+
+def test_ephemeris_time(spice_test):
+    # SPICE uses an approximation for UTC->ET that has an accuracy of only 
3e-5 seconds
+    # Test the example in the docstring for the SPICE function utc2et()
+    utc = parse_time('2003-12-19 16:48')
+    np.testing.assert_allclose(spice._convert_to_et(utc), 125124544.183560610, 
rtol=0, atol=3e-5)
+    # Test the example in the docstring for the SPICE function et2utc()
+    utc = parse_time('1983-04-13 12:09:14.274')
+    np.testing.assert_allclose(spice._convert_to_et(utc), -527644192.5403653, 
rtol=0, atol=3e-5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/extern/distro_license.rst 
new/sunpy-7.1.1/sunpy/extern/distro_license.rst
--- old/sunpy-7.1.0/sunpy/extern/distro_license.rst     2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/extern/distro_license.rst     2026-03-26 
10:58:57.000000000 +0100
@@ -199,4 +199,3 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/io/tests/test_ana.py 
new/sunpy-7.1.1/sunpy/io/tests/test_ana.py
--- old/sunpy-7.1.0/sunpy/io/tests/test_ana.py  2025-12-08 16:19:01.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy/io/tests/test_ana.py  2026-03-26 10:58:57.000000000 
+0100
@@ -17,9 +17,7 @@
 
 @pytest.fixture(scope="module")
 def img_src(img_size):
-    img = np.arange(np.prod(img_size))
-    img.shape = img_size
-    return img
+    return np.reshape(np.arange(np.prod(img_size)), img_size)
 
 
 @pytest.fixture(scope="module")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sunpy-7.1.0/sunpy/map/sources/tests/test_hmi_source.py 
new/sunpy-7.1.1/sunpy/map/sources/tests/test_hmi_source.py
--- old/sunpy-7.1.0/sunpy/map/sources/tests/test_hmi_source.py  2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/map/sources/tests/test_hmi_source.py  2026-03-26 
10:58:57.000000000 +0100
@@ -1,6 +1,7 @@
 """
 Test cases for SDO HMIMap subclass.
 """
+import psutil
 import pytest
 
 import astropy.units as u
@@ -106,3 +107,25 @@
     hmi_bharp_map.pixel_to_world(0*u.pix, 0*u.pix)
     hmi_cea_sharp_map.pixel_to_world(0*u.pix, 0*u.pix)
     hmi_sharp_map.pixel_to_world(0*u.pix, 0*u.pix)
+
+
+# We use our sample HMI image to test memory mapping because it is large (8 MB 
data array)
[email protected]_data
+def test_memmap():
+    process = psutil.Process()
+
+    initial = process.memory_info()
+
+    from sunpy.data.sample import HMI_LOS_IMAGE
+    hmi_map = Map(HMI_LOS_IMAGE)
+
+    instantiated = process.memory_info()
+    assert instantiated.vms - initial.vms > 8e6  # The memory-mapped array is 
addressable
+    assert instantiated.rss - initial.rss < 1e6  # but has not yet been read
+
+    # Force a read of every element in the data array
+    _ = hmi_map.data.max()
+
+    accessed = process.memory_info()
+    assert accessed.vms - instantiated.vms < 1e6  # The addressable memory has 
not changed
+    assert accessed.rss - instantiated.rss > 8e6  # but the array has now been 
read
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sunpy-7.1.0/sunpy/net/dataretriever/sources/rhessi.py 
new/sunpy-7.1.1/sunpy/net/dataretriever/sources/rhessi.py
--- old/sunpy-7.1.0/sunpy/net/dataretriever/sources/rhessi.py   2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/net/dataretriever/sources/rhessi.py   2026-03-26 
10:58:57.000000000 +0100
@@ -91,7 +91,7 @@
         try:
             urlopen(server, timeout=1)
             return server
-        except (TimeoutError, RemoteDisconnected, URLError):
+        except (TimeoutError, ConnectionResetError, RemoteDisconnected, 
URLError):
             pass
     raise OSError(f'Unable to find an online HESSI server from {data_servers}')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sunpy-7.1.0/sunpy/net/dataretriever/sources/tests/test_goes_ud.py 
new/sunpy-7.1.1/sunpy/net/dataretriever/sources/tests/test_goes_ud.py
--- old/sunpy-7.1.0/sunpy/net/dataretriever/sources/tests/test_goes_ud.py       
2025-12-08 16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/net/dataretriever/sources/tests/test_goes_ud.py       
2026-03-26 10:58:57.000000000 +0100
@@ -42,9 +42,9 @@
       
'https://www.ncei.noaa.gov/data/goes-space-environment-monitor/access/science/xrs/goes10/xrsf-l2-avg1m_science/2008/06/sci_xrsf-l2-avg1m_g10_d20080604_v1-0-0.nc'),
      (Time('2020/08/02', '2020/08/04'),
       
'https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/'
-      
'goes16/l2/data/xrsf-l2-flx1s_science/2020/08/sci_xrsf-l2-flx1s_g16_d20200802_v2-2-0.nc',
+      
'goes16/l2/data/xrsf-l2-flx1s_science/2020/08/sci_xrsf-l2-flx1s_g16_d20200802_v2-2-1.nc',
       
'https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/'
-      
'goes17/l2/data/xrsf-l2-avg1m_science/2020/08/sci_xrsf-l2-avg1m_g17_d20200804_v2-2-0.nc')])
+      
'goes17/l2/data/xrsf-l2-avg1m_science/2020/08/sci_xrsf-l2-avg1m_g17_d20200804_v2-2-1.nc')])
 def test_get_url_for_time_range(LCClient, timerange, url_start, url_end):
     qresponse = LCClient.search(timerange)
     urls = [i['url'] for i in qresponse]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/net/scraper.py 
new/sunpy-7.1.1/sunpy/net/scraper.py
--- old/sunpy-7.1.0/sunpy/net/scraper.py        2025-12-08 16:19:01.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy/net/scraper.py        2026-03-26 10:58:57.000000000 
+0100
@@ -247,12 +247,15 @@
         Goes over locally stored archives to return list of files in the given 
timerange.
         """
         pattern, datetime_pattern = self.pattern, self.datetime_pattern
-        pattern_temp, datetime_pattern_temp = pattern.replace('file://', ''), 
datetime_pattern.replace('file://', '')
         if os.name == 'nt':
+            pattern_temp, datetime_pattern_temp = (pattern.replace('file:///', 
''),
+                                                   
datetime_pattern.replace('file:///',''))
             pattern_temp = pattern_temp.replace('\\', '/')
             datetime_pattern_temp = datetime_pattern_temp.replace('\\', '/')
             prefix = 'file:///'
         else:
+            pattern_temp, datetime_pattern_temp = (pattern.replace('file://', 
''),
+                                                   
datetime_pattern.replace('file://',''))
             prefix = 'file://'
         # Change pattern variables class-wide
         self.pattern, self.datetime_pattern = pattern_temp, 
datetime_pattern_temp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/net/tests/test_scraper.py 
new/sunpy-7.1.1/sunpy/net/tests/test_scraper.py
--- old/sunpy-7.1.0/sunpy/net/tests/test_scraper.py     2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/net/tests/test_scraper.py     2026-03-26 
10:58:57.000000000 +0100
@@ -110,7 +110,7 @@
 
 
 def test_files_range_same_directory_local():
-    s = Scraper(format='/'.join(['file:/', str(rootdir),
+    s = Scraper(format='/'.join([rootdir.as_uri(),
                           'EIT_header', 
'efz{{year:4d}}{{month:2d}}{{day:2d}}.{{hour:2d}}{{minute:2d}}{{second:2d}}_s.header']))
     startdate = parse_time((2004, 3, 1, 4, 0))
     enddate = parse_time((2004, 3, 1, 6, 30))
@@ -322,6 +322,8 @@
     path.mkdir(parents=True)
     with (path / 'test.txt').open('w') as file:
         file.write('')
-    s = 
Scraper(format='file://'+str(tmp_path)+'/{{year:4d}}/{{month:2d}}/{{day:2d}}/{{file}}')
+    s = Scraper(format='/'.join([tmp_path.as_uri(), '{{year:4d}}', 
'{{month:2d}}', '{{day:2d}}', '{{file}}']))
     files = s.filelist(TimeRange("2025-01-01", "2025-01-02"))
+    meta = s._extract_files_meta(TimeRange("2025-01-01", "2025-01-02"))
     assert len(files) == 1
+    assert len(meta) == 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy/net/vso/tests/test_vso.py 
new/sunpy-7.1.1/sunpy/net/vso/tests/test_vso.py
--- old/sunpy-7.1.0/sunpy/net/vso/tests/test_vso.py     2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/net/vso/tests/test_vso.py     2026-03-26 
10:58:57.000000000 +0100
@@ -429,15 +429,15 @@
 @pytest.mark.remote_data
 def test_table_has_info_required_swap(client):
     res = client.search(a.Time('2020/02/15 00:00:00', '2020/02/15 20:00:00'), 
a.Instrument('swap'), a.Provider('ESA'), a.Source('PROBA2'))
-    assert 'Info Required' in res.keys()
     assert len(res) > 0
+    assert 'Info Required' in res.keys()
 
 
 @pytest.mark.remote_data
 def test_table_has_info_required_lyra(client):
     res = client.search(a.Time('2020/02/15 00:00:00', '2020/02/17 20:00:00'), 
a.Instrument('lyra'), a.Provider('ESA'), a.Source('PROBA2'))
-    assert 'Info Required' in res.keys()
     assert len(res) > 0
+    assert 'Info Required' in res.keys()
 
 
 @pytest.mark.remote_data
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sunpy-7.1.0/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json
 
new/sunpy-7.1.1/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json
--- 
old/sunpy-7.1.0/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json
     2025-12-08 16:19:01.000000000 +0100
+++ 
new/sunpy-7.1.1/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json
     2026-03-26 10:58:57.000000000 +0100
@@ -1,94 +1,94 @@
 {
-  "sunpy.image.tests.test_transform.test_clipping": 
"f36c82068789b048d5855315f295e2404c85b0a63ec77de0e294d58b43c9acaf",
+  "sunpy.image.tests.test_transform.test_clipping": 
"3d4d308a9807a7e0f5f71e5a77f04e671c65c8eb13fe3c6c4d3cfc68c2cf0650",
   "sunpy.image.tests.test_transform.test_nans": 
"776e5a2c12bbbff9f5f9de647052cd2ad1be03b39586b91502c8ebba08e87c1b",
-  "sunpy.map.tests.test_compositemap.test_autoalign_needed": 
"12a284018acc0dda759811d4c1a9284b64a7e5daf1e734af81bbe08186e71a8b",
-  "sunpy.map.tests.test_compositemap.test_autoalign_not_needed": 
"a63a3f9869f2469d4c8bd28aabbdb8af60b149c98c6fa6621a29033c834b870d",
-  "sunpy.map.tests.test_compositemap.test_plot_composite_map": 
"12a284018acc0dda759811d4c1a9284b64a7e5daf1e734af81bbe08186e71a8b",
-  "sunpy.map.tests.test_compositemap.test_plot_composite_map_contours": 
"d15b78d32f70070f184649bda698d0db2f478b3156ecf64ef472bd9c23333571",
-  "sunpy.map.tests.test_compositemap.test_plot_composite_map_linewidths": 
"7d3d7a72037c7288ae370230718d35b1acd5fb1f9e5608d00ef893296508527e",
-  "sunpy.map.tests.test_compositemap.test_plot_composite_map_linestyles": 
"43292e5414ab0312e78ecdb3d888983ac6f68056dc4b62d6b54a3d3f6b5ae69a",
-  "sunpy.map.tests.test_compositemap.test_plot_composite_map_colors": 
"e59cb5994a95de275b82c85e2c1ec151c5da2bf33e82422560dd8a873c1ba90a",
-  "sunpy.map.tests.test_compositemap.test_set_alpha_composite_map": 
"a21251e4d39d1cdb07ebcb663f614186f83c8ff2166ccf80fcfa000cddad58e2",
-  "sunpy.map.tests.test_compositemap.test_peek_composite_map": 
"39c0e9f56bd946e3fa5a2527ebc9878b4693888e3445d129ed9ce02aecd51d11",
-  "sunpy.map.tests.test_map_factory.test_map_jp2_HMI": 
"a7098f65fd06e81723ab8310f8873d69bcc220100ceafa8edc24dfb07caa937c",
-  "sunpy.map.tests.test_mapbase.test_rotation_rect_pixelated_data": 
"d722cee25ad829b78b9391b7f8f417c27e8e5f14c62b9882728590d2fce5fb11",
-  "sunpy.map.tests.test_mapbase.test_draw_contours_with_transform": 
"8457f35cac695c52895d16d7a0e832c3884c5289b9b4e3931fd64171a7b1bdd0",
-  "sunpy.map.tests.test_mapbase.test_draw_simple_map": 
"2f4032dd840abdef6fcf36c37931b94079964e05529ef6d656171041d795c331",
-  "sunpy.map.tests.test_mapbase.test_draw_carrington_map": 
"cc9e66c8928c9dea753c2b2d5894873a199c3e5137df2387b1c0427e69a66833",
-  "sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[scipy]": 
"c15c6c707b3b0e707936988054aeb818eee7b39e2249db5309ca43585d325a51",
-  
"sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[scikit-image]":
 "911a0442055922f0d31dd48d8f1ede3d1b8b4d11a55f00a3403e8124761c2346",
-  "sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[opencv]": 
"072505693731f65824dcaa7f0843087990f15f34b519285a2bc8965a1fa0ed37",
-  "sunpy.map.tests.test_mapsequence.test_norm_animator": 
"2241b65ed7126250eb14ebbcd095ef4a1f696ad737a4e975ff8e66a007667487",
-  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot": 
"86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
-  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_cmap_norm": 
"541450f6bb90fce447bc49875d9eb44fba2522989bcac73867bde73891f61b4d",
-  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_clip_interval": 
"33bcd1f8416ff92deffad5482bf76ad620c2cb6c7a69f91eacfa5a2e508d34f0",
-  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_title": 
"4ad766af63ce731a89a88287359af7c6b5cd0e28dde2c4d92855aa3dbcf2da97",
-  "sunpy.map.tests.test_plotting.test_plot_aia171": 
"86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
-  "sunpy.map.tests.test_plotting.test_plot_rotated_aia171": 
"982363a267e12a380c48c02ab73a98bbadae4ce54f4b621898f815aac2daf040",
-  "sunpy.map.tests.test_plotting.test_plot_aia171_clip": 
"29b93bbe004670248aed9ddde8c5f8e6eda2d975d6c046f05a9c4a5f144caf2c",
-  "sunpy.map.tests.test_plotting.test_peek_aia171": 
"c79e2f18baab464e013a21904e69660530f653bf43af1758d29e0d95f21c5ba6",
-  "sunpy.map.tests.test_plotting.test_peek_grid_aia171": 
"1d4e670d3c2017896cd2d7b861b51bcc4c0f2fcb519c1b965549d5d166c7adf6",
-  "sunpy.map.tests.test_plotting.test_peek_grid_spacing_aia171": 
"4a26d4320a833b61fc13a9d8c6ac47e0d76618cc9fe85a6c7060fd6a3aad5492",
-  "sunpy.map.tests.test_plotting.test_peek_limb_aia171": 
"a10e3df6a8e400497f6d1d4e4daf310359b004ba151d47b53b482c65292a27f2",
-  "sunpy.map.tests.test_plotting.test_draw_grid_aia171": 
"b79d398979cb49de197d47482ff70ad1e2d8ef4169fc437af99bb5aca0c9a952",
-  "sunpy.map.tests.test_plotting.test_peek_grid_limb_aia171": 
"c7ff79866c7cd17ec8dbd1872032080a003125be8fdd6c9babfea27a9bb8ffd6",
-  "sunpy.map.tests.test_plotting.test_rectangle_aia171_width_height": 
"2d92a7b78edea18f6e14d62dcaff46448137270eb31a1552c80b570092fb3dc3",
-  "sunpy.map.tests.test_plotting.test_rectangle_aia171_top_right": 
"c691c8232a7b775c43c955153e8b79b3022bbc1d8f0ccc9607da635279b0bb43",
-  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_width_height": 
"545e2056688bd4903fe93cbe8e81a33d0020690f7842d4237f75438381c4a5b6",
-  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_width_height": 
"ab094f1c23b454913db9e31c1a8faf6fc69fd196688c1b569bb22d261b127f55",
-  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_top_right": 
"4c7026849d4ccf1a9b38eb669de3ecf83523e20a6e784bea4fad5feb57f37d3d",
-  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_top_right": 
"586d82cd41587965becb6793956d2855d96da84a4791acc7de5e52b6f77e6ad0",
-  
"sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_top_right_different_axes":
 "47f6153e288bcc952fc5e0e8600d180550f3f20ef69d7b6090208b511b81eed6",
-  "sunpy.map.tests.test_plotting.test_plot_masked_aia171": 
"738b6d265e9a6c534204f44912048566289c59f89aa8d98345969db835f7e834",
-  "sunpy.map.tests.test_plotting.test_plot_aia171_superpixel": 
"02f8b342f79e2395052ee851cb785fc0f208c10a26bb6a6547e71e4da12d9a6c",
-  "sunpy.map.tests.test_plotting.test_plot_resample": 
"df6313df2fbf65d1f9aaf018677772c05750dcbd3e0098f34ca41cc40e5d8815",
-  "sunpy.map.tests.test_plotting.test_plot_superpixel": 
"45ebdec700a7699f7aaea6e86b22c049c65ed3c457aa2e0f5b53d135b9f54c79",
-  "sunpy.map.tests.test_plotting.test_plot_masked_aia171_superpixel": 
"854f60a854e0f3166762c94831445b83f5402a8aa70e34013616f7e4074476fe",
-  
"sunpy.map.tests.test_plotting.test_plot_masked_aia171_superpixel_conservative_mask_true":
 "bfddc88bf59694f4ed3499d14ca85937e70287efaf7e9d3c79ba6c7fc5977ccf",
-  "sunpy.map.tests.test_plotting.test_draw_contours_aia": 
"90f83a5c24fdd88a1d14807034ba2b4ee1644d3f53745935eb8e537a2acc2b9a",
-  "sunpy.map.tests.test_plotting.test_draw_contours_different_wcs": 
"9cbb12775ed1da71226dcc500f434bdf0ece76d54894942fb34c1805d8d11de0",
-  "sunpy.map.tests.test_plotting.test_draw_contours_aia_fill": 
"abd8a02404ddcd6a4490b6b4a7d7bb0987fec7fa74cec9224bf58dcbad19985b",
-  "sunpy.map.tests.test_plotting.test_heliographic_peek": 
"662a24f525b30ce89ba15b7668518f31d439fa8b0c5ba84da2a71bbda31edb9a",
-  "sunpy.map.tests.test_plotting.test_heliographic_quadrangle_width_height": 
"a52dca9100f3f96644e924f283c7ba9bd26db115be3a8e19b91898406d06f9ba",
-  "sunpy.map.tests.test_plotting.test_heliographic_quadrangle_top_right": 
"40591e49e6b32ec3a27b6fc50b9e2fdfcaa9665eca70b6a515dfb9dc7c0b1724",
+  "sunpy.map.tests.test_compositemap.test_autoalign_needed": 
"82c6eeadafcabd3e9e525f83ee02ef5d603082d1b7356736041405f52694c792",
+  "sunpy.map.tests.test_compositemap.test_autoalign_not_needed": 
"f1ae5d46dbd1dfbd95e3766f98c31778220663ed4d88cc9627c2522092bab22e",
+  "sunpy.map.tests.test_compositemap.test_peek_composite_map": 
"48ffab3c2e79f083588a665afb008af7d2f2867183ed24dd7988dcf7d5aceabc",
+  "sunpy.map.tests.test_compositemap.test_plot_composite_map": 
"82c6eeadafcabd3e9e525f83ee02ef5d603082d1b7356736041405f52694c792",
+  "sunpy.map.tests.test_compositemap.test_plot_composite_map_colors": 
"a44726ea33a1e39a846fe6b1ec6f063a311f47c2c468e86985cd22c67c87fe77",
+  "sunpy.map.tests.test_compositemap.test_plot_composite_map_contours": 
"12ccc5f578614ebe0b37ba8e9b63e6d3e95b3c595e98705968f2ef8d8c5693ed",
+  "sunpy.map.tests.test_compositemap.test_plot_composite_map_linestyles": 
"5478542c64be610c991b727393aef216dbb6d3da85ec763d484b1a1873455a86",
+  "sunpy.map.tests.test_compositemap.test_plot_composite_map_linewidths": 
"08481651b4fdff6d93567b89eec3647ff6869c9099a4b36a597c8913af1df4e7",
+  "sunpy.map.tests.test_compositemap.test_set_alpha_composite_map": 
"c38147ed9c41ab3a3310e60f321d17bb4e16a8077963c24799b9628b34b6f616",
+  "sunpy.map.tests.test_map_factory.test_map_jp2_HMI": 
"2eef1b68d7352bb299d7bbc2b5d3d8f3aa7c1dfd5e2116c915bb64d742bb4a44",
+  "sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[opencv]": 
"72f1dcce4cace519c0e68a514b8b08437c8244685654ece27a06e8c10ae470d7",
+  
"sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[scikit-image]":
 "faab0f5e28ff6cc93d1a80456e34300d44618acc3d57543ce786a20c8ce25d8b",
+  "sunpy.map.tests.test_mapbase.test_derotating_nonpurerotation_pcij[scipy]": 
"c8e919e5b5c8ed6485e9b1d5e002aa380f30d848c2af2d77cac5d185d1a66442",
+  "sunpy.map.tests.test_mapbase.test_draw_carrington_map": 
"1b03d5f7eef721492e58e9e6420078223acbe54dd6cde5a1a934506ac9d3e39d",
+  "sunpy.map.tests.test_mapbase.test_draw_contours_with_transform": 
"52d9589b67abf11d554b2c88b2e08f46ba719838a724c32675c3ccd7ec0201be",
+  "sunpy.map.tests.test_mapbase.test_draw_simple_map": 
"61b1f3381bbda0da5769c8ab9ce006470794d5175682c040d09e60df43d073b0",
+  "sunpy.map.tests.test_mapbase.test_rotation_rect_pixelated_data": 
"a044791b96520b24a26ac7aca129657f6c20f2ab422ef85b4a5fd070006ad456",
+  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot": 
"683ee918c3f72dfb533d38aaaf40b4f5133fb5a161661b884feaa2b3640b84f8",
+  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_clip_interval": 
"850904ee981a23f914dcb90ad29eebd78d4cbaf9ba03e9fbd979a739ca708a17",
+  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_cmap_norm": 
"045b4390351310707e99ccd3f1fd2e01ae9c075b99fb3e4b2131c5ed161d73e6",
+  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_title": 
"9db000405d46b2985c83f75d54c2f7b1b62e7e046d3d15facd1a5e091356456f",
+  "sunpy.map.tests.test_mapsequence.test_norm_animator": 
"f09dcfc8152526da4e33eda932273775a03276c508009c949e78aa476b15e438",
+  "sunpy.map.tests.test_plotting.test_draw_contours_aia": 
"b852393357ea5072feee3d3748263426a4328a66bdd78bee07b38384c8465740",
+  "sunpy.map.tests.test_plotting.test_draw_contours_aia_fill": 
"c503dd17fc11874452f5e778e283d3e70e1fd47ef95158a4ae68a23564cc241e",
+  "sunpy.map.tests.test_plotting.test_draw_contours_different_wcs": 
"0109fdd15e8e4e95037279813d182706fd39431ab91f29b4e257196dead4cbce",
+  "sunpy.map.tests.test_plotting.test_draw_grid_aia171": 
"36cf119197d832d23294316a9f2aff5138b87d246bdf941886518d1e31b63afe",
+  "sunpy.map.tests.test_plotting.test_draw_limb_different_observer": 
"87c1d52e34efb02b1fb99b2343a28b907a9d262f2c3fbfb711cb16c00c74a929",
+  "sunpy.map.tests.test_plotting.test_draw_limb_heliographic_stonyhurst": 
"ffc7d30b8739d7eace36cee2221a4433534fcc1a55baeda0a587f57bfb52add8",
   "sunpy.map.tests.test_plotting.test_heliographic_grid_annotations": 
"c7c08b2b6dae1b96c303345b04682060da97a1b304e7f25bcfd40b2154751465",
-  "sunpy.map.tests.test_plotting.test_draw_limb_different_observer": 
"bba8a5d3d8e5e3e3a7d36060d9730e4545c5250367902cf97048c33049f330f3",
-  "sunpy.map.tests.test_plotting.test_draw_limb_heliographic_stonyhurst": 
"fcbf6be2894be891f458d2bc305702564cb451052bc727b0175e7b6ad527801c",
-  "sunpy.map.tests.test_plotting.test_map_draw_extent": 
"c51113113a46c838b07b049a3f17940184b99b0a56200fbd63e6cf2bf1e3c86c",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign[True]": 
"c86e4af4907f01f104f38bb56746744ee99a95fe85dfd843d7baa56723265f3e",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign[mesh]": 
"197f06eced7fe4bf8496cf5f3ba4e4cc379ac108be0f212d605007c1e3db062c",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign[image]": 
"c86e4af4907f01f104f38bb56746744ee99a95fe85dfd843d7baa56723265f3e",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign_datalim": 
"a5af424f5d70394d4e39a7066793463bec0adae17c9ab46a451640957822bc8d",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign_pixel_alignment": 
"411b3ea8353e00f644225c866c55fc6532c855ea8e19dd8355965fdbbef2de20",
-  "sunpy.map.tests.test_plotting.test_plot_autoalign_image_incomplete": 
"fc2520d17414d0f742e7c62ed0a189f311f5f468329b20dbf714e71b0a5fa7fa",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_hgs": 
"90452e9e8f248f8798a794ba70e157bf0eb87a083bda55a8ffc846c2024b1363",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_interpolation": 
"adca79ed26b0139f29c5c0bec63d1a818fe8ba0cd718923d952210e6e8ca801c",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_exact": 
"a772b4ba8deeb611c683d86911bf0b5acb90a3b307b1064c1d04511050810eed",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_adaptive": 
"ee2cc06c8ed27369e1b2cd6b5d16688663ee061e3d84a3ccee09923bae10b16c",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[None]": 
"b13da12347894b1c2e57ea695e32184682e94fb5740d19158de1428cb7bf3044",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[corners]": 
"38c68217d6de2ee13fe7937a57281344e5686e68d3cc8367e66f58023e4509a6",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[edges]": 
"0557a116b9155a6c530763288ed389e20f2c24270b258693cf2678a98fb4c763",
-  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[all]": 
"ebdec2de9108f377ac54f171863795dd1ba7854a04f174a2fa35a5c6ccaafe9e",
-  
"sunpy.map.tests.test_reproject_to.test_reproject_to_screen_plus_diffrot[SphericalScreen]":
 "635663c210e588cc441d86d3710884a00ce0a23d67a549df274284bfa5a22285",
-  
"sunpy.map.tests.test_reproject_to.test_reproject_to_screen_plus_diffrot[PlanarScreen]":
 "30fae92a5cf0b211b07cf19dcd660351aad5da91b67ce8032d6b1b20e211fe0b",
-  "sunpy.timeseries.sources.tests.test_eve.test_esp_peek": 
"28b1e7af0e1894d22fd9db90d9e2bc5eb76e291c9e41fa1bb1d33d95bd13cce3",
+  "sunpy.map.tests.test_plotting.test_heliographic_peek": 
"cd1968b8b0b6b5447ce739a3d4728721d59d6f0f26c25ca0d333cb0e05f043ce",
+  "sunpy.map.tests.test_plotting.test_heliographic_quadrangle_top_right": 
"40591e49e6b32ec3a27b6fc50b9e2fdfcaa9665eca70b6a515dfb9dc7c0b1724",
+  "sunpy.map.tests.test_plotting.test_heliographic_quadrangle_width_height": 
"a52dca9100f3f96644e924f283c7ba9bd26db115be3a8e19b91898406d06f9ba",
+  "sunpy.map.tests.test_plotting.test_map_draw_extent": 
"d84c6ad1d119cde881c35130cee1a71f72b1eb26b073f5a6e174c5f1efb4a7dd",
+  "sunpy.map.tests.test_plotting.test_peek_aia171": 
"62c4d51d9a58f05279e5fe2bf665992fd51b7523112893f2febd8449dead0ec4",
+  "sunpy.map.tests.test_plotting.test_peek_grid_aia171": 
"3c93b346888c716ab0f78b84df22cad86502baedaf5ed89c005e1ae84f4a6562",
+  "sunpy.map.tests.test_plotting.test_peek_grid_limb_aia171": 
"e525da86084a63477d65b95389f1a7fa8739c53f3ed900aa8aa0e3e418872a3c",
+  "sunpy.map.tests.test_plotting.test_peek_grid_spacing_aia171": 
"947d5947c020bbeb10022c0f146b68e2a33a5f4ebc6b64d5d773d5818c2b0305",
+  "sunpy.map.tests.test_plotting.test_peek_limb_aia171": 
"42d4c7f61de58e5186c15e0230555df7f4076e3f5d63a405c3e4dc72d245c8f8",
+  "sunpy.map.tests.test_plotting.test_plot_aia171": 
"683ee918c3f72dfb533d38aaaf40b4f5133fb5a161661b884feaa2b3640b84f8",
+  "sunpy.map.tests.test_plotting.test_plot_aia171_clip": 
"0481d2760a1da354e6b001c79accc1aa4c4bb41d3ee86b1740fbc125dd4aa84d",
+  "sunpy.map.tests.test_plotting.test_plot_aia171_superpixel": 
"ea868748df67922cfc5c7b7d3b0f5febe7f524d8e6c7183d9a496ae27009367a",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign[True]": 
"a0f08c7afd382c233584810246153b05585f1d9ffdf16e128be9a768d89e666f",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign[image]": 
"a0f08c7afd382c233584810246153b05585f1d9ffdf16e128be9a768d89e666f",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign[mesh]": 
"c87a041f263fbbc01cfa1c3faa79372e39f13be5f6da5a6bb097e09ad551a95f",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign_datalim": 
"8182d215f6a42968bd89ca057c8500ccfb88af8f9d04e26375c4fd4bb141e50b",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign_image_incomplete": 
"86f7918cece5ca5c95a0f6c7693fa7b33df552cd651a322d54cf68d8ff1d1ed1",
+  "sunpy.map.tests.test_plotting.test_plot_autoalign_pixel_alignment": 
"29c7c1545ca51a248bf25b8f112aeb01ca5f3394bb07fc7655f095bd3281e0b6",
+  "sunpy.map.tests.test_plotting.test_plot_masked_aia171": 
"717db809663aa480530c574111126713bf9a2d68fe54525797e735bdc4eaeab2",
+  "sunpy.map.tests.test_plotting.test_plot_masked_aia171_superpixel": 
"01a00df0e69ddee3f052ac6021a019e7c9bb91707541fffa26069e9d4058be79",
+  
"sunpy.map.tests.test_plotting.test_plot_masked_aia171_superpixel_conservative_mask_true":
 "196cff21e41c87813b2af7ce95d9feb9746bf00fc94588886f5bb59887c8e488",
+  "sunpy.map.tests.test_plotting.test_plot_resample": 
"a6398dfebbbd68a649966b3b8aeb382d725e0f09cc20a7ce5187564b537ddc83",
+  "sunpy.map.tests.test_plotting.test_plot_rotated_aia171": 
"8682f8136fc8358078fa9b0c6a135d3c75f29cf98f0f2f3eb7acc78b3fa9abf6",
+  "sunpy.map.tests.test_plotting.test_plot_superpixel": 
"8b08a9fbf50767a1b84e246588ba0e4d4589982931107deaee7429db483e1a3a",
+  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_top_right": 
"14a773dd9da0fb6ce6dda591d095c381d14d1e0eb6c8e571488e251db5c4c832",
+  
"sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_top_right_different_axes":
 "28be219434976780e77459c3f7466a9089ca0b780769b3a88d73d47c88635b62",
+  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_pix_width_height": 
"e5dfd3f94410dcbd57fb15112574918085a7973cdc7e1c5612f695bc7825de6c",
+  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_top_right": 
"74629151615d7ab4b1e38e8713ecdc9643f764679cb103b8bf4c0d95357dd558",
+  "sunpy.map.tests.test_plotting.test_quadrangle_aia17_width_height": 
"1bce6d6646b1079908f5518b2121cf109d56dd27c3955eeba05cb1756552e7b5",
+  "sunpy.map.tests.test_plotting.test_rectangle_aia171_top_right": 
"80faf44417e779f446052b2c79ddb51e57ff999af42b83a3c8bd175766786b35",
+  "sunpy.map.tests.test_plotting.test_rectangle_aia171_width_height": 
"29959cf78b26039994312edfcba1ebc3fa0307d083d782341cb50ba84c62390e",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[None]": 
"8f7a5cd79fb4070c078b2a242ea2d2a0b06b4070b6bdde6a812f74b88aa13490",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[all]": 
"7bcea2aef8c7e6ec497a81c7c7b2428cda6c40a7e448b400dba176371d29e8d4",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[corners]": 
"dbe700a16f237db15ef882c8bf41d4bb80cf5f38d8921e452565c6c94e9e114f",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_auto_extent[edges]": 
"65ae0b7ae9c62066805c89dd6fa5c62f7203fff821f14608683c6002fe7d6640",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_hgs": 
"84494999fcf4b128fd17608dd95f7645ffbce4ccf3cb5ac59911d7d62dd2f5e7",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_adaptive": 
"d5ba72c05de79fed68a6e362fc54e20bf838451306c32de371a54746acc0a4aa",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_exact": 
"8fbbdb74b9c5ff80797aa0ea2b47c75301413863f8f28ab2ee4c56a70e4cf3e8",
+  "sunpy.map.tests.test_reproject_to.test_reproject_to_hpc_interpolation": 
"4d82b7e502e16c52f7ab429c932549187246416517a747221a71667e578d3e11",
+  
"sunpy.map.tests.test_reproject_to.test_reproject_to_screen_plus_diffrot[PlanarScreen]":
 "37f5115e233440858a00469494860c9ace31edd2f2676b8ddf2a7ff72c76af04",
+  
"sunpy.map.tests.test_reproject_to.test_reproject_to_screen_plus_diffrot[SphericalScreen]":
 "ce8606d5a1fbe55dc174c8352cd29cb33d8c39fce4a70c17226d9b2d3508df1b",
+  "sunpy.timeseries.sources.tests.test_eve.test_esp_peek": 
"bbbd836512e0bad9484442254e2419be04376a7b2874275f8aad0efdcbee601f",
   "sunpy.timeseries.sources.tests.test_eve.test_eve_peek": 
"2a22f93af44971411800e4fcd0d93d2128fe2b9e6b97e576e8372c2cd12d7d78",
-  "sunpy.timeseries.sources.tests.test_fermi_gbm.test_fermi_gbm_peek": 
"83f0b53ca6f1cd809bd03e4aff80b3c02c8078e552b0c3e90b2cb3cf26932a51",
-  "sunpy.timeseries.sources.tests.test_goes.test_goes_peek": 
"2f01b5430fe0295b7c8bc5bccef6c3356d5eed62c1236a2790e122fba2ead267",
-  "sunpy.timeseries.sources.tests.test_goes.test_goes_ylim": 
"ae61275b7e1d8bbaf075e267e55592b86895afcbf8f846ae44dd78ecd645f6e9",
-  "sunpy.timeseries.sources.tests.test_lyra.test_lyra_peek": 
"48924d42773a4d834342cdce5ad1e005db9980bf6db6525d97a141a08f411aba",
-  "sunpy.timeseries.sources.tests.test_noaa.test_noaa_json_pre_peek": 
"2673bf752a5f4133239a4b96308de5159e1202ce55efa5a590deba213788af74",
-  "sunpy.timeseries.sources.tests.test_noaa.test_noaa_json_ind_peek": 
"a61ea2eb004d89f16b6ea4b6c56b2eedbb456ecc301d2c710eb3312f70c6a6f7",
-  "sunpy.timeseries.sources.tests.test_norh.test_norh_peek": 
"a403f6ec3064a1dbcf4c190a9724d3b893b4608ca5d0a0cae8a400378f0c8f9e",
-  "sunpy.timeseries.sources.tests.test_rhessi.test_rhessi_peek": 
"f7783ff9d1b00a03cebfdc173057f67a44de00621eff3bb22d23355c3ba7c85b",
-  "sunpy.timeseries.tests.test_timeseriesbase.test_generic_ts_peek": 
"ba0469ba921c3367384c04de4e64d16cacd1499277a14f1809c087d8f21ee041",
-  "sunpy.timeseries.tests.test_timeseriesbase.test_column_subset_peek": 
"0c1ac6714d9bc505db3ee449fa9a8ba6842b0d756a8c8f02a2133547123c2a92",
-  
"sunpy.visualization.animator.tests.test_mapsequenceanimator.test_map_sequence_animator_wcs_simple_plot":
 "07683c79407f568ce977ba2560e33da8668d06937f74732d2f375d6605f3c58e",
-  "sunpy.visualization.colormaps.tests.test_cm.test_cmap_visual": 
"39f38bd1bc4620e7d801fa7dfe76527595a85694fff27fc2506c2e150e476a95",
-  "sunpy.visualization.tests.test_drawing.test_draw_equator_aia171": 
"e10ed71a0bb1ebd65020723e97c290e9ef22fa303af545529117ef808d8d8c80",
-  "sunpy.visualization.tests.test_drawing.test_draw_prime_meridian_aia171": 
"c3cfdafcb5dd168035473c10d3aea0f83af4def909836e6ce1dd07f589ba6ca5",
+  "sunpy.timeseries.sources.tests.test_fermi_gbm.test_fermi_gbm_peek": 
"a70fb9370b822a18c3da726854c6b9cdd41c7fc8af2f427c66dbc6267b54b551",
+  "sunpy.timeseries.sources.tests.test_goes.test_goes_peek": 
"7ec64d707735bf5f2556ea99a099520aa417c183bcfdb4fc9272f05a7436a010",
+  "sunpy.timeseries.sources.tests.test_goes.test_goes_ylim": 
"8c0283e086bba71a35fa66fbb1d251dd399470bdc7e5c2f76d5d36c08e8dbe8c",
+  "sunpy.timeseries.sources.tests.test_lyra.test_lyra_peek": 
"464333b759d734edabc597aaed748f40d14178b651b8fd6477ff6b077246d134",
+  "sunpy.timeseries.sources.tests.test_noaa.test_noaa_json_ind_peek": 
"0406c11e80d3e4d148f536f580620bd116485afb8856512b89b7b5c26b2cdfd0",
+  "sunpy.timeseries.sources.tests.test_noaa.test_noaa_json_pre_peek": 
"b2e96da3ee10fd76428c6a8a227383cc1aa8005c37e4f0ca35e7c19d7d42164c",
+  "sunpy.timeseries.sources.tests.test_norh.test_norh_peek": 
"b91a29cb2efee5e75940f31531c0bd49109d5d41358434a54a1a66708ad2cb64",
+  "sunpy.timeseries.sources.tests.test_rhessi.test_rhessi_peek": 
"05ea139e1238ab6d46ec2c3b375c46f342d94ebdc035a32a761d066ce803fd88",
+  "sunpy.timeseries.tests.test_timeseriesbase.test_column_subset_peek": 
"0f59e0373961dd47104d0919b22720d2f755716b9b57fd302c728d147a9f9fb6",
+  "sunpy.timeseries.tests.test_timeseriesbase.test_generic_ts_peek": 
"1cb20c67030167b5d9f5047dd3ab488fd7670692f27f51e90ff27e0abaab0a3e",
+  
"sunpy.visualization.animator.tests.test_mapsequenceanimator.test_map_sequence_animator_wcs_simple_plot":
 "f92be06a340c32a757d4f73ca80105ca30e05e65d3c9d95aa03c40baf6589890",
+  "sunpy.visualization.colormaps.tests.test_cm.test_cmap_visual": 
"3ea2a02e0c72c28388835dbd12daaad13be9b06bd78fca821213c425bdbc9c07",
+  "sunpy.visualization.tests.test_drawing.test_draw_equator_aia171": 
"080d2b0047c4d16092be263eb4e3736d3d67428c19d9e5fe8908ff837f8c6afe",
+  "sunpy.visualization.tests.test_drawing.test_draw_extent": 
"5da012355e3740b339be789d0079c103ddad19c822975730448f766fddf8b025",
+  "sunpy.visualization.tests.test_drawing.test_draw_extent_3d": 
"57dc22fbd6909c080fb476a7ccd4916b4c4b56ac02bc7ed2e5e8db1b18e60024",
+  "sunpy.visualization.tests.test_drawing.test_draw_prime_meridian_aia171": 
"8c3600762afc1dbf5cf05e79651bd715767ebaeb615c1b788390df6f9bb27bde",
   
"sunpy.visualization.tests.test_drawing.test_heliographic_equator_prime_meridian":
 "3cb195a44e899ef46de7365bd0a0c580b7ea69662bdc560a1bbb1686c2ad48cf",
-  "sunpy.visualization.tests.test_drawing.test_draw_extent": 
"d9e5182e20feff6257c3209c2202727a8e628842ca3c0c80fd1cafbc64376388",
-  "sunpy.visualization.tests.test_drawing.test_draw_extent_3d": 
"1d329ecd0e31f4d4ecfb3b75e255c117dc631bd39be9a8a862fb7974004ff07c",
-  "sunpy.visualization.tests.test_visualization.test_show_hpr_impact_angle": 
"43f6c3fea4238064ce503d699cba6457b3eb07ee58ea2a52f43556f42ee7efc8"
+  "sunpy.visualization.tests.test_visualization.test_show_hpr_impact_angle": 
"b6cdb96de7411476a395f41c30877ff48db6f17a2f72a3d05b5d8406144072f3"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sunpy-7.1.0/sunpy/timeseries/sources/tests/test_goes.py 
new/sunpy-7.1.1/sunpy/timeseries/sources/tests/test_goes.py
--- old/sunpy-7.1.0/sunpy/timeseries/sources/tests/test_goes.py 2025-12-08 
16:19:01.000000000 +0100
+++ new/sunpy-7.1.1/sunpy/timeseries/sources/tests/test_goes.py 2026-03-26 
10:58:57.000000000 +0100
@@ -127,7 +127,7 @@
     assert isinstance(goes, sunpy.timeseries.sources.goes.XRSTimeSeries)
     # Testing NOAA served data
     goes = sunpy.timeseries.TimeSeries(
-        
'https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/goes16/l2/data/xrsf-l2-flx1s_science/2022/05/sci_xrsf-l2-flx1s_g16_d20220506_v2-2-0.nc')
+        
'https://data.ngdc.noaa.gov/platforms/solar-space-observing-satellites/goes/goes16/l2/data/xrsf-l2-flx1s_science/2022/05/sci_xrsf-l2-flx1s_g16_d20220506_v2-2-1.nc')
     assert isinstance(goes, sunpy.timeseries.sources.goes.XRSTimeSeries)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy.egg-info/PKG-INFO 
new/sunpy-7.1.1/sunpy.egg-info/PKG-INFO
--- old/sunpy-7.1.0/sunpy.egg-info/PKG-INFO     2025-12-08 16:19:11.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy.egg-info/PKG-INFO     2026-03-26 10:59:06.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: sunpy
-Version: 7.1.0
+Version: 7.1.1
 Summary: SunPy core package: Python for Solar Physics
 Author-email: The SunPy Community <[email protected]>
 License-Expression: BSD-3-Clause
@@ -82,13 +82,15 @@
 Requires-Dist: sunpy[asdf,core,jpeg2000,opencv,scikit-image,spice]; extra == 
"all"
 Provides-Extra: s3
 Requires-Dist: fsspec[s3]>=2023.6.0; extra == "s3"
-Requires-Dist: aiobotocore[boto3]>=2.6.0; extra == "s3"
+Requires-Dist: aiobotocore>=2.6.0; extra == "s3"
+Requires-Dist: boto3>=1.31.17; extra == "s3"
 Provides-Extra: jupyter
 Requires-Dist: itables>=2.2.4; extra == "jupyter"
 Requires-Dist: ipywidgets>=8.1.0; extra == "jupyter"
 Provides-Extra: tests-only
 Requires-Dist: hvpy>=1.1.0; extra == "tests-only"
 Requires-Dist: jplephem>=2.19; extra == "tests-only"
+Requires-Dist: psutil>=6.0.0; extra == "tests-only"
 Requires-Dist: pytest-astropy>=0.11.0; extra == "tests-only"
 Requires-Dist: pytest-mpl>=0.18.0; extra == "tests-only"
 Requires-Dist: pytest>=7.4.0; extra == "tests-only"
@@ -112,6 +114,7 @@
 Requires-Dist: sunpy-sphinx-theme>=2.0.3; extra == "docs"
 Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
 Requires-Dist: joblib; extra == "docs"
+Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
 Provides-Extra: docs-gallery
 Requires-Dist: sunpy[docs]; extra == "docs-gallery"
 Requires-Dist: astroquery>=0.4.6; extra == "docs-gallery"
@@ -121,9 +124,9 @@
 Requires-Dist: sunpy[docs,tests]; extra == "dev"
 Dynamic: license-file
 
-*********
-``sunpy``
-*********
+SunPy core package: Python for Solar Physics
+============================================
+
 |SunPy Logo|
 
 
+-----------------------------------+-----------------------------------+-----------------------------------+
@@ -177,62 +180,60 @@
 It includes an interface for searching and downloading data from multiple data 
providers, data containers for image and time series data, commonly used solar 
coordinate frames and associated transformations, as well as other 
functionality needed for solar data analysis.
 
 Installation
-============
+------------
 
 We recommended following the `installation guide 
<https://docs.sunpy.org/en/stable/guide/installation.html>`__ in the ``sunpy`` 
documentation.
 This will walk you through installing ``sunpy`` and all of its dependencies.
 
 Usage
-=====
+-----
 
 If you are new to ``sunpy``, the best place to start is the `tutorial 
<https://docs.sunpy.org/en/stable/tutorial/index.html>`__.
 the `example gallery 
<https://docs.sunpy.org/en/stable/generated/gallery/index.html>`__ also 
includes a collection of shorter and more specific examples of using ``sunpy``.
 
 Changes
-=======
+-------
 
 See our `changelog 
<https://docs.sunpy.org/en/stable/whatsnew/changelog.html>`__. for the latest 
changes in ``sunpy``.
 
 Getting Help
-============
+------------
 
 For more information or to ask questions about ``sunpy`` or any other SunPy 
Project package, please check out:
 
 -  `sunpy documentation <https://docs.sunpy.org/en/stable/>`__
 -  `SunPy Affiliated Packages <https://sunpy.org/affiliated>`__
--  `SunPy Chat`_
+-  `SunPy Chat <https://app.element.io/#/room/#sunpy:openastronomy.org>`__
 -  `SunPy mailing list <https://groups.google.com/forum/#!forum/sunpy>`__
 -  `SunPy Community forum <https://community.openastronomy.org/c/sunpy/5>`__
 
 Acknowledging or Citing ``sunpy``
-=================================
+---------------------------------
 
 If you use ``sunpy`` in your scientific work, we would appreciate your `citing 
it in your publications <https://docs.sunpy.org/en/stable/citation.html>`__.
 The continued growth and development of ``sunpy`` is dependent on the 
community being aware of ``sunpy``.
 
-Contributing
-============
-
-The SunPy Project is a community-driven open-source project that welcomes any 
and all contributions.
-Whether you are a developer, student, or user, you can help by contributing 
code, documentation, or community support.
-
-If you would like to get involved, the `Newcomers Guide`_ guide explains the 
many different ways to contribute to the SunPy Project and also shows how to 
get set up with a development workflow.
+Usage of Generative AI
+----------------------
 
-Help is always welcome, so come and say hello by joining the `SunPy Chat`_ and 
look over the `Good First Issues list`_ for the ideal places to start.
+If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+For more information see our documentation on fair and appropriate `AI usage 
<https://docs.sunpy.org/en/latest/dev_guide/contents/ai_usage.html>`__.
 
-.. _Newcomers Guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
-.. _Good First Issues list: 
https://github.com/sunpy/sunpy/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22Good+First+Issue%22
+Contributing
+------------
 
-Usage of Generative AI
-======================
+We love contributions! sunpy is open source,
+built on open source, and we'd love to have you hang out in our community.
 
-We expect authentic engagement in our community.
-Be wary of posting output from Large Language Models or similar generative AI 
as comments on GitHub or any other platform, as such comments tend to be 
formulaic and low quality content.
-If you use generative AI tools as an aid in developing code or documentation 
changes, ensure that you fully understand the proposed changes and can explain 
why they are the correct approach and an improvement to the current state.
+If you would like to get involved, check out the `Developers Guide`_ section 
of the SunPy docs.
+Stop by our chat room `#sunpy:openastronomy.org`_ if you have any questions.
+Help is always welcome so let us know what you like to work on, or check out 
the `issues page`_ for the list of known outstanding items.
 
-Code of Conduct
-===============
+For more information on contributing to SunPy, please read our `Newcomers' 
guide`_.
 
-When you are interacting with the SunPy Community you are asked to follow our 
`Code of Conduct <https://sunpy.org/coc>`__.
+.. _Developers Guide: https://docs.sunpy.org/en/latest/dev_guide/index.html
+.. _`#sunpy:openastronomy.org`: 
https://app.element.io/#/room/#sunpy:openastronomy.org
+.. _issues page: https://github.com/sunpy/sunpy/issues
+.. _Newcomers' guide: 
https://docs.sunpy.org/en/latest/dev_guide/contents/newcomers.html
 
-.. _SunPy Chat: https://app.element.io/#/room/#sunpy:openastronomy.org
+When you are interacting with the SunPy community you are asked at to follow 
our `code of conduct <https://sunpy.org/coc>`__.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy.egg-info/SOURCES.txt 
new/sunpy-7.1.1/sunpy.egg-info/SOURCES.txt
--- old/sunpy-7.1.0/sunpy.egg-info/SOURCES.txt  2025-12-08 16:19:11.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy.egg-info/SOURCES.txt  2026-03-26 10:59:06.000000000 
+0100
@@ -203,7 +203,6 @@
 examples/plotting/solar_cycle_example.py
 examples/plotting/sunpy_matplotlib_colormap.py
 examples/plotting/three_map_composite.py
-examples/plotting/time_distance.py
 examples/plotting/wcsaxes_map_example.py
 examples/plotting/wcsaxes_plotting_example.py
 examples/plotting/xy_lims.py
@@ -217,6 +216,7 @@
 examples/showcase/hmi_cutout.py
 examples/showcase/los_simulation_box_intersection.py
 examples/showcase/stereoscopic_3d.py
+examples/showcase/time_distance.py
 examples/showcase/where_is_stereo.py
 examples/time_series/README.txt
 examples/time_series/goes_hek_m25.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sunpy-7.1.0/sunpy.egg-info/requires.txt 
new/sunpy-7.1.1/sunpy.egg-info/requires.txt
--- old/sunpy-7.1.0/sunpy.egg-info/requires.txt 2025-12-08 16:19:11.000000000 
+0100
+++ new/sunpy-7.1.1/sunpy.egg-info/requires.txt 2026-03-26 10:59:06.000000000 
+0100
@@ -44,6 +44,7 @@
 sunpy-sphinx-theme>=2.0.3
 sphinxcontrib-bibtex
 joblib
+sphinx-autodoc-typehints
 
 [docs-gallery]
 sunpy[docs]
@@ -81,7 +82,8 @@
 
 [s3]
 fsspec[s3]>=2023.6.0
-aiobotocore[boto3]>=2.6.0
+aiobotocore>=2.6.0
+boto3>=1.31.17
 
 [scikit-image]
 scikit-image>=0.21.0
@@ -95,6 +97,7 @@
 [tests-only]
 hvpy>=1.1.0
 jplephem>=2.19
+psutil>=6.0.0
 pytest-astropy>=0.11.0
 pytest-mpl>=0.18.0
 pytest>=7.4.0

Reply via email to