[workspace]
name = "panel"
channels = ["pyviz/label/dev", "bokeh/label/rc", "conda-forge"]
platforms = ["linux-64", "osx-arm64", "osx-64", "win-64"]
[activation.env]
MPLBACKEND = "Agg"
PYTHONIOENCODING = "utf-8"
[environments]
default = [
"py312",
"required",
"test-core",
"test",
"example",
"test-example",
"test-unit-task",
"test-ui",
"type",
"lint",
"doc",
"dev",
]
[environments.test-310]
features = ["py310", "required", "test-core", "test", "example", "test-example", "test-unit-task"]
no-default-feature = true
[environments.test-311]
features = ["py311", "required", "test-core", "test", "example", "test-example", "test-unit-task"]
no-default-feature = true
[environments.test-312]
features = ["py312", "required", "test-core", "test", "example", "test-example", "test-unit-task"]
no-default-feature = true
[environments.test-313]
features = ["py313", "required", "test-core", "test", "example", "test-example", "test-unit-task"]
no-default-feature = true
[environments.test-314]
features = ["py314", "required", "test-core", "test-314", "example-314", "test-example", "test-unit-task"]
no-default-feature = true
[environments.test-ui]
features = ["py313", "required", "test-core", "test", "test-ui"]
no-default-feature = true
[environments.test-core]
features = ["py314", "required", "test-core", "test-unit-task"]
no-default-feature = true
[environments.test-bokeh37]
features = ["py310", "required", "test-core", "test-unit-task", "bokeh37"]
no-default-feature = true
[environments.test-type]
features = ["py311", "required", "type", "example", "test"]
no-default-feature = true
[environments.docs]
features = ["py311", "required", "example", "doc"]
no-default-feature = true
[environments.build]
features = ["py311", "required", "build"]
no-default-feature = true
[environments.lint]
features = ["py311", "lint"]
no-default-feature = true
[environments.lite]
features = ["py311", "required", "lite"]
no-default-feature = true
[feature.required.dependencies]
nodejs = ">=18"
esbuild = "*"
nomkl = "*"
pip = "*"
bleach = "*"
bokeh = ">=3.7.0,<3.9.0a0"
linkify-it-py = "*"
markdown = "*"
markdown-it-py = "*"
mdit-py-plugins = "*"
narwhals = ">2"
numpy = "*"
packaging = "*"
pandas = ">=1.2"
param = ">=2.1.0,<3.0"
pyviz_comms = ">=2.0.0"
requests = "*"
tqdm = ">=4.48.0"
typing_extensions = "*"
[feature.required.tasks]
install = 'python -m pip install --no-deps --disable-pip-version-check -e .'
[feature.py310.dependencies]
python = "3.10.*"
[feature.py311.dependencies]
python = "3.11.*"
[feature.py312.dependencies]
python = "3.12.*"
[feature.py312.activation.env]
COVERAGE_CORE = "sysmon"
[feature.py313.dependencies]
python = "3.13.*"
[feature.py313.activation.env]
COVERAGE_CORE = "sysmon"
[feature.py314.dependencies]
python = "3.14.*"
[feature.py314.activation.env]
COVERAGE_CORE = "sysmon"
[feature.example.dependencies]
holoviews = ">=1.16.0"
jupyterlab = "*"
matplotlib-base = "*"
pillow = "*"
plotly = ">=4.0"
aiohttp = "*"
altair = "*"
bokeh_sampledata = "*"
croniter = "*"
datashader = "*"
fastparquet = "*"
folium = "*"
fsspec = "*"
graphviz = "*"
hvplot = "*"
ipyleaflet = "*"
ipympl = "*"
ipyvolume = "*"
ipyvuetify = "*"
ipywidgets = "*"
ipywidgets_bokeh = "*"
jupyter_bokeh = ">=3.0.7"
networkx = ">=2.5"
pyecharts = "*"
pygraphviz = "*"
pyinstrument = ">=4.0"
python-graphviz = "*"
pyvista = "*"
reacton = "*"
s3fs = "*"
scikit-image = "*"
scikit-learn = "*"
seaborn = "*"
streamz = "*"
textual = "*"
tqdm = ">=4.48.0"
vega_datasets = "*"
vtk = "*"
xarray = "*"
xgboost = "*"
[feature.example-314.dependencies]
holoviews = ">=1.16.0"
jupyterlab = "*"
matplotlib-base = "*"
pillow = "*"
plotly = ">=4.0"
aiohttp = "*"
altair = "*"
bokeh_sampledata = "*"
croniter = "*"
fastparquet = "*"
folium = "*"
fsspec = "*"
graphviz = "*"
hvplot = "*"
ipyleaflet = "*"
ipympl = "*"
ipyvolume = "*"
ipyvuetify = "*"
ipywidgets = "*"
ipywidgets_bokeh = "*"
jupyter_bokeh = ">=3.0.7"
networkx = ">=2.5"
pyecharts = "*"
pygraphviz = "*"
pyinstrument = ">=4.0"
python-graphviz = "*"
reacton = "*"
s3fs = "*"
scikit-image = "*"
scikit-learn = "*"
seaborn = "*"
textual = "*"
tqdm = ">=4.48.0"
vega_datasets = "*"
vtk = "*"
xarray = "*"
xgboost = "*"
[feature.dev.dependencies]
jupyterlab = "*"
setuptools_scm = ">=6"
[feature.dev.tasks]
lab = 'jupyter lab'
sync-git-tags = 'python scripts/sync_git_tags.py param'
setup-dev = { depends-on = ["install", "lint-install"] }
[feature.test-core.dependencies]
psutil = "*"
pytest = "*"
pytest-asyncio = "*"
pytest-cov = "*"
pytest-github-actions-annotate-failures = "*"
pytest-rerunfailures = "*"
pytest-xdist = "*"
[feature.bokeh37.dependencies]
bokeh = "3.7.*"
[feature.test.dependencies]
holoviews = ">=1.16.0"
jupyterlab = "*"
matplotlib-base = "*"
pillow = "*"
plotly = ">=6.0"
watchfiles = "*"
altair = "*"
anywidget = "*"
bokeh-fastapi = ">=0.1.5"
bokeh_sampledata = "*"
caddy = "*"
cryptography = "*"
diskcache = "*"
fastapi = "*"
folium = "*"
ipympl = "*"
ipyvuetify = "*"
ipywidgets_bokeh = "*"
numba = "*"
polars = "*"
reacton = "*"
scipy = "*"
textual = "*"
vl-convert-python = "*"
[feature.test-314.dependencies]
holoviews = ">=1.16.0"
jupyterlab = "*"
matplotlib-base = "*"
pillow = "*"
plotly = ">=6.0"
watchfiles = "*"
altair = "*"
anywidget = "*"
bokeh-fastapi = "*"
bokeh_sampledata = "*"
caddy = "*"
cryptography = "*"
diskcache = "*"
fastapi = "*"
folium = "*"
ipympl = "*"
ipyvuetify = "*"
ipywidgets_bokeh = "*"
polars = "*"
reacton = "*"
scipy = "*"
textual = "*"
[feature.test-unit-task.tasks]
test-unit = 'pytest panel/tests -n logical --dist loadgroup'
test-subprocess = 'pytest panel/tests --subprocess'
[feature.test-example.tasks]
test-docs = 'pytest panel/tests --docs'
test-example = 'pytest -n logical --dist loadscope --nbval-lax examples'
[feature.test-example.dependencies]
nbval = "*"
[feature.test-ui.dependencies]
playwright = ">=1.52.0"
pytest-playwright = "*"
pytest-asyncio = "*"
jupyter_server = "*"
esbuild = "*"
packaging = "*"
[feature.test-ui.tasks]
_install-ui = 'playwright install chromium'
[feature.test-ui.tasks.test-ui]
cmd = 'pytest panel/tests/ui --ui --browser chromium -n logical --dist loadgroup'
depends-on = ["_install-ui"]
[feature.type.dependencies]
mypy = "*"
pytest = "*"
pandas-stubs = "*"
types-bleach = "*"
types-croniter = "*"
types-Markdown = "*"
types-psutil = "*"
types-requests = "*"
types-tqdm = "*"
typing-extensions = "*"
[feature.type.tasks]
test-type = 'mypy panel'
[feature.doc.activation.env]
MOZ_HEADLESS = "1"
PANEL_IPYWIDGET = "1"
OBJC_DISABLE_INITIALIZE_FORK_SAFETY = "YES"
SPHINX_APIDOC_OPTIONS = "members,show-inheritance"
[feature.doc.dependencies]
lxml = "*"
nbsite = ">=0.8.6rc9"
selenium = "*"
numpydoc = "*"
pydeck = ">=0.8"
sphinx = "<9"
[feature.doc.tasks]
_docs-refmanual = 'sphinx-apidoc -e -o doc/api/ panel/ --ext-autodoc --ext-intersphinx'
_docs-convert-gallery = 'python scripts/gallery/convert_gallery.py'
_docs-generate = 'nbsite build --what=html --output=builtdocs --org holoviz --project-name panel --disable-parallel'
_docs-generate-parallel = 'nbsite build --what=html --output=builtdocs --org holoviz --project-name panel'
_docs-copy-panel-dist = 'cp -r ./panel/dist ./builtdocs/panel_dist'
_docs-pyodide = 'panel convert examples/gallery/*.ipynb doc/how_to/*/examples/*.md --to pyodide-worker --out ./builtdocs/pyodide/ --pwa --index --requirements doc/pyodide_dependencies.json --exclude examples/gallery/vtk*.ipynb'
docs-server = 'python -m http.server 5500 --directory ./builtdocs'
[feature.doc.tasks.docs-build]
depends-on = [
'_docs-refmanual',
'_docs-convert-gallery',
'_docs-generate',
'_docs-copy-panel-dist',
'_docs-pyodide',
]
[feature.doc.tasks.docs-build-parallel]
depends-on = [
'_docs-refmanual',
'_docs-convert-gallery',
'_docs-generate-parallel',
'_docs-copy-panel-dist',
'_docs-pyodide',
]
[feature.build.dependencies]
python-build = "*"
conda-build = "*"
conda-libmamba-solver = "!=25.11.0"
[feature.build.tasks]
build-conda = 'bash scripts/conda/build.sh'
build-pip = 'python -m build .'
build-pyodide = 'python scripts/build_pyodide_wheels.py'
build-npm = { cmd = "npm pack .", cwd = "panel" }
[feature.lint.dependencies]
pre-commit = "*"
[feature.lint.tasks]
lint = 'pre-commit run --all-files'
lint-install = 'pre-commit install -t=pre-commit'
[feature.lite.dependencies]
pyviz_comms = ">=3.0.6"
jupyterlab-myst = "*"
jupyterlite-core = "<0.7.0"
jupyterlite-pyodide-kernel = "*"
python-build = "*"
[feature.lite.tasks]
lite-build = "bash scripts/jupyterlite/build.sh"
lite-server = "python -m http.server --directory ./lite/dist --bind 127.0.0.1"