[project]
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"
[tasks]
install = 'python -m pip install --no-deps --disable-pip-version-check -e .'
[environments]
test-310 = ["py310", "test-core", "test", "example", "test-example", "test-unit-task"]
test-311 = ["py311", "test-core", "test", "example", "test-example", "test-unit-task"]
test-312 = ["py312", "test-core", "test", "example", "test-example", "test-unit-task"]
test-313 = ["py313", "test-core", "test", "example", "test-example", "test-unit-task"]
test-ui = ["py312", "test-core", "test", "test-ui"]
test-core = ["py313", "test-core", "test-unit-task"]
test-bokeh37 = ["py310", "test-core", "test-unit-task", "bokeh37"]
test-type = ["py311", "type", "example", "test"]
docs = ["py311", "example", "doc"]
build = ["py311", "build"]
lint = ["py311", "lint"]
lite = ["py311", "lite"]
[dependencies]
nodejs = ">=18"
esbuild = "*"
nomkl = "*"
pip = "*"
bleach = "*"
bokeh = ">=3.7.0,<3.9.0a0"
linkify-it-py = "*"
markdown = "*"
markdown-it-py = "*"
mdit-py-plugins = "*"
numpy = "*"
packaging = "*"
pandas = ">=1.2"
param = ">=2.1.0,<3.0"
pyviz_comms = ">=2.0.0"
requests = "*"
tqdm = ">=4.48.0"
typing_extensions = "*"
[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.example.dependencies]
holoviews = ">=1.16.0"
jupyterlab = "*"
matplotlib-base = "*"
pillow = "*"
plotly = ">=4.0"
aiohttp = "*"
altair = "*"
bokeh_sampledata = "*"
croniter = "*"
dask-expr = "*"
datashader = "*"
fastparquet = "*"
folium = "*"
fsspec = "*"
graphviz = "*"
hvplot = "*"
ipyleaflet = "*"
ipympl = "*"
ipython_genutils = "*"
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.test-core.dependencies]
psutil = "*"
pytest = "*"
pytest-asyncio = "*"
pytest-cov = "*"
pytest-github-actions-annotate-failures = "*"
pytest-rerunfailures = "<16.0"
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 = "*"
bokeh_sampledata = "*"
caddy = "*"
cryptography = "*"
diskcache = "*"
fastapi = "*"
folium = "*"
ipympl = "*"
ipyvuetify = "*"
ipywidgets_bokeh = "*"
numba = "*"
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]
channels = ["microsoft"]
[feature.test-ui.dependencies]
playwright = { version = "!=1.51.0", channel = "microsoft" }
pytest-playwright = { version = "*", channel = "microsoft" }
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"
[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 = "*"
[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 = "*"
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"