Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
holoviz
GitHub Repository: holoviz/panel
Path: blob/main/pyproject.toml
1979 views
1
[build-system]
2
requires = [
3
"hatchling",
4
"hatch-vcs",
5
"param >=2.1.0",
6
"bokeh >=3.7.0,<3.9.0",
7
"pyviz_comms >=0.7.4",
8
"requests",
9
"packaging",
10
]
11
build-backend = "hatchling.build"
12
13
[project]
14
name = "panel"
15
dynamic = ["version"]
16
description = 'The powerful data exploration & web app framework for Python.'
17
readme = "README.md"
18
license = { text = "BSD" }
19
requires-python = ">=3.10"
20
authors = [{ name = "HoloViz developers", email = "[email protected]" }]
21
maintainers = [
22
{ name = "HoloViz developers", email = "[email protected]" },
23
]
24
classifiers = [
25
"License :: OSI Approved :: BSD License",
26
"Development Status :: 5 - Production/Stable",
27
"Programming Language :: Python :: 3",
28
"Programming Language :: Python :: 3.10",
29
"Programming Language :: Python :: 3.11",
30
"Programming Language :: Python :: 3.12",
31
"Programming Language :: Python :: 3.13",
32
"Operating System :: OS Independent",
33
"Intended Audience :: Developers",
34
"Intended Audience :: Science/Research",
35
"Intended Audience :: Financial and Insurance Industry",
36
"Intended Audience :: Healthcare Industry",
37
"Intended Audience :: Information Technology",
38
"Intended Audience :: Legal Industry",
39
"Intended Audience :: Other Audience",
40
"Intended Audience :: Science/Research",
41
"Natural Language :: English",
42
"Topic :: Scientific/Engineering",
43
"Topic :: Scientific/Engineering :: Visualization",
44
"Topic :: Scientific/Engineering :: Information Analysis",
45
"Topic :: Office/Business",
46
"Topic :: Office/Business :: Financial",
47
"Topic :: Software Development :: Libraries",
48
]
49
50
dependencies = [
51
'bokeh >=3.7.0,<3.9.0',
52
'param >=2.1.0,<3.0',
53
'pyviz_comms >=2.0.0',
54
'markdown',
55
'markdown-it-py',
56
'linkify-it-py',
57
'mdit-py-plugins',
58
'requests',
59
'bleach',
60
'typing_extensions',
61
'pandas >=1.2',
62
'packaging',
63
'tqdm', # TODO: Should this be optional?
64
]
65
66
[project.urls]
67
Homepage = "https://panel.holoviz.org"
68
Source = "https://github.com/holoviz/panel"
69
HoloViz = "https://holoviz.org/"
70
71
[project.optional-dependencies]
72
recommended = [
73
'jupyterlab',
74
'holoviews >=1.18.0',
75
'matplotlib',
76
'pillow',
77
'plotly',
78
]
79
fastapi = [
80
'bokeh-fastapi >= 0.1.2,<0.2.0',
81
'fastapi[standard]',
82
]
83
dev = [
84
'watchfiles',
85
]
86
tests = [
87
'psutil' ,
88
'pytest',
89
'pytest-asyncio',
90
'pytest-rerunfailures <16.0',
91
'pytest-xdist',
92
]
93
mypy = [
94
"mypy",
95
"pandas-stubs",
96
"types-bleach",
97
"types-croniter",
98
"types-Markdown",
99
"types-psutil",
100
"types-requests",
101
"types-tqdm",
102
"typing-extensions",
103
]
104
105
[project.scripts]
106
panel = "panel.command:main"
107
108
[tool.hatch.version]
109
source = "vcs"
110
raw-options = { version_scheme = "no-guess-dev" }
111
112
[tool.hatch.build.targets.wheel]
113
include = ["panel"]
114
exclude = ["panel/node_modules"]
115
116
[tool.hatch.build.targets.wheel.force-include]
117
"panel/dist" = "panel/dist"
118
119
[tool.hatch.build.targets.wheel.shared-data]
120
"scripts/jupyter-config/notebook.json" = "etc/jupyter/jupyter_notebook_config.d/panel-client-jupyter.json"
121
"scripts/jupyter-config/server.json" = "etc/jupyter/jupyter_server_config.d/panel-client-jupyter.json"
122
123
[tool.hatch.build.targets.sdist]
124
include = ["panel", "scripts", "examples"]
125
exclude = ["scripts/jupyterlite", "panel/node_modules"]
126
127
[tool.hatch.build.targets.sdist.force-include]
128
"panel/dist" = "panel/dist"
129
130
[tool.hatch.build.hooks.vcs]
131
version-file = "panel/_version.py"
132
133
[tool.hatch.build.hooks.custom]
134
path = 'hatch_build.py'
135
136
[tool.ruff]
137
exclude = [
138
".git",
139
"__pycache__",
140
".tox",
141
".eggs",
142
"*.egg",
143
"doc",
144
"dist",
145
"build",
146
"_build",
147
"examples",
148
".ipynb_checkpoints",
149
"node_modules",
150
"apps",
151
]
152
line-length = 165
153
fix = true
154
155
[tool.ruff.lint]
156
ignore = [
157
"E402", # Module level import not at top of file
158
"E712", # Avoid equality comparisons to True; use if {cond}: for truth checks
159
"E731", # Do not assign a lambda expression, use a def
160
"E741", # Ambiguous variable name
161
"W605", # Invalid escape sequence
162
"E701", # Multiple statements on one line
163
"B006", # Do not use mutable data structures for argument defaults
164
"B905", # `zip()` without an explicit `strict=` parameter
165
]
166
select = [
167
"B",
168
"E",
169
"F",
170
"W",
171
"PIE",
172
"T20",
173
"RUF006",
174
"UP004",
175
"UP006",
176
"UP020",
177
"UP028",
178
"UP030",
179
"UP031",
180
"UP032",
181
"UP034",
182
"UP036",
183
]
184
unfixable = [
185
"F401", # Unused imports
186
"F841", # Unused variables
187
]
188
189
[tool.ruff.lint.per-file-ignores]
190
"panel/tests/ui/jupyter_server_test_config.py" = ["F821"]
191
"panel/compiler.py" = ["T201"]
192
"panel/io/convert.py" = ["T201"]
193
"panel/pane/vtk/synchronizable_*.py" = ["T201"]
194
"scripts/*.py" = ["T201"]
195
"hatch_build.py" = ["T201"]
196
197
[tool.isort]
198
force_grid_wrap = 4
199
multi_line_output = 5
200
combine_as_imports = true
201
lines_between_types = 1
202
include_trailing_comma = true
203
204
[tool.codespell]
205
ignore-words-list = "nd,doubleclick,ser"
206
skip = "doc/generate_modules.py,examples/reference/templates/FastGridTemplate.ipynb,panel/.eslintrc.js,panel/package-lock.json,panel/package.json"
207
write-changes = true
208
209
[tool.pytest.ini_options]
210
# addopts = "-v --pyargs --doctest-ignore-import-errors --color=yes"
211
addopts = "--pyargs --doctest-ignore-import-errors --color=yes"
212
norecursedirs = "doc .git dist build _build .ipynb_checkpoints panel/examples"
213
asyncio_mode = "auto"
214
asyncio_default_fixture_loop_scope = "function"
215
xfail_strict = true
216
minversion = "7"
217
log_cli_level = "INFO"
218
filterwarnings = [
219
"error",
220
# 2023-11: `pkg_resources` is deprecated
221
"ignore:Deprecated call to `pkg_resources.+?'zope:DeprecationWarning", # https://github.com/zopefoundation/meta/issues/194
222
"ignore: pkg_resources is deprecated as an API:DeprecationWarning:streamz.plugins", # https://github.com/python-streamz/streamz/issues/460
223
# 2024-06: Adding error to the filterwarnings
224
"ignore:Jupyter is migrating its paths to use standard platformdirs:DeprecationWarning", # OK
225
"ignore:distutils Version classes are deprecated:DeprecationWarning:ipywidgets_bokeh.kernel", # OK
226
"ignore:unclosed file <_io.TextIOWrapper name='(/dev/null|nul)' mode='w':ResourceWarning", # OK
227
"ignore:Deprecated in traitlets 4.1, use the instance .metadata dictionary directly", # OK (ipywidgets internal)
228
# 2024-11
229
"ignore:websockets.legacy is deprecated:DeprecationWarning", # https://github.com/encode/uvicorn/issues/1908
230
"ignore:websockets.server.WebSocketServerProtocol is deprecated:DeprecationWarning", # https://github.com/encode/uvicorn/issues/1908
231
# 2025-01 `plotly` 6.0 triggers warnings
232
"ignore:\\*scattermapbox\\* is deprecated! Use \\*scattermap\\* instead", # https://github.com/plotly/plotly.py/issues/4997
233
# 2025-06
234
"ignore:Failed to generate report", # OK, CovReportWarning: Failed to generate report: No data to report.
235
"ignore:Couldn't parse", # OK, CoverageWarning: Couldn't parse
236
"ignore:unclosed <socket.socket:ResourceWarning", # Windows Python 3.10 test-example
237
]
238
239
[tool.coverage.run]
240
disable_warnings = [
241
"module-not-imported",
242
"couldnt-parse",
243
"no-data-collected",
244
]
245
246
[tool.mypy]
247
namespace_packages = true
248
explicit_package_bases = true
249
disable_error_code = "attr-defined"
250
mypy_path = ""
251
exclude = []
252
253
[[tool.mypy.overrides]]
254
module = [
255
"anywidget.*",
256
"bokeh_django.*",
257
"bokeh_fastapi.*",
258
"bokeh.*",
259
"cachecontrol.*",
260
"cryptography.*",
261
"diskcache.*",
262
"flask.*",
263
"fsspec.*",
264
"holoviews.*",
265
"hvplot.*",
266
"ipympl.*",
267
"ipywidgets_bokeh.*",
268
"ipywidgets.*",
269
"js.*",
270
"jupyter_bokeh.*",
271
"langchain.*",
272
"lumen.*",
273
"magic.*",
274
"matplotlib.*",
275
"mdit_py_emoji.*",
276
"memray.*",
277
"myst_parser.*",
278
"pamela.*",
279
"param.*",
280
"playwright.*",
281
"plotly.*",
282
"pydeck.*",
283
"pyecharts.*",
284
"pyodide_http.*",
285
"pyodide.*",
286
"pyscript.*",
287
"pyvista.*",
288
"pyviz_comms.*",
289
"rpy2.*",
290
"s3fs.*",
291
"scipy.*",
292
"setuptools_scm.*",
293
"snakeviz.*",
294
"streamz.*",
295
"traitlets.*",
296
"tranquilizer.*",
297
"uvicorn.*",
298
"vtk.*",
299
"watchfiles.*"
300
]
301
ignore_missing_imports = true
302
303