Skip to content

Retry on advanced-alchemy wrapped exceptions#12

Merged
lesnik512 merged 1 commit into
mainfrom
advanced-alchemy-retry
May 30, 2026
Merged

Retry on advanced-alchemy wrapped exceptions#12
lesnik512 merged 1 commit into
mainfrom
advanced-alchemy-retry

Conversation

@lesnik512

@lesnik512 lesnik512 commented May 30, 2026

Copy link
Copy Markdown
Member

Summary

  • _retry_handler now walks the __cause__ / __context__ chain (with a seen cycle guard) so postgres_retry fires when the retriable DBAPIError has been re-raised by advanced-alchemy's wrap_sqlalchemy_exception() as a RepositoryError / IntegrityError.
  • advanced-alchemy added to the dev dependency group only — no new runtime dependency; the chain walk is library-agnostic.
  • New parametrised test_postgres_retry_advanced_alchemy covers SQLSTATEs 08000 / 08003 / 40001 (retried) and 40002 (not retried) through the wrapped-exception path.

Closes #11.

Test plan

  • uv run ruff format / ruff check clean
  • uv run ty check clean
  • pytest in docker — 21/21 pass, 100% coverage on db_retry/retry.py
  • CI lint + pytest jobs green

🤖 Generated with Claude Code

Walk the __cause__/__context__ chain in _retry_handler so postgres_retry
fires when the retriable DBAPIError has been re-raised by advanced-alchemy's
wrap_sqlalchemy_exception() as a RepositoryError / IntegrityError.

Closes #11.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@lesnik512 lesnik512 self-assigned this May 30, 2026
@lesnik512 lesnik512 merged commit d00e7ed into main May 30, 2026
2 checks passed
@lesnik512 lesnik512 deleted the advanced-alchemy-retry branch May 30, 2026 12:01
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.

Allow to work with advanced-alchemy

1 participant