Search, chat and research over parliamentary speeches and documents
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

[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 = ["."]