[build-system] requires = ["setuptools>=61", "hatch", "jupyter_packaging~=0.10.0", "wheel"] build-backend = "setuptools.build_meta" [project.urls] "HomePage" = "https://plotly.com/python/" "Documentation" = "https://plotly.com/python/" "Github" = "https://github.com/plotly/plotly.py" "Changelog" = "https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md" [project] name = "plotly" authors = [ { name = "Chris P", email = "chris@plot.ly" } ] maintainers = [ { name="Martha Cryan", email="martha.cryan@plot.ly" }, { 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", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Visualization", "License :: OSI Approved :: MIT License" ] requires-python = ">=3.8" license = {file="LICENSE.txt"} version = "6.3.0" dependencies = [ "narwhals>=1.15.1", "packaging" ] [project.optional-dependencies] express = ["numpy"] kaleido = ["kaleido>=1.0.0"] dev_core = [ "pytest", "requests", # pin precise version of ruff to prevent accidental reformatting in case its defaults are updated "ruff==0.11.12" ] dev_build = [ "plotly[dev_core]", "build", "jupyter" ] dev_optional = [ "plotly[dev_build]", "plotly[kaleido]", "anywidget", "colorcet", # fiona>1.9.6 is not compatible with geopandas<1; geopandas>=1 is not compatible with python 3.8 "fiona<=1.9.6;python_version<='3.8'", "geopandas", "inflect", "numpy", "orjson", "pandas", "pdfrw", "pillow", "plotly-geo", "polars[timezone]", "pyarrow", "pyshp", "pytz", "scikit-image", "scipy", "shapely", "statsmodels", "vaex;python_version<='3.9'", "xarray" ] dev = [ "plotly[dev_optional]" ] [project.scripts] plotly_get_chrome = "plotly.io._kaleido:plotly_get_chrome" [tool.pytest.ini_options] markers = [ "nodev: mark a test as nodev", "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" ] "share/jupyter/labextensions/jupyterlab-plotly/static" = [ "plotly/labextension/static/*.js" ]