| [project] |
| name = "nl-sql" |
| version = "0.1.0" |
| description = "Portfolio demo: NL→SQL assistant with measurable accuracy, schema-RAG, safety guards" |
| readme = "README.md" |
| requires-python = ">=3.12,<3.14" |
| authors = [{ name = "Julia Edomskikh" }] |
| license = { text = "MIT" } |
|
|
| dependencies = [ |
| "fastapi>=0.115", |
| "uvicorn[standard]>=0.32", |
| "pydantic>=2.9", |
| "pydantic-settings>=2.6", |
| "openai>=1.55", |
| "httpx>=0.27", |
| "python-dotenv>=1.0", |
| "sqlalchemy>=2.0", |
| "psycopg[binary]>=3.2", |
| "sqlglot>=25.0", |
| "requests>=2.32", |
| "chromadb>=0.5", |
| "gdown>=5.2", |
| "langgraph>=0.2", |
| "diskcache>=5.6", |
| "streamlit>=1.40", |
| "plotly>=5.24", |
| "pandas>=2.2", |
| ] |
|
|
| [project.optional-dependencies] |
| dev = [ |
| "pytest>=8.3", |
| "pytest-asyncio>=0.24", |
| "pytest-cov>=5.0", |
| "respx>=0.21", |
| "ruff>=0.7", |
| "mypy>=1.13", |
| "types-requests", |
| ] |
| ui = [ |
| "streamlit>=1.40", |
| "plotly>=5.24", |
| "pandas>=2.2", |
| ] |
|
|
| [build-system] |
| requires = ["hatchling"] |
| build-backend = "hatchling.build" |
|
|
| [tool.hatch.build.targets.wheel] |
| packages = ["src/nl_sql"] |
|
|
| [tool.pytest.ini_options] |
| testpaths = ["tests"] |
| addopts = "-ra --strict-markers --strict-config" |
| asyncio_mode = "auto" |
| filterwarnings = [ |
| "error", |
| |
| |
| "default::langchain_core._api.deprecation.LangChainPendingDeprecationWarning", |
| ] |
|
|
| [tool.ruff] |
| line-length = 100 |
| target-version = "py313" |
| src = ["src", "tests", "app"] |
|
|
| [tool.ruff.lint] |
| select = [ |
| "E", "W", |
| "F", |
| "I", |
| "N", |
| "UP", |
| "B", |
| "SIM", |
| "RUF", |
| "PT", |
| "RET", |
| "PIE", |
| ] |
| ignore = [ |
| "E501", |
| ] |
|
|
| [tool.ruff.lint.per-file-ignores] |
| "tests/**" = ["S101"] |
|
|
| [tool.mypy] |
| python_version = "3.13" |
| strict = true |
| mypy_path = "src" |
| explicit_package_bases = true |
| disallow_untyped_decorators = false |
|
|
| [[tool.mypy.overrides]] |
| module = ["tests.*"] |
| disallow_untyped_defs = false |
|
|
| [[tool.mypy.overrides]] |
| module = ["sqlglot.*"] |
| ignore_missing_imports = true |
|
|
| [[tool.mypy.overrides]] |
| module = ["chromadb.*"] |
| ignore_missing_imports = true |
|
|
| [[tool.mypy.overrides]] |
| module = ["diskcache.*"] |
| ignore_missing_imports = true |
|
|
| [[tool.mypy.overrides]] |
| module = ["plotly.*", "streamlit", "pandas", "pandas.*"] |
| ignore_missing_imports = true |
|
|