Files
python-panel/python-panel.spec
Benjamin Greiner 3050af7c9c - Update to 1.5.4
* This release primarily focuses on improving the ESM components
    including fixes for serialization of parameter values,
    improvements for compiling bundles, and building custom
    layouts. Additionally this release includes the new
    DatetimeSlider, adds a copy button to codeblocks in Markdown
    panes, improves responsive sizing for Plotly and starts adding
    better support for Polars.
  ## Enhancements
  * Add DatetimeSlider widget (#7374)
  * Improve Jupyter preview error handling (#7434)
  * Add copy button to Markdown codeblocks (#7451)
  * Various improvements for writing ESM components (#7462)
  * Log authorization callback errors (#7463)
  * Support polars in pn.cache (#7472)
  * Improve and document hold utility (#7474)
  * Improve how panel compile collects bundles (#7477)
  ## Bug fixes
  * Fix issues detecting changed property values during
    serialization (#7432)
  * Ensure ESM compilation correctly detects file extension (#7446)
  * Ensure parameter overrides are applied to ESM components
    (#7452)
  * Ensure component Children parameter correctly resolves when
    multiple types are defined (#7454)
  * Fix issues using Jupyter Preview with notifications enabled
    (#7466)
  * Ensure HTML/Markdown streaming does not freeze during rapid
    updates (#7480)
  * Ensure Plotly sizes correctly on initial render (#7483)

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-panel?expand=0&rev=59
2024-11-27 20:58:38 +00:00

199 lines
7.0 KiB
RPMSpec

#
# spec file for package python-panel
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%define psuffix %{nil}
%bcond_with test
%endif
# truncate trailing suffix
%define distversion 1.5.4
Name: python-panel%{psuffix}
Version: 1.5.4
Release: 0
Summary: A high level app and dashboarding solution for Python
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/holoviz/panel
Source0: https://files.pythonhosted.org/packages/source/p/panel/panel-%{version}.tar.gz
# package-lock.json file generated with procedure:
# - delete old package-lock.json in panel subdirectory
# - add '"typescript": "^5.1.0"' to package.json devDependencies
# - npm install --package-lock-only --legacy-peer-deps --ignore-scripts
Source10: package-lock.json
# node_modules generated using "osc service mr" with https://github.com/openSUSE/obs-service-node_modules
Source11: node_modules.spec.inc
Source99: python-panel-rpmlintrc
%include %{_sourcedir}/node_modules.spec.inc
# PATCH-FEATURE-OPENSUSE opensuse-js-fixes.patch boo#1231254 gh#openSUSE/obs-service-node_modules#41
Patch0: opensuse-js-fixes.patch
BuildRequires: %{python_module base}
BuildRequires: %{python_module bleach}
BuildRequires: %{python_module bokeh >= 3.5.0 with %python-bokeh < 3.7}
BuildRequires: %{python_module hatch-vcs}
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module packaging}
BuildRequires: %{python_module param >= 2.1.0}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pyviz-comms >= 2.0.0}
BuildRequires: %{python_module requests}
BuildRequires: fdupes
BuildRequires: jupyter-notebook-filesystem
BuildRequires: local-npm-registry
BuildRequires: python-rpm-macros
Requires: python-Markdown
Requires: python-bleach
Requires: python-linkify-it-py
Requires: python-markdown-it-py
Requires: python-mdit-py-plugins
Requires: python-packaging
Requires: python-pandas >= 1.2
Requires: python-pyviz_comms >= 2.0.0
Requires: python-requests
Requires: python-tqdm
Requires: python-typing_extensions
Requires: (python-bokeh >= 3.5.0 with python-bokeh < 3.7)
Requires: (python-param >= 2.1 with python-param < 3)
Requires(post): update-alternatives
Requires(postun): update-alternatives
Recommends: jupyter-panel
Recommends: python-Pillow
Recommends: python-holoviews >= 1.18.0
Recommends: python-jupyterlab
Recommends: python-matplotlib
Recommends: python-plotly
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module panel = %{version}}
##
BuildRequires: %{python_module Pillow}
BuildRequires: %{python_module altair}
BuildRequires: %{python_module diskcache}
BuildRequires: %{python_module holoviews >= 1.16.0}
BuildRequires: %{python_module jupyterlab}
BuildRequires: %{python_module matplotlib}
BuildRequires: %{python_module plotly}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest-rerunfailures}
BuildRequires: %{python_module pytest-xdist}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module scipy}
BuildRequires: %{python_module streamz}
BuildRequires: esbuild
BuildRequires: unzip
# Tests segfault
# BuildRequires: %%{python_module vtk}
%endif
%python_subpackages
%description
Panel is a Python library that lets you create custom interactive web apps and
dashboards by connecting user-defined widgets to plots, images, tables, or
text.
%package -n jupyter-panel
Summary: Jupyter notebook and server cofiguration for python-panel
Group: Development/Languages/Python
# Any flavor is okay, but suggest the primary one for automatic zypper choice -- boo#1214354
Requires: python3dist(panel) = %{distversion}
Requires: jupyter-bokeh
Suggests: python3-panel
%description -n jupyter-panel
Panel is a Python library that lets you create custom interactive web apps and
dashboards by connecting user-defined widgets to plots, images, tables, or
text.
This package contains the notebook and server extension configuration common
to all Python flavors.
%prep
%autosetup -p1 -n panel-%{version}
# no color for pytest
sed -i '/addopts/ s/--color=yes//' pyproject.toml
rm panel/.eslintrc.js
for p in panel/tests/io/reload_module.py
do \
[ -f $p -a ! -s $p ] || exit 1 && echo "# Empty module" > $p
done
# Resources are already bundled in sdist
sed -i 's|bundle_resources()$|assert os.path.exists("panel/dist/bundled/font-awesome")|' hatch_build.py
pushd panel
rm package-lock.json
local-npm-registry %{_sourcedir} install --include=dev --include=peer
popd
sed -i /asyncio_default_fixture_loop_scope/d pyproject.toml
%if ! %{with test}
%build
%pyproject_wheel
%install
%pyproject_install
%python_clone -a %{buildroot}%{_bindir}/panel
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%if %{with test}
%check
export PYTEST_DEBUG_TEMPROOT=$(mktemp -d -p ./)
# flaky async test
donttest="test_server_async_callbacks"
# flaky timeout
donttest="$donttest or test_server_thread_pool_change_event or test_server_on_load_after_init"
# upstream skips it for win and osx, we skip it because it (flakily) terminates everything on aarch64
donttest="$donttest or (test_terminal and test_subprocess)"
# file sample.pdf missing
donttest="$donttest or test_pdf_local_file"
# Don't test on 32-bit: asyncio is too flaky
[ $(getconf LONG_BIT) -eq 32 ] && exit 0
# no network connection in obs
deselectmark=(-m "not internet")
# no multiflavor playwright
ignorefiles=(--ignore scripts/panelite/test/test_utils.py --ignore scripts/panelite/test/test_panelite.py)
# test_compile tries to build and write next to the imported module: permission denied
PYTHONPATH=":x"
%pytest -n auto -rsfE -k "not ($donttest)" "${deselectmark[@]}" "${ignorefiles[@]}" -p no:unraisableexception
%endif
%post
%python_install_alternative panel
%postun
%python_uninstall_alternative panel
%if ! %{with test}
%files %{python_files}
%license LICENSE.txt
%doc README.md
%python_alternative %{_bindir}/panel
%{python_sitelib}/panel
%{python_sitelib}/panel-%{version}.dist-info
%files -n jupyter-panel
%license LICENSE.txt
%{_jupyter_config} %{_jupyter_servextension_confdir}/panel-client-jupyter.json
%{_jupyter_config} %{_jupyter_server_confdir}/panel-client-jupyter.json
%endif
%changelog