starplot 0.20.0__tar.gz → 0.20.2__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 (314) hide show
  1. {starplot-0.20.0 → starplot-0.20.2}/.github/workflows/docs.yml +2 -2
  2. {starplot-0.20.0 → starplot-0.20.2}/.github/workflows/release.yml +2 -2
  3. {starplot-0.20.0 → starplot-0.20.2}/.github/workflows/test.yml +10 -10
  4. {starplot-0.20.0 → starplot-0.20.2}/CITATION.cff +2 -2
  5. {starplot-0.20.0 → starplot-0.20.2}/PKG-INFO +2 -2
  6. {starplot-0.20.0 → starplot-0.20.2}/docs/changelog.md +4 -1
  7. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/hashlock.yml +12 -12
  8. starplot-0.20.2/hash_checks/template.html +165 -0
  9. {starplot-0.20.0 → starplot-0.20.2}/pyproject.toml +1 -1
  10. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/__init__.py +1 -1
  11. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/library/constellation_names.parquet +0 -0
  12. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/library/dso_names.parquet +0 -0
  13. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/library/star_designations.parquet +0 -0
  14. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/geometry.py +16 -0
  15. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/base.py +5 -1
  16. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/galaxy.py +16 -0
  17. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/horizon.py +19 -0
  18. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/optic.py +19 -0
  19. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/constellations.py +44 -74
  20. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/stars.py +13 -11
  21. starplot-0.20.0/hash_checks/template.html +0 -110
  22. {starplot-0.20.0 → starplot-0.20.2}/.dockerignore +0 -0
  23. {starplot-0.20.0 → starplot-0.20.2}/.github/FUNDING.yml +0 -0
  24. {starplot-0.20.0 → starplot-0.20.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {starplot-0.20.0 → starplot-0.20.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {starplot-0.20.0 → starplot-0.20.2}/.gitignore +0 -0
  27. {starplot-0.20.0 → starplot-0.20.2}/CODE_OF_CONDUCT.md +0 -0
  28. {starplot-0.20.0 → starplot-0.20.2}/CONTRIBUTING.md +0 -0
  29. {starplot-0.20.0 → starplot-0.20.2}/Dockerfile +0 -0
  30. {starplot-0.20.0 → starplot-0.20.2}/LICENSE +0 -0
  31. {starplot-0.20.0 → starplot-0.20.2}/Makefile +0 -0
  32. {starplot-0.20.0 → starplot-0.20.2}/README.md +0 -0
  33. {starplot-0.20.0 → starplot-0.20.2}/data/raw/constellation_borders.json +0 -0
  34. {starplot-0.20.0 → starplot-0.20.2}/data/raw/constellations.json +0 -0
  35. {starplot-0.20.0 → starplot-0.20.2}/data/raw/milkyway.json +0 -0
  36. {starplot-0.20.0 → starplot-0.20.2}/data/raw/star_designations.csv +0 -0
  37. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/constellation_names.csv +0 -0
  38. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/dso_names.csv +0 -0
  39. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/en-us/constellation_names.csv +0 -0
  40. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/en-us/dso_names.csv +0 -0
  41. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/en-us/other_terms.csv +0 -0
  42. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/en-us/star_names.csv +0 -0
  43. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/es/constellation_names.csv +0 -0
  44. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/es/dso_names.csv +0 -0
  45. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/es/other_terms.csv +0 -0
  46. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/es/star_names.csv +0 -0
  47. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fa/constellation_names.csv +0 -0
  48. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fa/dso_names.csv +0 -0
  49. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fa/other_terms.csv +0 -0
  50. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fa/star_names.csv +0 -0
  51. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fr/constellation_names.csv +0 -0
  52. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fr/dso_names.csv +0 -0
  53. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fr/other_terms.csv +0 -0
  54. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/fr/star_names.csv +0 -0
  55. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/lt/constellation_names.csv +0 -0
  56. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/lt/dso_names.csv +0 -0
  57. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/lt/other_terms.csv +0 -0
  58. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/lt/readme.md +0 -0
  59. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/lt/star_names.csv +0 -0
  60. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/other_terms.csv +0 -0
  61. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/readme.md +0 -0
  62. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/star_names.csv +0 -0
  63. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
  64. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-cn/dso_names.csv +0 -0
  65. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-cn/other_terms.csv +0 -0
  66. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-cn/star_names.csv +0 -0
  67. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
  68. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-tw/dso_names.csv +0 -0
  69. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-tw/other_terms.csv +0 -0
  70. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-tw/readme.md +0 -0
  71. {starplot-0.20.0 → starplot-0.20.2}/data/raw/translations/zh-tw/star_names.csv +0 -0
  72. {starplot-0.20.0 → starplot-0.20.2}/data/readme.md +0 -0
  73. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/constellation_names.py +0 -0
  74. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/data_settings.py +0 -0
  75. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/db.py +0 -0
  76. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/docdata.py +0 -0
  77. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/dso_names.py +0 -0
  78. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/star_designations.py +0 -0
  79. {starplot-0.20.0 → starplot-0.20.2}/data/scripts/translations.py +0 -0
  80. {starplot-0.20.0 → starplot-0.20.2}/docs/about.md +0 -0
  81. {starplot-0.20.0 → starplot-0.20.2}/docs/coming-soon.md +0 -0
  82. {starplot-0.20.0 → starplot-0.20.2}/docs/css/extra.css +0 -0
  83. {starplot-0.20.0 → starplot-0.20.2}/docs/custom/main.html +0 -0
  84. {starplot-0.20.0 → starplot-0.20.2}/docs/data/building.md +0 -0
  85. {starplot-0.20.0 → starplot-0.20.2}/docs/data/constellations.md +0 -0
  86. {starplot-0.20.0 → starplot-0.20.2}/docs/data/dsos.md +0 -0
  87. {starplot-0.20.0 → starplot-0.20.2}/docs/data/overview.md +0 -0
  88. {starplot-0.20.0 → starplot-0.20.2}/docs/data/stars.md +0 -0
  89. {starplot-0.20.0 → starplot-0.20.2}/docs/data-explorer.md +0 -0
  90. {starplot-0.20.0 → starplot-0.20.2}/docs/data-sources.md +0 -0
  91. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/horizon-double-cluster.md +0 -0
  92. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/horizon-gradient.md +0 -0
  93. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/horizon-sgr.md +0 -0
  94. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-big-dipper.md +0 -0
  95. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-big.md +0 -0
  96. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-canis-major.md +0 -0
  97. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-carina-nebula.md +0 -0
  98. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-cassiopeia.md +0 -0
  99. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-custom-marker.md +0 -0
  100. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-galaxy.md +0 -0
  101. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-milky-way-stars.md +0 -0
  102. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-orion.md +0 -0
  103. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-orthographic.md +0 -0
  104. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-sagittarius.md +0 -0
  105. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/map-virgo-cluster.md +0 -0
  106. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/optic-iss-transit.md +0 -0
  107. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/optic-m45.md +0 -0
  108. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/optic-moon-saturn.md +0 -0
  109. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/optic-orion.md +0 -0
  110. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/optic-solar-eclipse.md +0 -0
  111. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/star-chart-basic.md +0 -0
  112. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/star-chart-detail.md +0 -0
  113. {starplot-0.20.0 → starplot-0.20.2}/docs/examples/star-chart-french.md +0 -0
  114. {starplot-0.20.0 → starplot-0.20.2}/docs/examples.md +0 -0
  115. {starplot-0.20.0 → starplot-0.20.2}/docs/images/celestial-globe.svg +0 -0
  116. {starplot-0.20.0 → starplot-0.20.2}/docs/images/cover-front-sm-360.png +0 -0
  117. {starplot-0.20.0 → starplot-0.20.2}/docs/images/discord.svg +0 -0
  118. {starplot-0.20.0 → starplot-0.20.2}/docs/images/examples/.keep +0 -0
  119. {starplot-0.20.0 → starplot-0.20.2}/docs/images/favicon.png +0 -0
  120. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-2400px.png +0 -0
  121. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/banner.png +0 -0
  122. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/banner.svg +0 -0
  123. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/banner.vectornator +0 -0
  124. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/logo.png +0 -0
  125. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/logo.svg +0 -0
  126. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/logo.vectornator +0 -0
  127. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo-original/logo2.png +0 -0
  128. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo.svg +0 -0
  129. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo2.vectornator +0 -0
  130. {starplot-0.20.0 → starplot-0.20.2}/docs/images/logo500.png +0 -0
  131. {starplot-0.20.0 → starplot-0.20.2}/docs/images/mono-2400px.png +0 -0
  132. {starplot-0.20.0 → starplot-0.20.2}/docs/images/mono.png +0 -0
  133. {starplot-0.20.0 → starplot-0.20.2}/docs/images/mono.svg +0 -0
  134. {starplot-0.20.0 → starplot-0.20.2}/docs/images/star.svg +0 -0
  135. {starplot-0.20.0 → starplot-0.20.2}/docs/images/tutorial/.keep +0 -0
  136. {starplot-0.20.0 → starplot-0.20.2}/docs/index.md +0 -0
  137. {starplot-0.20.0 → starplot-0.20.2}/docs/installation.md +0 -0
  138. {starplot-0.20.0 → starplot-0.20.2}/docs/license.md +0 -0
  139. {starplot-0.20.0 → starplot-0.20.2}/docs/migration-guides/0.16.0.md +0 -0
  140. {starplot-0.20.0 → starplot-0.20.2}/docs/object-names/constellations.md +0 -0
  141. {starplot-0.20.0 → starplot-0.20.2}/docs/object-names/dsos.md +0 -0
  142. {starplot-0.20.0 → starplot-0.20.2}/docs/object-names/stars.md +0 -0
  143. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-callables.md +0 -0
  144. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-collisions.md +0 -0
  145. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-galaxyplot.md +0 -0
  146. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-horizonplot.md +0 -0
  147. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-localization.md +0 -0
  148. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-mapplot.md +0 -0
  149. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-models.md +0 -0
  150. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-ongc.md +0 -0
  151. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-opticplot.md +0 -0
  152. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-positions.md +0 -0
  153. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-selecting-objects.md +0 -0
  154. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-settings.md +0 -0
  155. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-styling.md +0 -0
  156. {starplot-0.20.0 → starplot-0.20.2}/docs/reference-zenithplot.md +0 -0
  157. {starplot-0.20.0 → starplot-0.20.2}/docs/robots.txt +0 -0
  158. {starplot-0.20.0 → starplot-0.20.2}/docs/showcase.md +0 -0
  159. {starplot-0.20.0 → starplot-0.20.2}/docs/snippets/_newsletter.html +0 -0
  160. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/01.md +0 -0
  161. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/02.md +0 -0
  162. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/03.md +0 -0
  163. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/04.md +0 -0
  164. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/05.md +0 -0
  165. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/06.md +0 -0
  166. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/07.md +0 -0
  167. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/08.md +0 -0
  168. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial/09.md +0 -0
  169. {starplot-0.20.0 → starplot-0.20.2}/docs/tutorial.md +0 -0
  170. {starplot-0.20.0 → starplot-0.20.2}/examples/examples.py +0 -0
  171. {starplot-0.20.0 → starplot-0.20.2}/examples/galaxy_custom_marker.py +0 -0
  172. {starplot-0.20.0 → starplot-0.20.2}/examples/horizon_double_cluster.py +0 -0
  173. {starplot-0.20.0 → starplot-0.20.2}/examples/horizon_gradient.py +0 -0
  174. {starplot-0.20.0 → starplot-0.20.2}/examples/horizon_sgr.py +0 -0
  175. {starplot-0.20.0 → starplot-0.20.2}/examples/map_big.py +0 -0
  176. {starplot-0.20.0 → starplot-0.20.2}/examples/map_big_dipper.py +0 -0
  177. {starplot-0.20.0 → starplot-0.20.2}/examples/map_canis_major.py +0 -0
  178. {starplot-0.20.0 → starplot-0.20.2}/examples/map_carina.py +0 -0
  179. {starplot-0.20.0 → starplot-0.20.2}/examples/map_cas.py +0 -0
  180. {starplot-0.20.0 → starplot-0.20.2}/examples/map_galaxy.py +0 -0
  181. {starplot-0.20.0 → starplot-0.20.2}/examples/map_milky_way_stars.py +0 -0
  182. {starplot-0.20.0 → starplot-0.20.2}/examples/map_orion.py +0 -0
  183. {starplot-0.20.0 → starplot-0.20.2}/examples/map_orthographic.py +0 -0
  184. {starplot-0.20.0 → starplot-0.20.2}/examples/map_sagittarius.py +0 -0
  185. {starplot-0.20.0 → starplot-0.20.2}/examples/map_virgo_cluster.py +0 -0
  186. {starplot-0.20.0 → starplot-0.20.2}/examples/optic_iss_transit.py +0 -0
  187. {starplot-0.20.0 → starplot-0.20.2}/examples/optic_m45.py +0 -0
  188. {starplot-0.20.0 → starplot-0.20.2}/examples/optic_moon_saturn.py +0 -0
  189. {starplot-0.20.0 → starplot-0.20.2}/examples/optic_orion_nebula.py +0 -0
  190. {starplot-0.20.0 → starplot-0.20.2}/examples/optic_solar_eclipse.py +0 -0
  191. {starplot-0.20.0 → starplot-0.20.2}/examples/star_chart_basic.py +0 -0
  192. {starplot-0.20.0 → starplot-0.20.2}/examples/star_chart_detail.py +0 -0
  193. {starplot-0.20.0 → starplot-0.20.2}/examples/star_chart_french.py +0 -0
  194. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/__init__.py +0 -0
  195. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/data/.keep +0 -0
  196. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/hashio.py +0 -0
  197. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/horizon_checks.py +0 -0
  198. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/map_checks.py +0 -0
  199. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/optic_checks.py +0 -0
  200. {starplot-0.20.0 → starplot-0.20.2}/hash_checks/zenith_checks.py +0 -0
  201. {starplot-0.20.0 → starplot-0.20.2}/mkdocs.yml +0 -0
  202. {starplot-0.20.0 → starplot-0.20.2}/requirements-dev.txt +0 -0
  203. {starplot-0.20.0 → starplot-0.20.2}/requirements.txt +0 -0
  204. {starplot-0.20.0 → starplot-0.20.2}/scripts/ecliptic.py +0 -0
  205. {starplot-0.20.0 → starplot-0.20.2}/scripts/marimo.py +0 -0
  206. {starplot-0.20.0 → starplot-0.20.2}/scripts/voronoi.py +0 -0
  207. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/callables.py +0 -0
  208. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/cli.py +0 -0
  209. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/config.py +0 -0
  210. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/coordinates.py +0 -0
  211. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/__init__.py +0 -0
  212. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/catalogs.py +0 -0
  213. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/constellations.py +0 -0
  214. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/db.py +0 -0
  215. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/dsos.py +0 -0
  216. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/ecliptic.py +0 -0
  217. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/library/readme.md +0 -0
  218. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/stars.py +0 -0
  219. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/translations.py +0 -0
  220. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/data/utils.py +0 -0
  221. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/mixins.py +0 -0
  222. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/__init__.py +0 -0
  223. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/base.py +0 -0
  224. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/comet.py +0 -0
  225. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/constellation.py +0 -0
  226. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/dso.py +0 -0
  227. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/milky_way.py +0 -0
  228. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/moon.py +0 -0
  229. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/objects.py +0 -0
  230. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/observer.py +0 -0
  231. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/optics.py +0 -0
  232. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/planet.py +0 -0
  233. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/satellite.py +0 -0
  234. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/star.py +0 -0
  235. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/models/sun.py +0 -0
  236. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/__init__.py +0 -0
  237. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/map.py +0 -0
  238. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plots/zenith.py +0 -0
  239. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/__init__.py +0 -0
  240. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/arrow.py +0 -0
  241. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/debug.py +0 -0
  242. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/dsos.py +0 -0
  243. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/experimental.py +0 -0
  244. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/gradients.py +0 -0
  245. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/legend.py +0 -0
  246. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/milkyway.py +0 -0
  247. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/plotters/text.py +0 -0
  248. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/profile.py +0 -0
  249. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/projections.py +0 -0
  250. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/__init__.py +0 -0
  251. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/base.py +0 -0
  252. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/antique.yml +0 -0
  253. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/blue_dark.yml +0 -0
  254. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/blue_gold.yml +0 -0
  255. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/blue_light.yml +0 -0
  256. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/blue_medium.yml +0 -0
  257. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/blue_night.yml +0 -0
  258. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/cb_wong.yml +0 -0
  259. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/color_print.yml +0 -0
  260. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/gradient_presets.yml +0 -0
  261. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/grayscale.yml +0 -0
  262. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/grayscale_dark.yml +0 -0
  263. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/map.yml +0 -0
  264. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/nord.yml +0 -0
  265. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/optic.yml +0 -0
  266. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/ext/publication.yml +0 -0
  267. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/extensions.py +0 -0
  268. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/gfs-didot/DESCRIPTION.en_us.html +0 -0
  269. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/gfs-didot/GFSDidot-Regular.ttf +0 -0
  270. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/gfs-didot/METADATA.pb +0 -0
  271. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/gfs-didot/OFL.txt +0 -0
  272. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-Bold.ttf +0 -0
  273. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-BoldItalic.ttf +0 -0
  274. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraBold.ttf +0 -0
  275. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraLight.ttf +0 -0
  276. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraLightItalic.ttf +0 -0
  277. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-Italic.ttf +0 -0
  278. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-Light.ttf +0 -0
  279. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-LightItalic.ttf +0 -0
  280. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-Regular.ttf +0 -0
  281. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-SemiBold.ttf +0 -0
  282. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/Inter-SemiBoldItalic.ttf +0 -0
  283. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts-library/inter/LICENSE.txt +0 -0
  284. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/fonts.py +0 -0
  285. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/helpers.py +0 -0
  286. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/styles/markers.py +0 -0
  287. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/utils.py +0 -0
  288. {starplot-0.20.0 → starplot-0.20.2}/src/starplot/warnings.py +0 -0
  289. {starplot-0.20.0 → starplot-0.20.2}/tests/__init__.py +0 -0
  290. {starplot-0.20.0 → starplot-0.20.2}/tests/data/.keep +0 -0
  291. {starplot-0.20.0 → starplot-0.20.2}/tests/data/comets.txt +0 -0
  292. {starplot-0.20.0 → starplot-0.20.2}/tests/test_catalogs.py +0 -0
  293. {starplot-0.20.0 → starplot-0.20.2}/tests/test_comets.py +0 -0
  294. {starplot-0.20.0 → starplot-0.20.2}/tests/test_data.py +0 -0
  295. {starplot-0.20.0 → starplot-0.20.2}/tests/test_geometry.py +0 -0
  296. {starplot-0.20.0 → starplot-0.20.2}/tests/test_languages.py +0 -0
  297. {starplot-0.20.0 → starplot-0.20.2}/tests/test_map.py +0 -0
  298. {starplot-0.20.0 → starplot-0.20.2}/tests/test_models.py +0 -0
  299. {starplot-0.20.0 → starplot-0.20.2}/tests/test_observer.py +0 -0
  300. {starplot-0.20.0 → starplot-0.20.2}/tests/test_optic.py +0 -0
  301. {starplot-0.20.0 → starplot-0.20.2}/tests/test_satellite.py +0 -0
  302. {starplot-0.20.0 → starplot-0.20.2}/tests/test_settings.py +0 -0
  303. {starplot-0.20.0 → starplot-0.20.2}/tests/test_stars.py +0 -0
  304. {starplot-0.20.0 → starplot-0.20.2}/tests/test_styles.py +0 -0
  305. {starplot-0.20.0 → starplot-0.20.2}/tests/test_utils.py +0 -0
  306. {starplot-0.20.0 → starplot-0.20.2}/tests/utils.py +0 -0
  307. {starplot-0.20.0 → starplot-0.20.2}/tutorial/build.py +0 -0
  308. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_02.py +0 -0
  309. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_03.py +0 -0
  310. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_04.py +0 -0
  311. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_05.py +0 -0
  312. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_06.py +0 -0
  313. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_07.py +0 -0
  314. {starplot-0.20.0 → starplot-0.20.2}/tutorial/tutorial_08.py +0 -0
@@ -5,14 +5,14 @@ on:
5
5
 
6
6
  jobs:
7
7
  publish:
8
- runs-on: ubuntu-22.04
8
+ runs-on: ubuntu-24.04
9
9
 
10
10
  permissions:
11
11
  contents: 'read'
12
12
  id-token: 'write'
13
13
 
14
14
  steps:
15
- - uses: actions/checkout@v4
15
+ - uses: actions/checkout@v6
16
16
 
17
17
  - name: Build Docker image
18
18
  run: make build
@@ -7,9 +7,9 @@ on:
7
7
 
8
8
  jobs:
9
9
  publish:
10
- runs-on: ubuntu-22.04
10
+ runs-on: ubuntu-24.04
11
11
  steps:
12
- - uses: actions/checkout@v4
12
+ - uses: actions/checkout@v6
13
13
 
14
14
  - name: Build Docker Image
15
15
  run: make build
@@ -12,9 +12,9 @@ on:
12
12
 
13
13
  jobs:
14
14
  test-lint-build:
15
- runs-on: ubuntu-22.04
15
+ runs-on: ubuntu-24.04
16
16
  steps:
17
- - uses: actions/checkout@v4
17
+ - uses: actions/checkout@v6
18
18
  - name: Build Docker Image
19
19
  run: make build
20
20
  - name: Build sky.db
@@ -31,29 +31,29 @@ jobs:
31
31
  run: make flit-build
32
32
 
33
33
  test-python-3-10:
34
- runs-on: ubuntu-22.04
34
+ runs-on: ubuntu-24.04
35
35
  steps:
36
- - uses: actions/checkout@v4
36
+ - uses: actions/checkout@v6
37
37
  - name: Run Tests - Python 3.10
38
38
  run: make test-3.10 CI=true
39
39
 
40
40
  test-python-3-11:
41
- runs-on: ubuntu-22.04
41
+ runs-on: ubuntu-24.04
42
42
  steps:
43
- - uses: actions/checkout@v4
43
+ - uses: actions/checkout@v6
44
44
  - name: Run Tests - Python 3.11
45
45
  run: make test-3.11 CI=true
46
46
 
47
47
  test-python-3-12:
48
- runs-on: ubuntu-22.04
48
+ runs-on: ubuntu-24.04
49
49
  steps:
50
- - uses: actions/checkout@v4
50
+ - uses: actions/checkout@v6
51
51
  - name: Run Tests - Python 3.12
52
52
  run: make test-3.12 CI=true
53
53
 
54
54
  test-python-3-13:
55
- runs-on: ubuntu-22.04
55
+ runs-on: ubuntu-24.04
56
56
  steps:
57
- - uses: actions/checkout@v4
57
+ - uses: actions/checkout@v6
58
58
  - name: Run Tests - Python 3.13
59
59
  run: make test-3.13 CI=true
@@ -20,5 +20,5 @@ keywords:
20
20
  - graphs
21
21
  - plotting
22
22
  license: MIT
23
- version: 0.20.0
24
- date-released: '2026-03-07'
23
+ version: 0.20.2
24
+ date-released: '2026-03-31'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: starplot
3
- Version: 0.20.0
3
+ Version: 0.20.2
4
4
  Summary: Star charts and maps of the sky
5
5
  Keywords: astronomy,stars,charts,maps,constellations,sky,plotting
6
6
  Author-email: Steve Berardi <hello@steveberardi.com>
@@ -15,7 +15,7 @@ Classifier: Framework :: Matplotlib
15
15
  License-File: LICENSE
16
16
  Requires-Dist: matplotlib >= 3.8.0
17
17
  Requires-Dist: numpy >= 1.26.2
18
- Requires-Dist: pandas >= 1.4.0
18
+ Requires-Dist: pandas <= 2.2.3
19
19
  Requires-Dist: pydantic >= 2.10.6
20
20
  Requires-Dist: shapely >= 2.0.1
21
21
  Requires-Dist: skyfield >= 1.41
@@ -8,7 +8,10 @@
8
8
  - Adds the PlateCarree projection
9
9
  - Adds effect of atmospheric refraction to horizon and optic plots
10
10
  - Fixes a bug with calculating apparent positions of solar system objects in horizon/optic plots
11
-
11
+ - [**v0.20.1**]
12
+ - Optimizes coordinate conversions
13
+ - Makes constellation lines straight
14
+ - [**v0.20.2**] Restricts Pandas to version `2.2.3` or lower
12
15
 
13
16
  ## v0.19.x
14
17
  [Documentation](https://archives.starplot.dev/0.19.6/)
@@ -15,7 +15,7 @@ map_allow_all_collisions:
15
15
  filename: /starplot/hash_checks/data/map-allow-all-collisions.png
16
16
  phash: ac1b1e9626c379f0
17
17
  map_allow_marker_and_line_collisions:
18
- dhash: 858486ed36d2276f85848eed3652276f8da48ead33cb276f
18
+ dhash: 858486ed36d2276f85848eed3652276f8da48ead334b276f
19
19
  filename: /starplot/hash_checks/data/map-allow-some-collisions.png
20
20
  phash: aed0f6299ee203d8
21
21
  map_coma_berenices_dso_size:
@@ -27,9 +27,9 @@ map_constellation_clip_path:
27
27
  filename: /starplot/hash_checks/data/map-constellation-clip-path.png
28
28
  phash: 99c41b19ccd98ece
29
29
  map_custom_stars:
30
- dhash: 5e21a9ceac2c844a5e21a9ceac2c844a5e21a9ceac2c844a
30
+ dhash: 5c21a9ceac2c844a5c21a9ceac2c844a5c21a9ceac2c844a
31
31
  filename: /starplot/hash_checks/data/map-custom-stars.png
32
- phash: e6185bb425a5bdd0
32
+ phash: e65a5b3405a5b7d0
33
33
  map_gridlines:
34
34
  dhash: 082a899422c94983082a899422c94983082a899422c94983
35
35
  filename: /starplot/hash_checks/data/map-gridlines.png
@@ -43,9 +43,9 @@ map_milky_way_multi_polygon:
43
43
  filename: /starplot/hash_checks/data/map-milky-way-multi-polygon.png
44
44
  phash: ae89be88d6584fe0
45
45
  map_mollweide:
46
- dhash: 0f2b336b2b33170f0f2b336b2b33170f0f63736b2b36170f
46
+ dhash: 0f2b336b2b33170f0f2b336b2b33170f1763736b2b36170f
47
47
  filename: /starplot/hash_checks/data/map-mollweide.png
48
- phash: ebcab698e3349461
48
+ phash: ebcbb698e3309461
49
49
  map_moon_phase_waxing_crescent:
50
50
  dhash: 000830484830080000082048482008008088804848808880
51
51
  filename: /starplot/hash_checks/data/map-moon-phase-waxing-crescent.png
@@ -67,7 +67,7 @@ map_plot_custom_clip_path_virgo:
67
67
  filename: /starplot/hash_checks/data/map-custom-clip-path-virgo.png
68
68
  phash: ec6dc9e594929296
69
69
  map_plot_limit_by_geometry:
70
- dhash: a02189a4568c6552a0219184160d6512a02199b4140c6d12
70
+ dhash: a02189a4568c6552a0219104160d6512a02199b4140c6d12
71
71
  filename: /starplot/hash_checks/data/map-limit-by-geometry.png
72
72
  phash: b2d88e33c986f349
73
73
  map_scope_bino_fov:
@@ -75,7 +75,7 @@ map_scope_bino_fov:
75
75
  filename: /starplot/hash_checks/data/map-scope-bino-fov.png
76
76
  phash: f3504c72735c4c73
77
77
  map_stereo_base:
78
- dhash: 45c37b3192a9b9b245c35b3192a1199245c34b3192a93992
78
+ dhash: 45c37b3192a9b9b245c35b3192a1999245c34b3192a93992
79
79
  filename: /starplot/hash_checks/data/map-stereo-north-base.png
80
80
  phash: 8a2f62d2949e4fb4
81
81
  map_with_planets:
@@ -95,7 +95,7 @@ optic_camera_rotated:
95
95
  filename: /starplot/hash_checks/data/optic-camera-rotated-m45.png
96
96
  phash: b86cc6b40ed9f08d
97
97
  optic_clipping:
98
- dhash: 32c498f8e6e4fc5d32c498f8e6e4fc5933e0d8faf6e2fc79
98
+ dhash: 32c498f8e6e4fc5d32c498f8e6e4fc5933e098faf6e2fc79
99
99
  filename: /starplot/hash_checks/data/optic-clipping.png
100
100
  phash: 95687a872f9868f2
101
101
  optic_iss_moon_transit:
@@ -147,18 +147,18 @@ optic_solar_eclipse_binoculars:
147
147
  filename: /starplot/hash_checks/data/optic-binoculars-eclipse.png
148
148
  phash: 91cc4e333bcc6c33
149
149
  optic_wrapping:
150
- dhash: 71f0ec92d2da651a71e0d4acacc4782a71e8d4acacc4783a
150
+ dhash: 71f0ac92d2da651a71e094acacc4782a71e8d4acacc4783a
151
151
  filename: /starplot/hash_checks/data/optic-wrapping.png
152
- phash: d1066e1b792ef138
152
+ phash: d1846e1b792ef138
153
153
  zenith_base:
154
154
  dhash: 71f8cc8eaad4e87171f8cc868ad4e87171f8cc868ed4e871
155
155
  filename: /starplot/hash_checks/data/zenith-base.png
156
156
  phash: 90d50b7d2955645f
157
157
  zenith_chinese:
158
- dhash: 44863331272b86744c863331252b865471cc8e0f0f8ecc71
158
+ dhash: 44863331272b86704c863331252b865471cc8e0f0f8ecc71
159
159
  filename: /starplot/hash_checks/data/zenith-chinese.png
160
160
  phash: ed30c1469ecb1bcc
161
161
  zenith_gradient:
162
162
  dhash: 548613333123867044863339312b865471cc960f078ecc71
163
163
  filename: /starplot/hash_checks/data/zenith-gradient.png
164
- phash: ed3c84c29acb19cd
164
+ phash: e93c94c29acb19cd
@@ -0,0 +1,165 @@
1
+ <html>
2
+
3
+ <head>
4
+ <title>Hashio Results</title>
5
+
6
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" rel="stylesheet"
7
+ integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
8
+
9
+ <style>
10
+ body {
11
+ font-family: 'Courier New', Courier, monospace;
12
+ margin: 0;
13
+ }
14
+
15
+ h3 {
16
+ font-weight: normal;
17
+ font-size: 1.6rem;
18
+ }
19
+
20
+ h1,
21
+ h2,
22
+ h3,
23
+ h4,
24
+ h5,
25
+ h6 {
26
+ font-family: Arial, sans-serif;
27
+ font-weight: 700;
28
+ }
29
+
30
+ .btn {
31
+ font-family: Arial, sans-serif;
32
+ }
33
+
34
+ th {
35
+ text-align: start;
36
+ font-weight: normal;
37
+ }
38
+
39
+ td {
40
+ padding-right: 2rem;
41
+ }
42
+
43
+ .img-result {
44
+ max-width: 1024px;
45
+ }
46
+
47
+ .section {
48
+ padding: 2rem;
49
+ border-bottom: 2px dotted #313654;
50
+ margin-bottom: 16px;
51
+ }
52
+
53
+ .result {
54
+ padding-bottom: 2.1rem;
55
+ }
56
+
57
+ .new {
58
+ /* background-color: rgba(0, 117, 185, 0.3); */
59
+ }
60
+
61
+ .failed {
62
+ /* background-color: rgba(128, 0, 0, 0.3); */
63
+ }
64
+
65
+ .passed {
66
+ /* background-color: rgba(108, 198, 108, 0.3); */
67
+ }
68
+ </style>
69
+ </head>
70
+
71
+ <body>
72
+
73
+
74
+
75
+ <!-- FAILED -->
76
+ <div class="section failed">
77
+
78
+ <h2 class="text-danger">❌ <span class="badge text-danger bg-danger-subtle">{{failed|count}}</span> Failed</h2>
79
+ {% for func_name, values in failed.items() %}
80
+
81
+ <div class="result">
82
+ <h3>{{ func_name }}</h3>
83
+ <table>
84
+ <tr>
85
+ <th></th>
86
+ <th>dhash</th>
87
+ <th>phash</th>
88
+ </tr>
89
+ <tr>
90
+ <td>expected</td>
91
+ <td>{{ values['dhash_expected'] }}</td>
92
+ <td>{{ values['phash_expected'] }}</td>
93
+ </tr>
94
+ <tr>
95
+ <td>actual</td>
96
+ <td>{{ values['dhash'] }}</td>
97
+ <td>{{ values['phash'] }}</td>
98
+ </tr>
99
+
100
+ </table>
101
+
102
+ <img src="{{ values['filename'] }}" class="img-result ">
103
+
104
+ </div>
105
+ {% endfor %}
106
+
107
+ </div>
108
+
109
+ <!-- NEW -->
110
+ <div class="section new">
111
+
112
+ <h2 class="text-primary">🎉 <span class="badge text-info bg-info-subtle">{{failed|count}}</span> New</h2>
113
+ {% for func_name, values in new.items() %}
114
+ <div class="result">
115
+ <h3>{{ func_name }}</h3>
116
+ <img src="{{ values['filename'] }}" class="img-result ">
117
+ </div>
118
+ {% endfor %}
119
+ </div>
120
+
121
+ <!-- PASSED -->
122
+ <div class="section passed">
123
+
124
+ <h2 class="text-success">✅ <span class="badge text-success bg-success-subtle">{{passed|count}}</span> Passed
125
+ </h2>
126
+
127
+ <button type="button" class="btn btn-outline-success btn-lg my-3 w-100" id="expand-passed">Expand / Collapse</button>
128
+
129
+ <div class="accordion" id="accordionPassed">
130
+ {% for func_name, values in passed.items() %}
131
+ <div class="accordion-item">
132
+ <h2 class="accordion-header">
133
+ <button class="accordion-button collapsed bg-success-subtle" type="button" data-bs-toggle="collapse"
134
+ data-bs-target="#{{ func_name }}" aria-expanded="false" aria-controls="{{ func_name }}">
135
+ {{ func_name }}
136
+ </button>
137
+ </h2>
138
+ <div id="{{ func_name }}" class="accordion-collapse collapse" data-bs-parent="#accordionPassed">
139
+ <div class="accordion-body">
140
+ <img src="{{ values['filename'] }}" class="img-result ">
141
+ </div>
142
+ </div>
143
+ </div>
144
+ {% endfor %}
145
+ </div>
146
+ </div>
147
+
148
+
149
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"
150
+ integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI"
151
+ crossorigin="anonymous"></script>
152
+
153
+ <script>
154
+ document.addEventListener('DOMContentLoaded', () => {
155
+ document.getElementById('expand-passed').addEventListener('click', () => {
156
+ document.querySelectorAll('#accordionPassed .accordion-collapse').forEach(el => {
157
+ new bootstrap.Collapse(el, { show: true });
158
+ });
159
+ });
160
+ });
161
+ </script>
162
+
163
+ </body>
164
+
165
+ </html>
@@ -21,7 +21,7 @@ keywords = ["astronomy", "stars", "charts", "maps", "constellations", "sky", "pl
21
21
  dependencies = [
22
22
  "matplotlib >= 3.8.0",
23
23
  "numpy >= 1.26.2",
24
- "pandas >= 1.4.0",
24
+ "pandas <= 2.2.3",
25
25
  "pydantic >= 2.10.6",
26
26
  "shapely >= 2.0.1",
27
27
  "skyfield >= 1.41",
@@ -2,7 +2,7 @@
2
2
 
3
3
  """Star charts and maps of the sky"""
4
4
 
5
- __version__ = "0.20.0"
5
+ __version__ = "0.20.2"
6
6
 
7
7
  from .plots import (
8
8
  MapPlot,
@@ -234,6 +234,22 @@ def split_polygon_at_zero(polygon: Polygon) -> list[Polygon]:
234
234
  return [polygon]
235
235
 
236
236
 
237
+ def split_line_at_meridian(p1, p2, meridian=360):
238
+ """Split a line that crosses the meridian into two segments."""
239
+ x1, y1 = p1
240
+ x2, y2 = p2
241
+
242
+ # Interpolate the crossing point
243
+ t = (meridian - x1) / (x2 - x1)
244
+ y_cross = y1 + t * (y2 - y1)
245
+
246
+ # Two segments on either side
247
+ seg1 = [(x1, y1), (359.9999999, y_cross)]
248
+ seg2 = [(0, y_cross), (x2 - 360, y2)] # or -meridian depending on convention
249
+
250
+ return seg1, seg2
251
+
252
+
237
253
  def random_point_in_polygon_at_distance(
238
254
  polygon: Polygon,
239
255
  origin_point: Point,
@@ -175,6 +175,9 @@ class BasePlot(DebugPlotterMixin, TextPlotterMixin, ABC):
175
175
  def _prepare_coords(self, ra, dec) -> tuple[float, float]:
176
176
  return ra, dec
177
177
 
178
+ def _prepare_coords_many(self, coordinates: list, epoch_year: float = 2000) -> list:
179
+ return coordinates
180
+
178
181
  def _update_clip_path_polygon(self, buffer=8):
179
182
  self.fig.draw_without_rendering()
180
183
  coords = self._background_clip_path.get_verts()
@@ -514,7 +517,8 @@ class BasePlot(DebugPlotterMixin, TextPlotterMixin, ABC):
514
517
  raise NotImplementedError
515
518
 
516
519
  def _polygon(self, points: list, style: PolygonStyle, **kwargs):
517
- points = [self._prepare_coords(*p) for p in points]
520
+ # points = [self._prepare_coords(*p) for p in points]
521
+ points = self._prepare_coords_many(points)
518
522
  patch = patches.Polygon(
519
523
  points,
520
524
  # closed=False, # needs to be false for circles at poles?
@@ -1,6 +1,7 @@
1
1
  from functools import cache
2
2
  from typing import Callable
3
3
 
4
+ import pandas as pd
4
5
  import numpy as np
5
6
  import astropy.units as u
6
7
  from astropy.coordinates import SkyCoord
@@ -130,6 +131,21 @@ class GalaxyPlot(
130
131
 
131
132
  return lon.degrees, lat.degrees
132
133
 
134
+ def _prepare_coords_many(
135
+ self, coordinates: list, epoch_year: float = 2000
136
+ ) -> (float, float):
137
+ """Converts RA/DEC to AZ/ALT"""
138
+ df = pd.DataFrame(coordinates, columns=["ra", "dec"])
139
+ df["ra_hours"], df["dec_degrees"] = (df.ra / 15, df.dec)
140
+ df["epoch_year"] = epoch_year
141
+
142
+ sf_star = SkyfieldStar.from_dataframe(df)
143
+ position = self.observe(sf_star)
144
+ lat, lon, _ = position.frame_latlon(galactic_frame)
145
+ df["x"], df["y"] = (lon.degrees, lat.degrees)
146
+
147
+ return list(zip(df["x"], df["y"]))
148
+
133
149
  def _prepare_star_coords(self, df, limit_by_altaz=True):
134
150
  stars_position = self.observe(SkyfieldStar.from_dataframe(df))
135
151
  lat, lon, _ = stars_position.frame_latlon(galactic_frame)
@@ -3,6 +3,8 @@ import math
3
3
  from functools import cache
4
4
  from typing import Callable
5
5
 
6
+ import pandas as pd
7
+
6
8
  from cartopy import crs as ccrs
7
9
  from matplotlib import pyplot as plt, patches
8
10
  from matplotlib.ticker import FixedLocator, FuncFormatter
@@ -163,6 +165,23 @@ class HorizonPlot(
163
165
  ephemeris=self.ephemeris_name,
164
166
  )
165
167
 
168
+ def _prepare_coords_many(
169
+ self, coordinates: list, epoch_year: float = 2000
170
+ ) -> (float, float):
171
+ """Converts RA/DEC to AZ/ALT"""
172
+ df = pd.DataFrame(coordinates, columns=["ra", "dec"])
173
+ df["ra_hours"], df["dec_degrees"] = (df.ra / 15, df.dec)
174
+ df["epoch_year"] = epoch_year
175
+
176
+ sf_star = SkyfieldStar.from_dataframe(df)
177
+
178
+ df["x"], df["y"] = self.observer._apparent(
179
+ obj=sf_star,
180
+ ephemeris=self.ephemeris_name,
181
+ )
182
+
183
+ return list(zip(df["x"], df["y"]))
184
+
166
185
  def _prepare_star_coords(self, df, limit_by_altaz=True):
167
186
  df["x"], df["y"] = self.observer._apparent(
168
187
  obj=SkyfieldStar.from_dataframe(df),
@@ -1,5 +1,7 @@
1
1
  from typing import Callable
2
2
 
3
+
4
+ import pandas as pd
3
5
  from cartopy import crs as ccrs
4
6
  from matplotlib import pyplot as plt, patches, path
5
7
  from skyfield.api import Star as SkyfieldStar
@@ -145,6 +147,23 @@ class OpticPlot(
145
147
  ephemeris=self.ephemeris_name,
146
148
  )
147
149
 
150
+ def _prepare_coords_many(
151
+ self, coordinates: list, epoch_year: float = 2000
152
+ ) -> (float, float):
153
+ """Converts RA/DEC to AZ/ALT"""
154
+ df = pd.DataFrame(coordinates, columns=["ra", "dec"])
155
+ df["ra_hours"], df["dec_degrees"] = (df.ra / 15, df.dec)
156
+ df["epoch_year"] = epoch_year
157
+
158
+ sf_star = SkyfieldStar.from_dataframe(df)
159
+
160
+ df["x"], df["y"] = self.observer._apparent(
161
+ obj=sf_star,
162
+ ephemeris=self.ephemeris_name,
163
+ )
164
+
165
+ return list(zip(df["x"], df["y"]))
166
+
148
167
  def _plot_kwargs(self) -> dict:
149
168
  return dict(transform=self._crs)
150
169