diff --git a/.github/workflows/check-js-build.yml b/.github/workflows/check-js-build.yml
index e8b041f1c65..d8a7de56250 100644
--- a/.github/workflows/check-js-build.yml
+++ b/.github/workflows/check-js-build.yml
@@ -25,7 +25,7 @@ jobs:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate
- uv pip install jupyter
+ uv pip install jupyterlab
cd js
npm ci
npm run build
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index d079cf5bf8d..00000000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1,3 +0,0 @@
-include LICENSE.txt
-include README.md
-include plotly/package_data/widgetbundle.js
diff --git a/RELEASE.md b/RELEASE.md
index 6f1715445a3..cf9a304373f 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -25,6 +25,8 @@ a link to the plotly.js CHANGELOG.
- Manually update the versions to `X.Y.Z` in the files specified below:
- `pyproject.toml`
- update version
+ - `js/package.json`
+ - update version (`"version"` key at top of file)
- `CHANGELOG.md`
- update version and release date
- finalize changelog entries according to instructions above
diff --git a/js/install.json b/js/install.json
index 7420c284058..072a65f7a6e 100644
--- a/js/install.json
+++ b/js/install.json
@@ -1,9 +1,4 @@
{
- "schemaVersion": 1,
- "packageName": "jupyterlab-plotly",
- "version": "6.0.1",
- "packageManager": "python",
- "jupyterlab": {
- "mimeExtension": "lib/mimeExtension.js"
- }
+ "packageName": "plotly",
+ "packageManager": "python"
}
\ No newline at end of file
diff --git a/js/package-lock.json b/js/package-lock.json
index 3b9ef0407c7..4ba0537dd55 100644
--- a/js/package-lock.json
+++ b/js/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "jupyterlab-plotly",
- "version": "6.0.1",
+ "version": "6.6.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "jupyterlab-plotly",
- "version": "6.0.1",
+ "version": "6.6.1",
"license": "MIT",
"dependencies": {
"@lumino/widgets": "~2.4.0",
diff --git a/js/package.json b/js/package.json
index 56af7ca22ce..eeb61db1581 100644
--- a/js/package.json
+++ b/js/package.json
@@ -1,7 +1,7 @@
{
"name": "jupyterlab-plotly",
"main": "lib/mimeExtension.js",
- "version": "6.0.1",
+ "version": "6.6.0",
"repository": {
"type": "git",
"url": "https://github.com/plotly/plotly.py"
@@ -30,6 +30,7 @@
},
"jupyterlab": {
"mimeExtension": true,
+ "webpackConfig": "./webpack.config.js",
"outputDir": "../plotly/labextension"
}
}
diff --git a/js/webpack.config.js b/js/webpack.config.js
new file mode 100644
index 00000000000..447094ecda2
--- /dev/null
+++ b/js/webpack.config.js
@@ -0,0 +1,8 @@
+module.exports = {
+ // Settings to make output files deterministic
+ optimization: {
+ moduleIds: 'deterministic',
+ chunkIds: 'deterministic',
+ realContentHash: true,
+ },
+};
\ No newline at end of file
diff --git a/plotly/labextension/package.json b/plotly/labextension/package.json
index 039d991004c..1d66fa84019 100644
--- a/plotly/labextension/package.json
+++ b/plotly/labextension/package.json
@@ -1,7 +1,7 @@
{
"name": "jupyterlab-plotly",
"main": "lib/mimeExtension.js",
- "version": "6.0.1",
+ "version": "6.6.0",
"repository": {
"type": "git",
"url": "https://github.com/plotly/plotly.py"
@@ -30,9 +30,10 @@
},
"jupyterlab": {
"mimeExtension": true,
+ "webpackConfig": "./webpack.config.js",
"outputDir": "../plotly/labextension",
"_build": {
- "load": "static/remoteEntry.d9ed7f5a4589fd6764e9.js",
+ "load": "static/remoteEntry.6213e23b3bdd99ae0b34.js",
"mimeExtension": "./mimeExtension"
}
}
diff --git a/plotly/labextension/static/remoteEntry.d9ed7f5a4589fd6764e9.js b/plotly/labextension/static/remoteEntry.6213e23b3bdd99ae0b34.js
similarity index 94%
rename from plotly/labextension/static/remoteEntry.d9ed7f5a4589fd6764e9.js
rename to plotly/labextension/static/remoteEntry.6213e23b3bdd99ae0b34.js
index 2e6f62e6193..1f9002cc0e3 100644
--- a/plotly/labextension/static/remoteEntry.d9ed7f5a4589fd6764e9.js
+++ b/plotly/labextension/static/remoteEntry.6213e23b3bdd99ae0b34.js
@@ -1 +1 @@
-var _JUPYTERLAB;(()=>{"use strict";var e,r,t={681:(e,r,t)=>{var o={"./index":()=>t.e(340).then((()=>()=>t(340))),"./mimeExtension":()=>t.e(340).then((()=>()=>t(340)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,a),n.exports}a.m=t,a.c=o,a.amdO={},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".330950829c5d59eca692.js?v=330950829c5d59eca692",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="jupyterlab-plotly:",a.l=(t,o,n,i)=>{if(e[t])e[t].push(o);else{var l,u;if(void 0!==n)for(var p=document.getElementsByTagName("script"),s=0;s
{l.onerror=l.onload=null,clearTimeout(f);var a=e[t];if(delete e[t],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(o))),r)return r(o)},f=setTimeout(c.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=c.bind(null,l.onerror),l.onload=c.bind(null,l.onload),u&&document.head.appendChild(l)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{a.S={};var e={},r={};a.I=(t,o)=>{o||(o=[]);var n=r[t];if(n||(n=r[t]={}),!(o.indexOf(n)>=0)){if(o.push(n),e[t])return e[t];a.o(a.S,t)||(a.S[t]={});var i=a.S[t],l="jupyterlab-plotly",u=[];return"default"===t&&((e,r,t,o)=>{var n=i[e]=i[e]||{},u=n[r];(!u||!u.loaded&&(1!=!u.eager?o:l>u.from))&&(n[r]={get:()=>a.e(340).then((()=>()=>a(340))),from:l,eager:!1})})("jupyterlab-plotly","6.0.1"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={80:0};a.f.j=(r,t)=>{var o=a.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var n=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=n);var i=a.p+a.u(r),l=new Error;a.l(i,(t=>{if(a.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var n=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+n+": "+i+")",l.name="ChunkLoadError",l.type=n,l.request=i,o[1](l)}}),"chunk-"+r,r)}};var r=(r,t)=>{var o,n,[i,l,u]=t,p=0;if(i.some((r=>0!==e[r]))){for(o in l)a.o(l,o)&&(a.m[o]=l[o]);u&&u(a)}for(r&&r(t);p{"use strict";var e,r,t={435:(e,r,t)=>{var o={"./index":()=>t.e(340).then((()=>()=>t(340))),"./mimeExtension":()=>t.e(340).then((()=>()=>t(340)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,a),n.exports}a.m=t,a.c=o,a.amdO={},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".330950829c5d59eca692.js?v=330950829c5d59eca692",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="jupyterlab-plotly:",a.l=(t,o,n,i)=>{if(e[t])e[t].push(o);else{var l,u;if(void 0!==n)for(var p=document.getElementsByTagName("script"),s=0;s{l.onerror=l.onload=null,clearTimeout(f);var a=e[t];if(delete e[t],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(o))),r)return r(o)},f=setTimeout(c.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=c.bind(null,l.onerror),l.onload=c.bind(null,l.onload),u&&document.head.appendChild(l)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{a.S={};var e={},r={};a.I=(t,o)=>{o||(o=[]);var n=r[t];if(n||(n=r[t]={}),!(o.indexOf(n)>=0)){if(o.push(n),e[t])return e[t];a.o(a.S,t)||(a.S[t]={});var i=a.S[t],l="jupyterlab-plotly",u=[];return"default"===t&&((e,r,t,o)=>{var n=i[e]=i[e]||{},u=n[r];(!u||!u.loaded&&(1!=!u.eager?o:l>u.from))&&(n[r]={get:()=>a.e(340).then((()=>()=>a(340))),from:l,eager:!1})})("jupyterlab-plotly","6.6.0"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={80:0};a.f.j=(r,t)=>{var o=a.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var n=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=n);var i=a.p+a.u(r),l=new Error;a.l(i,(t=>{if(a.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var n=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+n+": "+i+")",l.name="ChunkLoadError",l.type=n,l.request=i,o[1](l)}}),"chunk-"+r,r)}};var r=(r,t)=>{var o,n,[i,l,u]=t,p=0;if(i.some((r=>0!==e[r]))){for(o in l)a.o(l,o)&&(a.m[o]=l[o]);u&&u(a)}for(r&&r(t);p=71"]
-build-backend = "setuptools.build_meta"
+requires = ["hatchling >= 1.26"]
+build-backend = "hatchling.build"
[project.urls]
-"HomePage" = "https://plotly.com/python/"
+"Homepage" = "https://plotly.com/python/"
"Documentation" = "https://plotly.com/python/"
-"Github" = "https://github.com/plotly/plotly.py"
+"GitHub" = "https://github.com/plotly/plotly.py"
"Changelog" = "https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md"
[project]
@@ -18,7 +18,6 @@ maintainers = [
{ name="Emily Kellison-Linn", email="emily@plot.ly" }
]
description = "An open-source interactive data visualization library for Python"
-readme = {file = "README.md", content-type = "text/markdown"}
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python :: 3.8",
@@ -31,7 +30,8 @@ classifiers = [
"License :: OSI Approved :: MIT License"
]
requires-python = ">=3.8"
-license = {file="LICENSE.txt"}
+license = "MIT"
+license-files = ["LICENSE.txt"]
version = "6.6.0"
dependencies = [
"narwhals>=1.15.1",
@@ -50,7 +50,7 @@ dev_core = [
dev_build = [
"plotly[dev_core]",
"build",
- "jupyter"
+ "jupyterlab"
]
dev_optional = [
"plotly[dev_build]",
@@ -91,43 +91,17 @@ markers = [
"matplotlib: mark a test as matplotlib"
]
-[tool.setuptools.packages.find]
-where = ["."]
-include = ["plotly*", "_plotly*"]
-exclude = ["__pycache__*", "tests*"]
-
-[tool.setuptools.package-data]
-plotly = [
- "package_data/*",
- "package_data/templates/*",
- "package_data/datasets/*",
- "validators/_validators.json"
-]
-
-[tool.jupyter-packaging.builder]
-factory = "jupyter_packaging.npm_builder"
-auto_data_files = true
-
-[tool.jupyter-packaging.build-args]
-build_cmd = "build:prod"
-npm = ["jlpm"]
-
-[tool.hatch.build.hooks.jupyter-builder]
-editable-frontend = true
-
-[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs]
-build_cmd = "build"
-npm = ["jlpm"]
-source_dir = "js"
-build_dir = "plotly/labextension"
-skip_symlink = true
-
-[tool.setuptools.data-files]
-"share/jupyter/labextensions/jupyterlab-plotly" = [
- "plotly/labextension/package.json",
- "js/install.json"
+[tool.hatch.build]
+include = [
+ "/plotly*",
+ "/_plotly*",
+ "js/install.json", # used by Jupyter extension
]
-"share/jupyter/labextensions/jupyterlab-plotly/static" = [
- "plotly/labextension/static/*.js"
-]
+[tool.hatch.build.targets.wheel.shared-data]
+# Specify files from this package which will be copied to the user's system on install
+# This is how the jupyterlab extension gets installed
+# Left path is the path within this package
+# Right path is the path on the user's system
+"plotly/labextension" = "share/jupyter/labextensions/jupyterlab-plotly"
+"js/install.json" = "share/jupyter/labextensions/jupyterlab-plotly/install.json"
diff --git a/uv.lock b/uv.lock
index 41cee9778dd..edd98735cc2 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1,5 +1,5 @@
version = 1
-revision = 2
+revision = 3
requires-python = ">=3.8"
resolution-markers = [
"python_full_version >= '3.12'",
@@ -2213,25 +2213,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" },
]
-[[package]]
-name = "jupyter"
-version = "1.1.1"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "ipykernel" },
- { name = "ipywidgets" },
- { name = "jupyter-console" },
- { name = "jupyterlab", version = "4.3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
- { name = "jupyterlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
- { name = "nbconvert" },
- { name = "notebook", version = "7.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
- { name = "notebook", version = "7.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/58/f3/af28ea964ab8bc1e472dba2e82627d36d470c51f5cd38c37502eeffaa25e/jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a", size = 5714959, upload-time = "2024-08-30T07:15:48.299Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/38/64/285f20a31679bf547b75602702f7800e74dbabae36ef324f716c02804753/jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83", size = 2657, upload-time = "2024-08-30T07:15:47.045Z" },
-]
-
[[package]]
name = "jupyter-client"
version = "8.6.3"
@@ -2251,28 +2232,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" },
]
-[[package]]
-name = "jupyter-console"
-version = "6.6.3"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "ipykernel" },
- { name = "ipython", version = "8.12.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
- { name = "ipython", version = "8.18.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
- { name = "ipython", version = "8.37.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.10.*'" },
- { name = "ipython", version = "9.3.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
- { name = "jupyter-client" },
- { name = "jupyter-core" },
- { name = "prompt-toolkit" },
- { name = "pygments" },
- { name = "pyzmq" },
- { name = "traitlets" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/bd/2d/e2fd31e2fc41c14e2bcb6c976ab732597e907523f6b2420305f9fc7fdbdb/jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539", size = 34363, upload-time = "2023-03-06T14:13:31.02Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ca/77/71d78d58f15c22db16328a476426f7ac4a60d3a5a7ba3b9627ee2f7903d4/jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485", size = 24510, upload-time = "2023-03-06T14:13:28.229Z" },
-]
-
[[package]]
name = "jupyter-core"
version = "5.8.1"
@@ -3295,50 +3254,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload-time = "2025-05-29T11:35:04.961Z" },
]
-[[package]]
-name = "notebook"
-version = "7.3.3"
-source = { registry = "https://pypi.org/simple" }
-resolution-markers = [
- "python_full_version > '3.8' and python_full_version < '3.9' and sys_platform == 'win32'",
- "python_full_version <= '3.8' and sys_platform == 'win32'",
- "python_full_version > '3.8' and python_full_version < '3.9' and sys_platform != 'win32'",
- "python_full_version <= '3.8' and sys_platform != 'win32'",
-]
-dependencies = [
- { name = "jupyter-server", version = "2.14.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
- { name = "jupyterlab", version = "4.3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
- { name = "jupyterlab-server", marker = "python_full_version < '3.9'" },
- { name = "notebook-shim", marker = "python_full_version < '3.9'" },
- { name = "tornado", version = "6.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/71/0f/7781fed05f79d1047c039dfd17fbd6e6670bcf5ad330baa997bcc62525b5/notebook-7.3.3.tar.gz", hash = "sha256:707a313fb882d35f921989eb3d204de942ed5132a44e4aa1fe0e8f24bb9dc25d", size = 12758099, upload-time = "2025-03-14T13:40:57.001Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/f2/bf/5e5fcf79c559600b738d7577c8360bfd4cfa705400af06f23b3a049e44b6/notebook-7.3.3-py3-none-any.whl", hash = "sha256:b193df0878956562d5171c8e25c9252b8e86c9fcc16163b8ee3fe6c5e3f422f7", size = 13142886, upload-time = "2025-03-14T13:40:52.754Z" },
-]
-
-[[package]]
-name = "notebook"
-version = "7.4.3"
-source = { registry = "https://pypi.org/simple" }
-resolution-markers = [
- "python_full_version >= '3.12'",
- "python_full_version == '3.11.*'",
- "python_full_version == '3.10.*'",
- "python_full_version == '3.9.*'",
-]
-dependencies = [
- { name = "jupyter-server", version = "2.16.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
- { name = "jupyterlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
- { name = "jupyterlab-server", marker = "python_full_version >= '3.9'" },
- { name = "notebook-shim", marker = "python_full_version >= '3.9'" },
- { name = "tornado", version = "6.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/dc/21/4f83b15e483da4f4f63928edd0cb08b6e7d33f8a15c23b116a90c44c6235/notebook-7.4.3.tar.gz", hash = "sha256:a1567481cd3853f2610ee0ecf5dfa12bb508e878ee8f92152c134ef7f0568a76", size = 13881668, upload-time = "2025-05-26T14:27:21.656Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/76/1b/16c809d799e3ddd7a97c8b43734f79624b74ddef9707e7d92275a13777bc/notebook-7.4.3-py3-none-any.whl", hash = "sha256:9cdeee954e04101cadb195d90e2ab62b7c9286c1d4f858bf3bb54e40df16c0c3", size = 14286402, upload-time = "2025-05-26T14:27:17.339Z" },
-]
-
[[package]]
name = "notebook-shim"
version = "0.2.4"
@@ -4295,7 +4210,8 @@ dev = [
{ name = "geopandas", version = "1.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "inflect", version = "7.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
{ name = "inflect", version = "7.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
- { name = "jupyter" },
+ { name = "jupyterlab", version = "4.3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
+ { name = "jupyterlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
{ name = "kaleido" },
{ name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
{ name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
@@ -4336,7 +4252,8 @@ dev = [
]
dev-build = [
{ name = "build" },
- { name = "jupyter" },
+ { name = "jupyterlab", version = "4.3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
+ { name = "jupyterlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
{ name = "pytest", version = "8.3.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
{ name = "pytest", version = "8.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
{ name = "requests" },
@@ -4358,7 +4275,8 @@ dev-optional = [
{ name = "geopandas", version = "1.1.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" },
{ name = "inflect", version = "7.4.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
{ name = "inflect", version = "7.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
- { name = "jupyter" },
+ { name = "jupyterlab", version = "4.3.7", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
+ { name = "jupyterlab", version = "4.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
{ name = "kaleido" },
{ name = "numpy", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
{ name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.9.*'" },
@@ -4415,7 +4333,7 @@ requires-dist = [
{ name = "fiona", marker = "python_full_version < '3.9' and extra == 'dev-optional'", specifier = "<=1.9.6" },
{ name = "geopandas", marker = "extra == 'dev-optional'" },
{ name = "inflect", marker = "extra == 'dev-optional'" },
- { name = "jupyter", marker = "extra == 'dev-build'" },
+ { name = "jupyterlab", marker = "extra == 'dev-build'" },
{ name = "kaleido", marker = "extra == 'kaleido'", specifier = ">=1.1.0" },
{ name = "narwhals", specifier = ">=1.15.1" },
{ name = "numpy", marker = "extra == 'dev-optional'" },