From af7ef308c815227fe68a1d36b08ef77ed4561ce2 Mon Sep 17 00:00:00 2001 From: Alexander Demin Date: Thu, 22 Feb 2024 17:04:18 +0000 Subject: [PATCH 01/11] Add skip_level_padding to ConsoleRenderer --- src/structlog/dev.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 315e91c6..9dc861ed 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -289,8 +289,9 @@ class LogLevelColumnFormatter: level_styles: dict[str, str] | None reset_style: str width: int + skip_padding: bool - def __init__(self, level_styles: dict[str, str], reset_style: str) -> None: + def __init__(self, level_styles: dict[str, str], reset_style: str, skip_padding: bool = False) -> None: self.level_styles = level_styles if level_styles: self.width = len( @@ -300,6 +301,7 @@ def __init__(self, level_styles: dict[str, str], reset_style: str) -> None: else: self.width = 0 self.reset_style = "" + self.skip_padding = skip_padding def __call__(self, key: str, value: object) -> str: level = cast(str, value) @@ -309,7 +311,8 @@ def __call__(self, key: str, value: object) -> str: else self.level_styles.get(level, "") ) - return f"[{style}{_pad(level, self.width)}{self.reset_style}]" + padded = _pad(level, self.width) if not self.skip_padding else level + return f"[{style}{padded}{self.reset_style}]" _NOTHING = object() @@ -538,6 +541,7 @@ def __init__( # noqa: PLR0912 event_key: str = "event", timestamp_key: str = "timestamp", columns: list[Column] | None = None, + skip_level_padding: bool = False, ): self._exception_formatter = exception_formatter self._sort_keys = sort_keys @@ -658,7 +662,7 @@ def add_meaningless_arg(arg: str) -> None: Column( "level", LogLevelColumnFormatter( - level_to_color, reset_style=styles.reset + level_to_color, reset_style=styles.reset, skip_padding=skip_level_padding ), ), Column( From 41c54991d41a98cc5360d2bee2adfae37deac336 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 22 Feb 2024 17:06:18 +0000 Subject: [PATCH 02/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/structlog/dev.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 9dc861ed..28c81dcd 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -291,7 +291,12 @@ class LogLevelColumnFormatter: width: int skip_padding: bool - def __init__(self, level_styles: dict[str, str], reset_style: str, skip_padding: bool = False) -> None: + def __init__( + self, + level_styles: dict[str, str], + reset_style: str, + skip_padding: bool = False, + ) -> None: self.level_styles = level_styles if level_styles: self.width = len( @@ -662,7 +667,9 @@ def add_meaningless_arg(arg: str) -> None: Column( "level", LogLevelColumnFormatter( - level_to_color, reset_style=styles.reset, skip_padding=skip_level_padding + level_to_color, + reset_style=styles.reset, + skip_padding=skip_level_padding, ), ), Column( From 202c6ef685af464c9eef8dc4d45e359ad1124de4 Mon Sep 17 00:00:00 2001 From: Alexander Demin Date: Tue, 27 Feb 2024 12:49:04 +0100 Subject: [PATCH 03/11] Re-use existing width argument --- src/structlog/dev.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 28c81dcd..1ae868ad 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -283,30 +283,27 @@ class LogLevelColumnFormatter: What to use to reset the style after the level name. Ignored if if *level_styles* is None. + width: + The width to pad the level to. If 0, no padding is done. + .. versionadded:: 23.3.0 + .. versionadded:: 24.1.0 *width* """ level_styles: dict[str, str] | None reset_style: str width: int - skip_padding: bool - def __init__( - self, - level_styles: dict[str, str], - reset_style: str, - skip_padding: bool = False, - ) -> None: + def __init__(self, level_styles: dict[str, str], reset_style: str, width: int | None = None) -> None: self.level_styles = level_styles if level_styles: - self.width = len( + self.width = 0 if width == 0 else len( max(self.level_styles.keys(), key=lambda e: len(e)) ) self.reset_style = reset_style else: self.width = 0 self.reset_style = "" - self.skip_padding = skip_padding def __call__(self, key: str, value: object) -> str: level = cast(str, value) @@ -316,8 +313,7 @@ def __call__(self, key: str, value: object) -> str: else self.level_styles.get(level, "") ) - padded = _pad(level, self.width) if not self.skip_padding else level - return f"[{style}{padded}{self.reset_style}]" + return f"[{style}{_pad(level, self.width)}{self.reset_style}]" _NOTHING = object() @@ -493,6 +489,10 @@ class ConsoleRenderer: rename it e.g. using `structlog.processors.EventRenamer`. Ignored if *columns* are passed. + pad_level: + Whether to pad log level with blanks to the longest amongst all + level label. + Requires the Colorama_ package if *colors* is `True` **on Windows**. Raises: @@ -532,6 +532,7 @@ class ConsoleRenderer: .. versionadded:: 22.1.0 *event_key* .. versionadded:: 23.2.0 *timestamp_key* .. versionadded:: 23.3.0 *columns* + .. versionadded:: 24.1.0 *pad_level* """ def __init__( # noqa: PLR0912 @@ -546,7 +547,7 @@ def __init__( # noqa: PLR0912 event_key: str = "event", timestamp_key: str = "timestamp", columns: list[Column] | None = None, - skip_level_padding: bool = False, + pad_level: bool = True, ): self._exception_formatter = exception_formatter self._sort_keys = sort_keys @@ -654,6 +655,8 @@ def add_meaningless_arg(arg: str) -> None: postfix="]", ) + level_width = 0 if not pad_level else None + self._columns = [ Column( timestamp_key, @@ -667,9 +670,7 @@ def add_meaningless_arg(arg: str) -> None: Column( "level", LogLevelColumnFormatter( - level_to_color, - reset_style=styles.reset, - skip_padding=skip_level_padding, + level_to_color, reset_style=styles.reset, width=level_width ), ), Column( From 2377314a15a4f21882f701ff6d19f4b665cc4bda Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 27 Feb 2024 11:51:15 +0000 Subject: [PATCH 04/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/structlog/dev.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 1ae868ad..22324baf 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -294,11 +294,18 @@ class LogLevelColumnFormatter: reset_style: str width: int - def __init__(self, level_styles: dict[str, str], reset_style: str, width: int | None = None) -> None: + def __init__( + self, + level_styles: dict[str, str], + reset_style: str, + width: int | None = None, + ) -> None: self.level_styles = level_styles if level_styles: - self.width = 0 if width == 0 else len( - max(self.level_styles.keys(), key=lambda e: len(e)) + self.width = ( + 0 + if width == 0 + else len(max(self.level_styles.keys(), key=lambda e: len(e))) ) self.reset_style = reset_style else: From 548e636cc0e46f09786f48c0e8d4ad1b90b31b88 Mon Sep 17 00:00:00 2001 From: Alexander Demin Date: Sun, 3 Mar 2024 14:59:44 +0100 Subject: [PATCH 05/11] Fix src/structlog/dev.py:545:9: PLR0915 --- src/structlog/dev.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 22324baf..1e61d8e3 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -357,6 +357,9 @@ class RichTracebackFormatter: color_system: Literal[ "auto", "standard", "256", "truecolor", "windows" ] = "truecolor" + color_system: Literal["auto", "standard", "256", "truecolor", "windows"] = ( + "truecolor" + ) show_locals: bool = True max_frames: int = 100 theme: str | None = None @@ -542,7 +545,7 @@ class ConsoleRenderer: .. versionadded:: 24.1.0 *pad_level* """ - def __init__( # noqa: PLR0912 + def __init__( # noqa: PLR0912, PLR0915 self, pad_event: int = _EVENT_WIDTH, colors: bool = _has_colors, From 43defeeabcc156f0776f36f3f31578e5b7b3ebbd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 3 Mar 2024 14:01:12 +0000 Subject: [PATCH 06/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/structlog/dev.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 1e61d8e3..391bb57c 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -357,9 +357,9 @@ class RichTracebackFormatter: color_system: Literal[ "auto", "standard", "256", "truecolor", "windows" ] = "truecolor" - color_system: Literal["auto", "standard", "256", "truecolor", "windows"] = ( - "truecolor" - ) + color_system: Literal[ + "auto", "standard", "256", "truecolor", "windows" + ] = "truecolor" show_locals: bool = True max_frames: int = 100 theme: str | None = None From 6d545d8cb9b14b99a19009a37c46b23002fcfe94 Mon Sep 17 00:00:00 2001 From: Alexander Demin Date: Sun, 3 Mar 2024 15:03:55 +0100 Subject: [PATCH 07/11] Fix accidentally duplicated "color_system" --- src/structlog/dev.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 391bb57c..197e185e 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -354,12 +354,9 @@ class RichTracebackFormatter: .. versionadded:: 23.2.0 """ - color_system: Literal[ - "auto", "standard", "256", "truecolor", "windows" - ] = "truecolor" - color_system: Literal[ - "auto", "standard", "256", "truecolor", "windows" - ] = "truecolor" + color_system: Literal["auto", "standard", "256", "truecolor", "windows"] = ( + "truecolor" + ) show_locals: bool = True max_frames: int = 100 theme: str | None = None From b42a30ec51fd612ad99e979d76cadf80a887f980 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 3 Mar 2024 14:07:25 +0000 Subject: [PATCH 08/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/structlog/dev.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 197e185e..cb1b89fc 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -354,9 +354,9 @@ class RichTracebackFormatter: .. versionadded:: 23.2.0 """ - color_system: Literal["auto", "standard", "256", "truecolor", "windows"] = ( - "truecolor" - ) + color_system: Literal[ + "auto", "standard", "256", "truecolor", "windows" + ] = "truecolor" show_locals: bool = True max_frames: int = 100 theme: str | None = None From cc5faa61d41e354b90ee18330c8e08a4e632dcc7 Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Tue, 5 Mar 2024 10:07:46 +0100 Subject: [PATCH 09/11] Update src/structlog/dev.py --- src/structlog/dev.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index cb1b89fc..78f39058 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -283,8 +283,8 @@ class LogLevelColumnFormatter: What to use to reset the style after the level name. Ignored if if *level_styles* is None. - width: - The width to pad the level to. If 0, no padding is done. + width: + The width to pad the level to. If 0, no padding is done. .. versionadded:: 23.3.0 .. versionadded:: 24.1.0 *width* From aca4c62ab3e4d85d4b245db6b808f8b14770f353 Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Tue, 5 Mar 2024 10:07:50 +0100 Subject: [PATCH 10/11] Update src/structlog/dev.py --- src/structlog/dev.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 78f39058..482eb80a 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -539,7 +539,7 @@ class ConsoleRenderer: .. versionadded:: 22.1.0 *event_key* .. versionadded:: 23.2.0 *timestamp_key* .. versionadded:: 23.3.0 *columns* - .. versionadded:: 24.1.0 *pad_level* + .. versionadded:: 24.2.0 *pad_level* """ def __init__( # noqa: PLR0912, PLR0915 From b27ab5c718e9b82c39d4a9da709334766f575476 Mon Sep 17 00:00:00 2001 From: Hynek Schlawack Date: Tue, 5 Mar 2024 10:07:55 +0100 Subject: [PATCH 11/11] Update src/structlog/dev.py --- src/structlog/dev.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/structlog/dev.py b/src/structlog/dev.py index 482eb80a..b1175cd3 100644 --- a/src/structlog/dev.py +++ b/src/structlog/dev.py @@ -287,7 +287,7 @@ class LogLevelColumnFormatter: The width to pad the level to. If 0, no padding is done. .. versionadded:: 23.3.0 - .. versionadded:: 24.1.0 *width* + .. versionadded:: 24.2.0 *width* """ level_styles: dict[str, str] | None