starplot 0.21.4__tar.gz → 0.23.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.21.4 → starplot-0.23.0}/.github/workflows/test.yml +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/CITATION.cff +2 -2
- {starplot-0.21.4 → starplot-0.23.0}/Makefile +1 -6
- {starplot-0.21.4 → starplot-0.23.0}/PKG-INFO +3 -4
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/de/constellation_names.csv +3 -1
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/de/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/en-us/other_terms.csv +2 -1
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/es/other_terms.csv +2 -1
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fa/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fr/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/it/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/lt/constellation_names.csv +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/lt/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/nl/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/readme.md +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-cn/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-tw/other_terms.csv +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/changelog.md +29 -1
- {starplot-0.21.4 → starplot-0.23.0}/docs/coming-soon.md +3 -2
- starplot-0.23.0/docs/examples/optic-image-overlay.md +14 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples.md +12 -6
- {starplot-0.21.4 → starplot-0.23.0}/docs/index.md +3 -2
- {starplot-0.21.4 → starplot-0.23.0}/docs/installation.md +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/index.md +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/optics.md +8 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-settings.md +15 -1
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/markers.py +5 -1
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/style_explorer.py +14 -8
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/index.md +7 -5
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/markers.md +8 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/reference.md +15 -0
- starplot-0.23.0/examples/andromeda.jpeg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/examples.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/examples/horizon_gradient.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_canis_major.py +1 -1
- starplot-0.23.0/examples/optic_image_overlay.py +97 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/hashlock.yml +32 -27
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/map_checks.py +6 -7
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/optic_checks.py +51 -1
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/zenith_checks.py +27 -27
- {starplot-0.21.4 → starplot-0.23.0}/pyproject.toml +2 -3
- {starplot-0.21.4 → starplot-0.23.0}/scripts/download_test_fonts.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/scripts/svg.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/__init__.py +3 -20
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/callables.py +3 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/cli.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/constants.py +6 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/__init__.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/catalogs.py +5 -5
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/constellations.py +4 -3
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/db.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/dsos.py +4 -3
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/library/constellation_names.parquet +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/library/dso_names.parquet +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/library/star_designations.parquet +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/stars.py +4 -3
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/translations.py +10 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/geometry.py +13 -9
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/__init__.py +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/constellation.py +5 -4
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/dso.py +2 -2
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/observer.py +21 -10
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/optics.py +43 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/star.py +2 -2
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/base.py +13 -9
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/galaxy.py +7 -7
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/horizon.py +2 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/map.py +2 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/optic.py +100 -11
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/__init__.py +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/arrow.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/constellations.py +5 -5
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/dsos.py +18 -19
- starplot-0.23.0/src/starplot/plotters/image.py +249 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/milkyway.py +9 -9
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/stars.py +107 -96
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/text.py +23 -7
- starplot-0.21.4/src/starplot/config.py → starplot-0.23.0/src/starplot/settings.py +34 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/elements.py +39 -2
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/antique.yml +26 -25
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/blue_dark.yml +20 -19
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/blue_gold.yml +15 -14
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/blue_light.yml +8 -7
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/blue_medium.yml +11 -10
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/blue_night.yml +18 -17
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/cb_wong.yml +8 -7
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/grayscale.yml +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/grayscale_dark.yml +13 -12
- starplot-0.23.0/src/starplot/styles/ext/horizon.yml +6 -0
- starplot-0.23.0/src/starplot/styles/ext/map.yml +13 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/nord.yml +14 -13
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/optic.yml +16 -5
- starplot-0.23.0/src/starplot/styles/ext/publication.yml +9 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/starplot.yml +24 -23
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/helpers.py +12 -3
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/plot.py +46 -47
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/types.py +1 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/canvas.py +60 -6
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/elements.py +11 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/fonts.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/layout.py +1 -1
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/symbols.py +80 -7
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/utils.py +25 -3
- {starplot-0.21.4 → starplot-0.23.0}/tests/conftest.py +4 -2
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_dso.py +4 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_observer.py +25 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_optics.py +25 -1
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_solar_system.py +6 -6
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_star.py +6 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/test_canvas.py +3 -4
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/test_symbols.py +111 -53
- starplot-0.23.0/tests/test_data.py +21 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_geometry.py +26 -0
- starplot-0.23.0/tests/test_image.py +249 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_languages.py +52 -4
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_map.py +52 -2
- starplot-0.23.0/tests/test_optic.py +186 -0
- starplot-0.23.0/tests/test_settings.py +51 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_styles.py +59 -2
- starplot-0.21.4/src/starplot/styles/ext/horizon.yml +0 -5
- starplot-0.21.4/src/starplot/styles/ext/map.yml +0 -12
- starplot-0.21.4/src/starplot/styles/ext/publication.yml +0 -8
- starplot-0.21.4/tests/test_data.py +0 -18
- starplot-0.21.4/tests/test_optic.py +0 -53
- starplot-0.21.4/tests/test_settings.py +0 -22
- {starplot-0.21.4 → starplot-0.23.0}/.dockerignore +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/FUNDING.yml +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/workflows/archives.yaml +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/workflows/docs.yml +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.github/workflows/release.yml +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/.gitignore +0 -0
- /starplot-0.21.4/CLAUDE.md → /starplot-0.23.0/AGENTS.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/CODE_OF_CONDUCT.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/CONTRIBUTING.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/Dockerfile +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/LICENSE +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/README.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/constellation_borders.json +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/constellations.json +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/milkyway.json +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/star_designations.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/de/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/de/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/de/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/en-us/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/en-us/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/en-us/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/es/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/es/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/es/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fa/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fa/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fa/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fr/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fr/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/fr/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/it/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/it/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/it/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/it/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/lt/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/lt/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/lt/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/nl/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/nl/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/nl/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/nl/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-cn/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-cn/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-cn/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-tw/constellation_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-tw/dso_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-tw/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/raw/translations/zh-tw/star_names.csv +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/constellation_names.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/data_settings.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/db.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/dso_names.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/star_designations.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/data/scripts/translations.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/about.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/css/extra.css +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/custom/main.html +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data/building.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data/constellations.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data/dsos.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data/index.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data/stars.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/data-sources.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/horizon-double-cluster.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/horizon-gradient.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/horizon-sgr.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-big-dipper.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-big.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-canis-major.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-carina-nebula.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-cassiopeia.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-custom-marker.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-galaxy.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-milky-way-stars.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-orion.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-orthographic.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-sagittarius.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/map-virgo-cluster.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/optic-iss-transit.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/optic-m45.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/optic-orion.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/optic-solar-eclipse.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/star-chart-basic.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/star-chart-detail.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/examples/star-chart-french.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/celestial-globe.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/cover-front-sm-360.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/discord.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/examples/.keep +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/favicon.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/figure_layout.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-2400px.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/banner.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/banner.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/banner.vectornator +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/logo.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/logo.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/logo.vectornator +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo-original/logo2.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo2.vectornator +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/logo500.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/mono-2400px.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/mono.png +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/mono.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/star.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/starplot-header.svg +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/images/tutorial/.keep +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/license.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/migration-guides/0.16.0.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/migration-guides/0.21.0.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/comet.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/constellation.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/dso.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/moon.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/object-list.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/observer.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/planet.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/satellite.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/star.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/models/sun.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/object-names/constellations.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/object-names/dsos.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/object-names/stars.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-callables.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-collisions.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-galaxyplot.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-horizonplot.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-localization.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-mapplot.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-ongc.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-opticplot.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-positions.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-projections.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-selecting-objects.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/reference-zenithplot.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/robots.txt +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/data.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/gradients.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/projection_list.html +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/projection_list.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/projections.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/scripts/style_explorer.html +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/showcase.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/snippets/_newsletter.html +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/color.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/explorer.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/extensions.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/gradients.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/styling/layout.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/01.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/02.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/03.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/04.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/05.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/06.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/07.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/08.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/09.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/docs/tutorial/index.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/constellation.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/galaxy.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/gradient.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/horizon_double_cluster.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_big.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_big_dipper.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_carina.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_cas.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_equidistant.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_galaxy.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_milky_way_stars.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_orion.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_orthographic.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_sagittarius.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/map_virgo_cluster.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/optic_iss_transit.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/optic_m45.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/optic_orion_nebula.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/optic_solar_eclipse.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/star_chart_basic.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/star_chart_detail.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/examples/star_chart_french.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/data/.keep +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/flaky.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/galaxy_checks.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/hashio.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/horizon_checks.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/hash_checks/template.html +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/scripts/list_fonts.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/scripts/marimo.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/scripts/voronoi.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/coordinates.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/ecliptic.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/library/readme.md +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/data/utils.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/mixins.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/base.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/comet.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/milky_way.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/moon.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/objects.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/planet.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/satellite.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/models/sun.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plots/zenith.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/gridlines.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/plotters/legend.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/profile.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/projections.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/base.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/constants.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/ext/gradient_presets.yml +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/extensions.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/styles/gradients.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/svg/png.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/src/starplot/warnings.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/data/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/data/comets.txt +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/data/test_utils.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_comets.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_constellation.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/models/test_satellite.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/plots/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/plots/test_galaxy.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/plots/test_horizon.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/__init__.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/test_elements.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/test_fonts.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/svg/test_layout.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_catalogs.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_cli.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/test_utils.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tests/utils.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/build.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_02.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_03.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_04.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_05.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_06.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_07.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/tutorial/tutorial_08.py +0 -0
- {starplot-0.21.4 → starplot-0.23.0}/zensical.toml +0 -0
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
strategy:
|
|
20
20
|
fail-fast: false
|
|
21
21
|
matrix:
|
|
22
|
-
python-version: ['3.
|
|
22
|
+
python-version: ['3.11', '3.12', '3.13', '3.14']
|
|
23
23
|
steps:
|
|
24
24
|
- uses: actions/checkout@v6
|
|
25
25
|
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
|
|
@@ -101,11 +101,6 @@ dev: env db setup download-test-fonts
|
|
|
101
101
|
# ------------------------------------------------------------------
|
|
102
102
|
# Python version testing
|
|
103
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
104
|
test-3.11: PYTHON_VERSION=3.11.16
|
|
110
105
|
test-3.11:
|
|
111
106
|
$(DOCKER_BUILD_PYTHON)
|
|
@@ -168,7 +163,7 @@ list-fonts:
|
|
|
168
163
|
|
|
169
164
|
clean:
|
|
170
165
|
rm -rf __pycache__
|
|
171
|
-
rm -rf venv
|
|
166
|
+
rm -rf .venv
|
|
172
167
|
rm -rf dist
|
|
173
168
|
rm -rf site
|
|
174
169
|
rm -rf htmlcov
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: starplot
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.23.0
|
|
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>
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.11,<3.15
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
9
|
Classifier: License :: OSI Approved :: MIT License
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -27,7 +26,7 @@ Requires-Dist: pyarrow >= 14.0.2
|
|
|
27
26
|
Requires-Dist: rtree >= 1.2.0
|
|
28
27
|
Requires-Dist: pyqtree >= 1.0.0
|
|
29
28
|
Requires-Dist: requests >= 2.31.0
|
|
30
|
-
Requires-Dist: duckdb
|
|
29
|
+
Requires-Dist: duckdb < 2.0.0
|
|
31
30
|
Requires-Dist: sqlglot >= 28.9.0
|
|
32
31
|
Requires-Dist: ibis-framework[duckdb, geospatial] >= 11
|
|
33
32
|
Requires-Dist: astropy-healpix >= 1.1.2
|
|
@@ -64,7 +64,9 @@ peg,Pegasus,Pegasus
|
|
|
64
64
|
per,Perseus,Perseus
|
|
65
65
|
phe,Phoenix,Phönix
|
|
66
66
|
pic,Pictor,Maler
|
|
67
|
+
psc,Pisces,Fische
|
|
67
68
|
psa,Piscis Austrinus,Südlicher Fisch
|
|
69
|
+
psc,Pisces,Fische
|
|
68
70
|
pup,Puppis,Achterdeck des Schiffes
|
|
69
71
|
pyx,Pyxis,Schiffskompass
|
|
70
72
|
ret,Reticulum,Netz
|
|
@@ -86,4 +88,4 @@ umi,Ursa Minor,Kleiner Bär
|
|
|
86
88
|
vel,Vela,Segel des Schiffes
|
|
87
89
|
vir,Virgo,Jungfrau
|
|
88
90
|
vol,Volans,Fliegender Fisch
|
|
89
|
-
vul,Vulpecula,Fuchs
|
|
91
|
+
vul,Vulpecula,Fuchs
|
|
@@ -43,4 +43,5 @@ N (abbreviation for north),N (abbreviation for north)
|
|
|
43
43
|
E (abbreviation for east),E (abbreviation for east)
|
|
44
44
|
S (abbreviation for south),S (abbreviation for south)
|
|
45
45
|
W (abbreviation for west),W (abbreviation for west)
|
|
46
|
-
Milky Way,Milky Way
|
|
46
|
+
Milky Way,Milky Way
|
|
47
|
+
Horizon,horizon
|
|
@@ -43,4 +43,5 @@ N (abbreviation for north),N (abreviatura para norte)
|
|
|
43
43
|
E (abbreviation for east),E (abreviatura para este)
|
|
44
44
|
S (abbreviation for south),S (abreviatura para sur)
|
|
45
45
|
W (abbreviation for west),O (abreviatura para oeste)
|
|
46
|
-
Milky Way,Vía Láctea
|
|
46
|
+
Milky Way,Vía Láctea
|
|
47
|
+
Horizon,horizonte
|
|
@@ -29,7 +29,7 @@ Please follow these steps in a pull request to submit a new translation:
|
|
|
29
29
|
- `star_names.csv`
|
|
30
30
|
3. Add the ISO-639-1 code to:
|
|
31
31
|
- `LANGUAGES` list [here](https://github.com/steveberardi/starplot/blob/main/src/starplot/data/translations.py)
|
|
32
|
-
- Doc-string for `Settings.language` [here](https://github.com/steveberardi/starplot/blob/main/src/starplot/
|
|
32
|
+
- Doc-string for `Settings.language` [here](https://github.com/steveberardi/starplot/blob/main/src/starplot/settings.py)
|
|
33
33
|
4. Copy the values from `other_terms.csv` to the `LABELS` dictionary [here](https://github.com/steveberardi/starplot/blob/main/src/starplot/data/translations.py)
|
|
34
34
|
5. Include a `readme.md` file in the data folder that explains the source of the translation (e.g. a well known astronomy book in the language, astronomical society, etc) - [see example here](https://github.com/steveberardi/starplot/blob/main/data/raw/translations/it/readme.md)
|
|
35
35
|
6. Add test cases for the translation in [test_languages.py](https://github.com/steveberardi/starplot/blob/main/tests/test_languages.py)
|
|
@@ -1,5 +1,33 @@
|
|
|
1
|
+
## v0.23.x
|
|
2
|
+
[Documentation](https://archives.starplot.dev/0.23.0/)
|
|
3
|
+
|
|
4
|
+
- Adds an `image` overlay plotting function to map, horizon, and optic plots
|
|
5
|
+
- Normalizes sizing of circle-based markers
|
|
6
|
+
- Adds support for defining `where_*` kwargs as string SQL `WHERE` clauses
|
|
7
|
+
- Improved smoothing in the `ellipse` function
|
|
8
|
+
- Updates default DSO catalog to fix a bug with galaxy geometries
|
|
9
|
+
- **Breaking:** Restructures some `PlotStyle` fields:
|
|
10
|
+
- `bayer_labels` and `flamsteed_labels` are now `star.bayer_label` and `star.flamsteed_label`
|
|
11
|
+
- `constellation_lines`, `constellation_labels`, and `constellation_borders` are now `constellation.line`, `constellation.label`, and `constellation.border`
|
|
12
|
+
- `planets` is now `planet`
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## v0.22.x
|
|
17
|
+
[Documentation](https://archives.starplot.dev/0.22.0/)
|
|
18
|
+
|
|
19
|
+
- Adds support for "naked eye" optic plots, increasing FOV limit to 60 degrees
|
|
20
|
+
- Adds support for plotting constellations, gridlines, and horizon on optic plots
|
|
21
|
+
- Updates default catalog for Milky Way
|
|
22
|
+
- Adds missing German translation for Pisces
|
|
23
|
+
- Fixes bug with grouping star label SVG elements
|
|
24
|
+
- Adds a double border circle marker
|
|
25
|
+
- Drops official support for Python 3.10 (EOL)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
1
29
|
## v0.21.x
|
|
2
|
-
[Migration Guide](migration-guides/0.21.0.md)
|
|
30
|
+
[Documentation](https://archives.starplot.dev/0.21.4/) | [Migration Guide](migration-guides/0.21.0.md)
|
|
3
31
|
|
|
4
32
|
- Replaces the plotting backend (matplotlib + cartopy) with an SVG-first backend
|
|
5
33
|
- Adds support for gradient backgrounds on markers, polygons, and the figure background
|
|
@@ -8,18 +8,19 @@
|
|
|
8
8
|
|
|
9
9
|
<table class="table-coming-soon">
|
|
10
10
|
<tr>
|
|
11
|
-
<td>v0.
|
|
11
|
+
<td>v0.24</td>
|
|
12
12
|
<td>
|
|
13
13
|
<h4>⭐ Next Release ⭐</h4>
|
|
14
14
|
<ul>
|
|
15
15
|
<li>Plot definition files</li>
|
|
16
16
|
<li>CLI for creating plots</li>
|
|
17
|
+
<li>Improved labeling pipeline</li>
|
|
17
18
|
</ul>
|
|
18
19
|
</td>
|
|
19
20
|
<td></td>
|
|
20
21
|
</tr>
|
|
21
22
|
<tr>
|
|
22
|
-
<td>v0.
|
|
23
|
+
<td>v0.25+</td>
|
|
23
24
|
<td>
|
|
24
25
|
<ul>
|
|
25
26
|
<li>Planet moons</li>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Image Overlay on an Optic Plot
|
|
3
|
+
---
|
|
4
|
+
[:octicons-arrow-left-24: Back to Examples](../examples.md)
|
|
5
|
+
|
|
6
|
+
# Image Overlay on an Optic Plot {.example-header}
|
|
7
|
+
|
|
8
|
+

|
|
9
|
+
|
|
10
|
+
Here's an example of plotting an image of the Andromeda Galaxy (M31) on an optic plot. The image is aligned to the sky using control points, which map pixel positions in the image with the known RA/DEC of the stars at those positions. You can use a plate solver like [tetra3rs](https://tetra3rs.dev/) to find these control points automatically.
|
|
11
|
+
|
|
12
|
+
```python
|
|
13
|
+
--8<-- "examples/optic_image_overlay.py"
|
|
14
|
+
```
|
|
@@ -68,15 +68,15 @@
|
|
|
68
68
|
</a>
|
|
69
69
|
</li>
|
|
70
70
|
<li>
|
|
71
|
-
<a href="examples/
|
|
72
|
-
<img src="images/examples/
|
|
73
|
-
<p class="example-card-title">
|
|
71
|
+
<a href="examples/optic-image-overlay/">
|
|
72
|
+
<img src="images/examples/optic_image_overlay-sm.png" alt="Image Overlay on an Optic Plot of the Andromeda Galaxy" class="off-glb" loading="lazy"/>
|
|
73
|
+
<p class="example-card-title">Image Overlay on an Optic Plot</p>
|
|
74
74
|
</a>
|
|
75
75
|
</li>
|
|
76
76
|
<li>
|
|
77
|
-
<a href="examples/map-
|
|
78
|
-
<img src="images/examples/
|
|
79
|
-
<p class="example-card-title">The
|
|
77
|
+
<a href="examples/map-milky-way-stars/">
|
|
78
|
+
<img src="images/examples/map_milky_way_stars-sm.png" alt="Stars of the Milky Way" class="off-glb">
|
|
79
|
+
<p class="example-card-title">The Milky Way</p>
|
|
80
80
|
</a>
|
|
81
81
|
</li>
|
|
82
82
|
<li>
|
|
@@ -103,6 +103,12 @@
|
|
|
103
103
|
<p class="example-card-title">Orthographic Map</p>
|
|
104
104
|
</a>
|
|
105
105
|
</li>
|
|
106
|
+
<li>
|
|
107
|
+
<a href="examples/map-big-dipper/">
|
|
108
|
+
<img src="images/examples/map_big_dipper-sm.png" alt="Map of the Big Dipper" class="off-glb" loading="lazy"/>
|
|
109
|
+
<p class="example-card-title">The Big Dipper</p>
|
|
110
|
+
</a>
|
|
111
|
+
</li>
|
|
106
112
|
<li>
|
|
107
113
|
<a href="examples/map-canis-major/">
|
|
108
114
|
<img src="images/examples/map_canis_major-sm.png" alt="Map of the Constellation Canis Major" class="off-glb" loading="lazy"/>
|
|
@@ -12,7 +12,7 @@ Starplot is a Python library for creating star charts and maps of the sky
|
|
|
12
12
|
- <img src="images/examples/map_orion.png" width="600"> <h3>__Maps__</h3> shows an area that you define in one of many available map projections
|
|
13
13
|
- <img src="images/examples/horizon_gradient.png" width="600"> <h3>Horizon Charts</h3> shows the horizon at a specific time and place
|
|
14
14
|
- <img src="images/examples/star_chart_basic.png" height="600" width="600"> <h3>Zenith Charts</h3> shows the entire sky at a specific time and place
|
|
15
|
-
- <img src="images/examples/
|
|
15
|
+
- <img src="images/examples/optic_image_overlay.png" width="600"> <h3>Optic Charts</h3> shows what you'll see through an optic (e.g. telescope) at a specific time and place
|
|
16
16
|
- <img src="images/examples/galaxy.png" height="600" width="600"> <h3>Galaxy Charts</h3> shows the entire sky in galactic coordinates
|
|
17
17
|
|
|
18
18
|
- <a href="examples/">
|
|
@@ -33,7 +33,8 @@ Starplot is a Python library for creating star charts and maps of the sky
|
|
|
33
33
|
<li><strong>Planets and Deep Sky Objects (DSOs)</strong> - with support for plotting their true extent</li>
|
|
34
34
|
<li><strong>Comets and Satellites</strong> - easy trajectory plotting</li>
|
|
35
35
|
<li><strong>Custom Styles</strong> - for all objects and with 8+ built-in themes</li>
|
|
36
|
-
<li><strong>Export to SVG or PNG</strong
|
|
36
|
+
<li><strong>Export to SVG or PNG</strong> - with easy scaling for png exports</li>
|
|
37
|
+
<li><strong>Image overlays</strong> - given a set of control points</li>
|
|
37
38
|
<li><strong>Data Backend</strong> - powered by DuckDB + Ibis for fast object lookup</li>
|
|
38
39
|
<li><strong>Custom Data Catalogs</strong> - with helpers for building and optimizing</li>
|
|
39
40
|
<li><strong>Label Collision Avoidance</strong> - ensuring all labels are readable</li>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Starplot is available on [PyPI](https://pypi.org/project/starplot/) and [Conda](https://anaconda.org/channels/conda-forge/packages/starplot/overview), and its dependencies have binary wheels for most operating systems, so installation should be easy. See below for details.
|
|
4
4
|
|
|
5
|
-
Supported Python versions: 3.
|
|
5
|
+
Supported Python versions: 3.11 / 3.12 / 3.13 / 3.14
|
|
6
6
|
|
|
7
7
|
<h3>1. Install Dependencies</h3>
|
|
8
8
|
|
|
@@ -49,6 +49,7 @@ Starplot has models to represent an observer and some of the objects you can plo
|
|
|
49
49
|
### :material-telescope: Optics
|
|
50
50
|
|
|
51
51
|
- [Binoculars](optics.md#starplot.models.Binoculars)
|
|
52
|
+
- [NakedEye](optics.md#starplot.models.NakedEye)
|
|
52
53
|
- [Scope](optics.md#starplot.models.Scope)
|
|
53
54
|
- [Refractor](optics.md#starplot.models.Refractor)
|
|
54
55
|
- [Reflector](optics.md#starplot.models.Reflector)
|
|
@@ -10,6 +10,14 @@ Optics are another set of models you instantiate directly when creating [OpticPl
|
|
|
10
10
|
show_root_heading: true
|
|
11
11
|
heading_level: 2
|
|
12
12
|
|
|
13
|
+
::: starplot.models.NakedEye
|
|
14
|
+
options:
|
|
15
|
+
inherited_members: true
|
|
16
|
+
show_docstring_attributes: true
|
|
17
|
+
merge_init_into_class: true
|
|
18
|
+
show_root_heading: true
|
|
19
|
+
heading_level: 2
|
|
20
|
+
|
|
13
21
|
::: starplot.models.Scope
|
|
14
22
|
options:
|
|
15
23
|
inherited_members: true
|
|
@@ -29,6 +29,20 @@ STARPLOT_LANGUAGE=fr
|
|
|
29
29
|
```
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
|
+
## Temporary overrides
|
|
33
|
+
|
|
34
|
+
To change settings for just part of your code, call `settings` in a `with` block. The previous values are restored when the block exits:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
from starplot import settings
|
|
38
|
+
|
|
39
|
+
with settings(language="de", svg_text_type="path"):
|
|
40
|
+
# Plots created here will use German labels and SVG text as paths
|
|
41
|
+
...
|
|
42
|
+
|
|
43
|
+
# Back to the previous settings here
|
|
44
|
+
```
|
|
45
|
+
|
|
32
46
|
---
|
|
33
47
|
|
|
34
48
|
## `data_path`
|
|
@@ -93,7 +107,7 @@ Number of decimal places to round coordinates and dimensions to when rendering S
|
|
|
93
107
|
|
|
94
108
|
|
|
95
109
|
<!--
|
|
96
|
-
::: starplot.
|
|
110
|
+
::: starplot.settings.Settings
|
|
97
111
|
options:
|
|
98
112
|
show_docstring_attributes: true
|
|
99
113
|
separate_signature: true
|
|
@@ -8,6 +8,7 @@ from typing import get_args
|
|
|
8
8
|
from starplot import MapPlot, Miller
|
|
9
9
|
from starplot.styles import MarkerStyle, ObjectStyle, PlotStyle, extensions
|
|
10
10
|
from starplot.styles.types import MarkerSymbol
|
|
11
|
+
from starplot.svg import symbols
|
|
11
12
|
|
|
12
13
|
OUTPUT_DIR = Path(__file__).resolve().parent.parent / "images" / "reference"
|
|
13
14
|
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
|
@@ -50,15 +51,18 @@ marker_styles = {
|
|
|
50
51
|
"star_4": default_style,
|
|
51
52
|
"star_8": default_style,
|
|
52
53
|
"triangle": default_style,
|
|
54
|
+
"circle_double_border": default_style,
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
|
|
56
58
|
for symbol_str in get_args(MarkerSymbol):
|
|
57
59
|
marker_style = default_style
|
|
58
|
-
marker_style.size = 64
|
|
59
60
|
marker_style.symbol = symbol_str
|
|
60
61
|
marker_style.stroke_width = default_style.stroke_width
|
|
61
62
|
|
|
63
|
+
# size is the diameter of the circle for circle-based symbols, so scale it down
|
|
64
|
+
# to fit the whole symbol in the same box as all the others
|
|
65
|
+
marker_style.size = 64 / max(symbols.extent(symbol_str, 1))
|
|
62
66
|
|
|
63
67
|
object_style = ObjectStyle(marker=marker_style)
|
|
64
68
|
|
|
@@ -29,8 +29,8 @@ OUTPUT_PATH = REPO_ROOT / "docs" / "images" / "reference" / "style_explorer.html
|
|
|
29
29
|
# Groups of PlotStyle's own properties, in the order they should appear.
|
|
30
30
|
GROUPS = [
|
|
31
31
|
("Layout", ["base", "axes", "figure", "title", "table", "legend"]),
|
|
32
|
-
("Stars", ["star"
|
|
33
|
-
("Solar System", ["
|
|
32
|
+
("Stars", ["star"]),
|
|
33
|
+
("Solar System", ["planet", "moon", "sun"]),
|
|
34
34
|
(
|
|
35
35
|
"Deep Sky Objects",
|
|
36
36
|
[
|
|
@@ -49,10 +49,7 @@ GROUPS = [
|
|
|
49
49
|
"dso_duplicate",
|
|
50
50
|
],
|
|
51
51
|
),
|
|
52
|
-
(
|
|
53
|
-
"Constellations",
|
|
54
|
-
["constellation_lines", "constellation_borders", "constellation_labels"],
|
|
55
|
-
),
|
|
52
|
+
("Constellations", ["constellation"]),
|
|
56
53
|
(
|
|
57
54
|
"Sky Features",
|
|
58
55
|
[
|
|
@@ -69,8 +66,17 @@ GROUPS = [
|
|
|
69
66
|
],
|
|
70
67
|
),
|
|
71
68
|
(
|
|
72
|
-
"
|
|
73
|
-
[
|
|
69
|
+
"Plotting Functions",
|
|
70
|
+
[
|
|
71
|
+
"line",
|
|
72
|
+
"polygon",
|
|
73
|
+
"circle",
|
|
74
|
+
"ellipse",
|
|
75
|
+
"rectangle",
|
|
76
|
+
"marker",
|
|
77
|
+
"text",
|
|
78
|
+
"image",
|
|
79
|
+
],
|
|
74
80
|
),
|
|
75
81
|
]
|
|
76
82
|
|
|
@@ -84,9 +84,11 @@ from starplot import PlotStyle
|
|
|
84
84
|
|
|
85
85
|
style = PlotStyle().extend(
|
|
86
86
|
{
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
|
|
87
|
+
"star": {
|
|
88
|
+
"bayer_label": {
|
|
89
|
+
"font_name": "Literata",
|
|
90
|
+
"font_size": 10
|
|
91
|
+
}
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
)
|
|
@@ -94,8 +96,8 @@ style = PlotStyle().extend(
|
|
|
94
96
|
Alternatively, you can do this:
|
|
95
97
|
```python
|
|
96
98
|
style = PlotStyle()
|
|
97
|
-
style.
|
|
98
|
-
style.
|
|
99
|
+
style.star.bayer_label.font_name = "Literata"
|
|
100
|
+
style.star.bayer_label.font_size = 10
|
|
99
101
|
|
|
100
102
|
```
|
|
101
103
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Below are previews of all marker symbols available in Starplot. Many aspects of the symbol can be customized through its style, including fill color, edge color, edge thickness, edge style (solid, dotted, dashed, etc), opacity, and much more. See [`MarkerStyle`][starplot.MarkerStyle] for details.
|
|
4
4
|
|
|
5
|
+
Most symbols fit inside a square with sides equal to the marker's `size`. The exceptions are `circle_line`, `circle_crosshair`, and `circle_double_border`: for these symbols, `size` is the diameter of the circle, so they're the same size as a `circle` marker with the same `size` (and the rest of the symbol extends outside of that circle).
|
|
6
|
+
|
|
5
7
|
<div class="marker-symbol-grid" markdown>
|
|
6
8
|
|
|
7
9
|
<div class="marker-symbol-card" markdown>
|
|
@@ -88,6 +90,12 @@ Below are previews of all marker symbols available in Starplot. Many aspects of
|
|
|
88
90
|
`satellite`{: .marker-symbol-name}
|
|
89
91
|
</div>
|
|
90
92
|
|
|
93
|
+
<div class="marker-symbol-card" markdown>
|
|
94
|
+
{ loading=lazy .marker-symbol-img}
|
|
95
|
+
|
|
96
|
+
`circle_double_border`{: .marker-symbol-name}
|
|
97
|
+
</div>
|
|
98
|
+
|
|
91
99
|
</div>
|
|
92
100
|
|
|
93
101
|
|
|
@@ -34,6 +34,16 @@
|
|
|
34
34
|
show_root_heading: true
|
|
35
35
|
show_docstring_attributes: true
|
|
36
36
|
|
|
37
|
+
::: starplot.styles.StarStyle
|
|
38
|
+
options:
|
|
39
|
+
show_root_heading: true
|
|
40
|
+
show_docstring_attributes: true
|
|
41
|
+
|
|
42
|
+
::: starplot.styles.ConstellationStyle
|
|
43
|
+
options:
|
|
44
|
+
show_root_heading: true
|
|
45
|
+
show_docstring_attributes: true
|
|
46
|
+
|
|
37
47
|
::: starplot.styles.PathStyle
|
|
38
48
|
options:
|
|
39
49
|
show_root_heading: true
|
|
@@ -70,6 +80,11 @@
|
|
|
70
80
|
show_docstring_attributes: true
|
|
71
81
|
inherited_members: true
|
|
72
82
|
|
|
83
|
+
::: starplot.styles.ImageStyle
|
|
84
|
+
options:
|
|
85
|
+
show_root_heading: true
|
|
86
|
+
show_docstring_attributes: true
|
|
87
|
+
|
|
73
88
|
::: starplot.styles.TitleStyle
|
|
74
89
|
options:
|
|
75
90
|
show_root_heading: true
|
|
Binary file
|
|
@@ -10,7 +10,7 @@ style = PlotStyle().extend(
|
|
|
10
10
|
extensions.GRADIENT_PRE_DAWN,
|
|
11
11
|
)
|
|
12
12
|
style.figure.padding = 40
|
|
13
|
-
style.
|
|
13
|
+
style.constellation.line.width = 4
|
|
14
14
|
style.star.marker.stroke_width = 0
|
|
15
15
|
|
|
16
16
|
dt = datetime(2025, 8, 20, 21, 0, 0, 0, tzinfo=ZoneInfo("Pacific/Honolulu"))
|
|
@@ -25,7 +25,7 @@ p.constellations(
|
|
|
25
25
|
)
|
|
26
26
|
p.line(
|
|
27
27
|
geometry=canis_major.border,
|
|
28
|
-
style__line=p.style.
|
|
28
|
+
style__line=p.style.constellation.border,
|
|
29
29
|
)
|
|
30
30
|
p.open_clusters(where=[_.magnitude < 9], where_true_size=[False])
|
|
31
31
|
p.stars(where=[_.magnitude < 9], where_labels=[_.magnitude < 4], bayer_labels=True)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
from zoneinfo import ZoneInfo
|
|
4
|
+
|
|
5
|
+
from starplot import DSO, Observer, OpticPlot, Scope, callables, _
|
|
6
|
+
from starplot.styles import PlotStyle, extensions
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
IMAGE = Path(__file__).parent / "andromeda.jpeg"
|
|
10
|
+
IMAGE_SIZE = (1200, 1200)
|
|
11
|
+
|
|
12
|
+
# Control points that match a pixel position in the image with
|
|
13
|
+
# its sky position: ((x, y), (ra, dec)) in degrees.
|
|
14
|
+
CONTROL_POINTS = [
|
|
15
|
+
((231.9, 870.0), (10.5060, 40.6883)), # HIP 3293
|
|
16
|
+
((113.8, 533.3), (11.1549, 40.6794)), # HIP 3494
|
|
17
|
+
((141.9, 316.8), (11.5135, 40.8089)), # HIP 3597
|
|
18
|
+
((132.2, 576.7), (11.0697, 40.6852)), # HIP 3461
|
|
19
|
+
((751.0, 404.0), (11.0162, 41.5709)), # HIP 3447
|
|
20
|
+
((421.1, 281.7), (11.4187, 41.1902)), # TYC 2801-1743-1
|
|
21
|
+
((543.3, 368.3), (11.1977, 41.3136)), # TYC 2805-117-1
|
|
22
|
+
((400.3, 638.7), (10.8089, 41.0094)), # TYC 2801-2078-1
|
|
23
|
+
((426.8, 41.7), (11.8345, 41.2989)), # TYC 2805-39-1
|
|
24
|
+
((1083.7, 503.7), (10.6477, 41.9630)), # TYC 2805-695-1
|
|
25
|
+
((1073.0, 280.3), (11.0473, 42.0458)), # TYC 2805-1072-1
|
|
26
|
+
((392.6, 744.0), (10.6292, 40.9537)), # HIP 3333
|
|
27
|
+
((993.9, 765.0), (10.2416, 41.7309)), # HIP 3223
|
|
28
|
+
((900.8, 560.2), (10.6563, 41.6994)), # TYC 2805-789-1
|
|
29
|
+
((1130.1, 761.1), (10.1676, 41.9105)), # TYC 2805-1240-1
|
|
30
|
+
((643.1, 152.1), (11.5197, 41.5368)), # TYC 2805-700-1
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
# custom gradient background
|
|
34
|
+
NIGHT_SUBTLE = (
|
|
35
|
+
(0.0, "hsl(240, 14%, 10%)"),
|
|
36
|
+
(0.25, "hsl(240, 14%, 5%)"),
|
|
37
|
+
(0.6, "hsl(240, 14%, 2%)"),
|
|
38
|
+
(1.0, "#000000"),
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
m31 = DSO.get(m="31")
|
|
42
|
+
|
|
43
|
+
observer = Observer(
|
|
44
|
+
dt=datetime(2026, 10, 13, 21, 0, 0, tzinfo=ZoneInfo("US/Pacific")),
|
|
45
|
+
lat=33.363484,
|
|
46
|
+
lon=-116.836394,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
style = PlotStyle().extend(
|
|
50
|
+
extensions.GRAYSCALE_DARK,
|
|
51
|
+
extensions.OPTIC,
|
|
52
|
+
{
|
|
53
|
+
"axes": {
|
|
54
|
+
"background": {"fill": {"stops": NIGHT_SUBTLE, "type": "radial"}},
|
|
55
|
+
"border": {
|
|
56
|
+
"stroke": "#3A3A3A",
|
|
57
|
+
"width": 32,
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
extensions.FIGURE_TRANSPARENT,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# outline the galaxies instead of filling them, so the photo shows through
|
|
65
|
+
style.dso_galaxy.marker.fill = None
|
|
66
|
+
style.dso_galaxy.marker.stroke = "#86c7f2"
|
|
67
|
+
style.dso_galaxy.marker.stroke_width = 5
|
|
68
|
+
style.dso_galaxy.marker.opacity = 1
|
|
69
|
+
|
|
70
|
+
style.dso_galaxy.label.font_size = 72
|
|
71
|
+
style.dso_galaxy.label.font_weight = 700
|
|
72
|
+
|
|
73
|
+
p = OpticPlot(
|
|
74
|
+
ra=m31.ra,
|
|
75
|
+
dec=m31.dec,
|
|
76
|
+
optic=Scope(focal_length=714, eyepiece_focal_length=28, eyepiece_fov=82),
|
|
77
|
+
observer=observer,
|
|
78
|
+
resolution=2800,
|
|
79
|
+
scale=0.9,
|
|
80
|
+
style=style,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
p.image(IMAGE, CONTROL_POINTS)
|
|
84
|
+
|
|
85
|
+
p.stars(
|
|
86
|
+
where=[_.magnitude < 12],
|
|
87
|
+
color_fn=callables.color_by_bv_gradient,
|
|
88
|
+
style__marker__stroke=None,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# plot Andromeda (M31) and its satellite galaxies (M32, M110)
|
|
92
|
+
p.dsos(
|
|
93
|
+
where=[_.m.isin([31, 32, 110])],
|
|
94
|
+
where_true_size=True,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
p.export("optic_image_overlay.png")
|