Blob Blame History Raw
# Wants to download sample data, also wants firefox or geckodriver etc.
# So, we skip tests and rely on upstream's CI
# Needs to be run with --enable-network
%bcond_with tests

%global _description %{expand:
Bokeh is an interactive visualization library for modern web browsers. It
provides elegant, concise construction of versatile graphics, and affords
high-performance interactivity over large or streaming data sets. Bokeh can help
anyone who would like to quickly and easily make interactive plots, dashboards,
and data applications.}

Name:           python-bokeh
Version:        3.2.0
Release:        %autorelease
Summary:        Interactive plots and applications in the browser from Python

# License breakdown: licensecheck -r . | sed '/UNKNOWN/ d' | sort -t ':' -k 2
# The software is released under the BSD license

# Apache License 2.0
#./src/bokeh/palettes.py: Apache License 2.0
#./src/bokeh/server/static/lib/lib.*

# BSD 3-Clause
#./src/bokeh/server/static/js/bokeh-api.js
#./src/bokeh/server/static/js/bokeh-api.min.js
#./src/bokeh/server/static/js/bokeh-gl.js
#./src/bokeh/server/static/js/bokeh-gl.min.js
#./src/bokeh/server/static/js/bokeh.js
#./src/bokeh/server/static/js/bokeh-mathjax.js:
#./src/bokeh/server/static/js/bokeh-mathjax.min.js
#./src/bokeh/server/static/js/bokeh.min.js
#./src/bokeh/server/static/js/bokeh-tables.js
#./src/bokeh/server/static/js/bokeh-widgets.js
#./src/bokeh/server/static/js/bokeh-widgets.min.js
#./src/bokeh/server/static/js/compiler.js

# MIT
#./src/bokeh/sampledata/antibiotics.py: MIT License
#./src/bokeh/sampledata/haar_cascade.py: MIT License
#./src/bokeh/sampledata/perceptions.py: MIT License
#./src/bokeh/server/static/js/lib/core/util/wheel.d.ts: MIT License

# CC
#./src/bokeh/sampledata/gapminder.py: Creative Commons Attribution 2.0
#./src/bokeh/sampledata/us_cities.py: Creative Commons Attribution 2.0
#./src/bokeh/sampledata/world_cities.py: Creative Commons Attribution 2.0
#./src/bokeh/sampledata/population.py: Creative Commons Attribution 3.0
#./src/bokeh/sampledata/les_mis.py: Creative Commons Attribution-NoDerivatives 4.0
#./src/bokeh/sampledata/anscombe.py: Creative Commons Attribution-ShareAlike 3.0
#./src/bokeh/sampledata/browsers.py: Creative Commons Attribution-ShareAlike 3.0

# ODC
#./src/bokeh/sampledata/airport_routes.py: ODC Open Database License v1.0

# Public Domain
#./src/bokeh/sampledata/airports.py: Public domain
#./src/bokeh/sampledata/commits.py: Public domain
#./src/bokeh/sampledata/periodic_table.py: Public domain
#./src/bokeh/sampledata/unemployment1948.py: Public domain
#./src/bokeh/sampledata/unemployment.py: Public domain
#./src/bokeh/sampledata/us_marriages_divorces.py: Public domain


# Multiple licenses:
#./src/bokeh/server/static/js/lib/api/palettes.d.ts: BSD 3-Clause License Apache License 2.0
#./src/bokeh/server/static/js/bokeh-tables.min.js: MIT License BSD 3-Clause License

# NC: non free: to remove?
#./src/bokeh/sampledata/movies_data.py: Creative Commons Attribution-NonCommercial 4.0


License:        Apache-2.0 and BSD-3-Clause and MIT and ODbL-1.0 and LicenseRef-Fedora-Public-Domain and CC-BY-2.0 and CC-BY-3.0 and CC-BY-ND-4.0 and CC-BY-SA-3.0
URL:            https://github.com/bokeh/bokeh
Source0:        %{pypi_source bokeh}

BuildArch:      noarch

%description %_description

%package -n python3-bokeh
Summary:        %{summary}
BuildRequires:  python3-devel
BuildRequires:  python3-setuptools

# Optional deps
# https://docs.bokeh.org/en/latest/docs/installation.html#installation
Recommends:       %{py3_dist jupyter-core}
Recommends:       %{py3_dist networkx}
Recommends:       %{py3_dist pandas}
Recommends:       %{py3_dist psutil}
Recommends:       %{py3_dist sphinx}

# Bokeh will look for whatever browser is available and use that, so not adding
# firefox etc to Recommends
# https://docs.bokeh.org/en/latest/docs/user_guide/export.html#userguide-export

%if %{with tests}
BuildRequires:  %{py3_dist beautifulsoup4}
BuildRequires:  %{py3_dist icalendar}
BuildRequires:  %{py3_dist flaky}
BuildRequires:  %{py3_dist Jinja2} >= 2.7
BuildRequires:  %{py3_dist mock}
BuildRequires:  %{py3_dist nbconvert}
BuildRequires:  %{py3_dist networkx}
BuildRequires:  %{py3_dist numpy} >= 1.11.3
BuildRequires:  %{py3_dist packaging} >= 16.8
BuildRequires:  %{py3_dist pillow} >= 7.1.0
BuildRequires:  %{py3_dist pytest}
BuildRequires:  %{py3_dist python-dateutil} >= 2.1
BuildRequires:  %{py3_dist PyYAML} >= 3.10
BuildRequires:  %{py3_dist requests}
BuildRequires:  %{py3_dist selenium}
BuildRequires:  %{py3_dist sphinx}
BuildRequires:  %{py3_dist toml}
BuildRequires:  %{py3_dist tornado} >= 5.1
BuildRequires:  %{py3_dist typing_extensions} >= 3.7.4
%endif


%description -n python3-bokeh %_description

%prep
%autosetup -n bokeh-%{version}

%if %{with tests}
# pytest doesn't like it
sed -i 's/^timeout = 60//' pyproject.toml
%endif

%generate_buildrequires
%pyproject_buildrequires

%build
%pyproject_wheel

%install
%pyproject_install
%pyproject_save_files bokeh

# Remove zero length file
rm -f %{buildroot}/%{python3_sitelib}/bokeh/server/static/.keep

%check

%if %{with tests}
# download sample data
PYTHONPATH="%{buildroot}/%{python3_sitelib}/" %{python3} -c 'import bokeh ; bokeh.sampledata.download();'
# run complete import check
%pyproject_check_import bokeh
# skip pytests: pypi doesn't include necessary code bits, but we can't use github tar because it doesn't include the necessary js etc.
%else
# skip tests that want to download things
%pyproject_check_import bokeh -e *airport_routes* -e *webdriver* -e *sampledata* -e *bokeh_autodoc* -e *sphinxext*
%endif

%files -n python3-bokeh -f %{pyproject_files}
%{_bindir}/bokeh

%changelog
%autochangelog