ultraplot 2.7.3__tar.gz → 2.7.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. {ultraplot-2.7.3 → ultraplot-2.7.4}/.pre-commit-config.yaml +2 -2
  2. {ultraplot-2.7.3/ultraplot.egg-info → ultraplot-2.7.4}/PKG-INFO +3 -111
  3. {ultraplot-2.7.3 → ultraplot-2.7.4}/README.rst +2 -110
  4. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/index.rst +4 -0
  5. ultraplot-2.7.4/docs/mcp.rst +105 -0
  6. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/subplots.py +4 -0
  7. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/__init__.py +14 -35
  8. ultraplot-2.7.3/ultraplot/config.py → ultraplot-2.7.4/ultraplot/_config.py +31 -1
  9. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_interaction.py +1 -1
  10. ultraplot-2.7.4/ultraplot/_version.py +1 -0
  11. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/base.py +1 -1
  12. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/cartesian.py +1 -1
  13. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/container.py +1 -1
  14. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/geo.py +1 -1
  15. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot.py +1 -1
  16. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/circlize.py +12 -11
  17. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/raincloud.py +1 -1
  18. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/sankey.py +1 -1
  19. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/polar.py +1 -1
  20. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/shared.py +1 -1
  21. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/taylor.py +1 -1
  22. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/colorbar.py +1 -1
  23. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/colors.py +1 -1
  24. ultraplot-2.7.4/ultraplot/config.py +36 -0
  25. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/constructor.py +14 -5
  26. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/demos.py +1 -1
  27. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/figure.py +1 -1
  28. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/gridspec.py +72 -25
  29. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/fonts.py +1 -1
  30. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/inputs.py +2 -2
  31. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/labels.py +1 -1
  32. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/legend.py +1 -1
  33. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/scale.py +2 -2
  34. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_axes.py +4 -0
  35. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_circlize_integration.py +30 -7
  36. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_config.py +121 -8
  37. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_config_helpers_extra.py +1 -1
  38. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_figure.py +47 -8
  39. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_ultralayout.py +217 -0
  40. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/ticker.py +1 -1
  41. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/ultralayout.py +124 -118
  42. {ultraplot-2.7.3 → ultraplot-2.7.4/ultraplot.egg-info}/PKG-INFO +3 -111
  43. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/SOURCES.txt +2 -0
  44. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/scm_file_list.json +2 -0
  45. ultraplot-2.7.3/ultraplot/_version.py +0 -1
  46. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/ISSUE_TEMPLATE.md +0 -0
  47. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/dependabot.yml +0 -0
  48. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/micromamba-condarc.yml +0 -0
  49. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/workflows/black.yml +0 -0
  50. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/workflows/build-ultraplot.yml +0 -0
  51. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/workflows/main.yml +0 -0
  52. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/workflows/publish-pypi.yml +0 -0
  53. {ultraplot-2.7.3 → ultraplot-2.7.4}/.github/workflows/test-map.yml +0 -0
  54. {ultraplot-2.7.3 → ultraplot-2.7.4}/.gitignore +0 -0
  55. {ultraplot-2.7.3 → ultraplot-2.7.4}/.readthedocs.yml +0 -0
  56. {ultraplot-2.7.3 → ultraplot-2.7.4}/.zenodo.json +0 -0
  57. {ultraplot-2.7.3 → ultraplot-2.7.4}/CITATION.cff +0 -0
  58. {ultraplot-2.7.3 → ultraplot-2.7.4}/CODEOFCONDUCT.md +0 -0
  59. {ultraplot-2.7.3 → ultraplot-2.7.4}/CONTRIBUTING.rst +0 -0
  60. {ultraplot-2.7.3 → ultraplot-2.7.4}/INSTALL.rst +0 -0
  61. {ultraplot-2.7.3 → ultraplot-2.7.4}/LICENSE.txt +0 -0
  62. {ultraplot-2.7.3 → ultraplot-2.7.4}/MANIFEST.in +0 -0
  63. {ultraplot-2.7.3 → ultraplot-2.7.4}/UltraPlotLogo.svg +0 -0
  64. {ultraplot-2.7.3 → ultraplot-2.7.4}/codecov.yml +0 -0
  65. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/1dplots.py +0 -0
  66. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/2dplots.py +0 -0
  67. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/Makefile +0 -0
  68. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_ext/drawio-lazy.js +0 -0
  69. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_ext/drawio.py +0 -0
  70. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_ext/notoc.py +0 -0
  71. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_scripts/build_plot_types.py +0 -0
  72. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_scripts/fetch_releases.py +0 -0
  73. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/alias-explorer-v3.css +0 -0
  74. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/alias-explorer-v3.js +0 -0
  75. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/alias-map.svg +0 -0
  76. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/custom.css +0 -0
  77. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/custom.js +0 -0
  78. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/cartesian_example.svg +0 -0
  79. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/colorbars_legends_example.svg +0 -0
  80. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/colormaps_example.svg +0 -0
  81. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/data_aware_example.svg +0 -0
  82. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/panels_example.svg +0 -0
  83. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/projection_example.svg +0 -0
  84. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/example_plots/subplot_example.svg +0 -0
  85. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_blank.svg +0 -0
  86. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_long.png +0 -0
  87. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_long.svg +0 -0
  88. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_social.png +0 -0
  89. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_social.svg +0 -0
  90. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/logo_square.png +0 -0
  91. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_static/plot_types/raincloud.png +0 -0
  92. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/_templates/whatsnew_sidebar.html +0 -0
  93. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/about.rst +0 -0
  94. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/aliases.rst +0 -0
  95. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/api.rst +0 -0
  96. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/basics.py +0 -0
  97. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/cartesian.py +0 -0
  98. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/cheatsheet.rst +0 -0
  99. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/colorbars_legends.py +0 -0
  100. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/colormaps.py +0 -0
  101. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/colors.py +0 -0
  102. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/conf.py +0 -0
  103. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/configuration.rst +0 -0
  104. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/contributing.rst +0 -0
  105. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/cycles.py +0 -0
  106. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/data_aware.py +0 -0
  107. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/README.txt +0 -0
  108. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/colors/01_cycle_colormap.py +0 -0
  109. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/colors/02_diverging_colormap.py +0 -0
  110. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/colors/README.txt +0 -0
  111. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/geo/01_robin_tracks.py +0 -0
  112. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/geo/02_orthographic_views.py +0 -0
  113. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/geo/03_projections_features.py +0 -0
  114. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/geo/04_choropleth.py +0 -0
  115. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/geo/README.txt +0 -0
  116. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/layouts/01_shared_axes_abc.py +0 -0
  117. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/layouts/02_complex_layout_insets.py +0 -0
  118. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/layouts/03_spanning_labels.py +0 -0
  119. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/layouts/README.txt +0 -0
  120. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/legend_types/01_semantic_legends.py +0 -0
  121. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/legends_colorbars/01_multi_colorbars.py +0 -0
  122. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/legends_colorbars/02_legend_inset_colorbar.py +0 -0
  123. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/legends_colorbars/03_semantic_legends.py +0 -0
  124. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/legends_colorbars/README.txt +0 -0
  125. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/01_curved_quiver.py +0 -0
  126. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/02_network_graph.py +0 -0
  127. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/03_lollipop.py +0 -0
  128. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/04_datetime_series.py +0 -0
  129. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/05_box_violin.py +0 -0
  130. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/06_ridge_plot.py +0 -0
  131. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/07_radar.py +0 -0
  132. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/07_sankey.py +0 -0
  133. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/08_chord_diagram.py +0 -0
  134. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/08_ternary.py +0 -0
  135. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/09_phylogeny.py +0 -0
  136. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/10_circos_bed.py +0 -0
  137. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/11_topic_ribbon.py +0 -0
  138. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/12_taylor_diagram.py +0 -0
  139. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/13_raincloud.py +0 -0
  140. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/examples/plot_types/README.txt +0 -0
  141. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/external-links.rst +0 -0
  142. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/faq.rst +0 -0
  143. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/first_figure.py +0 -0
  144. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/fonts.py +0 -0
  145. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/insets_panels.py +0 -0
  146. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/install.rst +0 -0
  147. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/keyword_aliases.rst +0 -0
  148. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/lazy_loading.rst +0 -0
  149. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/make.bat +0 -0
  150. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/networks.py +0 -0
  151. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/plot_types.rst +0 -0
  152. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/projections.py +0 -0
  153. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/recipes.py +0 -0
  154. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/requirements-rtd.txt +0 -0
  155. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/sphinxext/custom_roles.py +0 -0
  156. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/sphinxext/jupytext_cache.py +0 -0
  157. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/stats.py +0 -0
  158. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/ultraplotrc +0 -0
  159. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/usage.rst +0 -0
  160. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/why.rst +0 -0
  161. {ultraplot-2.7.3 → ultraplot-2.7.4}/docs/why_ultraplot.py +0 -0
  162. {ultraplot-2.7.3 → ultraplot-2.7.4}/environment.yml +0 -0
  163. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/PermanentMarker-Regular.ttf +0 -0
  164. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/environment-logo.yml +0 -0
  165. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/logo.py +0 -0
  166. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/run-linter.sh +0 -0
  167. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/webicon.py +0 -0
  168. {ultraplot-2.7.3 → ultraplot-2.7.4}/logo/whyUltraPlot.svg +0 -0
  169. {ultraplot-2.7.3 → ultraplot-2.7.4}/noxfile.py +0 -0
  170. {ultraplot-2.7.3 → ultraplot-2.7.4}/pyproject.toml +0 -0
  171. {ultraplot-2.7.3 → ultraplot-2.7.4}/requirements-minimal.txt +0 -0
  172. {ultraplot-2.7.3 → ultraplot-2.7.4}/setup.cfg +0 -0
  173. {ultraplot-2.7.3 → ultraplot-2.7.4}/setup.py +0 -0
  174. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/build_test_map.py +0 -0
  175. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/check_installed_docstrings.py +0 -0
  176. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/collect_failed_comparisons.py +0 -0
  177. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/failed_comparisons_template.html +0 -0
  178. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/select_tests.py +0 -0
  179. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/static_consumer.py +0 -0
  180. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/test_collect_failed_comparisons.py +0 -0
  181. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/ci/version_support.py +0 -0
  182. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/expand_docstrings.py +0 -0
  183. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/generate_alias_figure.py +0 -0
  184. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/generate_alias_reference.py +0 -0
  185. {ultraplot-2.7.3 → ultraplot-2.7.4}/tools/serve_alias_docs.py +0 -0
  186. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/.opencode/goals/state.json.lock +0 -0
  187. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/.opencode/goals/state.json.sessions/.migration-v1-complete +0 -0
  188. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json +0 -0
  189. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json.lock +0 -0
  190. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_animation.py +0 -0
  191. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_layout.py +0 -0
  192. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_lazy.py +0 -0
  193. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_sharing.py +0 -0
  194. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/_subplots.py +0 -0
  195. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/animation.py +0 -0
  196. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/__init__.py +0 -0
  197. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/_formatting.py +0 -0
  198. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/__init__.py +0 -0
  199. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/curved_quiver.py +0 -0
  200. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/plot_types/ribbon.py +0 -0
  201. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/axes/three.py +0 -0
  202. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Algae.rgb +0 -0
  203. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Amp.rgb +0 -0
  204. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/BR.rgb +0 -0
  205. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Balance.rgb +0 -0
  206. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues1_r.xml +0 -0
  207. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues2.xml +0 -0
  208. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues3.xml +0 -0
  209. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues4_r.xml +0 -0
  210. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues5.xml +0 -0
  211. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues6.xml +0 -0
  212. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues7.xml +0 -0
  213. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues8.xml +0 -0
  214. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Blues9.xml +0 -0
  215. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Boreal.json +0 -0
  216. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns1.xml +0 -0
  217. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns2.xml +0 -0
  218. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns3.xml +0 -0
  219. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns4.xml +0 -0
  220. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns5.xml +0 -0
  221. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns6.xml +0 -0
  222. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns7.xml +0 -0
  223. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns8.xml +0 -0
  224. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Browns9.xml +0 -0
  225. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/ColdHot.rgb +0 -0
  226. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Crest.rgb +0 -0
  227. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Curl.rgb +0 -0
  228. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Deep.rgb +0 -0
  229. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Delta.rgb +0 -0
  230. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Dense.rgb +0 -0
  231. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Div.json +0 -0
  232. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/DryWet.json +0 -0
  233. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Dusk.json +0 -0
  234. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Fire.json +0 -0
  235. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Flare.rgb +0 -0
  236. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Glacial.json +0 -0
  237. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens1_r.xml +0 -0
  238. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens2.xml +0 -0
  239. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens3_r.xml +0 -0
  240. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens4.xml +0 -0
  241. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens5.xml +0 -0
  242. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens6_r.xml +0 -0
  243. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens7.xml +0 -0
  244. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Greens8.xml +0 -0
  245. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Haline.rgb +0 -0
  246. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Ice.rgb +0 -0
  247. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/IceFire.rgb +0 -0
  248. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Mako.rgb +0 -0
  249. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Marine.json +0 -0
  250. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Matter.rgb +0 -0
  251. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Mono.txt +0 -0
  252. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/MonoCycle.txt +0 -0
  253. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/NegPos.json +0 -0
  254. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Oranges1.xml +0 -0
  255. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Oranges2.xml +0 -0
  256. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Oranges3.xml +0 -0
  257. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Oranges4.xml +0 -0
  258. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Oxy.rgb +0 -0
  259. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Phase.rgb +0 -0
  260. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Purples1_r.xml +0 -0
  261. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Purples2.xml +0 -0
  262. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Purples3.xml +0 -0
  263. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Reds1.xml +0 -0
  264. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Reds2.xml +0 -0
  265. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Reds3.xml +0 -0
  266. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Reds4.xml +0 -0
  267. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Reds5.xml +0 -0
  268. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Rocket.rgb +0 -0
  269. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Solar.rgb +0 -0
  270. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Speed.rgb +0 -0
  271. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Stellar.json +0 -0
  272. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Sunrise.json +0 -0
  273. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Sunset.json +0 -0
  274. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Tempo.rgb +0 -0
  275. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Thermal.rgb +0 -0
  276. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Turbid.rgb +0 -0
  277. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Vivid.xml +0 -0
  278. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Vlag.rgb +0 -0
  279. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Yellows1.xml +0 -0
  280. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Yellows2.xml +0 -0
  281. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Yellows3.xml +0 -0
  282. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/Yellows4.xml +0 -0
  283. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/acton.txt +0 -0
  284. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/bam.txt +0 -0
  285. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/bamO.txt +0 -0
  286. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/bamako.txt +0 -0
  287. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/batlow.txt +0 -0
  288. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/batlowK.txt +0 -0
  289. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/batlowW.txt +0 -0
  290. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/berlin.txt +0 -0
  291. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/bilbao.txt +0 -0
  292. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/broc.txt +0 -0
  293. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/brocO.txt +0 -0
  294. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/buda.txt +0 -0
  295. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/bukavu.txt +0 -0
  296. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/cork.txt +0 -0
  297. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/corkO.txt +0 -0
  298. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/davos.txt +0 -0
  299. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/devon.txt +0 -0
  300. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/fes.txt +0 -0
  301. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/hawaii.txt +0 -0
  302. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/imola.txt +0 -0
  303. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/lajolla.txt +0 -0
  304. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/lapaz.txt +0 -0
  305. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/lisbon.txt +0 -0
  306. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/nuuk.txt +0 -0
  307. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/oleron.txt +0 -0
  308. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/oslo.txt +0 -0
  309. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/roma.txt +0 -0
  310. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/romaO.txt +0 -0
  311. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/tofino.txt +0 -0
  312. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/tokyo.txt +0 -0
  313. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/turku.txt +0 -0
  314. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/vanimo.txt +0 -0
  315. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/vik.txt +0 -0
  316. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cmaps/vikO.txt +0 -0
  317. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/colors/opencolor.txt +0 -0
  318. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/colors/xkcd.txt +0 -0
  319. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/538.hex +0 -0
  320. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/FlatUI.hex +0 -0
  321. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/Qual1.rgb +0 -0
  322. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/Qual2.rgb +0 -0
  323. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/bmh.hex +0 -0
  324. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/classic.hex +0 -0
  325. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/colorblind.hex +0 -0
  326. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/colorblind10.hex +0 -0
  327. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/default.hex +0 -0
  328. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/ggplot.hex +0 -0
  329. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/seaborn.hex +0 -0
  330. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/cycles/tableau.hex +0 -0
  331. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/externals/__init__.py +0 -0
  332. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/externals/hsluv.py +0 -0
  333. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-Bold.ttf +0 -0
  334. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
  335. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
  336. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-Light.ttf +0 -0
  337. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-Medium.ttf +0 -0
  338. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-Regular.ttf +0 -0
  339. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
  340. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
  341. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Black.ttf +0 -0
  342. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
  343. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Bold.ttf +0 -0
  344. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
  345. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
  346. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
  347. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
  348. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
  349. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Italic.ttf +0 -0
  350. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Light.ttf +0 -0
  351. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
  352. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Medium.ttf +0 -0
  353. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
  354. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-Regular.ttf +0 -0
  355. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
  356. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
  357. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_FIRAMATH.txt +0 -0
  358. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_FIRASANS.txt +0 -0
  359. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_NOTOSANS.txt +0 -0
  360. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_NOTOSERIF.txt +0 -0
  361. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_OPENSANS.txt +0 -0
  362. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_ROBOTO.txt +0 -0
  363. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_SOURCESANS.txt +0 -0
  364. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_SOURCESERIF.txt +0 -0
  365. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_TEXGYRE.txt +0 -0
  366. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/LICENSE_UBUNTU.txt +0 -0
  367. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSans-Bold.ttf +0 -0
  368. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
  369. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSans-Italic.ttf +0 -0
  370. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSans-Regular.ttf +0 -0
  371. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
  372. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
  373. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
  374. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
  375. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-Bold.ttf +0 -0
  376. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
  377. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-Italic.ttf +0 -0
  378. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-Regular.ttf +0 -0
  379. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
  380. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  381. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Black.ttf +0 -0
  382. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
  383. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Bold.ttf +0 -0
  384. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
  385. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Italic.ttf +0 -0
  386. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Light.ttf +0 -0
  387. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
  388. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Medium.ttf +0 -0
  389. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
  390. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Roboto-Regular.ttf +0 -0
  391. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
  392. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
  393. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
  394. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
  395. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
  396. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
  397. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
  398. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
  399. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
  400. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
  401. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
  402. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
  403. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
  404. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
  405. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
  406. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
  407. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
  408. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
  409. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
  410. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
  411. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
  412. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
  413. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
  414. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
  415. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
  416. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
  417. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
  418. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-Light.ttf +0 -0
  419. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
  420. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
  421. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
  422. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
  423. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
  424. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
  425. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
  426. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
  427. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
  428. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
  429. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
  430. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
  431. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
  432. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
  433. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
  434. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
  435. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
  436. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreheros-bold.ttf +0 -0
  437. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
  438. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreheros-italic.ttf +0 -0
  439. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreheros-regular.ttf +0 -0
  440. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
  441. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
  442. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
  443. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
  444. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreschola-bold.ttf +0 -0
  445. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
  446. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreschola-italic.ttf +0 -0
  447. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyreschola-regular.ttf +0 -0
  448. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyretermes-bold.ttf +0 -0
  449. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
  450. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyretermes-italic.ttf +0 -0
  451. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/fonts/texgyretermes-regular.ttf +0 -0
  452. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/__init__.py +0 -0
  453. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/benchmarks.py +0 -0
  454. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/context.py +0 -0
  455. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/docstring.py +0 -0
  456. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/guides.py +0 -0
  457. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/kwargs.py +0 -0
  458. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/rcsetup.py +0 -0
  459. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/versions.py +0 -0
  460. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/internals/warnings.py +0 -0
  461. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/mcp.py +0 -0
  462. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/proj.py +0 -0
  463. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/py.typed +0 -0
  464. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/__init__.py +0 -0
  465. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/conftest.py +0 -0
  466. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_1dplots.py +0 -0
  467. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_2dplots.py +0 -0
  468. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_alias_signatures.py +0 -0
  469. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_animation.py +0 -0
  470. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_axes_alt_styles.py +0 -0
  471. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_axes_base_colorbar_helpers.py +0 -0
  472. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_base.py +0 -0
  473. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colorbar.py +0 -0
  474. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colorbar_helpers_extra.py +0 -0
  475. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colormap.py +0 -0
  476. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colormap_helpers_extra.py +0 -0
  477. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colors.py +0 -0
  478. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_colors_helpers.py +0 -0
  479. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_constructor.py +0 -0
  480. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_constructor_helpers_extra.py +0 -0
  481. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_core_versions.py +0 -0
  482. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_demos.py +0 -0
  483. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_docs.py +0 -0
  484. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_docs_fetch_releases.py +0 -0
  485. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_docs_search.py +0 -0
  486. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_docstring_helpers.py +0 -0
  487. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_docstrings.py +0 -0
  488. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_external_axes_container_integration.py +0 -0
  489. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_external_container_edge_cases.py +0 -0
  490. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_external_container_mocked.py +0 -0
  491. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_fonts.py +0 -0
  492. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_format.py +0 -0
  493. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_geographic.py +0 -0
  494. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_gridspec.py +0 -0
  495. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_handlers.py +0 -0
  496. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_imports.py +0 -0
  497. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_imshow.py +0 -0
  498. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_inputs.py +0 -0
  499. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_inputs_helpers.py +0 -0
  500. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_inset.py +0 -0
  501. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_integration.py +0 -0
  502. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_kwargs_helpers.py +0 -0
  503. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_legend.py +0 -0
  504. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_mcp.py +0 -0
  505. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_plot.py +0 -0
  506. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_proj_helpers.py +0 -0
  507. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_projections.py +0 -0
  508. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_raincloud.py +0 -0
  509. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_rcsetup_helpers.py +0 -0
  510. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_release_metadata.py +0 -0
  511. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_scale_helpers.py +0 -0
  512. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_semantic_legend.py +0 -0
  513. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_statistical_plotting.py +0 -0
  514. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_subplot_manager.py +0 -0
  515. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_subplots.py +0 -0
  516. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_text_helpers.py +0 -0
  517. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_textalign.py +0 -0
  518. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/tests/test_tickers.py +0 -0
  519. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/text.py +0 -0
  520. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/textalign.py +0 -0
  521. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/ui.py +0 -0
  522. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot/utils.py +0 -0
  523. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/dependency_links.txt +0 -0
  524. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/entry_points.txt +0 -0
  525. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/requires.txt +0 -0
  526. {ultraplot-2.7.3 → ultraplot-2.7.4}/ultraplot.egg-info/top_level.txt +0 -0
@@ -11,12 +11,12 @@ ci:
11
11
 
12
12
  repos:
13
13
  - repo: https://github.com/psf/black-pre-commit-mirror
14
- rev: 26.10.0
14
+ rev: 26.10.1
15
15
  hooks:
16
16
  - id: black
17
17
 
18
18
  - repo: https://github.com/tombi-toml/tombi-pre-commit
19
- rev: v1.7.2
19
+ rev: v1.9.8
20
20
  hooks:
21
21
  - id: tombi-format
22
22
  args: ["--offline"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultraplot
3
- Version: 2.7.3
3
+ Version: 2.7.4
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>
@@ -158,20 +158,6 @@ UltraPlot is published on `PyPi <https://pypi.org/project/ultraplot/>`__ and
158
158
  pip install ultraplot
159
159
  conda install -c conda-forge ultraplot
160
160
 
161
- pyCirclize-based plots require the optional ``circos`` extra:
162
-
163
- .. code-block:: bash
164
-
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]'
174
-
175
161
  Likewise, an existing installation of UltraPlot can be upgraded
176
162
  to the latest version with:
177
163
 
@@ -192,102 +178,8 @@ UltraPlot includes a Model Context Protocol (MCP) server that lets AI assistants
192
178
  search documentation and examples, inspect the live Python API, and read source
193
179
  code and release notes.
194
180
 
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.
181
+ See the `MCP installation guide <https://ultraplot.readthedocs.io/en/latest/mcp.html>`__
182
+ for installation instructions, client configuration, and documentation setup.
291
183
 
292
184
  Citing UltraPlot
293
185
  ================
@@ -104,20 +104,6 @@ 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
- pyCirclize-based plots require the optional ``circos`` extra:
108
-
109
- .. code-block:: bash
110
-
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]'
120
-
121
107
  Likewise, an existing installation of UltraPlot can be upgraded
122
108
  to the latest version with:
123
109
 
@@ -138,102 +124,8 @@ UltraPlot includes a Model Context Protocol (MCP) server that lets AI assistants
138
124
  search documentation and examples, inspect the live Python API, and read source
139
125
  code and release notes.
140
126
 
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.
127
+ See the `MCP installation guide <https://ultraplot.readthedocs.io/en/latest/mcp.html>`__
128
+ for installation instructions, client configuration, and documentation setup.
237
129
 
238
130
  Citing UltraPlot
239
131
  ================
@@ -5,6 +5,9 @@
5
5
  **UltraPlot** is a succinct wrapper around `matplotlib <https://matplotlib.org/>`__
6
6
  for creating **publication-quality graphics** with a small, familiar API.
7
7
 
8
+ .. raw:: html
9
+ :file: _templates/plot-carousel.html
10
+
8
11
  Start with a finished figure
9
12
  ############################
10
13
 
@@ -134,6 +137,7 @@ For details, see the full :doc:`User guide <usage>` and
134
137
  :hidden:
135
138
 
136
139
  install
140
+ mcp
137
141
  why_ultraplot
138
142
  first_figure
139
143
  usage
@@ -0,0 +1,105 @@
1
+ .. _mcp_install:
2
+
3
+ MCP server installation
4
+ =======================
5
+
6
+ UltraPlot includes a Model Context Protocol (MCP) server that lets AI assistants
7
+ search documentation and examples, inspect the live Python API, and read source
8
+ code and release notes.
9
+
10
+ Run directly with uvx
11
+ ---------------------
12
+
13
+ With `uv <https://docs.astral.sh/uv/getting-started/installation/>`__ installed,
14
+ your MCP client can launch the server with ``uvx``. uv installs the package and
15
+ its dependencies in an isolated environment automatically, so you do not need
16
+ to create a virtual environment or install UltraPlot separately.
17
+
18
+ For a PyPI release containing the MCP server, the launch command is:
19
+
20
+ .. code-block:: bash
21
+
22
+ uvx --from 'ultraplot[mcp]' ultraplot-mcp
23
+
24
+ For clients that use an ``mcpServers`` configuration, add:
25
+
26
+ .. code-block:: json
27
+
28
+ {
29
+ "mcpServers": {
30
+ "ultraplot": {
31
+ "command": "uvx",
32
+ "args": ["--from", "ultraplot[mcp]", "ultraplot-mcp"]
33
+ }
34
+ }
35
+ }
36
+
37
+ The client starts the server when needed and communicates with it over stdio.
38
+ Other clients may use a different configuration format; use the same command
39
+ and arguments. ``uvx`` is equivalent to ``uv tool run``.
40
+
41
+ Until the MCP server is released on PyPI, run it directly from the feature
42
+ branch instead:
43
+
44
+ .. code-block:: bash
45
+
46
+ uvx --from 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp' ultraplot-mcp
47
+
48
+ For this development version, replace ``ultraplot[mcp]`` in the client
49
+ configuration with
50
+ ``ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp``.
51
+
52
+ Install persistently with uv
53
+ ----------------------------
54
+
55
+ Alternatively, keep the executable on your ``PATH`` by installing it as a uv
56
+ tool. For a PyPI release containing the MCP server:
57
+
58
+ .. code-block:: bash
59
+
60
+ uv tool install 'ultraplot[mcp]'
61
+ ultraplot-mcp --help
62
+
63
+ Before that release, install from the feature branch:
64
+
65
+ .. code-block:: bash
66
+
67
+ uv tool install 'ultraplot[mcp] @ git+https://github.com/ultraplot/ultraplot.git@feat/mcp'
68
+
69
+ Then configure your client to launch ``ultraplot-mcp`` with no arguments.
70
+ If uv reports that its executable directory is missing from ``PATH``, run
71
+ ``uv tool update-shell`` and restart your shell.
72
+
73
+ Install from a checkout
74
+ -----------------------
75
+
76
+ From a checkout containing the MCP implementation, install the optional ``mcp``
77
+ extra in the Python environment you want the server to use:
78
+
79
+ .. code-block:: bash
80
+
81
+ pip install -e '.[mcp]'
82
+
83
+ Connect an MCP client
84
+ ---------------------
85
+
86
+ After installing persistently with uv or pip, register the server with an
87
+ installed Codex CLI:
88
+
89
+ .. code-block:: bash
90
+
91
+ ultraplot-mcp install codex
92
+
93
+ Restart Codex after registration. Try asking it to search the UltraPlot
94
+ examples for shared colorbars or inspect ``ultraplot.subplots``.
95
+
96
+ For other MCP clients, configure a stdio server with ``ultraplot-mcp`` as the
97
+ command and no arguments. Use the executable's absolute path if the client does
98
+ not inherit your Python environment's ``PATH``. Running ``ultraplot-mcp`` starts
99
+ the server; ``ultraplot-mcp --help`` lists the available commands.
100
+
101
+ Documentation tools read the checkout's ``docs`` directory. Direct uvx and uv
102
+ tool installations require a separate documentation checkout for these tools.
103
+ If documentation lives elsewhere, set ``ULTRAPLOT_MCP_DOCS`` to its absolute path in the MCP
104
+ client's server environment. Documentation is not currently bundled in the
105
+ Python package; API and source inspection use the installed UltraPlot version.
@@ -139,6 +139,10 @@ axs.format(
139
139
  # subplot spacing and the reference subplot aspect ratio `refaspect` (default
140
140
  # is ``1`` unless the data aspect ratio is fixed -- see below). If both the
141
141
  # width and height are specified, then `refaspect` is ignored.
142
+ # These sizes describe the visible reference axes, including when it spans
143
+ # several cells in a layout array. Changing `wspace` or `hspace` then changes
144
+ # the figure size to preserve the requested axes size. With a fixed `figsize`,
145
+ # increasing spacing instead reduces the space available for the axes.
142
146
  # * `figwidth` and `figheight` set the physical width and height of the figure.
143
147
  # As in matplotlib, you can use `figsize` to set both at once. If just the width
144
148
  # (height) is specified, then the height (width) is automatically adjusted, just
@@ -39,16 +39,16 @@ if TYPE_CHECKING:
39
39
  from .colors import PerceptualColormap as PerceptualColormap
40
40
  from .colors import SegmentedNorm as SegmentedNorm
41
41
  from .colors import _cmap_database as colormaps
42
- from .config import config_inline_backend as config_inline_backend
43
- from .config import Configurator as Configurator
44
- from .config import rc as rc
45
- from .config import rc_matplotlib as rc_matplotlib
46
- from .config import rc_ultraplot as rc_ultraplot
47
- from .config import register_cmaps as register_cmaps
48
- from .config import register_colors as register_colors
49
- from .config import register_cycles as register_cycles
50
- from .config import register_fonts as register_fonts
51
- from .config import use_style as use_style
42
+ from ._config import config_inline_backend as config_inline_backend
43
+ from ._config import Configurator as Configurator
44
+ from ._config import rc as rc
45
+ from ._config import rc_matplotlib as rc_matplotlib
46
+ from ._config import rc_ultraplot as rc_ultraplot
47
+ from ._config import register_cmaps as register_cmaps
48
+ from ._config import register_colors as register_colors
49
+ from ._config import register_cycles as register_cycles
50
+ from ._config import register_fonts as register_fonts
51
+ from ._config import use_style as use_style
52
52
  from .constructor import Colormap as Colormap
53
53
  from .constructor import Cycle as Cycle
54
54
  from .constructor import Formatter as Formatter
@@ -200,30 +200,9 @@ def _setup():
200
200
  _SETUP_RUNNING = True
201
201
  success = False
202
202
  try:
203
- from .config import (
204
- rc,
205
- register_cmaps,
206
- register_colors,
207
- register_cycles,
208
- register_fonts,
209
- )
210
- from .internals import (
211
- fonts as _fonts, # noqa: F401 - ensure mathtext override is active
212
- )
213
- from .internals import rcsetup, warnings
214
- from .internals.benchmarks import _benchmark
215
-
216
- with _benchmark("cmaps"):
217
- register_cmaps(default=True)
218
- with _benchmark("cycles"):
219
- register_cycles(default=True)
220
- with _benchmark("colors"):
221
- register_colors(default=True)
222
- with _benchmark("fonts"):
223
- register_fonts(default=True)
224
-
225
- rcsetup.VALIDATE_REGISTERED_CMAPS = True
226
- rcsetup.VALIDATE_REGISTERED_COLORS = True
203
+ from ._config import _initialize, rc
204
+
205
+ _initialize()
227
206
 
228
207
  if rc["ultraplot.check_for_latest_version"]:
229
208
  from .utils import check_for_update
@@ -242,7 +221,7 @@ def setup(eager: Optional[bool] = None) -> None:
242
221
  """
243
222
  _setup()
244
223
  if eager is None:
245
- from .config import rc
224
+ from ._config import rc
246
225
 
247
226
  eager = bool(rc["ultraplot.eager_import"])
248
227
  if eager:
@@ -1907,4 +1907,34 @@ rc_ultraplot = rcsetup._rc_ultraplot_default.copy() # a validated rcParams-styl
1907
1907
 
1908
1908
  #: Instance of `Configurator`. This controls both `rc_matplotlib` and `rc_ultraplot`
1909
1909
  #: settings. See the :ref:`configuration guide <ug_config>` for details.
1910
- rc = Configurator()
1910
+ # Private bootstrap state; public config.py initializes it before exporting it.
1911
+ rc = Configurator(local=False, user=False, default=False)
1912
+ _INITIALIZED = False
1913
+ _INITIALIZING = False
1914
+
1915
+
1916
+ def _initialize():
1917
+ """Register configuration dependencies and load settings exactly once."""
1918
+ global _INITIALIZED, _INITIALIZING
1919
+ if _INITIALIZED or _INITIALIZING:
1920
+ return
1921
+ _INITIALIZING = True
1922
+ try:
1923
+ from .internals import fonts as _fonts # noqa: F401
1924
+ from .internals.benchmarks import _benchmark
1925
+
1926
+ with _benchmark("cmaps"):
1927
+ register_cmaps(default=True)
1928
+ with _benchmark("cycles"):
1929
+ register_cycles(default=True)
1930
+ with _benchmark("colors"):
1931
+ register_colors(default=True)
1932
+ with _benchmark("fonts"):
1933
+ register_fonts(default=True)
1934
+
1935
+ rcsetup.VALIDATE_REGISTERED_CMAPS = True
1936
+ rcsetup.VALIDATE_REGISTERED_COLORS = True
1937
+ rc._init(local=True, user=True, default=True)
1938
+ _INITIALIZED = True
1939
+ finally:
1940
+ _INITIALIZING = False
@@ -35,7 +35,7 @@ _MS_PER_SECOND = 1_000
35
35
  def _preview_enabled():
36
36
  """Return the current runtime setting for approximate navigation frames."""
37
37
  # Keep this local to avoid config -> figure -> animation import cycles.
38
- from .config import rc_ultraplot
38
+ from ._config import rc_ultraplot
39
39
 
40
40
  return rc_ultraplot["navigation.preview"]
41
41
 
@@ -0,0 +1 @@
1
+ __version__ = '2.7.4'
@@ -53,7 +53,7 @@ from ..colorbar import (
53
53
  _register_inset_colorbar_reflow,
54
54
  _solve_inset_colorbar_bounds,
55
55
  )
56
- from ..config import rc
56
+ from .._config import rc
57
57
  from ..internals import (
58
58
  _alias_kwargs,
59
59
  _canonicalize_kwargs,
@@ -18,7 +18,7 @@ from .. import _sharing as psharing
18
18
  from .. import constructor
19
19
  from .. import scale as pscale
20
20
  from .. import ticker as pticker
21
- from ..config import rc
21
+ from .._config import rc
22
22
  from ..internals import (
23
23
  _alias_kwargs,
24
24
  _canonicalize_kwargs,
@@ -14,7 +14,7 @@ import matplotlib.transforms as mtransforms
14
14
  import numpy as np
15
15
  from matplotlib import cbook, container
16
16
 
17
- from ..config import rc
17
+ from .._config import rc
18
18
  from ..internals import _pop_rc, _version_mpl, warnings
19
19
  from . import shared
20
20
  from .cartesian import CartesianAxes
@@ -34,7 +34,7 @@ import numpy as np
34
34
  from .. import constructor
35
35
  from .. import proj as pproj
36
36
  from .. import ticker as pticker
37
- from ..config import rc
37
+ from .._config import rc
38
38
  from ..internals import (
39
39
  _alias_kwargs,
40
40
  _not_none,
@@ -35,7 +35,7 @@ from packaging import version
35
35
  from .. import _sharing as psharing
36
36
  from .. import colors as pcolors
37
37
  from .. import constructor, utils
38
- from ..config import rc
38
+ from .._config import rc
39
39
  from ..internals import (
40
40
  _alias_kwargs,
41
41
  _canonicalize_kwargs,
@@ -13,7 +13,7 @@ from typing import Any, Callable, Mapping, Optional, Sequence, Union
13
13
  from matplotlib.projections.polar import PolarAxes as MplPolarAxes
14
14
 
15
15
  from ... import constructor
16
- from ...config import rc
16
+ from ..._config import rc
17
17
  from ...internals import warnings
18
18
 
19
19
  #: Settings ``pycirclize.config`` writes into the global rcParams the moment it
@@ -21,6 +21,15 @@ from ...internals import warnings
21
21
  #: saved, so `_import_pycirclize` puts these back.
22
22
  _PYCIRCLIZE_RC_LEAKS = ("savefig.bbox", "savefig.pad_inches", "svg.fonttype")
23
23
 
24
+ _PYCIRCLIZE_INSTALL_MESSAGE = (
25
+ "This plot requires the optional pyCirclize dependency, which is not "
26
+ "available in this Python environment. Chord diagrams, radar charts, "
27
+ "phylogenies, and Circos plots need it.\n"
28
+ "Install it in the environment running your code:\n"
29
+ " pip install 'ultraplot[circos]'\n"
30
+ "Then restart Python or your notebook kernel and run the plot again."
31
+ )
32
+
24
33
 
25
34
  def _import_pycirclize():
26
35
  """
@@ -56,17 +65,9 @@ def _import_pycirclize_unguarded():
56
65
  try:
57
66
  import pycirclize
58
67
  except ImportError as exc2:
59
- raise ImportError(
60
- "pycirclize is required for circos plots. Install it with "
61
- "`pip install 'ultraplot[circos]'` or ensure "
62
- "`pyCirclize/src` is on PYTHONPATH."
63
- ) from exc2
68
+ raise ImportError(_PYCIRCLIZE_INSTALL_MESSAGE) from exc2
64
69
  else:
65
- raise ImportError(
66
- "pycirclize is required for circos plots. Install it with "
67
- "`pip install 'ultraplot[circos]'` or ensure "
68
- "`pyCirclize/src` is on PYTHONPATH."
69
- ) from exc
70
+ raise ImportError(_PYCIRCLIZE_INSTALL_MESSAGE) from exc
70
71
  return pycirclize
71
72
 
72
73
 
@@ -15,7 +15,7 @@ import matplotlib.collections as mcollections
15
15
  import matplotlib.colors as mcolors
16
16
 
17
17
  from ... import _sharing as psharing, colors as pcolors
18
- from ...config import rc
18
+ from ..._config import rc
19
19
  from ...internals import _canonicalize_kwargs, _not_none, _pop_props, inputs, warnings
20
20
 
21
21
  if TYPE_CHECKING:
@@ -8,7 +8,7 @@ from matplotlib import colors as mcolors
8
8
  from matplotlib import patches as mpatches
9
9
  from matplotlib import path as mpath
10
10
 
11
- from ...config import rc
11
+ from ..._config import rc
12
12
  from ...internals import _not_none
13
13
 
14
14
 
@@ -17,7 +17,7 @@ from matplotlib.font_manager import FontProperties
17
17
 
18
18
  from .. import constructor
19
19
  from .. import ticker as pticker
20
- from ..config import rc
20
+ from .._config import rc
21
21
  from ..internals import (
22
22
  _alias_kwargs,
23
23
  _not_none,
@@ -10,7 +10,7 @@ import functools
10
10
 
11
11
  import numpy as np
12
12
 
13
- from ..config import rc
13
+ from .._config import rc
14
14
  from .._sharing import (
15
15
  AXIS_LABEL_FORMAT_KEYS,
16
16
  axis_supports_format_key,
@@ -10,7 +10,7 @@ import matplotlib.ticker as mticker
10
10
  import matplotlib.transforms as mtransforms
11
11
  import numpy as np
12
12
 
13
- from ..config import rc
13
+ from .._config import rc
14
14
  from ..internals import _not_none, _pop_rc, docstring, _alias_kwargs
15
15
  from . import shared
16
16
  from .polar import PolarAxes