Render ``event_dict`` as a list of ``Key=repr(Value)`` pairs. Args: sort_keys: Whether to sort keys when formatting. key_order: List of keys that should be rendered in this exact order. Missing keys will be rendered as ``None``, extra keys dependin
| 66 | |
| 67 | |
| 68 | class KeyValueRenderer: |
| 69 | """ |
| 70 | Render ``event_dict`` as a list of ``Key=repr(Value)`` pairs. |
| 71 | |
| 72 | Args: |
| 73 | sort_keys: Whether to sort keys when formatting. |
| 74 | |
| 75 | key_order: |
| 76 | List of keys that should be rendered in this exact order. Missing |
| 77 | keys will be rendered as ``None``, extra keys depending on |
| 78 | *sort_keys* and the dict class. |
| 79 | |
| 80 | drop_missing: |
| 81 | When ``True``, extra keys in *key_order* will be dropped rather |
| 82 | than rendered as ``None``. |
| 83 | |
| 84 | repr_native_str: |
| 85 | When ``True``, :func:`repr()` is also applied to native strings. |
| 86 | |
| 87 | .. versionadded:: 0.2.0 *key_order* |
| 88 | .. versionadded:: 16.1.0 *drop_missing* |
| 89 | .. versionadded:: 17.1.0 *repr_native_str* |
| 90 | """ |
| 91 | |
| 92 | def __init__( |
| 93 | self, |
| 94 | sort_keys: bool = False, |
| 95 | key_order: Sequence[str] | None = None, |
| 96 | drop_missing: bool = False, |
| 97 | repr_native_str: bool = True, |
| 98 | ): |
| 99 | self._ordered_items = _items_sorter(sort_keys, key_order, drop_missing) |
| 100 | |
| 101 | if repr_native_str is True: |
| 102 | self._repr = repr |
| 103 | else: |
| 104 | |
| 105 | def _repr(inst: Any) -> str: |
| 106 | if isinstance(inst, str): |
| 107 | return inst |
| 108 | |
| 109 | return repr(inst) |
| 110 | |
| 111 | self._repr = _repr |
| 112 | |
| 113 | def __call__( |
| 114 | self, _: WrappedLogger, __: str, event_dict: EventDict |
| 115 | ) -> str: |
| 116 | return " ".join( |
| 117 | k + "=" + self._repr(v) for k, v in self._ordered_items(event_dict) |
| 118 | ) |
| 119 | |
| 120 | |
| 121 | class LogfmtRenderer: |
no outgoing calls
searching dependent graphs…