ultraplot 2.7.0__tar.gz → 2.7.1__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 (510) hide show
  1. {ultraplot-2.7.0/ultraplot.egg-info → ultraplot-2.7.1}/PKG-INFO +2 -2
  2. {ultraplot-2.7.0 → ultraplot-2.7.1}/pyproject.toml +1 -1
  3. ultraplot-2.7.1/ultraplot/_version.py +1 -0
  4. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/geo.py +39 -17
  5. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/colors.py +25 -3
  6. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colormap.py +14 -1
  7. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_geographic.py +106 -0
  8. {ultraplot-2.7.0 → ultraplot-2.7.1/ultraplot.egg-info}/PKG-INFO +2 -2
  9. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/requires.txt +1 -1
  10. ultraplot-2.7.0/ultraplot/_version.py +0 -1
  11. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/ISSUE_TEMPLATE.md +0 -0
  12. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/dependabot.yml +0 -0
  13. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/micromamba-condarc.yml +0 -0
  14. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/workflows/black.yml +0 -0
  15. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/workflows/build-ultraplot.yml +0 -0
  16. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/workflows/main.yml +0 -0
  17. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/workflows/publish-pypi.yml +0 -0
  18. {ultraplot-2.7.0 → ultraplot-2.7.1}/.github/workflows/test-map.yml +0 -0
  19. {ultraplot-2.7.0 → ultraplot-2.7.1}/.gitignore +0 -0
  20. {ultraplot-2.7.0 → ultraplot-2.7.1}/.pre-commit-config.yaml +0 -0
  21. {ultraplot-2.7.0 → ultraplot-2.7.1}/.readthedocs.yml +0 -0
  22. {ultraplot-2.7.0 → ultraplot-2.7.1}/.zenodo.json +0 -0
  23. {ultraplot-2.7.0 → ultraplot-2.7.1}/CITATION.cff +0 -0
  24. {ultraplot-2.7.0 → ultraplot-2.7.1}/CODEOFCONDUCT.md +0 -0
  25. {ultraplot-2.7.0 → ultraplot-2.7.1}/CONTRIBUTING.rst +0 -0
  26. {ultraplot-2.7.0 → ultraplot-2.7.1}/INSTALL.rst +0 -0
  27. {ultraplot-2.7.0 → ultraplot-2.7.1}/LICENSE.txt +0 -0
  28. {ultraplot-2.7.0 → ultraplot-2.7.1}/README.rst +0 -0
  29. {ultraplot-2.7.0 → ultraplot-2.7.1}/UltraPlotLogo.svg +0 -0
  30. {ultraplot-2.7.0 → ultraplot-2.7.1}/codecov.yml +0 -0
  31. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/1dplots.py +0 -0
  32. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/2dplots.py +0 -0
  33. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/Makefile +0 -0
  34. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_ext/notoc.py +0 -0
  35. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_scripts/fetch_releases.py +0 -0
  36. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/alias-explorer-v3.css +0 -0
  37. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/alias-explorer-v3.js +0 -0
  38. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/alias-map.svg +0 -0
  39. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/custom.css +0 -0
  40. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/custom.js +0 -0
  41. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/cartesian_example.svg +0 -0
  42. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/colorbars_legends_example.svg +0 -0
  43. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/colormaps_example.svg +0 -0
  44. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/data_aware_example.svg +0 -0
  45. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/panels_example.svg +0 -0
  46. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/projection_example.svg +0 -0
  47. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/example_plots/subplot_example.svg +0 -0
  48. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_blank.svg +0 -0
  49. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_long.png +0 -0
  50. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_long.svg +0 -0
  51. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_social.png +0 -0
  52. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_social.svg +0 -0
  53. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_static/logo_square.png +0 -0
  54. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/_templates/whatsnew_sidebar.html +0 -0
  55. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/about.rst +0 -0
  56. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/aliases.rst +0 -0
  57. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/api.rst +0 -0
  58. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/basics.py +0 -0
  59. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/cartesian.py +0 -0
  60. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/colorbars_legends.py +0 -0
  61. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/colormaps.py +0 -0
  62. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/colors.py +0 -0
  63. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/conf.py +0 -0
  64. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/configuration.rst +0 -0
  65. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/contributing.rst +0 -0
  66. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/cycles.py +0 -0
  67. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/data_aware.py +0 -0
  68. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/README.txt +0 -0
  69. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/colors/01_cycle_colormap.py +0 -0
  70. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/colors/02_diverging_colormap.py +0 -0
  71. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/colors/README.txt +0 -0
  72. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/geo/01_robin_tracks.py +0 -0
  73. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/geo/02_orthographic_views.py +0 -0
  74. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/geo/03_projections_features.py +0 -0
  75. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/geo/04_choropleth.py +0 -0
  76. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/geo/README.txt +0 -0
  77. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/layouts/01_shared_axes_abc.py +0 -0
  78. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/layouts/02_complex_layout_insets.py +0 -0
  79. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/layouts/03_spanning_labels.py +0 -0
  80. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/layouts/README.txt +0 -0
  81. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/legend_types/01_semantic_legends.py +0 -0
  82. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/legends_colorbars/01_multi_colorbars.py +0 -0
  83. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/legends_colorbars/02_legend_inset_colorbar.py +0 -0
  84. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/legends_colorbars/03_semantic_legends.py +0 -0
  85. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/legends_colorbars/README.txt +0 -0
  86. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/01_curved_quiver.py +0 -0
  87. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/02_network_graph.py +0 -0
  88. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/03_lollipop.py +0 -0
  89. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/04_datetime_series.py +0 -0
  90. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/05_box_violin.py +0 -0
  91. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/06_ridge_plot.py +0 -0
  92. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/07_radar.py +0 -0
  93. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/07_sankey.py +0 -0
  94. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/08_chord_diagram.py +0 -0
  95. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/08_ternary.py +0 -0
  96. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/09_phylogeny.py +0 -0
  97. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/10_circos_bed.py +0 -0
  98. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/11_topic_ribbon.py +0 -0
  99. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/12_taylor_diagram.py +0 -0
  100. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/examples/plot_types/README.txt +0 -0
  101. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/external-links.rst +0 -0
  102. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/faq.rst +0 -0
  103. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/first_figure.py +0 -0
  104. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/fonts.py +0 -0
  105. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/index.rst +0 -0
  106. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/insets_panels.py +0 -0
  107. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/install.rst +0 -0
  108. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/keyword_aliases.rst +0 -0
  109. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/lazy_loading.rst +0 -0
  110. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/make.bat +0 -0
  111. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/networks.py +0 -0
  112. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/projections.py +0 -0
  113. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/recipes.py +0 -0
  114. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/requirements-rtd.txt +0 -0
  115. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/sphinxext/custom_roles.py +0 -0
  116. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/sphinxext/jupytext_cache.py +0 -0
  117. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/stats.py +0 -0
  118. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/subplots.py +0 -0
  119. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/ultraplotrc +0 -0
  120. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/usage.rst +0 -0
  121. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/why.rst +0 -0
  122. {ultraplot-2.7.0 → ultraplot-2.7.1}/docs/why_ultraplot.py +0 -0
  123. {ultraplot-2.7.0 → ultraplot-2.7.1}/environment.yml +0 -0
  124. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/PermanentMarker-Regular.ttf +0 -0
  125. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/environment-logo.yml +0 -0
  126. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/logo.py +0 -0
  127. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/run-linter.sh +0 -0
  128. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/webicon.py +0 -0
  129. {ultraplot-2.7.0 → ultraplot-2.7.1}/logo/whyUltraPlot.svg +0 -0
  130. {ultraplot-2.7.0 → ultraplot-2.7.1}/noxfile.py +0 -0
  131. {ultraplot-2.7.0 → ultraplot-2.7.1}/requirements-minimal.txt +0 -0
  132. {ultraplot-2.7.0 → ultraplot-2.7.1}/setup.cfg +0 -0
  133. {ultraplot-2.7.0 → ultraplot-2.7.1}/setup.py +0 -0
  134. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/ci/build_test_map.py +0 -0
  135. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/ci/check_installed_docstrings.py +0 -0
  136. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/ci/select_tests.py +0 -0
  137. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/ci/static_consumer.py +0 -0
  138. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/ci/version_support.py +0 -0
  139. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/expand_docstrings.py +0 -0
  140. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/generate_alias_figure.py +0 -0
  141. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/generate_alias_reference.py +0 -0
  142. {ultraplot-2.7.0 → ultraplot-2.7.1}/tools/serve_alias_docs.py +0 -0
  143. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/.opencode/goals/state.json.lock +0 -0
  144. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/.opencode/goals/state.json.sessions/.migration-v1-complete +0 -0
  145. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json +0 -0
  146. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/.opencode/goals/state.json.sessions/cc3e983cb1eb34ad9f66e65e9ff9910c47ddb4f26523966e07d6a8bf3bc830eb/state.json.lock +0 -0
  147. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/__init__.py +0 -0
  148. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_animation.py +0 -0
  149. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_interaction.py +0 -0
  150. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_layout.py +0 -0
  151. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_lazy.py +0 -0
  152. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_sharing.py +0 -0
  153. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/_subplots.py +0 -0
  154. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/animation.py +0 -0
  155. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/__init__.py +0 -0
  156. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/_formatting.py +0 -0
  157. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/base.py +0 -0
  158. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/cartesian.py +0 -0
  159. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/container.py +0 -0
  160. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot.py +0 -0
  161. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot_types/__init__.py +0 -0
  162. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot_types/circlize.py +0 -0
  163. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot_types/curved_quiver.py +0 -0
  164. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot_types/ribbon.py +0 -0
  165. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/plot_types/sankey.py +0 -0
  166. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/polar.py +0 -0
  167. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/shared.py +0 -0
  168. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/taylor.py +0 -0
  169. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/axes/three.py +0 -0
  170. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Algae.rgb +0 -0
  171. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Amp.rgb +0 -0
  172. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/BR.rgb +0 -0
  173. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Balance.rgb +0 -0
  174. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues1_r.xml +0 -0
  175. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues2.xml +0 -0
  176. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues3.xml +0 -0
  177. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues4_r.xml +0 -0
  178. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues5.xml +0 -0
  179. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues6.xml +0 -0
  180. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues7.xml +0 -0
  181. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues8.xml +0 -0
  182. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Blues9.xml +0 -0
  183. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Boreal.json +0 -0
  184. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns1.xml +0 -0
  185. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns2.xml +0 -0
  186. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns3.xml +0 -0
  187. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns4.xml +0 -0
  188. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns5.xml +0 -0
  189. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns6.xml +0 -0
  190. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns7.xml +0 -0
  191. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns8.xml +0 -0
  192. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Browns9.xml +0 -0
  193. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/ColdHot.rgb +0 -0
  194. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Crest.rgb +0 -0
  195. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Curl.rgb +0 -0
  196. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Deep.rgb +0 -0
  197. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Delta.rgb +0 -0
  198. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Dense.rgb +0 -0
  199. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Div.json +0 -0
  200. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/DryWet.json +0 -0
  201. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Dusk.json +0 -0
  202. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Fire.json +0 -0
  203. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Flare.rgb +0 -0
  204. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Glacial.json +0 -0
  205. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens1_r.xml +0 -0
  206. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens2.xml +0 -0
  207. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens3_r.xml +0 -0
  208. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens4.xml +0 -0
  209. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens5.xml +0 -0
  210. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens6_r.xml +0 -0
  211. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens7.xml +0 -0
  212. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Greens8.xml +0 -0
  213. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Haline.rgb +0 -0
  214. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Ice.rgb +0 -0
  215. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/IceFire.rgb +0 -0
  216. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Mako.rgb +0 -0
  217. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Marine.json +0 -0
  218. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Matter.rgb +0 -0
  219. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Mono.txt +0 -0
  220. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/MonoCycle.txt +0 -0
  221. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/NegPos.json +0 -0
  222. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Oranges1.xml +0 -0
  223. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Oranges2.xml +0 -0
  224. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Oranges3.xml +0 -0
  225. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Oranges4.xml +0 -0
  226. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Oxy.rgb +0 -0
  227. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Phase.rgb +0 -0
  228. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Purples1_r.xml +0 -0
  229. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Purples2.xml +0 -0
  230. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Purples3.xml +0 -0
  231. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Reds1.xml +0 -0
  232. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Reds2.xml +0 -0
  233. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Reds3.xml +0 -0
  234. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Reds4.xml +0 -0
  235. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Reds5.xml +0 -0
  236. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Rocket.rgb +0 -0
  237. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Solar.rgb +0 -0
  238. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Speed.rgb +0 -0
  239. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Stellar.json +0 -0
  240. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Sunrise.json +0 -0
  241. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Sunset.json +0 -0
  242. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Tempo.rgb +0 -0
  243. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Thermal.rgb +0 -0
  244. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Turbid.rgb +0 -0
  245. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Vivid.xml +0 -0
  246. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Vlag.rgb +0 -0
  247. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Yellows1.xml +0 -0
  248. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Yellows2.xml +0 -0
  249. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Yellows3.xml +0 -0
  250. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/Yellows4.xml +0 -0
  251. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/acton.txt +0 -0
  252. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/bam.txt +0 -0
  253. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/bamO.txt +0 -0
  254. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/bamako.txt +0 -0
  255. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/batlow.txt +0 -0
  256. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/batlowK.txt +0 -0
  257. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/batlowW.txt +0 -0
  258. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/berlin.txt +0 -0
  259. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/bilbao.txt +0 -0
  260. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/broc.txt +0 -0
  261. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/brocO.txt +0 -0
  262. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/buda.txt +0 -0
  263. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/bukavu.txt +0 -0
  264. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/cork.txt +0 -0
  265. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/corkO.txt +0 -0
  266. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/davos.txt +0 -0
  267. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/devon.txt +0 -0
  268. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/fes.txt +0 -0
  269. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/hawaii.txt +0 -0
  270. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/imola.txt +0 -0
  271. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/lajolla.txt +0 -0
  272. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/lapaz.txt +0 -0
  273. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/lisbon.txt +0 -0
  274. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/nuuk.txt +0 -0
  275. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/oleron.txt +0 -0
  276. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/oslo.txt +0 -0
  277. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/roma.txt +0 -0
  278. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/romaO.txt +0 -0
  279. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/tofino.txt +0 -0
  280. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/tokyo.txt +0 -0
  281. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/turku.txt +0 -0
  282. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/vanimo.txt +0 -0
  283. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/vik.txt +0 -0
  284. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cmaps/vikO.txt +0 -0
  285. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/colorbar.py +0 -0
  286. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/colors/opencolor.txt +0 -0
  287. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/colors/xkcd.txt +0 -0
  288. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/config.py +0 -0
  289. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/constructor.py +0 -0
  290. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/538.hex +0 -0
  291. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/FlatUI.hex +0 -0
  292. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/Qual1.rgb +0 -0
  293. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/Qual2.rgb +0 -0
  294. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/bmh.hex +0 -0
  295. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/classic.hex +0 -0
  296. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/colorblind.hex +0 -0
  297. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/colorblind10.hex +0 -0
  298. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/default.hex +0 -0
  299. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/ggplot.hex +0 -0
  300. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/seaborn.hex +0 -0
  301. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/cycles/tableau.hex +0 -0
  302. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/demos.py +0 -0
  303. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/externals/__init__.py +0 -0
  304. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/externals/hsluv.py +0 -0
  305. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/figure.py +0 -0
  306. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-Bold.ttf +0 -0
  307. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
  308. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
  309. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-Light.ttf +0 -0
  310. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-Medium.ttf +0 -0
  311. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-Regular.ttf +0 -0
  312. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
  313. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
  314. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Black.ttf +0 -0
  315. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
  316. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Bold.ttf +0 -0
  317. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
  318. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
  319. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
  320. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
  321. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
  322. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Italic.ttf +0 -0
  323. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Light.ttf +0 -0
  324. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
  325. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Medium.ttf +0 -0
  326. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
  327. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-Regular.ttf +0 -0
  328. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
  329. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
  330. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_FIRAMATH.txt +0 -0
  331. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_FIRASANS.txt +0 -0
  332. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_NOTOSANS.txt +0 -0
  333. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_NOTOSERIF.txt +0 -0
  334. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_OPENSANS.txt +0 -0
  335. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_ROBOTO.txt +0 -0
  336. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_SOURCESANS.txt +0 -0
  337. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_SOURCESERIF.txt +0 -0
  338. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_TEXGYRE.txt +0 -0
  339. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/LICENSE_UBUNTU.txt +0 -0
  340. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSans-Bold.ttf +0 -0
  341. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
  342. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSans-Italic.ttf +0 -0
  343. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSans-Regular.ttf +0 -0
  344. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
  345. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
  346. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
  347. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
  348. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-Bold.ttf +0 -0
  349. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
  350. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-Italic.ttf +0 -0
  351. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-Regular.ttf +0 -0
  352. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
  353. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
  354. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Black.ttf +0 -0
  355. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
  356. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Bold.ttf +0 -0
  357. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
  358. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Italic.ttf +0 -0
  359. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Light.ttf +0 -0
  360. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
  361. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Medium.ttf +0 -0
  362. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
  363. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Roboto-Regular.ttf +0 -0
  364. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
  365. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
  366. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
  367. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
  368. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
  369. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
  370. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
  371. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
  372. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
  373. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
  374. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
  375. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
  376. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
  377. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
  378. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
  379. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
  380. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
  381. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
  382. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
  383. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
  384. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
  385. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
  386. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
  387. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
  388. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
  389. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
  390. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
  391. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-Light.ttf +0 -0
  392. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
  393. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
  394. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
  395. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
  396. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
  397. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
  398. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
  399. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
  400. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
  401. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
  402. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
  403. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
  404. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
  405. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
  406. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
  407. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
  408. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
  409. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreheros-bold.ttf +0 -0
  410. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
  411. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreheros-italic.ttf +0 -0
  412. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreheros-regular.ttf +0 -0
  413. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
  414. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
  415. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
  416. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
  417. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreschola-bold.ttf +0 -0
  418. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
  419. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreschola-italic.ttf +0 -0
  420. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyreschola-regular.ttf +0 -0
  421. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyretermes-bold.ttf +0 -0
  422. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
  423. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyretermes-italic.ttf +0 -0
  424. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/fonts/texgyretermes-regular.ttf +0 -0
  425. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/gridspec.py +0 -0
  426. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/__init__.py +0 -0
  427. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/benchmarks.py +0 -0
  428. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/context.py +0 -0
  429. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/docstring.py +0 -0
  430. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/fonts.py +0 -0
  431. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/guides.py +0 -0
  432. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/inputs.py +0 -0
  433. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/kwargs.py +0 -0
  434. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/labels.py +0 -0
  435. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/rcsetup.py +0 -0
  436. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/versions.py +0 -0
  437. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/internals/warnings.py +0 -0
  438. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/legend.py +0 -0
  439. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/mcp.py +0 -0
  440. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/proj.py +0 -0
  441. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/py.typed +0 -0
  442. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/scale.py +0 -0
  443. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/__init__.py +0 -0
  444. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/conftest.py +0 -0
  445. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_1dplots.py +0 -0
  446. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_2dplots.py +0 -0
  447. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_alias_signatures.py +0 -0
  448. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_animation.py +0 -0
  449. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_axes.py +0 -0
  450. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_axes_alt_styles.py +0 -0
  451. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_axes_base_colorbar_helpers.py +0 -0
  452. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_base.py +0 -0
  453. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_circlize_integration.py +0 -0
  454. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colorbar.py +0 -0
  455. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colorbar_helpers_extra.py +0 -0
  456. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colormap_helpers_extra.py +0 -0
  457. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colors.py +0 -0
  458. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_colors_helpers.py +0 -0
  459. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_config.py +0 -0
  460. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_config_helpers_extra.py +0 -0
  461. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_constructor.py +0 -0
  462. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_constructor_helpers_extra.py +0 -0
  463. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_core_versions.py +0 -0
  464. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_demos.py +0 -0
  465. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_docs.py +0 -0
  466. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_docs_fetch_releases.py +0 -0
  467. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_docs_search.py +0 -0
  468. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_docstring_helpers.py +0 -0
  469. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_external_axes_container_integration.py +0 -0
  470. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_external_container_edge_cases.py +0 -0
  471. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_external_container_mocked.py +0 -0
  472. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_figure.py +0 -0
  473. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_fonts.py +0 -0
  474. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_format.py +0 -0
  475. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_gridspec.py +0 -0
  476. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_handlers.py +0 -0
  477. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_imports.py +0 -0
  478. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_imshow.py +0 -0
  479. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_inputs.py +0 -0
  480. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_inputs_helpers.py +0 -0
  481. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_inset.py +0 -0
  482. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_integration.py +0 -0
  483. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_kwargs_helpers.py +0 -0
  484. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_legend.py +0 -0
  485. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_mcp.py +0 -0
  486. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_plot.py +0 -0
  487. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_proj_helpers.py +0 -0
  488. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_projections.py +0 -0
  489. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_rcsetup_helpers.py +0 -0
  490. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_release_metadata.py +0 -0
  491. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_scale_helpers.py +0 -0
  492. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_semantic_legend.py +0 -0
  493. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_statistical_plotting.py +0 -0
  494. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_subplot_manager.py +0 -0
  495. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_subplots.py +0 -0
  496. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_text_helpers.py +0 -0
  497. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_textalign.py +0 -0
  498. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_tickers.py +0 -0
  499. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/tests/test_ultralayout.py +0 -0
  500. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/text.py +0 -0
  501. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/textalign.py +0 -0
  502. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/ticker.py +0 -0
  503. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/ui.py +0 -0
  504. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/ultralayout.py +0 -0
  505. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot/utils.py +0 -0
  506. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/SOURCES.txt +0 -0
  507. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/dependency_links.txt +0 -0
  508. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/entry_points.txt +0 -0
  509. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/scm_file_list.json +0 -0
  510. {ultraplot-2.7.0 → ultraplot-2.7.1}/ultraplot.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultraplot
3
- Version: 2.7.0
3
+ Version: 2.7.1
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>
@@ -49,7 +49,7 @@ Requires-Dist: mcp<3,>=2.1; extra == "mcp"
49
49
  Provides-Extra: stats
50
50
  Requires-Dist: scipy; extra == "stats"
51
51
  Provides-Extra: typing
52
- Requires-Dist: basedpyright==1.31.4; extra == "typing"
52
+ Requires-Dist: basedpyright==1.40.1; extra == "typing"
53
53
  Dynamic: license-file
54
54
 
55
55
  .. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg
@@ -76,7 +76,7 @@ stats = [
76
76
  ]
77
77
 
78
78
  typing = [
79
- "basedpyright==1.31.4",
79
+ "basedpyright==1.40.1",
80
80
  ]
81
81
 
82
82
  [build-system]
@@ -0,0 +1 @@
1
+ __version__ = '2.7.1'
@@ -2900,17 +2900,17 @@ class GeoAxes(shared._SharedAxes, plot.PlotAxes):
2900
2900
  if _is_rectilinear_projection(self):
2901
2901
  self._add_geoticks("x", lonticklen, ticklen)
2902
2902
  self._add_geoticks("y", latticklen, ticklen)
2903
- # If latlim is set to None it resets
2904
- # the view; this affects the visible range
2905
- # we need to force this to prevent
2906
- # side effects
2907
- if latlim == (None, None):
2908
- latlim = self._lataxis.get_view_interval()
2909
- if lonlim == (None, None):
2910
- lonlim = self._lonaxis.get_view_interval()
2911
- self._update_extent(
2912
- lonlim=lonlim, latlim=latlim, boundinglat=boundinglat
2913
- )
2903
+ # Basemap still installs ticks through Axis.set_ticks(), which can
2904
+ # expand native limits. Cartopy uses FixedLocator and therefore
2905
+ # does not need (and must not receive) this extent reset.
2906
+ if self._name == "basemap":
2907
+ if latlim == (None, None):
2908
+ latlim = self._lataxis.get_view_interval()
2909
+ if lonlim == (None, None):
2910
+ lonlim = self._lonaxis.get_view_interval()
2911
+ self._update_extent(
2912
+ lonlim=lonlim, latlim=latlim, boundinglat=boundinglat
2913
+ )
2914
2914
  else:
2915
2915
  warnings._warn_ultraplot(
2916
2916
  f"Projection is not rectilinear. Ignoring {lonticklen=} and {latticklen=} settings."
@@ -3307,8 +3307,28 @@ class GeoAxes(shared._SharedAxes, plot.PlotAxes):
3307
3307
  # Turn off the ticks otherwise they are double for basemap.
3308
3308
  ax.set_major_formatter(mticker.NullFormatter())
3309
3309
 
3310
- # Always show the ticks
3311
- ax.set_ticks(tick_positions)
3310
+ # Always show the ticks. Cartopy gridliner positions are geographic
3311
+ # longitude/latitude coordinates, while the native matplotlib axes use
3312
+ # projection coordinates. Transform them explicitly and install a fixed
3313
+ # locator rather than calling Axis.set_ticks(), which would expand the view
3314
+ # limits to include every tick. Out-of-view fixed ticks are harmless because
3315
+ # Matplotlib filters them at draw time.
3316
+ if self._name == "cartopy":
3317
+ zeros = np.zeros_like(tick_positions)
3318
+ vertices = (
3319
+ np.column_stack((tick_positions, zeros))
3320
+ if x_or_y == "x"
3321
+ else np.column_stack((zeros, tick_positions))
3322
+ )
3323
+ projected = _project_vertices(
3324
+ self,
3325
+ vertices,
3326
+ transform=ccrs.PlateCarree(globe=self.projection.globe),
3327
+ )[:, "xy".index(x_or_y)]
3328
+ projected = projected[np.isfinite(projected)]
3329
+ ax.set_major_locator(mticker.FixedLocator(projected))
3330
+ else:
3331
+ ax.set_ticks(tick_positions)
3312
3332
  ax.set_visible(True)
3313
3333
 
3314
3334
  # Note: set grid_alpha to 0 as it is controlled through the gridlines_major
@@ -4575,14 +4595,14 @@ def _choropleth_iter_rings(geometry: Any) -> Iterator[Any]:
4575
4595
  )
4576
4596
 
4577
4597
 
4578
- def _choropleth_project_vertices(
4598
+ def _project_vertices(
4579
4599
  ax: GeoAxes,
4580
4600
  vertices: Any,
4581
4601
  *,
4582
4602
  transform: Any = None,
4583
4603
  ) -> np.ndarray:
4584
4604
  """
4585
- Project polygon-ring vertices into the target map coordinate system.
4605
+ Project coordinate vertices into the target map coordinate system.
4586
4606
  """
4587
4607
  vertices = np.asarray(vertices, dtype=float)
4588
4608
  xy = vertices[:, :2]
@@ -4590,7 +4610,9 @@ def _choropleth_project_vertices(
4590
4610
  src = transform
4591
4611
  if src is None:
4592
4612
  if ccrs is None:
4593
- raise RuntimeError("choropleth() requires cartopy for cartopy GeoAxes.")
4613
+ raise RuntimeError(
4614
+ "Cartopy is required to project Cartopy coordinates."
4615
+ )
4594
4616
  src = ccrs.PlateCarree()
4595
4617
  out = ax.projection.transform_points(src, xy[:, 0], xy[:, 1])
4596
4618
  return np.asarray(out[:, :2], dtype=float)
@@ -4631,7 +4653,7 @@ def _choropleth_geometry_path(
4631
4653
 
4632
4654
  paths = []
4633
4655
  for ring in _choropleth_iter_rings(geometry):
4634
- projected = _choropleth_project_vertices(ax, ring, transform=transform)
4656
+ projected = _project_vertices(ax, ring, transform=transform)
4635
4657
  path = _choropleth_close_path(projected)
4636
4658
  if path is not None:
4637
4659
  paths.append(path)
@@ -536,7 +536,7 @@ def _make_segment_data(values, coords=None, ratios=None):
536
536
  coords = np.atleast_1d(coords)
537
537
  if ratios is not None:
538
538
  warnings._warn_ultraplot(
539
- f"Segment coordinates were provided, ignoring " f"ratios={ratios!r}."
539
+ f"Segment coordinates were provided, ignoring ratios={ratios!r}."
540
540
  )
541
541
  if len(coords) != len(values) or coords[0] != 0 or coords[-1] != 1:
542
542
  raise ValueError(f"Coordinates must range from 0 to 1, got {coords!r}.")
@@ -793,8 +793,7 @@ class _Colormap(object):
793
793
  data = "\n".join(" ".join(f"{num:0.6f}" for num in line) for line in data)
794
794
  else:
795
795
  raise ValueError(
796
- f"Invalid extension {ext!r}. Options are: "
797
- "'hex', 'txt', 'rgb', 'rgba'."
796
+ f"Invalid extension {ext!r}. Options are: 'hex', 'txt', 'rgb', 'rgba'."
798
797
  )
799
798
  return data
800
799
 
@@ -3107,6 +3106,29 @@ class ColormapDatabase(mcm.ColormapRegistry):
3107
3106
  # These are converted to ultraplot's own colormap objects
3108
3107
  # on the fly when they are first accessed.
3109
3108
 
3109
+ def __contains__(self, key):
3110
+ # Work around for mpl 3.11.2 as it is not allowed to
3111
+ # this piece of code will allow look up to both occur in our flattened representation (e.g. 'fire') as well as the original "Fire"
3112
+ try:
3113
+ key = self._translate_deprecated(key)
3114
+ key = self._translate_key(key, mirror=True)
3115
+ except (KeyError, TypeError, ValueError):
3116
+ return False
3117
+
3118
+ # Directly registered colormap
3119
+ if self._has_item(key):
3120
+ return True
3121
+
3122
+ # Dynamically generated shifted colormap
3123
+ if key.endswith("_s"):
3124
+ key = key.removesuffix("_s")
3125
+
3126
+ # Dynamically generated reversed colormap
3127
+ if key.endswith("_r"):
3128
+ key = key.removesuffix("_r")
3129
+
3130
+ return self._has_item(key)
3131
+
3110
3132
  def _translate_deprecated(self, key):
3111
3133
  """
3112
3134
  Check if a colormap has been deprecated.
@@ -1,4 +1,7 @@
1
- import ultraplot as uplt, pytest, numpy as np
1
+ import numpy as np
2
+ import pytest
3
+
4
+ import ultraplot as uplt
2
5
 
3
6
 
4
7
  def test_colormap_reversal():
@@ -10,3 +13,13 @@ def test_colormap_reversal():
10
13
  assert np.allclose(
11
14
  cmap(i), cmap_r(255 - i)
12
15
  ), f"Reversed colormap mismatch at index {i}"
16
+
17
+
18
+ def test_colormap_name_sensitivty():
19
+ assert "fire" in uplt.colormaps
20
+ assert "Fire" in uplt.colormaps
21
+ assert "fire_r" in uplt.colormaps
22
+ assert "fire_s" in uplt.colormaps
23
+
24
+ with pytest.raises(KeyError):
25
+ uplt.colormaps["should_not_exist"]
@@ -1697,6 +1697,112 @@ def test_sharing_cartopy_with_colorbar(rng):
1697
1697
  return fig
1698
1698
 
1699
1699
 
1700
+ @pytest.mark.parametrize("proj", ("cyl", "merc", "lcyl", "mill"))
1701
+ @pytest.mark.parametrize("ticklen", (0.5, 1, 2))
1702
+ @pytest.mark.parametrize(
1703
+ ("lonlim", "latlim"),
1704
+ [
1705
+ (None, None),
1706
+ ((95, 200), (10, 40)),
1707
+ ],
1708
+ )
1709
+ def test_geoticks_rectangular_projection_coordinates(proj, ticklen, lonlim, latlim):
1710
+ """
1711
+ Geographic ticks should be transformed into native projection coordinates.
1712
+ """
1713
+ pytest.importorskip("cartopy")
1714
+ fig, axs = uplt.subplots(proj=proj, proj_kw={"lon0": 180})
1715
+ kwargs = {}
1716
+ if lonlim is not None:
1717
+ kwargs.update(lonlim=lonlim, latlim=latlim)
1718
+ axs.format(
1719
+ coast=True,
1720
+ lonlabels=True,
1721
+ latlabels=True,
1722
+ ticklen=ticklen,
1723
+ **kwargs,
1724
+ )
1725
+
1726
+ ax = axs[0]
1727
+ xlim = np.asarray(ax.get_xlim())
1728
+ ylim = np.asarray(ax.get_ylim())
1729
+ assert np.all(np.isfinite(xlim))
1730
+ assert np.all(np.isfinite(ylim))
1731
+ assert np.diff(xlim)[0] > 0
1732
+ assert np.diff(ylim)[0] > 0
1733
+ crs = uplt.axes.geo.ccrs.PlateCarree(globe=ax.projection.globe)
1734
+ lon_ticks = ax._gridliner_tick_positions("x", which="major")
1735
+ lat_ticks = ax._gridliner_tick_positions("y", which="major")
1736
+ expected_x = ax.projection.transform_points(
1737
+ crs,
1738
+ lon_ticks,
1739
+ np.zeros_like(lon_ticks),
1740
+ )[:, 0]
1741
+ expected_y = ax.projection.transform_points(
1742
+ crs,
1743
+ np.zeros_like(lat_ticks),
1744
+ lat_ticks,
1745
+ )[:, 1]
1746
+ expected_x = expected_x[np.isfinite(expected_x)]
1747
+ expected_y = expected_y[np.isfinite(expected_y)]
1748
+ assert np.allclose(
1749
+ np.sort(np.asarray(ax.get_xticks())),
1750
+ np.sort(expected_x),
1751
+ atol=1e-6,
1752
+ )
1753
+ assert np.allclose(
1754
+ np.sort(np.asarray(ax.get_yticks())),
1755
+ np.sort(expected_y),
1756
+ atol=1e-6,
1757
+ )
1758
+
1759
+ fig.canvas.draw()
1760
+ uplt.close(fig)
1761
+
1762
+
1763
+ @pytest.mark.parametrize("proj", ("cyl", "merc", "lcyl", "mill"))
1764
+ def test_geoticks_do_not_change_projected_view_limits(proj):
1765
+ """
1766
+ Adding geographic ticks must not expand the native projected view limits.
1767
+ """
1768
+ pytest.importorskip("cartopy")
1769
+ fig, axs = uplt.subplots(proj=proj, proj_kw={"lon0": 180})
1770
+ ax = axs[0]
1771
+ ax.format(coast=True, lonlabels=True, latlabels=True)
1772
+ before_xlim = np.asarray(ax.get_xlim()).copy()
1773
+ before_ylim = np.asarray(ax.get_ylim()).copy()
1774
+
1775
+ ax.format(ticklen=2)
1776
+
1777
+ assert np.allclose(ax.get_xlim(), before_xlim, atol=1e-6)
1778
+ assert np.allclose(ax.get_ylim(), before_ylim, atol=1e-6)
1779
+ fig.canvas.draw()
1780
+ uplt.close(fig)
1781
+
1782
+
1783
+ @pytest.mark.parametrize("proj", ("robin", "moll", "ortho"))
1784
+ def test_geoticks_non_rectilinear_projection_unchanged(proj):
1785
+ """
1786
+ Tick lengths remain unsupported on curved projections and must not alter ticks.
1787
+ """
1788
+ pytest.importorskip("cartopy")
1789
+ fig, axs = uplt.subplots(proj=proj)
1790
+ ax = axs[0]
1791
+ xticks = np.asarray(ax.get_xticks()).copy()
1792
+ yticks = np.asarray(ax.get_yticks()).copy()
1793
+
1794
+ with pytest.warns(
1795
+ uplt.warnings.UltraPlotWarning,
1796
+ match="Projection is not rectilinear",
1797
+ ):
1798
+ ax.format(ticklen=1)
1799
+
1800
+ assert np.array_equal(np.asarray(ax.get_xticks()), xticks)
1801
+ assert np.array_equal(np.asarray(ax.get_yticks()), yticks)
1802
+ fig.canvas.draw()
1803
+ uplt.close(fig)
1804
+
1805
+
1700
1806
  def test_consistent_range():
1701
1807
  """
1702
1808
  Check if the extent of the axes is consistent
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ultraplot
3
- Version: 2.7.0
3
+ Version: 2.7.1
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>
@@ -49,7 +49,7 @@ Requires-Dist: mcp<3,>=2.1; extra == "mcp"
49
49
  Provides-Extra: stats
50
50
  Requires-Dist: scipy; extra == "stats"
51
51
  Provides-Extra: typing
52
- Requires-Dist: basedpyright==1.31.4; extra == "typing"
52
+ Requires-Dist: basedpyright==1.40.1; extra == "typing"
53
53
  Dynamic: license-file
54
54
 
55
55
  .. image:: https://raw.githubusercontent.com/Ultraplot/ultraplot/refs/heads/main/UltraPlotLogo.svg
@@ -35,4 +35,4 @@ mcp<3,>=2.1
35
35
  scipy
36
36
 
37
37
  [typing]
38
- basedpyright==1.31.4
38
+ basedpyright==1.40.1
@@ -1 +0,0 @@
1
- __version__ = '2.7.0'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes