From d751f8b93af6d10c53773d203b06e3b9580bc60e Mon Sep 17 00:00:00 2001
From: sfc-gh-bnisco <178842601+sfc-gh-bnisco@users.noreply.github.com>
Date: Tue, 2 Dec 2025 19:20:34 +0000
Subject: [PATCH 1/2] Update Bokeh to 3.8.1 and release 3.8.1
---
e2e_playwright/test-requirements.txt | 4 ++--
pyproject.toml | 4 ++--
streamlit_bokeh/__init__.py | 2 +-
streamlit_bokeh/frontend/index.html | 12 ++++++------
streamlit_bokeh/frontend/package.json | 2 +-
.../bokeh/{bokeh-3.8.0.min.js => bokeh-3.8.1.min.js} | 4 ++--
...bokeh-api-3.8.0.min.js => bokeh-api-3.8.1.min.js} | 2 +-
.../{bokeh-gl-3.8.0.min.js => bokeh-gl-3.8.1.min.js} | 2 +-
...thjax-3.8.0.min.js => bokeh-mathjax-3.8.1.min.js} | 2 +-
...tables-3.8.0.min.js => bokeh-tables-3.8.1.min.js} | 2 +-
...dgets-3.8.0.min.js => bokeh-widgets-3.8.1.min.js} | 2 +-
streamlit_bokeh/frontend/src/v2/loaders.ts | 12 ++++++------
streamlit_bokeh/pyproject.toml | 2 +-
13 files changed, 26 insertions(+), 26 deletions(-)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-3.8.0.min.js => bokeh-3.8.1.min.js} (99%)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-api-3.8.0.min.js => bokeh-api-3.8.1.min.js} (99%)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-gl-3.8.0.min.js => bokeh-gl-3.8.1.min.js} (99%)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-mathjax-3.8.0.min.js => bokeh-mathjax-3.8.1.min.js} (99%)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-tables-3.8.0.min.js => bokeh-tables-3.8.1.min.js} (99%)
rename streamlit_bokeh/frontend/public/bokeh/{bokeh-widgets-3.8.0.min.js => bokeh-widgets-3.8.1.min.js} (99%)
diff --git a/e2e_playwright/test-requirements.txt b/e2e_playwright/test-requirements.txt
index 976688d..3dd7b13 100644
--- a/e2e_playwright/test-requirements.txt
+++ b/e2e_playwright/test-requirements.txt
@@ -11,7 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
-bokeh==3.8.0
+bokeh==3.8.1
bokeh-sampledata
pixelmatch>=0.3.0,<1.0.0
playwright==1.49.*
@@ -20,4 +20,4 @@ pytest-playwright>=0.3.3
pytest-xdist
scipy
testfixtures
-dist/streamlit_bokeh-3.8.0-py3-none-any.whl
+dist/streamlit_bokeh-3.8.1-py3-none-any.whl
diff --git a/pyproject.toml b/pyproject.toml
index 16220ea..891be80 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -18,7 +18,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "streamlit-bokeh"
-version = "3.8.0"
+version = "3.8.1"
description = "Streamlit component that allows you to render Bokeh charts"
readme = "README.md"
license = "Apache-2.0"
@@ -38,7 +38,7 @@ classifiers = [
"Programming Language :: Python :: 3.13",
"Topic :: Scientific/Engineering :: Visualization",
]
-dependencies = ["streamlit>=1.26", "bokeh==3.8.0"]
+dependencies = ["streamlit>=1.26", "bokeh==3.8.1"]
[project.optional-dependencies]
devel = [
diff --git a/streamlit_bokeh/__init__.py b/streamlit_bokeh/__init__.py
index 7d620a7..39b1f84 100644
--- a/streamlit_bokeh/__init__.py
+++ b/streamlit_bokeh/__init__.py
@@ -62,7 +62,7 @@
__version__ = importlib.metadata.version("streamlit_bokeh")
-REQUIRED_BOKEH_VERSION = "3.8.0"
+REQUIRED_BOKEH_VERSION = "3.8.1"
def streamlit_bokeh(
diff --git a/streamlit_bokeh/frontend/index.html b/streamlit_bokeh/frontend/index.html
index b7f433e..f21ae44 100644
--- a/streamlit_bokeh/frontend/index.html
+++ b/streamlit_bokeh/frontend/index.html
@@ -44,12 +44,12 @@
crossorigin
/>
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/streamlit_bokeh/frontend/package.json b/streamlit_bokeh/frontend/package.json
index 07c8c35..63c50b1 100644
--- a/streamlit_bokeh/frontend/package.json
+++ b/streamlit_bokeh/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "streamlit_bokeh",
"license": "Apache-2.0",
- "version": "3.8.0",
+ "version": "3.8.1",
"private": true,
"dependencies": {
"@streamlit/component-v2-lib": "^0.1.0",
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.1.min.js
index dfd99c6..060fda7 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-3.8.1.min.js
@@ -160,7 +160,7 @@
function _(t,_,n,o,r){o();t(1).__exportStar(t(2),n),t(91)},
function _(e,t,r,n,o){n(),r.__extends=i,r.__rest=c,r.__decorate=s,r.__param=u,r.__esDecorate=f,r.__runInitializers=l,r.__propKey=p,r.__setFunctionName=_,r.__metadata=y,r.__awaiter=d,r.__generator=h,r.__exportStar=v,r.__values=b,r.__read=w,r.__spread=m,r.__spreadArrays=g,r.__spreadArray=O,r.__await=j,r.__asyncGenerator=P,r.__asyncDelegator=S,r.__asyncValues=E,r.__makeTemplateObject=x,r.__importStar=D,r.__importDefault=R,r.__classPrivateFieldGet=k,r.__classPrivateFieldSet=A,r.__classPrivateFieldIn=F,r.__addDisposableResource=C,r.__disposeResources=G,r.__rewriteRelativeImportExtension=z;var a=function(e,t){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},a(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}a(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}function c(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o=0;c--)(o=e[c])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i}function u(e,t){return function(r,n){t(r,n,e)}}function f(e,t,r,n,o,a){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var c,s=n.kind,u="getter"===s?"get":"setter"===s?"set":"value",f=!t&&e?n.static?e:e.prototype:null,l=t||(f?Object.getOwnPropertyDescriptor(f,n.name):{}),p=!1,_=r.length-1;_>=0;_--){var y={};for(var d in n)y[d]="access"===d?{}:n[d];for(var d in n.access)y.access[d]=n.access[d];y.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(i(e||null))};var h=(0,r[_])("accessor"===s?{get:l.get,set:l.set}:l[u],y);if("accessor"===s){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(c=i(h.get))&&(l.get=c),(c=i(h.set))&&(l.set=c),(c=i(h.init))&&o.unshift(c)}else(c=i(h))&&("field"===s?o.unshift(c):l[u]=c)}f&&Object.defineProperty(f,n.name,l),p=!0}function l(e,t,r){for(var n=arguments.length>2,o=0;o0&&o[o.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function w(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function m(){for(var e=[],t=0;t1||c(e,t)}))},t&&(n[e]=t(n[e])))}function c(e,t){try{(r=o[e](t)).value instanceof j?Promise.resolve(r.value.v).then(s,u):f(a[0][2],r)}catch(e){f(a[0][3],e)}var r}function s(e){c("next",e)}function u(e){c("throw",e)}function f(e,t){e(t),a.shift(),a.length&&c(a[0][0],a[0][1])}}function S(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:j(e[n](t)),done:!1}:o?o(t):t}:o}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=b(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}}function x(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}r.__assign=function(){return r.__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;rthis._config=e))}constructor(e={}){this._notified_idle=!1,this._hold_models_freeze=!1,this._recompute_timer=null,s.documents.push(this),this._init_timestamp=Date.now(),this._resolver=e.resolver??new c.ModelResolver(n.default_resolver),this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._new_models=new Set,this._all_models_freeze_count=0,this._callbacks=new Map,this._document_callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new j(this),this.idle=new u.Signal0(this,"idle"),this._idle_roots=new WeakSet,this._interactive_timestamp=null,this._interactive_plot=null,this._recompute_timeout=e.recompute_timeout??3e4,null!=e.roots&&this._add_roots(...e.roots),this.on_message("bokeh_event",(e=>{(0,b.assert)(e instanceof D.ModelEvent),this.event_manager.trigger(e)})),this.config=new z.DocumentConfig}[g.equals](e,t){return this==e}get all_models(){return new Set(this._all_models.values())}get is_idle(){for(const e of this.roots())if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){!this._notified_idle&&this.roots().includes(e)&&(this._idle_roots.add(e),this.is_idle&&(r.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new E.DocumentReady),this.idle.emit(),this._notified_idle=!0))}clear({sync:e}={}){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0],{sync:e});this._config=void 0}finally{this._pop_all_models_freeze()}}interactive_start(e,t=null){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new E.LODStart)),this._interactive_finalize=t,this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&(this._interactive_plot.trigger_event(new E.LODEnd),null!=this._interactive_finalize&&this._interactive_finalize()),this._interactive_plot=null,this._interactive_timestamp=null,this._interactive_finalize=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error("Attempted to overwrite a document with itself");e.clear({sync:!1});const{config:t}=this,s=(0,p.copy)(this._roots);this.clear({sync:!1});for(const e of[...s,t])if(null!=e.document)throw new Error(`Somehow we didn't detach ${e}`);if(0!=this._all_models.size)throw new Error(`this._all_models still had stuff in it: ${this._all_models}`);e.config=t;for(const t of s)e.add_root(t);e.set_title(this._title)}freeze_all_models(e){this._push_all_models_freeze();try{e()}finally{this._pop_all_models_freeze()}}_push_all_models_freeze(){this._hold_models_freeze||(this._all_models_freeze_count+=1)}_pop_all_models_freeze(){this._hold_models_freeze||(this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models())}_cancel_recompute_all_models(){null!=this._recompute_timer&&(clearTimeout(this._recompute_timer),this._recompute_timer=null)}_schedule_recompute_all_models(){const e=this._recompute_timeout;isNaN(e)||e<=0?this._recompute_all_models():isFinite(e)&&(this._cancel_recompute_all_models(),this._recompute_timer=setTimeout((()=>{this._recompute_all_models()}),e))}_recompute_all_models(){this._cancel_recompute_all_models();let e=new Set;for(const t of this.all_roots)e=w.union(e,t.references());const t=new Set(this._all_models.values()),s=w.difference(t,e),o=w.difference(e,t),i=new Map;for(const t of e)i.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this),this._new_models.add(e);this._all_models=i}partially_update_all_models(e){const t=new Set;a.HasProps._value_record_references(e,t,{recursive:!1});for(const e of t)this._all_models.has(e.id)||(e.attach_document(this),this._new_models.add(e),this._all_models.set(e.id,e));this._schedule_recompute_all_models()}get all_roots(){const e=[...this._roots];return null!=this._config&&e.push(this._config),e}roots(){return this._roots}_add_roots(...e){if(0==(e=e.filter((e=>!this._roots.includes(e)))).length)return!1;this._push_all_models_freeze();try{this._roots.push(...e)}finally{this._pop_all_models_freeze()}return!0}_remove_root(e){const t=this._roots.indexOf(e);if(t<0)return!1;this._push_all_models_freeze();try{this._roots.splice(t,1)}finally{this._pop_all_models_freeze()}return!0}_set_title(e){const t=e!=this._title;return t&&(this._title=e),t}add_root(e,{sync:t}={}){if(this._add_roots(e)){const s=new M.RootAddedEvent(this,e);s.sync=t??!0,this._trigger_on_change(s)}}remove_root(e,{sync:t}={}){if(this._remove_root(e)){const s=new M.RootRemovedEvent(this,e);s.sync=t??!0,this._trigger_on_change(s)}}set_title(e,{sync:t}={}){if(this._set_title(e)){const s=new M.TitleChangedEvent(this,e);s.sync=t??!0,this._trigger_on_change(s)}}title(){return this._title}get_model_by_id(e){return this._all_models.get(e)??null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof k.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){this._message_callbacks.get(e)?.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof M.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_trigger_on_event(e){const t=this._document_callbacks.get(e.event_name);if(null!=t)for(const s of t)(0,y.execute)(s,this,e)}on_event(e,...t){const s=(0,f.isString)(e)?e:e.prototype.event_name,o=this._document_callbacks.get(s)??[],i=t;this._document_callbacks.set(s,[...o,...i])}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=new h.Serializer({include_defaults:e}),s=t.encode(this.config),o=t.encode(this._roots);return{version:l.version,title:this._title,config:s,roots:o}}static from_json_string(e,t){const s=JSON.parse(e);return C.from_json(s,t)}static _handle_version(e){null==e.version&&r.logger.warn("'version' field is missing");const t=e.version??"0.0.0",s=m.Version.from(t),o=m.Version.from(l.version),i=`new document using Bokeh ${t} and BokehJS ${l.version}`;(0,g.is_equal)(s,o)?r.logger.debug(i):r.logger.warn(`Bokeh/BokehJS version mismatch: ${i}`)}static from_json(e,t){r.logger.debug("Creating Document from JSON"),C._handle_version(e);const s=new c.ModelResolver(n.default_resolver);if(null!=e.defs){new d.Deserializer(s).decode(e.defs)}const o=new C({resolver:s});o._push_all_models_freeze();const i=e=>t?.push(e);o.on_change(i,!0);const _=new d.Deserializer(s,o._all_models,(e=>e.attach_document(o))),l=_.decode(e.config);(0,b.assert)(l instanceof z.DocumentConfig||null==l),null!=l&&(o.config=l);const a=_.decode(e.roots),h=null!=e.callbacks?_.decode(e.callbacks):{};o.remove_on_change(i);for(const[e,t]of(0,v.entries)(h))o.on_event(e,...t);for(const e of a)o.add_root(e);return null!=e.title&&o.set_title(e.title),o._pop_all_models_freeze(),o}replace_with_json(e){C.from_json(e).destructively_move(this)}create_json_patch(e){for(const t of e)if(t.document!=this)throw new Error("Cannot create a patch using events from a different document");const t=new Map;for(const e of this._all_models.values())this._new_models.has(e)||t.set(e,e.ref());const s={events:new h.Serializer({references:t,binary:!0}).encode(e)};return this._new_models.clear(),s}apply_json_patch(e,t=new Map){const{_hold_models_freeze:s}=this;this._hold_models_freeze=!0;try{this._apply_json_patch(e,t)}finally{this._hold_models_freeze=s}this._schedule_recompute_all_models()}_apply_json_patch(e,t=new Map){const s=new d.Deserializer(this._resolver,this._all_models,(e=>{e.attach_document(this),this._new_models.add(e),this._all_models.set(e.id,e)})).decode(e.events,t);for(const e of s)switch(e.kind){case"MessageSent":{const{msg_type:t,msg_data:s}=e;this._trigger_on_message(t,s);break}case"ModelChanged":{const{model:t,attr:s,new:o}=e;t.setv({[s]:o},{sync:!1});break}case"ColumnDataChanged":{const{model:t,attr:s,data:o,cols:i}=e;if(null!=i){const e=(0,v.dict)(o),i=(0,v.dict)(t.property(s).get_value());for(const[t,s]of i)e.has(t)||e.set(t,s)}t.setv({data:o},{sync:!1,check_eq:!1});break}case"ColumnsStreamed":{const{model:t,attr:s,data:o,rollover:i}=e,_=t.property(s);t.stream_to(_,o,i,{sync:!1});break}case"ColumnsPatched":{const{model:t,attr:s,patches:o}=e,i=t.property(s);t.patch_to(i,o,{sync:!1});break}case"RootAdded":this.add_root(e.model,{sync:!1});break;case"RootRemoved":this.remove_root(e.model,{sync:!1});break;case"TitleChanged":this.set_title(e.title,{sync:!1});break;default:throw new Error(`unknown patch event type '${e.kind}'`)}}}s.Document=C,C.__name__="Document"},
@@ -422,7 +422,7 @@ function _(e,t,n,s,o){var i;s();const c=e(252),r=e(25);class a extends c.Filter{
function _(t,r,a,e,i){e(),i("BasicTickFormatter",t(209).BasicTickFormatter),i("CategoricalTickFormatter",t(257).CategoricalTickFormatter),i("DatetimeTickFormatter",t(258).DatetimeTickFormatter),i("CustomJSTickFormatter",t(263).CustomJSTickFormatter),i("LogTickFormatter",t(264).LogTickFormatter),i("MercatorTickFormatter",t(265).MercatorTickFormatter),i("NumeralTickFormatter",t(266).NumeralTickFormatter),i("PrintfTickFormatter",t(267).PrintfTickFormatter),i("TickFormatter",t(205).TickFormatter),i("TimedeltaTickFormatter",t(268).TimedeltaTickFormatter)},
function _(t,r,o,c,a){c();const e=t(205),n=t(10);class i extends e.TickFormatter{constructor(t){super(t)}doFormat(t,r){return(0,n.copy)(t)}}o.CategoricalTickFormatter=i,i.__name__="CategoricalTickFormatter"},
function _(e,t,s,n,o){var r;n(),s._get_resolution=h,s._mktime=m,s._strftime=d,s._us=f;const i=e(21),l=e(12),c=e(259),u=e(8),_=e(205),a=e(220);function h(e,t){const s=1.1*e*1e3,n=1e3*t;return s=a.ONE_MINUTE?"minsec":"seconds":s=a.ONE_HOUR?"hourmin":"minutes":sparseInt(e,10)))}function d(e,t){const s=(0,c.sprintf)("$1%06d",f(e));return-1==(t=t.replace(/((^|[^%])(%%)*)%f/,s)).indexOf("%")?t:(0,c.datetime)(e,t)}function f(e){let t=Math.round(e/1e3%1*1e6);return e<0&&(t=(1e6+t)%1e6),t}s.resolution_order=["microseconds","milliseconds","seconds","minsec","minutes","hourmin","hours","days","months","years"],s.tm_index_for_resolution={microseconds:0,milliseconds:0,seconds:5,minsec:4,minutes:4,hourmin:3,hours:3,days:0,months:0,years:0};class p extends _.TickFormatter{constructor(e){super(e)}doFormat(e,t,s){if(0==e.length)return[];const n=Math.abs(e[e.length-1]-e[0])/1e3,o=n/(e.length-1),r=(0,u.is_undefined)(s)?h(o,n):s;let i=[];for(const t of e){const e=this._compute_label(t,r);i.push(e)}if(this.hide_repeats&&(i=this._hide_repeating_labels(i)),null==this.context)return i;const l=this._compute_context_labels(e,r);return this._build_full_labels(i,l)}_compute_label(e,t){const n=d(e,this[t]),o=m(e),r=s.resolution_order.indexOf(t);let i=t,l=n;if(this.boundary_scaling){let n=!1,c=r,u=t;for(;0==o[s.tm_index_for_resolution[s.resolution_order[c]]]&&(c+=1,c!=s.resolution_order.length);){if(("minsec"==t||"hourmin"==t)&&!n){if("minsec"==t&&0==o[4]&&0!=o[5]||"hourmin"==t&&0==o[3]&&0!=o[4]){u=s.resolution_order[r-1],l=d(e,this[u]);break}n=!0}u=s.resolution_order[c],l=d(e,this[u])}i=u}const{strip_leading_zeros:c}=this;if((0,u.isBoolean)(c)&&c||(0,u.isArray)(c)&&c.includes(i)){const e=l.replace(/^0+/g,"");return e==l||Number.isInteger(Number(e[0]))?e:`0${e}`}return l}_compute_context_labels(e,t){const{context:s}=this;(0,l.assert)(null!=s);const n=[];if((0,u.isString)(s))for(const t of e)n.push(d(t,s));else n.push(...s.doFormat(e,{loc:0},t));const o=this.context_which,r=n.length;for(let e=0;e""===e)))return e;for(let o=0;o{switch(s){case"above":return`${i}\n${r}`;case"below":return`${r}\n${i}`;case"left":return""==i?r:`${i} ${r}`;case"right":return""==i?r:`${r} ${i}`}})();n.push(l)}return n}_hide_repeating_labels(e){if(e.length<=1)return e;const t=[e[0]];let s=0;for(let n=1;n({microseconds:[o,"%fus"],milliseconds:[o,"%3Nms"],seconds:[o,"%Ss"],minsec:[o,":%M:%S"],minutes:[o,":%M"],hourmin:[o,"%H:%M"],hours:[o,"%Hh"],days:[o,"%m/%d"],months:[o,"%m/%Y"],years:[o,"%Y"],strip_leading_zeros:[s(e,l(i.ResolutionType)),!1],boundary_scaling:[e,!0],hide_repeats:[e,!1],context:[t(s(o,n(r))),null],context_which:[i.ContextWhich,"start"],context_location:[i.Location,"below"]})))},
-function _(r,e,n,t,i){t(),n.datetime=g,n.sprintf=h,n.basic_formatter=b,n.get_formatter=T,n._get_column_value=M,n.get_value=$,n.replace_placeholders_html=function(r,e,t,i,u={}){const s=E(r,((r,s,a,l,c)=>{const o=$(r,s,e,t,u);if("safe"==a){const r=A.safe(o);return r instanceof I?r.html:(0,_.escape)(`${r}`)}{const r=(()=>{if(null==o)return n.MISSING;if((0,m.isNumber)(o)&&isNaN(o))return"NaN";return`${T(c,a,i)(o,a??"",u)}`})();return(0,_.escape)(r)}})),a=new DOMParser;return[...a.parseFromString(s,"text/html").body.childNodes]},n.replace_placeholders=function(r,e,t,i,u={},s){let a,l;(0,m.isString)(r)?(a=r,l=!1):(a=r.html,l=!0);if(a=a.replace(/@\$name/g,(r=>`@{${u.name}}`)),a=E(a,((r,a,c,o,f)=>{const N=$(r,a,e,t,u);if("safe"==c)return l=!0,null==N?n.MISSING:(0,m.isNumber)(N)&&isNaN(N)?"NaN":`${N}`;{const r=(()=>{if(null==N)return n.MISSING;if((0,m.isNumber)(N)&&isNaN(N))return"NaN";return`${T(f,c,i)(N,c??"",u)}`})();return null!=s?s(r):r}})),l){return[...(new DOMParser).parseFromString(a,"text/html").body.childNodes]}return a},n.process_placeholders=E;const u=r(1),s=u.__importStar(r(260)),a=r(261),l=u.__importDefault(r(262)),c=r(20),o=r(9),f=r(31),m=r(8),N=r(43),_=r(41),p=r(12),{abs:S}=Math;n.DEFAULT_FORMATTERS={raw:(r,e,n)=>(0,N.to_string)(r),basic:(r,e,n)=>b(r,e,n),numeral:(r,e,n)=>s.format(r,e),datetime:(r,e,n)=>g(r,e),printf:(r,e,n)=>h(e,r)};class d{}function g(r,e){return(0,m.isNumber)(r)&&isFinite(r)?(0,l.default)(r,e):"NaN"}function h(r,...e){return(0,a.sprintf)(r,...e)}function b(r,e,n){if((0,m.isNumber)(r)){return h(Number.isInteger(r)?"%d":.1((0,p.assert)(0==e.length),null==r?n.MISSING:(0,m.isNumber)(r)&&isNaN(r)?"NaN":new I(`${r}`))};const F=/((?:[$@][\p{Letter}\p{Number}_]+)|(?:[$@]\{(?:[^{}]+)\}))(?:\{([^{}]+)\})?/gu;function E(r,e){let t=0;return r.replace(F,((r,i,u)=>{const s=i[0],a=i.substring(1).replace(/^{/,"").replace(/}$/,"").trim();return e(s,a,u,t++,i)??n.MISSING}))}},
+function _(r,e,n,t,i){t(),n.datetime=h,n.sprintf=g,n.basic_formatter=T,n.get_formatter=b,n._get_column_value=M,n.get_value=$,n.replace_placeholders_html=function(r,e,t,i,u={}){const s=E(r,((r,s,a,l,o)=>{const c=$(r,s,e,t,u);if("safe"==a){const r=A.safe(c);return r instanceof I?r.html:(0,_.escape)(`${r}`)}{const r=(()=>{if(null==c)return n.MISSING;if((0,m.isNumber)(c)&&isNaN(c))return"NaN";return`${b(o,a,i)(c,a??"",u)}`})();return(0,_.escape)(r)}})),a=new DOMParser;return[...a.parseFromString(s,"text/html").body.childNodes]},n.replace_placeholders=function(r,e,t,i,u={},s){let a,l;(0,m.isString)(r)?(a=r,l=!1):(a=r.html,l=!0);if(a=E(a,((r,a,o,c,f)=>{const N=$(r,a,e,t,u);if("safe"==o)return l=!0,null==N?n.MISSING:(0,m.isNumber)(N)&&isNaN(N)?"NaN":`${N}`;{const r=(()=>{if(null==N)return n.MISSING;if((0,m.isNumber)(N)&&isNaN(N))return"NaN";return`${b(f,o,i)(N,o??"",u)}`})();return null!=s?s(r):r}})),l){return[...(new DOMParser).parseFromString(a,"text/html").body.childNodes]}return a},n.process_placeholders=E;const u=r(1),s=u.__importStar(r(260)),a=r(261),l=u.__importDefault(r(262)),o=r(20),c=r(9),f=r(31),m=r(8),N=r(43),_=r(41),p=r(12),{abs:S}=Math;n.DEFAULT_FORMATTERS={raw:(r,e,n)=>(0,N.to_string)(r),basic:(r,e,n)=>T(r,e,n),numeral:(r,e,n)=>s.format(r,e),datetime:(r,e,n)=>h(r,e),printf:(r,e,n)=>g(e,r)};class d{}function h(r,e){return(0,m.isNumber)(r)&&isFinite(r)?(0,l.default)(r,e):"NaN"}function g(r,...e){return(0,a.sprintf)(r,...e)}function T(r,e,n){if((0,m.isNumber)(r)){return g(Number.isInteger(r)?"%d":.1((0,p.assert)(0==e.length),null==r?n.MISSING:(0,m.isNumber)(r)&&isNaN(r)?"NaN":new I(`${r}`))};const F=/(@\$|@|\$)((?:[\p{Letter}\p{Number}_]+)|(?:\{(?:[^{}]+)\}))(?:\{([^{}]+)\})?/gu;function E(r,e){let t=0;return r.replace(F,((r,i,u,s)=>{const a=u.replace(/^{/,"").replace(/}$/,"").trim(),l=`${i}${u}`;return e(i,a,s,t++,l)??n.MISSING}))}},
function _(e,n,t,r,i){
/*!
* numbro.js
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.1.min.js
index 17b427c..4945d9f 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-api-3.8.1.min.js
@@ -30,7 +30,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(root, factory) {
- factory(root["Bokeh"], "3.8.0");
+ factory(root["Bokeh"], "3.8.1");
})(this, function(Bokeh, version) {
let define;
return (function(modules, entry, aliases, externals) {
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.1.min.js
index 48212a5..60fd750 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-gl-3.8.1.min.js
@@ -30,7 +30,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(root, factory) {
- factory(root["Bokeh"], "3.8.0");
+ factory(root["Bokeh"], "3.8.1");
})(this, function(Bokeh, version) {
let define;
return (function(modules, entry, aliases, externals) {
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.1.min.js
index 5f3e77e..b2815bd 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-mathjax-3.8.1.min.js
@@ -30,7 +30,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(root, factory) {
- factory(root["Bokeh"], "3.8.0");
+ factory(root["Bokeh"], "3.8.1");
})(this, function(Bokeh, version) {
let define;
return (function(modules, entry, aliases, externals) {
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.1.min.js
index 468c84b..494e49f 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-tables-3.8.1.min.js
@@ -30,7 +30,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(root, factory) {
- factory(root["Bokeh"], "3.8.0");
+ factory(root["Bokeh"], "3.8.1");
})(this, function(Bokeh, version) {
let define;
return (function(modules, entry, aliases, externals) {
diff --git a/streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.0.min.js b/streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.1.min.js
similarity index 99%
rename from streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.0.min.js
rename to streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.1.min.js
index 21bbd8d..cdabff8 100644
--- a/streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.0.min.js
+++ b/streamlit_bokeh/frontend/public/bokeh/bokeh-widgets-3.8.1.min.js
@@ -30,7 +30,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(root, factory) {
- factory(root["Bokeh"], "3.8.0");
+ factory(root["Bokeh"], "3.8.1");
})(this, function(Bokeh, version) {
let define;
return (function(modules, entry, aliases, externals) {
diff --git a/streamlit_bokeh/frontend/src/v2/loaders.ts b/streamlit_bokeh/frontend/src/v2/loaders.ts
index d8cab2d..1598fb9 100644
--- a/streamlit_bokeh/frontend/src/v2/loaders.ts
+++ b/streamlit_bokeh/frontend/src/v2/loaders.ts
@@ -153,12 +153,12 @@ async function ensureBokehCoreLoaded(coreUrl: string, timeoutMs = 10000) {
}
const BOKEH_URLS = {
- core: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-3.8.0.min.js`),
- widgets: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-widgets-3.8.0.min.js`),
- tables: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-tables-3.8.0.min.js`),
- api: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-api-3.8.0.min.js`),
- gl: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-gl-3.8.0.min.js`),
- mathjax: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-mathjax-3.8.0.min.js`),
+ core: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-3.8.1.min.js`),
+ widgets: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-widgets-3.8.1.min.js`),
+ tables: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-tables-3.8.1.min.js`),
+ api: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-api-3.8.1.min.js`),
+ gl: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-gl-3.8.1.min.js`),
+ mathjax: resolveAssetUrl(`${BOKEH_PUBLIC}bokeh-mathjax-3.8.1.min.js`),
}
const PLUGIN_URLS = [
diff --git a/streamlit_bokeh/pyproject.toml b/streamlit_bokeh/pyproject.toml
index 535161d..cf96cf4 100644
--- a/streamlit_bokeh/pyproject.toml
+++ b/streamlit_bokeh/pyproject.toml
@@ -14,7 +14,7 @@
[project]
name = "streamlit-bokeh"
-version = "3.8.0"
+version = "3.8.1"
[[tool.streamlit.component.components]]
name = "streamlit_bokeh"
From cdb4e9db117c426e1baee987d61206a61310986b Mon Sep 17 00:00:00 2001
From: Bob Nisco
Date: Tue, 2 Dec 2025 11:21:27 -0800
Subject: [PATCH 2/2] Trigger workflows to run