diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000..fcc7b97
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,3 @@
+
+ test
+
diff --git a/panel-0.10.1.tar.gz b/panel-0.10.1.tar.gz
deleted file mode 100644
index 0ed6e77..0000000
--- a/panel-0.10.1.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:92cdda28805b6504e2f238eae8d7106b356ade2a33e020d3583bead9a573ac10
-size 6775641
diff --git a/panel-0.10.2.tar.gz b/panel-0.10.2.tar.gz
new file mode 100644
index 0000000..b9dd61c
--- /dev/null
+++ b/panel-0.10.2.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5eeec277524c3146b4f6fc5f0e9ba61755e9c088d50312ecf5e6058f9efb59e
+size 8737937
diff --git a/python-panel-rpmlintrc b/python-panel-rpmlintrc
new file mode 100644
index 0000000..a67deca
--- /dev/null
+++ b/python-panel-rpmlintrc
@@ -0,0 +1,2 @@
+# Required for version info checked by other packages
+addFilter(".*hidden-file-or-dir.*/site-packages/panel/.version")
diff --git a/python-panel.changes b/python-panel.changes
index 4002a76..0bcd707 100644
--- a/python-panel.changes
+++ b/python-panel.changes
@@ -1,3 +1,37 @@
+-------------------------------------------------------------------
+Mon Jan 4 17:40:09 UTC 2021 - Benjamin Greiner
+
+- Update to version 1.10.2:
+ * Fix various issues with Template CSS (#1663, #1742)
+ * Fix BytesIO/StringIO buffers as input to image xpanes (#1711)
+ * Fix out-of-bounds errors when assigning to GridSpec with
+ fixed ncols (#1721)
+ * Fix deserialization issues for Plotly.hover_data (#1722)
+ * Fixed updating of Alert parameters after initialization (#1725)
+ * Fix ordering of items added to Template areas (#1736)
+ * Fix interactivity for items in Card (#1750)
+ * Ensure onload callbacks are only run once (#1746)
+ * Allow overriding items in grid based templates (#1741)
+ * Ensure ECharts and ipywidget rerender when in Card (#1765)
+ * Ensure template dark theme persists on HoloViews plots (#1764)
+ * Fix responsive height in Plotly pane (#1770)
+ * Ensure image panes resize in width and height (#1777)
+ * Fix issues with Location.sync serialization (#1784)
+ * Add throttled argument to interact (#1259)
+ * ECharts pane now loads echarts-gl for 3D support (#1785)
+ * Ensure CheckBoxGroup and CheckButtonGroup support arbitrary
+ objects as options (#1793)
+ * Improved OAuth encryption key validation (#1762)
+ * Add progress option to .save method (#1776)
+- Fix conflict with parallel installable python3 flavors because
+ of incorrect python_expand usage with docs
+ gh#openSUSE/python-rpm-macros#66
+- Fix npm bundling errors during install
+- Make multibuild test flavor in order to avoid dependency cycle
+ with python-holoviews
+- The hidden .version file is actually necessary (e.g. holoviews
+ checks the version) -- add python-panel-rpmlintrc
+
-------------------------------------------------------------------
Sat Oct 31 20:38:23 UTC 2020 - Atri Bhattacharya
diff --git a/python-panel.spec b/python-panel.spec
index f38a073..bb11750 100644
--- a/python-panel.spec
+++ b/python-panel.spec
@@ -1,7 +1,7 @@
#
# spec file for package python-panel
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,42 +16,68 @@
#
-# Dependencies (e.g. bokeh) no longer support python2
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+%global flavor @BUILD_FLAVOR@%{nil}
+%if "%{flavor}" == "test"
+%define psuffix -test
+%bcond_without test
+%else
+%define psuffix %{nil}
+%bcond_with test
+%endif
%define skip_python2 1
%define modname panel
-Name: python-panel
-Version: 0.10.1
+Name: python-panel%{psuffix}
+Version: 0.10.2
Release: 0
Summary: A high level app and dashboarding solution for Python
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://panel.holoviz.org
Source: https://files.pythonhosted.org/packages/source/p/panel/panel-%{version}.tar.gz
+Source99: python-panel-rpmlintrc
BuildRequires: %{python_module Markdown}
-BuildRequires: %{python_module bokeh >= 2.0.0}
-BuildRequires: %{python_module folium}
+BuildRequires: %{python_module bokeh >= 2.2.2}
BuildRequires: %{python_module param >= 1.9.3}
BuildRequires: %{python_module pyct >= 0.4.4}
BuildRequires: %{python_module pyviz-comms >= 0.7.4}
-BuildRequires: %{python_module scipy}
+BuildRequires: %{python_module requests}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module tqdm}
BuildRequires: fdupes
BuildRequires: nodejs
BuildRequires: python-rpm-macros
-# SECTION test requirements
+%if %{with test}
+BuildRequires: %{python_module altair}
+BuildRequires: %{python_module folium}
+BuildRequires: %{python_module holoviews}
+BuildRequires: %{python_module ipympl}
+BuildRequires: %{python_module ipython >= 7.0}
BuildRequires: %{python_module nbsmoke >= 0.2.0}
+BuildRequires: %{python_module pandas}
BuildRequires: %{python_module parameterized}
+BuildRequires: %{python_module plotly}
BuildRequires: %{python_module pytest}
-# /SECTION
+BuildRequires: %{python_module scipy}
+BuildRequires: %{python_module streamz}
+BuildRequires: %{python_module twine}
+# Tests segfault
+# BuildRequires: %%{python_module vtk}
+%endif
Requires: python-Markdown
-Requires: python-bokeh >= 2.0.0
+Requires: python-bokeh >= 2.2.2
Requires: python-param >= 1.9.3
Requires: python-pyct >= 0.4.4
Requires: python-pyviz-comms >= 0.7.4
-Requires: python-scipy
+Requires: python-requests
Requires: python-tqdm
+Requires(post): update-alternatives
+Requires(postun): update-alternatives
+Recommends: python-plotly
+Recommends: python-Pillow
Recommends: python-matplotlib
+Recommends: python-notebook >= 5.4
+Recommends: python-holoviews >= 1.13.2
BuildArch: noarch
%python_subpackages
@@ -62,37 +88,50 @@ text.
%prep
%setup -q -n panel-%{version}
-# env-based hashbangs
-%python_expand sed -i "1{s|#!/usr/bin/env python|#!%{_bindir}/$python|}" \
- examples/apps/django2/manage.py \
- examples/apps/django_multi_apps/manage.py
+# Do not try to rebuild the bundled npm stuff. We don't have network. Just use the shipped bundle.
+sed -i '/def _build_paneljs/ a \ return' setup.py
%build
%python_build
+%if ! %{with test}
%install
%python_install
-# MOVE EXAMPLES TO DOC DIR
-mkdir -p %{buildroot}%{_docdir}/%{modname}
-%python_expand mv %{buildroot}%{$python_sitelib}/%{modname}/examples %{buildroot}/%{_docdir}/%{modname}/
+%{python_expand # FIX HASHBANG AND LINK EXAMPLES INTO PACKAGE DOCS
+mkdir examples-%{$python_bin_suffix}
+ln -s %{$python_sitelib}/%{modname}/examples examples-%{$python_bin_suffix}/examples
+sed -i "1{s|#!/usr/bin/env python|#!%{__$python}|}" \
+ %{buildroot}%{$python_sitelib}/%{modname}/examples/apps/django2/manage.py \
+ %{buildroot}%{$python_sitelib}/%{modname}/examples/apps/django_multi_apps/manage.py
+}
-# UNNECESSARY HIDDEN FILE
-%python_expand rm %{buildroot}%{$python_sitelib}/%{modname}/.version
+%python_clone -a %{buildroot}%{_bindir}/panel
%python_expand %fdupes %{buildroot}%{$python_sitelib}
-%fdupes %{buildroot}%{_docdir}/%{modname}/
+%endif
+%if %{with test}
%check
# DISABLE TESTS REQUIRING NETWORK ACCESS
-%pytest -k 'not (test_loading_a_image_from_url or test_image_alt_text or test_image_link_url or test_vtk_pane_from_url or test_vtkjs_pane)'
+%pytest -rs -k 'not (test_loading_a_image_from_url or test_image_alt_text or test_image_link_url or test_vtk_pane_from_url or test_vtkjs_pane)'
+%endif
+%post
+%python_install_alternative panel
+
+%postun
+%python_uninstall_alternative panel
+
+%if ! %{with test}
%files %{python_files}
%license LICENSE.txt
%doc README.md
-%doc %{_docdir}/%{modname}/
-%python3_only %{_bindir}/panel
+%doc examples-%{python_bin_suffix}/examples
+%docdir %{python_sitelib}/%{modname}/examples
+%python_alternative %{_bindir}/panel
%{python_sitelib}/%{modname}/
%{python_sitelib}/%{modname}-%{version}-py%{python_version}.egg-info/
+%endif
%changelog