starplot 0.20.6__tar.gz → 0.21.0__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.
- {starplot-0.20.6 → starplot-0.21.0}/.dockerignore +9 -0
- {starplot-0.20.6 → starplot-0.21.0}/.github/workflows/docs.yml +11 -10
- {starplot-0.20.6 → starplot-0.21.0}/.github/workflows/release.yml +8 -7
- starplot-0.21.0/.github/workflows/test.yml +82 -0
- {starplot-0.20.6 → starplot-0.21.0}/.gitignore +21 -20
- {starplot-0.20.6 → starplot-0.21.0}/CITATION.cff +2 -2
- starplot-0.21.0/CLAUDE.md +46 -0
- {starplot-0.20.6 → starplot-0.21.0}/CONTRIBUTING.md +12 -11
- starplot-0.21.0/Dockerfile +29 -0
- starplot-0.21.0/Makefile +177 -0
- {starplot-0.20.6 → starplot-0.21.0}/PKG-INFO +29 -25
- {starplot-0.20.6 → starplot-0.21.0}/README.md +20 -18
- starplot-0.21.0/data/raw/translations/nl/constellation_names.csv +90 -0
- starplot-0.21.0/data/raw/translations/nl/dso_names.csv +153 -0
- starplot-0.21.0/data/raw/translations/nl/other_terms.csv +43 -0
- starplot-0.21.0/data/raw/translations/nl/readme.md +10 -0
- starplot-0.21.0/data/raw/translations/nl/star_names.csv +427 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-tw/readme.md +42 -42
- {starplot-0.20.6 → starplot-0.21.0}/docs/about.md +15 -4
- {starplot-0.20.6 → starplot-0.21.0}/docs/changelog.md +17 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/coming-soon.md +13 -13
- {starplot-0.20.6 → starplot-0.21.0}/docs/css/extra.css +374 -90
- {starplot-0.20.6 → starplot-0.21.0}/docs/data/dsos.md +2 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/data-sources.md +4 -3
- starplot-0.21.0/docs/examples/horizon-gradient.md +14 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples.md +54 -59
- starplot-0.21.0/docs/images/figure_layout.svg +279 -0
- starplot-0.21.0/docs/index.md +74 -0
- starplot-0.21.0/docs/installation.md +65 -0
- starplot-0.21.0/docs/migration-guides/0.21.0.md +234 -0
- starplot-0.21.0/docs/models/comet.md +10 -0
- starplot-0.21.0/docs/models/constellation.md +8 -0
- starplot-0.21.0/docs/models/dso.md +14 -0
- starplot-0.21.0/docs/models/index.md +69 -0
- starplot-0.21.0/docs/models/moon.md +8 -0
- starplot-0.21.0/docs/models/object-list.md +10 -0
- starplot-0.21.0/docs/models/observer.md +30 -0
- starplot-0.21.0/docs/models/optics.md +43 -0
- starplot-0.21.0/docs/models/planet.md +8 -0
- starplot-0.21.0/docs/models/satellite.md +12 -0
- starplot-0.21.0/docs/models/star.md +8 -0
- starplot-0.21.0/docs/models/sun.md +8 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/object-names/dsos.md +6 -8
- starplot-0.21.0/docs/reference-callables.md +135 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-collisions.md +10 -8
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-galaxyplot.md +2 -1
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-horizonplot.md +2 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-localization.md +7 -5
- starplot-0.21.0/docs/reference-mapplot.md +13 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-opticplot.md +2 -1
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-positions.md +4 -4
- starplot-0.21.0/docs/reference-projections.md +114 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-selecting-objects.md +2 -1
- starplot-0.21.0/docs/reference-settings.md +105 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-zenithplot.md +2 -0
- starplot-0.21.0/docs/scripts/gradients.py +52 -0
- starplot-0.21.0/docs/scripts/markers.py +80 -0
- starplot-0.21.0/docs/scripts/projection_list.html +35 -0
- starplot-0.21.0/docs/scripts/projection_list.py +180 -0
- starplot-0.21.0/docs/scripts/projections.py +171 -0
- starplot-0.21.0/docs/scripts/style_explorer.html +545 -0
- starplot-0.21.0/docs/scripts/style_explorer.py +427 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/showcase.md +3 -1
- starplot-0.21.0/docs/snippets/_newsletter.html +22 -0
- starplot-0.21.0/docs/styling/color.md +134 -0
- starplot-0.21.0/docs/styling/explorer.md +1 -0
- starplot-0.21.0/docs/styling/extensions.md +197 -0
- starplot-0.21.0/docs/styling/gradients.md +109 -0
- starplot-0.21.0/docs/styling/index.md +205 -0
- starplot-0.21.0/docs/styling/layout.md +35 -0
- starplot-0.21.0/docs/styling/markers.md +96 -0
- starplot-0.21.0/docs/styling/reference.md +90 -0
- starplot-0.21.0/docs/tutorial/01.md +35 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/02.md +6 -7
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/03.md +6 -6
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/04.md +5 -5
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/05.md +7 -7
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/06.md +4 -4
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/07.md +5 -4
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/08.md +6 -5
- {starplot-0.20.6 → starplot-0.21.0}/docs/tutorial/09.md +14 -8
- starplot-0.21.0/docs/tutorial/index.md +24 -0
- starplot-0.21.0/examples/constellation.py +75 -0
- {starplot-0.20.6 → starplot-0.21.0}/examples/examples.py +4 -2
- starplot-0.21.0/examples/galaxy.py +36 -0
- {starplot-0.20.6 → starplot-0.21.0}/examples/galaxy_custom_marker.py +12 -12
- starplot-0.21.0/examples/gradient.py +39 -0
- {starplot-0.20.6 → starplot-0.21.0}/examples/horizon_double_cluster.py +7 -9
- starplot-0.21.0/examples/horizon_gradient.py +57 -0
- {starplot-0.20.6 → starplot-0.21.0}/examples/horizon_sgr.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_big.py +1 -1
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_big_dipper.py +7 -5
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_canis_major.py +3 -4
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_carina.py +10 -26
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_cas.py +2 -3
- starplot-0.21.0/examples/map_equidistant.py +56 -0
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_galaxy.py +14 -16
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_milky_way_stars.py +6 -9
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_orion.py +6 -5
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_orthographic.py +10 -10
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_sagittarius.py +5 -6
- {starplot-0.20.6 → starplot-0.21.0}/examples/map_virgo_cluster.py +10 -7
- {starplot-0.20.6 → starplot-0.21.0}/examples/optic_iss_transit.py +11 -11
- {starplot-0.20.6 → starplot-0.21.0}/examples/optic_m45.py +4 -7
- {starplot-0.20.6 → starplot-0.21.0}/examples/optic_orion_nebula.py +2 -3
- {starplot-0.20.6 → starplot-0.21.0}/examples/optic_solar_eclipse.py +4 -5
- {starplot-0.20.6 → starplot-0.21.0}/examples/star_chart_basic.py +2 -3
- {starplot-0.20.6 → starplot-0.21.0}/examples/star_chart_detail.py +12 -14
- {starplot-0.20.6 → starplot-0.21.0}/examples/star_chart_french.py +2 -3
- starplot-0.21.0/hash_checks/flaky.py +7 -0
- starplot-0.21.0/hash_checks/galaxy_checks.py +38 -0
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/hashio.py +63 -25
- starplot-0.21.0/hash_checks/hashlock.yml +220 -0
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/horizon_checks.py +22 -8
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/map_checks.py +110 -84
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/optic_checks.py +24 -22
- starplot-0.21.0/hash_checks/template.html +273 -0
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/zenith_checks.py +14 -20
- {starplot-0.20.6 → starplot-0.21.0}/pyproject.toml +21 -16
- starplot-0.21.0/scripts/download_test_fonts.py +37 -0
- starplot-0.21.0/scripts/list_fonts.py +201 -0
- starplot-0.21.0/scripts/marimo.py +115 -0
- starplot-0.21.0/scripts/svg.py +175 -0
- {starplot-0.20.6 → starplot-0.21.0}/scripts/voronoi.py +10 -10
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/__init__.py +27 -28
- starplot-0.21.0/src/starplot/callables.py +203 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/cli.py +5 -3
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/config.py +9 -4
- starplot-0.21.0/src/starplot/constants.py +14 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/__init__.py +7 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/catalogs.py +14 -12
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/constellations.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/db.py +1 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/dsos.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/ecliptic.py +5 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/library/constellation_names.parquet +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/library/dso_names.parquet +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/library/star_designations.parquet +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/stars.py +4 -4
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/translations.py +48 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/utils.py +4 -2
- starplot-0.21.0/src/starplot/geometry.py +609 -0
- starplot-0.21.0/src/starplot/mixins.py +136 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/__init__.py +11 -11
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/base.py +2 -3
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/comet.py +8 -8
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/constellation.py +7 -7
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/dso.py +21 -16
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/milky_way.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/moon.py +4 -4
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/objects.py +7 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/observer.py +17 -19
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/optics.py +31 -85
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/planet.py +4 -5
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/satellite.py +4 -4
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/star.py +24 -19
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/models/sun.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plots/__init__.py +4 -4
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plots/base.py +448 -530
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plots/galaxy.py +111 -156
- starplot-0.21.0/src/starplot/plots/horizon.py +385 -0
- starplot-0.21.0/src/starplot/plots/map.py +334 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plots/optic.py +87 -215
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plots/zenith.py +77 -107
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/__init__.py +6 -5
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/arrow.py +52 -61
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/constellations.py +83 -100
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/dsos.py +143 -90
- starplot-0.21.0/src/starplot/plotters/gridlines.py +91 -0
- starplot-0.21.0/src/starplot/plotters/legend.py +82 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/milkyway.py +31 -15
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/stars.py +80 -94
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/plotters/text.py +319 -330
- starplot-0.21.0/src/starplot/profile.py +16 -0
- starplot-0.21.0/src/starplot/projections.py +370 -0
- starplot-0.21.0/src/starplot/styles/__init__.py +9 -0
- starplot-0.21.0/src/starplot/styles/base.py +19 -0
- starplot-0.21.0/src/starplot/styles/constants.py +102 -0
- starplot-0.21.0/src/starplot/styles/elements.py +617 -0
- starplot-0.21.0/src/starplot/styles/ext/antique.yml +178 -0
- starplot-0.21.0/src/starplot/styles/ext/blue_dark.yml +163 -0
- starplot-0.21.0/src/starplot/styles/ext/blue_gold.yml +148 -0
- starplot-0.21.0/src/starplot/styles/ext/blue_light.yml +119 -0
- starplot-0.21.0/src/starplot/styles/ext/blue_medium.yml +142 -0
- starplot-0.21.0/src/starplot/styles/ext/blue_night.yml +184 -0
- starplot-0.21.0/src/starplot/styles/ext/cb_wong.yml +122 -0
- starplot-0.21.0/src/starplot/styles/ext/grayscale.yml +89 -0
- starplot-0.21.0/src/starplot/styles/ext/grayscale_dark.yml +134 -0
- starplot-0.21.0/src/starplot/styles/ext/horizon.yml +5 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/styles/ext/map.yml +3 -3
- starplot-0.21.0/src/starplot/styles/ext/nord.yml +158 -0
- starplot-0.21.0/src/starplot/styles/ext/optic.yml +30 -0
- starplot-0.21.0/src/starplot/styles/ext/publication.yml +8 -0
- starplot-0.21.0/src/starplot/styles/ext/starplot.yml +181 -0
- starplot-0.21.0/src/starplot/styles/extensions.py +95 -0
- starplot-0.21.0/src/starplot/styles/gradients.py +101 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/styles/helpers.py +5 -6
- starplot-0.21.0/src/starplot/styles/plot.py +590 -0
- starplot-0.21.0/src/starplot/styles/types.py +48 -0
- starplot-0.21.0/src/starplot/svg/__init__.py +2 -0
- starplot-0.21.0/src/starplot/svg/canvas.py +1333 -0
- starplot-0.21.0/src/starplot/svg/elements.py +356 -0
- starplot-0.21.0/src/starplot/svg/fonts.py +278 -0
- starplot-0.21.0/src/starplot/svg/layout.py +244 -0
- starplot-0.21.0/src/starplot/svg/png.py +16 -0
- starplot-0.21.0/src/starplot/svg/symbols.py +296 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/utils.py +63 -72
- starplot-0.21.0/src/starplot/warnings.py +9 -0
- starplot-0.21.0/tests/conftest.py +36 -0
- starplot-0.21.0/tests/data/test_utils.py +106 -0
- {starplot-0.20.6/tests → starplot-0.21.0/tests/models}/test_comets.py +6 -4
- starplot-0.21.0/tests/models/test_constellation.py +22 -0
- starplot-0.21.0/tests/models/test_dso.py +32 -0
- {starplot-0.20.6/tests → starplot-0.21.0/tests/models}/test_observer.py +1 -2
- starplot-0.21.0/tests/models/test_optics.py +160 -0
- {starplot-0.20.6/tests → starplot-0.21.0/tests/models}/test_satellite.py +3 -3
- starplot-0.21.0/tests/models/test_solar_system.py +98 -0
- starplot-0.21.0/tests/models/test_star.py +49 -0
- starplot-0.21.0/tests/plots/__init__.py +0 -0
- starplot-0.21.0/tests/plots/test_galaxy.py +120 -0
- starplot-0.21.0/tests/plots/test_horizon.py +235 -0
- starplot-0.21.0/tests/svg/__init__.py +0 -0
- starplot-0.21.0/tests/svg/test_canvas.py +888 -0
- starplot-0.21.0/tests/svg/test_elements.py +341 -0
- starplot-0.21.0/tests/svg/test_fonts.py +171 -0
- starplot-0.21.0/tests/svg/test_layout.py +153 -0
- starplot-0.21.0/tests/svg/test_symbols.py +233 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_catalogs.py +1 -1
- starplot-0.21.0/tests/test_cli.py +115 -0
- starplot-0.21.0/tests/test_data.py +18 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_geometry.py +33 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_languages.py +4 -2
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_map.py +2 -2
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_optic.py +2 -22
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_settings.py +5 -5
- {starplot-0.20.6 → starplot-0.21.0}/tests/test_styles.py +14 -15
- starplot-0.21.0/tests/test_utils.py +145 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/utils.py +1 -3
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/build.py +1 -1
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_02.py +1 -2
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_03.py +12 -13
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_04.py +11 -10
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_05.py +2 -3
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_06.py +7 -7
- {starplot-0.20.6 → starplot-0.21.0}/tutorial/tutorial_07.py +13 -6
- starplot-0.21.0/tutorial/tutorial_08.py +61 -0
- starplot-0.21.0/zensical.toml +151 -0
- starplot-0.20.6/.github/workflows/test.yml +0 -59
- starplot-0.20.6/Dockerfile +0 -27
- starplot-0.20.6/Makefile +0 -152
- starplot-0.20.6/docs/examples/horizon-gradient.md +0 -16
- starplot-0.20.6/docs/examples/optic-moon-saturn.md +0 -12
- starplot-0.20.6/docs/index.md +0 -71
- starplot-0.20.6/docs/installation.md +0 -48
- starplot-0.20.6/docs/reference-callables.md +0 -92
- starplot-0.20.6/docs/reference-mapplot.md +0 -94
- starplot-0.20.6/docs/reference-models.md +0 -152
- starplot-0.20.6/docs/reference-settings.md +0 -55
- starplot-0.20.6/docs/reference-styling.md +0 -530
- starplot-0.20.6/docs/snippets/_newsletter.html +0 -25
- starplot-0.20.6/docs/tutorial/01.md +0 -35
- starplot-0.20.6/docs/tutorial.md +0 -23
- starplot-0.20.6/examples/horizon_gradient.py +0 -47
- starplot-0.20.6/examples/optic_moon_saturn.py +0 -36
- starplot-0.20.6/hash_checks/hashlock.yml +0 -164
- starplot-0.20.6/hash_checks/template.html +0 -165
- starplot-0.20.6/mkdocs.yml +0 -110
- starplot-0.20.6/scripts/ecliptic.py +0 -37
- starplot-0.20.6/scripts/marimo.py +0 -76
- starplot-0.20.6/src/starplot/callables.py +0 -176
- starplot-0.20.6/src/starplot/geometry.py +0 -319
- starplot-0.20.6/src/starplot/mixins.py +0 -360
- starplot-0.20.6/src/starplot/plots/horizon.py +0 -543
- starplot-0.20.6/src/starplot/plots/map.py +0 -515
- starplot-0.20.6/src/starplot/plotters/debug.py +0 -21
- starplot-0.20.6/src/starplot/plotters/experimental.py +0 -722
- starplot-0.20.6/src/starplot/plotters/gradients.py +0 -153
- starplot-0.20.6/src/starplot/plotters/legend.py +0 -253
- starplot-0.20.6/src/starplot/profile.py +0 -16
- starplot-0.20.6/src/starplot/projections.py +0 -184
- starplot-0.20.6/src/starplot/styles/__init__.py +0 -6
- starplot-0.20.6/src/starplot/styles/base.py +0 -1344
- starplot-0.20.6/src/starplot/styles/ext/antique.yml +0 -175
- starplot-0.20.6/src/starplot/styles/ext/blue_dark.yml +0 -163
- starplot-0.20.6/src/starplot/styles/ext/blue_gold.yml +0 -147
- starplot-0.20.6/src/starplot/styles/ext/blue_light.yml +0 -123
- starplot-0.20.6/src/starplot/styles/ext/blue_medium.yml +0 -142
- starplot-0.20.6/src/starplot/styles/ext/blue_night.yml +0 -185
- starplot-0.20.6/src/starplot/styles/ext/cb_wong.yml +0 -124
- starplot-0.20.6/src/starplot/styles/ext/color_print.yml +0 -111
- starplot-0.20.6/src/starplot/styles/ext/grayscale.yml +0 -94
- starplot-0.20.6/src/starplot/styles/ext/grayscale_dark.yml +0 -136
- starplot-0.20.6/src/starplot/styles/ext/nord.yml +0 -158
- starplot-0.20.6/src/starplot/styles/ext/optic.yml +0 -20
- starplot-0.20.6/src/starplot/styles/ext/publication.yml +0 -8
- starplot-0.20.6/src/starplot/styles/extensions.py +0 -129
- starplot-0.20.6/src/starplot/styles/fonts-library/gfs-didot/DESCRIPTION.en_us.html +0 -9
- starplot-0.20.6/src/starplot/styles/fonts-library/gfs-didot/GFSDidot-Regular.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/gfs-didot/METADATA.pb +0 -16
- starplot-0.20.6/src/starplot/styles/fonts-library/gfs-didot/OFL.txt +0 -94
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-Bold.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-BoldItalic.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-ExtraBold.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-ExtraLight.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-ExtraLightItalic.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-Italic.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-Light.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-LightItalic.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-Regular.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-SemiBold.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/Inter-SemiBoldItalic.ttf +0 -0
- starplot-0.20.6/src/starplot/styles/fonts-library/inter/LICENSE.txt +0 -92
- starplot-0.20.6/src/starplot/styles/fonts.py +0 -15
- starplot-0.20.6/src/starplot/styles/markers.py +0 -308
- starplot-0.20.6/src/starplot/warnings.py +0 -21
- starplot-0.20.6/tests/test_data.py +0 -14
- starplot-0.20.6/tests/test_models.py +0 -197
- starplot-0.20.6/tests/test_stars.py +0 -10
- starplot-0.20.6/tests/test_utils.py +0 -86
- starplot-0.20.6/tutorial/tutorial_08.py +0 -40
- {starplot-0.20.6 → starplot-0.21.0}/.github/FUNDING.yml +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/.github/workflows/archives.yaml +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/CODE_OF_CONDUCT.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/LICENSE +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/constellation_borders.json +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/constellations.json +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/milkyway.json +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/star_designations.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/en-us/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/en-us/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/en-us/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/en-us/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/es/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/es/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/es/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/es/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fa/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fa/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fa/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fa/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fr/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fr/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fr/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/fr/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/it/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/it/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/it/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/it/readme.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/it/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/lt/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/lt/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/lt/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/lt/readme.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/lt/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/readme.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-cn/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-cn/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-cn/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-tw/dso_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-tw/other_terms.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/raw/translations/zh-tw/star_names.csv +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/readme.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/constellation_names.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/data_settings.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/db.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/dso_names.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/star_designations.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/data/scripts/translations.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/custom/main.html +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/data/building.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/data/constellations.md +0 -0
- /starplot-0.20.6/docs/data/overview.md → /starplot-0.21.0/docs/data/index.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/data/stars.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/horizon-double-cluster.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/horizon-sgr.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-big-dipper.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-big.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-canis-major.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-carina-nebula.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-cassiopeia.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-custom-marker.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-galaxy.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-milky-way-stars.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-orion.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-orthographic.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-sagittarius.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/map-virgo-cluster.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/optic-iss-transit.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/optic-m45.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/optic-orion.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/optic-solar-eclipse.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/star-chart-basic.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/star-chart-detail.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/examples/star-chart-french.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/celestial-globe.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/cover-front-sm-360.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/discord.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/examples/.keep +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/favicon.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-2400px.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/banner.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/banner.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/banner.vectornator +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/logo.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/logo.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/logo.vectornator +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo-original/logo2.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo2.vectornator +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/logo500.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/mono-2400px.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/mono.png +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/mono.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/star.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/starplot-header.svg +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/images/tutorial/.keep +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/license.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/migration-guides/0.16.0.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/object-names/constellations.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/object-names/stars.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/reference-ongc.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/docs/robots.txt +0 -0
- /starplot-0.20.6/data/scripts/docdata.py → /starplot-0.21.0/docs/scripts/data.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/__init__.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/hash_checks/data/.keep +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/coordinates.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/data/library/readme.md +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/src/starplot/styles/ext/gradient_presets.yml +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/__init__.py +0 -0
- /starplot-0.20.6/docs/data-explorer.md → /starplot-0.21.0/tests/data/__init__.py +0 -0
- {starplot-0.20.6 → starplot-0.21.0}/tests/data/comets.txt +0 -0
- /starplot-0.20.6/tests/data/.keep → /starplot-0.21.0/tests/models/__init__.py +0 -0
|
@@ -13,12 +13,16 @@ jobs:
|
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
15
|
- uses: actions/checkout@v6
|
|
16
|
+
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
16
17
|
|
|
17
|
-
- name:
|
|
18
|
-
run: make
|
|
18
|
+
- name: Install dependencies
|
|
19
|
+
run: make install env
|
|
19
20
|
|
|
21
|
+
- name: Download test fonts
|
|
22
|
+
run: make download-test-fonts
|
|
23
|
+
|
|
20
24
|
- name: Build sky.db
|
|
21
|
-
run: make db CI=true
|
|
25
|
+
run: make db setup CI=true
|
|
22
26
|
|
|
23
27
|
- name: Build Examples
|
|
24
28
|
run: make examples
|
|
@@ -26,23 +30,20 @@ jobs:
|
|
|
26
30
|
- name: Build Tutorial
|
|
27
31
|
run: make tutorial
|
|
28
32
|
|
|
29
|
-
- name: Build
|
|
30
|
-
run: make
|
|
31
|
-
|
|
32
|
-
- name: Build Docs
|
|
33
|
-
run: make docs-build
|
|
33
|
+
- name: Build Documentation
|
|
34
|
+
run: make docs
|
|
34
35
|
|
|
35
36
|
- name: Set Version Environment Variable
|
|
36
37
|
run: |
|
|
37
38
|
echo "STARPLOT_VERSION=$(make version)" >> "$GITHUB_ENV"
|
|
38
39
|
|
|
39
40
|
- id: 'auth'
|
|
40
|
-
uses: 'google-github-actions/auth@
|
|
41
|
+
uses: 'google-github-actions/auth@v3'
|
|
41
42
|
with:
|
|
42
43
|
credentials_json: '${{ secrets.GCP_CREDENTIALS }}'
|
|
43
44
|
|
|
44
45
|
- name: 'Set up Google Cloud SDK'
|
|
45
|
-
uses: 'google-github-actions/setup-gcloud@
|
|
46
|
+
uses: 'google-github-actions/setup-gcloud@v3'
|
|
46
47
|
with:
|
|
47
48
|
version: '>= 363.0.0'
|
|
48
49
|
|
|
@@ -10,10 +10,14 @@ jobs:
|
|
|
10
10
|
runs-on: ubuntu-24.04
|
|
11
11
|
steps:
|
|
12
12
|
- uses: actions/checkout@v6
|
|
13
|
+
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
13
14
|
|
|
14
|
-
- name:
|
|
15
|
-
run: make
|
|
15
|
+
- name: Install dependencies
|
|
16
|
+
run: make install env
|
|
16
17
|
|
|
18
|
+
- name: Download test fonts
|
|
19
|
+
run: make download-test-fonts
|
|
20
|
+
|
|
17
21
|
- name: Check Lint
|
|
18
22
|
run: make lint CI=true
|
|
19
23
|
|
|
@@ -21,13 +25,10 @@ jobs:
|
|
|
21
25
|
run: make format CI=true ARGS=--check
|
|
22
26
|
|
|
23
27
|
- name: Build sky.db
|
|
24
|
-
run: make db CI=true
|
|
28
|
+
run: make db setup CI=true
|
|
25
29
|
|
|
26
30
|
- name: Run Tests
|
|
27
|
-
run: make test CI=true
|
|
28
|
-
|
|
29
|
-
- name: Check Image Hashes
|
|
30
|
-
run: make check-hashes CI=true
|
|
31
|
+
run: make test check-hashes CI=true
|
|
31
32
|
|
|
32
33
|
- name: Build
|
|
33
34
|
run: make flit-build
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Run Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
types: [opened, reopened, synchronize]
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
- develop
|
|
10
|
+
schedule:
|
|
11
|
+
- cron: '0 12 * * *' # 1200 UTC = 0500 PT
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
test-lint-build:
|
|
15
|
+
runs-on: ubuntu-24.04
|
|
16
|
+
permissions:
|
|
17
|
+
contents: 'read'
|
|
18
|
+
id-token: 'write'
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
|
23
|
+
steps:
|
|
24
|
+
- uses: actions/checkout@v6
|
|
25
|
+
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: make install env
|
|
28
|
+
- name: Download test fonts
|
|
29
|
+
run: make download-test-fonts
|
|
30
|
+
- name: Build sky.db
|
|
31
|
+
run: make db setup CI=true
|
|
32
|
+
- name: Check Lint
|
|
33
|
+
run: make lint CI=true
|
|
34
|
+
- name: Check Format
|
|
35
|
+
run: make format CI=true ARGS=--check
|
|
36
|
+
- name: Run Tests
|
|
37
|
+
id: run-tests
|
|
38
|
+
run: make test-python-version PYTHON_VERSION=${{ matrix.python-version }} CI=true
|
|
39
|
+
- name: Run hash checks
|
|
40
|
+
id: run-hash-checks
|
|
41
|
+
run: make check-hashes-python-version PYTHON_VERSION=${{ matrix.python-version }} CI=true
|
|
42
|
+
- name: Build examples
|
|
43
|
+
if: always()
|
|
44
|
+
run: make examples
|
|
45
|
+
- name: Build tutorial
|
|
46
|
+
if: always()
|
|
47
|
+
run: make tutorial
|
|
48
|
+
- name: Build docs
|
|
49
|
+
if: always()
|
|
50
|
+
run: make docs
|
|
51
|
+
- name: Set Short SHA
|
|
52
|
+
if: always()
|
|
53
|
+
run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
|
|
54
|
+
- id: 'auth'
|
|
55
|
+
if: always()
|
|
56
|
+
uses: 'google-github-actions/auth@v3'
|
|
57
|
+
with:
|
|
58
|
+
credentials_json: '${{ secrets.GCP_CREDENTIALS }}'
|
|
59
|
+
- name: 'Set up Google Cloud SDK'
|
|
60
|
+
if: always()
|
|
61
|
+
uses: 'google-github-actions/setup-gcloud@v3'
|
|
62
|
+
with:
|
|
63
|
+
version: '>= 363.0.0'
|
|
64
|
+
- name: 'Upload docs on failure'
|
|
65
|
+
if: always()
|
|
66
|
+
run: 'gsutil -m rsync -R -d site gs://archives.starplot.dev/test-runs/$SHORT_SHA/${{ matrix.python-version }}/docs/'
|
|
67
|
+
- name: 'Upload hash check results on failure'
|
|
68
|
+
if: always()
|
|
69
|
+
run: |
|
|
70
|
+
gsutil cp hash_checks/results.html gs://archives.starplot.dev/test-runs/$SHORT_SHA/${{ matrix.python-version }}/hash-checks/results.html
|
|
71
|
+
gsutil -m rsync -r hash_checks/data gs://archives.starplot.dev/test-runs/$SHORT_SHA/${{ matrix.python-version }}/hash-checks/data/
|
|
72
|
+
- name: 'Print results URLs'
|
|
73
|
+
if: always()
|
|
74
|
+
run: |
|
|
75
|
+
BASE="https://archives.starplot.dev/test-runs/$SHORT_SHA/${{ matrix.python-version }}"
|
|
76
|
+
echo "docs: $BASE/docs/index.html"
|
|
77
|
+
echo "hash checks: $BASE/hash-checks/results.html"
|
|
78
|
+
echo "### Test run artifacts (Python ${{ matrix.python-version }})" >> "$GITHUB_STEP_SUMMARY"
|
|
79
|
+
echo "- [docs]($BASE/docs/index.html)" >> "$GITHUB_STEP_SUMMARY"
|
|
80
|
+
echo "- [hash checks]($BASE/hash-checks/results.html)" >> "$GITHUB_STEP_SUMMARY"
|
|
81
|
+
- name: Build PIP Package
|
|
82
|
+
run: make flit-build
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
# scratchpad for local development
|
|
2
|
-
scripts/scratchpad.py
|
|
3
|
-
|
|
4
1
|
.claude/
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
.env-backup
|
|
8
|
-
e2e/
|
|
3
|
+
__marimo__/
|
|
9
4
|
|
|
10
5
|
# astronomy data
|
|
11
6
|
*.bsp
|
|
@@ -17,46 +12,52 @@ duckdb-extensions
|
|
|
17
12
|
# Sky Object Database
|
|
18
13
|
# ignore this because it's large and created on release
|
|
19
14
|
sky.db
|
|
20
|
-
*.parquet
|
|
21
15
|
gaia*/
|
|
22
16
|
|
|
23
|
-
# Catalogs
|
|
17
|
+
# Data Catalogs
|
|
24
18
|
*.parquet
|
|
19
|
+
*.csv.gz
|
|
25
20
|
|
|
26
21
|
# Data Folder
|
|
22
|
+
data/fonts/*
|
|
27
23
|
data/build/*
|
|
28
24
|
!data/build/.keep
|
|
29
|
-
data/fonts/*
|
|
30
|
-
|
|
31
|
-
# Big Sky Catalog
|
|
32
|
-
# we ignore this because of its size (50+ MB)
|
|
33
|
-
bigsky.*.csv.gz
|
|
34
|
-
bigsky*.parquet
|
|
35
25
|
|
|
26
|
+
# Hash check results
|
|
36
27
|
hash_checks/data/*.png
|
|
37
28
|
hash_checks/results.html
|
|
38
29
|
|
|
30
|
+
# E2E test results
|
|
31
|
+
e2e/actual/
|
|
32
|
+
|
|
33
|
+
# local development scripts etc
|
|
34
|
+
/plots/
|
|
35
|
+
/claude/
|
|
39
36
|
.tmp/
|
|
40
|
-
temp*
|
|
37
|
+
scripts/temp*
|
|
41
38
|
temp.py
|
|
42
39
|
temp/
|
|
43
|
-
# raw/
|
|
44
40
|
scripts/temp/
|
|
45
|
-
|
|
41
|
+
scripts/scratchpad.py
|
|
46
42
|
scripts/__marimo__/
|
|
47
43
|
|
|
48
|
-
# Documentation Generated Files
|
|
44
|
+
# Documentation - Generated Files
|
|
49
45
|
examples/*.png
|
|
46
|
+
examples/*.svg
|
|
50
47
|
examples/*.jpg
|
|
51
48
|
examples/*.svg
|
|
52
49
|
docs/images/examples/*.png
|
|
50
|
+
docs/images/examples/*.svg
|
|
53
51
|
docs/images/examples/*.jpg
|
|
54
52
|
docs/images/examples/*.svg
|
|
53
|
+
docs/images/reference/*.png
|
|
54
|
+
docs/images/reference/*.svg
|
|
55
|
+
docs/images/reference/*.jpg
|
|
56
|
+
docs/images/reference/*.html
|
|
55
57
|
tutorial/*.png
|
|
56
58
|
tutorial/*.svg
|
|
57
59
|
docs/images/tutorial/*.png
|
|
58
60
|
docs/images/tutorial/*.svg
|
|
59
|
-
docs/images/reference/*.*
|
|
60
61
|
docs/data/*.json
|
|
61
62
|
|
|
62
63
|
# Profiling files
|
|
@@ -155,7 +156,7 @@ ipython_config.py
|
|
|
155
156
|
__pypackages__/
|
|
156
157
|
|
|
157
158
|
# Environments
|
|
158
|
-
.env
|
|
159
|
+
.env*
|
|
159
160
|
.venv
|
|
160
161
|
env/
|
|
161
162
|
venv/
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
## Project
|
|
2
|
+
Starplot is a Python library for creating star charts and maps of the sky.
|
|
3
|
+
|
|
4
|
+
## Important Dependencies
|
|
5
|
+
- Python
|
|
6
|
+
- pyproj
|
|
7
|
+
- skyfield
|
|
8
|
+
- shapely
|
|
9
|
+
- pydantic
|
|
10
|
+
- astropy
|
|
11
|
+
- ibis-framework
|
|
12
|
+
- fonttools
|
|
13
|
+
- cairosvg
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
- `src/` — All source code for the distributed Starplot library
|
|
17
|
+
- `tests/` — All unit tests
|
|
18
|
+
- `hash_checks/` — Image hash tests that confirm plots are created correctly
|
|
19
|
+
- `examples/` — Example code for various plots, used on the documentation website
|
|
20
|
+
- `tutorial/` - Code for the tutorial, used on the documentation website
|
|
21
|
+
- `docs/` — Documentation files (using Zensical for building)
|
|
22
|
+
- `data/` - Raw data for star names and translations
|
|
23
|
+
- `plots/` - Scratch code for local development
|
|
24
|
+
|
|
25
|
+
## Commands
|
|
26
|
+
- Test: `make test`
|
|
27
|
+
- Format: `make format`
|
|
28
|
+
- Lint: `make lint`
|
|
29
|
+
|
|
30
|
+
## Verification
|
|
31
|
+
After every change, run in this order:
|
|
32
|
+
1. [Test command] — fix failing tests if they're failing because of your change
|
|
33
|
+
2. [Format command] - fix formatting
|
|
34
|
+
3. [Lint command] — fix lint errors
|
|
35
|
+
DO NOT run the hash checks unless specifically told to do so
|
|
36
|
+
|
|
37
|
+
## Conventions
|
|
38
|
+
- When creating plots for research or investigating an issue:
|
|
39
|
+
- Put the source code in the `claude/` directory
|
|
40
|
+
- Put the output of the final plot in `claude/output/`
|
|
41
|
+
- Prefer SVG output, unless told otherwise
|
|
42
|
+
- Avoid comments that only describe what the code does (unless it's a docstring for a function)
|
|
43
|
+
- When it's not obvious why code does something a certain way, then a comment explaining _why_ should be added
|
|
44
|
+
- When writing tests, avoid mocking things when possible.
|
|
45
|
+
- HTTP requests should always be mocked in tests, but their mocked response should mimic the data structure of the real response
|
|
46
|
+
- When finishing a code task, include a bulleted list of files you modified and make them links to open in VSCode
|
|
@@ -18,33 +18,34 @@ If you're new to contributing to open source projects or git in general, then he
|
|
|
18
18
|
2. Clone the repository to your local machine
|
|
19
19
|
3. Create a new branch on your forked version
|
|
20
20
|
4. Commit changes to your fork's branch
|
|
21
|
-
5. Open a pull request from your fork's branch into Starplot's `
|
|
21
|
+
5. Open a pull request from your fork's branch into Starplot's `main` branch ([here's an example](https://github.com/steveberardi/starplot/pull/89))
|
|
22
22
|
6. Wait for someone to review your PR (usually a few days to a week)
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
## Getting Started
|
|
26
26
|
|
|
27
|
-
The repository has a
|
|
28
|
-
|
|
29
|
-
- `Makefile` with commands for various tasks (running tests, etc)
|
|
30
|
-
- `Dockerfile` for running Starplot in an isolated environment
|
|
31
|
-
- `scripts/scratchpad.py` for running scratch code
|
|
27
|
+
The repository has a `Makefile` with commands for various tasks (installing dependencies, running tests, etc). These should make it easier to get things running.
|
|
32
28
|
|
|
33
29
|
When you're new to a codebase it's usually good to start by just checking out the code, building the development environment and running the tests. So, here's how to do that:
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
0. Install system dependencies:
|
|
32
|
+
- **uv**: `pip install uv` if you don't already have `uv` installed
|
|
33
|
+
- **cairo**: [See Starplot install docs for details](https://starplot.dev/installation/)
|
|
34
|
+
1. `make install` will install all dependencies (including development requirements) in a local virtual environment
|
|
35
|
+
2. `make dev` will build the object name databases, download object catalogs, and download required fonts
|
|
36
|
+
3. `make test` will run all the unit tests inside the virtual environment
|
|
37
|
+
4. `make check-hashes` will run all the image hash checks and create an HTML file with the results (more on this below)
|
|
38
38
|
|
|
39
39
|
There are also a few other `make` commands that are useful when developing locally:
|
|
40
40
|
|
|
41
41
|
- `make marimo` will run a marimo edit session with `scripts/marimo.py` so you can quickly test out code and see its results in a [marimo notebook](https://marimo.io/)
|
|
42
|
-
- `make scratchpad` will run `scripts/scratchpad.py
|
|
42
|
+
- `make scratchpad` will run `scripts/scratchpad.py`. The `scratchpad.py` file is not checked in to the repo (so you'll have to create it on your machine), but it's a way to run code with the current state of Starplot on your machine -- very helpful when trying things out.
|
|
43
43
|
- `make profile` will run `scripts/scratchpad.py` through Python's [built-in profiler](https://docs.python.org/3/library/profile.html#module-cProfile) and then start a [snakeviz](https://jiffyclub.github.io/snakeviz/) webserver locally to let you explore the call stack and see runtimes of everything. This can be very helpful when trying to find bottlenecks in code.
|
|
44
|
-
- `make shell` will open a Python shell on the Docker container
|
|
45
44
|
- `make format` will format the code with our standard formatter
|
|
46
45
|
- `make lint` will check for lint (e.g. unused imports) and `make lint ARGS=--fix` can usually autofix things
|
|
47
46
|
- `make docs-serve` will build the docs and start a local webserver for them
|
|
47
|
+
- `make examples` and `make tutorial` will build images for those sections of the documentation
|
|
48
|
+
- `make docs` will build all the other documentation assets and clear the cache
|
|
48
49
|
|
|
49
50
|
## Tests
|
|
50
51
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
ARG PYTHON_VERSION=3.12.14
|
|
2
|
+
FROM python:${PYTHON_VERSION}-trixie
|
|
3
|
+
|
|
4
|
+
WORKDIR /starplot
|
|
5
|
+
|
|
6
|
+
COPY . .
|
|
7
|
+
|
|
8
|
+
ENV UV_PROJECT_ENVIRONMENT=/usr/local
|
|
9
|
+
ENV STARPLOT_DATA_PATH=/starplot/data
|
|
10
|
+
ENV PYTHONPATH=/starplot/src/
|
|
11
|
+
|
|
12
|
+
# Install Cairo (for PNG exports)
|
|
13
|
+
RUN apt update && apt install libcairo2-dev
|
|
14
|
+
|
|
15
|
+
RUN pip install uv
|
|
16
|
+
RUN uv sync --all-groups --all-extras
|
|
17
|
+
|
|
18
|
+
RUN git config --global --add safe.directory /starplot
|
|
19
|
+
|
|
20
|
+
# Build database
|
|
21
|
+
RUN uv run data/scripts/db.py
|
|
22
|
+
|
|
23
|
+
# Install fonts etc
|
|
24
|
+
RUN uv run starplot setup
|
|
25
|
+
|
|
26
|
+
# Install fonts used in tests
|
|
27
|
+
RUN uv run scripts/download_test_fonts.py
|
|
28
|
+
|
|
29
|
+
CMD ["bash", "-c", "uv run pytest ."]
|
starplot-0.21.0/Makefile
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
PYTHON_VERSION=3.12
|
|
2
|
+
|
|
3
|
+
ifeq ($(CI), true)
|
|
4
|
+
DR_ARGS=-e FLIT_USERNAME -e FLIT_PASSWORD
|
|
5
|
+
else
|
|
6
|
+
DR_ARGS=-it
|
|
7
|
+
#--env-file ./.env
|
|
8
|
+
endif
|
|
9
|
+
|
|
10
|
+
DOTENV=--env-file $(shell pwd)/.env
|
|
11
|
+
DOCKER_RUN=docker run --rm $(DR_ARGS) -v $(shell pwd):/starplot starplot-dev bash -c
|
|
12
|
+
|
|
13
|
+
DOCKER_BUILD_PYTHON=docker build -t starplot-$(PYTHON_VERSION) $(DOCKER_BUILD_ARGS) --build-arg="PYTHON_VERSION=$(PYTHON_VERSION)" .
|
|
14
|
+
DOCKER_RUN_PYTHON_TEST=docker run --rm $(DR_ARGS) starplot-$(PYTHON_VERSION)
|
|
15
|
+
|
|
16
|
+
export PYTHONPATH=./src/
|
|
17
|
+
|
|
18
|
+
# ------------------------------------------------------------------
|
|
19
|
+
install:
|
|
20
|
+
uv sync --all-groups --all-extras
|
|
21
|
+
|
|
22
|
+
build: PYTHON_VERSION=3.12.12
|
|
23
|
+
build: DOCKER_BUILD_ARGS=-t starplot-dev
|
|
24
|
+
build:
|
|
25
|
+
touch -a .env
|
|
26
|
+
$(DOCKER_BUILD_PYTHON)
|
|
27
|
+
|
|
28
|
+
env:
|
|
29
|
+
test -f .env || echo "STARPLOT_DATA_PATH=$(CURDIR)/data/" > .env
|
|
30
|
+
|
|
31
|
+
lint:
|
|
32
|
+
uv run $(DOTENV) ruff check $(ARGS) src/ tests/ hash_checks/
|
|
33
|
+
|
|
34
|
+
format:
|
|
35
|
+
uv run $(DOTENV) ruff format $(ARGS) src/ tests/ scripts/ examples/ hash_checks/ tutorial/ data/
|
|
36
|
+
|
|
37
|
+
test:
|
|
38
|
+
uv run $(DOTENV) pytest $(ARGS) --cov=src/ --cov-report=term --cov-report=html tests/
|
|
39
|
+
|
|
40
|
+
test-python-version:
|
|
41
|
+
uv run $(DOTENV) --python $(PYTHON_VERSION) --isolated pytest tests/
|
|
42
|
+
|
|
43
|
+
check-hashes:
|
|
44
|
+
rm -f hash_checks/data/*.png
|
|
45
|
+
uv run $(DOTENV) python hash_checks/hashio.py check
|
|
46
|
+
|
|
47
|
+
check-hashes-python-version:
|
|
48
|
+
rm -f hash_checks/data/*.png
|
|
49
|
+
uv run $(DOTENV) --python $(PYTHON_VERSION) hash_checks/hashio.py check
|
|
50
|
+
|
|
51
|
+
lock-hashes:
|
|
52
|
+
uv run $(DOTENV) python hash_checks/hashio.py lock
|
|
53
|
+
|
|
54
|
+
e2e:
|
|
55
|
+
find e2e/actual -name '*.svg' -delete 2>/dev/null || true
|
|
56
|
+
uv run $(DOTENV) --python $(PYTHON_VERSION) e2e/run.py
|
|
57
|
+
|
|
58
|
+
e2e-lock:
|
|
59
|
+
find e2e/actual -name '*.svg' -delete 2>/dev/null || true
|
|
60
|
+
uv run $(DOTENV) python e2e/run.py --lock
|
|
61
|
+
|
|
62
|
+
shell:
|
|
63
|
+
uv run $(DOTENV) ipython
|
|
64
|
+
|
|
65
|
+
marimo: DR_ARGS=-it -p 9009:9009
|
|
66
|
+
marimo:
|
|
67
|
+
uv run $(DOTENV) marimo edit scripts/marimo.py --no-token --host 0.0.0.0 --port 9009
|
|
68
|
+
|
|
69
|
+
examples:
|
|
70
|
+
cd examples && rm -f *.png && rm -f *.jpg && uv run $(DOTENV) examples.py
|
|
71
|
+
|
|
72
|
+
tutorial:
|
|
73
|
+
cd tutorial && uv run $(DOTENV) build.py
|
|
74
|
+
|
|
75
|
+
profile: DR_ARGS=-it -p 8081:8081
|
|
76
|
+
profile:
|
|
77
|
+
$(DOCKER_RUN) "python -m cProfile -o temp/results.prof scripts/scratchpad.py && \
|
|
78
|
+
snakeviz -s -p 8081 -H 0.0.0.0 temp/results.prof"
|
|
79
|
+
|
|
80
|
+
db:
|
|
81
|
+
uv run $(DOTENV) data/scripts/db.py
|
|
82
|
+
|
|
83
|
+
build-data-clean:
|
|
84
|
+
mkdir -p data/build
|
|
85
|
+
rm -rf data/build/*
|
|
86
|
+
|
|
87
|
+
build-star-designations:
|
|
88
|
+
uv run $(DOTENV) data/scripts/star_designations.py
|
|
89
|
+
|
|
90
|
+
version:
|
|
91
|
+
uv run $(DOTENV) python -c 'import starplot as sp; print(sp.__version__)'
|
|
92
|
+
|
|
93
|
+
setup:
|
|
94
|
+
uv run $(DOTENV) starplot setup
|
|
95
|
+
|
|
96
|
+
download-test-fonts:
|
|
97
|
+
uv run $(DOTENV) scripts/download_test_fonts.py
|
|
98
|
+
|
|
99
|
+
dev: env db setup download-test-fonts
|
|
100
|
+
|
|
101
|
+
# ------------------------------------------------------------------
|
|
102
|
+
# Python version testing
|
|
103
|
+
# ------------------------------------------------------------------
|
|
104
|
+
test-3.10: PYTHON_VERSION=3.10.21
|
|
105
|
+
test-3.10:
|
|
106
|
+
$(DOCKER_BUILD_PYTHON)
|
|
107
|
+
$(DOCKER_RUN_PYTHON_TEST)
|
|
108
|
+
|
|
109
|
+
test-3.11: PYTHON_VERSION=3.11.16
|
|
110
|
+
test-3.11:
|
|
111
|
+
$(DOCKER_BUILD_PYTHON)
|
|
112
|
+
$(DOCKER_RUN_PYTHON_TEST)
|
|
113
|
+
|
|
114
|
+
test-3.12: PYTHON_VERSION=3.12.14
|
|
115
|
+
test-3.12:
|
|
116
|
+
$(DOCKER_BUILD_PYTHON)
|
|
117
|
+
$(DOCKER_RUN_PYTHON_TEST)
|
|
118
|
+
|
|
119
|
+
test-3.13: PYTHON_VERSION=3.13.15
|
|
120
|
+
test-3.13:
|
|
121
|
+
$(DOCKER_BUILD_PYTHON)
|
|
122
|
+
$(DOCKER_RUN_PYTHON_TEST)
|
|
123
|
+
|
|
124
|
+
# there are warnings with 3.14, but tests/checks pass
|
|
125
|
+
# needs more investigation
|
|
126
|
+
test-3.14: PYTHON_VERSION=3.14.7
|
|
127
|
+
test-3.14:
|
|
128
|
+
$(DOCKER_BUILD_PYTHON)
|
|
129
|
+
$(DOCKER_RUN_PYTHON_TEST)
|
|
130
|
+
|
|
131
|
+
# ------------------------------------------------------------------
|
|
132
|
+
# Docs
|
|
133
|
+
docs-serve:
|
|
134
|
+
uv run $(DOTENV) zensical serve
|
|
135
|
+
|
|
136
|
+
docs-build:
|
|
137
|
+
uv run $(DOTENV) zensical build -c
|
|
138
|
+
|
|
139
|
+
docs-references:
|
|
140
|
+
uv run $(DOTENV) docs/scripts/data.py
|
|
141
|
+
uv run $(DOTENV) docs/scripts/markers.py
|
|
142
|
+
uv run $(DOTENV) docs/scripts/gradients.py
|
|
143
|
+
uv run $(DOTENV) docs/scripts/projections.py
|
|
144
|
+
uv run $(DOTENV) docs/scripts/projection_list.py
|
|
145
|
+
uv run $(DOTENV) docs/scripts/style_explorer.py
|
|
146
|
+
|
|
147
|
+
docs: docs-references docs-build
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# ------------------------------------------------------------------
|
|
151
|
+
# PyPi - build & publish
|
|
152
|
+
flit-build:
|
|
153
|
+
uv run $(DOTENV) flit build --no-use-vcs
|
|
154
|
+
|
|
155
|
+
flit-publish:
|
|
156
|
+
uv run $(DOTENV) flit publish
|
|
157
|
+
|
|
158
|
+
flit-install:
|
|
159
|
+
FLIT_ROOT_INSTALL=1 flit install
|
|
160
|
+
|
|
161
|
+
# ------------------------------------------------------------------
|
|
162
|
+
# Utils
|
|
163
|
+
scripts:
|
|
164
|
+
uv run $(DOTENV) python ./scripts/$(SCRIPT).py
|
|
165
|
+
|
|
166
|
+
list-fonts:
|
|
167
|
+
uv run $(DOTENV) python ./scripts/list_fonts.py
|
|
168
|
+
|
|
169
|
+
clean:
|
|
170
|
+
rm -rf __pycache__
|
|
171
|
+
rm -rf venv
|
|
172
|
+
rm -rf dist
|
|
173
|
+
rm -rf site
|
|
174
|
+
rm -rf htmlcov
|
|
175
|
+
rm -f tests/data/*.png
|
|
176
|
+
|
|
177
|
+
.PHONY: build test shell flit-build flit-publish clean ephemeris examples scripts tutorial list-fonts e2e
|