diff --git a/.gitignore b/.gitignore index fe3e910..3fad370 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ /bokeh-2.2.1.tar.gz /bokeh-2.3.0.tar.gz -/bokeh-3.6.3.tar.gz diff --git a/bokeh-pr10987-python312-configparser.patch b/bokeh-pr10987-python312-configparser.patch new file mode 100644 index 0000000..43a4737 --- /dev/null +++ b/bokeh-pr10987-python312-configparser.patch @@ -0,0 +1,52 @@ +From 865c54896e6158c1195e5ec8352f300cbf10920f Mon Sep 17 00:00:00 2001 +From: Bryan Van de Ven +Date: Tue, 2 Mar 2021 21:53:55 -0800 +Subject: [PATCH] Bryanv/2 3 1 forwardports (#10987) + +* Add missing comma in example code (#10973) + +* update to versioneer 0.19 (#10969) + +* update to versioneer 0.19 + +* unused loop var + +* Add note re. Chrome/MacOS bug (#10964) + +* Add note re. Chrome/MacOS bug + +* Make wording consistent with preceding paragraph + +* Link to GH issue + +* Add information about Bokeh channel for installation (#10953) + +* Add info about Bokeh channel on Anaconda + +* Add info on new releases + +Co-authored-by: Timo Cornelius Metzger +--- + bokeh/_version.py | 65 ++--- + bokeh/models/widgets/inputs.py | 8 + + .../source/docs/first_steps/first_steps_9.rst | 2 +- + .../source/docs/first_steps/installation.rst | 8 + + versioneer.py | 234 ++++++++++-------- + 5 files changed, 188 insertions(+), 129 deletions(-) + +diff --git a/versioneer.py b/versioneer.py +index 60e4efb714f..eaf1aba67bd 100644 +--- a/versioneer.py ++++ b/versioneer.py +@@ -337,9 +331,9 @@ def get_config_from_root(root): + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . + setup_cfg = os.path.join(root, "setup.cfg") +- parser = configparser.SafeConfigParser() ++ parser = configparser.ConfigParser() + with open(setup_cfg, "r") as f: +- parser.readfp(f) ++ parser.read_file(f) + VCS = parser.get("versioneer", "VCS") # mandatory + + def get(parser, name): diff --git a/bokeh-pr11174-replace-jinja2-markup.patch b/bokeh-pr11174-replace-jinja2-markup.patch new file mode 100644 index 0000000..8e6f9a8 --- /dev/null +++ b/bokeh-pr11174-replace-jinja2-markup.patch @@ -0,0 +1,131 @@ +From 7047c6a90535564c9d05121fc8a095aef1de3c21 Mon Sep 17 00:00:00 2001 +From: kernc +Date: Wed, 21 Apr 2021 17:29:22 +0200 +Subject: [PATCH] Replace deprecated jinja2.Markup with jinja2.tojson (#11174) + +* Replace deprecated jinja2.Markup -> markupsafe.Markup + +* Expose |tojson as |json. Bump Jinja2 >=2.9 + +* Replace |json filter with jinja's |tojson throughout + +* Fix test_autoload_template_has_changed +--- + _setup_support.py | 2 +- + bokeh/core/_templates/autoload_js.js | 14 +++++++------- + bokeh/core/_templates/autoload_nb_js.js | 6 +++--- + bokeh/core/templates.py | 4 +--- + tests/unit/bokeh/core/test_templates.py | 2 +- + 5 files changed, 13 insertions(+), 15 deletions(-) + +diff --git a/bokeh/core/_templates/autoload_js.js b/bokeh/core/_templates/autoload_js.js +index 792a74c7cc2..d15ea9778e6 100644 +--- a/bokeh/core/_templates/autoload_js.js ++++ b/bokeh/core/_templates/autoload_js.js +@@ -20,7 +20,7 @@ calls it with the rendered model. + return new Date(); + } + +- var force = {{ force|default(False)|json }}; ++ var force = {{ force|default(False)|tojson }}; + + if (typeof root._bokeh_onload_callbacks === "undefined" || force === true) { + root._bokeh_onload_callbacks = []; +@@ -32,7 +32,7 @@ calls it with the rendered model. + + {% block autoload_init %} + {%- if elementid -%} +- var element = document.getElementById({{ elementid|json }}); ++ var element = document.getElementById({{ elementid|tojson }}); + if (element == null) { + console.warn("Bokeh: autoload.js configured with elementid '{{ elementid }}' but no matching script tag was found.") + } +@@ -91,7 +91,7 @@ calls it with the rendered model. + document.body.appendChild(element); + } + +- const hashes = {{ bundle.hashes|json }}; ++ const hashes = {{ bundle.hashes|tojson }}; + + for (let i = 0; i < js_urls.length; i++) { + const url = js_urls[i]; +@@ -110,17 +110,17 @@ calls it with the rendered model. + } + + {% if bundle %} +- var js_urls = {{ bundle.js_urls|json }}; +- var css_urls = {{ bundle.css_urls|json }}; ++ var js_urls = {{ bundle.js_urls|tojson }}; ++ var css_urls = {{ bundle.css_urls|tojson }}; + {% else %} +- var js_urls = {{ js_urls|json }}; +- var css_urls = {{ css_urls|json }}; ++ var js_urls = {{ js_urls|tojson }}; ++ var css_urls = {{ css_urls|tojson }}; + {% endif %} + + var inline_js = [ + {%- for css in (bundle.css_raw if bundle else css_raw) %} + function(Bokeh) { +- inject_raw_css({{ css|json }}); ++ inject_raw_css({{ css|tojson }}); + }, + {%- endfor %} + {%- for js in (bundle.js_raw if bundle else js_raw) %} +diff --git a/bokeh/core/_templates/autoload_nb_js.js b/bokeh/core/_templates/autoload_nb_js.js +index 2c75850b2b4..ca96a59cd2d 100644 +--- a/bokeh/core/_templates/autoload_nb_js.js ++++ b/bokeh/core/_templates/autoload_nb_js.js +@@ -132,7 +132,7 @@ + + {% block autoload_init %} + if (typeof (root._bokeh_timeout) === "undefined" || force === true) { +- root._bokeh_timeout = Date.now() + {{ timeout|default(0)|json }}; ++ root._bokeh_timeout = Date.now() + {{ timeout|default(0)|tojson }}; + root._bokeh_failed_load = false; + } + +@@ -153,7 +153,7 @@ + ""}}; + + function display_loaded() { +- var el = document.getElementById({{ elementid|json }}); ++ var el = document.getElementById({{ elementid|tojson }}); + if (el != null) { + el.textContent = "BokehJS is loading..."; + } +@@ -181,7 +181,7 @@ + console.log("Bokeh: BokehJS failed to load within specified timeout."); + root._bokeh_failed_load = true; + } else if (force !== true) { +- var cell = $(document.getElementById({{ elementid|json }})).parents('.cell').data().cell; ++ var cell = $(document.getElementById({{ elementid|tojson }})).parents('.cell').data().cell; + cell.output_area.append_execute_result(NB_LOAD_WARNING) + } + {% endblock %} +diff --git a/bokeh/core/templates.py b/bokeh/core/templates.py +index 10344ecaf7d..c7cd25ea7f2 100644 +--- a/bokeh/core/templates.py ++++ b/bokeh/core/templates.py +@@ -36,12 +36,11 @@ + #----------------------------------------------------------------------------- + + # Standard library imports +-import json + import sys + from os.path import dirname, join + + # External imports +-from jinja2 import Environment, FileSystemLoader, Markup ++from jinja2 import Environment, FileSystemLoader + + #----------------------------------------------------------------------------- + # Globals and constants +@@ -86,7 +85,6 @@ def get_env(): + #----------------------------------------------------------------------------- + + _env = get_env() +-_env.filters['json'] = lambda obj: Markup(json.dumps(obj)) + + #----------------------------------------------------------------------------- + # General API diff --git a/python-bokeh.spec b/python-bokeh.spec index 4063420..7edc810 100644 --- a/python-bokeh.spec +++ b/python-bokeh.spec @@ -12,8 +12,8 @@ anyone who would like to quickly and easily make interactive plots, dashboards, and data applications.} Name: python-%{pypi_name} -Version: 3.6.3 -Release: 3%{?dist} +Version: 2.3.0 +Release: 24%{?dist} Summary: Interactive plots and applications in the browser from Python # License breakdown: licensecheck -r . | sed '/UNKNOWN/ d' | sort -t ':' -k 2 @@ -66,6 +66,12 @@ URL: https://github.com/bokeh/bokeh Source0: %pypi_source # Read package-lock.json and general list of bundled runtime libraries their versions Source1: parse-deps.py +# From https://github.com/bokeh/bokeh/commit/865c54896e6158c1195e5ec8352f300cbf10920f +# https://github.com/bokeh/bokeh/pull/10987 +Patch0: bokeh-pr10987-python312-configparser.patch +# https://github.com/bokeh/bokeh/commit/7047c6a90535564c9d05121fc8a095aef1de3c21 +# https://github.com/bokeh/bokeh/pull/11174 +Patch1: bokeh-pr11174-replace-jinja2-markup.patch BuildArch: noarch @@ -84,53 +90,79 @@ BuildRequires: python3-setuptools # MIT Provides: bundled(nodejs-@bokeh/numbro) = 1.6.2 # MIT -Provides: bundled(nodejs-@bokeh/slickgrid) = 2.4.4103 +Provides: bundled(nodejs-@bokeh/slickgrid) = 2.4.2701 # MIT -Provides: bundled(nodejs-@types/jquery) = 3.5.29 +Provides: bundled(nodejs-@types/jquery) = 3.5.1 # MIT -Provides: bundled(nodejs-@types/sizzle) = 2.3.8 +Provides: bundled(nodejs-@types/sizzle) = 2.3.2 # MIT -Provides: bundled(nodejs-@types/slickgrid) = 2.1.40 +Provides: bundled(nodejs-@types/slickgrid) = 2.1.30 # MIT -Provides: bundled(nodejs-choices.js) = 10.2.0 -# MIT -Provides: bundled(nodejs-deepmerge) = 4.3.1 -# MIT -Provides: bundled(nodejs-esm) = 3.2.25 +Provides: bundled(nodejs-choices.js) = 9.0.1 # ISC -Provides: bundled(nodejs-flatbush) = 4.4.0 +Provides: bundled(nodejs-d) = 1.0.1 # MIT -Provides: bundled(nodejs-flatpickr) = 4.6.13 +Provides: bundled(nodejs-deepmerge) = 4.2.2 # ISC -Provides: bundled(nodejs-flatqueue) = 2.0.3 +Provides: bundled(nodejs-es5-ext) = 0.10.53 +# MIT +Provides: bundled(nodejs-es6-iterator) = 2.0.3 +# MIT +Provides: bundled(nodejs-es6-map) = 0.1.5 +# MIT +Provides: bundled(nodejs-es6-promise) = 4.2.8 +# MIT +Provides: bundled(nodejs-es6-set) = 0.1.5 +# ISC +Provides: bundled(nodejs-es6-symbol) = 3.1.3 +# ISC +Provides: bundled(nodejs-es6-weak-map) = 2.0.3 +# MIT +Provides: bundled(nodejs-event-emitter) = 0.3.5 +# ISC +Provides: bundled(nodejs-ext) = 1.4.0 +# ISC +Provides: bundled(nodejs-flatbush) = 3.3.0 +# MIT +Provides: bundled(nodejs-flatpickr) = 4.6.3 +# ISC +Provides: bundled(nodejs-flatqueue) = 1.2.1 # ASL 2.0 -Provides: bundled(nodejs-fuse.js) = 6.6.2 +Provides: bundled(nodejs-fuse.js) = 3.6.1 # MIT -Provides: bundled(nodejs-jquery-ui) = 1.13.2 +Provides: bundled(nodejs-hammerjs) = 2.0.8 # MIT -Provides: bundled(nodejs-jquery) = 3.7.1 -# ASL 2.0 -Provides: bundled(nodejs-mathjax-full) = 3.2.2 -# ASL 2.0 -Provides: bundled(nodejs-mhchemparser) = 4.2.1 +Provides: bundled(nodejs-jquery-ui) = 1.12.1 # MIT -Provides: bundled(nodejs-nouislider) = 15.7.1 +Provides: bundled(nodejs-jquery) = 3.5.1 # MIT -Provides: bundled(nodejs-proj4) = 2.11.0 +Provides: bundled(nodejs-js-tokens) = 4.0.0 # MIT -Provides: bundled(nodejs-regl) = 2.1.0 +Provides: bundled(nodejs-loose-envify) = 1.4.0 # MIT -Provides: bundled(nodejs-redux) = 4.2.1 +Provides: bundled(nodejs-mgrs) = 1.0.0 +# ISC +Provides: bundled(nodejs-next-tick) = 1.0.0 +# MIT +Provides: bundled(nodejs-nouislider) = 14.6.0 +# MIT +Provides: bundled(nodejs-proj4) = 2.6.2 +# MIT +Provides: bundled(nodejs-redux) = 4.0.5 # BSD -Provides: bundled(nodejs-sprintf-js) = 1.1.4 +Provides: bundled(nodejs-sprintf-js) = 1.1.2 +# MIT +Provides: bundled(nodejs-symbol-observable) = 1.2.0 # MIT Provides: bundled(nodejs-timezone) = 1.0.23 # BSD -Provides: bundled(nodejs-tslib) = 2.7.0 +Provides: bundled(nodejs-tslib) = 1.13.0 +# ISC +Provides: bundled(nodejs-type) = 1.2.0 # MIT Provides: bundled(nodejs-underscore.template) = 0.1.7 # MIT -Provides: bundled(nodejs-wkt-parser) = 1.3.3 +Provides: bundled(nodejs-wkt-parser) = 1.2.4 # Optional deps # https://docs.bokeh.org/en/latest/docs/installation.html#installation @@ -169,8 +201,11 @@ BuildRequires: %{py3_dist typing_extensions} >= 3.7.4 %prep %autosetup -n %{pypi_name}-%{version} -p1 rm -rf %{pypi_name}.egg-info -# Add to generate correctly egg-info -sed -i 's/dynamic = \["version"\]/version = "%{version}"'/ pyproject.toml + +# Replace `np.bool8` with `np.bool_` for NumPy 2.x. +# This is for `netpyne` failing on the deprecated type alias. +# https://github.com/bokeh/bokeh/pull/12690 +sed -i 's/np\.bool8/np.bool_/g' $(grep -rl 'np\.bool8') %generate_buildrequires %pyproject_buildrequires @@ -183,8 +218,6 @@ sed -i 's/dynamic = \["version"\]/version = "%{version}"'/ pyproject.toml # Remove zero length file rm -f %{buildroot}/%{python3_sitelib}/bokeh/server/static/.keep -# Remove static typing information generated files -rm -rf %{buildroot}/%{python3_sitelib}/typings %check %if %{with tests} @@ -201,15 +234,6 @@ rm -rf %{buildroot}/%{python3_sitelib}/typings %{python3_sitelib}/%{pypi_name} %changelog -* Thu Jul 16 2026 Fedora Release Engineering - 3.6.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Thu Jun 04 2026 Python Maint - 3.6.3-2 -- Rebuilt for Python 3.15 - -* Mon Jan 26 2026 Federico Pellegrin - 3.6.3-1 -- Bump to 3.6.3 - * Fri Jan 16 2026 Federico Pellegrin - 2.3.0-24 - Use new Python macros in spec file (rhbz#2377489) diff --git a/sources b/sources index 785bf62..b2c48ea 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bokeh-3.6.3.tar.gz) = 3e5d98426cd317f77f1c0c12d029138bea022c9308c238713824828fabb32132c218574eefbbe3b844630faa540439292e8af07e40c52019173a220475c2e4c0 +SHA512 (bokeh-2.3.0.tar.gz) = 9e584810ffd1cc66b2c97ffbd527cb0fe4a7c63dd0cc9ddae29beae167db9c4333c2323928a91117ac226e401997dd2b2d6f8968c0618c3b40c70c6bac334c95