You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.4 KiB
85 lines
2.4 KiB
[build-system] |
|
requires = ["setuptools>=68"] |
|
build-backend = "setuptools.build_meta" |
|
|
|
[project] |
|
name = "plenum" |
|
version = "0.1.0" |
|
description = "Search, chat and research over parliamentary speeches and documents" |
|
readme = "README.md" |
|
requires-python = ">=3.10" |
|
license = { text = "AGPL-3.0-or-later" } |
|
authors = [{ name = "Lasse Edfast", email = "lasse@edfast.se" }] |
|
keywords = ["parliament", "open-data", "rag", "civic-tech", "full-text-search"] |
|
classifiers = [ |
|
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", |
|
"Programming Language :: Python :: 3", |
|
"Topic :: Text Processing :: Indexing", |
|
] |
|
|
|
# Derived from the actual import graph, not from a frozen environment, so the list |
|
# stays readable and reviewable. Run `python -m scripts.check_deps` to re-verify. |
|
dependencies = [ |
|
"fastapi>=0.110", |
|
"uvicorn[standard]>=0.27", |
|
"pydantic>=2.6", |
|
"psycopg2-binary>=2.9", |
|
"pgvector>=0.2.5", |
|
"openai>=1.30", |
|
"python-dotenv>=1.0", |
|
"PyYAML>=6.0", |
|
"requests>=2.31", |
|
"httpx>=0.27", |
|
"beautifulsoup4>=4.12", |
|
"bcrypt>=4.1", |
|
"cryptography>=42.0", |
|
"psutil>=5.9", |
|
] |
|
|
|
[project.optional-dependencies] |
|
# The MCP server is optional: the web app runs without it. |
|
mcp = ["fastmcp>=0.2"] |
|
dev = [ |
|
"pytest>=8.0", |
|
"ruff>=0.4", |
|
] |
|
|
|
[project.urls] |
|
Homepage = "https://github.com/lasseedfast/plenum" |
|
Source = "https://git.edfast.se/plenum/plenum" |
|
|
|
[project.scripts] |
|
plenum-ingest = "ingest.cli:main" |
|
|
|
[tool.setuptools] |
|
# Root-level modules kept for import compatibility with existing call sites. |
|
py-modules = ["postgres_client", "utils", "bootstrap", "parliament"] |
|
|
|
[tool.setuptools.packages.find] |
|
include = ["backend*", "packages*", "_postgres*", "ingest*"] |
|
exclude = ["tests*", "scripts*", "docs*", "frontend*"] |
|
|
|
[tool.setuptools.package-data] |
|
"_postgres" = ["*.sql", "migrations/*.sql"] |
|
|
|
[tool.ruff] |
|
line-length = 100 |
|
target-version = "py310" |
|
|
|
[tool.ruff.lint] |
|
select = ["E", "F", "W", "I", "UP", "B"] |
|
ignore = [ |
|
"E501", # line length is handled by the formatter |
|
"B008", # FastAPI's Depends() in defaults is idiomatic |
|
] |
|
|
|
[tool.ruff.lint.per-file-ignores] |
|
# Star-imports of the console helpers predate this config; tracked for cleanup. |
|
"backend/services/chat.py" = ["F403", "F405"] |
|
"backend/services/llm_tools.py" = ["F403", "F405"] |
|
"backend/services/mp_chat.py" = ["F403", "F405"] |
|
"scripts/debates.py" = ["F403", "F405"] |
|
|
|
[tool.pytest.ini_options] |
|
testpaths = ["tests"] |
|
pythonpath = ["."]
|
|
|