starplot 0.19.1__tar.gz → 0.19.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 (306) hide show
  1. {starplot-0.19.1 → starplot-0.19.2}/CITATION.cff +2 -2
  2. {starplot-0.19.1 → starplot-0.19.2}/PKG-INFO +1 -1
  3. {starplot-0.19.1 → starplot-0.19.2}/docs/changelog.md +5 -0
  4. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-canis-major.md +1 -1
  5. {starplot-0.19.1 → starplot-0.19.2}/examples/map_canis_major.py +7 -2
  6. {starplot-0.19.1 → starplot-0.19.2}/examples/optic_iss_transit.py +1 -1
  7. {starplot-0.19.1 → starplot-0.19.2}/examples/optic_solar_eclipse.py +2 -2
  8. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/hashlock.yml +16 -12
  9. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/map_checks.py +71 -0
  10. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/__init__.py +1 -1
  11. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/catalogs.py +2 -2
  12. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/constellations.py +1 -0
  13. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/geod.py +3 -4
  14. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/constellation.py +12 -1
  15. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/moon.py +1 -1
  16. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/planet.py +1 -1
  17. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/sun.py +1 -1
  18. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/base.py +31 -17
  19. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/map.py +1 -4
  20. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_06.py +1 -1
  21. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_07.py +2 -2
  22. {starplot-0.19.1 → starplot-0.19.2}/.dockerignore +0 -0
  23. {starplot-0.19.1 → starplot-0.19.2}/.github/FUNDING.yml +0 -0
  24. {starplot-0.19.1 → starplot-0.19.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {starplot-0.19.1 → starplot-0.19.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {starplot-0.19.1 → starplot-0.19.2}/.github/workflows/docs.yml +0 -0
  27. {starplot-0.19.1 → starplot-0.19.2}/.github/workflows/release.yml +0 -0
  28. {starplot-0.19.1 → starplot-0.19.2}/.github/workflows/test.yml +0 -0
  29. {starplot-0.19.1 → starplot-0.19.2}/.gitignore +0 -0
  30. {starplot-0.19.1 → starplot-0.19.2}/CODE_OF_CONDUCT.md +0 -0
  31. {starplot-0.19.1 → starplot-0.19.2}/CONTRIBUTING.md +0 -0
  32. {starplot-0.19.1 → starplot-0.19.2}/Dockerfile +0 -0
  33. {starplot-0.19.1 → starplot-0.19.2}/LICENSE +0 -0
  34. {starplot-0.19.1 → starplot-0.19.2}/Makefile +0 -0
  35. {starplot-0.19.1 → starplot-0.19.2}/README.md +0 -0
  36. {starplot-0.19.1 → starplot-0.19.2}/data/raw/constellation_borders.json +0 -0
  37. {starplot-0.19.1 → starplot-0.19.2}/data/raw/constellations.json +0 -0
  38. {starplot-0.19.1 → starplot-0.19.2}/data/raw/milkyway.json +0 -0
  39. {starplot-0.19.1 → starplot-0.19.2}/data/raw/star_designations.csv +0 -0
  40. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/constellation_names.csv +0 -0
  41. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/dso_names.csv +0 -0
  42. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/en-us/constellation_names.csv +0 -0
  43. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/en-us/dso_names.csv +0 -0
  44. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/en-us/other_terms.csv +0 -0
  45. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/en-us/star_names.csv +0 -0
  46. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/es/constellation_names.csv +0 -0
  47. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/es/dso_names.csv +0 -0
  48. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/es/other_terms.csv +0 -0
  49. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/es/star_names.csv +0 -0
  50. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fa/constellation_names.csv +0 -0
  51. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fa/dso_names.csv +0 -0
  52. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fa/other_terms.csv +0 -0
  53. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fa/star_names.csv +0 -0
  54. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fr/constellation_names.csv +0 -0
  55. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fr/dso_names.csv +0 -0
  56. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fr/other_terms.csv +0 -0
  57. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/fr/star_names.csv +0 -0
  58. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/lt/constellation_names.csv +0 -0
  59. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/lt/dso_names.csv +0 -0
  60. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/lt/other_terms.csv +0 -0
  61. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/lt/readme.md +0 -0
  62. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/lt/star_names.csv +0 -0
  63. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/other_terms.csv +0 -0
  64. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/readme.md +0 -0
  65. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/star_names.csv +0 -0
  66. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
  67. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-cn/dso_names.csv +0 -0
  68. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-cn/other_terms.csv +0 -0
  69. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-cn/star_names.csv +0 -0
  70. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
  71. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-tw/dso_names.csv +0 -0
  72. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-tw/other_terms.csv +0 -0
  73. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-tw/readme.md +0 -0
  74. {starplot-0.19.1 → starplot-0.19.2}/data/raw/translations/zh-tw/star_names.csv +0 -0
  75. {starplot-0.19.1 → starplot-0.19.2}/data/readme.md +0 -0
  76. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/constellation_names.py +0 -0
  77. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/data_settings.py +0 -0
  78. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/db.py +0 -0
  79. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/docdata.py +0 -0
  80. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/dso_names.py +0 -0
  81. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/star_designations.py +0 -0
  82. {starplot-0.19.1 → starplot-0.19.2}/data/scripts/translations.py +0 -0
  83. {starplot-0.19.1 → starplot-0.19.2}/docs/about.md +0 -0
  84. {starplot-0.19.1 → starplot-0.19.2}/docs/coming-soon.md +0 -0
  85. {starplot-0.19.1 → starplot-0.19.2}/docs/css/extra.css +0 -0
  86. {starplot-0.19.1 → starplot-0.19.2}/docs/custom/main.html +0 -0
  87. {starplot-0.19.1 → starplot-0.19.2}/docs/data/building.md +0 -0
  88. {starplot-0.19.1 → starplot-0.19.2}/docs/data/constellations.md +0 -0
  89. {starplot-0.19.1 → starplot-0.19.2}/docs/data/dsos.md +0 -0
  90. {starplot-0.19.1 → starplot-0.19.2}/docs/data/overview.md +0 -0
  91. {starplot-0.19.1 → starplot-0.19.2}/docs/data/stars.md +0 -0
  92. {starplot-0.19.1 → starplot-0.19.2}/docs/data-explorer.md +0 -0
  93. {starplot-0.19.1 → starplot-0.19.2}/docs/data-sources.md +0 -0
  94. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/horizon-double-cluster.md +0 -0
  95. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/horizon-gradient.md +0 -0
  96. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/horizon-sgr.md +0 -0
  97. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-big-dipper.md +0 -0
  98. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-big.md +0 -0
  99. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-carina-nebula.md +0 -0
  100. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-cassiopeia.md +0 -0
  101. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-custom-marker.md +0 -0
  102. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-milky-way-stars.md +0 -0
  103. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-orion.md +0 -0
  104. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-orthographic.md +0 -0
  105. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/map-sagittarius.md +0 -0
  106. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/optic-iss-transit.md +0 -0
  107. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/optic-m45.md +0 -0
  108. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/optic-moon-saturn.md +0 -0
  109. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/optic-orion.md +0 -0
  110. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/optic-solar-eclipse.md +0 -0
  111. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/star-chart-basic.md +0 -0
  112. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/star-chart-detail.md +0 -0
  113. {starplot-0.19.1 → starplot-0.19.2}/docs/examples/star-chart-french.md +0 -0
  114. {starplot-0.19.1 → starplot-0.19.2}/docs/examples.md +0 -0
  115. {starplot-0.19.1 → starplot-0.19.2}/docs/images/celestial-globe.svg +0 -0
  116. {starplot-0.19.1 → starplot-0.19.2}/docs/images/cover-front-sm-360.png +0 -0
  117. {starplot-0.19.1 → starplot-0.19.2}/docs/images/discord.svg +0 -0
  118. {starplot-0.19.1 → starplot-0.19.2}/docs/images/examples/.keep +0 -0
  119. {starplot-0.19.1 → starplot-0.19.2}/docs/images/favicon.png +0 -0
  120. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-2400px.png +0 -0
  121. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/banner.png +0 -0
  122. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/banner.svg +0 -0
  123. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/banner.vectornator +0 -0
  124. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/logo.png +0 -0
  125. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/logo.svg +0 -0
  126. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/logo.vectornator +0 -0
  127. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo-original/logo2.png +0 -0
  128. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo.svg +0 -0
  129. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo2.vectornator +0 -0
  130. {starplot-0.19.1 → starplot-0.19.2}/docs/images/logo500.png +0 -0
  131. {starplot-0.19.1 → starplot-0.19.2}/docs/images/mono-2400px.png +0 -0
  132. {starplot-0.19.1 → starplot-0.19.2}/docs/images/mono.png +0 -0
  133. {starplot-0.19.1 → starplot-0.19.2}/docs/images/mono.svg +0 -0
  134. {starplot-0.19.1 → starplot-0.19.2}/docs/images/star.svg +0 -0
  135. {starplot-0.19.1 → starplot-0.19.2}/docs/images/tutorial/.keep +0 -0
  136. {starplot-0.19.1 → starplot-0.19.2}/docs/index.md +0 -0
  137. {starplot-0.19.1 → starplot-0.19.2}/docs/installation.md +0 -0
  138. {starplot-0.19.1 → starplot-0.19.2}/docs/license.md +0 -0
  139. {starplot-0.19.1 → starplot-0.19.2}/docs/migration-guides/0.16.0.md +0 -0
  140. {starplot-0.19.1 → starplot-0.19.2}/docs/object-names/constellations.md +0 -0
  141. {starplot-0.19.1 → starplot-0.19.2}/docs/object-names/dsos.md +0 -0
  142. {starplot-0.19.1 → starplot-0.19.2}/docs/object-names/stars.md +0 -0
  143. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-callables.md +0 -0
  144. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-collisions.md +0 -0
  145. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-horizonplot.md +0 -0
  146. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-localization.md +0 -0
  147. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-mapplot.md +0 -0
  148. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-models.md +0 -0
  149. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-ongc.md +0 -0
  150. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-opticplot.md +0 -0
  151. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-positions.md +0 -0
  152. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-selecting-objects.md +0 -0
  153. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-settings.md +0 -0
  154. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-styling.md +0 -0
  155. {starplot-0.19.1 → starplot-0.19.2}/docs/reference-zenithplot.md +0 -0
  156. {starplot-0.19.1 → starplot-0.19.2}/docs/robots.txt +0 -0
  157. {starplot-0.19.1 → starplot-0.19.2}/docs/showcase.md +0 -0
  158. {starplot-0.19.1 → starplot-0.19.2}/docs/snippets/_newsletter.html +0 -0
  159. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/01.md +0 -0
  160. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/02.md +0 -0
  161. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/03.md +0 -0
  162. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/04.md +0 -0
  163. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/05.md +0 -0
  164. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/06.md +0 -0
  165. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/07.md +0 -0
  166. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/08.md +0 -0
  167. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial/09.md +0 -0
  168. {starplot-0.19.1 → starplot-0.19.2}/docs/tutorial.md +0 -0
  169. {starplot-0.19.1 → starplot-0.19.2}/examples/examples.py +0 -0
  170. {starplot-0.19.1 → starplot-0.19.2}/examples/galaxy_custom_marker.py +0 -0
  171. {starplot-0.19.1 → starplot-0.19.2}/examples/horizon_double_cluster.py +0 -0
  172. {starplot-0.19.1 → starplot-0.19.2}/examples/horizon_gradient.py +0 -0
  173. {starplot-0.19.1 → starplot-0.19.2}/examples/horizon_sgr.py +0 -0
  174. {starplot-0.19.1 → starplot-0.19.2}/examples/map_big.py +0 -0
  175. {starplot-0.19.1 → starplot-0.19.2}/examples/map_big_dipper.py +0 -0
  176. {starplot-0.19.1 → starplot-0.19.2}/examples/map_carina.py +0 -0
  177. {starplot-0.19.1 → starplot-0.19.2}/examples/map_cas.py +0 -0
  178. {starplot-0.19.1 → starplot-0.19.2}/examples/map_milky_way_stars.py +0 -0
  179. {starplot-0.19.1 → starplot-0.19.2}/examples/map_orion.py +0 -0
  180. {starplot-0.19.1 → starplot-0.19.2}/examples/map_orthographic.py +0 -0
  181. {starplot-0.19.1 → starplot-0.19.2}/examples/map_sagittarius.py +0 -0
  182. {starplot-0.19.1 → starplot-0.19.2}/examples/optic_m45.py +0 -0
  183. {starplot-0.19.1 → starplot-0.19.2}/examples/optic_moon_saturn.py +0 -0
  184. {starplot-0.19.1 → starplot-0.19.2}/examples/optic_orion_nebula.py +0 -0
  185. {starplot-0.19.1 → starplot-0.19.2}/examples/star_chart_basic.py +0 -0
  186. {starplot-0.19.1 → starplot-0.19.2}/examples/star_chart_detail.py +0 -0
  187. {starplot-0.19.1 → starplot-0.19.2}/examples/star_chart_french.py +0 -0
  188. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/__init__.py +0 -0
  189. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/data/.keep +0 -0
  190. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/hashio.py +0 -0
  191. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/horizon_checks.py +0 -0
  192. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/optic_checks.py +0 -0
  193. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/template.html +0 -0
  194. {starplot-0.19.1 → starplot-0.19.2}/hash_checks/zenith_checks.py +0 -0
  195. {starplot-0.19.1 → starplot-0.19.2}/mkdocs.yml +0 -0
  196. {starplot-0.19.1 → starplot-0.19.2}/pyproject.toml +0 -0
  197. {starplot-0.19.1 → starplot-0.19.2}/requirements-dev.txt +0 -0
  198. {starplot-0.19.1 → starplot-0.19.2}/requirements.txt +0 -0
  199. {starplot-0.19.1 → starplot-0.19.2}/scripts/ecliptic.py +0 -0
  200. {starplot-0.19.1 → starplot-0.19.2}/scripts/marimo.py +0 -0
  201. {starplot-0.19.1 → starplot-0.19.2}/scripts/voronoi.py +0 -0
  202. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/callables.py +0 -0
  203. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/cli.py +0 -0
  204. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/config.py +0 -0
  205. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/coordinates.py +0 -0
  206. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/__init__.py +0 -0
  207. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/db.py +0 -0
  208. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/dsos.py +0 -0
  209. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/ecliptic.py +0 -0
  210. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/library/constellation_names.parquet +0 -0
  211. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/library/dso_names.parquet +0 -0
  212. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/library/readme.md +0 -0
  213. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/library/star_designations.parquet +0 -0
  214. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/stars.py +0 -0
  215. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/translations.py +0 -0
  216. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/data/utils.py +0 -0
  217. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/geometry.py +0 -0
  218. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/mixins.py +0 -0
  219. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/__init__.py +0 -0
  220. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/base.py +0 -0
  221. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/comet.py +0 -0
  222. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/dso.py +0 -0
  223. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/milky_way.py +0 -0
  224. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/objects.py +0 -0
  225. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/observer.py +0 -0
  226. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/optics.py +0 -0
  227. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/satellite.py +0 -0
  228. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/models/star.py +0 -0
  229. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/__init__.py +0 -0
  230. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/horizon.py +0 -0
  231. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/optic.py +0 -0
  232. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plots/zenith.py +0 -0
  233. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/__init__.py +0 -0
  234. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/arrow.py +0 -0
  235. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/constellations.py +0 -0
  236. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/dsos.py +0 -0
  237. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/experimental.py +0 -0
  238. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/gradients.py +0 -0
  239. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/legend.py +0 -0
  240. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/milkyway.py +0 -0
  241. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/stars.py +0 -0
  242. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/plotters/text.py +0 -0
  243. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/profile.py +0 -0
  244. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/projections.py +0 -0
  245. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/__init__.py +0 -0
  246. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/base.py +0 -0
  247. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/antique.yml +0 -0
  248. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/blue_dark.yml +0 -0
  249. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/blue_gold.yml +0 -0
  250. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/blue_light.yml +0 -0
  251. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/blue_medium.yml +0 -0
  252. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/blue_night.yml +0 -0
  253. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/cb_wong.yml +0 -0
  254. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/color_print.yml +0 -0
  255. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/gradient_presets.yml +0 -0
  256. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/grayscale.yml +0 -0
  257. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/grayscale_dark.yml +0 -0
  258. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/map.yml +0 -0
  259. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/nord.yml +0 -0
  260. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/optic.yml +0 -0
  261. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/ext/publication.yml +0 -0
  262. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/extensions.py +0 -0
  263. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/gfs-didot/DESCRIPTION.en_us.html +0 -0
  264. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/gfs-didot/GFSDidot-Regular.ttf +0 -0
  265. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/gfs-didot/METADATA.pb +0 -0
  266. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/gfs-didot/OFL.txt +0 -0
  267. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-Bold.ttf +0 -0
  268. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-BoldItalic.ttf +0 -0
  269. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraBold.ttf +0 -0
  270. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraLight.ttf +0 -0
  271. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-ExtraLightItalic.ttf +0 -0
  272. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-Italic.ttf +0 -0
  273. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-Light.ttf +0 -0
  274. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-LightItalic.ttf +0 -0
  275. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-Regular.ttf +0 -0
  276. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-SemiBold.ttf +0 -0
  277. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/Inter-SemiBoldItalic.ttf +0 -0
  278. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts-library/inter/LICENSE.txt +0 -0
  279. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/fonts.py +0 -0
  280. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/helpers.py +0 -0
  281. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/styles/markers.py +0 -0
  282. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/utils.py +0 -0
  283. {starplot-0.19.1 → starplot-0.19.2}/src/starplot/warnings.py +0 -0
  284. {starplot-0.19.1 → starplot-0.19.2}/tests/__init__.py +0 -0
  285. {starplot-0.19.1 → starplot-0.19.2}/tests/data/.keep +0 -0
  286. {starplot-0.19.1 → starplot-0.19.2}/tests/data/comets.txt +0 -0
  287. {starplot-0.19.1 → starplot-0.19.2}/tests/test_catalogs.py +0 -0
  288. {starplot-0.19.1 → starplot-0.19.2}/tests/test_comets.py +0 -0
  289. {starplot-0.19.1 → starplot-0.19.2}/tests/test_data.py +0 -0
  290. {starplot-0.19.1 → starplot-0.19.2}/tests/test_languages.py +0 -0
  291. {starplot-0.19.1 → starplot-0.19.2}/tests/test_map.py +0 -0
  292. {starplot-0.19.1 → starplot-0.19.2}/tests/test_models.py +0 -0
  293. {starplot-0.19.1 → starplot-0.19.2}/tests/test_observer.py +0 -0
  294. {starplot-0.19.1 → starplot-0.19.2}/tests/test_optic.py +0 -0
  295. {starplot-0.19.1 → starplot-0.19.2}/tests/test_satellite.py +0 -0
  296. {starplot-0.19.1 → starplot-0.19.2}/tests/test_settings.py +0 -0
  297. {starplot-0.19.1 → starplot-0.19.2}/tests/test_stars.py +0 -0
  298. {starplot-0.19.1 → starplot-0.19.2}/tests/test_styles.py +0 -0
  299. {starplot-0.19.1 → starplot-0.19.2}/tests/test_utils.py +0 -0
  300. {starplot-0.19.1 → starplot-0.19.2}/tests/utils.py +0 -0
  301. {starplot-0.19.1 → starplot-0.19.2}/tutorial/build.py +0 -0
  302. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_02.py +0 -0
  303. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_03.py +0 -0
  304. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_04.py +0 -0
  305. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_05.py +0 -0
  306. {starplot-0.19.1 → starplot-0.19.2}/tutorial/tutorial_08.py +0 -0
@@ -20,5 +20,5 @@ keywords:
20
20
  - graphs
21
21
  - plotting
22
22
  license: MIT
23
- version: 0.19.1
24
- date-released: '2026-01-24'
23
+ version: 0.19.2
24
+ date-released: '2026-01-27'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: starplot
3
- Version: 0.19.1
3
+ Version: 0.19.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>
@@ -1,10 +1,15 @@
1
1
  ## v0.19.x
2
+
2
3
  - Adds a `CollisionHandler` for defining what to do when labels collide with something
3
4
  - Introduces catalogs for the Milky Way and constellation borders
4
5
  - Makes map plots default to plotting at epoch J2000
5
6
  - Replaces the `true_size` kwarg on the DSO plotting function with `where_true_size` which is a list of filters
6
7
  - Fixes a bug with auto label offsets from markers
7
8
  - [**v0.19.1**] Fixes issue with constellation boundaries
9
+ - [**v0.19.2**]
10
+ - Adds a `border` field to the constellation model
11
+ - Modifies the `line` function to accept a Shapely geometry OR a list of coordinates
12
+ - Fixes bug with plotting true apparent size of solar system objects
8
13
 
9
14
  ---
10
15
 
@@ -7,7 +7,7 @@ title: Map of Canis Major
7
7
 
8
8
  ![map-canis-major](/images/examples/map_canis_major.png)
9
9
 
10
- In this example, we set the plot's `clip_path` to the boundary of Canis Major, so only objects in that constellation are plotted:
10
+ In this example, we set the plot's `clip_path` to the border of Canis Major, so only objects in that constellation are plotted:
11
11
 
12
12
  ```python
13
13
  --8<-- "examples/map_canis_major.py"
@@ -1,3 +1,5 @@
1
+ from shapely import Polygon
2
+
1
3
  from starplot import MapPlot, Miller, Constellation, _
2
4
  from starplot.styles import PlotStyle, extensions
3
5
 
@@ -14,13 +16,16 @@ p = MapPlot(
14
16
  dec_max=-10.9,
15
17
  style=style,
16
18
  resolution=3400,
17
- clip_path=canis_major.boundary,
19
+ clip_path=Polygon(canis_major.border.coords),
18
20
  scale=1.2,
19
21
  )
20
22
  p.constellations(
21
23
  where=[_.iau_id == "cma"],
22
24
  )
23
- p.constellation_borders()
25
+ p.line(
26
+ geometry=canis_major.border,
27
+ style=p.style.constellation_borders,
28
+ )
24
29
  p.open_clusters(where=[_.magnitude < 9], where_true_size=[False])
25
30
  p.stars(where=[_.magnitude < 9], where_labels=[_.magnitude < 4], bayer_labels=True)
26
31
  p.constellation_labels()
@@ -26,7 +26,7 @@ p = OpticPlot(
26
26
  dec=moon.dec,
27
27
  observer=observer,
28
28
  optic=Binoculars(
29
- magnification=15,
29
+ magnification=20,
30
30
  fov=65,
31
31
  ),
32
32
  style=style,
@@ -5,7 +5,7 @@ from starplot import Moon, Binoculars, Observer
5
5
  from starplot.styles import PlotStyle, extensions
6
6
 
7
7
  # time of partial eclipse. total eclipse started at 15:13:46
8
- dt = datetime(2024, 4, 8, 14, 40, 47, 0, tzinfo=ZoneInfo("US/Eastern"))
8
+ dt = datetime(2024, 4, 8, 14, 45, 0, 0, tzinfo=ZoneInfo("US/Eastern"))
9
9
 
10
10
 
11
11
  observer = Observer(
@@ -18,7 +18,7 @@ m = Moon.get(dt=observer.dt, lat=observer.lat, lon=observer.lon)
18
18
 
19
19
  op = m.create_optic(
20
20
  observer=observer,
21
- optic=Binoculars(magnification=20, fov=65),
21
+ optic=Binoculars(magnification=30, fov=65),
22
22
  style=PlotStyle().extend(
23
23
  extensions.GRAYSCALE_DARK,
24
24
  extensions.OPTIC,
@@ -22,6 +22,10 @@ map_coma_berenices_dso_size:
22
22
  dhash: ea92ecacb08cc0c0aa86acacb088c682aa8a9292b08ac282
23
23
  filename: /starplot/hash_checks/data/map-coma-berenices-dso-size.png
24
24
  phash: 92966d6d4d9616c9
25
+ map_constellation_clip_path:
26
+ dhash: 3202ee96e47819103002ee96e4781910b002ee96e4781910
27
+ filename: /starplot/hash_checks/data/map-constellation-clip-path.png
28
+ phash: 99c45b99c4d98ec6
25
29
  map_custom_stars:
26
30
  dhash: 5e21a1ceac2c84485e21a1ceac2c84485e21a1ceac2c8448
27
31
  filename: /starplot/hash_checks/data/map-custom-stars.png
@@ -43,7 +47,7 @@ map_mollweide:
43
47
  filename: /starplot/hash_checks/data/map-mollweide.png
44
48
  phash: ebcbb698e3309461
45
49
  map_moon_phase_waxing_crescent:
46
- dhash: 0814284d4d2814088894a84d4da894888884884d4d888488
50
+ dhash: 0008344a4a3408008088a04a4aa088808088804a4a808880
47
51
  filename: /starplot/hash_checks/data/map-moon-phase-waxing-crescent.png
48
52
  phash: b38ccc3333cccc33
49
53
  map_orion_base:
@@ -51,9 +55,9 @@ map_orion_base:
51
55
  filename: /starplot/hash_checks/data/map-orion-base.png
52
56
  phash: bf7952269584b594
53
57
  map_orion_extra:
54
- dhash: 191b1b3f2b2f6d691b1b195b2b236d695c1b1b1e2b2f6d69
58
+ dhash: 191b1b3f2f2f6d691b1b1b5b2f236d695c1b1b1b2a2f6d69
55
59
  filename: /starplot/hash_checks/data/map-orion-extra.png
56
- phash: bf61e20ec19ed09a
60
+ phash: bf61e606c59ed092
57
61
  map_plot_custom_clip_path_virgo:
58
62
  dhash: 23032913950c040443032507870c0c0203032507070e0c02
59
63
  filename: /starplot/hash_checks/data/map-custom-clip-path-virgo.png
@@ -91,9 +95,9 @@ optic_clipping:
91
95
  filename: /starplot/hash_checks/data/optic-clipping.png
92
96
  phash: 95696a87add86983
93
97
  optic_iss_moon_transit:
94
- dhash: 70e8d6b2b28cf07071e896b2b68ef07171cc90b2a48ed071
98
+ dhash: 70d0ceb0f088f47071d08eb4f68ad47171c488b6b4aac471
95
99
  filename: /starplot/hash_checks/data/optic-iss-moon-transit.png
96
- phash: cc993366cc993366
100
+ phash: c49d33624c9d3367
97
101
  optic_m45_binoculars:
98
102
  dhash: 8e17237133330e4d8e17237133330e4d8e17237133330e4d
99
103
  filename: /starplot/hash_checks/data/optic-m45-binoculars.png
@@ -115,15 +119,15 @@ optic_m45_scope_gradient:
115
119
  filename: /starplot/hash_checks/data/optic-m45-scope-gradient.png
116
120
  phash: aa3b84e48693ced3
117
121
  optic_moon_phase_full:
118
- dhash: 0e2b553333552b0e0e2b553333552b0e0e2b553333552b0e
122
+ dhash: 0e334d71714d330e0e334d71714d330e0e334d71714d330e
119
123
  filename: /starplot/hash_checks/data/optic-moon-phase-full.png
120
- phash: ff7aa02395308735
124
+ phash: ff7aa02a85318735
121
125
  optic_moon_phase_new:
122
- dhash: 16088e96968e081616088e96968e081616088e96968e0816
126
+ dhash: 0814084d4d0814080814084d4d0814080814084d4d081408
123
127
  filename: /starplot/hash_checks/data/optic-moon-phase-new.png
124
- phash: e5719e96690c6663
128
+ phash: e63399cc6633998c
125
129
  optic_moon_phase_waxing_crescent:
126
- dhash: 0e33454d59712b0e0e33454d59712b0e0e33454d59712b0e
130
+ dhash: 0e3345495145330e0e3345495145330e0e3345495145330e
127
131
  filename: /starplot/hash_checks/data/optic-moon-phase-waxing-crescent.png
128
132
  phash: bb26e4999166c699
129
133
  optic_orion_nebula_refractor:
@@ -135,9 +139,9 @@ optic_polaris_binoculars:
135
139
  filename: /starplot/hash_checks/data/optic-binoculars-polaris.png
136
140
  phash: aa6b84f182f18ed3
137
141
  optic_solar_eclipse_binoculars:
138
- dhash: 71ccb28ecc8ed47171ccb28ecc8ed47171c8a28ccc8ac071
142
+ dhash: 71cc928a8a92cc7171cc928a8a92cc7171c0b28a8a92c071
139
143
  filename: /starplot/hash_checks/data/optic-binoculars-eclipse.png
140
- phash: 91cc4c333bcc6c73
144
+ phash: 91cc4e333bcc6c33
141
145
  optic_wrapping:
142
146
  dhash: 70f0ec92d2d8650a71e0d4acacc471aa71e0d4acacc4792a
143
147
  filename: /starplot/hash_checks/data/optic-wrapping.png
@@ -5,6 +5,7 @@ from datetime import datetime
5
5
  from zoneinfo import ZoneInfo
6
6
 
7
7
  import numpy as np
8
+ from shapely import Polygon
8
9
 
9
10
  from starplot import (
10
11
  MapPlot,
@@ -20,6 +21,7 @@ from starplot import (
20
21
  Mercator,
21
22
  Mollweide,
22
23
  StereoNorth,
24
+ StereoSouth,
23
25
  CollisionHandler,
24
26
  Binoculars,
25
27
  Scope,
@@ -713,3 +715,72 @@ def check_map_allow_marker_and_line_collisions():
713
715
  p.export(filename)
714
716
  p.close_fig()
715
717
  return filename
718
+
719
+
720
+ def check_map_constellation_clip_path():
721
+ constellation = Constellation.get(iau_id="and")
722
+
723
+ ra, dec = [p for p in constellation.border.coords.xy]
724
+ extent = (min(ra) - 2, max(min(dec) - 2, -90), max(ra) + 2, min(max(dec) + 2, 90))
725
+
726
+ if constellation.dec > 60:
727
+ proj = StereoNorth
728
+ elif constellation.dec < -60:
729
+ proj = StereoSouth
730
+ else:
731
+ proj = Miller
732
+
733
+ if extent[0] < 0:
734
+ extent = (extent[0] + 360, extent[1], extent[2] + 360, extent[3])
735
+
736
+ center_ra = (extent[0] + extent[2]) / 2
737
+ if center_ra < 0:
738
+ center_ra += 360
739
+ elif center_ra > 360:
740
+ center_ra -= 360
741
+
742
+ p = MapPlot(
743
+ projection=proj(center_ra=center_ra),
744
+ ra_min=extent[0],
745
+ ra_max=extent[2],
746
+ dec_min=extent[1],
747
+ dec_max=extent[3],
748
+ style=styles.PlotStyle().extend(
749
+ styles.extensions.BLUE_NIGHT,
750
+ styles.extensions.MAP,
751
+ ),
752
+ clip_path=Polygon(constellation.border.coords),
753
+ resolution=2000,
754
+ scale=0.8,
755
+ )
756
+
757
+ p.line(
758
+ geometry=constellation.border,
759
+ style=p.style.constellation_borders,
760
+ )
761
+
762
+ for hip1, hip2 in constellation.star_hip_lines:
763
+ star1 = Star.get(hip=hip1)
764
+ star2 = Star.get(hip=hip2)
765
+ p.line(
766
+ coordinates=[
767
+ (star1.ra, star1.dec),
768
+ (star2.ra, star2.dec),
769
+ ],
770
+ style=p.style.constellation_lines,
771
+ )
772
+
773
+ p.stars(
774
+ where=[_.hip.isin(constellation.star_hip_ids)],
775
+ where_labels=[_.magnitude < 4],
776
+ bayer_labels=True,
777
+ )
778
+
779
+ p.title(constellation.name, style__line_spacing=80)
780
+
781
+ p.ax.set_axis_off() # hide the axis background that's outside the clip path
782
+
783
+ filename = DATA_PATH / "map-constellation-clip-path.png"
784
+ p.export(filename, padding=0.5)
785
+
786
+ return filename
@@ -2,7 +2,7 @@
2
2
 
3
3
  """Star charts and maps of the sky"""
4
4
 
5
- __version__ = "0.19.1"
5
+ __version__ = "0.19.2"
6
6
 
7
7
  from .plots import (
8
8
  MapPlot,
@@ -328,8 +328,8 @@ OPEN_NGC = Catalog(
328
328
  """
329
329
 
330
330
  CONSTELLATIONS_IAU = Catalog(
331
- path=settings.data_path / "constellations.0.3.1.parquet",
332
- url="https://github.com/steveberardi/starplot-constellations/releases/download/v0.3.1/constellations.0.3.1.parquet",
331
+ path=settings.data_path / "constellations.0.3.3.parquet",
332
+ url="https://github.com/steveberardi/starplot-constellations/releases/download/v0.3.3/constellations.0.3.3.parquet",
333
333
  )
334
334
  """
335
335
  Constellations recognized by IAU, with lines by Sky & Telescope.
@@ -43,6 +43,7 @@ def table(
43
43
 
44
44
  return c.mutate(
45
45
  boundary=_.boundary.cast("geometry"), # cast WKB to geometry type
46
+ border=_.border.cast("geometry"), # cast WKB to geometry type
46
47
  name=getattr(c, name_column),
47
48
  )
48
49
 
@@ -1,7 +1,7 @@
1
1
  import math
2
2
 
3
3
  import pyproj
4
-
4
+ import numpy as np
5
5
 
6
6
  GEOD = pyproj.Geod("+a=6378137 +f=0.0", sphere=True)
7
7
 
@@ -70,11 +70,10 @@ def ellipse(
70
70
 
71
71
  height = distance_m(height_degrees / 2) # b
72
72
  width = distance_m(width_degrees / 2) # a
73
+ step_size = (end_angle - start_angle) / num_pts
73
74
 
74
75
  points = []
75
- for angle_pt in range(
76
- start_angle, end_angle + 1, int((end_angle - start_angle) / num_pts)
77
- ):
76
+ for angle_pt in np.arange(start_angle, end_angle + step_size, step_size):
78
77
  radians = math.radians(angle_pt)
79
78
  radius_a = (height * width) / math.sqrt(
80
79
  height**2 * (math.sin(radians)) ** 2
@@ -16,7 +16,11 @@ class Constellation(CatalogObject, SkyObject):
16
16
  """
17
17
 
18
18
  boundary: Polygon | MultiPolygon
19
- """Shapely Polygon of the constellation's boundary. Right ascension coordinates are in degrees (0...360)."""
19
+ """
20
+ Shapely Polygon of the constellation's boundary. Right ascension coordinates are in degrees (0...360).
21
+
22
+ If the constellation's boundary crosses the 0-meridian, then this will be a MultiPolygon split at the meridian.
23
+ """
20
24
 
21
25
  star_hip_ids: list[int]
22
26
  """List of HIP ids for stars that are part of the _lines_ for this constellation."""
@@ -35,6 +39,13 @@ class Constellation(CatalogObject, SkyObject):
35
39
  Serpens Caput has the `iau_id` of `ser1` and Serpens Cauda is `ser2`
36
40
  """
37
41
 
42
+ border: LineString = None
43
+ """
44
+ Shapely LineString of the constellation's border. Right ascension coordinates are in degrees (0...360).
45
+
46
+ Coordinates in this geometry may extend past RA=360, if the border crosses the 0-meridian. This makes it ready to plot with the `line` function.
47
+ """
48
+
38
49
  def __repr__(self) -> str:
39
50
  return f"Constellation(iau_id={self.iau_id}, name={self.name}, ra={self.ra}, dec={self.dec})"
40
51
 
@@ -37,7 +37,7 @@ class Moon(SkyObject):
37
37
  """Date/time of moon's position"""
38
38
 
39
39
  apparent_size: float
40
- """Apparent size in the sky (degrees)"""
40
+ """Apparent diameter in the sky (degrees)"""
41
41
 
42
42
  phase_angle: float
43
43
  """Angle of the moon from the Sun (degrees)"""
@@ -72,7 +72,7 @@ class Planet(SkyObject):
72
72
  """Date/time of planet's position"""
73
73
 
74
74
  apparent_size: float = 0
75
- """Apparent size (degrees)"""
75
+ """Apparent diameter (degrees)"""
76
76
 
77
77
  geometry: Polygon = None
78
78
  """Shapely Polygon of the planet's extent. Right ascension coordinates are in degrees (0...360)."""
@@ -22,7 +22,7 @@ class Sun(SkyObject):
22
22
  """Date/time of Sun's position"""
23
23
 
24
24
  apparent_size: float = 0
25
- """Apparent size (degrees)"""
25
+ """Apparent diameter (degrees)"""
26
26
 
27
27
  geometry: Polygon = None
28
28
  """Shapely Polygon of the Sun's extent. Right ascension coordinates are in degrees (0...360)."""
@@ -8,7 +8,7 @@ from matplotlib import pyplot as plt, patheffects
8
8
  from matplotlib.axes import Axes
9
9
  from matplotlib.figure import Figure
10
10
  from matplotlib.lines import Line2D
11
- from shapely import Polygon
11
+ from shapely import Polygon, LineString
12
12
 
13
13
  from starplot.coordinates import CoordinateSystem
14
14
  from starplot import geod, models, warnings
@@ -334,9 +334,9 @@ class BasePlot(TextPlotterMixin, ABC):
334
334
  polygon_style = style.marker.to_polygon_style()
335
335
  polygon_style.edge_color = None
336
336
  self.circle(
337
- (p.ra, p.dec),
338
- p.apparent_size,
339
- polygon_style,
337
+ center=(p.ra, p.dec),
338
+ radius_degrees=p.apparent_size / 2,
339
+ style=polygon_style,
340
340
  gid="planet-marker",
341
341
  )
342
342
  self._add_legend_handle_marker(legend_label, style.marker)
@@ -406,10 +406,11 @@ class BasePlot(TextPlotterMixin, ABC):
406
406
  polygon_style.edge_color = None
407
407
 
408
408
  self.circle(
409
- (s.ra, s.dec),
410
- s.apparent_size,
409
+ center=(s.ra, s.dec),
410
+ radius_degrees=s.apparent_size / 2,
411
411
  style=polygon_style,
412
412
  gid="sun-marker",
413
+ num_pts=200,
413
414
  )
414
415
 
415
416
  style.marker.symbol = MarkerSymbolEnum.CIRCLE
@@ -633,14 +634,27 @@ class BasePlot(TextPlotterMixin, ABC):
633
634
  )
634
635
 
635
636
  @use_style(LineStyle)
636
- def line(self, coordinates: list[tuple[float, float]], style: LineStyle, **kwargs):
637
+ def line(
638
+ self,
639
+ style: LineStyle,
640
+ coordinates: list[tuple[float, float]] = None,
641
+ geometry: LineString = None,
642
+ **kwargs,
643
+ ):
637
644
  """Plots a line
638
645
 
639
646
  Args:
640
647
  coordinates: List of coordinates, e.g. `[(ra, dec), (ra, dec)]`
648
+ geometry: A shapely LineString. If this value is passed, then the `coordinates` kwarg will be ignored.
641
649
  style: Style of the line
642
650
  """
643
- x, y = zip(*[self._prepare_coords(*p) for p in coordinates])
651
+
652
+ if coordinates is None and geometry is None:
653
+ raise ValueError("Must pass coordinates or geometry when plotting lines.")
654
+
655
+ coords = geometry.coords if geometry is not None else coordinates
656
+
657
+ x, y = zip(*[self._prepare_coords(*p) for p in coords])
644
658
 
645
659
  self.ax.plot(
646
660
  x,
@@ -700,9 +714,9 @@ class BasePlot(TextPlotterMixin, ABC):
700
714
 
701
715
  if show_phase:
702
716
  self._moon_with_phase(
703
- m.phase_description,
704
- (m.ra, m.dec),
705
- m.apparent_size,
717
+ moon_phase=m.phase_description,
718
+ center=(m.ra, m.dec),
719
+ radius_degrees=m.apparent_size / 2,
706
720
  style=polygon_style,
707
721
  dark_side_color=style.marker.edge_color,
708
722
  )
@@ -797,8 +811,8 @@ class BasePlot(TextPlotterMixin, ABC):
797
811
  # Plot left side
798
812
  self.ellipse(
799
813
  center,
800
- radius_degrees * 2,
801
- radius_degrees * 2,
814
+ height_degrees=radius_degrees * 2,
815
+ width_degrees=radius_degrees * 2,
802
816
  style=left,
803
817
  num_pts=num_pts,
804
818
  angle=0,
@@ -808,8 +822,8 @@ class BasePlot(TextPlotterMixin, ABC):
808
822
  # Plot right side
809
823
  self.ellipse(
810
824
  center,
811
- radius_degrees * 2,
812
- radius_degrees * 2,
825
+ height_degrees=radius_degrees * 2,
826
+ width_degrees=radius_degrees * 2,
813
827
  style=right,
814
828
  num_pts=num_pts,
815
829
  angle=180,
@@ -819,8 +833,8 @@ class BasePlot(TextPlotterMixin, ABC):
819
833
  # Plot middle
820
834
  self.ellipse(
821
835
  center,
822
- radius_degrees * 2,
823
- radius_degrees,
836
+ height_degrees=radius_degrees * 2,
837
+ width_degrees=radius_degrees,
824
838
  style=middle,
825
839
  gid="moon-marker",
826
840
  )
@@ -11,7 +11,7 @@ from skyfield.api import wgs84
11
11
  import numpy as np
12
12
 
13
13
  from starplot.coordinates import CoordinateSystem
14
- from starplot import geod, geometry
14
+ from starplot import geod
15
15
  from starplot.plots.base import BasePlot, DPI
16
16
  from starplot.mixins import ExtentMaskMixin
17
17
  from starplot.models.observer import Observer
@@ -124,9 +124,6 @@ class MapPlot(
124
124
  self.dec_min = dec_min
125
125
  self.dec_max = dec_max
126
126
 
127
- if clip_path and clip_path.geom_type == "MultiPolygon":
128
- clip_path = geometry.union_at_zero(clip_path.geoms[0], clip_path.geoms[1])
129
-
130
127
  self.clip_path = clip_path
131
128
 
132
129
  self._geodetic = ccrs.Geodetic()
@@ -39,7 +39,7 @@ p.stars(
39
39
  )
40
40
 
41
41
  p.nebula(
42
- # select DSOs which have no defined magnitude or less than 7
42
+ # select nebulae which have no defined magnitude or less than 7
43
43
  where=[_.magnitude.isnull() | (_.magnitude < 7)],
44
44
  where_true_size=[_.size > 1], # only plot large nebula as their true size
45
45
  )
@@ -33,8 +33,8 @@ p.planets(
33
33
  # since we're plotting the planets as their "true size"
34
34
  # the 'auto' offset won't work (it's not supported yet!)
35
35
  # so we manually set the offsets here:
36
- style__label__offset_x=86,
37
- style__label__offset_y=-40,
36
+ style__label__offset_x=68,
37
+ style__label__offset_y=-30,
38
38
  style__label__font_size=56,
39
39
  style__marker__color="#fcdb72",
40
40
  )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes