Skip to content

Dodaj PublicationNotFound — jawny brak publikacji w PBN (422 + "was not exists!")#3

Merged
mpasternak merged 1 commit into
mainfrom
feat/pbn-publication-not-found
Jul 14, 2026
Merged

Dodaj PublicationNotFound — jawny brak publikacji w PBN (422 + "was not exists!")#3
mpasternak merged 1 commit into
mainfrom
feat/pbn-publication-not-found

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co robi

Dodaje wyjątek PublicationNotFound(HttpException) i podnosi go z get_publication_by_id, gdy PBN jawnie sygnalizuje brak publikacji: HTTP 422 z markerem "was not exists!" w treści odpowiedzi (oryginalna pisownia błędu PBN; identyfikator w komunikacie jest zmienny, więc dopasowujemy sam marker).

Szczegóły

  • src/pbn_client/exceptions.py: nowa klasa PublicationNotFound(HttpException), dopisana do __all__.
  • src/pbn_client/__init__.py: eksport PublicationNotFound.
  • src/pbn_client/mixins/publications.py: get_publication_by_id łapie HttpException; przy 422 + markerze re-raise jako PublicationNotFound(e.status_code, e.url, e.content) from e. Treść bytes dekodowana utf-8 (errors="replace") przed sprawdzeniem markera.
  • Decyzja (świadoma): zwykły HTTP 404 NIE jest mapowany na PublicationNotFound — 404 bywa przejściowy i propaguje jako zwykły HttpException. Tylko sygnał 422-z-markerem oznacza definitywny brak.

Testy (tests/test_publications.py)

  • 422 + marker → PublicationNotFound (status_code/url/content zachowane, __cause__ ustawione),
  • 404 → zwykły HttpException (NIE PublicationNotFound),
  • 422 bez markera → zwykły HttpException,
  • treść bytes z markerem → PublicationNotFound,
  • issubclass(PublicationNotFound, HttpException) + eksport z pakietu,
  • happy path bez zmian.

Referencja: detekcja w monolicie BPP src/pbn_integrator/utils/publications.py (_pobierz_pojedyncza_prace).

uv run --isolated pytest -q → 49 passed; ruff check / ruff format --check czyste.

🤖 Generated with Claude Code

get_publication_by_id mapuje HTTP 422 z markerem "was not exists!"
(oryginalna pisownia błędu PBN) na PublicationNotFound(HttpException),
zachowując status_code/url/content i łańcuch przyczyn (from e).
Zwykły 404 celowo NIE jest mapowany — może być przejściowy i propaguje
jako zwykły HttpException. Treść bytes dekodowana utf-8 (errors=replace)
przed sprawdzeniem markera.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak
mpasternak force-pushed the feat/pbn-publication-not-found branch from 1c3fc5b to 877bf17 Compare July 14, 2026 17:19
@mpasternak
mpasternak merged commit e229f35 into main Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant