Repository navigation
v0.1.1
structguru v0.1.1
Bug-fix and robustness release. No API changes.
Bug fixes
Core processors
- RedactingProcessor: fix
RecursionErrorcrash on cyclic / self-referential payloads — cycle detection via object-id tracking - ExceptionDictProcessor: fix
ValueErrorcrash on malformedexc_infotuples (length ≠ 3) — gracefully ignored - ExceptionDictProcessor: fix incorrect chained-cause output when
raise X from Noneis used (__suppress_context__is now respected) - ExceptionDictProcessor: fix
include_locals=Truebeing 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
RuntimeErrorinstead 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, preventinggrpc_method/request_idfrom 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