hvplot 0.11.1rc1__tar.gz → 0.11.2__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 (197) hide show
  1. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.github/workflows/test.yaml +6 -4
  2. hvplot-0.11.2/.pre-commit-config.yaml +41 -0
  3. {hvplot-0.11.1rc1 → hvplot-0.11.2}/PKG-INFO +3 -3
  4. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/conf.py +3 -2
  5. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/releases.md +40 -0
  6. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Explorer.ipynb +1 -1
  7. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Geographic_Data.ipynb +2 -2
  8. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/NetworkX.ipynb +5 -5
  9. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Viewing.ipynb +4 -4
  10. {hvplot-0.11.1rc1 → hvplot-0.11.2}/envs/py3.10-tests.yaml +1 -1
  11. {hvplot-0.11.1rc1 → hvplot-0.11.2}/envs/py3.11-docs.yaml +2 -2
  12. {hvplot-0.11.1rc1 → hvplot-0.11.2}/envs/py3.11-tests.yaml +1 -1
  13. {hvplot-0.11.1rc1 → hvplot-0.11.2}/envs/py3.12-tests.yaml +1 -1
  14. {hvplot-0.11.1rc1 → hvplot-0.11.2}/envs/py3.9-tests.yaml +1 -1
  15. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/_version.py +2 -2
  16. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/converter.py +22 -19
  17. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/scatter_matrix.py +2 -1
  18. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testcharts.py +11 -0
  19. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testgeowithoutgv.py +21 -0
  20. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testui.py +7 -0
  21. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testutil.py +6 -0
  22. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/ui.py +4 -11
  23. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/util.py +21 -0
  24. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/PKG-INFO +3 -3
  25. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/requires.txt +2 -2
  26. {hvplot-0.11.1rc1 → hvplot-0.11.2}/pyproject.toml +3 -9
  27. hvplot-0.11.1rc1/.pre-commit-config.yaml +0 -48
  28. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.git-blame-ignore-revs +0 -0
  29. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.git_archival.txt +0 -0
  30. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.gitattributes +0 -0
  31. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.github/CONTRIBUTING.md +0 -0
  32. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.github/FUNDING.yml +0 -0
  33. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.github/workflows/build.yaml +0 -0
  34. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.github/workflows/docs.yaml +0 -0
  35. {hvplot-0.11.1rc1 → hvplot-0.11.2}/.gitignore +0 -0
  36. {hvplot-0.11.1rc1 → hvplot-0.11.2}/CHANGELOG.md +0 -0
  37. {hvplot-0.11.1rc1 → hvplot-0.11.2}/CODE_OF_CONDUCT.md +0 -0
  38. {hvplot-0.11.1rc1 → hvplot-0.11.2}/LICENSE +0 -0
  39. {hvplot-0.11.1rc1 → hvplot-0.11.2}/README.md +0 -0
  40. {hvplot-0.11.1rc1 → hvplot-0.11.2}/binder/environment.yml +0 -0
  41. {hvplot-0.11.1rc1 → hvplot-0.11.2}/binder/postBuild +0 -0
  42. {hvplot-0.11.1rc1 → hvplot-0.11.2}/conda.recipe/meta.yaml +0 -0
  43. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/custom.css +0 -0
  44. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/favicon.ico +0 -0
  45. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/bokeh.gif +0 -0
  46. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/dask.gif +0 -0
  47. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/explorer.gif +0 -0
  48. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/geo.gif +0 -0
  49. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/geopandas.gif +0 -0
  50. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/intake.gif +0 -0
  51. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/interactive_hvplot.gif +0 -0
  52. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/interactive_pandas.gif +0 -0
  53. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/interactive_xarray.gif +0 -0
  54. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/large_data.gif +0 -0
  55. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/layout.gif +0 -0
  56. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/matplotlib.png +0 -0
  57. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/networkx.gif +0 -0
  58. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/overlay.png +0 -0
  59. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/pandas.gif +0 -0
  60. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/plotly.gif +0 -0
  61. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/widgets.gif +0 -0
  62. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/home/xarray.gif +0 -0
  63. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/images/heat_and_trees.png +0 -0
  64. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/images/portfolio.png +0 -0
  65. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/logo.png +0 -0
  66. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/logo_horizontal.svg +0 -0
  67. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/_static/logo_stacked.svg +0 -0
  68. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/about.md +0 -0
  69. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/console.png +0 -0
  70. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/console_server.gif +0 -0
  71. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/diagram.png +0 -0
  72. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/diagram.svg +0 -0
  73. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/hvplot-wm.png +0 -0
  74. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/assets/streamz_demo.gif +0 -0
  75. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/conftest.py +0 -0
  76. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/developer_guide/index.md +0 -0
  77. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/getting_started/explorer.ipynb +0 -0
  78. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/getting_started/hvplot.ipynb +0 -0
  79. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/getting_started/index.md +0 -0
  80. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/getting_started/installation.md +0 -0
  81. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/getting_started/interactive.ipynb +0 -0
  82. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/governance/project-docs/CONTRIBUTING.md +0 -0
  83. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/governance/project-docs/GOVERNANCE.md +0 -0
  84. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/governance/project-docs/LICENSE.md +0 -0
  85. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/governance/project-docs/MEMBERS.md +0 -0
  86. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/index.md +0 -0
  87. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/geopandas/points.ipynb +0 -0
  88. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/geopandas/polygons.ipynb +0 -0
  89. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/andrewscurves.ipynb +0 -0
  90. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/area.ipynb +0 -0
  91. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/bar.ipynb +0 -0
  92. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/barh.ipynb +0 -0
  93. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/bivariate.ipynb +0 -0
  94. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/box.ipynb +0 -0
  95. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/errorbars.ipynb +0 -0
  96. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/heatmap.ipynb +0 -0
  97. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/hexbin.ipynb +0 -0
  98. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/hist.ipynb +0 -0
  99. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/kde.ipynb +0 -0
  100. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/labels.ipynb +0 -0
  101. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/lagplot.ipynb +0 -0
  102. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/line.ipynb +0 -0
  103. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/ohlc.ipynb +0 -0
  104. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/parallelcoordinates.ipynb +0 -0
  105. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/paths.ipynb +0 -0
  106. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/scatter.ipynb +0 -0
  107. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/scattermatrix.ipynb +0 -0
  108. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/step.ipynb +0 -0
  109. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/table.ipynb +0 -0
  110. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/tabular/violin.ipynb +0 -0
  111. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/bar.ipynb +0 -0
  112. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/contour.ipynb +0 -0
  113. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/contourf.ipynb +0 -0
  114. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/hist.ipynb +0 -0
  115. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/image.ipynb +0 -0
  116. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/kde.ipynb +0 -0
  117. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/line.ipynb +0 -0
  118. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/quadmesh.ipynb +0 -0
  119. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/rgb.ipynb +0 -0
  120. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/vectorfield.ipynb +0 -0
  121. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/reference/xarray/violin.ipynb +0 -0
  122. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/roadmap.md +0 -0
  123. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/topics.md +0 -0
  124. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Customization.ipynb +0 -0
  125. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Gridded_Data.ipynb +0 -0
  126. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Integrations.ipynb +0 -0
  127. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Interactive.ipynb +0 -0
  128. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Introduction.ipynb +0 -0
  129. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Large_Timeseries.ipynb +0 -0
  130. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Pandas_API.ipynb +0 -0
  131. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Plotting.ipynb +0 -0
  132. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Plotting_Extensions.ipynb +0 -0
  133. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
  134. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Plotting_with_Plotly.ipynb +0 -0
  135. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Statistical_Plots.ipynb +0 -0
  136. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Streaming.ipynb +0 -0
  137. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Subplots.ipynb +0 -0
  138. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Timeseries_Data.ipynb +0 -0
  139. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/Widgets.ipynb +0 -0
  140. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/images/simple.svg +0 -0
  141. {hvplot-0.11.1rc1 → hvplot-0.11.2}/doc/user_guide/index.md +0 -0
  142. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/__init__.py +0 -0
  143. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/backend_transforms.py +0 -0
  144. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/cudf.py +0 -0
  145. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/dask.py +0 -0
  146. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/data/crime.csv +0 -0
  147. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/datasets.yaml +0 -0
  148. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/duckdb.py +0 -0
  149. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/fugue.py +0 -0
  150. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/ibis.py +0 -0
  151. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/intake.py +0 -0
  152. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/interactive.py +0 -0
  153. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/networkx.py +0 -0
  154. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/pandas.py +0 -0
  155. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/__init__.py +0 -0
  156. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/andrews_curves.py +0 -0
  157. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/core.py +0 -0
  158. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/lag_plot.py +0 -0
  159. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/plotting/parallel_coordinates.py +0 -0
  160. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/polars.py +0 -0
  161. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/sample_data.py +0 -0
  162. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/streamz.py +0 -0
  163. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/__init__.py +0 -0
  164. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/conftest.py +0 -0
  165. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/data/README.md +0 -0
  166. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/data/RGB-red.byte.tif +0 -0
  167. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/plotting/__init__.py +0 -0
  168. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/plotting/testcore.py +0 -0
  169. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/plotting/testohlc.py +0 -0
  170. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/plotting/testscattermatrix.py +0 -0
  171. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/test_links.py +0 -0
  172. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testbackend_transforms.py +0 -0
  173. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testfugue.py +0 -0
  174. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testgeo.py +0 -0
  175. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testgridplots.py +0 -0
  176. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testhelp.py +0 -0
  177. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testibis.py +0 -0
  178. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testinteractive.py +0 -0
  179. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testnetworkx.py +0 -0
  180. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testoperations.py +0 -0
  181. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testoptions.py +0 -0
  182. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testoverrides.py +0 -0
  183. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testpanel.py +0 -0
  184. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testpatch.py +0 -0
  185. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testplotting.py +0 -0
  186. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/teststatplots.py +0 -0
  187. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/teststreaming.py +0 -0
  188. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/testtransforms.py +0 -0
  189. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/tests/util.py +0 -0
  190. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/utilities.py +0 -0
  191. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot/xarray.py +0 -0
  192. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/SOURCES.txt +0 -0
  193. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/dependency_links.txt +0 -0
  194. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/entry_points.txt +0 -0
  195. {hvplot-0.11.1rc1 → hvplot-0.11.2}/hvplot.egg-info/top_level.txt +0 -0
  196. {hvplot-0.11.1rc1 → hvplot-0.11.2}/scripts/update_conda_envs.py +0 -0
  197. {hvplot-0.11.1rc1 → hvplot-0.11.2}/setup.cfg +0 -0
@@ -150,7 +150,7 @@ jobs:
150
150
  matrix: ${{ fromJson(needs.setup.outputs.matrix) }}
151
151
  defaults:
152
152
  run:
153
- shell: bash -l {0}
153
+ shell: bash -e {0}
154
154
  steps:
155
155
  - uses: actions/checkout@v4
156
156
  with:
@@ -159,9 +159,11 @@ jobs:
159
159
  with:
160
160
  python-version: ${{ matrix.python-version }}
161
161
  - name: install with geo
162
- run: pip install -v --prefer-binary -e '.[tests, examples-tests, geo, hvdev, hvdev-geo, dev-extras]'
163
- - name: pip list
164
- run: pip list
162
+ run: python -m pip install -v --prefer-binary -e '.[tests, examples-tests, geo, hvdev, hvdev-geo, dev-extras]'
163
+ - name: python version and pip list
164
+ run: |
165
+ python --version --version
166
+ python -m pip list
165
167
  - name: bokeh sampledata
166
168
  if: ${{ matrix.python-version == '3.9'}}
167
169
  run: bokeh sampledata
@@ -0,0 +1,41 @@
1
+ default_stages: [pre-commit]
2
+ repos:
3
+ - repo: https://github.com/pre-commit/pre-commit-hooks
4
+ rev: v5.0.0
5
+ hooks:
6
+ - id: check-builtin-literals
7
+ - id: check-case-conflict
8
+ - id: check-docstring-first
9
+ - id: check-executables-have-shebangs
10
+ - id: check-toml
11
+ - id: detect-private-key
12
+ - id: end-of-file-fixer
13
+ exclude: (\.min\.js$|\.svg$)
14
+ - id: trailing-whitespace
15
+ - repo: https://github.com/astral-sh/ruff-pre-commit
16
+ rev: v0.7.2
17
+ hooks:
18
+ - id: ruff
19
+ - id: ruff-format
20
+ exclude: \.ipynb$
21
+ - repo: https://github.com/hoxbro/clean_notebook
22
+ rev: v0.1.15
23
+ hooks:
24
+ - id: clean-notebook
25
+ args: [-i, tags]
26
+ - repo: https://github.com/codespell-project/codespell
27
+ rev: v2.3.0
28
+ hooks:
29
+ - id: codespell
30
+ exclude: (\.min\.js$|\.svg$|\.html$)
31
+ additional_dependencies:
32
+ - tomli
33
+ - repo: local
34
+ hooks:
35
+ - id: update_conda_envs
36
+ name: Update conda envs
37
+ entry: python scripts/update_conda_envs.py
38
+ language: python
39
+ additional_dependencies: [pyproject2conda]
40
+ files: "(pyproject.toml|update_conda_envs)"
41
+ pass_filenames: false
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hvplot
3
- Version: 0.11.1rc1
3
+ Version: 0.11.2
4
4
  Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
5
5
  Author-email: Philipp Rudiger <developers@holoviz.org>
6
6
  Maintainer-email: HoloViz developers <developers@holoviz.org>
@@ -79,7 +79,7 @@ Requires-Dist: fugue[sql]; extra == "examples"
79
79
  Requires-Dist: hvplot[fugue-sql]; extra == "examples"
80
80
  Requires-Dist: ibis-framework[duckdb]; extra == "examples"
81
81
  Requires-Dist: intake-parquet>=0.2.3; extra == "examples"
82
- Requires-Dist: intake-xarray>=0.5.0; extra == "examples"
82
+ Requires-Dist: intake-xarray<2,>=0.5.0; extra == "examples"
83
83
  Requires-Dist: intake<2.0.0,>=0.6.5; extra == "examples"
84
84
  Requires-Dist: ipywidgets; extra == "examples"
85
85
  Requires-Dist: networkx>=2.6.3; extra == "examples"
@@ -107,7 +107,7 @@ Requires-Dist: hvplot[examples]; extra == "examples-tests"
107
107
  Requires-Dist: hvplot[tests-nb]; extra == "examples-tests"
108
108
  Provides-Extra: doc
109
109
  Requires-Dist: hvplot[examples]; extra == "doc"
110
- Requires-Dist: nbsite>=0.8.4; extra == "doc"
110
+ Requires-Dist: nbsite>=0.8.6; extra == "doc"
111
111
  Requires-Dist: sphinxext-rediraffe; extra == "doc"
112
112
  Provides-Extra: hvdev
113
113
  Requires-Dist: colorcet>=0.0.1a1; extra == "hvdev"
@@ -47,7 +47,7 @@ html_theme_options.update( # noqa
47
47
  },
48
48
  ],
49
49
  'pygment_dark_style': 'material',
50
- 'announcement': "hvPlot 0.11 has just been released! Checkout the <a href='https://blog.holoviz.org/posts/hvplot_release_0.11/'>blog post</a> and support hvPlot by giving it a 🌟 on <a href='https://github.com/holoviz/hvplot'>Github</a>.",
50
+ # 'announcement': "hvPlot 0.11 has just been released! Checkout the <a href='https://blog.holoviz.org/posts/hvplot_release_0.11/'>blog post</a> and support hvPlot by giving it a 🌟 on <a href='https://github.com/holoviz/hvplot'>Github</a>.",
51
51
  }
52
52
  )
53
53
 
@@ -58,6 +58,7 @@ html_favicon = '_static/favicon.ico'
58
58
  extensions += [ # noqa
59
59
  'nbsite.gallery',
60
60
  'nbsite.analytics',
61
+ 'nbsite.nb_interactivity_warning',
61
62
  'sphinx_copybutton',
62
63
  'sphinxext.rediraffe',
63
64
  ]
@@ -114,7 +115,7 @@ nb_execution_excludepatterns = [
114
115
  'user_guide/Streaming.ipynb',
115
116
  ]
116
117
  # cell execution timeout in seconds (-1 to ignore, 30 by default)
117
- nb_execution_timeout = 120
118
+ nb_execution_timeout = 240
118
119
 
119
120
  if os.getenv('HVPLOT_REFERENCE_GALLERY') not in ('False', 'false', '0'):
120
121
  rediraffe_redirects.update(
@@ -2,6 +2,46 @@
2
2
 
3
3
  See [the HoloViz blog](https://blog.holoviz.org/#category=hvplot) for a visual summary of the major features added in a selection of releases.
4
4
 
5
+ ## Version 0.11.2 (2024-12-16)
6
+
7
+ The 0.11.2 release is a patch release that brings a few important bugfixes. Many thanks to @tomchor (first contribution!), @ahuang11, @Azaya89, @Hoxbro, and @maximlt for their contributions!
8
+
9
+ Bug Fixes:
10
+
11
+ - Stop using HoloViews private API to get datashader's version in `scatter_matrix` ([#1446](https://github.com/holoviz/hvplot/pull/1446))
12
+ - Fix geoviews availability logic in the Explorer ([#1451](https://github.com/holoviz/hvplot/pull/1451))
13
+ - Do not attempt to auto-project a spatialpandas geodataframe ([#1459](https://github.com/holoviz/hvplot/pull/1459))
14
+ - Check cmap type before comparing to categories ([#1462](https://github.com/holoviz/hvplot/pull/1462))
15
+
16
+ Documentation:
17
+
18
+ - Fix typo in the Explorer docs ([#1455](https://github.com/holoviz/hvplot/pull/1455))
19
+
20
+ [Full Changelog](https://github.com/holoviz/hvplot/compare/v0.11.1...v0.11.2)
21
+
22
+ ## Version 0.11.1 (2024-10-16)
23
+
24
+ The 0.11.1 release is a patch release that brings a few bugfixes and documentation improvements. In particular it fixes a regression introduced in version 0.11.0 leading to an error when a plot is created from a Dask object with `tiles=True`. Many thanks to @Palmr (first contribution!), @ahuang11, @Hoxbro, @maximlt, and @philippjfr for their contributions!
25
+
26
+ Bug Fixes:
27
+
28
+ - Fix regression when `tiles=True` with Dask ([#1432](https://github.com/holoviz/hvplot/pull/1432))
29
+ - Fix hover tooltips for NetworkX plots ([#1439](https://github.com/holoviz/hvplot/pull/1439))
30
+
31
+ Documentation:
32
+
33
+ - Add `nb_interactivity_warning` extension ([#1444](https://github.com/holoviz/hvplot/pull/1444))
34
+ - Document Ruff's `allowed-unused-imports` ([#1436](https://github.com/holoviz/hvplot/pull/1436))
35
+ - Update image links in README ([#1433](https://github.com/holoviz/hvplot/pull/1433))
36
+ - Minor fixes ([#1434](https://github.com/holoviz/hvplot/pull/1434))
37
+
38
+ Tests:
39
+
40
+ - Mark `test_explorer_geo_revise_kind` with geo marker ([#1426](https://github.com/holoviz/hvplot/pull/1426))
41
+
42
+ [Full Changelog](https://github.com/holoviz/hvplot/compare/v0.11.0...v0.11.1)
43
+
44
+
5
45
  ## Version 0.11.0 (2024-09-27)
6
46
 
7
47
  This minor release brings a number of enhancements and bugfixes, checkout the [release blog post](https://blog.holoviz.org/posts/hvplot_release_0.11/) for a visual summary of the most important changes.
@@ -50,7 +50,7 @@
50
50
  "id": "2f572b55-5002-4b81-9c92-6a2b56e2cde2",
51
51
  "metadata": {},
52
52
  "source": [
53
- "For an explorer to be displayed in a notebook you need to load the hvPlot extension, which happens automatically when you execute an import like `import hvplot.pandas`. You could also just run `hvplot.extension('bokeh')`. If instead of building Bokeh plots you would rather build Matplotlib or Plotly plots, simply execute once `hvplot.extension('matplotlib')` or `hvplot.extension('matplotlib')` before displaying the explorer."
53
+ "For an explorer to be displayed in a notebook you need to load the hvPlot extension, which happens automatically when you execute an import like `import hvplot.pandas`. You could also just run `hvplot.extension('bokeh')`. If instead of building Bokeh plots you would rather build Matplotlib or Plotly plots, simply execute once `hvplot.extension('matplotlib')` or `hvplot.extension('plotly')` before displaying the explorer."
54
54
  ]
55
55
  },
56
56
  {
@@ -60,7 +60,7 @@
60
60
  "source": [
61
61
  "## Tiled web map\n",
62
62
  "\n",
63
- "A [tiled web map](https://en.wikipedia.org/wiki/Tiled_web_map), or tile map, is an interactive map displayed on a web browser that is divided into small, pre-rendered image tiles, allowing for efficient loading and seamless navigation across various zoom levels and geographic areas. hvPlot allows to add a tile map as a basemap to a plot with the `tiles` parameter. Importantly, `tiles` is a parameter that can be used **without installing GeoViews**.\n",
63
+ "A [tiled web map](https://en.wikipedia.org/wiki/Tiled_web_map), or tile map, is an interactive map displayed on a web browser that is divided into small, pre-rendered image tiles, allowing for efficient loading and seamless navigation across various zoom levels and geographic areas. hvPlot allows us to add a tile map as a basemap to a plot with the `tiles` parameter. Importantly, `tiles` is a parameter that can be used **without installing GeoViews**.\n",
64
64
  "\n",
65
65
  "We'll display this dataframe of all US airports (including military bases overseas), the points are expressed in latitude/longitude coordinates:"
66
66
  ]
@@ -80,7 +80,7 @@
80
80
  "source": [
81
81
  "We'll first start by displaying the airports **without GeoViews** with tiles by setting `tiles=True`. \n",
82
82
  "\n",
83
- "Under the hood, hvPlot projects lat/lon to easting/northing ([EPSG:4326](https://epsg.io/4326) to [EPSG:3857](https://epsg.io/3857)) coordinates without additional package dependencies if it detects that the values falls within expected lat/lon ranges, **unless the data is lazily loaded (dask / ibis).**\n",
83
+ "Under the hood, hvPlot projects lat/lon to easting/northing ([EPSG:4326](https://epsg.io/4326) to [EPSG:3857](https://epsg.io/3857)) coordinates without additional package dependencies if it detects that the values falls within expected lat/lon ranges, **unless the data is lazily loaded (dask / ibis), or the data is a spatialpandas object.**\n",
84
84
  "\n",
85
85
  "Note, **this feature is only available after `hvplot>=0.11.0`**; older versions, `hvplot<0.11.0`, require manual projection (see below)."
86
86
  ]
@@ -270,10 +270,10 @@
270
270
  "\n",
271
271
  "print(\"radius: %d\" % nx.radius(G))\n",
272
272
  "print(\"diameter: %d\" % nx.diameter(G))\n",
273
- "print(\"eccentricity: %s\" % nx.eccentricity(G))\n",
274
- "print(\"center: %s\" % nx.center(G))\n",
275
- "print(\"periphery: %s\" % nx.periphery(G))\n",
276
- "print(\"density: %s\" % nx.density(G))\n",
273
+ "print(f\"eccentricity: {nx.eccentricity(G)}\")\n",
274
+ "print(f\"center: {nx.center(G)}\")\n",
275
+ "print(f\"periphery: {nx.periphery(G)}\")\n",
276
+ "print(f\"density: {nx.density(G)}\")\n",
277
277
  "\n",
278
278
  "hvnx.draw(G, with_labels=True)"
279
279
  ]
@@ -757,7 +757,7 @@
757
757
  " edge_width=5.0\n",
758
758
  " )\n",
759
759
  " other_edges.append(edge)\n",
760
- " plots.append((g*edges*hv.Overlay(other_edges)).relabel(\"p = %6.3f\" % (p)))\n",
760
+ " plots.append((g*edges*hv.Overlay(other_edges)).relabel(f\"p = {p:6.3f}\"))\n",
761
761
  "\n",
762
762
  "hv.Layout(plots).cols(2)"
763
763
  ]
@@ -172,12 +172,12 @@
172
172
  ]
173
173
  },
174
174
  {
175
- "cell_type": "code",
176
- "execution_count": null,
175
+ "cell_type": "markdown",
177
176
  "metadata": {},
178
- "outputs": [],
179
177
  "source": [
180
- "hvplot.save(plot, 'test.png')"
178
+ "```python\n",
179
+ "hvplot.save(plot, 'test.png')\n",
180
+ "```"
181
181
  ]
182
182
  },
183
183
  {
@@ -31,7 +31,7 @@ dependencies:
31
31
  - holoviews>=1.19.0
32
32
  - ibis-duckdb
33
33
  - intake-parquet>=0.2.3
34
- - intake-xarray>=0.5.0
34
+ - intake-xarray<2,>=0.5.0
35
35
  - intake<2.0.0,>=0.6.5
36
36
  - ipywidgets
37
37
  - jinja2
@@ -31,12 +31,12 @@ dependencies:
31
31
  - holoviews>=1.19.0
32
32
  - ibis-duckdb
33
33
  - intake-parquet>=0.2.3
34
- - intake-xarray>=0.5.0
34
+ - intake-xarray<2,>=0.5.0
35
35
  - intake<2.0.0,>=0.6.5
36
36
  - ipywidgets
37
37
  - jinja2
38
38
  - matplotlib
39
- - nbsite>=0.8.4
39
+ - nbsite>=0.8.6
40
40
  - networkx>=2.6.3
41
41
  - notebook>=5.4
42
42
  - numba>=0.51.0
@@ -31,7 +31,7 @@ dependencies:
31
31
  - holoviews>=1.19.0
32
32
  - ibis-duckdb
33
33
  - intake-parquet>=0.2.3
34
- - intake-xarray>=0.5.0
34
+ - intake-xarray<2,>=0.5.0
35
35
  - intake<2.0.0,>=0.6.5
36
36
  - ipywidgets
37
37
  - jinja2
@@ -31,7 +31,7 @@ dependencies:
31
31
  - holoviews>=1.19.0
32
32
  - ibis-duckdb
33
33
  - intake-parquet>=0.2.3
34
- - intake-xarray>=0.5.0
34
+ - intake-xarray<2,>=0.5.0
35
35
  - intake<2.0.0,>=0.6.5
36
36
  - ipywidgets
37
37
  - jinja2
@@ -30,7 +30,7 @@ dependencies:
30
30
  - holoviews>=1.19.0
31
31
  - ibis-duckdb
32
32
  - intake-parquet>=0.2.3
33
- - intake-xarray>=0.5.0
33
+ - intake-xarray<2,>=0.5.0
34
34
  - intake<2.0.0,>=0.6.5
35
35
  - ipywidgets
36
36
  - jinja2
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.11.1rc1'
16
- __version_tuple__ = version_tuple = (0, 11, 1)
15
+ __version__ = version = '0.11.2'
16
+ __version_tuple__ = version_tuple = (0, 11, 2)
@@ -76,6 +76,8 @@ from .util import (
76
76
  process_derived_datetime_pandas,
77
77
  _convert_col_names_to_str,
78
78
  import_datashader,
79
+ import_geoviews,
80
+ is_mpl_cmap,
79
81
  )
80
82
  from .utilities import hvplot_extension
81
83
 
@@ -646,6 +648,10 @@ class HoloViewsConverter:
646
648
 
647
649
  self.dynamic = dynamic
648
650
  self.geo = any([geo, crs, global_extent, projection, project, coastline, features])
651
+ # Try importing geoviews if geo-features requested
652
+ if self.geo or self.datatype == 'geopandas':
653
+ import_geoviews()
654
+
649
655
  self.crs = self._process_crs(data, crs) if self.geo else None
650
656
  self.output_projection = self.crs
651
657
  self.project = project
@@ -655,17 +661,6 @@ class HoloViewsConverter:
655
661
  self.tiles_opts = tiles_opts or {}
656
662
  self.sort_date = sort_date
657
663
 
658
- # Import geoviews if geo-features requested
659
- if self.geo or self.datatype == 'geopandas':
660
- try:
661
- import geoviews # noqa
662
- except ImportError:
663
- raise ImportError(
664
- 'In order to use geo-related features '
665
- 'the geoviews library must be available. '
666
- 'It can be installed with:\n conda '
667
- 'install geoviews'
668
- )
669
664
  if self.geo:
670
665
  if self.kind not in self._geo_types:
671
666
  param.main.param.warning(
@@ -1420,7 +1415,7 @@ class HoloViewsConverter:
1420
1415
  valid_opts = []
1421
1416
 
1422
1417
  cmap_opts = ('cmap', 'colormap', 'color_key')
1423
- categories = [
1418
+ categorical_cmaps = [
1424
1419
  'accent',
1425
1420
  'category',
1426
1421
  'dark',
@@ -1485,7 +1480,13 @@ class HoloViewsConverter:
1485
1480
  if 'color' in style_opts:
1486
1481
  color = style_opts['color']
1487
1482
  elif not isinstance(cmap, dict):
1488
- if cmap and any(c in cmap for c in categories):
1483
+ # Checks if any of the categorical cmaps matches cmap;
1484
+ # uses any() instead of `cmap in categorical_cmaps` to handle reversed colormaps (suffixed with `_r`).
1485
+ # If cmap is LinearSegmentedColormap, get the name attr, else return the str typed cmap.
1486
+ if (isinstance(cmap, str) or is_mpl_cmap(cmap)) and any(
1487
+ categorical_cmap in getattr(cmap, 'name', cmap)
1488
+ for categorical_cmap in categorical_cmaps
1489
+ ):
1489
1490
  color = process_cmap(cmap or self._default_cmaps['categorical'], categorical=True)
1490
1491
  else:
1491
1492
  color = cmap
@@ -2170,12 +2171,13 @@ class HoloViewsConverter:
2170
2171
  elif not is_geodataframe(data) and (x is None or y is None):
2171
2172
  return data, x, y
2172
2173
 
2173
- if is_geodataframe(data):
2174
- if data.crs is not None:
2175
- data = data.to_crs(epsg=3857)
2176
- return data, x, y
2177
- elif not is_lazy_data(data):
2174
+ if is_lazy_data(data):
2178
2175
  # To prevent eager evaluation: https://github.com/holoviz/hvplot/pull/1432
2176
+ pass
2177
+ elif is_geodataframe(data):
2178
+ if getattr(data, 'crs', None) is not None:
2179
+ data = data.to_crs(epsg=3857)
2180
+ else:
2179
2181
  min_x = np.min(data[x])
2180
2182
  max_x = np.max(data[x])
2181
2183
  min_y = np.min(data[y])
@@ -2193,7 +2195,8 @@ class HoloViewsConverter:
2193
2195
  data[new_y] = northing
2194
2196
  if is_xarray(data):
2195
2197
  data = data.swap_dims({x: new_x, y: new_y})
2196
- return data, new_x, new_y
2198
+ x = new_x
2199
+ y = new_y
2197
2200
  return data, x, y
2198
2201
 
2199
2202
  def chart(self, element, x, y, data=None):
@@ -113,10 +113,11 @@ def scatter_matrix(
113
113
  raise ValueError('dynspread or spread need rasterize or datashade to be set to True.')
114
114
 
115
115
  if rasterize:
116
+ import datashader as ds
116
117
  import holoviews.operation.datashader as hd
117
118
 
118
119
  if dynspread or spread:
119
- if hd.ds_version < Version('0.12.0'):
120
+ if Version(ds.__version__) < Version('0.12.0'):
120
121
  raise RuntimeError(
121
122
  'Any version of datashader less than 0.12.0 does '
122
123
  'not support rasterize with dynspread or spread.'
@@ -606,3 +606,14 @@ class TestChart1DDask(TestChart1D):
606
606
 
607
607
  def test_table_multi_index_displayed(self):
608
608
  raise SkipTest('Dask does not support MultiIndex Dataframes.')
609
+
610
+
611
+ def test_cmap_LinearSegmentedColormap():
612
+ # test for https://github.com/holoviz/hvplot/pull/1461
613
+ xr = pytest.importorskip('xarray')
614
+ mpl = pytest.importorskip('matplotlib')
615
+ import hvplot.xarray # noqa
616
+
617
+ data = np.arange(25).reshape(5, 5)
618
+ xr_da = xr.DataArray(data)
619
+ xr_da.hvplot.image(cmap=mpl.colormaps['viridis'])
@@ -8,12 +8,19 @@ import numpy as np
8
8
  import pandas as pd
9
9
  import pytest
10
10
 
11
+ from hvplot.util import is_geodataframe
12
+
11
13
  try:
12
14
  import dask.dataframe as dd
13
15
  import hvplot.dask # noqa
14
16
  except ImportError:
15
17
  dd = None
16
18
 
19
+ try:
20
+ import spatialpandas as spd
21
+ except ModuleNotFoundError:
22
+ spd = None
23
+
17
24
 
18
25
  bk_renderer = hv.Store.renderers['bokeh']
19
26
 
@@ -83,3 +90,17 @@ class TestAnnotationNotGeo:
83
90
  assert isinstance(plot.get(0), hv.Tiles)
84
91
  bk_plot = bk_renderer.get_plot(plot)
85
92
  assert bk_plot.projection == 'mercator'
93
+
94
+ @pytest.mark.skipif(spd is None, reason='spatialpandas not installed')
95
+ def test_plot_without_crs(self):
96
+ square = spd.geometry.Polygon([(0.0, 0), (0, 1), (1, 1), (1, 0)])
97
+ sdf = spd.GeoDataFrame({'geometry': spd.GeoSeries([square, square]), 'name': ['A', 'B']})
98
+ plot = sdf.hvplot.polygons(tiles=True)
99
+
100
+ assert len(plot) == 2
101
+ assert is_geodataframe(sdf)
102
+ assert not hasattr(sdf, 'crs')
103
+ assert isinstance(plot.get(0), hv.Tiles)
104
+ assert isinstance(plot.get(1), hv.Polygons)
105
+ bk_plot = bk_renderer.get_plot(plot)
106
+ assert bk_plot.projection == 'mercator' # projection enabled due to `tiles=True`
@@ -1,5 +1,6 @@
1
1
  import re
2
2
  from textwrap import dedent
3
+ from unittest.mock import patch
3
4
 
4
5
  import numpy as np
5
6
  import holoviews as hv
@@ -415,3 +416,9 @@ def test_max_rows_sample():
415
416
  ui = hvplot.explorer(df, x='x', y='y', by=['#'], kind='scatter')
416
417
  assert len(ui._data) == MAX_ROWS
417
418
  assert not ui._data.equals(df.head(MAX_ROWS))
419
+
420
+
421
+ def test_explorer_geo_no_import_error_when_false():
422
+ da = ds_air_temperature['air'].isel(time=0)
423
+ with patch('hvplot.util.import_geoviews', return_value=None):
424
+ assert hvplot.explorer(da, x='lon', y='lat', geo=False)
@@ -18,6 +18,7 @@ from unittest import TestCase, SkipTest
18
18
 
19
19
  from hvplot.util import (
20
20
  check_crs,
21
+ import_geoviews,
21
22
  is_list_like,
22
23
  process_crs,
23
24
  process_xarray,
@@ -383,3 +384,8 @@ def test_is_geodataframe_spatialpandas_dask():
383
384
  def test_is_geodataframe_classic_dataframe():
384
385
  df = pd.DataFrame({'geometry': [None, None], 'name': ['A', 'B']})
385
386
  assert not is_geodataframe(df)
387
+
388
+
389
+ @pytest.mark.geo
390
+ def test_geoviews_is_available():
391
+ assert import_geoviews()
@@ -10,7 +10,7 @@ from panel.viewable import Viewer
10
10
 
11
11
  from .converter import HoloViewsConverter as _hvConverter
12
12
  from .plotting import hvPlot as _hvPlot
13
- from .util import is_geodataframe, is_xarray, instantiate_crs_str
13
+ from .util import is_geodataframe, is_xarray, instantiate_crs_str, import_geoviews
14
14
 
15
15
  # Defaults
16
16
  KINDS = {
@@ -361,17 +361,10 @@ class Geographic(Controls):
361
361
  _widgets_kwargs = {'geo': {'type': pn.widgets.Toggle}}
362
362
 
363
363
  def __init__(self, data, **params):
364
- gv_available = False
365
- try:
366
- import geoviews # noqa
367
-
368
- gv_available = True
369
- except ImportError:
370
- pass
371
-
372
364
  geo_params = GEO_KEYS + ['geo']
373
- if not gv_available and any(p in params for p in geo_params):
374
- raise ImportError('GeoViews must be installed to enable the geographic options.')
365
+ gv_available = None
366
+ if any(params.get(p) for p in geo_params):
367
+ gv_available = import_geoviews()
375
368
  super().__init__(data, **params)
376
369
  if not gv_available:
377
370
  for p in geo_params:
@@ -729,6 +729,18 @@ def import_datashader():
729
729
  return datashader
730
730
 
731
731
 
732
+ def import_geoviews():
733
+ geoviews = None
734
+ try:
735
+ import geoviews
736
+ except ModuleNotFoundError:
737
+ raise ModuleNotFoundError(
738
+ 'The `geoviews` package must be installed in order to use '
739
+ 'geographic features. Install it with pip or conda.'
740
+ ) from None
741
+ return geoviews
742
+
743
+
732
744
  def relabel(hv_obj, **kwargs):
733
745
  """Conditionally relabel a HoloViews object"""
734
746
  if kwargs:
@@ -750,3 +762,12 @@ def relabel_redim(hv_obj, relabel_kwargs, redim_kwargs):
750
762
  if redim_kwargs:
751
763
  hv_obj = hv_obj.redim(**redim_kwargs)
752
764
  return hv_obj
765
+
766
+
767
+ def is_mpl_cmap(obj):
768
+ """Check if the object is a Matplotlib LinearSegmentedColormap."""
769
+ if 'matplotlib' not in sys.modules:
770
+ return False
771
+ from matplotlib.colors import LinearSegmentedColormap
772
+
773
+ return isinstance(obj, LinearSegmentedColormap)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hvplot
3
- Version: 0.11.1rc1
3
+ Version: 0.11.2
4
4
  Summary: A high-level plotting API for the PyData ecosystem built on HoloViews.
5
5
  Author-email: Philipp Rudiger <developers@holoviz.org>
6
6
  Maintainer-email: HoloViz developers <developers@holoviz.org>
@@ -79,7 +79,7 @@ Requires-Dist: fugue[sql]; extra == "examples"
79
79
  Requires-Dist: hvplot[fugue-sql]; extra == "examples"
80
80
  Requires-Dist: ibis-framework[duckdb]; extra == "examples"
81
81
  Requires-Dist: intake-parquet>=0.2.3; extra == "examples"
82
- Requires-Dist: intake-xarray>=0.5.0; extra == "examples"
82
+ Requires-Dist: intake-xarray<2,>=0.5.0; extra == "examples"
83
83
  Requires-Dist: intake<2.0.0,>=0.6.5; extra == "examples"
84
84
  Requires-Dist: ipywidgets; extra == "examples"
85
85
  Requires-Dist: networkx>=2.6.3; extra == "examples"
@@ -107,7 +107,7 @@ Requires-Dist: hvplot[examples]; extra == "examples-tests"
107
107
  Requires-Dist: hvplot[tests-nb]; extra == "examples-tests"
108
108
  Provides-Extra: doc
109
109
  Requires-Dist: hvplot[examples]; extra == "doc"
110
- Requires-Dist: nbsite>=0.8.4; extra == "doc"
110
+ Requires-Dist: nbsite>=0.8.6; extra == "doc"
111
111
  Requires-Dist: sphinxext-rediraffe; extra == "doc"
112
112
  Provides-Extra: hvdev
113
113
  Requires-Dist: colorcet>=0.0.1a1; extra == "hvdev"
@@ -12,7 +12,7 @@ setuptools_scm>=6
12
12
 
13
13
  [doc]
14
14
  hvplot[examples]
15
- nbsite>=0.8.4
15
+ nbsite>=0.8.6
16
16
  sphinxext-rediraffe
17
17
 
18
18
  [examples]
@@ -23,7 +23,7 @@ fugue[sql]
23
23
  hvplot[fugue-sql]
24
24
  ibis-framework[duckdb]
25
25
  intake-parquet>=0.2.3
26
- intake-xarray>=0.5.0
26
+ intake-xarray<2,>=0.5.0
27
27
  intake<2.0.0,>=0.6.5
28
28
  ipywidgets
29
29
  networkx>=2.6.3
@@ -113,7 +113,7 @@ examples = [
113
113
  "hvplot[fugue-sql]",
114
114
  "ibis-framework[duckdb]", # ibis-duckdb on conda
115
115
  "intake-parquet >=0.2.3",
116
- "intake-xarray >=0.5.0",
116
+ "intake-xarray >=0.5.0,<2",
117
117
  "intake >=0.6.5,<2.0.0",
118
118
  "ipywidgets",
119
119
  "networkx >=2.6.3",
@@ -146,7 +146,7 @@ examples-tests = [
146
146
  # Additional packages required to build the docs
147
147
  doc = [
148
148
  "hvplot[examples]",
149
- "nbsite >=0.8.4",
149
+ "nbsite >=0.8.6",
150
150
  "sphinxext-rediraffe",
151
151
  ]
152
152
  # Trick to let pip know we want to install dev dependencies
@@ -196,7 +196,7 @@ filterwarnings = [
196
196
  ]
197
197
 
198
198
  [tool.codespell]
199
- ignore-words-list = "ser"
199
+ ignore-words-list = "ser,assertIn"
200
200
  skip = "doc/generate_modules.py"
201
201
  write-changes = true
202
202
 
@@ -211,12 +211,6 @@ extend-select = [
211
211
  [tool.ruff.format]
212
212
  quote-style = "single"
213
213
 
214
- [tool.nbqa.addopts]
215
- # E402 Module level import not at top of file
216
- ruff = [
217
- "--extend-ignore=E402"
218
- ]
219
-
220
214
  [tool.pyproject2conda.dependencies]
221
215
  geoviews = { skip = true, packages = "geoviews-core >=1.9.0" }
222
216
  # It should be ibis-framework[duckdb], but it works anyway.