ultraplot 2.5.0__tar.gz → 2.7.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.
- ultraplot-2.7.0/.github/workflows/black.yml +50 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/workflows/build-ultraplot.yml +42 -6
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/workflows/main.yml +76 -11
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/workflows/publish-pypi.yml +10 -2
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/workflows/test-map.yml +1 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.gitignore +6 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.pre-commit-config.yaml +9 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/INSTALL.rst +10 -4
- {ultraplot-2.5.0/ultraplot.egg-info → ultraplot-2.7.0}/PKG-INFO +136 -14
- {ultraplot-2.5.0 → ultraplot-2.7.0}/README.rst +117 -4
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/1dplots.py +4 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/Makefile +6 -4
- ultraplot-2.7.0/docs/_static/alias-explorer-v3.css +408 -0
- ultraplot-2.7.0/docs/_static/alias-explorer-v3.js +476 -0
- ultraplot-2.7.0/docs/_static/alias-map.svg +3505 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/custom.css +222 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/custom.js +151 -0
- ultraplot-2.7.0/docs/_static/example_plots/data_aware_example.svg +1159 -0
- ultraplot-2.7.0/docs/aliases.rst +1065 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/api.rst +10 -3
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/colorbars_legends.py +4 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/conf.py +24 -4
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/configuration.rst +4 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/contributing.rst +23 -0
- ultraplot-2.7.0/docs/data_aware.py +63 -0
- ultraplot-2.7.0/docs/first_figure.py +346 -0
- ultraplot-2.7.0/docs/index.rst +191 -0
- ultraplot-2.7.0/docs/keyword_aliases.rst +49 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/projections.py +7 -8
- ultraplot-2.7.0/docs/recipes.py +88 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/sphinxext/custom_roles.py +13 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/stats.py +14 -5
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/subplots.py +1 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/usage.rst +24 -6
- ultraplot-2.7.0/docs/why.rst +822 -0
- ultraplot-2.7.0/docs/why_ultraplot.py +136 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/environment.yml +3 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/noxfile.py +23 -12
- ultraplot-2.7.0/pyproject.toml +121 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/requirements-minimal.txt +1 -1
- ultraplot-2.7.0/setup.py +21 -0
- ultraplot-2.7.0/tools/ci/check_installed_docstrings.py +47 -0
- ultraplot-2.7.0/tools/ci/static_consumer.py +13 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/tools/ci/version_support.py +40 -0
- ultraplot-2.7.0/tools/expand_docstrings.py +126 -0
- ultraplot-2.7.0/tools/generate_alias_figure.py +99 -0
- ultraplot-2.7.0/tools/generate_alias_reference.py +96 -0
- ultraplot-2.7.0/tools/serve_alias_docs.py +85 -0
- ultraplot-2.7.0/ultraplot/.opencode/goals/state.json.lock +1 -0
- ultraplot-2.7.0/ultraplot/.opencode/goals/state.json.sessions/.migration-v1-complete +4 -0
- ultraplot-2.7.0/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json +7 -0
- ultraplot-2.7.0/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json.lock +1 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/__init__.py +33 -6
- ultraplot-2.7.0/ultraplot/_animation.py +1342 -0
- ultraplot-2.7.0/ultraplot/_interaction.py +720 -0
- ultraplot-2.7.0/ultraplot/_layout.py +609 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/_lazy.py +2 -1
- ultraplot-2.7.0/ultraplot/_sharing.py +554 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/_subplots.py +24 -15
- ultraplot-2.7.0/ultraplot/_version.py +1 -0
- ultraplot-2.7.0/ultraplot/animation.py +782 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/_formatting.py +43 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/base.py +189 -176
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/cartesian.py +102 -63
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/container.py +62 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/geo.py +113 -69
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot.py +299 -292
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/circlize.py +30 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/ribbon.py +8 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/polar.py +3 -26
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/shared.py +69 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/taylor.py +6 -8
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/three.py +30 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/colorbar.py +76 -35
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/colors.py +0 -45
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/config.py +8 -16
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/constructor.py +24 -26
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/demos.py +0 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/figure.py +568 -103
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/gridspec.py +70 -64
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/__init__.py +5 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/docstring.py +63 -58
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/guides.py +5 -4
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/inputs.py +120 -11
- ultraplot-2.7.0/ultraplot/internals/kwargs.py +684 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/rcsetup.py +25 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/warnings.py +6 -3
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/legend.py +52 -9
- ultraplot-2.7.0/ultraplot/mcp.py +695 -0
- ultraplot-2.7.0/ultraplot/py.typed +1 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/scale.py +4 -15
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/conftest.py +6 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_1dplots.py +212 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_2dplots.py +89 -0
- ultraplot-2.7.0/ultraplot/tests/test_alias_signatures.py +164 -0
- ultraplot-2.7.0/ultraplot/tests/test_animation.py +1893 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes.py +3 -3
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_circlize_integration.py +53 -2
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colorbar.py +78 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_constructor_helpers_extra.py +35 -3
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_core_versions.py +87 -0
- ultraplot-2.7.0/ultraplot/tests/test_docstring_helpers.py +153 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_figure.py +151 -9
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_format.py +499 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_geographic.py +93 -15
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_gridspec.py +5 -2
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_imports.py +34 -2
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_imshow.py +6 -5
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_integration.py +31 -0
- ultraplot-2.7.0/ultraplot/tests/test_kwargs_helpers.py +158 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_legend.py +72 -0
- ultraplot-2.7.0/ultraplot/tests/test_mcp.py +306 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_statistical_plotting.py +41 -7
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_subplot_manager.py +24 -10
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_subplots.py +16 -8
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_textalign.py +3 -2
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/ticker.py +6 -1
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/ui.py +13 -3
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/ultralayout.py +22 -17
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/utils.py +0 -11
- {ultraplot-2.5.0 → ultraplot-2.7.0/ultraplot.egg-info}/PKG-INFO +136 -14
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot.egg-info/SOURCES.txt +32 -1
- ultraplot-2.7.0/ultraplot.egg-info/entry_points.txt +2 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot.egg-info/requires.txt +20 -5
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot.egg-info/scm_file_list.json +455 -424
- ultraplot-2.5.0/docs/index.rst +0 -164
- ultraplot-2.5.0/docs/why.rst +0 -924
- ultraplot-2.5.0/pyproject.toml +0 -90
- ultraplot-2.5.0/ultraplot/_version.py +0 -1
- ultraplot-2.5.0/ultraplot/internals/kwargs.py +0 -345
- ultraplot-2.5.0/ultraplot/tests/test_animation.py +0 -109
- ultraplot-2.5.0/ultraplot/tests/test_docstring_helpers.py +0 -63
- ultraplot-2.5.0/ultraplot/tests/test_kwargs_helpers.py +0 -80
- ultraplot-2.5.0/ultraplot.egg-info/scm_version.json +0 -8
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/dependabot.yml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.github/micromamba-condarc.yml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.readthedocs.yml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/.zenodo.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/CITATION.cff +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/CODEOFCONDUCT.md +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/CONTRIBUTING.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/LICENSE.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/UltraPlotLogo.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/codecov.yml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/2dplots.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_ext/notoc.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_scripts/fetch_releases.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/cartesian_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/colorbars_legends_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/colormaps_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/panels_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/projection_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/example_plots/subplot_example.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_blank.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_long.png +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_long.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_social.png +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_social.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_static/logo_square.png +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/_templates/whatsnew_sidebar.html +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/about.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/basics.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/cartesian.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/colormaps.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/colors.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/cycles.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/colors/01_cycle_colormap.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/colors/02_diverging_colormap.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/colors/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/geo/01_robin_tracks.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/geo/02_orthographic_views.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/geo/03_projections_features.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/geo/04_choropleth.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/geo/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/layouts/01_shared_axes_abc.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/layouts/02_complex_layout_insets.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/layouts/03_spanning_labels.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/layouts/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/legend_types/01_semantic_legends.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/01_multi_colorbars.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/02_legend_inset_colorbar.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/03_semantic_legends.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/01_curved_quiver.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/02_network_graph.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/03_lollipop.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/04_datetime_series.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/05_box_violin.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/06_ridge_plot.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/07_radar.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/07_sankey.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/08_chord_diagram.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/08_ternary.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/09_phylogeny.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/10_circos_bed.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/11_topic_ribbon.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/12_taylor_diagram.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/examples/plot_types/README.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/external-links.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/faq.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/fonts.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/insets_panels.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/install.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/lazy_loading.rst +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/make.bat +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/networks.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/requirements-rtd.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/sphinxext/jupytext_cache.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/docs/ultraplotrc +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/PermanentMarker-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/environment-logo.yml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/logo.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/run-linter.sh +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/webicon.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/logo/whyUltraPlot.svg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/setup.cfg +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/tools/ci/build_test_map.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/tools/ci/select_tests.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/__init__.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/__init__.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/curved_quiver.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/sankey.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Algae.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Amp.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/BR.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Balance.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues1_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues4_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues5.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues6.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues7.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues8.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues9.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Boreal.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns1.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns4.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns5.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns6.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns7.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns8.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns9.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/ColdHot.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Crest.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Curl.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Deep.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Delta.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Dense.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Div.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/DryWet.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Dusk.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Fire.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Flare.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Glacial.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens1_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens3_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens4.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens5.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens6_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens7.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens8.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Haline.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Ice.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/IceFire.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Mako.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Marine.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Matter.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Mono.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/MonoCycle.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/NegPos.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges1.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges4.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oxy.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Phase.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples1_r.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds1.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds4.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds5.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Rocket.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Solar.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Speed.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Stellar.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Sunrise.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Sunset.json +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Tempo.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Thermal.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Turbid.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Vivid.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Vlag.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows1.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows2.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows3.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows4.xml +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/acton.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/bam.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/bamO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/bamako.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlow.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlowK.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlowW.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/berlin.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/bilbao.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/broc.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/brocO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/buda.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/bukavu.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/cork.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/corkO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/davos.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/devon.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/fes.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/hawaii.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/imola.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/lajolla.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/lapaz.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/lisbon.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/nuuk.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/oleron.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/oslo.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/roma.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/romaO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/tofino.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/tokyo.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/turku.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/vanimo.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/vik.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cmaps/vikO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/colors/opencolor.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/colors/xkcd.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/538.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/FlatUI.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/Qual1.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/Qual2.rgb +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/bmh.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/classic.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/colorblind.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/colorblind10.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/default.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/ggplot.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/seaborn.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/cycles/tableau.hex +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/externals/__init__.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/externals/hsluv.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Medium.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Black.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Medium.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_FIRAMATH.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_FIRASANS.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_NOTOSANS.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_NOTOSERIF.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_OPENSANS.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_ROBOTO.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_SOURCESANS.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_SOURCESERIF.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_TEXGYRE.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_UBUNTU.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Black.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Medium.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Light.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-bold.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-italic.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-regular.ttf +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/benchmarks.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/context.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/fonts.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/labels.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/internals/versions.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/proj.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/__init__.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes_alt_styles.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes_base_colorbar_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_base.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colorbar_helpers_extra.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colormap.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colormap_helpers_extra.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colors.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_colors_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_config.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_config_helpers_extra.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_constructor.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_demos.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs_fetch_releases.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs_search.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_axes_container_integration.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_container_edge_cases.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_container_mocked.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_fonts.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_handlers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_inputs.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_inputs_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_inset.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_plot.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_proj_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_projections.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_rcsetup_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_release_metadata.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_scale_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_semantic_legend.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_text_helpers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_tickers.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/tests/test_ultralayout.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/text.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot/textalign.py +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot.egg-info/dependency_links.txt +0 -0
- {ultraplot-2.5.0 → ultraplot-2.7.0}/ultraplot.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Black autoformat
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "**"
|
|
7
|
+
paths:
|
|
8
|
+
- "ultraplot/**.py"
|
|
9
|
+
- "ultraplot/**.pyi"
|
|
10
|
+
- ".github/workflows/black.yml"
|
|
11
|
+
- ".pre-commit-config.yaml"
|
|
12
|
+
- "pyproject.toml"
|
|
13
|
+
|
|
14
|
+
permissions:
|
|
15
|
+
contents: write
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: black-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: false
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
format:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v7
|
|
26
|
+
with:
|
|
27
|
+
ref: ${{ github.ref_name }}
|
|
28
|
+
|
|
29
|
+
- uses: actions/setup-python@v7
|
|
30
|
+
with:
|
|
31
|
+
python-version: "3.14"
|
|
32
|
+
|
|
33
|
+
- name: Install Black
|
|
34
|
+
run: python -m pip install black==26.5.1
|
|
35
|
+
|
|
36
|
+
- name: Format Python files
|
|
37
|
+
run: black ultraplot
|
|
38
|
+
|
|
39
|
+
- name: Commit formatting changes
|
|
40
|
+
run: |
|
|
41
|
+
if git diff --quiet -- '*.py' '*.pyi'; then
|
|
42
|
+
echo "Black made no changes."
|
|
43
|
+
exit 0
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
git config user.name "github-actions[bot]"
|
|
47
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
48
|
+
git add --update -- '*.py' '*.pyi'
|
|
49
|
+
git commit -m "Apply Black formatting"
|
|
50
|
+
git push
|
|
@@ -53,9 +53,15 @@ jobs:
|
|
|
53
53
|
with:
|
|
54
54
|
fetch-depth: 0
|
|
55
55
|
|
|
56
|
-
-
|
|
56
|
+
- name: Prepare compatible test environment
|
|
57
|
+
run: >-
|
|
58
|
+
python3 tools/ci/version_support.py
|
|
59
|
+
--matplotlib-version '${{ inputs.matplotlib-version }}'
|
|
60
|
+
--environment-output '${{ runner.temp }}/ultraplot-environment.yml'
|
|
61
|
+
|
|
62
|
+
- uses: mamba-org/setup-micromamba@v3.2.1
|
|
57
63
|
with:
|
|
58
|
-
environment-file:
|
|
64
|
+
environment-file: ${{ runner.temp }}/ultraplot-environment.yml
|
|
59
65
|
init-shell: bash
|
|
60
66
|
condarc-file: ./.github/micromamba-condarc.yml
|
|
61
67
|
post-cleanup: none
|
|
@@ -69,6 +75,14 @@ jobs:
|
|
|
69
75
|
- name: Build Ultraplot
|
|
70
76
|
run: |
|
|
71
77
|
pip install --no-build-isolation --no-deps .
|
|
78
|
+
python - <<'PY'
|
|
79
|
+
import sys
|
|
80
|
+
import matplotlib, mpltern, pycirclize
|
|
81
|
+
assert sys.version_info[:2] == tuple(map(int, '${{ inputs.python-version }}'.split('.')))
|
|
82
|
+
assert matplotlib.__version__.startswith('${{ inputs.matplotlib-version }}.')
|
|
83
|
+
print('Python executable:', sys.executable)
|
|
84
|
+
print('Matplotlib:', matplotlib.__version__)
|
|
85
|
+
PY
|
|
72
86
|
|
|
73
87
|
compare-baseline:
|
|
74
88
|
name: Compare baseline Python ${{ inputs.python-version }} with MPL ${{ inputs.matplotlib-version }}
|
|
@@ -100,9 +114,15 @@ jobs:
|
|
|
100
114
|
|
|
101
115
|
- uses: actions/checkout@v7
|
|
102
116
|
|
|
103
|
-
-
|
|
117
|
+
- name: Prepare compatible test environment
|
|
118
|
+
run: >-
|
|
119
|
+
python3 tools/ci/version_support.py
|
|
120
|
+
--matplotlib-version '${{ inputs.matplotlib-version }}'
|
|
121
|
+
--environment-output '${{ runner.temp }}/ultraplot-environment.yml'
|
|
122
|
+
|
|
123
|
+
- uses: mamba-org/setup-micromamba@v3.2.1
|
|
104
124
|
with:
|
|
105
|
-
environment-file:
|
|
125
|
+
environment-file: ${{ runner.temp }}/ultraplot-environment.yml
|
|
106
126
|
init-shell: bash
|
|
107
127
|
condarc-file: ./.github/micromamba-condarc.yml
|
|
108
128
|
post-cleanup: none
|
|
@@ -128,11 +148,26 @@ jobs:
|
|
|
128
148
|
echo "base_sha=${BASE_SHA}" >> "${GITHUB_OUTPUT}"
|
|
129
149
|
echo "Resolved baseline ref=${BASE_REF} sha=${BASE_SHA}"
|
|
130
150
|
|
|
151
|
+
- name: Check baseline version support
|
|
152
|
+
id: baseline-support
|
|
153
|
+
run: |
|
|
154
|
+
git show '${{ steps.baseline-ref.outputs.base_sha }}:pyproject.toml' > '${{ runner.temp }}/baseline-pyproject.toml'
|
|
155
|
+
python tools/ci/version_support.py \
|
|
156
|
+
--baseline-pyproject '${{ runner.temp }}/baseline-pyproject.toml' \
|
|
157
|
+
--python-version '${{ inputs.python-version }}' \
|
|
158
|
+
--matplotlib-version '${{ inputs.matplotlib-version }}' >> "$GITHUB_OUTPUT"
|
|
159
|
+
|
|
160
|
+
- name: Explain unavailable baseline
|
|
161
|
+
if: steps.baseline-support.outputs.baseline-supported != 'true'
|
|
162
|
+
run: |
|
|
163
|
+
echo '::notice::Image comparison skipped: the base commit does not support this Python/Matplotlib pair. PR tests still run in the coverage job.'
|
|
164
|
+
echo 'Image comparison skipped for Python ${{ inputs.python-version }} / Matplotlib ${{ inputs.matplotlib-version }}: base commit ${{ steps.baseline-ref.outputs.base_sha }} does not support this pair. The coverage job still tests the PR on this pair.' >> "$GITHUB_STEP_SUMMARY"
|
|
165
|
+
|
|
131
166
|
# Cache Baseline Figures (Restore step)
|
|
132
167
|
- name: Cache Baseline Figures
|
|
133
168
|
id: cache-baseline
|
|
134
169
|
uses: actions/cache@v6
|
|
135
|
-
if:
|
|
170
|
+
if: env.IS_PR == 'true' && steps.baseline-support.outputs.baseline-supported == 'true'
|
|
136
171
|
with:
|
|
137
172
|
path: ./ultraplot/tests/baseline # The directory to cache
|
|
138
173
|
# Key is based on OS, Python/Matplotlib versions, and the base commit SHA
|
|
@@ -143,7 +178,7 @@ jobs:
|
|
|
143
178
|
# Conditional Baseline Generation (Only runs on cache miss)
|
|
144
179
|
- name: Generate baseline from main
|
|
145
180
|
# Skip this step if the cache was found (cache-hit is true)
|
|
146
|
-
if: steps.cache-baseline.outputs.cache-hit != 'true' ||
|
|
181
|
+
if: steps.baseline-support.outputs.baseline-supported == 'true' && (steps.cache-baseline.outputs.cache-hit != 'true' || env.IS_PR != 'true')
|
|
147
182
|
run: |
|
|
148
183
|
mkdir -p ultraplot/tests/baseline
|
|
149
184
|
echo "TEST_MODE=${TEST_MODE}"
|
|
@@ -219,6 +254,7 @@ jobs:
|
|
|
219
254
|
|
|
220
255
|
# Image Comparison (Uses cached or newly generated baseline)
|
|
221
256
|
- name: Image Comparison Ultraplot
|
|
257
|
+
if: steps.baseline-support.outputs.baseline-supported == 'true'
|
|
222
258
|
run: |
|
|
223
259
|
set -uo pipefail
|
|
224
260
|
# This workflow runs in a login shell (bash -el), which executes
|
|
@@ -22,6 +22,8 @@ jobs:
|
|
|
22
22
|
- 'environment.yml'
|
|
23
23
|
- '.github/workflows/**'
|
|
24
24
|
- 'tools/ci/**'
|
|
25
|
+
- 'tools/expand_docstrings.py'
|
|
26
|
+
- 'setup.py'
|
|
25
27
|
|
|
26
28
|
select-tests:
|
|
27
29
|
runs-on: ubuntu-latest
|
|
@@ -50,7 +52,7 @@ jobs:
|
|
|
50
52
|
|
|
51
53
|
- name: Build test map on cache miss
|
|
52
54
|
if: steps.restore-map.outputs.cache-hit != 'true'
|
|
53
|
-
uses: mamba-org/setup-micromamba@v3.
|
|
55
|
+
uses: mamba-org/setup-micromamba@v3.2.1
|
|
54
56
|
with:
|
|
55
57
|
environment-file: ./environment.yml
|
|
56
58
|
init-shell: bash
|
|
@@ -99,6 +101,8 @@ jobs:
|
|
|
99
101
|
--always-full 'pyproject.toml' \
|
|
100
102
|
--always-full 'environment.yml' \
|
|
101
103
|
--always-full 'ultraplot/__init__.py' \
|
|
104
|
+
--always-full 'tools/expand_docstrings.py' \
|
|
105
|
+
--always-full 'setup.py' \
|
|
102
106
|
--ignore 'docs/**' \
|
|
103
107
|
--ignore 'README.rst'
|
|
104
108
|
echo "Selection output:"
|
|
@@ -126,7 +130,7 @@ jobs:
|
|
|
126
130
|
with:
|
|
127
131
|
fetch-depth: 0
|
|
128
132
|
|
|
129
|
-
- uses: actions/setup-python@
|
|
133
|
+
- uses: actions/setup-python@v7
|
|
130
134
|
with:
|
|
131
135
|
python-version: "3.11"
|
|
132
136
|
|
|
@@ -138,12 +142,55 @@ jobs:
|
|
|
138
142
|
echo "Detected test matrix: $(echo "$OUTPUT" | jq -c '.test_matrix')"
|
|
139
143
|
python tools/ci/version_support.py --format github-output >> $GITHUB_OUTPUT
|
|
140
144
|
|
|
145
|
+
static-api:
|
|
146
|
+
name: Static API and installed docstrings
|
|
147
|
+
runs-on: ubuntu-latest
|
|
148
|
+
needs:
|
|
149
|
+
- run-if-changes
|
|
150
|
+
if: always() && needs.run-if-changes.outputs.run == 'true'
|
|
151
|
+
steps:
|
|
152
|
+
- uses: actions/checkout@v7
|
|
153
|
+
|
|
154
|
+
- uses: actions/setup-python@v7
|
|
155
|
+
with:
|
|
156
|
+
python-version: "3.13"
|
|
157
|
+
cache: pip
|
|
158
|
+
|
|
159
|
+
- name: Install built package and check static API
|
|
160
|
+
run: |
|
|
161
|
+
pip install ".[typing]"
|
|
162
|
+
mkdir -p /tmp/ultraplot-static
|
|
163
|
+
cp tools/ci/static_consumer.py /tmp/ultraplot-static/consumer.py
|
|
164
|
+
cp tools/ci/check_installed_docstrings.py /tmp/ultraplot-static/check_docstrings.py
|
|
165
|
+
(
|
|
166
|
+
cd /tmp/ultraplot-static
|
|
167
|
+
basedpyright consumer.py --outputjson > basedpyright.json || true
|
|
168
|
+
python - <<'PY'
|
|
169
|
+
import json
|
|
170
|
+
|
|
171
|
+
report = json.load(open("/tmp/ultraplot-static/basedpyright.json", encoding="utf-8"))
|
|
172
|
+
summary = report["summary"]
|
|
173
|
+
print(
|
|
174
|
+
f"BasedPyright: {summary['errorCount']} errors, "
|
|
175
|
+
f"{summary['warningCount']} warnings"
|
|
176
|
+
)
|
|
177
|
+
if summary["errorCount"]:
|
|
178
|
+
raise SystemExit(1)
|
|
179
|
+
PY
|
|
180
|
+
python check_docstrings.py
|
|
181
|
+
)
|
|
182
|
+
|
|
141
183
|
coverage:
|
|
142
|
-
name: Coverage
|
|
184
|
+
name: Coverage Python ${{ matrix.python-version }} / MPL ${{ matrix.matplotlib-version }}
|
|
143
185
|
runs-on: ubuntu-latest
|
|
144
186
|
needs:
|
|
145
187
|
- run-if-changes
|
|
146
|
-
|
|
188
|
+
- get-versions
|
|
189
|
+
if: always() && needs.run-if-changes.outputs.run == 'true' && needs.get-versions.result == 'success' && github.event_name == 'pull_request'
|
|
190
|
+
strategy:
|
|
191
|
+
fail-fast: false
|
|
192
|
+
matrix:
|
|
193
|
+
include: ${{ fromJson(needs.get-versions.outputs.test-matrix) }}
|
|
147
194
|
defaults:
|
|
148
195
|
run:
|
|
149
196
|
shell: bash -el {0}
|
|
@@ -157,25 +204,41 @@ jobs:
|
|
|
157
204
|
with:
|
|
158
205
|
fetch-depth: 0
|
|
159
206
|
|
|
160
|
-
-
|
|
207
|
+
- name: Prepare compatible coverage environment
|
|
208
|
+
run: >-
|
|
209
|
+
python3 tools/ci/version_support.py
|
|
210
|
+
--matplotlib-version '${{ matrix.matplotlib-version }}'
|
|
211
|
+
--environment-output '${{ runner.temp }}/ultraplot-environment.yml'
|
|
212
|
+
|
|
213
|
+
- uses: mamba-org/setup-micromamba@v3.2.1
|
|
161
214
|
with:
|
|
162
|
-
environment-file:
|
|
215
|
+
environment-file: ${{ runner.temp }}/ultraplot-environment.yml
|
|
163
216
|
init-shell: bash
|
|
164
217
|
condarc-file: ./.github/micromamba-condarc.yml
|
|
165
218
|
post-cleanup: none
|
|
166
219
|
create-args: >-
|
|
167
220
|
--verbose
|
|
168
|
-
python
|
|
169
|
-
matplotlib
|
|
221
|
+
python=${{ matrix.python-version }}
|
|
222
|
+
matplotlib=${{ matrix.matplotlib-version }}
|
|
170
223
|
cache-environment: true
|
|
171
224
|
cache-downloads: false
|
|
172
225
|
|
|
173
226
|
- name: Build Ultraplot
|
|
174
227
|
run: |
|
|
175
|
-
pip install --no-build-isolation
|
|
228
|
+
pip install --no-build-isolation ".[mcp]"
|
|
176
229
|
|
|
177
230
|
- name: Run full coverage suite
|
|
178
231
|
run: |
|
|
232
|
+
python - <<'PY'
|
|
233
|
+
import sys
|
|
234
|
+
from importlib.metadata import version
|
|
235
|
+
import matplotlib, mpltern, pycirclize
|
|
236
|
+
assert sys.version_info[:2] == tuple(map(int, '${{ matrix.python-version }}'.split('.')))
|
|
237
|
+
assert matplotlib.__version__.startswith('${{ matrix.matplotlib-version }}.')
|
|
238
|
+
print('Python executable:', sys.executable)
|
|
239
|
+
for package in ('matplotlib', 'mpltern', 'pycirclize', 'cartopy'):
|
|
240
|
+
print(f'{package}: {version(package)}')
|
|
241
|
+
PY
|
|
179
242
|
pytest -q --tb=short --disable-warnings -n auto -p pytest_cov \
|
|
180
243
|
--cov=ultraplot --cov-branch --cov-context=test \
|
|
181
244
|
--cov-report=xml:coverage.xml --cov-report= \
|
|
@@ -186,7 +249,7 @@ jobs:
|
|
|
186
249
|
with:
|
|
187
250
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
188
251
|
files: ./coverage.xml
|
|
189
|
-
name: codecov-pr-
|
|
252
|
+
name: codecov-pr-python${{ matrix.python-version }}-mpl${{ matrix.matplotlib-version }}
|
|
190
253
|
|
|
191
254
|
build:
|
|
192
255
|
needs:
|
|
@@ -212,7 +275,9 @@ jobs:
|
|
|
212
275
|
build-success:
|
|
213
276
|
needs:
|
|
214
277
|
- build
|
|
278
|
+
- coverage
|
|
215
279
|
- run-if-changes
|
|
280
|
+
- static-api
|
|
216
281
|
if: always()
|
|
217
282
|
runs-on: ubuntu-latest
|
|
218
283
|
steps:
|
|
@@ -220,7 +285,7 @@ jobs:
|
|
|
220
285
|
if [[ '${{ needs.run-if-changes.outputs.run }}' == 'false' ]]; then
|
|
221
286
|
echo "No changes detected, tests skipped."
|
|
222
287
|
else
|
|
223
|
-
if [[ '${{ needs.build.result }}' == 'success' ]]; then
|
|
288
|
+
if [[ '${{ needs.build.result }}' == 'success' && '${{ needs.static-api.result }}' == 'success' ]]; then
|
|
224
289
|
echo "All tests passed successfully!"
|
|
225
290
|
else
|
|
226
291
|
echo "Tests failed!"
|
|
@@ -18,10 +18,18 @@ jobs:
|
|
|
18
18
|
with:
|
|
19
19
|
fetch-depth: 0
|
|
20
20
|
|
|
21
|
-
- uses: actions/setup-python@
|
|
21
|
+
- uses: actions/setup-python@v7
|
|
22
22
|
with:
|
|
23
23
|
python-version: "3.12"
|
|
24
24
|
|
|
25
|
+
- name: Pin version from tag on release builds
|
|
26
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
27
|
+
run: |
|
|
28
|
+
VERSION="${GITHUB_REF_NAME#v}"
|
|
29
|
+
echo "Using tagged version: $VERSION"
|
|
30
|
+
echo "SETUPTOOLS_SCM_PRETEND_VERSION=$VERSION" >> "$GITHUB_ENV"
|
|
31
|
+
shell: bash
|
|
32
|
+
|
|
25
33
|
- name: Ensure clean tree before build
|
|
26
34
|
run: |
|
|
27
35
|
git diff --quiet || (git status --short && git diff && exit 1)
|
|
@@ -46,7 +54,7 @@ jobs:
|
|
|
46
54
|
|
|
47
55
|
version=$(python -c "import ultraplot; print(ultraplot.__version__)")
|
|
48
56
|
echo "Version: $version"
|
|
49
|
-
if [[ "$version" == "0."* ]]; then
|
|
57
|
+
if [[ "${{ github.event_name }}" != "pull_request" && "$version" == "0."* ]]; then
|
|
50
58
|
echo "Version is not set correctly!"
|
|
51
59
|
exit 1
|
|
52
60
|
fi
|
|
@@ -22,6 +22,12 @@ docs/_build
|
|
|
22
22
|
docs/_static/ultraplotrc
|
|
23
23
|
docs/_static/rctable.rst
|
|
24
24
|
docs/_static/*
|
|
25
|
+
!docs/_static/alias-explorer-v3.css
|
|
26
|
+
!docs/_static/alias-explorer-v3.js
|
|
27
|
+
!docs/_static/alias-map.svg
|
|
28
|
+
!docs/_static/why_plots/
|
|
29
|
+
!docs/_static/example_plots/
|
|
30
|
+
!docs/_static/example_plots/data_aware_example.svg
|
|
25
31
|
*.html
|
|
26
32
|
docs/gallery/
|
|
27
33
|
docs/sg_execution_times.rst
|
|
@@ -6,7 +6,7 @@ ci:
|
|
|
6
6
|
autofix_prs: false
|
|
7
7
|
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
|
|
8
8
|
autoupdate_schedule: monthly
|
|
9
|
-
skip: []
|
|
9
|
+
skip: [black]
|
|
10
10
|
submodules: false
|
|
11
11
|
|
|
12
12
|
repos:
|
|
@@ -14,3 +14,11 @@ repos:
|
|
|
14
14
|
rev: 26.5.1
|
|
15
15
|
hooks:
|
|
16
16
|
- id: black
|
|
17
|
+
|
|
18
|
+
- repo: https://github.com/tombi-toml/tombi-pre-commit
|
|
19
|
+
rev: v1.5.2
|
|
20
|
+
hooks:
|
|
21
|
+
- id: tombi-format
|
|
22
|
+
args: ["--offline"]
|
|
23
|
+
- id: tombi-lint
|
|
24
|
+
args: ["--offline"]
|
|
@@ -10,13 +10,19 @@ with ``pip`` or ``conda`` as follows:
|
|
|
10
10
|
pip install ultraplot
|
|
11
11
|
conda install -c conda-forge ultraplot
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
For a minimal install, use ``--no-deps`` and install the core requirements:
|
|
13
|
+
pyCirclize-based plots require the optional ``circos`` extra:
|
|
15
14
|
|
|
16
15
|
.. code-block:: bash
|
|
17
16
|
|
|
18
|
-
pip install ultraplot
|
|
19
|
-
|
|
17
|
+
pip install 'ultraplot[circos]'
|
|
18
|
+
|
|
19
|
+
The ``docs`` extra also includes pyCirclize for building the documentation.
|
|
20
|
+
|
|
21
|
+
To install all optional dependency groups (``circos``, ``docs``, and ``stats``):
|
|
22
|
+
|
|
23
|
+
.. code-block:: bash
|
|
24
|
+
|
|
25
|
+
pip install 'ultraplot[all]'
|
|
20
26
|
|
|
21
27
|
Likewise, an existing installation of ultraplot can be upgraded to the latest version with:
|
|
22
28
|
|
|
@@ -1,46 +1,55 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ultraplot
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.0
|
|
4
4
|
Summary: A succinct matplotlib wrapper for making beautiful, publication-quality graphics.
|
|
5
5
|
Author-email: Casper van Elteren <caspervanelteren@gmail.com>, Luke Davis <lukelbd@gmail.com>
|
|
6
6
|
Maintainer-email: Casper van Elteren <caspervanelteren@gmail.com>, "Matthew R. Becker" <becker.mr@gmail.com>
|
|
7
|
-
License: MIT
|
|
7
|
+
License-Expression: MIT
|
|
8
8
|
Project-URL: Documentation, https://ultraplot.readthedocs.io
|
|
9
9
|
Project-URL: Issue Tracker, https://github.com/ultraplot/ultraplot/issues
|
|
10
10
|
Project-URL: Source Code, https://github.com/ultraplot/ultraplot
|
|
11
|
-
Classifier:
|
|
12
|
-
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Framework :: Matplotlib
|
|
13
12
|
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
-
Classifier: Framework :: Matplotlib
|
|
21
20
|
Requires-Python: <3.15,>=3.10
|
|
22
21
|
Description-Content-Type: text/x-rst
|
|
23
22
|
License-File: LICENSE.txt
|
|
23
|
+
Requires-Dist: matplotlib<3.12,>=3.9
|
|
24
24
|
Requires-Dist: numpy>=1.26.0
|
|
25
|
-
Requires-Dist: matplotlib<3.11,>=3.9
|
|
26
|
-
Requires-Dist: pycirclize>=1.10.1
|
|
27
25
|
Requires-Dist: typing-extensions; python_version < "3.12"
|
|
26
|
+
Provides-Extra: all
|
|
27
|
+
Requires-Dist: ultraplot[circos,docs,stats]; extra == "all"
|
|
28
|
+
Provides-Extra: circos
|
|
29
|
+
Requires-Dist: pycirclize>=1.10.1; extra == "circos"
|
|
28
30
|
Provides-Extra: docs
|
|
29
31
|
Requires-Dist: jupyter; extra == "docs"
|
|
30
32
|
Requires-Dist: jupytext; extra == "docs"
|
|
31
33
|
Requires-Dist: lxml-html-clean; extra == "docs"
|
|
32
34
|
Requires-Dist: markdown; extra == "docs"
|
|
33
35
|
Requires-Dist: mpltern; extra == "docs"
|
|
34
|
-
Requires-Dist:
|
|
36
|
+
Requires-Dist: pycirclize>=1.10.1; extra == "docs"
|
|
37
|
+
Requires-Dist: nbsphinx>=0.9.8; extra == "docs"
|
|
35
38
|
Requires-Dist: sphinx; extra == "docs"
|
|
36
39
|
Requires-Dist: sphinx-autoapi; extra == "docs"
|
|
37
|
-
Requires-Dist: sphinx-automodapi; extra == "docs"
|
|
40
|
+
Requires-Dist: sphinx-automodapi>=0.22; extra == "docs"
|
|
38
41
|
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
39
|
-
Requires-Dist: sphinx-design; extra == "docs"
|
|
42
|
+
Requires-Dist: sphinx-design>=0.7; extra == "docs"
|
|
40
43
|
Requires-Dist: sphinx-gallery; extra == "docs"
|
|
41
44
|
Requires-Dist: shibuya; extra == "docs"
|
|
42
45
|
Requires-Dist: sphinx-sitemap; extra == "docs"
|
|
43
46
|
Requires-Dist: typing-extensions; extra == "docs"
|
|
47
|
+
Provides-Extra: mcp
|
|
48
|
+
Requires-Dist: mcp<3,>=2.1; extra == "mcp"
|
|
49
|
+
Provides-Extra: stats
|
|
50
|
+
Requires-Dist: scipy; extra == "stats"
|
|
51
|
+
Provides-Extra: typing
|
|
52
|
+
Requires-Dist: basedpyright==1.31.4; extra == "typing"
|
|
44
53
|
Dynamic: license-file
|
|
45
54
|
|
|
46
55
|
.. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg
|
|
@@ -149,13 +158,19 @@ UltraPlot is published on `PyPi <https://pypi.org/project/ultraplot/>`__ and
|
|
|
149
158
|
pip install ultraplot
|
|
150
159
|
conda install -c conda-forge ultraplot
|
|
151
160
|
|
|
152
|
-
|
|
153
|
-
For a minimal install, use ``--no-deps`` and install the core requirements:
|
|
161
|
+
pyCirclize-based plots require the optional ``circos`` extra:
|
|
154
162
|
|
|
155
163
|
.. code-block:: bash
|
|
156
164
|
|
|
157
|
-
pip install ultraplot
|
|
158
|
-
|
|
165
|
+
pip install 'ultraplot[circos]'
|
|
166
|
+
|
|
167
|
+
The ``docs`` extra also includes pyCirclize for building the documentation.
|
|
168
|
+
|
|
169
|
+
To install the ``circos``, ``docs``, and ``stats`` dependency groups together:
|
|
170
|
+
|
|
171
|
+
.. code-block:: bash
|
|
172
|
+
|
|
173
|
+
pip install 'ultraplot[all]'
|
|
159
174
|
|
|
160
175
|
Likewise, an existing installation of UltraPlot can be upgraded
|
|
161
176
|
to the latest version with:
|
|
@@ -170,6 +185,113 @@ To install a development version of UltraPlot, you can use
|
|
|
170
185
|
or clone the repository and run ``pip install -e .``
|
|
171
186
|
inside the ``ultraplot`` folder.
|
|
172
187
|
|
|
188
|
+
MCP server
|
|
189
|
+
==========
|
|
190
|
+
|
|
191
|
+
UltraPlot includes a Model Context Protocol (MCP) server that lets AI assistants
|
|
192
|
+
search documentation and examples, inspect the live Python API, and read source
|
|
193
|
+
code and release notes.
|
|
194
|
+
|
|
195
|
+
Run directly with uvx
|
|
196
|
+
---------------------
|
|
197
|
+
|
|
198
|
+
With `uv <https://docs.astral.sh/uv/getting-started/installation/>`__ installed,
|
|
199
|
+
your MCP client can launch the server with ``uvx``. uv installs the package and
|
|
200
|
+
its dependencies in an isolated environment automatically, so you do not need
|
|
201
|
+
to create a virtual environment or install UltraPlot separately.
|
|
202
|
+
|
|
203
|
+
For a PyPI release containing the MCP server, the launch command is:
|
|
204
|
+
|
|
205
|
+
.. code-block:: bash
|
|
206
|
+
|
|
207
|
+
uvx --from 'ultraplot[mcp]' ultraplot-mcp
|
|
208
|
+
|
|
209
|
+
For clients that use an ``mcpServers`` configuration, add:
|
|
210
|
+
|
|
211
|
+
.. code-block:: json
|
|
212
|
+
|
|
213
|
+
{
|
|
214
|
+
"mcpServers": {
|
|
215
|
+
"ultraplot": {
|
|
216
|
+
"command": "uvx",
|
|
217
|
+
"args": ["--from", "ultraplot[mcp]", "ultraplot-mcp"]
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
The client starts the server when needed and communicates with it over stdio.
|
|
223
|
+
Other clients may use a different configuration format; use the same command
|
|
224
|
+
and arguments. ``uvx`` is equivalent to ``uv tool run``.
|
|
225
|
+
|
|
226
|
+
Until the MCP server is released on PyPI, run it directly from the feature
|
|
227
|
+
branch instead:
|
|
228
|
+
|
|
229
|
+
.. code-block:: bash
|
|
230
|
+
|
|
231
|
+
uvx --from 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp' ultraplot-mcp
|
|
232
|
+
|
|
233
|
+
For this development version, replace ``ultraplot[mcp]`` in the client
|
|
234
|
+
configuration with
|
|
235
|
+
``ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp``.
|
|
236
|
+
|
|
237
|
+
Install persistently with uv
|
|
238
|
+
----------------------------
|
|
239
|
+
|
|
240
|
+
Alternatively, keep the executable on your ``PATH`` by installing it as a uv
|
|
241
|
+
tool. For a PyPI release containing the MCP server:
|
|
242
|
+
|
|
243
|
+
.. code-block:: bash
|
|
244
|
+
|
|
245
|
+
uv tool install 'ultraplot[mcp]'
|
|
246
|
+
ultraplot-mcp --help
|
|
247
|
+
|
|
248
|
+
Before that release, install from the feature branch:
|
|
249
|
+
|
|
250
|
+
.. code-block:: bash
|
|
251
|
+
|
|
252
|
+
uv tool install 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp'
|
|
253
|
+
|
|
254
|
+
Then configure your client to launch ``ultraplot-mcp`` with no arguments.
|
|
255
|
+
If uv reports that its executable directory is missing from ``PATH``, run
|
|
256
|
+
``uv tool update-shell`` and restart your shell.
|
|
257
|
+
|
|
258
|
+
Install from a checkout
|
|
259
|
+
-----------------------
|
|
260
|
+
|
|
261
|
+
From a checkout containing the MCP implementation, install the optional ``mcp``
|
|
262
|
+
extra in the Python environment you want the server to use:
|
|
263
|
+
|
|
264
|
+
.. code-block:: bash
|
|
265
|
+
|
|
266
|
+
pip install -e '.[mcp]'
|
|
267
|
+
|
|
268
|
+
Connect an MCP client
|
|
269
|
+
---------------------
|
|
270
|
+
|
|
271
|
+
After installing persistently with uv or pip, register the server with an
|
|
272
|
+
installed Codex CLI:
|
|
273
|
+
|
|
274
|
+
.. code-block:: bash
|
|
275
|
+
|
|
276
|
+
ultraplot-mcp install codex
|
|
277
|
+
|
|
278
|
+
Restart Codex after registration. Try asking it to search the UltraPlot
|
|
279
|
+
examples for shared colorbars or inspect ``ultraplot.subplots``.
|
|
280
|
+
|
|
281
|
+
For other MCP clients, configure a stdio server with ``ultraplot-mcp`` as the
|
|
282
|
+
command and no arguments. Use the executable's absolute path if the client does
|
|
283
|
+
not inherit your Python environment's ``PATH``. Running ``ultraplot-mcp`` starts
|
|
284
|
+
the server; ``ultraplot-mcp --help`` lists the available commands.
|
|
285
|
+
|
|
286
|
+
Documentation tools read the checkout's ``docs`` directory. Direct uvx and uv
|
|
287
|
+
tool installations require a separate documentation checkout for these tools.
|
|
288
|
+
If documentation lives elsewhere, set ``ULTRAPLOT_MCP_DOCS`` to its absolute path in the MCP
|
|
289
|
+
client's server environment. Documentation is not currently bundled in the
|
|
290
|
+
Python package; API and source inspection use the installed UltraPlot version.
|
|
291
|
+
|
|
292
|
+
Citing UltraPlot
|
|
293
|
+
================
|
|
294
|
+
|
|
173
295
|
If you use UltraPlot in your research, please cite the latest release metadata in
|
|
174
296
|
``CITATION.cff``. GitHub can export this metadata as BibTeX from the
|
|
175
297
|
repository's "Cite this repository" panel, and the Zenodo badge below points to
|