ultraplot 2.5.0__tar.gz → 2.6.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.
Files changed (481) hide show
  1. ultraplot-2.6.0/.github/workflows/black.yml +50 -0
  2. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/workflows/build-ultraplot.yml +2 -2
  3. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/workflows/main.yml +3 -3
  4. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/workflows/publish-pypi.yml +10 -2
  5. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/workflows/test-map.yml +1 -1
  6. {ultraplot-2.5.0 → ultraplot-2.6.0}/.gitignore +1 -0
  7. {ultraplot-2.5.0 → ultraplot-2.6.0}/.pre-commit-config.yaml +1 -1
  8. {ultraplot-2.5.0/ultraplot.egg-info → ultraplot-2.6.0}/PKG-INFO +3 -1
  9. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/1dplots.py +4 -1
  10. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/Makefile +6 -4
  11. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/custom.css +222 -0
  12. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/custom.js +151 -0
  13. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/api.rst +0 -3
  14. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/conf.py +4 -0
  15. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/projections.py +4 -5
  16. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/stats.py +14 -5
  17. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/usage.rst +1 -1
  18. ultraplot-2.6.0/docs/why.rst +822 -0
  19. {ultraplot-2.5.0 → ultraplot-2.6.0}/pyproject.toml +3 -0
  20. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/__init__.py +31 -6
  21. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/_subplots.py +2 -4
  22. ultraplot-2.6.0/ultraplot/_version.py +1 -0
  23. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/base.py +56 -0
  24. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/geo.py +62 -0
  25. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot.py +204 -160
  26. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/colors.py +0 -45
  27. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/config.py +0 -14
  28. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/constructor.py +20 -16
  29. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/demos.py +0 -1
  30. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/figure.py +0 -5
  31. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/inputs.py +104 -0
  32. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/rcsetup.py +18 -1
  33. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/legend.py +39 -0
  34. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_1dplots.py +212 -0
  35. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_constructor_helpers_extra.py +35 -3
  36. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_geographic.py +65 -0
  37. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_imports.py +1 -2
  38. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_integration.py +31 -0
  39. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_legend.py +72 -0
  40. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_statistical_plotting.py +35 -0
  41. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_subplot_manager.py +20 -1
  42. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/utils.py +0 -11
  43. {ultraplot-2.5.0 → ultraplot-2.6.0/ultraplot.egg-info}/PKG-INFO +3 -1
  44. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot.egg-info/SOURCES.txt +1 -2
  45. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot.egg-info/requires.txt +3 -0
  46. ultraplot-2.5.0/docs/why.rst +0 -924
  47. ultraplot-2.5.0/ultraplot/_version.py +0 -1
  48. ultraplot-2.5.0/ultraplot.egg-info/scm_file_list.json +0 -472
  49. ultraplot-2.5.0/ultraplot.egg-info/scm_version.json +0 -8
  50. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/ISSUE_TEMPLATE.md +0 -0
  51. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/dependabot.yml +0 -0
  52. {ultraplot-2.5.0 → ultraplot-2.6.0}/.github/micromamba-condarc.yml +0 -0
  53. {ultraplot-2.5.0 → ultraplot-2.6.0}/.readthedocs.yml +0 -0
  54. {ultraplot-2.5.0 → ultraplot-2.6.0}/.zenodo.json +0 -0
  55. {ultraplot-2.5.0 → ultraplot-2.6.0}/CITATION.cff +0 -0
  56. {ultraplot-2.5.0 → ultraplot-2.6.0}/CODEOFCONDUCT.md +0 -0
  57. {ultraplot-2.5.0 → ultraplot-2.6.0}/CONTRIBUTING.rst +0 -0
  58. {ultraplot-2.5.0 → ultraplot-2.6.0}/INSTALL.rst +0 -0
  59. {ultraplot-2.5.0 → ultraplot-2.6.0}/LICENSE.txt +0 -0
  60. {ultraplot-2.5.0 → ultraplot-2.6.0}/README.rst +0 -0
  61. {ultraplot-2.5.0 → ultraplot-2.6.0}/UltraPlotLogo.svg +0 -0
  62. {ultraplot-2.5.0 → ultraplot-2.6.0}/codecov.yml +0 -0
  63. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/2dplots.py +0 -0
  64. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_ext/notoc.py +0 -0
  65. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_scripts/fetch_releases.py +0 -0
  66. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/cartesian_example.svg +0 -0
  67. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/colorbars_legends_example.svg +0 -0
  68. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/colormaps_example.svg +0 -0
  69. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/panels_example.svg +0 -0
  70. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/projection_example.svg +0 -0
  71. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/example_plots/subplot_example.svg +0 -0
  72. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_blank.svg +0 -0
  73. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_long.png +0 -0
  74. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_long.svg +0 -0
  75. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_social.png +0 -0
  76. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_social.svg +0 -0
  77. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_static/logo_square.png +0 -0
  78. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/_templates/whatsnew_sidebar.html +0 -0
  79. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/about.rst +0 -0
  80. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/basics.py +0 -0
  81. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/cartesian.py +0 -0
  82. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/colorbars_legends.py +0 -0
  83. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/colormaps.py +0 -0
  84. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/colors.py +0 -0
  85. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/configuration.rst +0 -0
  86. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/contributing.rst +0 -0
  87. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/cycles.py +0 -0
  88. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/README.txt +0 -0
  89. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/colors/01_cycle_colormap.py +0 -0
  90. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/colors/02_diverging_colormap.py +0 -0
  91. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/colors/README.txt +0 -0
  92. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/geo/01_robin_tracks.py +0 -0
  93. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/geo/02_orthographic_views.py +0 -0
  94. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/geo/03_projections_features.py +0 -0
  95. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/geo/04_choropleth.py +0 -0
  96. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/geo/README.txt +0 -0
  97. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/layouts/01_shared_axes_abc.py +0 -0
  98. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/layouts/02_complex_layout_insets.py +0 -0
  99. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/layouts/03_spanning_labels.py +0 -0
  100. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/layouts/README.txt +0 -0
  101. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/legend_types/01_semantic_legends.py +0 -0
  102. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/legends_colorbars/01_multi_colorbars.py +0 -0
  103. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/legends_colorbars/02_legend_inset_colorbar.py +0 -0
  104. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/legends_colorbars/03_semantic_legends.py +0 -0
  105. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/legends_colorbars/README.txt +0 -0
  106. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/01_curved_quiver.py +0 -0
  107. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/02_network_graph.py +0 -0
  108. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/03_lollipop.py +0 -0
  109. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/04_datetime_series.py +0 -0
  110. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/05_box_violin.py +0 -0
  111. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/06_ridge_plot.py +0 -0
  112. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/07_radar.py +0 -0
  113. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/07_sankey.py +0 -0
  114. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/08_chord_diagram.py +0 -0
  115. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/08_ternary.py +0 -0
  116. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/09_phylogeny.py +0 -0
  117. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/10_circos_bed.py +0 -0
  118. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/11_topic_ribbon.py +0 -0
  119. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/12_taylor_diagram.py +0 -0
  120. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/examples/plot_types/README.txt +0 -0
  121. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/external-links.rst +0 -0
  122. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/faq.rst +0 -0
  123. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/fonts.py +0 -0
  124. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/index.rst +0 -0
  125. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/insets_panels.py +0 -0
  126. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/install.rst +0 -0
  127. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/lazy_loading.rst +0 -0
  128. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/make.bat +0 -0
  129. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/networks.py +0 -0
  130. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/requirements-rtd.txt +0 -0
  131. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/sphinxext/custom_roles.py +0 -0
  132. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/sphinxext/jupytext_cache.py +0 -0
  133. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/subplots.py +0 -0
  134. {ultraplot-2.5.0 → ultraplot-2.6.0}/docs/ultraplotrc +0 -0
  135. {ultraplot-2.5.0 → ultraplot-2.6.0}/environment.yml +0 -0
  136. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/PermanentMarker-Regular.ttf +0 -0
  137. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/environment-logo.yml +0 -0
  138. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/logo.py +0 -0
  139. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/run-linter.sh +0 -0
  140. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/webicon.py +0 -0
  141. {ultraplot-2.5.0 → ultraplot-2.6.0}/logo/whyUltraPlot.svg +0 -0
  142. {ultraplot-2.5.0 → ultraplot-2.6.0}/noxfile.py +0 -0
  143. {ultraplot-2.5.0 → ultraplot-2.6.0}/requirements-minimal.txt +0 -0
  144. {ultraplot-2.5.0 → ultraplot-2.6.0}/setup.cfg +0 -0
  145. {ultraplot-2.5.0 → ultraplot-2.6.0}/tools/ci/build_test_map.py +0 -0
  146. {ultraplot-2.5.0 → ultraplot-2.6.0}/tools/ci/select_tests.py +0 -0
  147. {ultraplot-2.5.0 → ultraplot-2.6.0}/tools/ci/version_support.py +0 -0
  148. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/_lazy.py +0 -0
  149. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/__init__.py +0 -0
  150. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/_formatting.py +0 -0
  151. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/cartesian.py +0 -0
  152. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/container.py +0 -0
  153. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot_types/__init__.py +0 -0
  154. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot_types/circlize.py +0 -0
  155. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot_types/curved_quiver.py +0 -0
  156. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot_types/ribbon.py +0 -0
  157. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/plot_types/sankey.py +0 -0
  158. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/polar.py +0 -0
  159. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/shared.py +0 -0
  160. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/taylor.py +0 -0
  161. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/axes/three.py +0 -0
  162. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Algae.rgb +0 -0
  163. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Amp.rgb +0 -0
  164. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/BR.rgb +0 -0
  165. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Balance.rgb +0 -0
  166. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues1_r.xml +0 -0
  167. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues2.xml +0 -0
  168. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues3.xml +0 -0
  169. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues4_r.xml +0 -0
  170. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues5.xml +0 -0
  171. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues6.xml +0 -0
  172. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues7.xml +0 -0
  173. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues8.xml +0 -0
  174. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Blues9.xml +0 -0
  175. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Boreal.json +0 -0
  176. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns1.xml +0 -0
  177. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns2.xml +0 -0
  178. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns3.xml +0 -0
  179. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns4.xml +0 -0
  180. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns5.xml +0 -0
  181. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns6.xml +0 -0
  182. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns7.xml +0 -0
  183. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns8.xml +0 -0
  184. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Browns9.xml +0 -0
  185. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/ColdHot.rgb +0 -0
  186. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Crest.rgb +0 -0
  187. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Curl.rgb +0 -0
  188. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Deep.rgb +0 -0
  189. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Delta.rgb +0 -0
  190. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Dense.rgb +0 -0
  191. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Div.json +0 -0
  192. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/DryWet.json +0 -0
  193. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Dusk.json +0 -0
  194. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Fire.json +0 -0
  195. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Flare.rgb +0 -0
  196. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Glacial.json +0 -0
  197. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens1_r.xml +0 -0
  198. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens2.xml +0 -0
  199. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens3_r.xml +0 -0
  200. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens4.xml +0 -0
  201. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens5.xml +0 -0
  202. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens6_r.xml +0 -0
  203. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens7.xml +0 -0
  204. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Greens8.xml +0 -0
  205. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Haline.rgb +0 -0
  206. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Ice.rgb +0 -0
  207. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/IceFire.rgb +0 -0
  208. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Mako.rgb +0 -0
  209. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Marine.json +0 -0
  210. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Matter.rgb +0 -0
  211. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Mono.txt +0 -0
  212. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/MonoCycle.txt +0 -0
  213. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/NegPos.json +0 -0
  214. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Oranges1.xml +0 -0
  215. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Oranges2.xml +0 -0
  216. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Oranges3.xml +0 -0
  217. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Oranges4.xml +0 -0
  218. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Oxy.rgb +0 -0
  219. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Phase.rgb +0 -0
  220. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Purples1_r.xml +0 -0
  221. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Purples2.xml +0 -0
  222. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Purples3.xml +0 -0
  223. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Reds1.xml +0 -0
  224. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Reds2.xml +0 -0
  225. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Reds3.xml +0 -0
  226. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Reds4.xml +0 -0
  227. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Reds5.xml +0 -0
  228. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Rocket.rgb +0 -0
  229. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Solar.rgb +0 -0
  230. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Speed.rgb +0 -0
  231. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Stellar.json +0 -0
  232. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Sunrise.json +0 -0
  233. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Sunset.json +0 -0
  234. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Tempo.rgb +0 -0
  235. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Thermal.rgb +0 -0
  236. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Turbid.rgb +0 -0
  237. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Vivid.xml +0 -0
  238. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Vlag.rgb +0 -0
  239. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Yellows1.xml +0 -0
  240. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Yellows2.xml +0 -0
  241. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Yellows3.xml +0 -0
  242. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/Yellows4.xml +0 -0
  243. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/acton.txt +0 -0
  244. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/bam.txt +0 -0
  245. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/bamO.txt +0 -0
  246. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/bamako.txt +0 -0
  247. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/batlow.txt +0 -0
  248. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/batlowK.txt +0 -0
  249. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/batlowW.txt +0 -0
  250. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/berlin.txt +0 -0
  251. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/bilbao.txt +0 -0
  252. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/broc.txt +0 -0
  253. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/brocO.txt +0 -0
  254. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/buda.txt +0 -0
  255. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/bukavu.txt +0 -0
  256. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/cork.txt +0 -0
  257. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/corkO.txt +0 -0
  258. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/davos.txt +0 -0
  259. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/devon.txt +0 -0
  260. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/fes.txt +0 -0
  261. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/hawaii.txt +0 -0
  262. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/imola.txt +0 -0
  263. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/lajolla.txt +0 -0
  264. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/lapaz.txt +0 -0
  265. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/lisbon.txt +0 -0
  266. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/nuuk.txt +0 -0
  267. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/oleron.txt +0 -0
  268. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/oslo.txt +0 -0
  269. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/roma.txt +0 -0
  270. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/romaO.txt +0 -0
  271. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/tofino.txt +0 -0
  272. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/tokyo.txt +0 -0
  273. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/turku.txt +0 -0
  274. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/vanimo.txt +0 -0
  275. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/vik.txt +0 -0
  276. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cmaps/vikO.txt +0 -0
  277. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/colorbar.py +0 -0
  278. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/colors/opencolor.txt +0 -0
  279. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/colors/xkcd.txt +0 -0
  280. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/538.hex +0 -0
  281. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/FlatUI.hex +0 -0
  282. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/Qual1.rgb +0 -0
  283. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/Qual2.rgb +0 -0
  284. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/bmh.hex +0 -0
  285. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/classic.hex +0 -0
  286. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/colorblind.hex +0 -0
  287. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/colorblind10.hex +0 -0
  288. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/default.hex +0 -0
  289. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/ggplot.hex +0 -0
  290. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/seaborn.hex +0 -0
  291. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/cycles/tableau.hex +0 -0
  292. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/externals/__init__.py +0 -0
  293. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/externals/hsluv.py +0 -0
  294. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-Bold.ttf +0 -0
  295. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
  296. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
  297. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-Light.ttf +0 -0
  298. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-Medium.ttf +0 -0
  299. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-Regular.ttf +0 -0
  300. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
  301. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
  302. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Black.ttf +0 -0
  303. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
  304. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Bold.ttf +0 -0
  305. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
  306. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
  307. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
  308. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
  309. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
  310. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Italic.ttf +0 -0
  311. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Light.ttf +0 -0
  312. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
  313. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Medium.ttf +0 -0
  314. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
  315. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-Regular.ttf +0 -0
  316. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
  317. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
  318. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_FIRAMATH.txt +0 -0
  319. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_FIRASANS.txt +0 -0
  320. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_NOTOSANS.txt +0 -0
  321. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_NOTOSERIF.txt +0 -0
  322. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_OPENSANS.txt +0 -0
  323. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_ROBOTO.txt +0 -0
  324. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_SOURCESANS.txt +0 -0
  325. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_SOURCESERIF.txt +0 -0
  326. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_TEXGYRE.txt +0 -0
  327. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/LICENSE_UBUNTU.txt +0 -0
  328. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSans-Bold.ttf +0 -0
  329. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
  330. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSans-Italic.ttf +0 -0
  331. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSans-Regular.ttf +0 -0
  332. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
  333. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
  334. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
  335. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
  336. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-Bold.ttf +0 -0
  337. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
  338. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-Italic.ttf +0 -0
  339. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-Regular.ttf +0 -0
  340. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
  341. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  342. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Black.ttf +0 -0
  343. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
  344. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Bold.ttf +0 -0
  345. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
  346. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Italic.ttf +0 -0
  347. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Light.ttf +0 -0
  348. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
  349. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Medium.ttf +0 -0
  350. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
  351. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Roboto-Regular.ttf +0 -0
  352. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
  353. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
  354. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
  355. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
  356. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
  357. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
  358. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
  359. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
  360. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
  361. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
  362. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
  363. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
  364. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
  365. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
  366. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
  367. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
  368. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
  369. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
  370. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
  371. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
  372. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
  373. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
  374. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
  375. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
  376. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
  377. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
  378. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
  379. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-Light.ttf +0 -0
  380. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
  381. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
  382. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
  383. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
  384. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
  385. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
  386. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
  387. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
  388. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
  389. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
  390. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
  391. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
  392. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
  393. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
  394. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
  395. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
  396. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
  397. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreheros-bold.ttf +0 -0
  398. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
  399. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreheros-italic.ttf +0 -0
  400. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreheros-regular.ttf +0 -0
  401. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
  402. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
  403. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
  404. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
  405. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreschola-bold.ttf +0 -0
  406. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
  407. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreschola-italic.ttf +0 -0
  408. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyreschola-regular.ttf +0 -0
  409. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyretermes-bold.ttf +0 -0
  410. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
  411. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyretermes-italic.ttf +0 -0
  412. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/fonts/texgyretermes-regular.ttf +0 -0
  413. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/gridspec.py +0 -0
  414. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/__init__.py +0 -0
  415. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/benchmarks.py +0 -0
  416. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/context.py +0 -0
  417. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/docstring.py +0 -0
  418. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/fonts.py +0 -0
  419. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/guides.py +0 -0
  420. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/kwargs.py +0 -0
  421. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/labels.py +0 -0
  422. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/versions.py +0 -0
  423. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/internals/warnings.py +0 -0
  424. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/proj.py +0 -0
  425. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/scale.py +0 -0
  426. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/__init__.py +0 -0
  427. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/conftest.py +0 -0
  428. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_2dplots.py +0 -0
  429. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_animation.py +0 -0
  430. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_axes.py +0 -0
  431. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_axes_alt_styles.py +0 -0
  432. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_axes_base_colorbar_helpers.py +0 -0
  433. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_base.py +0 -0
  434. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_circlize_integration.py +0 -0
  435. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colorbar.py +0 -0
  436. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colorbar_helpers_extra.py +0 -0
  437. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colormap.py +0 -0
  438. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colormap_helpers_extra.py +0 -0
  439. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colors.py +0 -0
  440. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_colors_helpers.py +0 -0
  441. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_config.py +0 -0
  442. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_config_helpers_extra.py +0 -0
  443. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_constructor.py +0 -0
  444. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_core_versions.py +0 -0
  445. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_demos.py +0 -0
  446. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_docs.py +0 -0
  447. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_docs_fetch_releases.py +0 -0
  448. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_docs_search.py +0 -0
  449. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_docstring_helpers.py +0 -0
  450. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_external_axes_container_integration.py +0 -0
  451. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_external_container_edge_cases.py +0 -0
  452. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_external_container_mocked.py +0 -0
  453. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_figure.py +0 -0
  454. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_fonts.py +0 -0
  455. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_format.py +0 -0
  456. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_gridspec.py +0 -0
  457. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_handlers.py +0 -0
  458. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_imshow.py +0 -0
  459. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_inputs.py +0 -0
  460. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_inputs_helpers.py +0 -0
  461. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_inset.py +0 -0
  462. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_kwargs_helpers.py +0 -0
  463. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_plot.py +0 -0
  464. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_proj_helpers.py +0 -0
  465. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_projections.py +0 -0
  466. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_rcsetup_helpers.py +0 -0
  467. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_release_metadata.py +0 -0
  468. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_scale_helpers.py +0 -0
  469. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_semantic_legend.py +0 -0
  470. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_subplots.py +0 -0
  471. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_text_helpers.py +0 -0
  472. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_textalign.py +0 -0
  473. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_tickers.py +0 -0
  474. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/tests/test_ultralayout.py +0 -0
  475. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/text.py +0 -0
  476. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/textalign.py +0 -0
  477. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/ticker.py +0 -0
  478. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/ui.py +0 -0
  479. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot/ultralayout.py +0 -0
  480. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot.egg-info/dependency_links.txt +0 -0
  481. {ultraplot-2.5.0 → ultraplot-2.6.0}/ultraplot.egg-info/top_level.txt +0 -0
@@ -0,0 +1,50 @@
1
+ name: Black autoformat
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "**"
7
+ paths:
8
+ - "ultraplot/**.py"
9
+ - "ultraplot/**.pyi"
10
+ - ".github/workflows/black.yml"
11
+ - ".pre-commit-config.yaml"
12
+ - "pyproject.toml"
13
+
14
+ permissions:
15
+ contents: write
16
+
17
+ concurrency:
18
+ group: black-${{ github.ref }}
19
+ cancel-in-progress: false
20
+
21
+ jobs:
22
+ format:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v7
26
+ with:
27
+ ref: ${{ github.ref_name }}
28
+
29
+ - uses: actions/setup-python@v7
30
+ with:
31
+ python-version: "3.14"
32
+
33
+ - name: Install Black
34
+ run: python -m pip install black==26.5.1
35
+
36
+ - name: Format Python files
37
+ run: black ultraplot
38
+
39
+ - name: Commit formatting changes
40
+ run: |
41
+ if git diff --quiet -- '*.py' '*.pyi'; then
42
+ echo "Black made no changes."
43
+ exit 0
44
+ fi
45
+
46
+ git config user.name "github-actions[bot]"
47
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
48
+ git add --update -- '*.py' '*.pyi'
49
+ git commit -m "Apply Black formatting"
50
+ git push
@@ -53,7 +53,7 @@ jobs:
53
53
  with:
54
54
  fetch-depth: 0
55
55
 
56
- - uses: mamba-org/setup-micromamba@v3.0.0
56
+ - uses: mamba-org/setup-micromamba@v3.1.0
57
57
  with:
58
58
  environment-file: ./environment.yml
59
59
  init-shell: bash
@@ -100,7 +100,7 @@ jobs:
100
100
 
101
101
  - uses: actions/checkout@v7
102
102
 
103
- - uses: mamba-org/setup-micromamba@v3.0.0
103
+ - uses: mamba-org/setup-micromamba@v3.1.0
104
104
  with:
105
105
  environment-file: ./environment.yml
106
106
  init-shell: bash
@@ -50,7 +50,7 @@ jobs:
50
50
 
51
51
  - name: Build test map on cache miss
52
52
  if: steps.restore-map.outputs.cache-hit != 'true'
53
- uses: mamba-org/setup-micromamba@v3.0.0
53
+ uses: mamba-org/setup-micromamba@v3.1.0
54
54
  with:
55
55
  environment-file: ./environment.yml
56
56
  init-shell: bash
@@ -126,7 +126,7 @@ jobs:
126
126
  with:
127
127
  fetch-depth: 0
128
128
 
129
- - uses: actions/setup-python@v6
129
+ - uses: actions/setup-python@v7
130
130
  with:
131
131
  python-version: "3.11"
132
132
 
@@ -157,7 +157,7 @@ jobs:
157
157
  with:
158
158
  fetch-depth: 0
159
159
 
160
- - uses: mamba-org/setup-micromamba@v3.0.0
160
+ - uses: mamba-org/setup-micromamba@v3.1.0
161
161
  with:
162
162
  environment-file: ./environment.yml
163
163
  init-shell: bash
@@ -18,10 +18,18 @@ jobs:
18
18
  with:
19
19
  fetch-depth: 0
20
20
 
21
- - uses: actions/setup-python@v6
21
+ - uses: actions/setup-python@v7
22
22
  with:
23
23
  python-version: "3.12"
24
24
 
25
+ - name: Pin version from tag on release builds
26
+ if: startsWith(github.ref, 'refs/tags/')
27
+ run: |
28
+ VERSION="${GITHUB_REF_NAME#v}"
29
+ echo "Using tagged version: $VERSION"
30
+ echo "SETUPTOOLS_SCM_PRETEND_VERSION=$VERSION" >> "$GITHUB_ENV"
31
+ shell: bash
32
+
25
33
  - name: Ensure clean tree before build
26
34
  run: |
27
35
  git diff --quiet || (git status --short && git diff && exit 1)
@@ -46,7 +54,7 @@ jobs:
46
54
 
47
55
  version=$(python -c "import ultraplot; print(ultraplot.__version__)")
48
56
  echo "Version: $version"
49
- if [[ "$version" == "0."* ]]; then
57
+ if [[ "${{ github.event_name }}" != "pull_request" && "$version" == "0."* ]]; then
50
58
  echo "Version is not set correctly!"
51
59
  exit 1
52
60
  fi
@@ -23,7 +23,7 @@ jobs:
23
23
  with:
24
24
  fetch-depth: 0
25
25
 
26
- - uses: mamba-org/setup-micromamba@v3.0.0
26
+ - uses: mamba-org/setup-micromamba@v3.1.0
27
27
  with:
28
28
  environment-file: ./environment.yml
29
29
  init-shell: bash
@@ -22,6 +22,7 @@ docs/_build
22
22
  docs/_static/ultraplotrc
23
23
  docs/_static/rctable.rst
24
24
  docs/_static/*
25
+ !docs/_static/why_plots/
25
26
  *.html
26
27
  docs/gallery/
27
28
  docs/sg_execution_times.rst
@@ -6,7 +6,7 @@ ci:
6
6
  autofix_prs: false
7
7
  autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
8
8
  autoupdate_schedule: monthly
9
- skip: []
9
+ skip: [black]
10
10
  submodules: false
11
11
 
12
12
  repos:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultraplot
3
- Version: 2.5.0
3
+ Version: 2.6.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>
@@ -41,6 +41,8 @@ Requires-Dist: sphinx-gallery; extra == "docs"
41
41
  Requires-Dist: shibuya; extra == "docs"
42
42
  Requires-Dist: sphinx-sitemap; extra == "docs"
43
43
  Requires-Dist: typing-extensions; extra == "docs"
44
+ Provides-Extra: stats
45
+ Requires-Dist: scipy; extra == "stats"
44
46
  Dynamic: license-file
45
47
 
46
48
  .. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg
@@ -276,6 +276,8 @@ with uplt.rc.context({"lines.linewidth": 3}):
276
276
  # Also, the default *x* bounds for lines drawn with :func:`~ultraplot.axes.PlotAxes.plot`
277
277
  # and *y* bounds for lines drawn with :func:`~ultraplot.axes.PlotAxes.plotx` are now
278
278
  # "sticky", i.e. there is no padding between the lines and axes edges by default.
279
+ # This can be disabled globally with :rcraw:`axes.sticky_edges` or per-axes with
280
+ # the ``use_sticky_edges`` attribute.
279
281
  #
280
282
  # Step and stem plots can be drawn with :func:`~ultraplot.axes.PlotAxes.step`,
281
283
  # :func:`~ultraplot.axes.PlotAxes.stepx`, :func:`~ultraplot.axes.PlotAxes.stem`, and
@@ -505,7 +507,8 @@ ax.colorbar(m, loc="b", locator=2, label="parametric coordinate")
505
507
  # ``stacked=True``. Also note the default *x* bounds for shading drawn with
506
508
  # :func:`~ultraplot.axes.PlotAxes.area` and *y* bounds for shading drawn with
507
509
  # :func:`~ultraplot.axes.PlotAxes.areax` is now "sticky", i.e. there is no padding
508
- # between the shading and axes edges by default.
510
+ # between the shading and axes edges by default. This can be disabled globally with
511
+ # :rcraw:`axes.sticky_edges` or per-axes with the ``use_sticky_edges`` attribute.
509
512
 
510
513
  # .. important::
511
514
  #
@@ -21,12 +21,14 @@ html-exec:
21
21
  help:
22
22
  @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
23
23
 
24
- # Make make clean ignore .git folder
25
- # The -f doesn't raise error when files/folders not found
24
+ # Full reset of all build output and caches (gallery md5, executed notebooks,
25
+ # doctrees). Use this only when you need a genuinely cold rebuild; plain
26
+ # `make html` reuses cached figures and notebook outputs.
26
27
  clean:
27
28
  rm -rf api/*
28
- rm -rf "$(BUILDDIR)"/html/*
29
- rm -rf "$(BUILDDIR)"/doctrees/*
29
+ rm -rf "$(BUILDDIR)"
30
+ rm -rf gallery
31
+ rm -rf sg_execution_times.rst
30
32
 
31
33
  # Catch-all target: route all unknown targets to Sphinx using the new
32
34
  # "make mode" option. See: https://github.com/sphinx-doc/sphinx/issues/6603
@@ -1250,3 +1250,225 @@ body.wy-body-for-nav
1250
1250
  max-width: 100%;
1251
1251
  height: auto;
1252
1252
  }
1253
+
1254
+ /* Why UltraPlot page: before/after comparison cards */
1255
+ .uplt-why {
1256
+ border: 1px solid var(--uplt-color-border-muted);
1257
+ border-radius: 0.8rem;
1258
+ background: linear-gradient(
1259
+ 180deg,
1260
+ var(--uplt-color-white) 0%,
1261
+ var(--uplt-color-sidebar-bg) 100%
1262
+ );
1263
+ box-shadow: 0 4px 14px var(--uplt-color-shadow);
1264
+ overflow: hidden;
1265
+ }
1266
+
1267
+ .uplt-why-mpl {
1268
+ border-top: 4px solid #b45309;
1269
+ }
1270
+
1271
+ .uplt-why-uplt {
1272
+ border-top: 4px solid #178f84;
1273
+ }
1274
+
1275
+ .uplt-why img {
1276
+ width: 100%;
1277
+ height: auto;
1278
+ border-radius: 0.45rem;
1279
+ background: var(--uplt-color-panel-bg);
1280
+ }
1281
+
1282
+ .uplt-why-compare {
1283
+ margin-bottom: 0.75rem;
1284
+ }
1285
+
1286
+ .uplt-why-compare .sd-card-body {
1287
+ padding: 0.75rem;
1288
+ display: flex;
1289
+ flex-direction: column;
1290
+ gap: 0.5rem;
1291
+ }
1292
+
1293
+ .uplt-why-compare .uplt-compare-labels {
1294
+ display: flex;
1295
+ justify-content: space-between;
1296
+ gap: 0.6rem;
1297
+ padding: 0.4rem 0.75rem 0;
1298
+ font-weight: 700;
1299
+ font-size: 0.85rem;
1300
+ text-transform: uppercase;
1301
+ letter-spacing: 0.05em;
1302
+ }
1303
+
1304
+ .uplt-why-compare .uplt-compare-labels .uplt-label {
1305
+ background: var(--uplt-color-panel-bg);
1306
+ border: 1px solid var(--uplt-color-border-muted);
1307
+ border-radius: 9999px;
1308
+ padding: 0.1rem 0.6rem;
1309
+ }
1310
+
1311
+ .uplt-why-compare .uplt-compare-labels .uplt-label-mpl {
1312
+ color: #b45309;
1313
+ }
1314
+
1315
+ .uplt-why-compare .uplt-compare-labels .uplt-label-uplt {
1316
+ color: #178f84;
1317
+ }
1318
+
1319
+ .uplt-compare-frame {
1320
+ position: relative;
1321
+ width: 100%;
1322
+ max-width: 100%;
1323
+ overflow: hidden;
1324
+ border-radius: 0.45rem;
1325
+ border: 1px solid var(--uplt-color-border-muted);
1326
+ background: var(--uplt-color-panel-bg);
1327
+ --uplt-compare-position: 50%;
1328
+ }
1329
+
1330
+ .uplt-compare-frame .uplt-compare-side {
1331
+ position: relative;
1332
+ width: 100%;
1333
+ overflow: hidden;
1334
+ }
1335
+
1336
+ .uplt-compare-frame .uplt-compare-side .sd-card-body {
1337
+ margin: 0;
1338
+ padding: 0.75rem;
1339
+ color: inherit;
1340
+ }
1341
+
1342
+ .uplt-compare-frame .uplt-compare-side .sd-card-body figure {
1343
+ width: 100%;
1344
+ margin: 0;
1345
+ }
1346
+
1347
+ .uplt-compare-frame .uplt-compare-side .sd-card-body figure.align-default {
1348
+ text-align: left;
1349
+ }
1350
+
1351
+ .uplt-compare-frame .uplt-compare-side .sd-card-body figure img {
1352
+ width: 100%;
1353
+ height: auto;
1354
+ display: block;
1355
+ margin: 0;
1356
+ }
1357
+
1358
+ .uplt-compare-frame .uplt-compare-side.uplt-compare-uplt {
1359
+ position: relative;
1360
+ z-index: 1;
1361
+ clip-path: inset(0 0 0 var(--uplt-compare-position));
1362
+ }
1363
+
1364
+ .uplt-compare-frame .uplt-compare-side.uplt-compare-mpl {
1365
+ position: absolute;
1366
+ inset: 0;
1367
+ clip-path: inset(0 calc(100% - var(--uplt-compare-position)) 0 0);
1368
+ z-index: 2;
1369
+ }
1370
+
1371
+ .uplt-compare-frame .uplt-compare-handle {
1372
+ position: absolute;
1373
+ top: 0;
1374
+ left: var(--uplt-compare-position);
1375
+ transform: translateX(-50%);
1376
+ width: 2px;
1377
+ height: 100%;
1378
+ background: var(--uplt-color-text-secondary);
1379
+ opacity: 0.95;
1380
+ pointer-events: all;
1381
+ cursor: ew-resize;
1382
+ z-index: 3;
1383
+ }
1384
+
1385
+ .uplt-compare-frame .uplt-compare-handle::after {
1386
+ content: "";
1387
+ position: absolute;
1388
+ inset: 0 -8px;
1389
+ width: 16px;
1390
+ }
1391
+
1392
+ .uplt-compare-slider {
1393
+ position: absolute;
1394
+ width: 1px;
1395
+ height: 1px;
1396
+ margin: 0;
1397
+ opacity: 0;
1398
+ overflow: hidden;
1399
+ }
1400
+
1401
+ .uplt-compare-slider input[type="range"] {
1402
+ width: 1px;
1403
+ margin: 0;
1404
+ }
1405
+
1406
+ .uplt-compare-label-btn {
1407
+ appearance: none;
1408
+ border: 1px solid var(--uplt-color-border-muted);
1409
+ border-radius: 9999px;
1410
+ background: var(--uplt-color-panel-bg);
1411
+ color: inherit;
1412
+ padding: 0.1rem 0.6rem;
1413
+ margin: 0;
1414
+ font: inherit;
1415
+ font-weight: 700;
1416
+ font-size: 0.85rem;
1417
+ letter-spacing: 0.05em;
1418
+ line-height: 1.2;
1419
+ text-transform: uppercase;
1420
+ cursor: pointer;
1421
+ }
1422
+
1423
+ .uplt-compare-label-btn:focus-visible {
1424
+ outline: 2px solid var(--uplt-color-accent);
1425
+ outline-offset: 2px;
1426
+ }
1427
+
1428
+ .uplt-compare-col {
1429
+ grid-column: 1 / -1;
1430
+ }
1431
+
1432
+ .uplt-why-compare-row {
1433
+ align-items: stretch;
1434
+ }
1435
+
1436
+ .uplt-why-compare-row .uplt-why-compare-col,
1437
+ .uplt-why-compare-row .uplt-why-compare-col.sd-col {
1438
+ flex: 0 0 100% !important;
1439
+ width: 100% !important;
1440
+ max-width: 100% !important;
1441
+ grid-column: 1 / -1;
1442
+ }
1443
+
1444
+ .uplt-why-compare-row .uplt-why-compare-hide-col {
1445
+ display: none !important;
1446
+ }
1447
+
1448
+
1449
+ .uplt-why .sd-card-body > p:first-child {
1450
+ font-weight: 700;
1451
+ font-size: 0.9rem;
1452
+ letter-spacing: 0.06em;
1453
+ text-transform: uppercase;
1454
+ }
1455
+
1456
+ .uplt-why-mpl .sd-card-body > p:first-child strong {
1457
+ color: #b45309;
1458
+ }
1459
+
1460
+ .uplt-why-uplt .sd-card-body > p:first-child strong {
1461
+ color: #178f84;
1462
+ }
1463
+
1464
+ .uplt-why .sd-card-body > p:last-child {
1465
+ margin-top: auto;
1466
+ padding-top: 0.35rem;
1467
+ color: var(--uplt-color-text-secondary);
1468
+ }
1469
+
1470
+ html.dark .uplt-why,
1471
+ html.dark-theme .uplt-why,
1472
+ [data-color-mode="dark"] .uplt-why {
1473
+ background: linear-gradient(180deg, #252525 0%, #1f1f1f 100%);
1474
+ }
@@ -38,6 +38,156 @@ function getCodeDetailsBlocks() {
38
38
  return Array.from(document.querySelectorAll("details.uplt-code-details"));
39
39
  }
40
40
 
41
+ function initWhyCompareSliders() {
42
+ const isWhyPage = /\/why(?:\.html)?$|\/why\.htm$/.test(
43
+ (window.location.pathname || "").toLowerCase(),
44
+ );
45
+ if (!isWhyPage) return;
46
+
47
+ const cards = Array.from(document.querySelectorAll(".sd-card.uplt-why"));
48
+ for (let i = 0; i < cards.length - 1; i += 1) {
49
+ const mplCard = cards[i];
50
+ const upltCard = cards[i + 1];
51
+ if (
52
+ !mplCard ||
53
+ !upltCard ||
54
+ !mplCard.classList.contains("uplt-why-mpl") ||
55
+ !upltCard.classList.contains("uplt-why-uplt")
56
+ ) {
57
+ continue;
58
+ }
59
+ i += 1;
60
+
61
+ const mplBody = mplCard.querySelector(".sd-card-body");
62
+ const upltBody = upltCard.querySelector(".sd-card-body");
63
+ if (!mplBody || !upltBody) {
64
+ continue;
65
+ }
66
+
67
+ const slider = document.createElement("div");
68
+ slider.className = "uplt-why-compare";
69
+
70
+ const body = document.createElement("div");
71
+ body.className = "sd-card-body";
72
+ slider.appendChild(body);
73
+
74
+ const labels = document.createElement("div");
75
+ labels.className = "uplt-compare-labels";
76
+ const leftLabel = document.createElement("button");
77
+ leftLabel.type = "button";
78
+ leftLabel.className = "uplt-label uplt-label-mpl uplt-compare-label-btn";
79
+ leftLabel.textContent = "Matplotlib";
80
+ leftLabel.addEventListener("click", () => {
81
+ sliderInput.value = "100";
82
+ onInput();
83
+ });
84
+
85
+ const rightLabel = document.createElement("button");
86
+ rightLabel.type = "button";
87
+ rightLabel.className = "uplt-label uplt-label-uplt uplt-compare-label-btn";
88
+ rightLabel.textContent = "UltraPlot";
89
+ rightLabel.addEventListener("click", () => {
90
+ sliderInput.value = "0";
91
+ onInput();
92
+ });
93
+ labels.appendChild(leftLabel);
94
+ labels.appendChild(rightLabel);
95
+ body.appendChild(labels);
96
+
97
+ const frame = document.createElement("div");
98
+ frame.className = "uplt-compare-frame";
99
+ frame.setAttribute(
100
+ "aria-label",
101
+ "Matplotlib and UltraPlot before/after comparison",
102
+ );
103
+
104
+ const mplLayer = document.createElement("div");
105
+ mplLayer.className = "uplt-compare-side uplt-compare-mpl";
106
+ mplLayer.appendChild(mplBody.cloneNode(true));
107
+ frame.appendChild(mplLayer);
108
+
109
+ const upltLayer = document.createElement("div");
110
+ upltLayer.className = "uplt-compare-side uplt-compare-uplt";
111
+ upltLayer.appendChild(upltBody.cloneNode(true));
112
+ frame.appendChild(upltLayer);
113
+
114
+ const handle = document.createElement("div");
115
+ handle.className = "uplt-compare-handle";
116
+ frame.appendChild(handle);
117
+
118
+ const sliderInput = document.createElement("input");
119
+ sliderInput.className = "uplt-compare-slider";
120
+ sliderInput.type = "range";
121
+ sliderInput.min = "0";
122
+ sliderInput.max = "100";
123
+ sliderInput.value = "50";
124
+ sliderInput.setAttribute("aria-label", "Comparison reveal amount");
125
+
126
+ const onInput = () => {
127
+ frame.style.setProperty("--uplt-compare-position", `${sliderInput.value}%`);
128
+ };
129
+ sliderInput.addEventListener("input", onInput);
130
+ onInput();
131
+
132
+ const moveHandle = (clientX) => {
133
+ const rect = frame.getBoundingClientRect();
134
+ if (!rect.width) return;
135
+ const ratio = (clientX - rect.left) / rect.width;
136
+ const clamped = Math.max(0, Math.min(1, ratio));
137
+ sliderInput.value = `${Math.round(clamped * 100)}`;
138
+ onInput();
139
+ };
140
+
141
+ handle.addEventListener("pointerdown", (event) => {
142
+ event.preventDefault();
143
+ handle.setPointerCapture?.(event.pointerId);
144
+ moveHandle(event.clientX);
145
+
146
+ const onPointerMove = (moveEvent) => {
147
+ moveHandle(moveEvent.clientX);
148
+ };
149
+ const onPointerUp = () => {
150
+ window.removeEventListener("pointermove", onPointerMove);
151
+ window.removeEventListener("pointerup", onPointerUp);
152
+ window.removeEventListener("pointercancel", onPointerUp);
153
+ };
154
+
155
+ window.addEventListener("pointermove", onPointerMove);
156
+ window.addEventListener("pointerup", onPointerUp, { once: true });
157
+ window.addEventListener("pointercancel", onPointerUp, { once: true });
158
+ });
159
+
160
+ body.appendChild(frame);
161
+ body.appendChild(sliderInput);
162
+
163
+ mplCard.className = "sd-card uplt-why uplt-why-compare";
164
+ mplCard.replaceChildren();
165
+ mplCard.appendChild(body);
166
+
167
+ const compareCol = mplCard.closest(".sd-col");
168
+ if (compareCol) {
169
+ compareCol.classList.add("uplt-why-compare-col");
170
+ compareCol.style.width = "100%";
171
+ compareCol.style.maxWidth = "100%";
172
+ compareCol.style.flex = "0 0 100%";
173
+ }
174
+
175
+ const compareRow = mplCard.closest(".sd-row");
176
+ if (compareRow) {
177
+ compareRow.classList.add("uplt-why-compare-row");
178
+ compareRow.style.display = "block";
179
+ }
180
+
181
+ const upltCol = upltCard.closest(".sd-col");
182
+ if (upltCol) {
183
+ upltCol.classList.add("uplt-why-compare-hide-col");
184
+ upltCol.style.display = "none";
185
+ }
186
+
187
+ upltCard.style.display = "none";
188
+ }
189
+ }
190
+
41
191
  function initScrollChromeFade() {
42
192
  const topBar = document.querySelector(".sy-head");
43
193
  const leftBar = document.querySelector(".sy-lside");
@@ -711,6 +861,7 @@ document.addEventListener("DOMContentLoaded", function () {
711
861
 
712
862
  // Re-sync right TOC controls now that code wrappers exist.
713
863
  initShibuyaRightToc();
864
+ initWhyCompareSliders();
714
865
 
715
866
  const navLinks = document.querySelectorAll(
716
867
  ".wy-menu-vertical a.reference.internal",
@@ -68,7 +68,6 @@ Configuration tools
68
68
 
69
69
  .. automodsumm:: ultraplot.config
70
70
  :toctree: api
71
- :skip: inline_backend_fmt, RcConfigurator
72
71
 
73
72
 
74
73
  Constructor functions
@@ -79,7 +78,6 @@ Constructor functions
79
78
 
80
79
  .. automodsumm:: ultraplot.constructor
81
80
  :toctree: api
82
- :skip: Colors
83
81
 
84
82
 
85
83
  Locators and formatters
@@ -110,7 +108,6 @@ Colormaps and normalizers
110
108
 
111
109
  .. automodsumm:: ultraplot.colors
112
110
  :toctree: api
113
- :skip: ListedColormap, LinearSegmentedColormap, PerceptuallyUniformColormap, LinearSegmentedNorm
114
111
 
115
112
 
116
113
  Projection classes
@@ -427,6 +427,10 @@ nbsphinx_execute_arguments = [
427
427
  "}",
428
428
  ]
429
429
 
430
+ # Prefer vector graphics for sphinx ``plot`` directives so plots stay sharp
431
+ # without high-DPI raster scaling.
432
+ plot_formats = ["svg"]
433
+
430
434
  # Control notebook execution from env for predictable local/CI builds.
431
435
  # Use values: auto, always, never.
432
436
  nbsphinx_execute = os.environ.get("UPLT_DOCS_EXECUTE", "auto").strip().lower()
@@ -289,11 +289,10 @@ axs.format(
289
289
  # when they are omitted (e.g., ``lon0=0`` as the default for most projections).
290
290
  #
291
291
  # .. warning::
292
- # The `basemap`_ package is now being actively maintained again with a short hiatus for a few years. We originally
293
- # included basemap support because its gridline labeling was more powerful
294
- # than cartopy gridline labeling. While cartopy gridline labeling has
295
- # significantly improved since version 0.18, UltraPlot continues to support
296
- # both mapping libraries to give users flexibility in their visualization choices.
292
+ # The basemap backend is deprecated as of version 3.0.0 and may be removed in a
293
+ # future release. Please use the cartopy backend instead. Cartopy gridline
294
+ # labeling has significantly improved since version 0.18 and now covers the
295
+ # features we originally included basemap support for.
297
296
 
298
297
  # %%
299
298
  import ultraplot as uplt
@@ -216,11 +216,19 @@ ax.format(title="Multiple colors", ymargin=0.15)
216
216
  # the :ref:`2D plotting section <ug_apply_cmap>`). Marginal distributions
217
217
  # for the 2D histograms can be added using :ref:`panel axes <ug_panels>`.
218
218
  #
219
- # In the future, UltraPlot will include options for adding "smooth" kernel density
220
- # estimations to histograms plots using a `kde` keyword. It will also include
221
- # separate `ultraplot.axes.PlotAxes.kde` and `ultraplot.axes.PlotAxes.kde2d` commands.
222
- # The :func:`~ultraplot.axes.PlotAxes.violin` and :func:`~ultraplot.axes.PlotAxes.violinh` commands
223
- # will use the same algorithm for kernel density estimation as the `kde` commands.
219
+ # Histograms accept a ``kde=True`` keyword that overlays a smooth
220
+ # `kernel density estimate <https://en.wikipedia.org/wiki/Kernel_density_estimation>`__
221
+ # of each column of data. The curve follows the histogram -- it is scaled to
222
+ # the bin counts unless ``density=True``, accumulated when the histogram is
223
+ # stacked, and drawn in the color of the histogram it belongs to. Use the
224
+ # `kde_kw` keyword to control the estimate (``bw_method``, ``weights``,
225
+ # ``points``) and to style the curve (any `~matplotlib.axes.Axes.plot`
226
+ # property). The same keyword is used by
227
+ # :func:`~ultraplot.axes.PlotAxes.ridgeline` (see :ref:`ug_ridgeline`).
228
+ # This requires `scipy <https://scipy.org>`__, which is installed with
229
+ # ``pip install ultraplot[stats]``. Separate
230
+ # :func:`~ultraplot.axes.PlotAxes.kde` and
231
+ # :func:`~ultraplot.axes.PlotAxes.kde2d` commands are still planned.
224
232
 
225
233
  # %%
226
234
  import numpy as np
@@ -244,6 +252,7 @@ res = ax.hist(
244
252
  cycle=("indigo9", "gray3", "red9"),
245
253
  labels=list("abc"),
246
254
  legend="ul",
255
+ kde=True,
247
256
  )
248
257
 
249
258
  # %%