| [project] | |
| name = "shopify-support-bot" | |
| version = "0.1.0" | |
| description = "Embeddable Shopify support chatbot (info RAG + order tracking) on free LLMs" | |
| requires-python = ">=3.12,<3.13" | |
| dependencies = [ | |
| "fastapi>=0.115", | |
| "uvicorn[standard]>=0.32", | |
| "pydantic>=2.9", | |
| "pydantic-settings>=2.6", | |
| "sqlalchemy[asyncio]>=2.0", | |
| "psycopg[binary]>=3.2", | |
| "pgvector>=0.3", | |
| "alembic>=1.14", | |
| "httpx>=0.28", | |
| "fastembed>=0.4", | |
| "pypdf>=5.1", | |
| "openpyxl>=3.1", | |
| "python-docx>=1.1", | |
| "selectolax>=0.3.25", | |
| "python-multipart>=0.0.12", | |
| "tenacity>=9.0", | |
| "anyio>=4.6", | |
| "cryptography>=48.0.0", | |
| "langdetect>=1.0.9", | |
| "ddgs>=9.14.4", | |
| "xlrd>=2.0", | |
| ] | |
| [dependency-groups] | |
| dev = [ | |
| "pytest>=8.3", | |
| "pytest-asyncio>=0.24", | |
| "respx>=0.22", | |
| "aiosqlite>=0.20", | |
| "ruff>=0.8", | |
| "fpdf2>=2.8", | |
| ] | |
| [tool.pytest.ini_options] | |
| asyncio_mode = "auto" | |
| pythonpath = ["."] | |
| testpaths = ["tests"] | |
| filterwarnings = ["ignore::DeprecationWarning"] | |
| markers = [ | |
| "slow: tests that download/load the embedding model", | |
| ] | |
| [tool.ruff] | |
| line-length = 100 | |
| target-version = "py312" | |
| [tool.ruff.lint] | |
| select = ["E", "F", "I", "UP", "B"] | |
| [tool.ruff.lint.per-file-ignores] | |
| "tests/**" = ["E501"] # test fixtures/data can be long | |
| [tool.ruff.lint.flake8-bugbear] | |
| # FastAPI idiom: dependency markers in argument defaults are intentional. | |
| extend-immutable-calls = [ | |
| "fastapi.Depends", | |
| "fastapi.File", | |
| "fastapi.Header", | |
| "fastapi.Query", | |
| "fastapi.Form", | |
| ] | |
| [tool.uv] | |
| package = false | |