ultraplot 2.6.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.6.0 → ultraplot-2.7.0}/.github/workflows/build-ultraplot.yml +42 -6
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/workflows/main.yml +75 -10
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/workflows/test-map.yml +1 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.gitignore +5 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.pre-commit-config.yaml +8 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/INSTALL.rst +10 -4
- {ultraplot-2.6.0/ultraplot.egg-info → ultraplot-2.7.0}/PKG-INFO +134 -14
- {ultraplot-2.6.0 → ultraplot-2.7.0}/README.rst +117 -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.7.0/docs/_static/example_plots/data_aware_example.svg +1159 -0
- ultraplot-2.7.0/docs/aliases.rst +1065 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/api.rst +10 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/colorbars_legends.py +4 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/conf.py +20 -4
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/configuration.rst +4 -0
- {ultraplot-2.6.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.6.0 → ultraplot-2.7.0}/docs/projections.py +3 -3
- ultraplot-2.7.0/docs/recipes.py +88 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/sphinxext/custom_roles.py +13 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/subplots.py +1 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/usage.rst +23 -5
- ultraplot-2.7.0/docs/why_ultraplot.py +136 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/environment.yml +3 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/noxfile.py +23 -12
- ultraplot-2.7.0/pyproject.toml +121 -0
- {ultraplot-2.6.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.6.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.6.0 → ultraplot-2.7.0}/ultraplot/__init__.py +2 -0
- 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.6.0 → ultraplot-2.7.0}/ultraplot/_lazy.py +2 -1
- ultraplot-2.7.0/ultraplot/_sharing.py +554 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/_subplots.py +22 -11
- ultraplot-2.7.0/ultraplot/_version.py +1 -0
- ultraplot-2.7.0/ultraplot/animation.py +782 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/_formatting.py +43 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/base.py +133 -176
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/cartesian.py +102 -63
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/container.py +62 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/geo.py +65 -83
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot.py +95 -132
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/circlize.py +30 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/ribbon.py +8 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/polar.py +3 -26
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/shared.py +69 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/taylor.py +6 -8
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/three.py +30 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/colorbar.py +76 -35
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/config.py +8 -2
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/constructor.py +4 -10
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/figure.py +568 -98
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/gridspec.py +70 -64
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/__init__.py +5 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/docstring.py +63 -58
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/guides.py +5 -4
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/inputs.py +16 -11
- ultraplot-2.7.0/ultraplot/internals/kwargs.py +684 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/rcsetup.py +7 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/warnings.py +6 -3
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/legend.py +13 -9
- ultraplot-2.7.0/ultraplot/mcp.py +695 -0
- ultraplot-2.7.0/ultraplot/py.typed +1 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/scale.py +4 -15
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/conftest.py +6 -0
- {ultraplot-2.6.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.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes.py +3 -3
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_circlize_integration.py +53 -2
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colorbar.py +78 -0
- {ultraplot-2.6.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.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_figure.py +151 -9
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_format.py +499 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_geographic.py +31 -18
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_gridspec.py +5 -2
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_imports.py +33 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_imshow.py +6 -5
- ultraplot-2.7.0/ultraplot/tests/test_kwargs_helpers.py +158 -0
- ultraplot-2.7.0/ultraplot/tests/test_mcp.py +306 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_statistical_plotting.py +6 -7
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_subplot_manager.py +4 -9
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_subplots.py +16 -8
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_textalign.py +3 -2
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/ticker.py +6 -1
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/ui.py +13 -3
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/ultralayout.py +22 -17
- {ultraplot-2.6.0 → ultraplot-2.7.0/ultraplot.egg-info}/PKG-INFO +134 -14
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot.egg-info/SOURCES.txt +32 -0
- ultraplot-2.7.0/ultraplot.egg-info/entry_points.txt +2 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot.egg-info/requires.txt +17 -5
- ultraplot-2.7.0/ultraplot.egg-info/scm_file_list.json +503 -0
- ultraplot-2.6.0/docs/index.rst +0 -164
- ultraplot-2.6.0/pyproject.toml +0 -93
- ultraplot-2.6.0/ultraplot/_version.py +0 -1
- ultraplot-2.6.0/ultraplot/internals/kwargs.py +0 -345
- ultraplot-2.6.0/ultraplot/tests/test_animation.py +0 -109
- ultraplot-2.6.0/ultraplot/tests/test_docstring_helpers.py +0 -63
- ultraplot-2.6.0/ultraplot/tests/test_kwargs_helpers.py +0 -80
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/dependabot.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/micromamba-condarc.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/workflows/black.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.github/workflows/publish-pypi.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.readthedocs.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/.zenodo.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/CITATION.cff +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/CODEOFCONDUCT.md +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/CONTRIBUTING.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/LICENSE.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/UltraPlotLogo.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/codecov.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/1dplots.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/2dplots.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/Makefile +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_ext/notoc.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_scripts/fetch_releases.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/custom.css +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/custom.js +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/cartesian_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/colorbars_legends_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/colormaps_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/panels_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/projection_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/example_plots/subplot_example.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_blank.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_long.png +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_long.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_social.png +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_social.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_static/logo_square.png +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/_templates/whatsnew_sidebar.html +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/about.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/basics.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/cartesian.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/colormaps.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/colors.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/cycles.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/colors/01_cycle_colormap.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/colors/02_diverging_colormap.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/colors/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/geo/01_robin_tracks.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/geo/02_orthographic_views.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/geo/03_projections_features.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/geo/04_choropleth.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/geo/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/layouts/01_shared_axes_abc.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/layouts/02_complex_layout_insets.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/layouts/03_spanning_labels.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/layouts/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/legend_types/01_semantic_legends.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/01_multi_colorbars.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/02_legend_inset_colorbar.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/03_semantic_legends.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/legends_colorbars/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/01_curved_quiver.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/02_network_graph.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/03_lollipop.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/04_datetime_series.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/05_box_violin.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/06_ridge_plot.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/07_radar.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/07_sankey.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/08_chord_diagram.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/08_ternary.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/09_phylogeny.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/10_circos_bed.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/11_topic_ribbon.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/12_taylor_diagram.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/examples/plot_types/README.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/external-links.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/faq.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/fonts.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/insets_panels.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/install.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/lazy_loading.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/make.bat +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/networks.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/requirements-rtd.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/sphinxext/jupytext_cache.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/stats.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/ultraplotrc +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/docs/why.rst +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/PermanentMarker-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/environment-logo.yml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/logo.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/run-linter.sh +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/webicon.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/logo/whyUltraPlot.svg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/setup.cfg +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/tools/ci/build_test_map.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/tools/ci/select_tests.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/__init__.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/__init__.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/curved_quiver.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/axes/plot_types/sankey.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Algae.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Amp.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/BR.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Balance.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues1_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues4_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues5.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues6.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues7.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues8.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Blues9.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Boreal.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns1.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns4.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns5.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns6.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns7.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns8.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Browns9.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/ColdHot.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Crest.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Curl.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Deep.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Delta.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Dense.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Div.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/DryWet.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Dusk.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Fire.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Flare.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Glacial.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens1_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens3_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens4.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens5.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens6_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens7.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Greens8.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Haline.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Ice.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/IceFire.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Mako.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Marine.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Matter.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Mono.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/MonoCycle.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/NegPos.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges1.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oranges4.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Oxy.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Phase.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples1_r.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Purples3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds1.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds4.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Reds5.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Rocket.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Solar.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Speed.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Stellar.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Sunrise.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Sunset.json +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Tempo.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Thermal.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Turbid.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Vivid.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Vlag.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows1.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows2.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows3.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/Yellows4.xml +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/acton.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/bam.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/bamO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/bamako.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlow.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlowK.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/batlowW.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/berlin.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/bilbao.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/broc.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/brocO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/buda.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/bukavu.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/cork.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/corkO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/davos.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/devon.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/fes.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/hawaii.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/imola.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/lajolla.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/lapaz.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/lisbon.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/nuuk.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/oleron.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/oslo.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/roma.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/romaO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/tofino.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/tokyo.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/turku.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/vanimo.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/vik.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cmaps/vikO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/colors/opencolor.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/colors/xkcd.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/colors.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/538.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/FlatUI.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/Qual1.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/Qual2.rgb +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/bmh.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/classic.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/colorblind.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/colorblind10.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/default.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/ggplot.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/seaborn.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/cycles/tableau.hex +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/demos.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/externals/__init__.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/externals/hsluv.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Medium.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Black.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Medium.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_FIRAMATH.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_FIRASANS.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_NOTOSANS.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_NOTOSERIF.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_OPENSANS.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_ROBOTO.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_SOURCESANS.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_SOURCESERIF.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_TEXGYRE.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/LICENSE_UBUNTU.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSans-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Black.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Medium.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Roboto-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Light.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreheros-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyreschola-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-bold.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-italic.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/fonts/texgyretermes-regular.ttf +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/benchmarks.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/context.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/fonts.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/labels.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/internals/versions.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/proj.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/__init__.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_1dplots.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes_alt_styles.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_axes_base_colorbar_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_base.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colorbar_helpers_extra.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colormap.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colormap_helpers_extra.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colors.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_colors_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_config.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_config_helpers_extra.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_constructor.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_constructor_helpers_extra.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_demos.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs_fetch_releases.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_docs_search.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_axes_container_integration.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_container_edge_cases.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_external_container_mocked.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_fonts.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_handlers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_inputs.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_inputs_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_inset.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_integration.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_legend.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_plot.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_proj_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_projections.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_rcsetup_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_release_metadata.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_scale_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_semantic_legend.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_text_helpers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_tickers.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/tests/test_ultralayout.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/text.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/textalign.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot/utils.py +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot.egg-info/dependency_links.txt +0 -0
- {ultraplot-2.6.0 → ultraplot-2.7.0}/ultraplot.egg-info/top_level.txt +0 -0
|
@@ -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.1
|
|
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:"
|
|
@@ -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!"
|
|
@@ -22,7 +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
|
|
25
28
|
!docs/_static/why_plots/
|
|
29
|
+
!docs/_static/example_plots/
|
|
30
|
+
!docs/_static/example_plots/data_aware_example.svg
|
|
26
31
|
*.html
|
|
27
32
|
docs/gallery/
|
|
28
33
|
docs/sg_execution_times.rst
|
|
@@ -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,48 +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"
|
|
44
49
|
Provides-Extra: stats
|
|
45
50
|
Requires-Dist: scipy; extra == "stats"
|
|
51
|
+
Provides-Extra: typing
|
|
52
|
+
Requires-Dist: basedpyright==1.31.4; extra == "typing"
|
|
46
53
|
Dynamic: license-file
|
|
47
54
|
|
|
48
55
|
.. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg
|
|
@@ -151,13 +158,19 @@ UltraPlot is published on `PyPi <https://pypi.org/project/ultraplot/>`__ and
|
|
|
151
158
|
pip install ultraplot
|
|
152
159
|
conda install -c conda-forge ultraplot
|
|
153
160
|
|
|
154
|
-
|
|
155
|
-
For a minimal install, use ``--no-deps`` and install the core requirements:
|
|
161
|
+
pyCirclize-based plots require the optional ``circos`` extra:
|
|
156
162
|
|
|
157
163
|
.. code-block:: bash
|
|
158
164
|
|
|
159
|
-
pip install ultraplot
|
|
160
|
-
|
|
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]'
|
|
161
174
|
|
|
162
175
|
Likewise, an existing installation of UltraPlot can be upgraded
|
|
163
176
|
to the latest version with:
|
|
@@ -172,6 +185,113 @@ To install a development version of UltraPlot, you can use
|
|
|
172
185
|
or clone the repository and run ``pip install -e .``
|
|
173
186
|
inside the ``ultraplot`` folder.
|
|
174
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
|
+
|
|
175
295
|
If you use UltraPlot in your research, please cite the latest release metadata in
|
|
176
296
|
``CITATION.cff``. GitHub can export this metadata as BibTeX from the
|
|
177
297
|
repository's "Cite this repository" panel, and the Zenodo badge below points to
|
|
@@ -104,13 +104,19 @@ UltraPlot is published on `PyPi <https://pypi.org/project/ultraplot/>`__ and
|
|
|
104
104
|
pip install ultraplot
|
|
105
105
|
conda install -c conda-forge ultraplot
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
For a minimal install, use ``--no-deps`` and install the core requirements:
|
|
107
|
+
pyCirclize-based plots require the optional ``circos`` extra:
|
|
109
108
|
|
|
110
109
|
.. code-block:: bash
|
|
111
110
|
|
|
112
|
-
pip install ultraplot
|
|
113
|
-
|
|
111
|
+
pip install 'ultraplot[circos]'
|
|
112
|
+
|
|
113
|
+
The ``docs`` extra also includes pyCirclize for building the documentation.
|
|
114
|
+
|
|
115
|
+
To install the ``circos``, ``docs``, and ``stats`` dependency groups together:
|
|
116
|
+
|
|
117
|
+
.. code-block:: bash
|
|
118
|
+
|
|
119
|
+
pip install 'ultraplot[all]'
|
|
114
120
|
|
|
115
121
|
Likewise, an existing installation of UltraPlot can be upgraded
|
|
116
122
|
to the latest version with:
|
|
@@ -125,6 +131,113 @@ To install a development version of UltraPlot, you can use
|
|
|
125
131
|
or clone the repository and run ``pip install -e .``
|
|
126
132
|
inside the ``ultraplot`` folder.
|
|
127
133
|
|
|
134
|
+
MCP server
|
|
135
|
+
==========
|
|
136
|
+
|
|
137
|
+
UltraPlot includes a Model Context Protocol (MCP) server that lets AI assistants
|
|
138
|
+
search documentation and examples, inspect the live Python API, and read source
|
|
139
|
+
code and release notes.
|
|
140
|
+
|
|
141
|
+
Run directly with uvx
|
|
142
|
+
---------------------
|
|
143
|
+
|
|
144
|
+
With `uv <https://docs.astral.sh/uv/getting-started/installation/>`__ installed,
|
|
145
|
+
your MCP client can launch the server with ``uvx``. uv installs the package and
|
|
146
|
+
its dependencies in an isolated environment automatically, so you do not need
|
|
147
|
+
to create a virtual environment or install UltraPlot separately.
|
|
148
|
+
|
|
149
|
+
For a PyPI release containing the MCP server, the launch command is:
|
|
150
|
+
|
|
151
|
+
.. code-block:: bash
|
|
152
|
+
|
|
153
|
+
uvx --from 'ultraplot[mcp]' ultraplot-mcp
|
|
154
|
+
|
|
155
|
+
For clients that use an ``mcpServers`` configuration, add:
|
|
156
|
+
|
|
157
|
+
.. code-block:: json
|
|
158
|
+
|
|
159
|
+
{
|
|
160
|
+
"mcpServers": {
|
|
161
|
+
"ultraplot": {
|
|
162
|
+
"command": "uvx",
|
|
163
|
+
"args": ["--from", "ultraplot[mcp]", "ultraplot-mcp"]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
The client starts the server when needed and communicates with it over stdio.
|
|
169
|
+
Other clients may use a different configuration format; use the same command
|
|
170
|
+
and arguments. ``uvx`` is equivalent to ``uv tool run``.
|
|
171
|
+
|
|
172
|
+
Until the MCP server is released on PyPI, run it directly from the feature
|
|
173
|
+
branch instead:
|
|
174
|
+
|
|
175
|
+
.. code-block:: bash
|
|
176
|
+
|
|
177
|
+
uvx --from 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp' ultraplot-mcp
|
|
178
|
+
|
|
179
|
+
For this development version, replace ``ultraplot[mcp]`` in the client
|
|
180
|
+
configuration with
|
|
181
|
+
``ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp``.
|
|
182
|
+
|
|
183
|
+
Install persistently with uv
|
|
184
|
+
----------------------------
|
|
185
|
+
|
|
186
|
+
Alternatively, keep the executable on your ``PATH`` by installing it as a uv
|
|
187
|
+
tool. For a PyPI release containing the MCP server:
|
|
188
|
+
|
|
189
|
+
.. code-block:: bash
|
|
190
|
+
|
|
191
|
+
uv tool install 'ultraplot[mcp]'
|
|
192
|
+
ultraplot-mcp --help
|
|
193
|
+
|
|
194
|
+
Before that release, install from the feature branch:
|
|
195
|
+
|
|
196
|
+
.. code-block:: bash
|
|
197
|
+
|
|
198
|
+
uv tool install 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp'
|
|
199
|
+
|
|
200
|
+
Then configure your client to launch ``ultraplot-mcp`` with no arguments.
|
|
201
|
+
If uv reports that its executable directory is missing from ``PATH``, run
|
|
202
|
+
``uv tool update-shell`` and restart your shell.
|
|
203
|
+
|
|
204
|
+
Install from a checkout
|
|
205
|
+
-----------------------
|
|
206
|
+
|
|
207
|
+
From a checkout containing the MCP implementation, install the optional ``mcp``
|
|
208
|
+
extra in the Python environment you want the server to use:
|
|
209
|
+
|
|
210
|
+
.. code-block:: bash
|
|
211
|
+
|
|
212
|
+
pip install -e '.[mcp]'
|
|
213
|
+
|
|
214
|
+
Connect an MCP client
|
|
215
|
+
---------------------
|
|
216
|
+
|
|
217
|
+
After installing persistently with uv or pip, register the server with an
|
|
218
|
+
installed Codex CLI:
|
|
219
|
+
|
|
220
|
+
.. code-block:: bash
|
|
221
|
+
|
|
222
|
+
ultraplot-mcp install codex
|
|
223
|
+
|
|
224
|
+
Restart Codex after registration. Try asking it to search the UltraPlot
|
|
225
|
+
examples for shared colorbars or inspect ``ultraplot.subplots``.
|
|
226
|
+
|
|
227
|
+
For other MCP clients, configure a stdio server with ``ultraplot-mcp`` as the
|
|
228
|
+
command and no arguments. Use the executable's absolute path if the client does
|
|
229
|
+
not inherit your Python environment's ``PATH``. Running ``ultraplot-mcp`` starts
|
|
230
|
+
the server; ``ultraplot-mcp --help`` lists the available commands.
|
|
231
|
+
|
|
232
|
+
Documentation tools read the checkout's ``docs`` directory. Direct uvx and uv
|
|
233
|
+
tool installations require a separate documentation checkout for these tools.
|
|
234
|
+
If documentation lives elsewhere, set ``ULTRAPLOT_MCP_DOCS`` to its absolute path in the MCP
|
|
235
|
+
client's server environment. Documentation is not currently bundled in the
|
|
236
|
+
Python package; API and source inspection use the installed UltraPlot version.
|
|
237
|
+
|
|
238
|
+
Citing UltraPlot
|
|
239
|
+
================
|
|
240
|
+
|
|
128
241
|
If you use UltraPlot in your research, please cite the latest release metadata in
|
|
129
242
|
``CITATION.cff``. GitHub can export this metadata as BibTeX from the
|
|
130
243
|
repository's "Cite this repository" panel, and the Zenodo badge below points to
|