sunpy 7.0.2__tar.gz → 7.0.4__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.4}/.cruft.json +2 -2
  2. {sunpy-7.0.2 → sunpy-7.0.4}/CHANGELOG.rst +28 -0
  3. {sunpy-7.0.2 → sunpy-7.0.4}/PKG-INFO +12 -31
  4. {sunpy-7.0.2 → sunpy-7.0.4}/_typos.toml +2 -0
  5. {sunpy-7.0.2 → sunpy-7.0.4}/docs/conf.py +2 -0
  6. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/maps.rst +2 -1
  7. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/6.0.rst +1 -2
  8. {sunpy-7.0.2 → sunpy-7.0.4}/pyproject.toml +10 -6
  9. {sunpy-7.0.2 → sunpy-7.0.4}/pytest.ini +1 -0
  10. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/_version.py +3 -3
  11. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_spice.py +2 -1
  12. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/__init__.py +19 -8
  13. sunpy-7.0.4/sunpy/data/test/camera.npy +0 -0
  14. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/tests/test_transform.py +13 -6
  15. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/transform.py +4 -4
  16. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/ana.py +23 -34
  17. sunpy-7.0.4/sunpy/io/special/asdf/tests/__init__.py +3 -0
  18. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_fits.py +15 -3
  19. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/mapbase.py +2 -6
  20. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/mapsequence.py +3 -3
  21. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/gong.py +3 -3
  22. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_gong_magnetogram_source.py +10 -4
  23. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_map_factory.py +13 -8
  24. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_mapbase.py +2 -0
  25. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_mapsequence.py +7 -0
  26. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/adapt.py +45 -3
  27. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/lyra.py +6 -6
  28. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_adapt.py +40 -10
  29. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_aia_synopsis.py +4 -3
  30. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/attrs.py +30 -5
  31. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/tests/test_attr.py +29 -0
  32. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_attr.py +1 -1
  33. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_fido.py +1 -1
  34. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/tests/test_vso.py +1 -1
  35. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/physics/tests/test_differential_rotation.py +10 -0
  36. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/figure_hashes_mpl_382_ft_261_astropy_702_animators_121.json +1 -0
  37. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/figure_hashes_mpl_dev_ft_261_astropy_dev_animators_dev.json +2 -1
  38. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/helpers.py +15 -2
  39. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/self_test.py +1 -2
  40. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/tests/test_timeseriesbase.py +6 -6
  41. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_metadata.py +4 -4
  42. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_sysinfo.py +33 -35
  43. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/PKG-INFO +12 -31
  44. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/SOURCES.txt +1 -0
  45. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/requires.txt +7 -3
  46. sunpy-7.0.2/sunpy/visualization/tests/__init__.py +0 -0
  47. {sunpy-7.0.2 → sunpy-7.0.4}/.coveragerc +0 -0
  48. {sunpy-7.0.2 → sunpy-7.0.4}/.flake8 +0 -0
  49. {sunpy-7.0.2 → sunpy-7.0.4}/.isort.cfg +0 -0
  50. {sunpy-7.0.2 → sunpy-7.0.4}/.ruff.toml +0 -0
  51. {sunpy-7.0.2 → sunpy-7.0.4}/CITATION.rst +0 -0
  52. {sunpy-7.0.2 → sunpy-7.0.4}/LICENSE.rst +0 -0
  53. {sunpy-7.0.2 → sunpy-7.0.4}/MANIFEST.in +0 -0
  54. {sunpy-7.0.2 → sunpy-7.0.4}/README.rst +0 -0
  55. {sunpy-7.0.2 → sunpy-7.0.4}/docs/Makefile +0 -0
  56. {sunpy-7.0.2 → sunpy-7.0.4}/docs/citation.rst +0 -0
  57. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/backports.rst +0 -0
  58. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/ci_jobs.rst +0 -0
  59. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/code_standards.rst +0 -0
  60. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/conda_for_dependencies.rst +0 -0
  61. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/dependencies.rst +0 -0
  62. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/documentation.rst +0 -0
  63. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/example_gallery.rst +0 -0
  64. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/funding.rst +0 -0
  65. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/images/actions_check_pr.png +0 -0
  66. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/images/actions_summary_check.png +0 -0
  67. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/images/checks.png +0 -0
  68. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/images/checks_pr.png +0 -0
  69. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/logger.rst +0 -0
  70. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/maintainer_workflow.rst +0 -0
  71. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/newcomers.rst +0 -0
  72. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/pr_checklist.rst +0 -0
  73. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/pr_review_procedure.rst +0 -0
  74. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/public_api.rst +0 -0
  75. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/remote_data_manager.rst +0 -0
  76. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/tests.rst +0 -0
  77. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/contents/units_quantities.rst +0 -0
  78. {sunpy-7.0.2 → sunpy-7.0.4}/docs/dev_guide/index.rst +0 -0
  79. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/coord_components.rst +0 -0
  80. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/create_a_map.rst +0 -0
  81. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/create_coords.rst +0 -0
  82. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/create_custom_map.rst +0 -0
  83. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/create_custom_timeseries.rst +0 -0
  84. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/create_rectangle_on_map.rst +0 -0
  85. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/fix_map_metadata.rst +0 -0
  86. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/index.rst +0 -0
  87. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/manipulate_grid_lines.rst +0 -0
  88. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/observer_by_coordinate.rst +0 -0
  89. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/parse_time.rst +0 -0
  90. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/read_asdf_file.rst +0 -0
  91. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/remote_data_manager.rst +0 -0
  92. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/search_multiple_wavelengths.rst +0 -0
  93. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/search_vso.rst +0 -0
  94. {sunpy-7.0.2 → sunpy-7.0.4}/docs/how_to/transform_coords.rst +0 -0
  95. {sunpy-7.0.2 → sunpy-7.0.4}/docs/index.rst +0 -0
  96. {sunpy-7.0.2 → sunpy-7.0.4}/docs/make.bat +0 -0
  97. {sunpy-7.0.2 → sunpy-7.0.4}/docs/nitpick-exceptions +0 -0
  98. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/bibliography.rst +0 -0
  99. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/coordinates/index.rst +0 -0
  100. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/customization.rst +0 -0
  101. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/data.rst +0 -0
  102. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/image.rst +0 -0
  103. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/index.rst +0 -0
  104. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/internal_api.rst +0 -0
  105. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/io.rst +0 -0
  106. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/known_issues.rst +0 -0
  107. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/map.rst +0 -0
  108. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/net.rst +0 -0
  109. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/physics.rst +0 -0
  110. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/ssw.rst +0 -0
  111. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/stability.rst +0 -0
  112. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/sun.rst +0 -0
  113. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/sunpy.rst +0 -0
  114. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/sunpy_stability.yaml +0 -0
  115. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/time.rst +0 -0
  116. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/timeseries.rst +0 -0
  117. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/troubleshooting.rst +0 -0
  118. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/util.rst +0 -0
  119. {sunpy-7.0.2 → sunpy-7.0.4}/docs/reference/visualization.rst +0 -0
  120. {sunpy-7.0.2 → sunpy-7.0.4}/docs/references.bib +0 -0
  121. {sunpy-7.0.2 → sunpy-7.0.4}/docs/robots.txt +0 -0
  122. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/carrington.rst +0 -0
  123. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/index.rst +0 -0
  124. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/rotatedsunframe.rst +0 -0
  125. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/rsun.rst +0 -0
  126. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/velocities.rst +0 -0
  127. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/coordinates/wcs.rst +0 -0
  128. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/custom_map_rotate.rst +0 -0
  129. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/deprecation.rst +0 -0
  130. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/extending_fido.rst +0 -0
  131. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/history_comments.rst +0 -0
  132. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/index.rst +0 -0
  133. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/installation.rst +0 -0
  134. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/logger.rst +0 -0
  135. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/new_map_class.rst +0 -0
  136. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/rsun.rst +0 -0
  137. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/scraper_migration.rst +0 -0
  138. {sunpy-7.0.2 → sunpy-7.0.4}/docs/topic_guide/timeseries_metadata.rst +0 -0
  139. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/acquiring_data/hek.rst +0 -0
  140. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/acquiring_data/index.rst +0 -0
  141. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/acquiring_data/jsoc.rst +0 -0
  142. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/coordinates.rst +0 -0
  143. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/index.rst +0 -0
  144. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/installation.rst +0 -0
  145. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/time.rst +0 -0
  146. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/timeseries.rst +0 -0
  147. {sunpy-7.0.2 → sunpy-7.0.4}/docs/tutorial/units.rst +0 -0
  148. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/0.8.rst +0 -0
  149. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/0.9.rst +0 -0
  150. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/1.0.rst +0 -0
  151. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/1.1-wispr.png +0 -0
  152. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/1.1.rst +0 -0
  153. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/2.0.rst +0 -0
  154. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/2.1.rst +0 -0
  155. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/3.0.rst +0 -0
  156. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/3.1.rst +0 -0
  157. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/4.0.rst +0 -0
  158. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/4.1.rst +0 -0
  159. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/5.0.rst +0 -0
  160. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/5.1.rst +0 -0
  161. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/6.1.rst +0 -0
  162. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/7.0-punch.png +0 -0
  163. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/7.0-suit.png +0 -0
  164. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/7.0.rst +0 -0
  165. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/changelog.rst +0 -0
  166. {sunpy-7.0.2 → sunpy-7.0.4}/docs/whatsnew/index.rst +0 -0
  167. {sunpy-7.0.2 → sunpy-7.0.4}/examples/README.txt +0 -0
  168. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/README.txt +0 -0
  169. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/downloading_cutouts.py +0 -0
  170. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/fido_metadata_queries.py +0 -0
  171. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/querying_and_loading_SHARP_data.py +0 -0
  172. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/querying_the_GOES_event_list.py +0 -0
  173. {sunpy-7.0.2 → sunpy-7.0.4}/examples/acquiring_data/search_cdaweb.py +0 -0
  174. {sunpy-7.0.2 → sunpy-7.0.4}/examples/computer_vision_techniques/README.txt +0 -0
  175. {sunpy-7.0.2 → sunpy-7.0.4}/examples/computer_vision_techniques/finding_masking_bright_pixels.py +0 -0
  176. {sunpy-7.0.2 → sunpy-7.0.4}/examples/computer_vision_techniques/loop_edge_enhance.py +0 -0
  177. {sunpy-7.0.2 → sunpy-7.0.4}/examples/computer_vision_techniques/mask_disk.py +0 -0
  178. {sunpy-7.0.2 → sunpy-7.0.4}/examples/computer_vision_techniques/off_limb_enhance.py +0 -0
  179. {sunpy-7.0.2 → sunpy-7.0.4}/examples/differential_rotation/README.txt +0 -0
  180. {sunpy-7.0.2 → sunpy-7.0.4}/examples/differential_rotation/comparing_rotation_models.py +0 -0
  181. {sunpy-7.0.2 → sunpy-7.0.4}/examples/differential_rotation/differentially_rotated_coordinate.py +0 -0
  182. {sunpy-7.0.2 → sunpy-7.0.4}/examples/differential_rotation/differentially_rotated_gridlines.py +0 -0
  183. {sunpy-7.0.2 → sunpy-7.0.4}/examples/differential_rotation/reprojected_map.py +0 -0
  184. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/README.txt +0 -0
  185. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/brightness_pixel_location.py +0 -0
  186. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/compare_rotation_results.py +0 -0
  187. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/composite_map_AIA_HMI.py +0 -0
  188. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/difference_images.py +0 -0
  189. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/hmi_contours_wcsaxes.py +0 -0
  190. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/image_bright_regions_gallery_example.py +0 -0
  191. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/lasco_mask.py +0 -0
  192. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_contouring.py +0 -0
  193. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_data_histogram.py +0 -0
  194. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_from_numpy_array.py +0 -0
  195. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_metadata_modification.py +0 -0
  196. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_resampling_and_superpixels.py +0 -0
  197. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_rotation.py +0 -0
  198. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/map_segment.py +0 -0
  199. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/masking_hmi.py +0 -0
  200. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/plot_frameless_image.py +0 -0
  201. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/submaps_and_cropping.py +0 -0
  202. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map/track_active_region.py +0 -0
  203. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/README.txt +0 -0
  204. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/autoalign_aia_hmi.py +0 -0
  205. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/projection_custom_origin.py +0 -0
  206. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_aia_euvi_mosaic.py +0 -0
  207. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_align_aia_hmi.py +0 -0
  208. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_auto_extent.py +0 -0
  209. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_carrington.py +0 -0
  210. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_different_observers.py +0 -0
  211. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_helioprojective_radial.py +0 -0
  212. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/reprojection_spherical_screen.py +0 -0
  213. {sunpy-7.0.2 → sunpy-7.0.4}/examples/map_transformations/upside_down_hmi.py +0 -0
  214. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/AIA_HMI_composite.py +0 -0
  215. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/README.txt +0 -0
  216. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/adding_earth.py +0 -0
  217. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/aia_example.py +0 -0
  218. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/draw_wcs_extent.py +0 -0
  219. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/fading_between_maps.py +0 -0
  220. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/finding_local_peaks_in_solar_data.py +0 -0
  221. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/finegrained_plot.py +0 -0
  222. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/great_arc_example.py +0 -0
  223. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/grid_plotting.py +0 -0
  224. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/hmi_synoptic_maps.py +0 -0
  225. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/lasco_overlay.py +0 -0
  226. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/lat_lon_lines.py +0 -0
  227. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/limb_plotting.py +0 -0
  228. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/magnetogram_active_regions.py +0 -0
  229. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/map_editcolormap.py +0 -0
  230. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/masked_composite_plot.py +0 -0
  231. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/offdisk_contours.py +0 -0
  232. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/overplot_hek_polygon.py +0 -0
  233. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/plot_equator_prime_meridian.py +0 -0
  234. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/plot_rotated_rectangle.py +0 -0
  235. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/plotting_blank_map.py +0 -0
  236. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/quadrangle.py +0 -0
  237. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/screen_blend_mode.py +0 -0
  238. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/simple_differential_rotation.py +0 -0
  239. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/solar_cycle_example.py +0 -0
  240. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/sunpy_matplotlib_colormap.py +0 -0
  241. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/three_map_composite.py +0 -0
  242. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/wcsaxes_map_example.py +0 -0
  243. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/wcsaxes_plotting_example.py +0 -0
  244. {sunpy-7.0.2 → sunpy-7.0.4}/examples/plotting/xy_lims.py +0 -0
  245. {sunpy-7.0.2 → sunpy-7.0.4}/examples/saving_and_loading_data/README.txt +0 -0
  246. {sunpy-7.0.2 → sunpy-7.0.4}/examples/saving_and_loading_data/coordinates_in_asdf.py +0 -0
  247. {sunpy-7.0.2 → sunpy-7.0.4}/examples/saving_and_loading_data/genericmap_in_asdf.py +0 -0
  248. {sunpy-7.0.2 → sunpy-7.0.4}/examples/saving_and_loading_data/genericmap_in_fits.py +0 -0
  249. {sunpy-7.0.2 → sunpy-7.0.4}/examples/saving_and_loading_data/load_adapt_fits_into_map.py +0 -0
  250. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/README.txt +0 -0
  251. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/eclipse_amount.py +0 -0
  252. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/hmi_cutout.py +0 -0
  253. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/los_simulation_box_intersection.py +0 -0
  254. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/stereoscopic_3d.py +0 -0
  255. {sunpy-7.0.2 → sunpy-7.0.4}/examples/showcase/where_is_stereo.py +0 -0
  256. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/README.txt +0 -0
  257. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/goes_hek_m25.py +0 -0
  258. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/goes_xrs_example.py +0 -0
  259. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/goes_xrs_nrt_data.py +0 -0
  260. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/power_spectra_example.py +0 -0
  261. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/timeseries_convolution_filter.py +0 -0
  262. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/timeseries_example.py +0 -0
  263. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/timeseries_peak_finding.py +0 -0
  264. {sunpy-7.0.2 → sunpy-7.0.4}/examples/time_series/timeseriesmetadata_example.py +0 -0
  265. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/AIA_limb_STEREO.py +0 -0
  266. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/AltAz_Coordinate_transform.py +0 -0
  267. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/ParkerSolarProbe_trajectory.py +0 -0
  268. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/README.txt +0 -0
  269. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/SDO_to_STEREO_Coordinate_Conversion.py +0 -0
  270. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/STEREO_SECCHI_starfield.py +0 -0
  271. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/getting_lasco_observer_location.py +0 -0
  272. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/getting_observer_location.py +0 -0
  273. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/map_slit_extraction.py +0 -0
  274. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/north_offset_frame.py +0 -0
  275. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/planet_locations.py +0 -0
  276. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/radec_to_hpc_map.py +0 -0
  277. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/spice.py +0 -0
  278. {sunpy-7.0.2 → sunpy-7.0.4}/examples/units_and_coordinates/venus_transit.py +0 -0
  279. {sunpy-7.0.2 → sunpy-7.0.4}/licenses/ASTROPY.rst +0 -0
  280. {sunpy-7.0.2 → sunpy-7.0.4}/licenses/GLUE.rst +0 -0
  281. {sunpy-7.0.2 → sunpy-7.0.4}/licenses/README.rst +0 -0
  282. {sunpy-7.0.2 → sunpy-7.0.4}/licenses/TOWNCRIER.rst +0 -0
  283. {sunpy-7.0.2 → sunpy-7.0.4}/setup.cfg +0 -0
  284. {sunpy-7.0.2 → sunpy-7.0.4}/setup.py +0 -0
  285. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/CITATION.rst +0 -0
  286. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/__init__.py +0 -0
  287. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/conftest.py +0 -0
  288. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/__init__.py +0 -0
  289. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/_transformations.py +0 -0
  290. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/data/igrf13coeffs.txt +0 -0
  291. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/ephemeris.py +0 -0
  292. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/frameattributes.py +0 -0
  293. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/frames.py +0 -0
  294. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/metaframes.py +0 -0
  295. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/offset_frame.py +0 -0
  296. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/screens.py +0 -0
  297. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/spice.py +0 -0
  298. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/sun.py +0 -0
  299. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/__init__.py +0 -0
  300. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/conftest.py +0 -0
  301. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/helpers.py +0 -0
  302. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/strategies.py +0 -0
  303. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_ephemeris.py +0 -0
  304. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_frameattributes.py +0 -0
  305. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_frames.py +0 -0
  306. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_metaframes.py +0 -0
  307. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_offset_frame.py +0 -0
  308. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_sun.py +0 -0
  309. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_transformations.py +0 -0
  310. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_utils.py +0 -0
  311. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/tests/test_wcs_utils.py +0 -0
  312. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/transformations.py +0 -0
  313. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/utils.py +0 -0
  314. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/coordinates/wcs_utils.py +0 -0
  315. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/README.rst +0 -0
  316. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/The_Blue_Marble_150px.png +0 -0
  317. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/__init__.py +0 -0
  318. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/_sample.py +0 -0
  319. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/__init__.py +0 -0
  320. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/cache.py +0 -0
  321. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/downloader.py +0 -0
  322. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/manager.py +0 -0
  323. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/storage.py +0 -0
  324. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/__init__.py +0 -0
  325. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/conftest.py +0 -0
  326. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/db_testdata.csv +0 -0
  327. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/mocks.py +0 -0
  328. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/test_cache.py +0 -0
  329. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/test_downloader.py +0 -0
  330. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/test_manager.py +0 -0
  331. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/data_manager/tests/test_storage.py +0 -0
  332. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/sample.py +0 -0
  333. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/sunpyrc +0 -0
  334. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/2013_05_13__16_54_06_137__SOHO_LASCO_C3_white-light.jp2 +0 -0
  335. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/2013_06_24__17_31_30_84__SDO_AIA_AIA_193.jp2 +0 -0
  336. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/20181209_180305_kcor_l2.header +0 -0
  337. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/2022_04_01__00_00_45__SOLO-EUI-FSI_EUI_FSI_174.jp2 +0 -0
  338. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/2023_01_31__03_39_23_200__SDO_HMI_HMI_continuum.jp2 +0 -0
  339. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT/efz20040301.000010_s.fits +0 -0
  340. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT/efz20040301.010016_s.fits +0 -0
  341. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/SOHO_EIT_171_20070601T120013_L1.header +0 -0
  342. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/SOHO_EIT_195_20070601T121346_L1.header +0 -0
  343. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/SOHO_EIT_284_20070601T120607_L1.header +0 -0
  344. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/SOHO_EIT_304_20070601T121937_L1.header +0 -0
  345. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.000010_s.header +0 -0
  346. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.010016_s.header +0 -0
  347. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.020010_s.header +0 -0
  348. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.030011_s.header +0 -0
  349. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.040010_s.header +0 -0
  350. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.050010_s.header +0 -0
  351. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.060010_s.header +0 -0
  352. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.070014_s.header +0 -0
  353. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.080010_s.header +0 -0
  354. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.090010_s.header +0 -0
  355. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.100010_s.header +0 -0
  356. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.110010_s.header +0 -0
  357. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EIT_header/efz20040301.120010_s.header +0 -0
  358. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/EVE_L0CS_DIODES_1m_truncated.txt +0 -0
  359. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/FGMG4_20110214_030443.7.header +0 -0
  360. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/HinodeSOT.header +0 -0
  361. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/HinodeXRT.header +0 -0
  362. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/19960106SRS.txt +0 -0
  363. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/19960430SRS.txt +0 -0
  364. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/19960513SRS.txt +0 -0
  365. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20000922SRS.txt +0 -0
  366. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20000927SRS.txt +0 -0
  367. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20001001SRS.txt +0 -0
  368. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20020624SRS.txt +0 -0
  369. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20020628SRS.txt +0 -0
  370. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20100621SRS.txt +0 -0
  371. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20150101SRS.txt +0 -0
  372. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20150306SRS.txt +0 -0
  373. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SRS/20150906SRS.txt +0 -0
  374. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SUT_T24_0847_000444_Lev1.0_2024-06-28T18.21.33.178_0971NB03.header +0 -0
  375. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SWAP/resampled0_swap.header +0 -0
  376. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SWAP/resampled1_swap.header +0 -0
  377. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SWAP/resampled2_swap.header +0 -0
  378. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/SWAP/resampled3_swap.header +0 -0
  379. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/YohkohSXT.header +0 -0
  380. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/_generate_asdf_test.py +0 -0
  381. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/adapt.header +0 -0
  382. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/aia_171_level1.fits +0 -0
  383. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/aiamap_genericmap_1.0.0.asdf +0 -0
  384. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/aiamap_shift_genericmap_1.0.0.asdf +0 -0
  385. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/annotation_ppt.db +0 -0
  386. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/cor1_20090615_000500_s4c1A.header +0 -0
  387. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/dr_suvi-l2-ci195_g16_s20190403T093200Z_e20190403T093600Z_v1-0-0_rebinned.header +0 -0
  388. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/euvi_20090615_000900_n4euA_s.header +0 -0
  389. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve/eve_01.txt +0 -0
  390. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve/eve_02.txt +0 -0
  391. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve/eve_03.txt +0 -0
  392. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve/eve_04.txt +0 -0
  393. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve/eve_05.txt +0 -0
  394. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/eve_l1_esp_2011046_00_truncated.fits +0 -0
  395. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gbm.fits +0 -0
  396. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/generated_sample.genx +0 -0
  397. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/go1520110607.fits +0 -0
  398. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/go1520120601.fits.gz +0 -0
  399. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/goes_13_leap_second.nc +0 -0
  400. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gong_halpha.header +0 -0
  401. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gong_magnetogram.header +0 -0
  402. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gong_synoptic.header +0 -0
  403. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gzip_fits_test.file +0 -0
  404. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gzip_test.fit.gz +0 -0
  405. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gzip_test.fits.gz +0 -0
  406. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/gzip_test.fts.gz +0 -0
  407. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/heliographic_phase_map.fits.gz +0 -0
  408. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hi_20110910_114721_s7h2A.header +0 -0
  409. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hmi_bharp_vlos_mag.header +0 -0
  410. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hmi_cea_sharp_magnetogram.header +0 -0
  411. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hmi_sharp_magnetogram.header +0 -0
  412. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hmi_synoptic.header +0 -0
  413. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hsi_image_20101016_191218.fits +0 -0
  414. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/hsi_obssumm_20120601_018_truncated.fits.gz +0 -0
  415. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/iris_l2_20130801_074720_4040000014_SJI_1400_t000.header +0 -0
  416. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/lasco_c2_25299383_s.header +0 -0
  417. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/lasco_c3.header +0 -0
  418. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/lyra_20150101-000000_lev3_std_truncated.fits.gz +0 -0
  419. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/mdi.fd_Ic.20101015_230100_TAI.data.header +0 -0
  420. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/mdi.fd_M_96m_lev182.20101015_191200_TAI.data.header +0 -0
  421. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/mdi_synoptic.header +0 -0
  422. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/not_actually_fits.fits +0 -0
  423. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/observed-solar-cycle-indices-truncated.json +0 -0
  424. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/predicted-solar-cycle-truncated.json +0 -0
  425. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/psp_fld_l2_mag_rtn_1min_20200104_v02.cdf +0 -0
  426. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/punch.header +0 -0
  427. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/resampled_hmi.fits +0 -0
  428. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/sci_gxrs-l2-irrad_g13_d20170901_truncated.nc +0 -0
  429. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/sci_gxrs-l2-irrad_g15_d20131028_truncated.nc +0 -0
  430. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/sci_xrsf-l2-avg1m_g15_d20190102_truncated.nc +0 -0
  431. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/sci_xrsf-l2-avg1m_g16_d20210101_truncated.nc +0 -0
  432. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/sci_xrsf-l2-flx1s_g17_d20201016_truncated.nc +0 -0
  433. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/seit_00171_fd_19961211_1900.header +0 -0
  434. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/solo_L1_eui-fsi304-image_20201021T145510206_V03.header +0 -0
  435. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/solo_L1_swa-pas-mom_20200706_V01.cdf +0 -0
  436. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/solo_L2_epd-ept-north-hcad_20200713_V02.cdf +0 -0
  437. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/swap_lv1_20140606_000113.header +0 -0
  438. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/tca110810_truncated +0 -0
  439. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/test_ana.fz +0 -0
  440. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/tsi20010130_025823_a2.header +0 -0
  441. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/waveunit/__init__.py +0 -0
  442. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/waveunit/medn_halph_fl_20050501_074655.header +0 -0
  443. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/waveunit/mq130812.084253.header +0 -0
  444. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/waveunit/na120701.091058.header +0 -0
  445. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/test/waveunit/svsm_e3100_S2_20110625_1856.header +0 -0
  446. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/tests/__init__.py +0 -0
  447. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/data/tests/test_sample.py +0 -0
  448. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/README.rst +0 -0
  449. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/__init__.py +0 -0
  450. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/appdirs.py +0 -0
  451. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/appdirs_license.txt +0 -0
  452. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/distro.py +0 -0
  453. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/distro_license.rst +0 -0
  454. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/inflect.py +0 -0
  455. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/inflect_license.txt +0 -0
  456. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/parse.py +0 -0
  457. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/extern/parse_license.txt +0 -0
  458. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/__init__.py +0 -0
  459. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/resample.py +0 -0
  460. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/tests/__init__.py +0 -0
  461. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/image/tests/test_resample.py +0 -0
  462. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/__init__.py +0 -0
  463. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/_cdf.py +0 -0
  464. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/_file_tools.py +0 -0
  465. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/_fits.py +0 -0
  466. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/_header.py +0 -0
  467. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/_jp2.py +0 -0
  468. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/setup_package.py +0 -0
  469. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/__init__.py +0 -0
  470. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/__init__.py +0 -0
  471. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/converters/__init__.py +0 -0
  472. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/converters/frames.py +0 -0
  473. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/converters/generic_map.py +0 -0
  474. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/entry_points.py +0 -0
  475. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/__init__.py +0 -0
  476. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.0.0.yaml +0 -0
  477. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.0.yaml +0 -0
  478. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.1.yaml +0 -0
  479. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.1.2.yaml +0 -0
  480. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.2.0.yaml +0 -0
  481. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/manifests/sunpy-1.2.1.yaml +0 -0
  482. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/generic_map-1.0.0.yaml +0 -0
  483. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/generic_map-1.1.0.yaml +0 -0
  484. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/generic_map-1.1.1.yaml +0 -0
  485. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/generic_map-1.2.0.yaml +0 -0
  486. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricearthequatorial-1.0.0.yaml +0 -0
  487. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricearthequatorial-1.1.0.yaml +0 -0
  488. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricsolarecliptic-1.0.0.yaml +0 -0
  489. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricsolarecliptic-1.1.0.yaml +0 -0
  490. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricsolarmagnetospheric-1.0.0.yaml +0 -0
  491. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geocentricsolarmagnetospheric-1.1.0.yaml +0 -0
  492. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geomagnetic-1.0.0.yaml +0 -0
  493. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/geomagnetic-1.1.0.yaml +0 -0
  494. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentric-1.0.0.yaml +0 -0
  495. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentric-1.1.0.yaml +0 -0
  496. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentricearthecliptic-1.0.0.yaml +0 -0
  497. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentricearthecliptic-1.1.0.yaml +0 -0
  498. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentricinertial-1.0.0.yaml +0 -0
  499. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliocentricinertial-1.1.0.yaml +0 -0
  500. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.0.0.yaml +0 -0
  501. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.1.0.yaml +0 -0
  502. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.2.0.yaml +0 -0
  503. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_carrington-1.3.0.yaml +0 -0
  504. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.0.0.yaml +0 -0
  505. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.1.0.yaml +0 -0
  506. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/heliographic_stonyhurst-1.2.0.yaml +0 -0
  507. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/helioprojective-1.0.0.yaml +0 -0
  508. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/helioprojective-1.1.0.yaml +0 -0
  509. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/helioprojectiveradial-1.0.0.yaml +0 -0
  510. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/helioprojectiveradial-1.1.0.yaml +0 -0
  511. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/solarmagnetic-1.0.0.yaml +0 -0
  512. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/resources/schemas/solarmagnetic-1.1.0.yaml +0 -0
  513. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/tests/hgc_100.asdf +0 -0
  514. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/tests/test_coordinate_frames.py +0 -0
  515. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/tests/test_genericmap.py +0 -0
  516. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/asdf/tests/test_time.py +0 -0
  517. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/genx.py +0 -0
  518. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/special/srs.py +0 -0
  519. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/_pyana.c +0 -0
  520. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anacompress.c +0 -0
  521. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anacompress.h +0 -0
  522. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anadecompress.c +0 -0
  523. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anadecompress.h +0 -0
  524. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anarw.c +0 -0
  525. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/anarw.h +0 -0
  526. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/src/ana/types.h +0 -0
  527. {sunpy-7.0.2/sunpy/io/special/asdf → sunpy-7.0.4/sunpy/io}/tests/__init__.py +0 -0
  528. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/generate_genx.pro +0 -0
  529. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_ana.py +0 -0
  530. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_cdf.py +0 -0
  531. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_filetools.py +0 -0
  532. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_genx.py +0 -0
  533. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_jp2.py +0 -0
  534. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/io/tests/test_srs.py +0 -0
  535. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/__init__.py +0 -0
  536. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/compositemap.py +0 -0
  537. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/header_helper.py +0 -0
  538. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/map_factory.py +0 -0
  539. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/maputils.py +0 -0
  540. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/__init__.py +0 -0
  541. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/adapt.py +0 -0
  542. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/hinode.py +0 -0
  543. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/iris.py +0 -0
  544. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/mlso.py +0 -0
  545. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/proba2.py +0 -0
  546. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/psp.py +0 -0
  547. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/punch.py +0 -0
  548. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/rhessi.py +0 -0
  549. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/sdo.py +0 -0
  550. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/soho.py +0 -0
  551. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/solo.py +0 -0
  552. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/source_type.py +0 -0
  553. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/stereo.py +0 -0
  554. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/suit.py +0 -0
  555. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/suvi.py +0 -0
  556. {sunpy-7.0.2/sunpy/io → sunpy-7.0.4/sunpy/map/sources}/tests/__init__.py +0 -0
  557. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/helpers.py +0 -0
  558. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_adapt_source.py +0 -0
  559. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_aia_source.py +0 -0
  560. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_cor_source.py +0 -0
  561. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_eit_l1_source.py +0 -0
  562. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_eit_source.py +0 -0
  563. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_eui_source.py +0 -0
  564. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_euvi_source.py +0 -0
  565. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_gong_halpha_source.py +0 -0
  566. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_gong_synoptic_source.py +0 -0
  567. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_hi_source.py +0 -0
  568. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_hmi_source.py +0 -0
  569. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_hmi_synoptic_source.py +0 -0
  570. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_iris_source.py +0 -0
  571. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_kcor_source.py +0 -0
  572. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_lasco_source.py +0 -0
  573. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_mdi_source.py +0 -0
  574. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_punch_source.py +0 -0
  575. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_rhessi_source.py +0 -0
  576. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_sot_source.py +0 -0
  577. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_source_type.py +0 -0
  578. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_suit_source.py +0 -0
  579. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_suvi_source.py +0 -0
  580. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_swap_source.py +0 -0
  581. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_sxt_source.py +0 -0
  582. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_trace_source.py +0 -0
  583. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_wispr_source.py +0 -0
  584. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/tests/test_xrt_source.py +0 -0
  585. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/trace.py +0 -0
  586. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/sources/yohkoh.py +0 -0
  587. {sunpy-7.0.2/sunpy/map/sources → sunpy-7.0.4/sunpy/map}/tests/__init__.py +0 -0
  588. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/conftest.py +0 -0
  589. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/strategies.py +0 -0
  590. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_compositemap.py +0 -0
  591. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_header.py +0 -0
  592. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_header_helper.py +0 -0
  593. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_mapbase_dask.py +0 -0
  594. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_maputils.py +0 -0
  595. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_plotting.py +0 -0
  596. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/map/tests/test_reproject_to.py +0 -0
  597. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/__init__.py +0 -0
  598. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/_attrs.py +0 -0
  599. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/attr.py +0 -0
  600. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/attrs.py +0 -0
  601. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/base_client.py +0 -0
  602. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/__init__.py +0 -0
  603. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/attrs.py +0 -0
  604. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/cdaweb.py +0 -0
  605. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/data/attrs.json +0 -0
  606. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/helpers.py +0 -0
  607. {sunpy-7.0.2/sunpy/map/tests → sunpy-7.0.4/sunpy/net/cdaweb/test}/__init__.py +0 -0
  608. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/test/test_cdaweb.py +0 -0
  609. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/cdaweb/walker.py +0 -0
  610. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/__init__.py +0 -0
  611. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/attrs/__init__.py +0 -0
  612. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/attrs/adapt.py +0 -0
  613. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/attrs/goes.py +0 -0
  614. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/client.py +0 -0
  615. {sunpy-7.0.2/sunpy/net/cdaweb/test → sunpy-7.0.4/sunpy/net/dataretriever/sources}/__init__.py +0 -0
  616. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/aia_synopsis.py +0 -0
  617. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/eve.py +0 -0
  618. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/fermi_gbm.py +0 -0
  619. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/goes.py +0 -0
  620. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/gong.py +0 -0
  621. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/noaa.py +0 -0
  622. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/norh.py +0 -0
  623. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/rhessi.py +0 -0
  624. {sunpy-7.0.2/sunpy/net/dataretriever/sources → sunpy-7.0.4/sunpy/net/dataretriever/sources/tests}/__init__.py +0 -0
  625. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_eve.py +0 -0
  626. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_fermi_gbm.py +0 -0
  627. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_goes_suvi.py +0 -0
  628. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_goes_ud.py +0 -0
  629. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_gong_synoptic.py +0 -0
  630. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_lyra_ud.py +0 -0
  631. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_noaa.py +0 -0
  632. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_norh.py +0 -0
  633. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/sources/tests/test_rhessi.py +0 -0
  634. {sunpy-7.0.2/sunpy/net/dataretriever/sources → sunpy-7.0.4/sunpy/net/dataretriever}/tests/__init__.py +0 -0
  635. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/dataretriever/tests/test_client.py +0 -0
  636. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/fido_factory.py +0 -0
  637. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/__init__.py +0 -0
  638. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/attrs.py +0 -0
  639. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/data/coord_properties.json +0 -0
  640. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/data/unit_properties.json +0 -0
  641. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/hek.py +0 -0
  642. {sunpy-7.0.2/sunpy/net/dataretriever → sunpy-7.0.4/sunpy/net/hek}/tests/__init__.py +0 -0
  643. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/tests/test_hek.py +0 -0
  644. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/tests/test_utils.py +0 -0
  645. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek/utils.py +0 -0
  646. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek2vso/__init__.py +0 -0
  647. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek2vso/hek2vso.py +0 -0
  648. {sunpy-7.0.2/sunpy/net/hek → sunpy-7.0.4/sunpy/net/hek2vso}/tests/__init__.py +0 -0
  649. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/hek2vso/tests/test_hek2vso.py +0 -0
  650. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/__init__.py +0 -0
  651. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/attrs.py +0 -0
  652. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/chaincode.py +0 -0
  653. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/hec.py +0 -0
  654. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/parser.py +0 -0
  655. {sunpy-7.0.2/sunpy/net/hek2vso → sunpy-7.0.4/sunpy/net/helio}/tests/__init__.py +0 -0
  656. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/tests/test_chaincode.py +0 -0
  657. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/helio/tests/test_helio.py +0 -0
  658. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/__init__.py +0 -0
  659. {sunpy-7.0.2/sunpy/net/helio/tests → sunpy-7.0.4/sunpy/net/jsoc/data}/__init__.py +0 -0
  660. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/data/attrs.json +0 -0
  661. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/jsoc.py +0 -0
  662. {sunpy-7.0.2/sunpy/net/jsoc/data → sunpy-7.0.4/sunpy/net/jsoc/tests}/__init__.py +0 -0
  663. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/jsoc/tests/test_jsoc.py +0 -0
  664. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/scraper.py +0 -0
  665. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/scraper_utils.py +0 -0
  666. {sunpy-7.0.2/sunpy/net/jsoc → sunpy-7.0.4/sunpy/net}/tests/__init__.py +0 -0
  667. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/strategies.py +0 -0
  668. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_attr_walker.py +0 -0
  669. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_attrs.py +0 -0
  670. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_baseclient.py +0 -0
  671. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_scraper.py +0 -0
  672. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/tests/test_scraper_utils.py +0 -0
  673. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/__init__.py +0 -0
  674. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/attrs.py +0 -0
  675. {sunpy-7.0.2/sunpy/net/tests → sunpy-7.0.4/sunpy/net/vso/data}/__init__.py +0 -0
  676. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/data/attrs.json +0 -0
  677. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/exceptions.py +0 -0
  678. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/legacy_response.py +0 -0
  679. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/table_response.py +0 -0
  680. {sunpy-7.0.2/sunpy/net/vso/data → sunpy-7.0.4/sunpy/net/vso/tests}/__init__.py +0 -0
  681. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/tests/conftest.py +0 -0
  682. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/tests/test_attrs.py +0 -0
  683. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/vso.py +0 -0
  684. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/net/vso/zeep_plugins.py +0 -0
  685. {sunpy-7.0.2/sunpy/net/vso/tests → sunpy-7.0.4/sunpy/physics}/__init__.py +0 -0
  686. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/physics/differential_rotation.py +0 -0
  687. {sunpy-7.0.2/sunpy/physics → sunpy-7.0.4/sunpy/physics/tests}/__init__.py +0 -0
  688. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/physics/tests/reference/test_differential_rotation.txt +0 -0
  689. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/__init__.py +0 -0
  690. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/_constants.py +0 -0
  691. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/constants.py +0 -0
  692. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/models.py +0 -0
  693. {sunpy-7.0.2/sunpy/physics → sunpy-7.0.4/sunpy/sun}/tests/__init__.py +0 -0
  694. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/tests/test_constants.py +0 -0
  695. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/sun/tests/test_models.py +0 -0
  696. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/__init__.py +0 -0
  697. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/mocks.py +0 -0
  698. {sunpy-7.0.2/sunpy/sun → sunpy-7.0.4/sunpy/tests}/tests/__init__.py +0 -0
  699. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/tests/test_mocks.py +0 -0
  700. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/tests/test_self_test.py +0 -0
  701. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/tests/tests/test_sunpy_data_filenames.py +0 -0
  702. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/__init__.py +0 -0
  703. {sunpy-7.0.2/sunpy/tests → sunpy-7.0.4/sunpy/time}/tests/__init__.py +0 -0
  704. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/tests/test_taiseconds.py +0 -0
  705. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/tests/test_time.py +0 -0
  706. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/tests/test_timerange.py +0 -0
  707. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/tests/test_utime.py +0 -0
  708. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/time.py +0 -0
  709. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/timeformats.py +0 -0
  710. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/time/timerange.py +0 -0
  711. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/__init__.py +0 -0
  712. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/conftest.py +0 -0
  713. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/metadata.py +0 -0
  714. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/__init__.py +0 -0
  715. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/eve.py +0 -0
  716. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/fermi_gbm.py +0 -0
  717. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/goes.py +0 -0
  718. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/lyra.py +0 -0
  719. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/noaa.py +0 -0
  720. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/norh.py +0 -0
  721. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/rhessi.py +0 -0
  722. {sunpy-7.0.2/sunpy/time → sunpy-7.0.4/sunpy/timeseries/sources}/tests/__init__.py +0 -0
  723. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_eve.py +0 -0
  724. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_fermi_gbm.py +0 -0
  725. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_goes.py +0 -0
  726. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_lyra.py +0 -0
  727. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_noaa.py +0 -0
  728. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_norh.py +0 -0
  729. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/sources/tests/test_rhessi.py +0 -0
  730. {sunpy-7.0.2/sunpy/timeseries/sources → sunpy-7.0.4/sunpy/timeseries}/tests/__init__.py +0 -0
  731. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/tests/test_timeseries_factory.py +0 -0
  732. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/tests/test_timeseriesmetadata.py +0 -0
  733. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/timeseries_factory.py +0 -0
  734. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/timeseries/timeseriesbase.py +0 -0
  735. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/__init__.py +0 -0
  736. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/config.py +0 -0
  737. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/datatype_factory_base.py +0 -0
  738. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/decorators.py +0 -0
  739. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/exceptions.py +0 -0
  740. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/functools.py +0 -0
  741. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/io.py +0 -0
  742. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/logger.py +0 -0
  743. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/metadata.py +0 -0
  744. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/net.py +0 -0
  745. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/parfive_helpers.py +0 -0
  746. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/sphinx/__init__.py +0 -0
  747. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/sphinx/doctest.py +0 -0
  748. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/sphinx/generate.py +0 -0
  749. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/sysinfo.py +0 -0
  750. {sunpy-7.0.2/sunpy/timeseries → sunpy-7.0.4/sunpy/util}/tests/__init__.py +0 -0
  751. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_config.py +0 -0
  752. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_datatype_factory_base.py +0 -0
  753. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_decorators.py +0 -0
  754. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_functools.py +0 -0
  755. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_logger.py +0 -0
  756. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_net.py +0 -0
  757. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_util.py +0 -0
  758. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/tests/test_xml.py +0 -0
  759. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/util.py +0 -0
  760. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/util/xml.py +0 -0
  761. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/version.py +0 -0
  762. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/__init__.py +0 -0
  763. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/animator/__init__.py +0 -0
  764. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/animator/mapsequenceanimator.py +0 -0
  765. {sunpy-7.0.2/sunpy/util → sunpy-7.0.4/sunpy/visualization/animator}/tests/__init__.py +0 -0
  766. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/animator/tests/test_mapsequenceanimator.py +0 -0
  767. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/__init__.py +0 -0
  768. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/cm.py +0 -0
  769. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/color_tables.py +0 -0
  770. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/README.rst +0 -0
  771. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/eit_dark_blue.csv +0 -0
  772. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/eit_dark_green.csv +0 -0
  773. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/eit_dark_red.csv +0 -0
  774. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/eit_yellow.csv +0 -0
  775. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/euvi_171.csv +0 -0
  776. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/euvi_195.csv +0 -0
  777. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/euvi_284.csv +0 -0
  778. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/euvi_304.csv +0 -0
  779. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/grayscale.csv +0 -0
  780. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/hi1.csv +0 -0
  781. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/hi2.csv +0 -0
  782. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/hmi_mag.csv +0 -0
  783. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/idl_3.csv +0 -0
  784. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/lasco_c2.csv +0 -0
  785. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/lasco_c3.csv +0 -0
  786. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/punch.csv +0 -0
  787. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/rhessi.csv +0 -0
  788. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/std_gamma_2.csv +0 -0
  789. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/stereo_cor1.csv +0 -0
  790. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/stereo_cor2.csv +0 -0
  791. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_bb01.csv +0 -0
  792. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_bb02.csv +0 -0
  793. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_bb03.csv +0 -0
  794. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb01.csv +0 -0
  795. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb02.csv +0 -0
  796. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb03.csv +0 -0
  797. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb04.csv +0 -0
  798. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb05.csv +0 -0
  799. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb06.csv +0 -0
  800. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb07.csv +0 -0
  801. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/suit_nb08.csv +0 -0
  802. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_1216.csv +0 -0
  803. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_1550.csv +0 -0
  804. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_1600.csv +0 -0
  805. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_1700.csv +0 -0
  806. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_171.csv +0 -0
  807. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_195.csv +0 -0
  808. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/data/trace_284.csv +0 -0
  809. {sunpy-7.0.2/sunpy/visualization/animator → sunpy-7.0.4/sunpy/visualization/colormaps}/tests/__init__.py +0 -0
  810. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/colormaps/tests/test_cm.py +0 -0
  811. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/drawing.py +0 -0
  812. {sunpy-7.0.2/sunpy/visualization/colormaps → sunpy-7.0.4/sunpy/visualization}/tests/__init__.py +0 -0
  813. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/tests/test_drawing.py +0 -0
  814. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/tests/test_visualization.py +0 -0
  815. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/visualization.py +0 -0
  816. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy/visualization/wcsaxes_compat.py +0 -0
  817. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/dependency_links.txt +0 -0
  818. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/entry_points.txt +0 -0
  819. {sunpy-7.0.2 → sunpy-7.0.4}/sunpy.egg-info/not-zip-safe +0 -0
  820. {sunpy-7.0.2 → sunpy-7.0.4}/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,31 @@
1
+ 7.0.4 (2025-12-04)
2
+ ==================
3
+
4
+ Bug Fixes
5
+ ---------
6
+
7
+ - Fix `~sunpy.net.dataretriever.ADAPTClient` returning no results for ADAPT maps after October 2024.
8
+ The filename convention was changed on the NSO server. (`#8388 <https://github.com/sunpy/sunpy/pull/8388>`__)
9
+ - Fix unintended dependency of ``net`` module on ``map`` module due to `~sunpy.net.jsoc.attrs.Cutout`. (`#8442 <https://github.com/sunpy/sunpy/pull/8442>`__)
10
+
11
+
12
+ Internal Changes
13
+ ----------------
14
+
15
+ - Stop using deprecated ``set_bad`` method on a matplotlib colormap. (`#8446 <https://github.com/sunpy/sunpy/pull/8446>`__)
16
+
17
+
18
+ 7.0.3 (2025-10-17)
19
+ ==================
20
+
21
+ Bug Fixes
22
+ ---------
23
+
24
+ - 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>`__)
25
+ - 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>`__)
26
+ - 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>`__)
27
+
28
+
1
29
  7.0.2 (2025-09-19)
2
30
  ==================
3
31
 
@@ -1,34 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sunpy
3
- Version: 7.0.2
3
+ Version: 7.0.4
4
4
  Summary: SunPy core package: Python for Solar Physics
5
5
  Author-email: The SunPy Community <sunpy@googlegroups.com>
6
- License: Copyright (c) 2013-2025 The SunPy developers
7
- All rights reserved.
8
-
9
- Redistribution and use in source and binary forms, with or without
10
- modification, are permitted provided that the following conditions are
11
- met:
12
-
13
- * Redistributions of source code must retain the above copyright
14
- notice, this list of conditions and the following disclaimer.
15
-
16
- * Redistributions in binary form must reproduce the above copyright
17
- notice, this list of conditions and the following disclaimer in the
18
- documentation and/or other materials provided with the distribution.
19
-
20
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
-
6
+ License-Expression: BSD-3-Clause
32
7
  Project-URL: Homepage, https://sunpy.org
33
8
  Project-URL: Source Code, https://github.com/sunpy/sunpy
34
9
  Project-URL: Download, https://pypi.org/project/sunpy
@@ -39,7 +14,6 @@ Keywords: solar physics,solar,science,sun,wcs,coordinates
39
14
  Platform: any
40
15
  Classifier: Development Status :: 5 - Production/Stable
41
16
  Classifier: Intended Audience :: Science/Research
42
- Classifier: License :: OSI Approved :: BSD License
43
17
  Classifier: Natural Language :: English
44
18
  Classifier: Operating System :: OS Independent
45
19
  Classifier: Programming Language :: Python
@@ -52,6 +26,10 @@ Provides: sunpy
52
26
  Requires-Python: >=3.11
53
27
  Description-Content-Type: text/x-rst
54
28
  License-File: LICENSE.rst
29
+ License-File: licenses/ASTROPY.rst
30
+ License-File: licenses/GLUE.rst
31
+ License-File: licenses/README.rst
32
+ License-File: licenses/TOWNCRIER.rst
55
33
  Requires-Dist: astropy>=6.1.0
56
34
  Requires-Dist: numpy>=1.25.0
57
35
  Requires-Dist: packaging>=23.2
@@ -107,16 +85,18 @@ Provides-Extra: tests-only
107
85
  Requires-Dist: hvpy>=1.1.0; extra == "tests-only"
108
86
  Requires-Dist: jplephem>=2.19; extra == "tests-only"
109
87
  Requires-Dist: pytest-astropy>=0.11.0; extra == "tests-only"
110
- Requires-Dist: pytest-asdf-plugin>=0.1.1; extra == "tests-only"
111
88
  Requires-Dist: pytest-mpl>=0.17.0; extra == "tests-only"
112
89
  Requires-Dist: pytest>=7.4.0; extra == "tests-only"
90
+ Provides-Extra: asdf-tests
91
+ Requires-Dist: sunpy[asdf]; extra == "asdf-tests"
92
+ Requires-Dist: pytest-asdf-plugin>=0.1.1; extra == "asdf-tests"
113
93
  Provides-Extra: tests
114
- Requires-Dist: sunpy[all,s3,tests-only]; extra == "tests"
94
+ Requires-Dist: sunpy[all,asdf-tests,s3,tests-only]; extra == "tests"
115
95
  Provides-Extra: docs
96
+ Requires-Dist: sunpy[all]; extra == "docs"
116
97
  Requires-Dist: sphinx>=7.1.0; extra == "docs"
117
98
  Requires-Dist: sphinx-automodapi>=0.16.0; extra == "docs"
118
99
  Requires-Dist: packaging>=23.2; extra == "docs"
119
- Requires-Dist: sunpy[all]; extra == "docs"
120
100
  Requires-Dist: hvpy>=1.1.0; extra == "docs"
121
101
  Requires-Dist: ruamel.yaml>=0.18.0; extra == "docs"
122
102
  Requires-Dist: sphinx-changelog>=1.5.0; extra == "docs"
@@ -130,6 +110,7 @@ Provides-Extra: docs-gallery
130
110
  Requires-Dist: sunpy[docs]; extra == "docs-gallery"
131
111
  Requires-Dist: astroquery>=0.4.6; extra == "docs-gallery"
132
112
  Requires-Dist: jplephem>=2.19; extra == "docs-gallery"
113
+ Requires-Dist: pillow; extra == "docs-gallery"
133
114
  Provides-Extra: dev
134
115
  Requires-Dist: sunpy[docs,tests]; extra == "dev"
135
116
  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
  ]
@@ -107,6 +107,8 @@ linkcheck_ignore = [
107
107
  r"https://punch\.space\.swri\.edu",
108
108
  # This is super slow to check
109
109
  r"https://mathesaurus\.sourceforge\.net/idl-numpy\.html",
110
+ # You have to be logged into GitHub in order to project wide issue searches
111
+ r"https://github.com/issues?.*"
110
112
  ]
111
113
  linkcheck_anchors = False
112
114
  linkcheck_timeout = 120
@@ -215,13 +215,14 @@ But what if we wanted to know what pixel these physical coordinates correspond t
215
215
  Each Map has an associated World Coordinate System, or WCS, which is derived from the underlying metadata and expressed as an `astropy.wcs.WCS` object.
216
216
  The WCS is accessible as an attribute:
217
217
 
218
- .. code-block:: python
218
+ .. doctest-requires:: astropy>=7.2
219
219
 
220
220
  >>> my_map.wcs # doctest: +REMOTE_DATA
221
221
  WCS Keywords
222
222
  <BLANKLINE>
223
223
  Number of WCS axes: 2
224
224
  CTYPE : 'HPLN-TAN' 'HPLT-TAN'
225
+ CUNIT : 'deg' 'deg'
225
226
  CRVAL : 0.00089530541880571 0.00038493926472939
226
227
  CRPIX : 512.5 512.5
227
228
  PC1_1 PC1_2 : 0.99999706448085 0.0024230207763071
@@ -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'
@@ -23,7 +23,8 @@ name = "sunpy"
23
23
  description = "SunPy core package: Python for Solar Physics"
24
24
  requires-python = ">=3.11"
25
25
  readme = { file = "README.rst", content-type = "text/x-rst" }
26
- license = { file = "LICENSE.rst" }
26
+ license-files = ["LICENSE.rst", "licenses/*.rst"]
27
+ license = "BSD-3-Clause"
27
28
  authors = [
28
29
  { name = "The SunPy Community", email = "sunpy@googlegroups.com" },
29
30
  ]
@@ -41,7 +42,6 @@ keywords = ["solar physics", "solar", "science", "sun", "wcs", "coordinates"]
41
42
  classifiers = [
42
43
  "Development Status :: 5 - Production/Stable",
43
44
  "Intended Audience :: Science/Research",
44
- "License :: OSI Approved :: BSD License",
45
45
  "Natural Language :: English",
46
46
  "Operating System :: OS Independent",
47
47
  "Programming Language :: Python",
@@ -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
 
@@ -155,7 +160,6 @@ zip-safe = false
155
160
  include-package-data = true
156
161
  platforms = ["any"]
157
162
  provides = ["sunpy"]
158
- license-files = ["LICENSE.rst"]
159
163
 
160
164
  [tool.setuptools.packages.find]
161
165
  include = ["sunpy*"]
@@ -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.4'
32
+ __version_tuple__ = version_tuple = (7, 0, 4)
33
33
 
34
- __commit_id__ = commit_id = 'g6102acf9e'
34
+ __commit_id__ = commit_id = 'gfaddbfccb'
@@ -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,
@@ -11,6 +11,7 @@ This is a modified version of `pyana <https://github.com/tvwerkhoven/pyana>`__.
11
11
  See the installation guide for more info.
12
12
  """
13
13
  import os
14
+ from functools import wraps
14
15
 
15
16
  from sunpy.io._header import FileHeader
16
17
  from sunpy.util.decorators import deprecated
@@ -21,11 +22,6 @@ try:
21
22
  except ImportError:
22
23
  _pyana = None
23
24
 
24
- ANA_NOT_INSTALLED = (
25
- "C extension for ANA is missing. For more details see: "
26
- "https://docs.sunpy.org/en/stable/installation.html#installing-without-conda"
27
- )
28
-
29
25
  ANA_DEPRECATION_MESSAGE = (
30
26
  "The ANA reader may be removed in a future version of sunpy, "
31
27
  "please comment here if you are using this code: "
@@ -35,7 +31,22 @@ ANA_DEPRECATION_MESSAGE = (
35
31
  __all__ = ['read', 'get_header', 'write']
36
32
 
37
33
 
34
+ def check_ana_installed(func):
35
+ ana_not_installed = (
36
+ "C extension for ANA is missing. For more details see: "
37
+ "https://docs.sunpy.org/en/stable/installation.html#installing-without-conda"
38
+ )
39
+ @wraps(func)
40
+ def ana_installed_wrapper(*args, **kwargs):
41
+ if _pyana is None:
42
+ raise ImportError(ana_not_installed)
43
+ return func(*args, **kwargs)
44
+
45
+ return ana_installed_wrapper
46
+
47
+
38
48
  @deprecated(since="6.0", message=ANA_DEPRECATION_MESSAGE)
49
+ @check_ana_installed
39
50
  def read(filename, debug=False, **kwargs):
40
51
  """
41
52
  Loads an ANA file and returns the data and a header in a list of (data,
@@ -48,28 +59,21 @@ def read(filename, debug=False, **kwargs):
48
59
  debug : `bool`, optional
49
60
  Prints verbose debug information.
50
61
  **kwargs : `dict`
51
- Unused.
62
+ Unused, provided for compatibility with the unified IO layer.
52
63
 
53
64
  Returns
54
65
  -------
55
66
  `list`
56
67
  A list of (data, header) tuples
57
-
58
- Examples
59
- --------
60
- >>> data = sunpy.io.ana.read(filename) # doctest: +SKIP
61
68
  """
62
69
  if not os.path.isfile(filename):
63
- raise OSError("File does not exist!")
64
-
65
- if _pyana is None:
66
- raise ImportError(ANA_NOT_INSTALLED)
67
-
70
+ raise OSError(f"File {filename} does not exist!")
68
71
  data = _pyana.fzread(filename, debug)
69
72
  return [HDPair(data['data'], FileHeader(data['header']))]
70
73
 
71
74
 
72
75
  @deprecated(since="6.0", message=ANA_DEPRECATION_MESSAGE)
76
+ @check_ana_installed
73
77
  def get_header(filename, debug=False):
74
78
  """
75
79
  Loads an ANA file and only return the header consisting of the dimensions,
@@ -87,20 +91,14 @@ def get_header(filename, debug=False):
87
91
  -------
88
92
  `list`
89
93
  A list of `~sunpy.io._header.FileHeader` headers.
90
-
91
- Examples
92
- --------
93
- >>> header = sunpy.io.ana.get_header(filename) # doctest: +SKIP
94
94
  """
95
- if _pyana is None:
96
- raise ImportError(ANA_NOT_INSTALLED)
97
-
98
95
  data = _pyana.fzread(filename, debug)
99
96
  return [FileHeader(data['header'])]
100
97
 
101
98
 
102
99
  @deprecated(since="6.0", message=ANA_DEPRECATION_MESSAGE)
103
- def write(filename, data, comments=False, compress=True, debug=False):
100
+ @check_ana_installed
101
+ def write(filename, data, comments=None, compress=True, debug=False):
104
102
  """
105
103
  Saves a 2D `numpy.array` as an ANA file and returns the bytes written or
106
104
  ``NULL``.
@@ -122,15 +120,6 @@ def write(filename, data, comments=False, compress=True, debug=False):
122
120
  -------
123
121
  `str`
124
122
  A new ANA compressed archive containing the data and header.
125
-
126
- Examples
127
- --------
128
- >>> written = sunpy.io.ana.write(filename, data, comments=False, compress=True) # doctest: +SKIP
129
123
  """
130
- if _pyana is None:
131
- raise ImportError(ANA_NOT_INSTALLED)
132
-
133
- if comments:
134
- return _pyana.fzwrite(filename, data, int(compress), comments, debug)
135
- else:
136
- return _pyana.fzwrite(filename, data, int(compress), '', debug)
124
+ comments = comments or ""
125
+ return _pyana.fzwrite(filename, data, int(compress), comments, debug)
@@ -0,0 +1,3 @@
1
+ import pytest
2
+
3
+ pytest.importorskip("asdf")
@@ -178,12 +178,24 @@ def test_warn_longkey():
178
178
 
179
179
 
180
180
  def test_read_memmap():
181
+ # This function is a work around for astropy 7.1 vs 7.2
182
+ # In 7.2 there's an extra view on the array returned
183
+ def get_bottom_base(arr):
184
+ if hasattr(arr.base, "base"):
185
+ return get_bottom_base(arr.base)
186
+ return arr.base
187
+
181
188
  data, _ = _fits.read(TEST_AIA_IMAGE, memmap=True)[0]
182
- assert data.base is not None
183
- assert isinstance(data.base, mmap.mmap)
189
+ base = get_bottom_base(data)
190
+
191
+ # When we are astropy 7.2+ this should be data.base.base
192
+ assert base is not None
193
+ assert isinstance(base, mmap.mmap)
184
194
 
185
195
  data, _ = _fits.read(TEST_AIA_IMAGE, memmap=False)[0]
186
- assert data.base is None
196
+ base = get_bottom_base(data)
197
+ # When we are astropy 7.2+ this should be data.base.base
198
+ assert base is None
187
199
 
188
200
 
189
201
  def test_merge_multiple_comment_history_entries():
@@ -383,11 +383,7 @@ class GenericMap(NDData):
383
383
  text_list.append(f"{count_inf} infinite")
384
384
  bad_pixel_text += ", ".join(text_list)
385
385
 
386
- # Use a grayscale colormap with histogram equalization (and red for bad values)
387
- # Make a copy of the colormap to avoid modifying the matplotlib instance when
388
- # doing set_bad() (copy not needed when min mpl is 3.5, as already a copy)
389
- cmap = copy.copy(matplotlib.colormaps['gray'])
390
- cmap.set_bad(color='red')
386
+ cmap = matplotlib.colormaps['gray'].with_extremes(bad='red')
391
387
  norm = ImageNormalize(stretch=HistEqStretch(finite_data))
392
388
 
393
389
  # Plot the image in pixel space
@@ -994,7 +990,7 @@ class GenericMap(NDData):
994
990
 
995
991
  This time is the "canonical" way to refer to an observation, which is commonly
996
992
  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.
993
+ `.GenericMap.date_start` property is unambiguously the start of the observation.
998
994
 
999
995
  The observation time is determined using this order of preference:
1000
996
 
@@ -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):