[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"

[project]
name = "provsql-studio"
dynamic = ["version"]
description = "Web UI for ProvSQL: provenance inspection, circuit visualisation, and on-the-fly semiring evaluation."
readme = "README.md"
license = "MIT"
license-files = ["LICENSE"]
authors = [{ name = "Pierre Senellart", email = "pierre@senellart.com" }]
requires-python = ">=3.10"
keywords = ["postgresql", "probabilistic-database", "provenance", "provenance-tracking", "provsql", "web-ui"]
classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Environment :: Web Environment",
    "Framework :: Flask",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Database",
    "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
    "Topic :: Scientific/Engineering :: Information Analysis",
]
dependencies = [
    "flask>=3.0",
    "platformdirs>=4.0",
    "psycopg[binary]>=3.1",
    "psycopg-pool>=3.2",
    "sqlparse>=0.4",
]

[project.optional-dependencies]
test = [
    "pytest>=7",
    "pytest-flask>=1.3",
    "pytest-rerunfailures>=14",
    "playwright>=1.40",
    "pytest-playwright>=0.4",
]
dev  = ["ruff>=0.5", "mypy>=1.8"]

[project.urls]
Homepage      = "https://provsql.org"
Documentation = "https://provsql.org/docs/user/studio.html"
Source        = "https://github.com/PierreSenellart/provsql"
Issues        = "https://github.com/PierreSenellart/provsql/issues"
Changelog     = "https://github.com/PierreSenellart/provsql/releases?q=tag%3Astudio-v"

[project.scripts]
provsql-studio = "provsql_studio.cli:main"

[tool.setuptools.dynamic]
version = { attr = "provsql_studio.__version__" }

[tool.setuptools.packages.find]
include = ["provsql_studio*"]

[tool.setuptools.package-data]
provsql_studio = [
    "static/*.html",
    "static/*.css",
    "static/*.js",
    "static/img/*",
    "static/fonts/*",
    "static/vendor/*",
    "notebooks/*.ipynb",
]
