Update dependency structlog to v25#1773
Open
k1h-renovate[bot] wants to merge 2 commits into
Open
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #1773 +/- ##
=======================================
Coverage 92.91% 92.91%
=======================================
Files 30 30
Lines 5052 5052
=======================================
Hits 4694 4694
Misses 358 358 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
1bf82fa to
505ad67
Compare
505ad67 to
8419671
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==21.5.0→==25.5.0Warning
Some dependencies could not be looked up. Check the warning logs for more information.
Release Notes
hynek/structlog (structlog)
v25.5.0Compare Source
Deprecated
structlog.dev.ConsoleRenderer()'s pad_event argument has been renamed to pad_event_to to differentiate it from the boolean pad_level argument.pad_event is now deprecated.
Added
Added
structlog.dev.ConsoleRenderer.get_active()that returns the currently activestructlog.dev.ConsoleRenderer().#749
structlog.dev.ConsoleRenderer()now supports setting theexception_formatterattribute.You can now disable the pretty-printing of exceptions by setting it to
structlog.dev.plain_traceback:Same goes for sort_keys, columns, colors, force_colors, level_styles, pad_event_to, event_key, timestamp_key, and repr_native_str.
#749
#756
#757
#759
Added
structlog.dev.ConsoleRenderer.get_default_column_styles()for reuse the default column styles.#741
structlog.testing.capture_logs()now optionally accepts processors to apply before capture.#728
structlog.dev.RichTracebackFormatternow exposes the upstream code_width parameter.Default width is now
Nonefor full terminal width.Full terminal width is now handled by Rich itself, bringing support for reflow and
COLUMNenvironment variable.Passing
-1for width is now deprecated and automatically replaced byNone.#717
Native loggers now allow the passing of a dictionary for dictionary-based interpolation
log.info("hello %(name)s!", {"name": "world"}).#748
On Python 3.11+,
structlog.processors.CallsiteParameterAddernow supportsCallsiteParameter.QUAL_NAMEthat adds the qualified name of the callsite, including scope and class names.This is only available for structlog-originated events since the standard library has no equivalent.
structlog.stdlib.LoggerFactorynow supports the stacklevel parameter.#763
Changed
structlog.dev.rich_traceback()now throws a more helpful error when Rich is missing.#735
Fixed
structlog.processors.MaybeTimeStampernow respects the key argument when determining whether to overwrite the timestamp field.#747
structlog.tracebacks.extract()no longer raises aRecursionErrorwhen the cause chain of an exception contains itself.#739
Default config now respects
FORCE_COLORon Windows.#758
v25.4.0Compare Source
Added
Support for Python 3.14 and Python 3.13.4.
Python 3.14 has an backwards-incompatible change to
logging.Logger.isEnabledFor()(it now always returns False if a log entry is in flight) that has been backported to 3.13.4 (expected on 2025-06-03).It mainly affects
structlog.stdlib.filter_by_level().#723
structlog.tracebacksnow handles exception groups.structlog.tracebacks.Stackhas two new fields,is_group: boolandexceptions: list[Trace].This works similarly to what Rich v14.0.0 does.
#720
Fixed
structlog.processors.ExceptionPrettyPrinternow respects the exception_formatter arguments instead of always using the default formatter.#724
v25.3.0Compare Source
Fixed
structlog.processors.TimeStampernow again uses timestamps using UTC for custom format strings whenutc=True.#713
v25.2.0Compare Source
Added
structlog.tracebacks.Stacknow includes anexc_notesfield reflecting the notes attached to the exception.#684
Changed
structlog.stdlib.BoundLogger's binding-related methods now also returnSelf.#694
structlog.processors.TimeStampernow produces internally timezone-awaredatetimeobjects.Default output hasn't changed, but you can now use
%zin your fmt string.#709
Fixed
structlog.dev.RichTracebackFormatterfor imports.#699
structlog.processors.LogfmtRendererfor imports.#701
v25.1.0Compare Source
Added
Add
structlog.stdlib.render_to_log_args_and_kwargsprocessor.Same as
structlog.stdlib.render_to_log_kwargs, but also allows to pass positional arguments tologging.With it, you do not need to add
structlog.stdlib.PositionalArgumentsFormatterprocessor to format positional arguments from structlog loggers.#668
Native loggers now have
is_enabled_for()andget_effective_level()methods that mirror the behavior of the standard library'slogging.Logger.isEnabledFor()andlogging.Logger.getEffectiveLevel().#689
Changed
structlog.typing.BindableLoggerprotocol now returnsSelfinstead ofBindableLogger.This adds a dependency on typing-extensions for Pythons older than 3.11.
#642
#659
structlog.dev.ConsoleRendererwill quote string value with special characters.#647
structlog.stdlib.recreate_defaults()now also addsstructlog.stdlib.PositionalArgumentsFormatter.In default native mode, this is done by the loggers at the edge.
structlog.make_filtering_bound_logger()now also accepts a string for min_level.Fixed
Fix handling calls to
{logger}.exception()outside of exception blocks.Depending on the structlog configuration,
this either resulted in an event dict key
exception: "MISSING"or lead to an error.Now, an invalid or missing
exc_infowill just be ignored.This means, that calling
{logger}.exception()outside of an exception block is basically the same as calling{logger}.error().#634
#680
Instantiating
structlog.dev.ConsoleRendererdoes not mutate the passed styles dict anymore.#669
The native
FilteringBoundLogger.fatal()method now maps to the critical level, as it does in the standard library.Note that the level is discouraged to use there, so we recommend to stick to
error()orcritical().#677
structlog.tracebacks.ExceptionDictTransformernow actually acceptsNoneforlocals_max_lengthandlocals_max_string.#675
v24.4.0Compare Source
Changed
No code changes since 24.3.0
v24.3.0Compare Source
Added
Restore feature parity between
structlog.traceback.ExceptionDictTransformerand Rich's traceback extractor:repr()on strings, too (improves handling ofSecretStrimplementations).locals_max_lengthconfig optionlocals_hide_sunderconfig optionlocals_hide_dunderconfig optionsuppressconfig option#627
Changed
structlog.testing.capture_logs()now maps theexceptionlog level toerror(as it's elsewhere).#628
v24.2.0Compare Source
Added
It is now possible to disable log level-padding in
structlog.dev.LogLevelColumnFormatterandstructlog.dev.ConsoleRenderer.#599
The
structlog.processors.CallsiteParameterAddercan now be pickled.#603
structlog.processors.CallsiteParameterAddernow also works withstructlog.stdlib.BoundLogger's non-standard async methods (ainfo(), and so forth)#618
Changed
structlog.processors.LogfmtRenderernow escapes newlines.#592
structlog.processors.LogfmtRenderernow escapes backslashes and double quotes.#594
structlog.processors.CallsiteParameterAdderhas been optimized to be about 2x faster.#606
Fixed
structlog.stdlib.render_to_log_kwargsnow correctly passes stacklevel as a kwarg to stdlib logging.#619
v24.1.0Compare Source
Fixed
The lazy logger proxy returned by
structlog.get_logger()now returns its initial values when asked for context.When asked for context before binding for the first time, it returned an empty dictionary in 23.3.0.
The displayed level name when using
structlog.stdlib.BoundLogger.exception()is"error"instead of"exception".Fixes regression in 23.3.0.
#584
Don't ignore the
widthargument ofRichTracebackFormatter.#587
v23.3.0Compare Source
Added
The colorful development logger is now even more configurable!
Choose freely your colors and the order of the key-value pairs!
Implement your own formatters for certain keys!
Implementing the output on top of the new columns API has changed the default very slightly, but shouldn't be noticeable.
#577
Async log methods (those starting with an
a) now also support the collection of callsite information usingstructlog.processors.CallsiteParameterAdder.#565
Changed
structlog.stdlib.recreate_defaults()now also addsstructlog.stdlib.add_logger_nameto the processors.Check out the updated screenshot!
Fixed
The return value from
get_logger()(aBoundLoggerLazyProxy) now passesisinstance-checks againststructlog.typing.BindableLoggeron Python 3.12.#561
structlog.threadlocal.tmp_bind()now also works withBoundLoggerLazyProxy(in other words: before anything is bound to a bound logger).stdlib:
ProcessorFormattercan now be told to not render the log record message usinggetMessageand juststr(record.msg)instead.#550
stdlib:
structlog.stdlib.BoundLogger.exception()'s handling ofLogRecord.exc_infois now set consistent withlogging.#571
#572
v23.2.0Compare Source
Removed
Added
Official support for Python 3.12.
#515
structlog.processors.MaybeTimeStamperthat only adds a timestamp if there isn't one already.#81
structlog.dev.ConsoleRenderernow supports renamed timestamp keys using the timestamp_key parameter.#541
structlog.dev.RichTracebackFormatterthat allows to configure the traceback formatting.#542
Fixed
FilteringBoundLogger.exception()andFilteringBoundLogger.aexception()now support positional argument formatting like the rest of the methods.#531
structlog.processors.format_exc_info()andstructlog.dev.ConsoleRendererdo not crash anymore when told to format a non-existent exception.#533
v23.1.0Compare Source
Added
structlog.stdlib.BoundLoggernow has, analogously to our native logger, a full set of async log methods prefixed with ana:await log.ainfo("event!")#502
The default configuration now respects the presence of
FORCE_COLOR(regardless of its value, unless an empty string).This disables all heuristics whether it makes sense to use colors.
#503
The default configuration now respects the presence of
NO_COLOR(regardless of its value, unless an empty string).This disables all heuristics whether it makes sense to use colors and overrides
FORCE_COLOR.#504
Fixed
ConsoleRenderer now reuses the
_figure_out_exc_infoto process theexc_infoargument likeExceptionRendererdoes.This prevents crashes if the actual Exception is passed for the exc_info argument instead of a tuple or
True.#482
FilteringBoundLogger.aexception()now extracts the exception info usingsys.exc_info()before passing control to the asyncio executor (where original exception info is no longer available).#488
v22.3.0Compare Source
Changed
FilteringBoundLogger(used by default) is now only attempted if positional arguments are passed.This prevents crashes if something different than a string is passed for the event argument.
#475
Fixed
#478
v22.2.0Compare Source
Deprecated
structlog.__version__).Please use
importlib.metadatainstead (for Python 3.7: the importlib-metadata PyPI package).structlog.typesmodule is now deprecated in favor of thestructlog.typingmodule.It seems like the Python typing community is settling on this name.
Added
FilteringBoundLogger(used by default) now allows for string interpolation using positional arguments:#454
FilteringBoundLoggernow also has support for asyncio-based logging.Instead of a wrapper class like
structlog.stdlib.AsyncBoundLogger, async equivalents have been added for all logging methods.So instead of
log.info("hello")you can also writeawait log.ainfo("hello")in async functions and methods.This seems like the better approach and if it's liked by the community,
structlog.stdlib.BoundLoggerwill get those methods too.#457
Changed
Have a look if you haven't lately!
Especially the graphs in the standard library chapter have proven valuable to many.
Fixed
:) for seconds.v22.1.0Compare Source
Removed
Deprecated
The entire
structlog.threadlocalmodule is deprecated.Please use the primitives from
structlog.contextvarsinstead.If you're using the modern APIs (
bind_threadlocal()/merge_threadlocal()) it's enough to replace them 1:1 with theircontextvarscounterparts.The old approach around
wrap_dict()has been discouraged for a while.Currently there are no concrete plans to remove the module, but no patches against it will be accepted from now on.
#409
Added
structlog.processors.StackInfoRenderernow has an additional_ignores parameter that allows you to filter out your own logging layer.#396
structlog.WriteLogger, a faster – but more low-level – alternative tostructlog.PrintLogger.It works the way
PrintLoggerused to work in previous versions.#403
#404
structlog.make_filtering_bound_logger()-returned loggers now also have alog()method to match thestructlog.stdlib.BoundLoggersignature closer.#413
structlog.tracebacksmodule,and most notably the
structlog.tracebacks.ExceptionDictTransformerwhich can be used with the newstructlog.processors.ExceptionRendererto render JSON tracebacks.#407
structlog.stdlib.recreate_defaults(log_level=logging.NOTSET)that recreates structlog's defaults on top of standard library'slogging.It optionally also configures
loggingto log to standard out at the passed log level.#428
structlog.processors.EventRenamerallows you to rename the hitherto hard-coded event dict keyeventto something else.Optionally, you can rename another key to
eventat the same time, too.So adding
EventRenamer(to="msg", replace_by="_event")to your processor pipeline will rename the standardeventkey tomsgand then rename the_eventkey toevent.This allows you to use the
eventkey in your own log files and to have consistent log message keys across languages.structlog.dev.ConsoleRenderer(event_key="event")now allows to customize the name of the key that is used for the log message.Changed
structlog.make_filtering_bound_logger()now returns a method with the same signature for all log levels, whether they are active or not.This ensures that invalid calls to inactive log levels are caught immediately and don't explode once the log level changes.
#401
structlog.PrintLogger– that is used by default – now usesprint()for printing, making it a better citizen for interactive terminal applications.#399
structlog.testing.capture_logsnow works for already initialized bound loggers.#408
structlog.processors.format_exc_info()is no longer a function, but an instance ofstructlog.processors.ExceptionRenderer.Its behavior has not changed.
#407
structlog.contextvars.merge_contextvarsprocessor.That means you can use
structlog.contextvarsfeatures without configuring structlog.Fixed
bind,unbind,try_unbindandnewmethods in theFilteringBoundLoggerProtocol.This makes it easier to use objects of type
FilteringBoundLoggerin a typed context.#392
sys.stdouts are now handled more gracefully byConsoleRenderer(that's used by default).#404
structlog.stdlib.render_to_log_kwargs()now correctly handles the presence ofexc_info,stack_info, andstackLevelin the event dictionary.They are transformed into proper keyword arguments instead of putting them into the
extradictionary.#424,
#427
Configuration
📅 Schedule: (in timezone Europe/Stockholm)
* 18-23,0-5 * * 1-5)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.