hvplot 0.8.3rc2__tar.gz → 0.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hvplot-0.8.3rc2/hvplot.egg-info → hvplot-0.8.4}/PKG-INFO +1 -1
- hvplot-0.8.4/hvplot/.version +1 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/converter.py +26 -8
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/interactive.py +49 -1
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/core.py +1 -1
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testgeo.py +29 -8
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testinteractive.py +28 -1
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/util.py +14 -2
- {hvplot-0.8.3rc2 → hvplot-0.8.4/hvplot.egg-info}/PKG-INFO +1 -1
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/requires.txt +5 -8
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/setup.py +2 -5
- hvplot-0.8.3rc2/hvplot/.version +0 -1
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/LICENSE +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/MANIFEST.in +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/README.md +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/console.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/console_server.gif +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/diagram.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/diagram.svg +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/hvplot-wm.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/assets/streamz_demo.gif +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/data/crime.csv +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/datasets.yaml +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/explorer.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/hvplot.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/getting_started/interactive.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/geopandas/points.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/geopandas/polygons.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/andrewscurves.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/area.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/bar.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/barh.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/bivariate.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/box.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/errorbars.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/heatmap.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/hexbin.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/hist.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/kde.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/labels.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/lagplot.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/line.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/ohlc.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/scatter.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/scattermatrix.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/step.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/table.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/pandas/violin.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/contour.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/contourf.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/image.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/quadmesh.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/rgb.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/reference/xarray/vectorfield.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Customization.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Explorer.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Geographic_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Gridded_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Interactive.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Introduction.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/NetworkX.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Pandas_API.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_Extensions.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Plotting_with_Plotly.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Statistical_Plots.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Streaming.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Subplots.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Timeseries_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Viewing.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/Widgets.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/examples/user_guide/images/simple.svg +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/__init__.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/backend_transforms.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/cudf.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/dask.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/console.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/console_server.gif +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/diagram.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/diagram.svg +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/hvplot-wm.png +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/assets/streamz_demo.gif +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/data/crime.csv +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/datasets.yaml +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/explorer.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/hvplot.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/getting_started/interactive.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/geopandas/points.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/geopandas/polygons.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/andrewscurves.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/area.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/bar.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/barh.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/bivariate.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/box.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/errorbars.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/heatmap.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/hexbin.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/hist.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/kde.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/labels.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/lagplot.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/line.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/ohlc.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/parallelcoordinates.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/scatter.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/scattermatrix.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/step.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/table.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/pandas/violin.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/contour.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/contourf.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/image.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/quadmesh.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/rgb.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/reference/xarray/vectorfield.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Customization.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Explorer.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Geographic_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Gridded_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Interactive.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Introduction.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/NetworkX.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Pandas_API.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_Extensions.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_with_Matplotlib.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Plotting_with_Plotly.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Statistical_Plots.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Streaming.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Subplots.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Timeseries_Data.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Viewing.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/Widgets.ipynb +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/examples/user_guide/images/simple.svg +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/ibis.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/intake.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/networkx.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/pandas.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/__init__.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/andrews_curves.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/lag_plot.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/parallel_coordinates.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/plotting/scatter_matrix.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/sample_data.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/streamz.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/__init__.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/__init__.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/testcore.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/plotting/testscattermatrix.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/test_links.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testbackend_transforms.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testcharts.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testgridplots.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testhelp.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testibis.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testnetworkx.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoperations.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoptions.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testoverrides.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testpanel.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testpatch.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testplotting.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/teststreaming.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testtransforms.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testui.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/tests/testutil.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/ui.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/utilities.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot/xarray.py +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/SOURCES.txt +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/dependency_links.txt +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/entry_points.txt +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/hvplot.egg-info/top_level.txt +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/pyproject.toml +0 -0
- {hvplot-0.8.3rc2 → hvplot-0.8.4}/setup.cfg +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_describe": "v0.8.4-0-gd336e11", "version_string": "0.8.4"}
|
|
@@ -230,6 +230,9 @@ class HoloViewsConverter:
|
|
|
230
230
|
Whether to project the data before plotting (adds initial
|
|
231
231
|
overhead but avoids projecting data when plot is dynamically
|
|
232
232
|
updated).
|
|
233
|
+
projection (default=None): str or Cartopy CRS
|
|
234
|
+
Coordinate reference system of the plot specified as Cartopy
|
|
235
|
+
CRS object or class name.
|
|
233
236
|
tiles (default=False):
|
|
234
237
|
Whether to overlay the plot on a tile source. Tiles sources
|
|
235
238
|
can be selected by name or a tiles object or class can be passed,
|
|
@@ -255,7 +258,8 @@ class HoloViewsConverter:
|
|
|
255
258
|
]
|
|
256
259
|
|
|
257
260
|
_geo_options = [
|
|
258
|
-
'geo', 'crs', 'features', 'project', 'coastline', 'tiles'
|
|
261
|
+
'geo', 'crs', 'features', 'project', 'coastline', 'tiles',
|
|
262
|
+
'projection', 'global_extents'
|
|
259
263
|
]
|
|
260
264
|
|
|
261
265
|
_axis_options = [
|
|
@@ -393,7 +397,7 @@ class HoloViewsConverter:
|
|
|
393
397
|
)
|
|
394
398
|
|
|
395
399
|
self.dynamic = dynamic
|
|
396
|
-
self.geo = any([geo, crs, global_extent, projection, project, coastline, features])
|
|
400
|
+
self.geo = any([geo, crs, global_extent, projection, project, coastline, features, tiles])
|
|
397
401
|
self.crs = self._process_crs(data, crs) if self.geo else None
|
|
398
402
|
self.project = project
|
|
399
403
|
self.coastline = coastline
|
|
@@ -412,7 +416,7 @@ class HoloViewsConverter:
|
|
|
412
416
|
'install -c pyviz geoviews')
|
|
413
417
|
if self.geo:
|
|
414
418
|
if self.kind not in self._geo_types:
|
|
415
|
-
param.main.warning(
|
|
419
|
+
param.main.param.warning(
|
|
416
420
|
"geo option cannot be used with kind=%r plot "
|
|
417
421
|
"type. Geographic plots are only supported for "
|
|
418
422
|
"following plot types: %r" % (self.kind, self._geo_types))
|
|
@@ -434,13 +438,20 @@ class HoloViewsConverter:
|
|
|
434
438
|
"Projection must be defined as cartopy CRS or "
|
|
435
439
|
"one of the following CRS string:\n {}".format(all_crs))
|
|
436
440
|
|
|
437
|
-
|
|
438
|
-
if
|
|
441
|
+
projection = projection or (ccrs.GOOGLE_MERCATOR if tiles else self.crs)
|
|
442
|
+
if tiles and projection != ccrs.GOOGLE_MERCATOR:
|
|
443
|
+
raise ValueError(
|
|
444
|
+
"Tiles can only be used with output projection of "
|
|
445
|
+
"`cartopy.crs.GOOGLE_MERCATOR`. To get rid of this error "
|
|
446
|
+
"remove `projection=` or `tiles=`"
|
|
447
|
+
)
|
|
448
|
+
|
|
449
|
+
if self.crs != projection:
|
|
439
450
|
px0, py0, px1, py1 = ccrs.GOOGLE_MERCATOR.boundary.bounds
|
|
440
451
|
x0, x1 = xlim or (px0, px1)
|
|
441
452
|
y0, y1 = ylim or (py0, py1)
|
|
442
453
|
extents = (x0, y0, x1, y1)
|
|
443
|
-
x0, y0, x1, y1 = project_extents(extents, self.crs,
|
|
454
|
+
x0, y0, x1, y1 = project_extents(extents, self.crs, projection)
|
|
444
455
|
if xlim:
|
|
445
456
|
xlim = (x0, x1)
|
|
446
457
|
if ylim:
|
|
@@ -606,7 +617,7 @@ class HoloViewsConverter:
|
|
|
606
617
|
if debug:
|
|
607
618
|
kwds = dict(x=self.x, y=self.y, by=self.by, kind=self.kind,
|
|
608
619
|
groupby=self.groupby, grid=self.grid)
|
|
609
|
-
param.main.warning('Plotting {kind} plot with parameters x: {x}, '
|
|
620
|
+
param.main.param.warning('Plotting {kind} plot with parameters x: {x}, '
|
|
610
621
|
'y: {y}, by: {by}, groupby: {groupby}, row/col: {grid}'.format(**kwds))
|
|
611
622
|
|
|
612
623
|
def _process_symmetric(self, symmetric, clim, check_symmetric_max):
|
|
@@ -706,6 +717,10 @@ class HoloViewsConverter:
|
|
|
706
717
|
kind = 'polygons'
|
|
707
718
|
elif geom_type in ('LineString', 'LineRing', 'Line'):
|
|
708
719
|
kind = 'paths'
|
|
720
|
+
# if only one arg is provided, treat it like color
|
|
721
|
+
if x is not None and y is None:
|
|
722
|
+
kwds['color'] = kwds.pop('color', kwds.pop('c', x))
|
|
723
|
+
x = None
|
|
709
724
|
elif isinstance(data, pd.DataFrame):
|
|
710
725
|
datatype = 'pandas'
|
|
711
726
|
self.data = data
|
|
@@ -2232,9 +2247,12 @@ class HoloViewsConverter:
|
|
|
2232
2247
|
for opts_ in [cur_opts, compat_opts]:
|
|
2233
2248
|
if 'color' in opts_ and opts_['color'] in vdims:
|
|
2234
2249
|
opts_['color'] = hv.dim(opts_['color'])
|
|
2250
|
+
# if there is nothing to put in hover, turn it off
|
|
2251
|
+
if 'tools' in opts_ and kind in ["polygons", "paths"] and not vdims:
|
|
2252
|
+
opts_["tools"] = [t for t in opts_["tools"] if t != "hover"]
|
|
2235
2253
|
if self.geo: params['crs'] = self.crs
|
|
2236
2254
|
if self.by:
|
|
2237
|
-
obj = Dataset(data).to(element, kdims, vdims, self.by, **params)
|
|
2255
|
+
obj = Dataset(data, self.by+kdims, vdims).to(element, kdims, vdims, self.by, **params)
|
|
2238
2256
|
if self.subplots:
|
|
2239
2257
|
obj = obj.layout(sort=False)
|
|
2240
2258
|
else:
|
|
@@ -112,7 +112,7 @@ from panel.widgets.base import Widget
|
|
|
112
112
|
|
|
113
113
|
from .converter import HoloViewsConverter
|
|
114
114
|
from .util import (
|
|
115
|
-
_flatten, is_tabular, is_xarray, is_xarray_dataarray,
|
|
115
|
+
_flatten, bokeh3, is_tabular, is_xarray, is_xarray_dataarray,
|
|
116
116
|
_convert_col_names_to_str,
|
|
117
117
|
)
|
|
118
118
|
|
|
@@ -709,6 +709,11 @@ class Interactive:
|
|
|
709
709
|
to the center and widget location specified in the
|
|
710
710
|
interactive call.
|
|
711
711
|
"""
|
|
712
|
+
if bokeh3:
|
|
713
|
+
return self._layout_bk3(**kwargs)
|
|
714
|
+
return self._layout_bk2(**kwargs)
|
|
715
|
+
|
|
716
|
+
def _layout_bk2(self, **kwargs):
|
|
712
717
|
widget_box = self.widgets()
|
|
713
718
|
panel = self.output()
|
|
714
719
|
loc = self._loc
|
|
@@ -751,6 +756,49 @@ class Interactive:
|
|
|
751
756
|
components = [Column(panel, widgets)]
|
|
752
757
|
return Row(*components, **kwargs)
|
|
753
758
|
|
|
759
|
+
def _layout_bk3(self, **kwargs):
|
|
760
|
+
widget_box = self.widgets()
|
|
761
|
+
panel = self.output()
|
|
762
|
+
loc = self._loc
|
|
763
|
+
center = self._center
|
|
764
|
+
alignments = {
|
|
765
|
+
'left': (Row, ('start', 'center'), True),
|
|
766
|
+
'right': (Row, ('end', 'center'), False),
|
|
767
|
+
'top': (Column, ('center', 'start'), True),
|
|
768
|
+
'bottom': (Column, ('center', 'end'), False),
|
|
769
|
+
'top_left': (Column, 'start', True),
|
|
770
|
+
'top_right': (Column, ('end', 'start'), True),
|
|
771
|
+
'bottom_left': (Column, ('start', 'end'), False),
|
|
772
|
+
'bottom_right': (Column, 'end', False),
|
|
773
|
+
'left_top': (Row, 'start', True),
|
|
774
|
+
'left_bottom': (Row, ('start', 'end'), True),
|
|
775
|
+
'right_top': (Row, ('end', 'start'), False),
|
|
776
|
+
'right_bottom': (Row, 'end', False)
|
|
777
|
+
}
|
|
778
|
+
layout, align, widget_first = alignments[loc]
|
|
779
|
+
widget_box.align = align
|
|
780
|
+
if not len(widget_box):
|
|
781
|
+
if center:
|
|
782
|
+
components = [HSpacer(), panel, HSpacer()]
|
|
783
|
+
else:
|
|
784
|
+
components = [panel]
|
|
785
|
+
return Row(*components, **kwargs)
|
|
786
|
+
|
|
787
|
+
items = (widget_box, panel) if widget_first else (panel, widget_box)
|
|
788
|
+
sizing_mode = kwargs.get('sizing_mode')
|
|
789
|
+
if not center:
|
|
790
|
+
if layout is Row:
|
|
791
|
+
components = list(items)
|
|
792
|
+
else:
|
|
793
|
+
components = [layout(*items, sizing_mode=sizing_mode)]
|
|
794
|
+
elif layout is Column:
|
|
795
|
+
components = [HSpacer(), layout(*items, sizing_mode=sizing_mode), HSpacer()]
|
|
796
|
+
elif loc.startswith('left'):
|
|
797
|
+
components = [widget_box, HSpacer(), panel, HSpacer()]
|
|
798
|
+
else:
|
|
799
|
+
components = [HSpacer(), panel, HSpacer(), widget_box]
|
|
800
|
+
return Row(*components, **kwargs)
|
|
801
|
+
|
|
754
802
|
def holoviews(self):
|
|
755
803
|
"""
|
|
756
804
|
Returns a HoloViews object to render the output of this
|
|
@@ -113,7 +113,7 @@ class hvPlotBase:
|
|
|
113
113
|
if name in plots:
|
|
114
114
|
plot_opts = plots[name]
|
|
115
115
|
if "kind" in plot_opts and name in HoloViewsConverter._kind_mapping:
|
|
116
|
-
param.main.warning(
|
|
116
|
+
param.main.param.warning(
|
|
117
117
|
"Custom options for existing plot types should not "
|
|
118
118
|
"declare the 'kind' argument. The .%s plot method "
|
|
119
119
|
"was unexpectedly customized with kind=%r." % (plot_opts["kind"], name)
|
|
@@ -7,7 +7,6 @@ from packaging.version import Version
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
import pandas as pd
|
|
9
9
|
import holoviews as hv
|
|
10
|
-
import pytest
|
|
11
10
|
|
|
12
11
|
from hvplot.util import proj_to_cartopy
|
|
13
12
|
|
|
@@ -107,6 +106,11 @@ class TestProjections(TestGeo):
|
|
|
107
106
|
with self.assertRaisesRegex(ValueError, "Projection must be defined"):
|
|
108
107
|
self.da.hvplot.image('x', 'y', projection='foo')
|
|
109
108
|
|
|
109
|
+
def test_plot_with_projection_raises_an_error_when_tiles_set(self):
|
|
110
|
+
da = self.da.copy()
|
|
111
|
+
with self.assertRaisesRegex(ValueError, "Tiles can only be used with output projection"):
|
|
112
|
+
da.hvplot.image('x', 'y', crs=self.crs, projection='Robinson', tiles=True)
|
|
113
|
+
|
|
110
114
|
|
|
111
115
|
class TestGeoAnnotation(TestCase):
|
|
112
116
|
|
|
@@ -261,6 +265,13 @@ class TestGeoPandas(TestCase):
|
|
|
261
265
|
assert points.kdims == ['x', 'y']
|
|
262
266
|
assert points.vdims == ['index']
|
|
263
267
|
|
|
268
|
+
def test_points_hover_cols_positional_arg_sets_color(self):
|
|
269
|
+
points = self.cities.hvplot('name')
|
|
270
|
+
assert points.kdims == ['x', 'y']
|
|
271
|
+
assert points.vdims == ['name']
|
|
272
|
+
opts = hv.Store.lookup_options('bokeh', points, 'style').kwargs
|
|
273
|
+
assert opts['color'] == 'name'
|
|
274
|
+
|
|
264
275
|
def test_points_hover_cols_with_c_set_to_name(self):
|
|
265
276
|
points = self.cities.hvplot(c='name')
|
|
266
277
|
assert points.kdims == ['x', 'y']
|
|
@@ -268,16 +279,26 @@ class TestGeoPandas(TestCase):
|
|
|
268
279
|
opts = hv.Store.lookup_options('bokeh', points, 'style').kwargs
|
|
269
280
|
assert opts['color'] == 'name'
|
|
270
281
|
|
|
271
|
-
@pytest.mark.xfail
|
|
272
282
|
def test_points_hover_cols_with_by_set_to_name(self):
|
|
273
283
|
points = self.cities.hvplot(by='name')
|
|
274
|
-
assert points
|
|
275
|
-
assert points.
|
|
284
|
+
assert isinstance(points, hv.core.overlay.NdOverlay)
|
|
285
|
+
assert points.kdims == ['name']
|
|
286
|
+
assert points.vdims == []
|
|
287
|
+
for element in points.values():
|
|
288
|
+
assert element.kdims == ['x', 'y']
|
|
289
|
+
assert element.vdims == []
|
|
290
|
+
|
|
291
|
+
def test_points_project_xlim_and_ylim(self):
|
|
292
|
+
points = self.cities.hvplot(geo=True, xlim=(-10, 10), ylim=(-20, -10))
|
|
293
|
+
opts = hv.Store.lookup_options('bokeh', points, 'plot').options
|
|
294
|
+
assert opts['xlim'] == (-10, 10)
|
|
295
|
+
assert opts['ylim'] == (-20, -10)
|
|
276
296
|
|
|
277
|
-
@pytest.mark.xfail(
|
|
278
|
-
reason='Waiting for upstream fix https://github.com/holoviz/holoviews/pull/5325',
|
|
279
|
-
raises=KeyError,
|
|
280
|
-
)
|
|
281
297
|
def test_polygons_by_subplots(self):
|
|
282
298
|
polygons = self.polygons.hvplot(geo=True, by="name", subplots=True)
|
|
283
299
|
assert isinstance(polygons, hv.core.layout.NdLayout)
|
|
300
|
+
|
|
301
|
+
def test_polygons_turns_off_hover_when_there_are_no_fields_to_include(self):
|
|
302
|
+
polygons = self.polygons.hvplot(geo=True)
|
|
303
|
+
opts = hv.Store.lookup_options('bokeh', polygons, 'plot').kwargs
|
|
304
|
+
assert 'hover' not in opts.get('tools')
|
|
@@ -14,6 +14,10 @@ from holoviews.util.transform import dim
|
|
|
14
14
|
from hvplot import bind
|
|
15
15
|
from hvplot.interactive import Interactive
|
|
16
16
|
from hvplot.xarray import XArrayInteractive
|
|
17
|
+
from hvplot.util import bokeh3
|
|
18
|
+
|
|
19
|
+
is_bokeh2 = pytest.mark.skipif(bokeh3, reason="requires bokeh 2.x")
|
|
20
|
+
is_bokeh3 = pytest.mark.skipif(not bokeh3, reason="requires bokeh 3.x")
|
|
17
21
|
|
|
18
22
|
|
|
19
23
|
@pytest.fixture(scope='module')
|
|
@@ -665,7 +669,7 @@ def test_interactive_pandas_frame_bind_out_widgets(df):
|
|
|
665
669
|
|
|
666
670
|
|
|
667
671
|
def test_interactive_pandas_frame_bind_operator_out_widgets(df):
|
|
668
|
-
select = pn.widgets.Select(
|
|
672
|
+
select = pn.widgets.Select(value='A', options=list(df.columns))
|
|
669
673
|
|
|
670
674
|
def sel_col(col):
|
|
671
675
|
return df[col]
|
|
@@ -1247,6 +1251,7 @@ def test_interactive_pandas_layout_default_no_widgets_kwargs(df):
|
|
|
1247
1251
|
assert layout.width == 200
|
|
1248
1252
|
|
|
1249
1253
|
|
|
1254
|
+
@is_bokeh2
|
|
1250
1255
|
def test_interactive_pandas_layout_default_with_widgets(df):
|
|
1251
1256
|
w = pn.widgets.IntSlider(value=2, start=1, end=5)
|
|
1252
1257
|
dfi = Interactive(df)
|
|
@@ -1270,6 +1275,27 @@ def test_interactive_pandas_layout_default_with_widgets(df):
|
|
|
1270
1275
|
assert isinstance(layout[0][0][1], pn.layout.HSpacer)
|
|
1271
1276
|
|
|
1272
1277
|
|
|
1278
|
+
@is_bokeh3
|
|
1279
|
+
def test_interactive_pandas_layout_default_with_widgets_bk3(df):
|
|
1280
|
+
w = pn.widgets.IntSlider(value=2, start=1, end=5)
|
|
1281
|
+
dfi = Interactive(df)
|
|
1282
|
+
dfi = dfi.head(w)
|
|
1283
|
+
|
|
1284
|
+
assert dfi._center is False
|
|
1285
|
+
assert dfi._loc == 'top_left'
|
|
1286
|
+
|
|
1287
|
+
layout = dfi.layout()
|
|
1288
|
+
|
|
1289
|
+
assert isinstance(layout, pn.Row)
|
|
1290
|
+
assert len(layout) == 1
|
|
1291
|
+
assert isinstance(layout[0], pn.Column)
|
|
1292
|
+
assert len(layout[0]) == 2
|
|
1293
|
+
assert isinstance(layout[0][0], pn.Column)
|
|
1294
|
+
assert isinstance(layout[0][1], pn.pane.PaneBase)
|
|
1295
|
+
assert len(layout[0][0]) == 1
|
|
1296
|
+
assert isinstance(layout[0][0][0], pn.widgets.IntSlider)
|
|
1297
|
+
|
|
1298
|
+
@is_bokeh2
|
|
1273
1299
|
def test_interactive_pandas_layout_center_with_widgets(df):
|
|
1274
1300
|
w = pn.widgets.IntSlider(value=2, start=1, end=5)
|
|
1275
1301
|
dfi = df.interactive(center=True)
|
|
@@ -1298,6 +1324,7 @@ def test_interactive_pandas_layout_center_with_widgets(df):
|
|
|
1298
1324
|
assert isinstance(layout[1][1][2], pn.layout.HSpacer)
|
|
1299
1325
|
|
|
1300
1326
|
|
|
1327
|
+
@is_bokeh2
|
|
1301
1328
|
def test_interactive_pandas_layout_loc_with_widgets(df):
|
|
1302
1329
|
w = pn.widgets.IntSlider(value=2, start=1, end=5)
|
|
1303
1330
|
dfi = df.interactive(loc='top_right')
|
|
@@ -10,6 +10,7 @@ from functools import wraps
|
|
|
10
10
|
from packaging.version import Version
|
|
11
11
|
from types import FunctionType
|
|
12
12
|
|
|
13
|
+
import bokeh
|
|
13
14
|
import numpy as np
|
|
14
15
|
import pandas as pd
|
|
15
16
|
import param
|
|
@@ -21,6 +22,8 @@ except:
|
|
|
21
22
|
panel_available = False
|
|
22
23
|
|
|
23
24
|
hv_version = Version(hv.__version__)
|
|
25
|
+
bokeh_version = Version(bokeh.__version__)
|
|
26
|
+
bokeh3 = bokeh_version >= Version("3.0")
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
def with_hv_extension(func, extension='bokeh', logo=False):
|
|
@@ -228,12 +231,21 @@ def process_crs(crs):
|
|
|
228
231
|
3. cartopy.crs.CRS instance
|
|
229
232
|
4. None defaults to crs.PlateCaree
|
|
230
233
|
"""
|
|
234
|
+
missing = []
|
|
231
235
|
try:
|
|
232
236
|
import cartopy.crs as ccrs
|
|
237
|
+
except ImportError:
|
|
238
|
+
missing.append('cartopy')
|
|
239
|
+
try:
|
|
233
240
|
import geoviews as gv # noqa
|
|
241
|
+
except ImportError:
|
|
242
|
+
missing.append('geoviews')
|
|
243
|
+
try:
|
|
234
244
|
import pyproj
|
|
235
245
|
except ImportError:
|
|
236
|
-
|
|
246
|
+
missing.append('pyproj')
|
|
247
|
+
if missing:
|
|
248
|
+
raise ImportError(f'Geographic projection support requires: {", ".join(missing)}.')
|
|
237
249
|
|
|
238
250
|
if crs is None:
|
|
239
251
|
return ccrs.PlateCarree()
|
|
@@ -320,7 +332,7 @@ def is_dask(data):
|
|
|
320
332
|
return isinstance(data, (dd.DataFrame, dd.Series))
|
|
321
333
|
|
|
322
334
|
def is_intake(data):
|
|
323
|
-
if not
|
|
335
|
+
if "intake" not in sys.modules:
|
|
324
336
|
return False
|
|
325
337
|
from intake.source.base import DataSource
|
|
326
338
|
return isinstance(data, DataSource)
|
|
@@ -22,7 +22,7 @@ intake-xarray>=0.5.0
|
|
|
22
22
|
ipykernel<6.18.0
|
|
23
23
|
ipywidgets
|
|
24
24
|
matplotlib
|
|
25
|
-
nbsite>=0.
|
|
25
|
+
nbsite>=0.8.0rc33
|
|
26
26
|
nbval
|
|
27
27
|
networkx>=2.6.3
|
|
28
28
|
notebook>=5.4
|
|
@@ -36,7 +36,6 @@ pooch
|
|
|
36
36
|
pooch>=1.6.0
|
|
37
37
|
pre-commit
|
|
38
38
|
pyct>=0.4.4
|
|
39
|
-
pydata-sphinx-theme<0.10
|
|
40
39
|
pyepsg
|
|
41
40
|
pygraphviz
|
|
42
41
|
pyproj
|
|
@@ -53,8 +52,6 @@ scipy>=1.5.3
|
|
|
53
52
|
selenium>=3.141.0
|
|
54
53
|
setuptools>=30.3.0
|
|
55
54
|
spatialpandas>=0.4.3
|
|
56
|
-
sphinx-copybutton
|
|
57
|
-
sphinx-design
|
|
58
55
|
streamz>=0.3.0
|
|
59
56
|
xarray
|
|
60
57
|
xarray>=0.18.2
|
|
@@ -93,13 +90,11 @@ plotly
|
|
|
93
90
|
pygraphviz
|
|
94
91
|
ipykernel<6.18.0
|
|
95
92
|
numpy<1.24
|
|
93
|
+
ipywidgets
|
|
96
94
|
numba>=0.51.0
|
|
97
95
|
datashader>=0.6.5
|
|
98
96
|
spatialpandas>=0.4.3
|
|
99
|
-
nbsite>=0.
|
|
100
|
-
pydata-sphinx-theme<0.10
|
|
101
|
-
sphinx-copybutton
|
|
102
|
-
sphinx-design
|
|
97
|
+
nbsite>=0.8.0rc33
|
|
103
98
|
|
|
104
99
|
[examples]
|
|
105
100
|
geoviews>=1.9.0
|
|
@@ -130,6 +125,7 @@ plotly
|
|
|
130
125
|
pygraphviz
|
|
131
126
|
ipykernel<6.18.0
|
|
132
127
|
numpy<1.24
|
|
128
|
+
ipywidgets
|
|
133
129
|
numba>=0.51.0
|
|
134
130
|
datashader>=0.6.5
|
|
135
131
|
spatialpandas>=0.4.3
|
|
@@ -163,6 +159,7 @@ plotly
|
|
|
163
159
|
pygraphviz
|
|
164
160
|
ipykernel<6.18.0
|
|
165
161
|
numpy<1.24
|
|
162
|
+
ipywidgets
|
|
166
163
|
numba>=0.51.0
|
|
167
164
|
datashader>=0.6.5
|
|
168
165
|
spatialpandas>=0.4.3
|
|
@@ -60,7 +60,6 @@ extras_require['tests'] = [
|
|
|
60
60
|
'pooch',
|
|
61
61
|
'scipy',
|
|
62
62
|
'ipywidgets',
|
|
63
|
-
|
|
64
63
|
]
|
|
65
64
|
|
|
66
65
|
# Dependencies required to run the notebooks
|
|
@@ -94,6 +93,7 @@ extras_require['examples'] = [
|
|
|
94
93
|
'pygraphviz',
|
|
95
94
|
'ipykernel <6.18.0', # temporary
|
|
96
95
|
'numpy < 1.24', # temporary, for a numba error
|
|
96
|
+
'ipywidgets',
|
|
97
97
|
]
|
|
98
98
|
|
|
99
99
|
# Packages not working on python 3.11 because of numba
|
|
@@ -109,10 +109,7 @@ extras_require["examples_tests"] = extras_require["examples"] + extras_require['
|
|
|
109
109
|
|
|
110
110
|
# Additional packages required to build the docs
|
|
111
111
|
extras_require['doc'] = extras_require['examples'] + [
|
|
112
|
-
'nbsite >=0.
|
|
113
|
-
'pydata-sphinx-theme <0.10',
|
|
114
|
-
'sphinx-copybutton',
|
|
115
|
-
'sphinx-design',
|
|
112
|
+
'nbsite >=0.8.0rc33',
|
|
116
113
|
]
|
|
117
114
|
|
|
118
115
|
# until pyproject.toml/equivalent is widely supported (setup_requires
|
hvplot-0.8.3rc2/hvplot/.version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_describe": "v0.8.3rc2-0-g7796bc3", "version_string": "0.8.3rc2"}
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|