[build-system]
requires = [
  "setuptools>=80",
  "wheel",
  "setuptools-scm>=8",
]
build-backend = "setuptools.build_meta"

[project]
name = "base-repository"
dynamic = ["version"]
description = "A repository library that wraps SQLAlchemy and provides built-in CRUD and a query DSL."
readme = "README.md"
requires-python = ">=3.10,<3.14"
authors = [{ name = "jjade", email = "jjades1205@gmail.com" }]
urls = { Homepage = "https://github.com/4jades/base-repository" }
classifiers = [
  "Programming Language :: Python :: 3",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
  "Programming Language :: Python :: 3.10",
  "Programming Language :: Python :: 3.11",
  "Programming Language :: Python :: 3.12",
  "Programming Language :: Python :: 3.13",
]
dependencies = [
    "pydantic>=1.7.4",
    "sqlalchemy>=1.4",
    "typing-extensions>=4.6.0",
    "pydantic>=2.8.0,<3.0.0; python_version >= '3.13'",
]

[dependency-groups]
dev = [
    "aiomysql>=0.3.2",
    "cryptography>=46.0.3",
    "matplotlib>=3.10.7",
    "mypy>=1.18.2",
    "pre-commit>=4.4.0",
    "pymysql>=1.1.2",
    "pytest>=8.4.2",
    "pytest-asyncio>=1.3.0",
    "sqlalchemy-mixins>=2.0.5",
    "sqlmodel>=0.0.27",
    "coverage[toml]>=7.6.0",
    "asyncpg>=0.31.0",
    "aiosqlite>=0.21.0",
    "setuptools>=80.9.0",
    "types-setuptools>=80.9.0.20250822",
]

[tool.setuptools.packages.find]
where = ["."]
exclude = ["tests", "tests.*"]

[tool.setuptools.package-data]
base_repository = ["py.typed"]

[tool.setuptools_scm]
# read version on tag

[tool.coverage.run]
omit = [
    "tests/**",
]

[tool.coverage.report]
omit = [
    "tests/**",
]
