Skip to content

v0.1.1

Choose a tag to compare

@kidoz kidoz released this 18 Feb 07:32
· 348 commits to main since this release

structguru v0.1.1

Bug-fix and robustness release. No API changes.

Bug fixes

Core processors

  • RedactingProcessor: fix RecursionError crash on cyclic / self-referential payloads — cycle detection via object-id tracking
  • ExceptionDictProcessor: fix ValueError crash on malformed exc_info tuples (length ≠ 3) — gracefully ignored
  • ExceptionDictProcessor: fix incorrect chained-cause output when raise X from None is used (__suppress_context__ is now respected)
  • ExceptionDictProcessor: fix include_locals=True being a no-op — locals are now captured by walking raw traceback frames

Configuration & lifecycle

  • configure_structlog(): fix file-descriptor leak on reconfiguration — old handlers are now properly closed before removal
  • configure_queued_logging(): fix handler topology corruption on repeated calls — second call now raises RuntimeError instead of silently stacking queue handlers; internal helpers (e.g. _StructlogMsgFixer) are no longer selected as queue targets

Integrations

  • gRPC interceptor: fix context-variable leak between intercept_service() return and handler execution — contextvars are now cleared after wrapping, preventing grpc_method / request_id from leaking into unrelated logs
  • Celery: fix duplicate signal handler registration when setup_celery_logging() is called more than once — guarded by module-level flag

Housekeeping

  • Remove accidentally committed __pycache__ bytecode from VCS
  • Add CI workflow (GitHub Actions: lint, typecheck, test — Python 3.10–3.14)
  • Add integration docs (docs/integrations.md)
  • Add full-stack FastAPI example (examples/full_stack_fastapi/)
  • Add benchmarks (tests/benchmarks/)
  • Python 3.14 added to test matrix and classifiers

Test coverage

  • 172 tests (up from 95 in v0.1.0)
  • New regression tests for all bug fixes listed above