sunpy 7.0.2__tar.gz → 7.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (820) hide show
  1. {sunpy-7.0.2 → sunpy-7.0.3}/.cruft.json +2 -2
  2. {sunpy-7.0.2 → sunpy-7.0.3}/CHANGELOG.rst +11 -0
  3. {sunpy-7.0.2 → sunpy-7.0.3}/PKG-INFO +7 -4
  4. {sunpy-7.0.2 → sunpy-7.0.3}/_typos.toml +2 -0
  5. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/6.0.rst +1 -2
  6. {sunpy-7.0.2 → sunpy-7.0.3}/pyproject.toml +8 -3
  7. {sunpy-7.0.2 → sunpy-7.0.3}/pytest.ini +1 -0
  8. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/_version.py +3 -3
  9. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_spice.py +2 -1
  10. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/__init__.py +19 -8
  11. sunpy-7.0.3/sunpy/data/test/camera.npy +0 -0
  12. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/tests/test_transform.py +13 -6
  13. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/transform.py +4 -4
  14. sunpy-7.0.3/sunpy/io/special/asdf/tests/__init__.py +3 -0
  15. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/mapbase.py +1 -1
  16. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/mapsequence.py +3 -3
  17. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/gong.py +3 -3
  18. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_gong_magnetogram_source.py +10 -4
  19. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_map_factory.py +1 -0
  20. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_mapbase.py +2 -0
  21. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_mapsequence.py +7 -0
  22. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/attrs.py +28 -5
  23. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/tests/test_attr.py +29 -0
  24. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_attr.py +1 -1
  25. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/physics/tests/test_differential_rotation.py +10 -0
  26. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/figure_hashes_mpl_382_ft_261_astropy_702_animators_121.json +1 -0
  27. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json +2 -1
  28. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/helpers.py +14 -1
  29. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/self_test.py +1 -2
  30. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/tests/test_timeseriesbase.py +6 -6
  31. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_metadata.py +4 -4
  32. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_sysinfo.py +33 -35
  33. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/PKG-INFO +7 -4
  34. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/SOURCES.txt +1 -0
  35. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/requires.txt +7 -3
  36. sunpy-7.0.2/sunpy/visualization/tests/__init__.py +0 -0
  37. {sunpy-7.0.2 → sunpy-7.0.3}/.coveragerc +0 -0
  38. {sunpy-7.0.2 → sunpy-7.0.3}/.flake8 +0 -0
  39. {sunpy-7.0.2 → sunpy-7.0.3}/.isort.cfg +0 -0
  40. {sunpy-7.0.2 → sunpy-7.0.3}/.ruff.toml +0 -0
  41. {sunpy-7.0.2 → sunpy-7.0.3}/CITATION.rst +0 -0
  42. {sunpy-7.0.2 → sunpy-7.0.3}/LICENSE.rst +0 -0
  43. {sunpy-7.0.2 → sunpy-7.0.3}/MANIFEST.in +0 -0
  44. {sunpy-7.0.2 → sunpy-7.0.3}/README.rst +0 -0
  45. {sunpy-7.0.2 → sunpy-7.0.3}/docs/Makefile +0 -0
  46. {sunpy-7.0.2 → sunpy-7.0.3}/docs/citation.rst +0 -0
  47. {sunpy-7.0.2 → sunpy-7.0.3}/docs/conf.py +0 -0
  48. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/backports.rst +0 -0
  49. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/ci_jobs.rst +0 -0
  50. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/code_standards.rst +0 -0
  51. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/conda_for_dependencies.rst +0 -0
  52. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/dependencies.rst +0 -0
  53. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/documentation.rst +0 -0
  54. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/example_gallery.rst +0 -0
  55. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/funding.rst +0 -0
  56. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/images/actions_check_pr.png +0 -0
  57. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/images/actions_summary_check.png +0 -0
  58. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/images/checks.png +0 -0
  59. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/images/checks_pr.png +0 -0
  60. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/logger.rst +0 -0
  61. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/maintainer_workflow.rst +0 -0
  62. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/newcomers.rst +0 -0
  63. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/pr_checklist.rst +0 -0
  64. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/pr_review_procedure.rst +0 -0
  65. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/public_api.rst +0 -0
  66. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/remote_data_manager.rst +0 -0
  67. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/tests.rst +0 -0
  68. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/contents/units_quantities.rst +0 -0
  69. {sunpy-7.0.2 → sunpy-7.0.3}/docs/dev_guide/index.rst +0 -0
  70. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/coord_components.rst +0 -0
  71. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/create_a_map.rst +0 -0
  72. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/create_coords.rst +0 -0
  73. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/create_custom_map.rst +0 -0
  74. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/create_custom_timeseries.rst +0 -0
  75. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/create_rectangle_on_map.rst +0 -0
  76. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/fix_map_metadata.rst +0 -0
  77. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/index.rst +0 -0
  78. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/manipulate_grid_lines.rst +0 -0
  79. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/observer_by_coordinate.rst +0 -0
  80. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/parse_time.rst +0 -0
  81. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/read_asdf_file.rst +0 -0
  82. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/remote_data_manager.rst +0 -0
  83. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/search_multiple_wavelengths.rst +0 -0
  84. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/search_vso.rst +0 -0
  85. {sunpy-7.0.2 → sunpy-7.0.3}/docs/how_to/transform_coords.rst +0 -0
  86. {sunpy-7.0.2 → sunpy-7.0.3}/docs/index.rst +0 -0
  87. {sunpy-7.0.2 → sunpy-7.0.3}/docs/make.bat +0 -0
  88. {sunpy-7.0.2 → sunpy-7.0.3}/docs/nitpick-exceptions +0 -0
  89. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/bibliography.rst +0 -0
  90. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/coordinates/index.rst +0 -0
  91. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/customization.rst +0 -0
  92. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/data.rst +0 -0
  93. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/image.rst +0 -0
  94. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/index.rst +0 -0
  95. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/internal_api.rst +0 -0
  96. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/io.rst +0 -0
  97. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/known_issues.rst +0 -0
  98. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/map.rst +0 -0
  99. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/net.rst +0 -0
  100. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/physics.rst +0 -0
  101. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/ssw.rst +0 -0
  102. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/stability.rst +0 -0
  103. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/sun.rst +0 -0
  104. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/sunpy.rst +0 -0
  105. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/sunpy_stability.yaml +0 -0
  106. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/time.rst +0 -0
  107. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/timeseries.rst +0 -0
  108. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/troubleshooting.rst +0 -0
  109. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/util.rst +0 -0
  110. {sunpy-7.0.2 → sunpy-7.0.3}/docs/reference/visualization.rst +0 -0
  111. {sunpy-7.0.2 → sunpy-7.0.3}/docs/references.bib +0 -0
  112. {sunpy-7.0.2 → sunpy-7.0.3}/docs/robots.txt +0 -0
  113. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/carrington.rst +0 -0
  114. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/index.rst +0 -0
  115. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/rotatedsunframe.rst +0 -0
  116. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/rsun.rst +0 -0
  117. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/velocities.rst +0 -0
  118. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/coordinates/wcs.rst +0 -0
  119. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/custom_map_rotate.rst +0 -0
  120. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/deprecation.rst +0 -0
  121. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/extending_fido.rst +0 -0
  122. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/history_comments.rst +0 -0
  123. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/index.rst +0 -0
  124. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/installation.rst +0 -0
  125. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/logger.rst +0 -0
  126. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/new_map_class.rst +0 -0
  127. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/rsun.rst +0 -0
  128. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/scraper_migration.rst +0 -0
  129. {sunpy-7.0.2 → sunpy-7.0.3}/docs/topic_guide/timeseries_metadata.rst +0 -0
  130. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/acquiring_data/hek.rst +0 -0
  131. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/acquiring_data/index.rst +0 -0
  132. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/acquiring_data/jsoc.rst +0 -0
  133. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/coordinates.rst +0 -0
  134. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/index.rst +0 -0
  135. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/installation.rst +0 -0
  136. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/maps.rst +0 -0
  137. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/time.rst +0 -0
  138. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/timeseries.rst +0 -0
  139. {sunpy-7.0.2 → sunpy-7.0.3}/docs/tutorial/units.rst +0 -0
  140. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/0.8.rst +0 -0
  141. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/0.9.rst +0 -0
  142. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/1.0.rst +0 -0
  143. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/1.1-wispr.png +0 -0
  144. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/1.1.rst +0 -0
  145. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/2.0.rst +0 -0
  146. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/2.1.rst +0 -0
  147. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/3.0.rst +0 -0
  148. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/3.1.rst +0 -0
  149. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/4.0.rst +0 -0
  150. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/4.1.rst +0 -0
  151. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/5.0.rst +0 -0
  152. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/5.1.rst +0 -0
  153. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/6.1.rst +0 -0
  154. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/7.0-punch.png +0 -0
  155. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/7.0-suit.png +0 -0
  156. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/7.0.rst +0 -0
  157. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/changelog.rst +0 -0
  158. {sunpy-7.0.2 → sunpy-7.0.3}/docs/whatsnew/index.rst +0 -0
  159. {sunpy-7.0.2 → sunpy-7.0.3}/examples/README.txt +0 -0
  160. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/README.txt +0 -0
  161. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/downloading_cutouts.py +0 -0
  162. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/fido_metadata_queries.py +0 -0
  163. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/querying_and_loading_SHARP_data.py +0 -0
  164. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/querying_the_GOES_event_list.py +0 -0
  165. {sunpy-7.0.2 → sunpy-7.0.3}/examples/acquiring_data/search_cdaweb.py +0 -0
  166. {sunpy-7.0.2 → sunpy-7.0.3}/examples/computer_vision_techniques/README.txt +0 -0
  167. {sunpy-7.0.2 → sunpy-7.0.3}/examples/computer_vision_techniques/finding_masking_bright_pixels.py +0 -0
  168. {sunpy-7.0.2 → sunpy-7.0.3}/examples/computer_vision_techniques/loop_edge_enhance.py +0 -0
  169. {sunpy-7.0.2 → sunpy-7.0.3}/examples/computer_vision_techniques/mask_disk.py +0 -0
  170. {sunpy-7.0.2 → sunpy-7.0.3}/examples/computer_vision_techniques/off_limb_enhance.py +0 -0
  171. {sunpy-7.0.2 → sunpy-7.0.3}/examples/differential_rotation/README.txt +0 -0
  172. {sunpy-7.0.2 → sunpy-7.0.3}/examples/differential_rotation/comparing_rotation_models.py +0 -0
  173. {sunpy-7.0.2 → sunpy-7.0.3}/examples/differential_rotation/differentially_rotated_coordinate.py +0 -0
  174. {sunpy-7.0.2 → sunpy-7.0.3}/examples/differential_rotation/differentially_rotated_gridlines.py +0 -0
  175. {sunpy-7.0.2 → sunpy-7.0.3}/examples/differential_rotation/reprojected_map.py +0 -0
  176. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/README.txt +0 -0
  177. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/brightness_pixel_location.py +0 -0
  178. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/compare_rotation_results.py +0 -0
  179. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/composite_map_AIA_HMI.py +0 -0
  180. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/difference_images.py +0 -0
  181. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/hmi_contours_wcsaxes.py +0 -0
  182. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/image_bright_regions_gallery_example.py +0 -0
  183. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/lasco_mask.py +0 -0
  184. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_contouring.py +0 -0
  185. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_data_histogram.py +0 -0
  186. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_from_numpy_array.py +0 -0
  187. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_metadata_modification.py +0 -0
  188. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_resampling_and_superpixels.py +0 -0
  189. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_rotation.py +0 -0
  190. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/map_segment.py +0 -0
  191. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/masking_hmi.py +0 -0
  192. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/plot_frameless_image.py +0 -0
  193. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/submaps_and_cropping.py +0 -0
  194. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map/track_active_region.py +0 -0
  195. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/README.txt +0 -0
  196. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/autoalign_aia_hmi.py +0 -0
  197. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/projection_custom_origin.py +0 -0
  198. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_aia_euvi_mosaic.py +0 -0
  199. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_align_aia_hmi.py +0 -0
  200. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_auto_extent.py +0 -0
  201. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_carrington.py +0 -0
  202. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_different_observers.py +0 -0
  203. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_helioprojective_radial.py +0 -0
  204. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/reprojection_spherical_screen.py +0 -0
  205. {sunpy-7.0.2 → sunpy-7.0.3}/examples/map_transformations/upside_down_hmi.py +0 -0
  206. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/AIA_HMI_composite.py +0 -0
  207. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/README.txt +0 -0
  208. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/adding_earth.py +0 -0
  209. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/aia_example.py +0 -0
  210. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/draw_wcs_extent.py +0 -0
  211. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/fading_between_maps.py +0 -0
  212. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/finding_local_peaks_in_solar_data.py +0 -0
  213. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/finegrained_plot.py +0 -0
  214. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/great_arc_example.py +0 -0
  215. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/grid_plotting.py +0 -0
  216. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/hmi_synoptic_maps.py +0 -0
  217. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/lasco_overlay.py +0 -0
  218. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/lat_lon_lines.py +0 -0
  219. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/limb_plotting.py +0 -0
  220. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/magnetogram_active_regions.py +0 -0
  221. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/map_editcolormap.py +0 -0
  222. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/masked_composite_plot.py +0 -0
  223. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/offdisk_contours.py +0 -0
  224. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/overplot_hek_polygon.py +0 -0
  225. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/plot_equator_prime_meridian.py +0 -0
  226. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/plot_rotated_rectangle.py +0 -0
  227. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/plotting_blank_map.py +0 -0
  228. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/quadrangle.py +0 -0
  229. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/screen_blend_mode.py +0 -0
  230. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/simple_differential_rotation.py +0 -0
  231. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/solar_cycle_example.py +0 -0
  232. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/sunpy_matplotlib_colormap.py +0 -0
  233. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/three_map_composite.py +0 -0
  234. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/wcsaxes_map_example.py +0 -0
  235. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/wcsaxes_plotting_example.py +0 -0
  236. {sunpy-7.0.2 → sunpy-7.0.3}/examples/plotting/xy_lims.py +0 -0
  237. {sunpy-7.0.2 → sunpy-7.0.3}/examples/saving_and_loading_data/README.txt +0 -0
  238. {sunpy-7.0.2 → sunpy-7.0.3}/examples/saving_and_loading_data/coordinates_in_asdf.py +0 -0
  239. {sunpy-7.0.2 → sunpy-7.0.3}/examples/saving_and_loading_data/genericmap_in_asdf.py +0 -0
  240. {sunpy-7.0.2 → sunpy-7.0.3}/examples/saving_and_loading_data/genericmap_in_fits.py +0 -0
  241. {sunpy-7.0.2 → sunpy-7.0.3}/examples/saving_and_loading_data/load_adapt_fits_into_map.py +0 -0
  242. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/README.txt +0 -0
  243. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/eclipse_amount.py +0 -0
  244. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/hmi_cutout.py +0 -0
  245. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/los_simulation_box_intersection.py +0 -0
  246. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/stereoscopic_3d.py +0 -0
  247. {sunpy-7.0.2 → sunpy-7.0.3}/examples/showcase/where_is_stereo.py +0 -0
  248. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/README.txt +0 -0
  249. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/goes_hek_m25.py +0 -0
  250. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/goes_xrs_example.py +0 -0
  251. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/goes_xrs_nrt_data.py +0 -0
  252. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/power_spectra_example.py +0 -0
  253. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/timeseries_convolution_filter.py +0 -0
  254. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/timeseries_example.py +0 -0
  255. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/timeseries_peak_finding.py +0 -0
  256. {sunpy-7.0.2 → sunpy-7.0.3}/examples/time_series/timeseriesmetadata_example.py +0 -0
  257. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/AIA_limb_STEREO.py +0 -0
  258. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/AltAz_Coordinate_transform.py +0 -0
  259. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/ParkerSolarProbe_trajectory.py +0 -0
  260. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/README.txt +0 -0
  261. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/SDO_to_STEREO_Coordinate_Conversion.py +0 -0
  262. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/STEREO_SECCHI_starfield.py +0 -0
  263. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/getting_lasco_observer_location.py +0 -0
  264. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/getting_observer_location.py +0 -0
  265. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/map_slit_extraction.py +0 -0
  266. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/north_offset_frame.py +0 -0
  267. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/planet_locations.py +0 -0
  268. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/radec_to_hpc_map.py +0 -0
  269. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/spice.py +0 -0
  270. {sunpy-7.0.2 → sunpy-7.0.3}/examples/units_and_coordinates/venus_transit.py +0 -0
  271. {sunpy-7.0.2 → sunpy-7.0.3}/licenses/ASTROPY.rst +0 -0
  272. {sunpy-7.0.2 → sunpy-7.0.3}/licenses/GLUE.rst +0 -0
  273. {sunpy-7.0.2 → sunpy-7.0.3}/licenses/README.rst +0 -0
  274. {sunpy-7.0.2 → sunpy-7.0.3}/licenses/TOWNCRIER.rst +0 -0
  275. {sunpy-7.0.2 → sunpy-7.0.3}/setup.cfg +0 -0
  276. {sunpy-7.0.2 → sunpy-7.0.3}/setup.py +0 -0
  277. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/CITATION.rst +0 -0
  278. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/__init__.py +0 -0
  279. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/conftest.py +0 -0
  280. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/__init__.py +0 -0
  281. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/_transformations.py +0 -0
  282. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/data/igrf13coeffs.txt +0 -0
  283. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/ephemeris.py +0 -0
  284. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/frameattributes.py +0 -0
  285. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/frames.py +0 -0
  286. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/metaframes.py +0 -0
  287. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/offset_frame.py +0 -0
  288. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/screens.py +0 -0
  289. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/spice.py +0 -0
  290. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/sun.py +0 -0
  291. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/__init__.py +0 -0
  292. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/conftest.py +0 -0
  293. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/helpers.py +0 -0
  294. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/strategies.py +0 -0
  295. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_ephemeris.py +0 -0
  296. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_frameattributes.py +0 -0
  297. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_frames.py +0 -0
  298. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_metaframes.py +0 -0
  299. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_offset_frame.py +0 -0
  300. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_sun.py +0 -0
  301. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_transformations.py +0 -0
  302. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_utils.py +0 -0
  303. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/tests/test_wcs_utils.py +0 -0
  304. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/transformations.py +0 -0
  305. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/utils.py +0 -0
  306. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/coordinates/wcs_utils.py +0 -0
  307. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/README.rst +0 -0
  308. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/The_Blue_Marble_150px.png +0 -0
  309. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/__init__.py +0 -0
  310. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/_sample.py +0 -0
  311. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/__init__.py +0 -0
  312. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/cache.py +0 -0
  313. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/downloader.py +0 -0
  314. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/manager.py +0 -0
  315. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/storage.py +0 -0
  316. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/__init__.py +0 -0
  317. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/conftest.py +0 -0
  318. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/db_testdata.csv +0 -0
  319. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/mocks.py +0 -0
  320. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/test_cache.py +0 -0
  321. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/test_downloader.py +0 -0
  322. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/test_manager.py +0 -0
  323. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/data_manager/tests/test_storage.py +0 -0
  324. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/sample.py +0 -0
  325. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/sunpyrc +0 -0
  326. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/2013_05_13__16_54_06_137__SOHO_LASCO_C3_white-light.jp2 +0 -0
  327. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/2013_06_24__17_31_30_84__SDO_AIA_AIA_193.jp2 +0 -0
  328. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/20181209_180305_kcor_l2.header +0 -0
  329. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/2022_04_01__00_00_45__SOLO-EUI-FSI_EUI_FSI_174.jp2 +0 -0
  330. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/2023_01_31__03_39_23_200__SDO_HMI_HMI_continuum.jp2 +0 -0
  331. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT/efz20040301.000010_s.fits +0 -0
  332. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT/efz20040301.010016_s.fits +0 -0
  333. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/SOHO_EIT_171_20070601T120013_L1.header +0 -0
  334. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/SOHO_EIT_195_20070601T121346_L1.header +0 -0
  335. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/SOHO_EIT_284_20070601T120607_L1.header +0 -0
  336. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/SOHO_EIT_304_20070601T121937_L1.header +0 -0
  337. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.000010_s.header +0 -0
  338. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.010016_s.header +0 -0
  339. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.020010_s.header +0 -0
  340. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.030011_s.header +0 -0
  341. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.040010_s.header +0 -0
  342. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.050010_s.header +0 -0
  343. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.060010_s.header +0 -0
  344. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.070014_s.header +0 -0
  345. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.080010_s.header +0 -0
  346. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.090010_s.header +0 -0
  347. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.100010_s.header +0 -0
  348. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.110010_s.header +0 -0
  349. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EIT_header/efz20040301.120010_s.header +0 -0
  350. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/EVE_L0CS_DIODES_1m_truncated.txt +0 -0
  351. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/FGMG4_20110214_030443.7.header +0 -0
  352. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/HinodeSOT.header +0 -0
  353. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/HinodeXRT.header +0 -0
  354. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/19960106SRS.txt +0 -0
  355. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/19960430SRS.txt +0 -0
  356. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/19960513SRS.txt +0 -0
  357. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20000922SRS.txt +0 -0
  358. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20000927SRS.txt +0 -0
  359. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20001001SRS.txt +0 -0
  360. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20020624SRS.txt +0 -0
  361. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20020628SRS.txt +0 -0
  362. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20100621SRS.txt +0 -0
  363. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20150101SRS.txt +0 -0
  364. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20150306SRS.txt +0 -0
  365. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SRS/20150906SRS.txt +0 -0
  366. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SUT_T24_0847_000444_Lev1.0_2024-06-28T18.21.33.178_0971NB03.header +0 -0
  367. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SWAP/resampled0_swap.header +0 -0
  368. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SWAP/resampled1_swap.header +0 -0
  369. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SWAP/resampled2_swap.header +0 -0
  370. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/SWAP/resampled3_swap.header +0 -0
  371. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/YohkohSXT.header +0 -0
  372. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/_generate_asdf_test.py +0 -0
  373. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/adapt.header +0 -0
  374. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/aia_171_level1.fits +0 -0
  375. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/aiamap_genericmap_1.0.0.asdf +0 -0
  376. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/aiamap_shift_genericmap_1.0.0.asdf +0 -0
  377. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/annotation_ppt.db +0 -0
  378. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/cor1_20090615_000500_s4c1A.header +0 -0
  379. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/dr_suvi-l2-ci195_g16_s20190403T093200Z_e20190403T093600Z_v1-0-0_rebinned.header +0 -0
  380. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/euvi_20090615_000900_n4euA_s.header +0 -0
  381. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve/eve_01.txt +0 -0
  382. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve/eve_02.txt +0 -0
  383. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve/eve_03.txt +0 -0
  384. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve/eve_04.txt +0 -0
  385. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve/eve_05.txt +0 -0
  386. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/eve_l1_esp_2011046_00_truncated.fits +0 -0
  387. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gbm.fits +0 -0
  388. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/generated_sample.genx +0 -0
  389. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/go1520110607.fits +0 -0
  390. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/go1520120601.fits.gz +0 -0
  391. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/goes_13_leap_second.nc +0 -0
  392. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gong_halpha.header +0 -0
  393. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gong_magnetogram.header +0 -0
  394. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gong_synoptic.header +0 -0
  395. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gzip_fits_test.file +0 -0
  396. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gzip_test.fit.gz +0 -0
  397. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gzip_test.fits.gz +0 -0
  398. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/gzip_test.fts.gz +0 -0
  399. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/heliographic_phase_map.fits.gz +0 -0
  400. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hi_20110910_114721_s7h2A.header +0 -0
  401. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hmi_bharp_vlos_mag.header +0 -0
  402. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hmi_cea_sharp_magnetogram.header +0 -0
  403. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hmi_sharp_magnetogram.header +0 -0
  404. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hmi_synoptic.header +0 -0
  405. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hsi_image_20101016_191218.fits +0 -0
  406. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/hsi_obssumm_20120601_018_truncated.fits.gz +0 -0
  407. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/iris_l2_20130801_074720_4040000014_SJI_1400_t000.header +0 -0
  408. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/lasco_c2_25299383_s.header +0 -0
  409. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/lasco_c3.header +0 -0
  410. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/lyra_20150101-000000_lev3_std_truncated.fits.gz +0 -0
  411. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/mdi.fd_Ic.20101015_230100_TAI.data.header +0 -0
  412. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/mdi.fd_M_96m_lev182.20101015_191200_TAI.data.header +0 -0
  413. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/mdi_synoptic.header +0 -0
  414. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/not_actually_fits.fits +0 -0
  415. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/observed-solar-cycle-indices-truncated.json +0 -0
  416. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/predicted-solar-cycle-truncated.json +0 -0
  417. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/psp_fld_l2_mag_rtn_1min_20200104_v02.cdf +0 -0
  418. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/punch.header +0 -0
  419. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/resampled_hmi.fits +0 -0
  420. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/sci_gxrs-l2-irrad_g13_d20170901_truncated.nc +0 -0
  421. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/sci_gxrs-l2-irrad_g15_d20131028_truncated.nc +0 -0
  422. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/sci_xrsf-l2-avg1m_g15_d20190102_truncated.nc +0 -0
  423. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/sci_xrsf-l2-avg1m_g16_d20210101_truncated.nc +0 -0
  424. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/sci_xrsf-l2-flx1s_g17_d20201016_truncated.nc +0 -0
  425. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/seit_00171_fd_19961211_1900.header +0 -0
  426. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/solo_L1_eui-fsi304-image_20201021T145510206_V03.header +0 -0
  427. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/solo_L1_swa-pas-mom_20200706_V01.cdf +0 -0
  428. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/solo_L2_epd-ept-north-hcad_20200713_V02.cdf +0 -0
  429. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/swap_lv1_20140606_000113.header +0 -0
  430. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/tca110810_truncated +0 -0
  431. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/test_ana.fz +0 -0
  432. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/tsi20010130_025823_a2.header +0 -0
  433. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/waveunit/__init__.py +0 -0
  434. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/waveunit/medn_halph_fl_20050501_074655.header +0 -0
  435. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/waveunit/mq130812.084253.header +0 -0
  436. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/waveunit/na120701.091058.header +0 -0
  437. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/test/waveunit/svsm_e3100_S2_20110625_1856.header +0 -0
  438. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/tests/__init__.py +0 -0
  439. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/data/tests/test_sample.py +0 -0
  440. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/README.rst +0 -0
  441. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/__init__.py +0 -0
  442. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/appdirs.py +0 -0
  443. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/appdirs_license.txt +0 -0
  444. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/distro.py +0 -0
  445. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/distro_license.rst +0 -0
  446. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/inflect.py +0 -0
  447. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/inflect_license.txt +0 -0
  448. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/parse.py +0 -0
  449. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/extern/parse_license.txt +0 -0
  450. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/__init__.py +0 -0
  451. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/resample.py +0 -0
  452. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/tests/__init__.py +0 -0
  453. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/image/tests/test_resample.py +0 -0
  454. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/__init__.py +0 -0
  455. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/_cdf.py +0 -0
  456. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/_file_tools.py +0 -0
  457. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/_fits.py +0 -0
  458. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/_header.py +0 -0
  459. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/_jp2.py +0 -0
  460. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/ana.py +0 -0
  461. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/setup_package.py +0 -0
  462. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/__init__.py +0 -0
  463. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/__init__.py +0 -0
  464. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/converters/__init__.py +0 -0
  465. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/converters/frames.py +0 -0
  466. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/converters/generic_map.py +0 -0
  467. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/entry_points.py +0 -0
  468. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/__init__.py +0 -0
  469. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.0.0.yaml +0 -0
  470. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.0.yaml +0 -0
  471. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.1.yaml +0 -0
  472. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.2.yaml +0 -0
  473. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.2.0.yaml +0 -0
  474. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/manifests/sunpy-1.2.1.yaml +0 -0
  475. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/generic_map-1.0.0.yaml +0 -0
  476. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/generic_map-1.1.0.yaml +0 -0
  477. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/generic_map-1.1.1.yaml +0 -0
  478. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/generic_map-1.2.0.yaml +0 -0
  479. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricearthequatorial-1.0.0.yaml +0 -0
  480. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricearthequatorial-1.1.0.yaml +0 -0
  481. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricsolarecliptic-1.0.0.yaml +0 -0
  482. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricsolarecliptic-1.1.0.yaml +0 -0
  483. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricsolarmagnetospheric-1.0.0.yaml +0 -0
  484. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geocentricsolarmagnetospheric-1.1.0.yaml +0 -0
  485. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geomagnetic-1.0.0.yaml +0 -0
  486. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/geomagnetic-1.1.0.yaml +0 -0
  487. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentric-1.0.0.yaml +0 -0
  488. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentric-1.1.0.yaml +0 -0
  489. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentricearthecliptic-1.0.0.yaml +0 -0
  490. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentricearthecliptic-1.1.0.yaml +0 -0
  491. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentricinertial-1.0.0.yaml +0 -0
  492. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliocentricinertial-1.1.0.yaml +0 -0
  493. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.0.0.yaml +0 -0
  494. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.1.0.yaml +0 -0
  495. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.2.0.yaml +0 -0
  496. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.3.0.yaml +0 -0
  497. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.0.0.yaml +0 -0
  498. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.1.0.yaml +0 -0
  499. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.2.0.yaml +0 -0
  500. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/helioprojective-1.0.0.yaml +0 -0
  501. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/helioprojective-1.1.0.yaml +0 -0
  502. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/helioprojectiveradial-1.0.0.yaml +0 -0
  503. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/helioprojectiveradial-1.1.0.yaml +0 -0
  504. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/solarmagnetic-1.0.0.yaml +0 -0
  505. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/resources/schemas/solarmagnetic-1.1.0.yaml +0 -0
  506. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/tests/hgc_100.asdf +0 -0
  507. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/tests/test_coordinate_frames.py +0 -0
  508. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/tests/test_genericmap.py +0 -0
  509. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/asdf/tests/test_time.py +0 -0
  510. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/genx.py +0 -0
  511. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/special/srs.py +0 -0
  512. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/_pyana.c +0 -0
  513. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anacompress.c +0 -0
  514. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anacompress.h +0 -0
  515. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anadecompress.c +0 -0
  516. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anadecompress.h +0 -0
  517. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anarw.c +0 -0
  518. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/anarw.h +0 -0
  519. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/src/ana/types.h +0 -0
  520. {sunpy-7.0.2/sunpy/io/special/asdf → sunpy-7.0.3/sunpy/io}/tests/__init__.py +0 -0
  521. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/generate_genx.pro +0 -0
  522. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_ana.py +0 -0
  523. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_cdf.py +0 -0
  524. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_filetools.py +0 -0
  525. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_fits.py +0 -0
  526. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_genx.py +0 -0
  527. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_jp2.py +0 -0
  528. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/io/tests/test_srs.py +0 -0
  529. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/__init__.py +0 -0
  530. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/compositemap.py +0 -0
  531. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/header_helper.py +0 -0
  532. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/map_factory.py +0 -0
  533. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/maputils.py +0 -0
  534. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/__init__.py +0 -0
  535. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/adapt.py +0 -0
  536. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/hinode.py +0 -0
  537. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/iris.py +0 -0
  538. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/mlso.py +0 -0
  539. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/proba2.py +0 -0
  540. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/psp.py +0 -0
  541. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/punch.py +0 -0
  542. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/rhessi.py +0 -0
  543. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/sdo.py +0 -0
  544. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/soho.py +0 -0
  545. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/solo.py +0 -0
  546. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/source_type.py +0 -0
  547. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/stereo.py +0 -0
  548. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/suit.py +0 -0
  549. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/suvi.py +0 -0
  550. {sunpy-7.0.2/sunpy/io → sunpy-7.0.3/sunpy/map/sources}/tests/__init__.py +0 -0
  551. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/helpers.py +0 -0
  552. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_adapt_source.py +0 -0
  553. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_aia_source.py +0 -0
  554. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_cor_source.py +0 -0
  555. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_eit_l1_source.py +0 -0
  556. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_eit_source.py +0 -0
  557. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_eui_source.py +0 -0
  558. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_euvi_source.py +0 -0
  559. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_gong_halpha_source.py +0 -0
  560. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_gong_synoptic_source.py +0 -0
  561. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_hi_source.py +0 -0
  562. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_hmi_source.py +0 -0
  563. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_hmi_synoptic_source.py +0 -0
  564. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_iris_source.py +0 -0
  565. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_kcor_source.py +0 -0
  566. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_lasco_source.py +0 -0
  567. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_mdi_source.py +0 -0
  568. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_punch_source.py +0 -0
  569. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_rhessi_source.py +0 -0
  570. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_sot_source.py +0 -0
  571. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_source_type.py +0 -0
  572. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_suit_source.py +0 -0
  573. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_suvi_source.py +0 -0
  574. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_swap_source.py +0 -0
  575. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_sxt_source.py +0 -0
  576. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_trace_source.py +0 -0
  577. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_wispr_source.py +0 -0
  578. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/tests/test_xrt_source.py +0 -0
  579. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/trace.py +0 -0
  580. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/sources/yohkoh.py +0 -0
  581. {sunpy-7.0.2/sunpy/map/sources → sunpy-7.0.3/sunpy/map}/tests/__init__.py +0 -0
  582. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/conftest.py +0 -0
  583. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/strategies.py +0 -0
  584. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_compositemap.py +0 -0
  585. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_header.py +0 -0
  586. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_header_helper.py +0 -0
  587. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_mapbase_dask.py +0 -0
  588. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_maputils.py +0 -0
  589. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_plotting.py +0 -0
  590. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/map/tests/test_reproject_to.py +0 -0
  591. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/__init__.py +0 -0
  592. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/_attrs.py +0 -0
  593. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/attr.py +0 -0
  594. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/attrs.py +0 -0
  595. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/base_client.py +0 -0
  596. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/__init__.py +0 -0
  597. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/attrs.py +0 -0
  598. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/cdaweb.py +0 -0
  599. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/data/attrs.json +0 -0
  600. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/helpers.py +0 -0
  601. {sunpy-7.0.2/sunpy/map/tests → sunpy-7.0.3/sunpy/net/cdaweb/test}/__init__.py +0 -0
  602. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/test/test_cdaweb.py +0 -0
  603. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/cdaweb/walker.py +0 -0
  604. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/__init__.py +0 -0
  605. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/attrs/__init__.py +0 -0
  606. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/attrs/adapt.py +0 -0
  607. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/attrs/goes.py +0 -0
  608. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/client.py +0 -0
  609. {sunpy-7.0.2/sunpy/net/cdaweb/test → sunpy-7.0.3/sunpy/net/dataretriever/sources}/__init__.py +0 -0
  610. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/adapt.py +0 -0
  611. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/aia_synopsis.py +0 -0
  612. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/eve.py +0 -0
  613. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/fermi_gbm.py +0 -0
  614. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/goes.py +0 -0
  615. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/gong.py +0 -0
  616. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/lyra.py +0 -0
  617. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/noaa.py +0 -0
  618. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/norh.py +0 -0
  619. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/rhessi.py +0 -0
  620. {sunpy-7.0.2/sunpy/net/dataretriever/sources → sunpy-7.0.3/sunpy/net/dataretriever/sources/tests}/__init__.py +0 -0
  621. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_adapt.py +0 -0
  622. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_aia_synopsis.py +0 -0
  623. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_eve.py +0 -0
  624. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_fermi_gbm.py +0 -0
  625. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_goes_suvi.py +0 -0
  626. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_goes_ud.py +0 -0
  627. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_gong_synoptic.py +0 -0
  628. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_lyra_ud.py +0 -0
  629. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_noaa.py +0 -0
  630. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_norh.py +0 -0
  631. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/sources/tests/test_rhessi.py +0 -0
  632. {sunpy-7.0.2/sunpy/net/dataretriever/sources → sunpy-7.0.3/sunpy/net/dataretriever}/tests/__init__.py +0 -0
  633. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/dataretriever/tests/test_client.py +0 -0
  634. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/fido_factory.py +0 -0
  635. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/__init__.py +0 -0
  636. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/attrs.py +0 -0
  637. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/data/coord_properties.json +0 -0
  638. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/data/unit_properties.json +0 -0
  639. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/hek.py +0 -0
  640. {sunpy-7.0.2/sunpy/net/dataretriever → sunpy-7.0.3/sunpy/net/hek}/tests/__init__.py +0 -0
  641. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/tests/test_hek.py +0 -0
  642. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/tests/test_utils.py +0 -0
  643. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek/utils.py +0 -0
  644. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek2vso/__init__.py +0 -0
  645. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek2vso/hek2vso.py +0 -0
  646. {sunpy-7.0.2/sunpy/net/hek → sunpy-7.0.3/sunpy/net/hek2vso}/tests/__init__.py +0 -0
  647. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/hek2vso/tests/test_hek2vso.py +0 -0
  648. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/__init__.py +0 -0
  649. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/attrs.py +0 -0
  650. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/chaincode.py +0 -0
  651. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/hec.py +0 -0
  652. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/parser.py +0 -0
  653. {sunpy-7.0.2/sunpy/net/hek2vso → sunpy-7.0.3/sunpy/net/helio}/tests/__init__.py +0 -0
  654. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/tests/test_chaincode.py +0 -0
  655. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/helio/tests/test_helio.py +0 -0
  656. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/__init__.py +0 -0
  657. {sunpy-7.0.2/sunpy/net/helio/tests → sunpy-7.0.3/sunpy/net/jsoc/data}/__init__.py +0 -0
  658. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/data/attrs.json +0 -0
  659. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/jsoc.py +0 -0
  660. {sunpy-7.0.2/sunpy/net/jsoc/data → sunpy-7.0.3/sunpy/net/jsoc/tests}/__init__.py +0 -0
  661. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/jsoc/tests/test_jsoc.py +0 -0
  662. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/scraper.py +0 -0
  663. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/scraper_utils.py +0 -0
  664. {sunpy-7.0.2/sunpy/net/jsoc → sunpy-7.0.3/sunpy/net}/tests/__init__.py +0 -0
  665. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/strategies.py +0 -0
  666. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_attr_walker.py +0 -0
  667. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_attrs.py +0 -0
  668. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_baseclient.py +0 -0
  669. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_fido.py +0 -0
  670. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_scraper.py +0 -0
  671. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/tests/test_scraper_utils.py +0 -0
  672. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/__init__.py +0 -0
  673. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/attrs.py +0 -0
  674. {sunpy-7.0.2/sunpy/net/tests → sunpy-7.0.3/sunpy/net/vso/data}/__init__.py +0 -0
  675. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/data/attrs.json +0 -0
  676. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/exceptions.py +0 -0
  677. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/legacy_response.py +0 -0
  678. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/table_response.py +0 -0
  679. {sunpy-7.0.2/sunpy/net/vso/data → sunpy-7.0.3/sunpy/net/vso/tests}/__init__.py +0 -0
  680. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/tests/conftest.py +0 -0
  681. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/tests/test_attrs.py +0 -0
  682. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/tests/test_vso.py +0 -0
  683. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/vso.py +0 -0
  684. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/net/vso/zeep_plugins.py +0 -0
  685. {sunpy-7.0.2/sunpy/net/vso/tests → sunpy-7.0.3/sunpy/physics}/__init__.py +0 -0
  686. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/physics/differential_rotation.py +0 -0
  687. {sunpy-7.0.2/sunpy/physics → sunpy-7.0.3/sunpy/physics/tests}/__init__.py +0 -0
  688. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/physics/tests/reference/test_differential_rotation.txt +0 -0
  689. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/__init__.py +0 -0
  690. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/_constants.py +0 -0
  691. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/constants.py +0 -0
  692. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/models.py +0 -0
  693. {sunpy-7.0.2/sunpy/physics → sunpy-7.0.3/sunpy/sun}/tests/__init__.py +0 -0
  694. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/tests/test_constants.py +0 -0
  695. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/sun/tests/test_models.py +0 -0
  696. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/__init__.py +0 -0
  697. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/mocks.py +0 -0
  698. {sunpy-7.0.2/sunpy/sun → sunpy-7.0.3/sunpy/tests}/tests/__init__.py +0 -0
  699. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/tests/test_mocks.py +0 -0
  700. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/tests/test_self_test.py +0 -0
  701. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/tests/tests/test_sunpy_data_filenames.py +0 -0
  702. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/__init__.py +0 -0
  703. {sunpy-7.0.2/sunpy/tests → sunpy-7.0.3/sunpy/time}/tests/__init__.py +0 -0
  704. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/tests/test_taiseconds.py +0 -0
  705. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/tests/test_time.py +0 -0
  706. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/tests/test_timerange.py +0 -0
  707. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/tests/test_utime.py +0 -0
  708. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/time.py +0 -0
  709. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/timeformats.py +0 -0
  710. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/time/timerange.py +0 -0
  711. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/__init__.py +0 -0
  712. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/conftest.py +0 -0
  713. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/metadata.py +0 -0
  714. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/__init__.py +0 -0
  715. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/eve.py +0 -0
  716. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/fermi_gbm.py +0 -0
  717. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/goes.py +0 -0
  718. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/lyra.py +0 -0
  719. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/noaa.py +0 -0
  720. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/norh.py +0 -0
  721. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/rhessi.py +0 -0
  722. {sunpy-7.0.2/sunpy/time → sunpy-7.0.3/sunpy/timeseries/sources}/tests/__init__.py +0 -0
  723. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_eve.py +0 -0
  724. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_fermi_gbm.py +0 -0
  725. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_goes.py +0 -0
  726. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_lyra.py +0 -0
  727. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_noaa.py +0 -0
  728. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_norh.py +0 -0
  729. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/sources/tests/test_rhessi.py +0 -0
  730. {sunpy-7.0.2/sunpy/timeseries/sources → sunpy-7.0.3/sunpy/timeseries}/tests/__init__.py +0 -0
  731. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/tests/test_timeseries_factory.py +0 -0
  732. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/tests/test_timeseriesmetadata.py +0 -0
  733. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/timeseries_factory.py +0 -0
  734. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/timeseries/timeseriesbase.py +0 -0
  735. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/__init__.py +0 -0
  736. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/config.py +0 -0
  737. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/datatype_factory_base.py +0 -0
  738. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/decorators.py +0 -0
  739. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/exceptions.py +0 -0
  740. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/functools.py +0 -0
  741. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/io.py +0 -0
  742. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/logger.py +0 -0
  743. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/metadata.py +0 -0
  744. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/net.py +0 -0
  745. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/parfive_helpers.py +0 -0
  746. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/sphinx/__init__.py +0 -0
  747. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/sphinx/doctest.py +0 -0
  748. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/sphinx/generate.py +0 -0
  749. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/sysinfo.py +0 -0
  750. {sunpy-7.0.2/sunpy/timeseries → sunpy-7.0.3/sunpy/util}/tests/__init__.py +0 -0
  751. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_config.py +0 -0
  752. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_datatype_factory_base.py +0 -0
  753. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_decorators.py +0 -0
  754. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_functools.py +0 -0
  755. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_logger.py +0 -0
  756. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_net.py +0 -0
  757. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_util.py +0 -0
  758. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/tests/test_xml.py +0 -0
  759. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/util.py +0 -0
  760. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/util/xml.py +0 -0
  761. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/version.py +0 -0
  762. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/__init__.py +0 -0
  763. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/animator/__init__.py +0 -0
  764. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/animator/mapsequenceanimator.py +0 -0
  765. {sunpy-7.0.2/sunpy/util → sunpy-7.0.3/sunpy/visualization/animator}/tests/__init__.py +0 -0
  766. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/animator/tests/test_mapsequenceanimator.py +0 -0
  767. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/__init__.py +0 -0
  768. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/cm.py +0 -0
  769. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/color_tables.py +0 -0
  770. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/README.rst +0 -0
  771. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/eit_dark_blue.csv +0 -0
  772. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/eit_dark_green.csv +0 -0
  773. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/eit_dark_red.csv +0 -0
  774. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/eit_yellow.csv +0 -0
  775. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/euvi_171.csv +0 -0
  776. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/euvi_195.csv +0 -0
  777. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/euvi_284.csv +0 -0
  778. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/euvi_304.csv +0 -0
  779. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/grayscale.csv +0 -0
  780. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/hi1.csv +0 -0
  781. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/hi2.csv +0 -0
  782. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/hmi_mag.csv +0 -0
  783. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/idl_3.csv +0 -0
  784. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/lasco_c2.csv +0 -0
  785. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/lasco_c3.csv +0 -0
  786. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/punch.csv +0 -0
  787. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/rhessi.csv +0 -0
  788. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/std_gamma_2.csv +0 -0
  789. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/stereo_cor1.csv +0 -0
  790. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/stereo_cor2.csv +0 -0
  791. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_bb01.csv +0 -0
  792. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_bb02.csv +0 -0
  793. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_bb03.csv +0 -0
  794. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb01.csv +0 -0
  795. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb02.csv +0 -0
  796. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb03.csv +0 -0
  797. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb04.csv +0 -0
  798. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb05.csv +0 -0
  799. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb06.csv +0 -0
  800. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb07.csv +0 -0
  801. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/suit_nb08.csv +0 -0
  802. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_1216.csv +0 -0
  803. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_1550.csv +0 -0
  804. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_1600.csv +0 -0
  805. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_1700.csv +0 -0
  806. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_171.csv +0 -0
  807. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_195.csv +0 -0
  808. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/data/trace_284.csv +0 -0
  809. {sunpy-7.0.2/sunpy/visualization/animator → sunpy-7.0.3/sunpy/visualization/colormaps}/tests/__init__.py +0 -0
  810. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/colormaps/tests/test_cm.py +0 -0
  811. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/drawing.py +0 -0
  812. {sunpy-7.0.2/sunpy/visualization/colormaps → sunpy-7.0.3/sunpy/visualization}/tests/__init__.py +0 -0
  813. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/tests/test_drawing.py +0 -0
  814. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/tests/test_visualization.py +0 -0
  815. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/visualization.py +0 -0
  816. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy/visualization/wcsaxes_compat.py +0 -0
  817. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/dependency_links.txt +0 -0
  818. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/entry_points.txt +0 -0
  819. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/not-zip-safe +0 -0
  820. {sunpy-7.0.2 → sunpy-7.0.3}/sunpy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "template": "https://github.com/sunpy/package-template",
3
- "commit": "1d401549c3ffe672d03c0f4635586f57e52b64ef",
3
+ "commit": "7958151d0246956f1e95889e8e3fa5abc4a3a129",
4
4
  "checkout": null,
5
5
  "context": {
6
6
  "cookiecutter": {
@@ -32,7 +32,7 @@
32
32
  ".github/workflows/sub_package_update.yml"
33
33
  ],
34
34
  "_template": "https://github.com/sunpy/package-template",
35
- "_commit": "1d401549c3ffe672d03c0f4635586f57e52b64ef"
35
+ "_commit": "7958151d0246956f1e95889e8e3fa5abc4a3a129"
36
36
  }
37
37
  },
38
38
  "directory": null
@@ -1,3 +1,14 @@
1
+ 7.0.3 (2025-10-17)
2
+ ==================
3
+
4
+ Bug Fixes
5
+ ---------
6
+
7
+ - 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 <https://github.com/sunpy/sunpy/pull/8346>`__)
8
+ - 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 <https://github.com/sunpy/sunpy/pull/8346>`__)
9
+ - Fix ``GONGMagnetogramMap`` for headers which have standard ``DATE-OBS`` keys vs ones which have split ``DATE-OBS`` & ``TIME-OBS``. (`#8347 <https://github.com/sunpy/sunpy/pull/8347>`__)
10
+
11
+
1
12
  7.0.2 (2025-09-19)
2
13
  ==================
3
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunpy
3
- Version: 7.0.2
3
+ Version: 7.0.3
4
4
  Summary: SunPy core package: Python for Solar Physics
5
5
  Author-email: The SunPy Community <sunpy@googlegroups.com>
6
6
  License: Copyright (c) 2013-2025 The SunPy developers
@@ -107,16 +107,18 @@ Provides-Extra: tests-only
107
107
  Requires-Dist: hvpy>=1.1.0; extra == "tests-only"
108
108
  Requires-Dist: jplephem>=2.19; extra == "tests-only"
109
109
  Requires-Dist: pytest-astropy>=0.11.0; extra == "tests-only"
110
- Requires-Dist: pytest-asdf-plugin>=0.1.1; extra == "tests-only"
111
110
  Requires-Dist: pytest-mpl>=0.17.0; extra == "tests-only"
112
111
  Requires-Dist: pytest>=7.4.0; extra == "tests-only"
112
+ Provides-Extra: asdf-tests
113
+ Requires-Dist: sunpy[asdf]; extra == "asdf-tests"
114
+ Requires-Dist: pytest-asdf-plugin>=0.1.1; extra == "asdf-tests"
113
115
  Provides-Extra: tests
114
- Requires-Dist: sunpy[all,s3,tests-only]; extra == "tests"
116
+ Requires-Dist: sunpy[all,asdf-tests,s3,tests-only]; extra == "tests"
115
117
  Provides-Extra: docs
118
+ Requires-Dist: sunpy[all]; extra == "docs"
116
119
  Requires-Dist: sphinx>=7.1.0; extra == "docs"
117
120
  Requires-Dist: sphinx-automodapi>=0.16.0; extra == "docs"
118
121
  Requires-Dist: packaging>=23.2; extra == "docs"
119
- Requires-Dist: sunpy[all]; extra == "docs"
120
122
  Requires-Dist: hvpy>=1.1.0; extra == "docs"
121
123
  Requires-Dist: ruamel.yaml>=0.18.0; extra == "docs"
122
124
  Requires-Dist: sphinx-changelog>=1.5.0; extra == "docs"
@@ -130,6 +132,7 @@ Provides-Extra: docs-gallery
130
132
  Requires-Dist: sunpy[docs]; extra == "docs-gallery"
131
133
  Requires-Dist: astroquery>=0.4.6; extra == "docs-gallery"
132
134
  Requires-Dist: jplephem>=2.19; extra == "docs-gallery"
135
+ Requires-Dist: pillow; extra == "docs-gallery"
133
136
  Provides-Extra: dev
134
137
  Requires-Dist: sunpy[docs,tests]; extra == "dev"
135
138
  Dynamic: license-file
@@ -26,4 +26,6 @@ default.extend-ignore-identifiers-re = [
26
26
  "lightyear",
27
27
  "PNGs",
28
28
  "setp",
29
+ "precess",
30
+ "precessed",
29
31
  ]
@@ -141,11 +141,10 @@ Method to compute the rotation matrix between two SPICE frames
141
141
 
142
142
  A new function `~sunpy.coordinates.spice.get_rotation_matrix` has been implemented to compute the rotation matrix between two SPICE frames.
143
143
 
144
- .. code-block:: python
144
+ .. doctest-requires:: spiceypy
145
145
 
146
146
  >>> from sunpy.coordinates.spice import get_rotation_matrix
147
147
  >>> import astropy.units as u
148
-
149
148
  >>> source_frame = "J2000"
150
149
  >>> target_frame = "Galactic"
151
150
  >>> from_time = '2001-01-01T00:00:00'
@@ -113,18 +113,22 @@ tests-only = [
113
113
  "hvpy>=1.1.0",
114
114
  "jplephem>=2.19",
115
115
  "pytest-astropy>=0.11.0",
116
- "pytest-asdf-plugin>=0.1.1",
117
116
  "pytest-mpl>=0.17.0",
118
117
  "pytest>=7.4.0",
119
118
  ]
119
+ asdf-tests = [
120
+ "sunpy[asdf]",
121
+ # We can only install this plugin when we have the asdf extra installed
122
+ "pytest-asdf-plugin>=0.1.1",
123
+ ]
120
124
  tests = [
121
- "sunpy[all,s3,tests-only]",
125
+ "sunpy[all,s3,tests-only,asdf-tests]",
122
126
  ]
123
127
  docs = [
128
+ "sunpy[all]",
124
129
  "sphinx>=7.1.0",
125
130
  "sphinx-automodapi>=0.16.0",
126
131
  "packaging>=23.2",
127
- "sunpy[all]",
128
132
  "hvpy>=1.1.0",
129
133
  "ruamel.yaml>=0.18.0",
130
134
  "sphinx-changelog>=1.5.0",
@@ -139,6 +143,7 @@ docs-gallery = [
139
143
  "sunpy[docs]",
140
144
  "astroquery>=0.4.6",
141
145
  "jplephem>=2.19",
146
+ "pillow",
142
147
  ]
143
148
  dev = ["sunpy[docs,tests]"]
144
149
 
@@ -11,6 +11,7 @@ norecursedirs =
11
11
  *.egg-info
12
12
  examples
13
13
  sunpy/_dev
14
+ sunpy/data/test
14
15
  .history
15
16
  tools
16
17
  sunpy/extern
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '7.0.2'
32
- __version_tuple__ = version_tuple = (7, 0, 2)
31
+ __version__ = version = '7.0.3'
32
+ __version_tuple__ = version_tuple = (7, 0, 3)
33
33
 
34
- __commit_id__ = commit_id = 'g6102acf9e'
34
+ __commit_id__ = commit_id = 'g5a4cb80fc'
@@ -1,6 +1,7 @@
1
1
  import numpy as np
2
2
  import pytest
3
- import spiceypy
3
+
4
+ spiceypy = pytest.importorskip("spiceypy")
4
5
 
5
6
  import astropy.units as u
6
7
  from astropy.coordinates import ConvertError, SkyCoord, UnitSphericalRepresentation, frame_transform_graph
@@ -104,17 +104,15 @@ def write_image_file_from_header_file(header_file, fits_directory):
104
104
  return fits_file
105
105
 
106
106
 
107
- def get_dummy_map_from_header(filename, package="sunpy.data.test"):
107
+ def get_header_from_file(filename, package="sunpy.data.test"):
108
108
  """
109
- Generate a dummy `~sunpy.map.Map` from header-only test data.
110
-
111
- The "image" will be random numbers with the correct shape
112
- as specified by the header.
109
+ Return a Header from the test file.
113
110
  """
114
- import sunpy.map
115
-
116
111
  filepath = get_test_filepath(filename, package=package)
117
- header = _fits.format_comments_and_history(astropy.io.fits.Header.fromtextfile(filepath))
112
+ return _fits.format_comments_and_history(astropy.io.fits.Header.fromtextfile(filepath))
113
+
114
+
115
+ def get_dummy_map_from_header_obj(header):
118
116
  data = np.random.rand(header['NAXIS2'], header['NAXIS1'])
119
117
  if 'BITPIX' in header:
120
118
  data = data.astype(astropy.io.fits.BITPIX2DTYPE[header['BITPIX']])
@@ -125,6 +123,19 @@ def get_dummy_map_from_header(filename, package="sunpy.data.test"):
125
123
  return sunpy.map.Map(data, header)
126
124
 
127
125
 
126
+ def get_dummy_map_from_header(filename, package="sunpy.data.test"):
127
+ """
128
+ Generate a dummy `~sunpy.map.Map` from header-only test data.
129
+
130
+ The "image" will be random numbers with the correct shape
131
+ as specified by the header.
132
+ """
133
+ import sunpy.map
134
+
135
+ header = get_header_from_file(filename, package)
136
+ return get_dummy_map_from_header_obj(header)
137
+
138
+
128
139
  def write_header_file_from_image_file(image_path, header_path, hdu=0, **kwargs):
129
140
  """
130
141
  Convert a FITS file containing an image and a header
Binary file
@@ -1,23 +1,25 @@
1
1
  import numpy as np
2
2
  import pytest
3
- import skimage.data as images
4
3
  from matplotlib.figure import Figure
5
- from skimage import transform as tf
6
4
 
7
5
  from astropy.coordinates.matrix_utilities import rotation_matrix
8
6
 
7
+ from sunpy.data.test import get_test_filepath
9
8
  from sunpy.image.transform import _rotation_registry, affine_transform
10
- from sunpy.tests.helpers import figure_test, skip_windows
9
+ from sunpy.tests.helpers import figure_test, skip_opencv, skip_skimage, skip_windows
11
10
  from sunpy.util import SunpyUserWarning
12
11
 
12
+ _methods_to_marks = {"scikit-image": skip_skimage, "opencv": skip_opencv}
13
+ _rotation_registry_params = [pytest.param(meth, marks=_methods_to_marks.get(meth, [])) for meth in _rotation_registry]
14
+
13
15
  # Tolerance for tests
14
16
  RTOL = 1.0e-10
15
17
 
16
18
 
17
19
  @pytest.fixture
18
20
  def original():
19
- # Test image
20
- return images.camera().astype('float')
21
+ filepath = get_test_filepath("camera.npy")
22
+ return np.load(filepath).astype('float')
21
23
 
22
24
 
23
25
  @pytest.fixture
@@ -85,6 +87,7 @@ def test_rotation(original, angle, k):
85
87
  @pytest.mark.parametrize(('angle', 'k'), [(90.0, 1), (-90.0, -1), (-270.0, 1),
86
88
  (-90.0, 3), (360.0, 0), (-360.0, 0)])
87
89
  def test_skimage_rotation(original, angle, k):
90
+ pytest.importorskip("skimage")
88
91
  # Test rotation against expected outcome
89
92
  angle = np.radians(angle)
90
93
  c = np.round(np.cos(angle))
@@ -133,6 +136,7 @@ def test_shift(original, dx, dy):
133
136
 
134
137
  @pytest.mark.parametrize("scale_factor", [0.25, 0.5, 0.75, 1.0, 1.25, 1.5])
135
138
  def test_scale(original, scale_factor):
139
+ tf = pytest.importorskip("skimage.transform")
136
140
  # No rotation for all scaling tests.
137
141
  rmatrix = np.array([[1.0, 0.0], [0.0, 1.0]])
138
142
 
@@ -163,6 +167,7 @@ def test_all(original, angle, dx, dy, scale_factor):
163
167
  Tests to make sure that combinations of scaling, shifting and rotation
164
168
  produce the expected output.
165
169
  """
170
+ tf = pytest.importorskip("skimage.transform")
166
171
  k = int(angle / 90)
167
172
  angle = np.radians(angle)
168
173
  image_center = np.array(original.shape) / 2.0 - 0.5
@@ -216,6 +221,7 @@ def test_flat(identity):
216
221
 
217
222
 
218
223
  def test_nan_skimage(identity):
224
+ pytest.importorskip("skimage")
219
225
  # Test preservation of NaN values for scikit-image rotation
220
226
  in_arr = np.array([[np.nan, 0]])
221
227
  out_arr = affine_transform(in_arr, rmatrix=identity, order=0, method='scikit-image')
@@ -230,6 +236,7 @@ def test_nan_scipy(identity):
230
236
 
231
237
 
232
238
  def test_int(identity):
239
+ pytest.importorskip("skimage")
233
240
  # Test casting of integer array to float array
234
241
  in_arr = np.array([[100]], dtype=int)
235
242
  with pytest.warns(SunpyUserWarning, match='Integer input data has been cast to float64'):
@@ -331,7 +338,7 @@ def test_nans(rot30):
331
338
 
332
339
 
333
340
  @pytest.mark.filterwarnings("ignore:.*bug in the implementation of scikit-image")
334
- @pytest.mark.parametrize('method', _rotation_registry.keys())
341
+ @pytest.mark.parametrize('method', _rotation_registry_params)
335
342
  @pytest.mark.parametrize('order', range(6))
336
343
  def test_endian(method, order, rot30):
337
344
  if order not in _rotation_registry[method].allowed_orders:
@@ -322,8 +322,8 @@ def _rotation_skimage(image, matrix, shift, order, missing, clip):
322
322
  """
323
323
  try:
324
324
  import skimage.transform
325
- except ImportError:
326
- raise ImportError("The scikit-image package is required to use this rotation method.")
325
+ except ImportError as e:
326
+ raise ImportError("The scikit-image package is required to use this rotation method.") from e
327
327
 
328
328
  # Make the rotation matrix 3x3 to include translation of the image
329
329
  skmatrix = np.zeros((3, 3))
@@ -384,8 +384,8 @@ def _rotation_cv2(image, matrix, shift, order, missing, clip):
384
384
  """
385
385
  try:
386
386
  import cv2
387
- except ImportError:
388
- raise ImportError("The opencv-python package is required to use this rotation method.")
387
+ except ImportError as e:
388
+ raise ImportError("The opencv-python package is required to use this rotation method.") from e
389
389
 
390
390
  _CV_ORDER_FLAGS = {
391
391
  0: cv2.INTER_NEAREST,
@@ -0,0 +1,3 @@
1
+ import pytest
2
+
3
+ pytest.importorskip("asdf")
@@ -994,7 +994,7 @@ class GenericMap(NDData):
994
994
 
995
995
  This time is the "canonical" way to refer to an observation, which is commonly
996
996
  the start of the observation, but can be a different time. In comparison, the
997
- `.GenericMap.date_start` property is unambigiously the start of the observation.
997
+ `.GenericMap.date_start` property is unambiguously the start of the observation.
998
998
 
999
999
  The observation time is determined using this order of preference:
1000
1000
 
@@ -343,8 +343,8 @@ class MapSequence:
343
343
  removes = []
344
344
 
345
345
  # Normal plot
346
- def annotate_frame(i):
347
- axes.set_title(f"{self[i].name}")
346
+ def annotate_frame(i, title=None):
347
+ axes.set_title(f"{self[i].name}" if title is None else title)
348
348
  axes.set_xlabel(axis_labels_from_ctype(self[i].coordinate_system[0],
349
349
  self[i].spatial_units[0]))
350
350
  axes.set_ylabel(axis_labels_from_ctype(self[i].coordinate_system[1],
@@ -381,7 +381,7 @@ class MapSequence:
381
381
  wcsaxes_compat.default_wcs_grid(axes)
382
382
 
383
383
  if annotate:
384
- annotate_frame(i)
384
+ annotate_frame(i, title=kwargs.get('title'))
385
385
  removes += list(plot_function(fig, axes, ani_data[i]))
386
386
 
387
387
  ani = matplotlib.animation.FuncAnimation(fig, updatefig,
@@ -185,14 +185,14 @@ class GONGMagnetogramMap(GenericMap):
185
185
  # Time in header is GPS and there no GPS scale in astropy so parse as TAI and add offset
186
186
  # https://gssc.esa.int/navipedia/index.php/Transformations_between_Time_Systems#GNSS_–_TAI
187
187
  date_obs = (parse_time(date_obs_str, scale='tai') + 19 *u.s).utc
188
- return date_obs or super().date
188
+ return parse_time(date_obs) or super().date
189
189
 
190
190
  def _set_date(self, date):
191
- date = parse_time(date).tai - 19*u.s
192
191
  if 'time-obs' in self.meta:
192
+ date = parse_time(date).tai - 19*u.s
193
193
  self.meta['date-obs'], self.meta['time-obs'] = date.isot.split('T')
194
194
  else:
195
- self.meta['date-obs'] = date.isot
195
+ super()._set_date(date)
196
196
 
197
197
  @property
198
198
  def reference_date(self):
@@ -2,14 +2,20 @@ import pytest
2
2
 
3
3
  import astropy.units as u
4
4
 
5
- from sunpy.data.test import get_dummy_map_from_header, get_test_filepath
5
+ from sunpy.data.test import get_dummy_map_from_header_obj, get_header_from_file, get_test_filepath
6
6
  from sunpy.map.sources.gong import GONGMagnetogramMap
7
+ from sunpy.time import parse_time
7
8
  from .helpers import _test_private_date_setters
8
9
 
9
10
 
10
- @pytest.fixture
11
- def gong_magnetogram():
12
- return get_dummy_map_from_header(get_test_filepath('gong_magnetogram.header'))
11
+ @pytest.fixture(params=["full-date-obs", "with-time-obs"])
12
+ def gong_magnetogram(request):
13
+ header = get_header_from_file(get_test_filepath('gong_magnetogram.header'))
14
+ if request.param == "full-date-obs":
15
+ time_obs = header.pop("TIME-OBS")
16
+ date_obs = (parse_time(f"{header['DATE-OBS']} {time_obs}", scale='tai') + 19 *u.s).utc
17
+ header["DATE-OBS"] = date_obs
18
+ return get_dummy_map_from_header_obj(header)
13
19
 
14
20
 
15
21
  def test_fitstoGONGSynoptic(gong_magnetogram):
@@ -60,6 +60,7 @@ def test_read_asdf_and_verify(tmpdir):
60
60
  assert isinstance(loaded_asdf_map, sunpy.map.sources.AIAMap)
61
61
 
62
62
 
63
+ @asdf_entry_points
63
64
  def test_map_meta_changes_in_asdf(tmpdir):
64
65
  map = sunpy.map.Map(AIA_171_IMAGE)
65
66
  map = map.rotate(90 * u.deg)
@@ -1450,6 +1450,7 @@ def test_submap_inputs(generic_map2, coords):
1450
1450
 
1451
1451
 
1452
1452
  def test_contour_deprecation_warning(simple_map):
1453
+ pytest.importorskip("skimage")
1453
1454
 
1454
1455
  with pytest.warns(SunpyDeprecationWarning, match="The contour function is deprecated and may be removed in a future version.\\s+Use sunpy.map.GenericMap.find_contours instead."):
1455
1456
  simple_map.contour(1.5)
@@ -1473,6 +1474,7 @@ def test_find_contours_contourpy(simple_map):
1473
1474
 
1474
1475
 
1475
1476
  def test_find_contours_skimage(simple_map):
1477
+ pytest.importorskip("skimage")
1476
1478
  data = np.ones(simple_map.data.shape)
1477
1479
  data[4, 4] = 2
1478
1480
  simple_map = sunpy.map.Map(data, simple_map.meta)
@@ -216,6 +216,13 @@ def test_map_sequence_plot_clip_interval(aia171_test_map):
216
216
  animation._step()
217
217
 
218
218
 
219
+ @figure_test
220
+ def test_map_sequence_plot_custom_title(aia171_test_map):
221
+ # Test that custom plot title shows up even when annotate=True
222
+ seq = sunpy.map.Map([aia171_test_map, aia171_test_map], sequence=True)
223
+ seq.plot(title='Custom Title', annotate=True)
224
+
225
+
219
226
  @skip_glymur
220
227
  def test_mapsequence_plot_uint8_norm():
221
228
  # We want to check the case for images with no norms set
@@ -1,6 +1,9 @@
1
1
  import astropy.units as u
2
+ from astropy.coordinates import SkyCoord
2
3
 
4
+ from sunpy.coordinates.frames import Helioprojective
3
5
  from sunpy.coordinates.utils import get_rectangle_coordinates
6
+ from sunpy.map.maputils import coordinate_is_on_solar_disk
4
7
  from sunpy.net._attrs import Time, Wavelength
5
8
  from sunpy.net.attr import AttrAnd, AttrComparison, AttrOr, AttrWalker, DataAttr, SimpleAttr
6
9
 
@@ -131,7 +134,7 @@ class Cutout(DataAttr):
131
134
  Parameters
132
135
  ----------
133
136
  bottom_left : `~astropy.coordinates.SkyCoord`
134
- Coordinate for the bottom left corner of the cutout.
137
+ Helioprojective coordinate for the bottom left corner of the cutout.
135
138
  top_right : `~astropy.coordinates.SkyCoord`, optional
136
139
  Coordinate for the top right corner of the cutout. If this is
137
140
  not specified, both ``width`` and ``height`` must both be specified.
@@ -151,6 +154,15 @@ class Cutout(DataAttr):
151
154
  See Also
152
155
  --------
153
156
  sunpy.coordinates.utils.get_rectangle_coordinates
157
+
158
+ Notes
159
+ -----
160
+ The ``bottom_left`` coordinate must be in the `~sunpy.coordinates.Helioprojective`
161
+ frame. The ``observer`` frame attribute of ``bottom_left`` is ignored, and
162
+ instead the observer location is assumed to be SDO.
163
+
164
+ If ``tracking`` is `True`, the center of the cutout is required to be on the
165
+ solar disk, otherwise the JSOC will produce unexpected output.
154
166
  """
155
167
  @u.quantity_input
156
168
  def __init__(self, bottom_left, top_right=None, width: u.arcsec = None,
@@ -158,6 +170,17 @@ class Cutout(DataAttr):
158
170
  nan_off_limb=False):
159
171
  super().__init__()
160
172
  bl, tr = get_rectangle_coordinates(bottom_left, top_right=top_right, width=width, height=height)
173
+ if not isinstance(bl.frame, Helioprojective):
174
+ raise ValueError("`bottom_left` must be in the `Helioprojective` frame, but is instead "
175
+ f"in the `{bl.frame.__class__.__name__}` frame")
176
+
177
+ center_x = (bl.Tx + tr.Tx) / 2
178
+ center_y = (bl.Ty + tr.Ty) / 2
179
+ center = SkyCoord(center_x, center_y, frame=bottom_left.frame)
180
+ if tracking and not coordinate_is_on_solar_disk(center):
181
+ raise ValueError("Tracking is enabled, but the center of the cutout "
182
+ f"(Tx={center_x}, Ty={center_y}) is not on the solar disk.")
183
+
161
184
  self.value = {
162
185
  't_ref': bl.obstime.isot,
163
186
  # JSOC input is disable tracking so take the negative
@@ -166,10 +189,10 @@ class Cutout(DataAttr):
166
189
  'c': int(nan_off_limb),
167
190
  'locunits': 'arcsec',
168
191
  'boxunits': 'arcsec',
169
- 'x': ((bl.Tx + tr.Tx) / 2).to('arcsec').value,
170
- 'y': ((bl.Ty + tr.Ty) / 2).to('arcsec').value,
171
- 'width': (tr.Tx - bl.Tx).to('arcsec').value,
172
- 'height': (tr.Ty - bl.Ty).to('arcsec').value,
192
+ 'x': center_x.to_value('arcsec'),
193
+ 'y': center_y.to_value('arcsec'),
194
+ 'width': (tr.Tx - bl.Tx).to_value('arcsec'),
195
+ 'height': (tr.Ty - bl.Ty).to_value('arcsec'),
173
196
  }
174
197
 
175
198
  def collides(self, other):
@@ -1,9 +1,11 @@
1
1
  import pytest
2
2
 
3
3
  import astropy.units as u
4
+ from astropy.coordinates import SkyCoord
4
5
 
5
6
  import sunpy.net.jsoc as jsoc
6
7
  import sunpy.net.jsoc.attrs as attrs
8
+ from sunpy.coordinates import frames
7
9
  from sunpy.net import _attrs as core_attrs
8
10
  from sunpy.net.attr import AttrAnd, AttrOr
9
11
 
@@ -81,3 +83,30 @@ def test_empty_notify():
81
83
  def test_not_email_notify():
82
84
  with pytest.raises(ValueError, match="Notify attribute must contain an '@' symbol to be a valid email address"):
83
85
  attrs.Notify("someemailthatisntone")
86
+
87
+
88
+ def test_cutout_not_helioprojective():
89
+ hpc = SkyCoord(500*u.arcsec, -200*u.arcsec,
90
+ obstime='2025-09-16', observer="earth", frame=frames.Helioprojective)
91
+ # No error because helioprojective
92
+ _ = attrs.Cutout(hpc, width=900*u.arcsec, height=900*u.arcsec)
93
+
94
+ hpr = SkyCoord(500*u.arcsec, -200*u.arcsec,
95
+ obstime='2025-09-16', observer="earth", frame=frames.HelioprojectiveRadial)
96
+ # Error because not helioprojective
97
+ with pytest.raises(ValueError, match="`bottom_left` must be in the `Helioprojective` frame, but is instead in the `HelioprojectiveRadial` frame"):
98
+ _ = attrs.Cutout(hpr, width=900*u.arcsec, height=900*u.arcsec)
99
+
100
+
101
+ def test_cutout_not_on_disk_when_tracking():
102
+ bottom_left = SkyCoord(500*u.arcsec, -200*u.arcsec,
103
+ obstime='2025-09-16', observer="earth", frame=frames.Helioprojective)
104
+
105
+ # No error because tracking is disabled
106
+ cutout = attrs.Cutout(bottom_left, width=900*u.arcsec, height=900*u.arcsec, tracking=False)
107
+ assert cutout.value["x"] == 950
108
+ assert cutout.value["y"] == 250
109
+
110
+ # Error because tracking is enabled
111
+ with pytest.raises(ValueError, match="Tracking is enabled, but the center of the cutout .* is not on the solar disk"):
112
+ _ = attrs.Cutout(bottom_left, width=900*u.arcsec, height=900*u.arcsec, tracking=True)
@@ -335,7 +335,7 @@ def test_attr_number_point(POINTNUMBER):
335
335
  assert Instrument.onepointfive == POINTNUMBER
336
336
 
337
337
 
338
- def test_attr_numbes():
338
+ def test_attr_numbers():
339
339
  attr.Attr.update_values({GenericClient: {Instrument: [('12AIAs', 'That is too many AIAs')]}})
340
340
  # This checks for sanitization of names.
341
341
  assert 'one_2aias' in attr.Attr._attr_registry[Instrument].name
@@ -167,6 +167,7 @@ def test_consistency_with_rotatedsunframe():
167
167
 
168
168
  # Testing using observer inputs
169
169
  def test_differential_rotate_observer_all_off_disk(all_off_disk_map):
170
+ pytest.importorskip("skimage")
170
171
  # Test a map that is entirely off the disk of the Sun
171
172
  # Should report an error
172
173
  with pytest.raises(ValueError, match="The entire map is off disk. No data to differentially rotate."):
@@ -174,6 +175,7 @@ def test_differential_rotate_observer_all_off_disk(all_off_disk_map):
174
175
 
175
176
 
176
177
  def test_differential_rotate_observer_full_disk(aia171_test_map):
178
+ pytest.importorskip("skimage")
177
179
  # Test a full disk map
178
180
  new_observer = get_earth(aia171_test_map.date + 6*u.hr)
179
181
  dmap = differential_rotate(aia171_test_map, observer=new_observer)
@@ -184,6 +186,7 @@ def test_differential_rotate_observer_full_disk(aia171_test_map):
184
186
 
185
187
 
186
188
  def test_differential_rotate_observer_all_on_disk(all_on_disk_map):
189
+ pytest.importorskip("skimage")
187
190
  # Test a map that is entirely on disk - triggers sub full disk branches
188
191
  # Rotated map should have a smaller extent in the x - direction
189
192
  new_observer = get_earth(all_on_disk_map.date - 48*u.hr)
@@ -199,6 +202,7 @@ def test_differential_rotate_observer_all_on_disk(all_on_disk_map):
199
202
 
200
203
 
201
204
  def test_differential_rotate_observer_straddles_limb(straddles_limb_map):
205
+ pytest.importorskip("skimage")
202
206
  # Test a map that straddles the limb - triggers sub full disk branches
203
207
  # Rotated map should have a smaller extent in the x - direction
204
208
  new_observer = get_earth(straddles_limb_map.date + 48*u.hr)
@@ -212,6 +216,7 @@ def test_differential_rotate_observer_straddles_limb(straddles_limb_map):
212
216
 
213
217
  # ----- Testing with time input -----
214
218
  def test_differential_rotate_time_full_disk(aia171_test_map):
219
+ pytest.importorskip("skimage")
215
220
  # Test a full disk map
216
221
  new_time = aia171_test_map.date + 6*u.hr
217
222
  with pytest.warns(UserWarning, match="Using 'time' assumes an Earth-based observer"):
@@ -222,6 +227,7 @@ def test_differential_rotate_time_full_disk(aia171_test_map):
222
227
 
223
228
 
224
229
  def test_differential_rotate_time_all_on_disk(all_on_disk_map):
230
+ pytest.importorskip("skimage")
225
231
  # Test a map that is entirely on disk - triggers sub full disk branches
226
232
  # Rotated map should have a smaller extent in the x - direction
227
233
  new_time = all_on_disk_map.date - 48*u.hr
@@ -238,6 +244,7 @@ def test_differential_rotate_time_all_on_disk(all_on_disk_map):
238
244
 
239
245
 
240
246
  def test_differential_rotate_time_straddles_limb(straddles_limb_map):
247
+ pytest.importorskip("skimage")
241
248
  # Test a map that straddles the limb - triggers sub full disk branches
242
249
  # Rotated map should have a smaller extent in the x - direction
243
250
  new_time = straddles_limb_map.date + 48*u.hr
@@ -249,6 +256,7 @@ def test_differential_rotate_time_straddles_limb(straddles_limb_map):
249
256
 
250
257
 
251
258
  def test_differential_rotate_time_off_disk(all_off_disk_map):
259
+ pytest.importorskip("skimage")
252
260
  # Test a map that is entirely off the disk of the Sun
253
261
  # Should report an error
254
262
  new_time = all_off_disk_map.date + 48*u.hr
@@ -392,12 +400,14 @@ def test_warp_sun_coordinates(all_on_disk_map):
392
400
 
393
401
  @pytest.mark.array_compare
394
402
  def test_differential_rotation(aia171_test_map):
403
+ pytest.importorskip("skimage")
395
404
  with pytest.warns(UserWarning, match="Using 'time' assumes an Earth-based observer"):
396
405
  rot_map = differential_rotate(aia171_test_map, time=2*u.day)
397
406
  return rot_map.data
398
407
 
399
408
 
400
409
  def test_rsun_fallback(aia171_test_map):
410
+ pytest.importorskip("skimage")
401
411
  # Remove the AIA-specific value of the solar radius
402
412
  assert_quantity_allclose(aia171_test_map.rsun_meters, 696 * u.Mm)
403
413
  del aia171_test_map.meta['rsun_ref'], aia171_test_map.meta['rsun_obs']
@@ -22,6 +22,7 @@
22
22
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot": "86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
23
23
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_cmap_norm": "129afdbcb3de6893187f3bbe20e9107316ae5d04ceecb8a1969befe3bb3ff540",
24
24
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_clip_interval": "33bcd1f8416ff92deffad5482bf76ad620c2cb6c7a69f91eacfa5a2e508d34f0",
25
+ "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_title": "4ad766af63ce731a89a88287359af7c6b5cd0e28dde2c4d92855aa3dbcf2da97",
25
26
  "sunpy.map.tests.test_plotting.test_plot_aia171": "86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
26
27
  "sunpy.map.tests.test_plotting.test_plot_rotated_aia171": "982363a267e12a380c48c02ab73a98bbadae4ce54f4b621898f815aac2daf040",
27
28
  "sunpy.map.tests.test_plotting.test_plot_aia171_clip": "29b93bbe004670248aed9ddde8c5f8e6eda2d975d6c046f05a9c4a5f144caf2c",
@@ -22,6 +22,7 @@
22
22
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot": "86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
23
23
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_cmap_norm": "541450f6bb90fce447bc49875d9eb44fba2522989bcac73867bde73891f61b4d",
24
24
  "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_clip_interval": "33bcd1f8416ff92deffad5482bf76ad620c2cb6c7a69f91eacfa5a2e508d34f0",
25
+ "sunpy.map.tests.test_mapsequence.test_map_sequence_plot_custom_title": "4ad766af63ce731a89a88287359af7c6b5cd0e28dde2c4d92855aa3dbcf2da97",
25
26
  "sunpy.map.tests.test_plotting.test_plot_aia171": "86f2d19643fbeeaea8bd7097b9002a77da455eeeb46d4ac707bd3c55df15dc22",
26
27
  "sunpy.map.tests.test_plotting.test_plot_rotated_aia171": "982363a267e12a380c48c02ab73a98bbadae4ce54f4b621898f815aac2daf040",
27
28
  "sunpy.map.tests.test_plotting.test_plot_aia171_clip": "29b93bbe004670248aed9ddde8c5f8e6eda2d975d6c046f05a9c4a5f144caf2c",
@@ -90,4 +91,4 @@
90
91
  "sunpy.visualization.tests.test_drawing.test_draw_extent": "d9e5182e20feff6257c3209c2202727a8e628842ca3c0c80fd1cafbc64376388",
91
92
  "sunpy.visualization.tests.test_drawing.test_draw_extent_3d": "1d329ecd0e31f4d4ecfb3b75e255c117dc631bd39be9a8a862fb7974004ff07c",
92
93
  "sunpy.visualization.tests.test_visualization.test_show_hpr_impact_angle": "43f6c3fea4238064ce503d699cba6457b3eb07ee58ea2a52f43556f42ee7efc8"
93
- }
94
+ }