Ctrl K
ComunidadGuías…

pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[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"]