pyproject.toml (109 lines of code) (raw):
[project]
name = "databao"
description = "databao: NL queries for data"
dynamic = ["version"] # Based on the git tag
requires-python = ">=3.10, <3.15"
readme = "README.md"
license = "Apache-2.0 AND LicenseRef-Additional-Terms"
license-files = ["LICENSE.md"]
authors = []
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
dependencies = [
"pandas>=2.2.2",
"pydantic>=2.8.0,<3",
"langgraph>=0.6.8",
"langchain>=1.1.3",
"langchain-openai>=1.1.3",
"langchain-anthropic>=1.3.0",
"langchain-ollama>=1.0.0",
"duckdb>=1.3.0",
"jinja2>=3.1.6",
"tabulate>=0.9.0",
"psycopg2-binary>=2.9.10",
"matplotlib>=3.10.0",
"edaplot-vl~=0.1.4",
"diskcache>=5.6.3",
"sqlalchemy>=2.0.45",
]
[project.urls]
Homepage = "https://databao.app/"
Source = "https://github.com/JetBrains/databao"
[project.optional-dependencies]
examples = [
"notebook>=7.4.7",
"python-dotenv>=1.1.1",
]
[build-system]
requires = ["hatchling", "uv-dynamic-versioning"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.uv-dynamic-versioning]
# Use `git tag -a v0.0.0 -m "v0.0.0"` to create a tag.
vcs = "git"
style = "pep440"
fallback-version = "0.0.0" # https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md
bump = true
[tool.hatch.build.targets.sdist]
include = ["/databao"]
[tool.hatch.build.targets.wheel]
include = ["/databao"]
[dependency-groups]
dev = [
"mypy>=1.18.2",
"pandas-stubs>=2.3.2.250926",
"pre-commit>=4.3.0",
"pytest>=7.4.0",
"ruff>=0.13.2",
"types-pyyaml>=6.0.12.20250915",
"typing-extensions>=4.15.0",
"vega-datasets>=0.9.0",
]
[tool.mypy]
strict = true
show_error_codes = true
check_untyped_defs = true
disallow_untyped_defs = true
warn_redundant_casts = true
warn_unused_configs = true
warn_unused_ignores = true
allow_redefinition_new = true
local_partial_types = true
files = ["databao", "tests", "examples"]
plugins = ["pydantic.mypy", "sqlalchemy.ext.mypy.plugin"]
[tool.ruff]
line-length = 120
extend-exclude = ["*.ipynb"]
[tool.ruff.lint]
select = [
# pycodestyle
"E",
# Pyflakes
"F",
# pyupgrade
"UP",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort
"I",
# ruff-specific
"RUF",
# Prefer absolute imports over relative ones
"TID252",
]
[tool.ruff.lint.flake8-tidy-imports]
# Disallow all relative imports.
ban-relative-imports = "all"
[tool.uv]
# https://github.com/ninoseki/uv-dynamic-versioning/blob/main/docs/tips.md#build-caching-and-editable-installs
cache-keys = [{ file = "pyproject.toml" }, { git = { commit = true, tags = true }}]
[tool.pytest.ini_options]
addopts = ["--strict-markers"]
markers = [
"apikey: marks tests that require an API key",
]