pyproject.toml
Rama main · réplica de lectura del repositorio original.
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "bewerbungs-assistent"
version = "1.8.5"
description = "PBP — KI-gestuetzter Bewerbungsassistent als MCP-Server fuer Claude Desktop. Stellensuche, Bewerbungs-Tracking, Lebenslauf-/Anschreiben-Generierung, Interview-Coaching."
readme = "README.md"
license = "MIT"
requires-python = ">=3.11"
authors = [
{ name = "Markus Birzite" }
]
keywords = [
"mcp", "model-context-protocol", "claude", "claude-desktop",
"anthropic", "ai", "llm",
"bewerbung", "job-search", "career", "ats",
"lebenslauf", "cv", "resume", "anschreiben", "cover-letter",
"scraper", "stellensuche", "personalvermittlung",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: MIT License",
"Operating System :: Microsoft :: Windows",
"Operating System :: MacOS",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Office/Business",
"Topic :: Office/Business :: Scheduling",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Communications",
"Natural Language :: German",
]
dependencies = [
# #692/K6: Major-Version begrenzen. FastMCP 3.x hat interne APIs umgebaut
# (_prompt_manager entfiel) — ein ungepinntes >=2.0 liess den Bump lautlos
# durch. <4 verhindert, dass der naechste Major-Sprung erneut Interna bricht.
"fastmcp>=3.0,<4",
"uvicorn>=0.30",
"fastapi>=0.115",
"python-multipart>=0.0.9",
"httpx>=0.27",
"geopy>=2.4",
"beautifulsoup4>=4.12",
"lxml>=5.0",
# #500: Jobsuche ist Kern-Feature — JobSpy liefert Indeed/LinkedIn/Glassdoor/Google
# ohne Login. Vorher im [scraper]-Extra, war damit aber bei den meisten
# Installationen nicht aktiv -> Booster nicht sichtbar.
# #1252: 1.4.0 (19.10.2026) hat desired_order, JobResponse und create_logger entfernt und die Logger umgebaut;
# bis die Uebernahme gemessen ist, bleibt PBP bei 1.2/1.3 (beide Stellen und die pip-Zeile in INSTALLIEREN.bat gleich).
"python-jobspy>=1.2,<1.4",
]
[project.optional-dependencies]
scraper = [
"playwright>=1.40",
"beautifulsoup4>=4.12",
"lxml>=5.0",
"python-jobspy>=1.2,<1.4",
]
docs = [
"python-docx>=1.1",
"pypdf>=4.0",
"fpdf2>=2.7",
"matplotlib>=3.8",
# E19 (#750, v1.8.0-beta.0): Scan-PDF -> Bild fuers Komponenten-OCR.
# pypdfium2 bringt PDFium gebundelt mit (kein Poppler noetig — der
# alte pdf2image-Pfad aus #192 scheiterte genau daran).
"pypdfium2>=4.0",
"pillow>=10.0",
]
export = [
"openpyxl>=3.1",
]
email = [
"extract-msg>=0.48",
"icalendar>=5.0",
]
dev = [
"pytest>=8.0",
"pytest-asyncio>=0.23",
# tests/test_undefinierte_namen.py: ein Name, den es nicht gibt, faellt
# in Python erst zur Laufzeit auf — und ein `except` schluckt ihn still.
"pyflakes>=3.0",
]
all = [
"bewerbungs-assistent[scraper,docs,export,email]",
]
[project.urls]
Homepage = "https://github.com/MadGapun/PBP"
Repository = "https://github.com/MadGapun/PBP"
Documentation = "https://github.com/MadGapun/PBP/wiki"
Changelog = "https://github.com/MadGapun/PBP/blob/main/CHANGELOG.md"
Issues = "https://github.com/MadGapun/PBP/issues"
Releases = "https://github.com/MadGapun/PBP/releases"
[project.scripts]
bewerbungs-assistent = "bewerbungs_assistent:main"
[tool.hatch.build.targets.wheel]
packages = ["src/bewerbungs_assistent"]
[tool.pytest.ini_options]
# test_demo.py im Projekt-Root ist ein Dashboard-Launcher-Script, kein Pytest-Test.
# Ohne testpaths wuerde pytest es einsammeln und beim Start des Uvicorn-Servers haengen.
testpaths = ["tests"]