[build-system]
requires = ['maturin>=1,<2', 'typing_extensions']
build-backend = 'maturin'

[project]
name = 'pylimbo'
description = "Limbo is a work-in-progress, in-process OLTP database management system, compatible with SQLite."
requires-python = '>=3.9'
classifiers = [
    'Development Status :: 3 - Alpha',
    'Programming Language :: Python',
    'Programming Language :: Python :: 3',
    'Programming Language :: Python :: 3 :: Only',
    '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',
    'Programming Language :: Rust',
    'License :: OSI Approved :: MIT License',
    'Operating System :: POSIX :: Linux',
    'Operating System :: Microsoft :: Windows',
    'Operating System :: MacOS',
    'Topic :: Database',
    'Topic :: Software Development :: Libraries',
    'Topic :: Software Development :: Libraries :: Python Modules',
    'Topic :: Database :: Database Engines/Servers',
]
dependencies = ['typing-extensions >=4.6.0,!=4.7.0']
dynamic = ['readme', 'version']

[project.optional-dependencies]
dev = [
    "mypy==1.11.0",
    "pytest==8.3.1",
    "pytest-cov==5.0.0",
    "ruff==0.5.4",
    "coverage==7.6.1",
    "maturin==1.7.8",
]

[project.urls]
Homepage = "https://github.com/tursodatabase/limbo"
Source = "https://github.com/tursodatabase/limbo"

[tool.maturin]
bindings = 'pyo3'
module-name = "limbo._limbo"
features = ["pyo3/extension-module"]

[tool.pip-tools]
strip-extras = true
header = false
upgrade = false

[tool.ruff]
line-length = 120

[tool.ruff.lint]
extend-select = [
    "E",   # pycodestyle errors
    "W",   # pycodestyle warings
    "F",   # pyflakes
    'Q',   # flake8-quotes
    'C90', # mccabe
    'I',   # isort
]

[tool.pytest.ini_options]
testpaths = 'tests'
log_format = '%(name)s %(levelname)s: %(message)s'

[tool.coverage.run]
source = ['limbo']
branch = true

[tool.coverage.report]
precision = 2
exclude_lines = [
    'pragma: no cover',
    'raise NotImplementedError',
    'if TYPE_CHECKING:',
    '@overload',
]
