Files
bookshelf/pyproject.toml
Petr Polezhaev b8f82607f9 Fix archive plugins for НЭБ and Alib; add network integration tests
- html_scraper: add img_alt strategy (НЭБ titles from <img alt>), bold_text
  strategy (Alib entries from <p><b>), Windows-1251 encoding support,
  _cls_inner_texts() helper that strips inner HTML tags
- rsl: rewrite to POST SearchFilterForm[search] with CSRF token and CQL
  title:(words) AND author:(word) query format
- config: update rusneb (img_alt + correct author_class) and alib_web
  (encoding + bold_text) to match fixed plugin strategies
- tests: add tests/test_archives.py with network-marked tests for all six
  archive plugins; НЛР and ШПИЛ marked xfail (endpoints return HTTP 404)
- presubmit: exclude network tests from default run (-m "not network")

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 22:59:19 +03:00

64 lines
1.5 KiB
TOML

[tool.poetry]
name = "bookshelf"
version = "0.1.0"
description = "Photo-based book cataloger with AI identification"
authors = []
packages = [
{include = "app.py", from = "src"},
{include = "api.py", from = "src"},
{include = "config.py", from = "src"},
{include = "db.py", from = "src"},
{include = "errors.py", from = "src"},
{include = "files.py", from = "src"},
{include = "models.py", from = "src"},
{include = "logic", from = "src"},
{include = "plugins", from = "src"},
{include = "presubmit.py", from = "scripts"},
]
[tool.poetry.dependencies]
python = "^3.11"
fastapi = ">=0.111.0"
uvicorn = { version = ">=0.29.0", extras = ["standard"] }
python-multipart = ">=0.0.9"
openai = ">=1.0"
pyyaml = ">=6.0"
Pillow = ">=10.0"
aiofiles = ">=23.2.1"
httpx = ">=0.27"
mashumaro = "^3.20"
[tool.poetry.group.dev.dependencies]
black = ">=24.0.0"
flake8 = ">=7.0.0"
flake8-pyproject = ">=1.2.0"
pyright = ">=1.1"
pytest = ">=8.0"
numpy = "^2.4.2"
[tool.poetry.scripts]
serve = "app:main"
fmt = "presubmit:fmt"
presubmit = "presubmit:presubmit"
[tool.black]
line-length = 120
[tool.flake8]
max-line-length = 120
extend-ignore = ["E203"]
[tool.pyright]
pythonVersion = "3.14"
typeCheckingMode = "strict"
include = ["src", "tests", "scripts"]
[tool.pytest.ini_options]
pythonpath = ["src"]
markers = ["network: live HTTP requests to external services (deselect with -m 'not network')"]
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"