starplot 0.21.2__tar.gz → 0.21.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 (366) hide show
  1. {starplot-0.21.2 → starplot-0.21.4}/CITATION.cff +2 -2
  2. {starplot-0.21.2 → starplot-0.21.4}/PKG-INFO +3 -3
  3. {starplot-0.21.2 → starplot-0.21.4}/docs/changelog.md +2 -0
  4. {starplot-0.21.2 → starplot-0.21.4}/pyproject.toml +2 -2
  5. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/__init__.py +1 -1
  6. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/callables.py +3 -1
  7. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/library/constellation_names.parquet +0 -0
  8. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/library/dso_names.parquet +0 -0
  9. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/library/star_designations.parquet +0 -0
  10. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/star.py +6 -1
  11. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/extensions.py +1 -1
  12. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/plot.py +2 -2
  13. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/canvas.py +1 -1
  14. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/test_canvas.py +40 -0
  15. {starplot-0.21.2 → starplot-0.21.4}/.dockerignore +0 -0
  16. {starplot-0.21.2 → starplot-0.21.4}/.github/FUNDING.yml +0 -0
  17. {starplot-0.21.2 → starplot-0.21.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {starplot-0.21.2 → starplot-0.21.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  19. {starplot-0.21.2 → starplot-0.21.4}/.github/workflows/archives.yaml +0 -0
  20. {starplot-0.21.2 → starplot-0.21.4}/.github/workflows/docs.yml +0 -0
  21. {starplot-0.21.2 → starplot-0.21.4}/.github/workflows/release.yml +0 -0
  22. {starplot-0.21.2 → starplot-0.21.4}/.github/workflows/test.yml +0 -0
  23. {starplot-0.21.2 → starplot-0.21.4}/.gitignore +0 -0
  24. {starplot-0.21.2 → starplot-0.21.4}/CLAUDE.md +0 -0
  25. {starplot-0.21.2 → starplot-0.21.4}/CODE_OF_CONDUCT.md +0 -0
  26. {starplot-0.21.2 → starplot-0.21.4}/CONTRIBUTING.md +0 -0
  27. {starplot-0.21.2 → starplot-0.21.4}/Dockerfile +0 -0
  28. {starplot-0.21.2 → starplot-0.21.4}/LICENSE +0 -0
  29. {starplot-0.21.2 → starplot-0.21.4}/Makefile +0 -0
  30. {starplot-0.21.2 → starplot-0.21.4}/README.md +0 -0
  31. {starplot-0.21.2 → starplot-0.21.4}/data/raw/constellation_borders.json +0 -0
  32. {starplot-0.21.2 → starplot-0.21.4}/data/raw/constellations.json +0 -0
  33. {starplot-0.21.2 → starplot-0.21.4}/data/raw/milkyway.json +0 -0
  34. {starplot-0.21.2 → starplot-0.21.4}/data/raw/star_designations.csv +0 -0
  35. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/de/constellation_names.csv +0 -0
  36. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/de/dso_names.csv +0 -0
  37. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/de/other_terms.csv +0 -0
  38. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/de/readme.md +0 -0
  39. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/de/star_names.csv +0 -0
  40. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/en-us/constellation_names.csv +0 -0
  41. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/en-us/dso_names.csv +0 -0
  42. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/en-us/other_terms.csv +0 -0
  43. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/en-us/star_names.csv +0 -0
  44. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/es/constellation_names.csv +0 -0
  45. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/es/dso_names.csv +0 -0
  46. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/es/other_terms.csv +0 -0
  47. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/es/star_names.csv +0 -0
  48. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fa/constellation_names.csv +0 -0
  49. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fa/dso_names.csv +0 -0
  50. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fa/other_terms.csv +0 -0
  51. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fa/star_names.csv +0 -0
  52. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fr/constellation_names.csv +0 -0
  53. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fr/dso_names.csv +0 -0
  54. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fr/other_terms.csv +0 -0
  55. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/fr/star_names.csv +0 -0
  56. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/it/constellation_names.csv +0 -0
  57. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/it/dso_names.csv +0 -0
  58. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/it/other_terms.csv +0 -0
  59. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/it/readme.md +0 -0
  60. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/it/star_names.csv +0 -0
  61. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/lt/constellation_names.csv +0 -0
  62. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/lt/dso_names.csv +0 -0
  63. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/lt/other_terms.csv +0 -0
  64. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/lt/readme.md +0 -0
  65. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/lt/star_names.csv +0 -0
  66. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/nl/constellation_names.csv +0 -0
  67. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/nl/dso_names.csv +0 -0
  68. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/nl/other_terms.csv +0 -0
  69. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/nl/readme.md +0 -0
  70. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/nl/star_names.csv +0 -0
  71. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/readme.md +0 -0
  72. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
  73. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-cn/dso_names.csv +0 -0
  74. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-cn/other_terms.csv +0 -0
  75. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-cn/star_names.csv +0 -0
  76. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
  77. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-tw/dso_names.csv +0 -0
  78. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-tw/other_terms.csv +0 -0
  79. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-tw/readme.md +0 -0
  80. {starplot-0.21.2 → starplot-0.21.4}/data/raw/translations/zh-tw/star_names.csv +0 -0
  81. {starplot-0.21.2 → starplot-0.21.4}/data/readme.md +0 -0
  82. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/constellation_names.py +0 -0
  83. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/data_settings.py +0 -0
  84. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/db.py +0 -0
  85. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/dso_names.py +0 -0
  86. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/star_designations.py +0 -0
  87. {starplot-0.21.2 → starplot-0.21.4}/data/scripts/translations.py +0 -0
  88. {starplot-0.21.2 → starplot-0.21.4}/docs/about.md +0 -0
  89. {starplot-0.21.2 → starplot-0.21.4}/docs/coming-soon.md +0 -0
  90. {starplot-0.21.2 → starplot-0.21.4}/docs/css/extra.css +0 -0
  91. {starplot-0.21.2 → starplot-0.21.4}/docs/custom/main.html +0 -0
  92. {starplot-0.21.2 → starplot-0.21.4}/docs/data/building.md +0 -0
  93. {starplot-0.21.2 → starplot-0.21.4}/docs/data/constellations.md +0 -0
  94. {starplot-0.21.2 → starplot-0.21.4}/docs/data/dsos.md +0 -0
  95. {starplot-0.21.2 → starplot-0.21.4}/docs/data/index.md +0 -0
  96. {starplot-0.21.2 → starplot-0.21.4}/docs/data/stars.md +0 -0
  97. {starplot-0.21.2 → starplot-0.21.4}/docs/data-sources.md +0 -0
  98. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/horizon-double-cluster.md +0 -0
  99. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/horizon-gradient.md +0 -0
  100. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/horizon-sgr.md +0 -0
  101. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-big-dipper.md +0 -0
  102. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-big.md +0 -0
  103. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-canis-major.md +0 -0
  104. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-carina-nebula.md +0 -0
  105. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-cassiopeia.md +0 -0
  106. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-custom-marker.md +0 -0
  107. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-galaxy.md +0 -0
  108. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-milky-way-stars.md +0 -0
  109. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-orion.md +0 -0
  110. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-orthographic.md +0 -0
  111. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-sagittarius.md +0 -0
  112. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/map-virgo-cluster.md +0 -0
  113. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/optic-iss-transit.md +0 -0
  114. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/optic-m45.md +0 -0
  115. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/optic-orion.md +0 -0
  116. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/optic-solar-eclipse.md +0 -0
  117. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/star-chart-basic.md +0 -0
  118. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/star-chart-detail.md +0 -0
  119. {starplot-0.21.2 → starplot-0.21.4}/docs/examples/star-chart-french.md +0 -0
  120. {starplot-0.21.2 → starplot-0.21.4}/docs/examples.md +0 -0
  121. {starplot-0.21.2 → starplot-0.21.4}/docs/images/celestial-globe.svg +0 -0
  122. {starplot-0.21.2 → starplot-0.21.4}/docs/images/cover-front-sm-360.png +0 -0
  123. {starplot-0.21.2 → starplot-0.21.4}/docs/images/discord.svg +0 -0
  124. {starplot-0.21.2 → starplot-0.21.4}/docs/images/examples/.keep +0 -0
  125. {starplot-0.21.2 → starplot-0.21.4}/docs/images/favicon.png +0 -0
  126. {starplot-0.21.2 → starplot-0.21.4}/docs/images/figure_layout.svg +0 -0
  127. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-2400px.png +0 -0
  128. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/banner.png +0 -0
  129. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/banner.svg +0 -0
  130. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/banner.vectornator +0 -0
  131. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/logo.png +0 -0
  132. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/logo.svg +0 -0
  133. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/logo.vectornator +0 -0
  134. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo-original/logo2.png +0 -0
  135. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo.svg +0 -0
  136. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo2.vectornator +0 -0
  137. {starplot-0.21.2 → starplot-0.21.4}/docs/images/logo500.png +0 -0
  138. {starplot-0.21.2 → starplot-0.21.4}/docs/images/mono-2400px.png +0 -0
  139. {starplot-0.21.2 → starplot-0.21.4}/docs/images/mono.png +0 -0
  140. {starplot-0.21.2 → starplot-0.21.4}/docs/images/mono.svg +0 -0
  141. {starplot-0.21.2 → starplot-0.21.4}/docs/images/star.svg +0 -0
  142. {starplot-0.21.2 → starplot-0.21.4}/docs/images/starplot-header.svg +0 -0
  143. {starplot-0.21.2 → starplot-0.21.4}/docs/images/tutorial/.keep +0 -0
  144. {starplot-0.21.2 → starplot-0.21.4}/docs/index.md +0 -0
  145. {starplot-0.21.2 → starplot-0.21.4}/docs/installation.md +0 -0
  146. {starplot-0.21.2 → starplot-0.21.4}/docs/license.md +0 -0
  147. {starplot-0.21.2 → starplot-0.21.4}/docs/migration-guides/0.16.0.md +0 -0
  148. {starplot-0.21.2 → starplot-0.21.4}/docs/migration-guides/0.21.0.md +0 -0
  149. {starplot-0.21.2 → starplot-0.21.4}/docs/models/comet.md +0 -0
  150. {starplot-0.21.2 → starplot-0.21.4}/docs/models/constellation.md +0 -0
  151. {starplot-0.21.2 → starplot-0.21.4}/docs/models/dso.md +0 -0
  152. {starplot-0.21.2 → starplot-0.21.4}/docs/models/index.md +0 -0
  153. {starplot-0.21.2 → starplot-0.21.4}/docs/models/moon.md +0 -0
  154. {starplot-0.21.2 → starplot-0.21.4}/docs/models/object-list.md +0 -0
  155. {starplot-0.21.2 → starplot-0.21.4}/docs/models/observer.md +0 -0
  156. {starplot-0.21.2 → starplot-0.21.4}/docs/models/optics.md +0 -0
  157. {starplot-0.21.2 → starplot-0.21.4}/docs/models/planet.md +0 -0
  158. {starplot-0.21.2 → starplot-0.21.4}/docs/models/satellite.md +0 -0
  159. {starplot-0.21.2 → starplot-0.21.4}/docs/models/star.md +0 -0
  160. {starplot-0.21.2 → starplot-0.21.4}/docs/models/sun.md +0 -0
  161. {starplot-0.21.2 → starplot-0.21.4}/docs/object-names/constellations.md +0 -0
  162. {starplot-0.21.2 → starplot-0.21.4}/docs/object-names/dsos.md +0 -0
  163. {starplot-0.21.2 → starplot-0.21.4}/docs/object-names/stars.md +0 -0
  164. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-callables.md +0 -0
  165. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-collisions.md +0 -0
  166. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-galaxyplot.md +0 -0
  167. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-horizonplot.md +0 -0
  168. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-localization.md +0 -0
  169. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-mapplot.md +0 -0
  170. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-ongc.md +0 -0
  171. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-opticplot.md +0 -0
  172. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-positions.md +0 -0
  173. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-projections.md +0 -0
  174. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-selecting-objects.md +0 -0
  175. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-settings.md +0 -0
  176. {starplot-0.21.2 → starplot-0.21.4}/docs/reference-zenithplot.md +0 -0
  177. {starplot-0.21.2 → starplot-0.21.4}/docs/robots.txt +0 -0
  178. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/data.py +0 -0
  179. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/gradients.py +0 -0
  180. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/markers.py +0 -0
  181. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/projection_list.html +0 -0
  182. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/projection_list.py +0 -0
  183. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/projections.py +0 -0
  184. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/style_explorer.html +0 -0
  185. {starplot-0.21.2 → starplot-0.21.4}/docs/scripts/style_explorer.py +0 -0
  186. {starplot-0.21.2 → starplot-0.21.4}/docs/showcase.md +0 -0
  187. {starplot-0.21.2 → starplot-0.21.4}/docs/snippets/_newsletter.html +0 -0
  188. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/color.md +0 -0
  189. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/explorer.md +0 -0
  190. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/extensions.md +0 -0
  191. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/gradients.md +0 -0
  192. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/index.md +0 -0
  193. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/layout.md +0 -0
  194. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/markers.md +0 -0
  195. {starplot-0.21.2 → starplot-0.21.4}/docs/styling/reference.md +0 -0
  196. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/01.md +0 -0
  197. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/02.md +0 -0
  198. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/03.md +0 -0
  199. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/04.md +0 -0
  200. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/05.md +0 -0
  201. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/06.md +0 -0
  202. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/07.md +0 -0
  203. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/08.md +0 -0
  204. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/09.md +0 -0
  205. {starplot-0.21.2 → starplot-0.21.4}/docs/tutorial/index.md +0 -0
  206. {starplot-0.21.2 → starplot-0.21.4}/examples/constellation.py +0 -0
  207. {starplot-0.21.2 → starplot-0.21.4}/examples/examples.py +0 -0
  208. {starplot-0.21.2 → starplot-0.21.4}/examples/galaxy.py +0 -0
  209. {starplot-0.21.2 → starplot-0.21.4}/examples/gradient.py +0 -0
  210. {starplot-0.21.2 → starplot-0.21.4}/examples/horizon_double_cluster.py +0 -0
  211. {starplot-0.21.2 → starplot-0.21.4}/examples/horizon_gradient.py +0 -0
  212. {starplot-0.21.2 → starplot-0.21.4}/examples/map_big.py +0 -0
  213. {starplot-0.21.2 → starplot-0.21.4}/examples/map_big_dipper.py +0 -0
  214. {starplot-0.21.2 → starplot-0.21.4}/examples/map_canis_major.py +0 -0
  215. {starplot-0.21.2 → starplot-0.21.4}/examples/map_carina.py +0 -0
  216. {starplot-0.21.2 → starplot-0.21.4}/examples/map_cas.py +0 -0
  217. {starplot-0.21.2 → starplot-0.21.4}/examples/map_equidistant.py +0 -0
  218. {starplot-0.21.2 → starplot-0.21.4}/examples/map_galaxy.py +0 -0
  219. {starplot-0.21.2 → starplot-0.21.4}/examples/map_milky_way_stars.py +0 -0
  220. {starplot-0.21.2 → starplot-0.21.4}/examples/map_orion.py +0 -0
  221. {starplot-0.21.2 → starplot-0.21.4}/examples/map_orthographic.py +0 -0
  222. {starplot-0.21.2 → starplot-0.21.4}/examples/map_sagittarius.py +0 -0
  223. {starplot-0.21.2 → starplot-0.21.4}/examples/map_virgo_cluster.py +0 -0
  224. {starplot-0.21.2 → starplot-0.21.4}/examples/optic_iss_transit.py +0 -0
  225. {starplot-0.21.2 → starplot-0.21.4}/examples/optic_m45.py +0 -0
  226. {starplot-0.21.2 → starplot-0.21.4}/examples/optic_orion_nebula.py +0 -0
  227. {starplot-0.21.2 → starplot-0.21.4}/examples/optic_solar_eclipse.py +0 -0
  228. {starplot-0.21.2 → starplot-0.21.4}/examples/star_chart_basic.py +0 -0
  229. {starplot-0.21.2 → starplot-0.21.4}/examples/star_chart_detail.py +0 -0
  230. {starplot-0.21.2 → starplot-0.21.4}/examples/star_chart_french.py +0 -0
  231. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/__init__.py +0 -0
  232. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/data/.keep +0 -0
  233. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/flaky.py +0 -0
  234. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/galaxy_checks.py +0 -0
  235. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/hashio.py +0 -0
  236. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/hashlock.yml +0 -0
  237. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/horizon_checks.py +0 -0
  238. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/map_checks.py +0 -0
  239. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/optic_checks.py +0 -0
  240. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/template.html +0 -0
  241. {starplot-0.21.2 → starplot-0.21.4}/hash_checks/zenith_checks.py +0 -0
  242. {starplot-0.21.2 → starplot-0.21.4}/scripts/download_test_fonts.py +0 -0
  243. {starplot-0.21.2 → starplot-0.21.4}/scripts/list_fonts.py +0 -0
  244. {starplot-0.21.2 → starplot-0.21.4}/scripts/marimo.py +0 -0
  245. {starplot-0.21.2 → starplot-0.21.4}/scripts/svg.py +0 -0
  246. {starplot-0.21.2 → starplot-0.21.4}/scripts/voronoi.py +0 -0
  247. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/cli.py +0 -0
  248. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/config.py +0 -0
  249. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/constants.py +0 -0
  250. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/coordinates.py +0 -0
  251. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/__init__.py +0 -0
  252. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/catalogs.py +0 -0
  253. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/constellations.py +0 -0
  254. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/db.py +0 -0
  255. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/dsos.py +0 -0
  256. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/ecliptic.py +0 -0
  257. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/library/readme.md +0 -0
  258. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/stars.py +0 -0
  259. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/translations.py +0 -0
  260. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/data/utils.py +0 -0
  261. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/geometry.py +0 -0
  262. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/mixins.py +0 -0
  263. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/__init__.py +0 -0
  264. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/base.py +0 -0
  265. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/comet.py +0 -0
  266. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/constellation.py +0 -0
  267. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/dso.py +0 -0
  268. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/milky_way.py +0 -0
  269. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/moon.py +0 -0
  270. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/objects.py +0 -0
  271. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/observer.py +0 -0
  272. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/optics.py +0 -0
  273. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/planet.py +0 -0
  274. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/satellite.py +0 -0
  275. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/models/sun.py +0 -0
  276. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/__init__.py +0 -0
  277. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/base.py +0 -0
  278. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/galaxy.py +0 -0
  279. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/horizon.py +0 -0
  280. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/map.py +0 -0
  281. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/optic.py +0 -0
  282. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plots/zenith.py +0 -0
  283. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/__init__.py +0 -0
  284. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/arrow.py +0 -0
  285. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/constellations.py +0 -0
  286. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/dsos.py +0 -0
  287. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/gridlines.py +0 -0
  288. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/legend.py +0 -0
  289. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/milkyway.py +0 -0
  290. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/stars.py +0 -0
  291. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/plotters/text.py +0 -0
  292. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/profile.py +0 -0
  293. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/projections.py +0 -0
  294. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/__init__.py +0 -0
  295. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/base.py +0 -0
  296. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/constants.py +0 -0
  297. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/elements.py +0 -0
  298. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/antique.yml +0 -0
  299. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/blue_dark.yml +0 -0
  300. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/blue_gold.yml +0 -0
  301. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/blue_light.yml +0 -0
  302. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/blue_medium.yml +0 -0
  303. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/blue_night.yml +0 -0
  304. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/cb_wong.yml +0 -0
  305. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/gradient_presets.yml +0 -0
  306. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/grayscale.yml +0 -0
  307. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/grayscale_dark.yml +0 -0
  308. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/horizon.yml +0 -0
  309. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/map.yml +0 -0
  310. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/nord.yml +0 -0
  311. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/optic.yml +0 -0
  312. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/publication.yml +0 -0
  313. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/ext/starplot.yml +0 -0
  314. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/gradients.py +0 -0
  315. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/helpers.py +0 -0
  316. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/styles/types.py +0 -0
  317. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/__init__.py +0 -0
  318. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/elements.py +0 -0
  319. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/fonts.py +0 -0
  320. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/layout.py +0 -0
  321. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/png.py +0 -0
  322. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/svg/symbols.py +0 -0
  323. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/utils.py +0 -0
  324. {starplot-0.21.2 → starplot-0.21.4}/src/starplot/warnings.py +0 -0
  325. {starplot-0.21.2 → starplot-0.21.4}/tests/__init__.py +0 -0
  326. {starplot-0.21.2 → starplot-0.21.4}/tests/conftest.py +0 -0
  327. {starplot-0.21.2 → starplot-0.21.4}/tests/data/__init__.py +0 -0
  328. {starplot-0.21.2 → starplot-0.21.4}/tests/data/comets.txt +0 -0
  329. {starplot-0.21.2 → starplot-0.21.4}/tests/data/test_utils.py +0 -0
  330. {starplot-0.21.2 → starplot-0.21.4}/tests/models/__init__.py +0 -0
  331. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_comets.py +0 -0
  332. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_constellation.py +0 -0
  333. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_dso.py +0 -0
  334. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_observer.py +0 -0
  335. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_optics.py +0 -0
  336. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_satellite.py +0 -0
  337. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_solar_system.py +0 -0
  338. {starplot-0.21.2 → starplot-0.21.4}/tests/models/test_star.py +0 -0
  339. {starplot-0.21.2 → starplot-0.21.4}/tests/plots/__init__.py +0 -0
  340. {starplot-0.21.2 → starplot-0.21.4}/tests/plots/test_galaxy.py +0 -0
  341. {starplot-0.21.2 → starplot-0.21.4}/tests/plots/test_horizon.py +0 -0
  342. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/__init__.py +0 -0
  343. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/test_elements.py +0 -0
  344. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/test_fonts.py +0 -0
  345. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/test_layout.py +0 -0
  346. {starplot-0.21.2 → starplot-0.21.4}/tests/svg/test_symbols.py +0 -0
  347. {starplot-0.21.2 → starplot-0.21.4}/tests/test_catalogs.py +0 -0
  348. {starplot-0.21.2 → starplot-0.21.4}/tests/test_cli.py +0 -0
  349. {starplot-0.21.2 → starplot-0.21.4}/tests/test_data.py +0 -0
  350. {starplot-0.21.2 → starplot-0.21.4}/tests/test_geometry.py +0 -0
  351. {starplot-0.21.2 → starplot-0.21.4}/tests/test_languages.py +0 -0
  352. {starplot-0.21.2 → starplot-0.21.4}/tests/test_map.py +0 -0
  353. {starplot-0.21.2 → starplot-0.21.4}/tests/test_optic.py +0 -0
  354. {starplot-0.21.2 → starplot-0.21.4}/tests/test_settings.py +0 -0
  355. {starplot-0.21.2 → starplot-0.21.4}/tests/test_styles.py +0 -0
  356. {starplot-0.21.2 → starplot-0.21.4}/tests/test_utils.py +0 -0
  357. {starplot-0.21.2 → starplot-0.21.4}/tests/utils.py +0 -0
  358. {starplot-0.21.2 → starplot-0.21.4}/tutorial/build.py +0 -0
  359. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_02.py +0 -0
  360. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_03.py +0 -0
  361. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_04.py +0 -0
  362. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_05.py +0 -0
  363. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_06.py +0 -0
  364. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_07.py +0 -0
  365. {starplot-0.21.2 → starplot-0.21.4}/tutorial/tutorial_08.py +0 -0
  366. {starplot-0.21.2 → starplot-0.21.4}/zensical.toml +0 -0
@@ -20,5 +20,5 @@ keywords:
20
20
  - graphs
21
21
  - plotting
22
22
  license: MIT
23
- version: 0.21.2
24
- date-released: '2026-10-04'
23
+ version: 0.21.4
24
+ date-released: '2026-10-12'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: starplot
3
- Version: 0.21.2
3
+ Version: 0.21.4
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 <steve@starplot.dev>
@@ -16,7 +16,7 @@ Classifier: Programming Language :: Python :: 3.14
16
16
  License-File: LICENSE
17
17
  Requires-Dist: pyproj >= 3.7.0
18
18
  Requires-Dist: numpy >= 1.26.2
19
- Requires-Dist: pandas <= 2.2.3
19
+ Requires-Dist: pandas >= 2.3.3
20
20
  Requires-Dist: pydantic >= 2.10.6
21
21
  Requires-Dist: shapely >= 2.0.1
22
22
  Requires-Dist: skyfield >= 1.41
@@ -25,7 +25,7 @@ Requires-Dist: pillow >= 10.0.0
25
25
  Requires-Dist: PyYAML >= 6.0.1
26
26
  Requires-Dist: pyarrow >= 14.0.2
27
27
  Requires-Dist: rtree >= 1.2.0
28
- Requires-Dist: pyqtree == 1.0.0
28
+ Requires-Dist: pyqtree >= 1.0.0
29
29
  Requires-Dist: requests >= 2.31.0
30
30
  Requires-Dist: duckdb >= 1.4.4
31
31
  Requires-Dist: sqlglot >= 28.9.0
@@ -10,6 +10,8 @@
10
10
  - Adds support for Python 3.14
11
11
  - [**v0.21.1**] Fixes a couple bugs with a few azimuthal projections
12
12
  - [**v0.21.2**] Adds German translation
13
+ - [**v0.21.3**] Adds support for Pandas 3+
14
+ - [**v0.21.4**] Fixes character encoding issue on exports
13
15
 
14
16
  ---
15
17
 
@@ -23,7 +23,7 @@ keywords = ["astronomy", "stars", "charts", "maps", "constellations", "sky", "pl
23
23
  dependencies = [
24
24
  "pyproj >= 3.7.0",
25
25
  "numpy >= 1.26.2",
26
- "pandas <= 2.2.3",
26
+ "pandas >= 2.3.3",
27
27
  "pydantic >= 2.10.6",
28
28
  "shapely >= 2.0.1",
29
29
  "skyfield >= 1.41",
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "PyYAML >= 6.0.1",
33
33
  "pyarrow >= 14.0.2",
34
34
  "rtree >= 1.2.0",
35
- "pyqtree == 1.0.0",
35
+ "pyqtree >= 1.0.0",
36
36
  "requests >= 2.31.0",
37
37
  "duckdb >= 1.4.4",
38
38
  "sqlglot >= 28.9.0",
@@ -2,7 +2,7 @@
2
2
 
3
3
  """Star charts and maps of the sky"""
4
4
 
5
- __version__ = "0.21.2"
5
+ __version__ = "0.21.4"
6
6
 
7
7
  import contextlib
8
8
 
@@ -1,6 +1,8 @@
1
1
  import math
2
2
  from collections.abc import Callable
3
3
 
4
+ import numpy as np
5
+
4
6
  from starplot.data.translations import translate
5
7
  from starplot.models import Star
6
8
  from starplot.styles import GradientStyle
@@ -123,7 +125,7 @@ def color_by_bv(star: Star) -> str:
123
125
 
124
126
  Color hex values from: [Mitchell Charity](http://www.vendian.org/mncharity/dir3/starcolor/details.html)
125
127
  """
126
- if math.isnan(star.bv):
128
+ if star.bv is None or np.isnan(star.bv):
127
129
  bv = 0
128
130
  else:
129
131
  bv = star.bv
@@ -79,7 +79,12 @@ class Star(CatalogObject, SkyObject):
79
79
  return pa.schema(list(base_schema) + star_fields)
80
80
 
81
81
  def __post_init__(self):
82
- self.bayer = self.bayer or None
82
+ self.name = self.name if isinstance(self.name, str) else None
83
+ self.tyc = self.tyc if isinstance(self.tyc, str) else None
84
+ self.bayer = self.bayer if isinstance(self.bayer, str) and self.bayer else None
85
+ self.bv = (
86
+ float(self.bv) if self.bv is not None and not np.isnan(self.bv) else None
87
+ )
83
88
  self.hip = (
84
89
  int(self.hip) if self.hip is not None and np.isfinite(self.hip) else None
85
90
  )
@@ -9,7 +9,7 @@ EXT_PATH = HERE / "ext"
9
9
 
10
10
 
11
11
  def load(filename: str) -> dict:
12
- with open(EXT_PATH / filename, "r") as infile:
12
+ with open(EXT_PATH / filename, "r", encoding="utf-8") as infile:
13
13
  return yaml.safe_load(infile)
14
14
 
15
15
 
@@ -535,7 +535,7 @@ class PlotStyle(BaseStyle):
535
535
  Returns:
536
536
  PlotStyle: A new instance of a PlotStyle
537
537
  """
538
- with open(filename, "r") as sfile:
538
+ with open(filename, "r", encoding="utf-8") as sfile:
539
539
  style = yaml.safe_load(sfile)
540
540
  return PlotStyle().extend(style)
541
541
 
@@ -546,7 +546,7 @@ class PlotStyle(BaseStyle):
546
546
  Args:
547
547
  filename: Filename of style file
548
548
  """
549
- with open(filename, "w") as outfile:
549
+ with open(filename, "w", encoding="utf-8") as outfile:
550
550
  style_json = self.model_dump_json()
551
551
  style_yaml = yaml.dump(json.loads(style_json))
552
552
  outfile.write(style_yaml)
@@ -1387,5 +1387,5 @@ class Canvas:
1387
1387
  # )
1388
1388
  return
1389
1389
 
1390
- with open(_filename, "w", buffering=1024 * 1024) as outfile:
1390
+ with open(_filename, "w", buffering=1024 * 1024, encoding="utf-8") as outfile:
1391
1391
  outfile.write(self.render(text_as_path=text_as_path))
@@ -1,5 +1,8 @@
1
1
  import logging
2
2
  import math
3
+ import os
4
+ import subprocess
5
+ import sys
3
6
 
4
7
  import numpy as np
5
8
  import pytest
@@ -927,3 +930,40 @@ class TestExport:
927
930
  assert content.startswith("<svg")
928
931
  assert content.rstrip().endswith("</svg>")
929
932
  assert content == canvas.render()
933
+
934
+ def test_export_svg_non_ascii_text_with_non_utf8_locale(self, tmp_path):
935
+ # GIVEN a locale whose default file encoding can't represent "\u03bc"
936
+ # (e.g. cp1252 on Windows) -- simulated by disabling Python's UTF-8
937
+ # mode and locale coercion under the C locale, which makes open() use ASCII
938
+ out_file = tmp_path / "out.svg"
939
+ script = (
940
+ "import sys\n"
941
+ "import logging\n"
942
+ "from starplot.projections import CoordinateReferenceSystem, PlateCarree\n"
943
+ "from starplot.styles import LabelStyle, PlotStyle\n"
944
+ "from starplot.svg.canvas import Canvas\n"
945
+ "canvas = Canvas(resolution=1000, projection=PlateCarree(),"
946
+ " bounds=[10, -40, 80, 40], style=PlotStyle(),"
947
+ " crs=CoordinateReferenceSystem.WNU, logger=logging.getLogger('t'))\n"
948
+ "canvas.text(30, 0, 'Mu \\u03bc Cephei', LabelStyle())\n"
949
+ "canvas.export(sys.argv[1])\n"
950
+ )
951
+ env = {
952
+ **os.environ,
953
+ "LC_ALL": "C",
954
+ "PYTHONUTF8": "0",
955
+ "PYTHONCOERCECLOCALE": "0",
956
+ }
957
+
958
+ # WHEN exporting to an svg file
959
+ result = subprocess.run(
960
+ [sys.executable, "-c", script, str(out_file)],
961
+ env=env,
962
+ check=False,
963
+ capture_output=True,
964
+ text=True,
965
+ )
966
+
967
+ # THEN it succeeds and the file is written as UTF-8
968
+ assert result.returncode == 0, result.stderr
969
+ assert "\u03bc" in out_file.read_text(encoding="utf-8")
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes