diff --git a/ci/gpu/build.sh b/ci/gpu/build.sh index 70bafeb5..d53efa72 100644 --- a/ci/gpu/build.sh +++ b/ci/gpu/build.sh @@ -59,12 +59,12 @@ gpuci_conda_retry install -y \ "cuspatial=$MINOR_VERSION.*" \ "dask-cudf=$MINOR_VERSION.*" "dask-cuda=$MINOR_VERSION.*" \ "numba>=0.51.2" \ - "bokeh<=2.2.3" \ + "bokeh>=2.3.2,<2.4" \ "rapids-build-env=$MINOR_VERSION.*" \ "rapids-notebook-env=$MINOR_VERSION.*" # https://docs.rapids.ai/maintainers/depmgmt/ -# conda remove -f rapids-build-env rapids-notebook-env +# conda remove --force rapids-build-env rapids-notebook-env # conda install "your-pkg=1.0.0" gpuci_logger "Check versions" diff --git a/conda/environments/cuxfilter_dev_cuda10.1.yml b/conda/environments/cuxfilter_dev_cuda10.1.yml index ce0440e0..a8f48e2f 100644 --- a/conda/environments/cuxfilter_dev_cuda10.1.yml +++ b/conda/environments/cuxfilter_dev_cuda10.1.yml @@ -20,7 +20,7 @@ dependencies: - pyproj>=2.4, <=3.1 - libwebp - pandoc=<2.0.0 -- bokeh>=2.1.1,<=2.2.3 +- bokeh>=2.3.2,<2.4 - panel>=0.10.3 - cudatoolkit=10.1 - nodejs diff --git a/conda/environments/cuxfilter_dev_cuda10.2.yml b/conda/environments/cuxfilter_dev_cuda10.2.yml index 55dc2409..d2bc8bfd 100644 --- a/conda/environments/cuxfilter_dev_cuda10.2.yml +++ b/conda/environments/cuxfilter_dev_cuda10.2.yml @@ -21,7 +21,7 @@ dependencies: - pyproj>=2.4, <=3.1 - libwebp - pandoc=<2.0.0 -- bokeh>=2.1.1,<=2.2.3 +- bokeh>=2.3.2,<2.4 - panel>=0.10.3 - cudatoolkit=10.2 - nodejs diff --git a/conda/environments/cuxfilter_dev_cuda11.0.yml b/conda/environments/cuxfilter_dev_cuda11.0.yml index f9b29871..54987e35 100644 --- a/conda/environments/cuxfilter_dev_cuda11.0.yml +++ b/conda/environments/cuxfilter_dev_cuda11.0.yml @@ -20,7 +20,7 @@ dependencies: - pyproj>=2.4, <=3.1 - libwebp - pandoc=<2.0.0 -- bokeh>=2.1.1,<=2.2.3 +- bokeh>=2.3.2,<2.4 - panel>=0.10.3 - cudatoolkit=11.0 - nodejs diff --git a/conda/recipes/cuxfilter/meta.yaml b/conda/recipes/cuxfilter/meta.yaml index ce0bef31..ea637a1d 100644 --- a/conda/recipes/cuxfilter/meta.yaml +++ b/conda/recipes/cuxfilter/meta.yaml @@ -35,7 +35,7 @@ requirements: - numba >=0.51.2 - cupy >=7.8.0,<10.0.0a0 - panel >=0.10.3 - - bokeh >=2.1.1,<=2.2.3 + - bokeh >=2.3.2,<2.4 - pyproj >=2.4, <=3.1 - geopandas >=0.9.0,<0.10.0a0 - nodejs >=12,<15 diff --git a/python/cuxfilter/charts/datashader/custom_extensions/graph_inspect_widget.py b/python/cuxfilter/charts/datashader/custom_extensions/graph_inspect_widget.py index 7aa64915..c9ac8970 100644 --- a/python/cuxfilter/charts/datashader/custom_extensions/graph_inspect_widget.py +++ b/python/cuxfilter/charts/datashader/custom_extensions/graph_inspect_widget.py @@ -1,4 +1,4 @@ -from bokeh.core.properties import Image, Bool, String +from bokeh.core.properties import Image, Bool, String, Nullable from bokeh.models import Tool from bokeh.util.compiler import TypeScript @@ -13,7 +13,7 @@ super.connect_signals() this.connect(this.model.properties.active.change, () => { - this.model._active = this.model.properties.active.spec.value + this.model._active = this.model.active }) } } @@ -53,6 +53,6 @@ class CustomInspectTool(Tool): __implementation__ = TypeScript(TS_CODE) - _active = Bool + _active = Nullable(Bool) icon = Image() - tool_name = String + tool_name = String() diff --git a/python/cuxfilter/layouts/custom_react_template.py b/python/cuxfilter/layouts/custom_react_template.py index 2e971d5c..57d1c87c 100644 --- a/python/cuxfilter/layouts/custom_react_template.py +++ b/python/cuxfilter/layouts/custom_react_template.py @@ -1,9 +1,5 @@ -from urllib.parse import urljoin +from panel import depends import param -from panel.io.resources import LOCAL_DIST -from panel.io.state import state -from panel.util import url_path -from panel.depends import depends from panel.layout import Card, GridSpec from panel.template.base import BasicTemplate import os @@ -70,30 +66,18 @@ class ReactTemplate(BasicTemplate): } def _template_resources(self): - name = type(self).__name__.lower() - base_url = state.base_url - if state.base_url.startswith("/"): - base_url = state.base_url[1:] - dist_path = urljoin(base_url, LOCAL_DIST) - # External resources - css_files = dict(self._resources["css"]) - for cssname, css in css_files.items(): - css_path = url_path(css) - css_files[cssname] = dist_path + f"bundled/{name}/{css_path}" - js_files = dict(self._resources["js"]) - for jsname, js in js_files.items(): - js_path = url_path(js) - js_files[jsname] = dist_path + f"bundled/{name}/{js_path}" - + resources = super()._template_resources() # CSS files base_css = os.path.basename(self._css) - css_files["base"] = f"{CUSTOM_DIST_PATH_LAYOUTS}/{base_css}" + resources["css"]["base"] = f"{CUSTOM_DIST_PATH_LAYOUTS}/{base_css}" if self.theme: theme = self.theme.find_theme(type(self)) if theme and theme.css: basename = os.path.basename(theme.css) - css_files["theme"] = f"{CUSTOM_DIST_PATH_THEMES}/{basename}" - return {"css": css_files, "js": js_files} + resources["css"][ + "theme" + ] = f"{CUSTOM_DIST_PATH_THEMES}/{basename}" + return resources def __init__(self, **params): if "main" not in params: