Skip to content

Commit 0c588e8

Browse files
authored
Merge pull request #18 from redb0/fix-toml
Update format pyproject.toml and fix code stule
2 parents 238ef5b + 91bc3a9 commit 0c588e8

20 files changed

+2008
-89
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,5 @@ workspace.code-workspace
3030
# Jupyter Notebook
3131
.ipynb_checkpoints/
3232

33-
# Poetry
34-
poetry.lock
35-
3633
# Build
3734
dist

fastapi_structlog/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
class BaseSettingsModel(BaseSettings):
1212
"""Basic model of the settings."""
13+
1314
model_config = SettingsConfigDict(
1415
arbitrary_types_allowed=True,
1516
env_ignore_empty=True,

fastapi_structlog/custom_processors.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ def hide_query_param(
1616
replace_pattern: str,
1717
) -> Callable[[WrappedLogger, str, EventDict], ProcessorReturnValue]:
1818
"""Hide the password query parameter."""
19+
1920
def hide(
2021
_: WrappedLogger,
2122
__: str,
@@ -24,6 +25,7 @@ def hide(
2425
for _ in find_by_value(event_dict, value_pattern, replace=replace_pattern):
2526
pass
2627
return event_dict
28+
2729
return hide
2830

2931

@@ -72,6 +74,7 @@ class CallsiteParameterAdderInKey(structlog.processors.CallsiteParameterAdder):
7274
logging parameters. An additional nesting level for this key
7375
will be created in `event_dict`.
7476
"""
77+
7578
def __init__(
7679
self,
7780
parameters: Collection[CallsiteParameter] = set(CallsiteParameter),
@@ -111,8 +114,12 @@ class ORJSONRenderer(structlog.processors.JSONRenderer):
111114
112115
Decodes a string of bytes received after serialization.
113116
"""
117+
114118
def __call__( # noqa: D102
115-
self, _: WrappedLogger, __: str, event_dict: EventDict,
119+
self,
120+
_: WrappedLogger,
121+
__: str,
122+
event_dict: EventDict,
116123
) -> Union[str, bytes]:
117124
result = self._dumps(event_dict, **self._dumps_kw)
118125
if isinstance(result, bytes):

fastapi_structlog/db_handler/handler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class QueueHandler(logging.handlers.QueueHandler):
3131
3232
Removes the conversion to a string in the base class.
3333
"""
34+
3435
def emit(self, record: logging.LogRecord) -> None: # noqa: D102
3536
if structlog is not None:
3637
context = structlog.contextvars.get_contextvars()
@@ -46,6 +47,7 @@ def emit(self, record: logging.LogRecord) -> None: # noqa: D102
4647

4748
class BaseDatabaseHandler(logging.Handler, Generic[T_]):
4849
"""Base class of the handler for logging into the database."""
50+
4951
def __init__( # noqa: PLR0913
5052
self,
5153
db_url: Union[str, URL],

fastapi_structlog/db_handler/model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
class LogModel(SQLModel):
1313
"""Basic model of logging into a database."""
14+
1415
id: Optional[int] = Field(
1516
title='ID',
1617
default=None,

fastapi_structlog/exceptions.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
"""Exception module."""
22

3+
34
class LogError(Exception):
45
"""Basic exception."""
56

7+
68
class SysLogConnectionError(LogError):
79
"""Syslog connection error."""

fastapi_structlog/factory.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Logger factory module."""
2+
23
from logging import Logger, getLogger
34
from typing import Any, Optional, Union
45

@@ -9,9 +10,12 @@
910

1011
class LoggerFactory(structlog.stdlib.LoggerFactory):
1112
"""Logger factory."""
12-
def __init__(self,
13-
logger: Union[Logger, str],
14-
ignore_frame_names: Optional[list[str]] = None) -> None:
13+
14+
def __init__(
15+
self,
16+
logger: Union[Logger, str],
17+
ignore_frame_names: Optional[list[str]] = None,
18+
) -> None:
1519
self.logger = logger
1620
super().__init__(ignore_frame_names=ignore_frame_names)
1721

fastapi_structlog/log.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Logger configuration module via structlog."""
2+
23
import logging
34
import logging.handlers
45
import sys
@@ -22,12 +23,14 @@
2223

2324
try:
2425
from structlog_sentry import SentryProcessor
26+
2527
find_structlog_sentry = True
2628
except ImportError:
2729
find_structlog_sentry = False
2830

2931
try:
3032
import orjson
33+
3134
find_orjson = True
3235
except ImportError:
3336
find_orjson = False
@@ -221,6 +224,7 @@ def base_formatter(settings: LogSettings) -> structlog.stdlib.ProcessorFormatter
221224

222225
class HandlerFactory(Generic[T2_]):
223226
"""An abstract factory for creating logging handlers."""
227+
224228
def __init__(
225229
self,
226230
handler: type[T2_],
@@ -246,6 +250,7 @@ def create(self, **kwargs: Any) -> T2_: # noqa: ANN401, D102
246250

247251
class SyslogHandlerFactory(HandlerFactory[logging.handlers.SysLogHandler]):
248252
"""Factory of handlers for syslog."""
253+
249254
def __init__(
250255
self,
251256
formatter: Optional[structlog.stdlib.ProcessorFormatter] = None,
@@ -277,6 +282,7 @@ def create_handler(
277282

278283
class StreamHandlerFactory(HandlerFactory['logging.StreamHandler[TextIO]']):
279284
"""Factory of handlers for console."""
285+
280286
def __init__(
281287
self,
282288
formatter: Optional[structlog.stdlib.ProcessorFormatter] = None,
@@ -293,6 +299,7 @@ def create_handler(
293299

294300
class FileHandlerFactory(HandlerFactory[TimedRotatingFileHandler]):
295301
"""Factory of handlers for file."""
302+
296303
def __init__(
297304
self,
298305
formatter: Optional[structlog.stdlib.ProcessorFormatter] = None,
@@ -327,12 +334,15 @@ def create_handler(
327334
path.parent.mkdir(parents=True, exist_ok=True)
328335

329336
return TimedRotatingFileHandler(
330-
filename=path, when=when, backupCount=backup_count,
337+
filename=path,
338+
when=when,
339+
backupCount=backup_count,
331340
)
332341

333342

334343
class DatabaseHandlerFactory(HandlerFactory[DatabaseHandler[T_]]):
335344
"""Factory of handlers for database."""
345+
336346
def __init__(
337347
self,
338348
formatter: Optional[structlog.stdlib.ProcessorFormatter] = None,
@@ -381,6 +391,7 @@ def create_handler( # noqa: PLR0913
381391

382392
class LoggerConfigurator:
383393
"""Logger configuration class."""
394+
384395
def __init__(self, settings: LogSettings) -> None:
385396
self.settings = settings
386397

fastapi_structlog/middleware/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Middleware for logging package."""
2+
23
from .access_log import AccessLogMiddleware
34
from .current_scope import CurrentScopeSetMiddleware
45
from .structlog import StructlogMiddleware

fastapi_structlog/middleware/access_log.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Access logging middleware module."""
2+
23
import http
34
import logging
45
import os
@@ -26,13 +27,15 @@
2627

2728
class AccessInfo(TypedDict, total=False):
2829
"""Access information with timestamps."""
30+
2931
response: Message
3032
start_time: float
3133
end_time: float
3234

3335

3436
class AccessLogMiddleware:
3537
"""Access logging middleware."""
38+
3639
DEFAULT_FORMAT = '%(client_addr)s - "%(request_line)s" %(status)s %(L)ss - "%(a)s"'
3740

3841
def __init__( # noqa: PLR0913
@@ -91,9 +94,9 @@ async def send_wrapper(response: Message) -> None:
9194
info['start_time'] = time.perf_counter()
9295
await self.app(scope, receive, send_wrapper)
9396
return
94-
except Exception as exc:
97+
except Exception:
9598
info['response']['status'] = 500
96-
raise exc
99+
raise
97100
finally:
98101
info['end_time'] = time.perf_counter()
99102

@@ -110,6 +113,7 @@ async def send_wrapper(response: Message) -> None:
110113

111114
class AccessLogAtoms(dict[str, Any]):
112115
"""Logging attributes."""
116+
113117
def __init__(self, scope: Scope, info: AccessInfo) -> None:
114118
for name, value in scope['headers']:
115119
self[f"{{{name.decode('latin1').lower()}}}i"] = value.decode('latin1')
@@ -180,7 +184,7 @@ def __getitem__(self, key: str) -> Any: # noqa: D105, ANN401
180184
return '-'
181185

182186
@staticmethod
183-
def _human_size(size: int, decimal_places: int=2) -> bytes:
187+
def _human_size(size: int, decimal_places: int = 2) -> bytes:
184188
_suffixes = ('bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB')
185189
order = int(log2(size) / 10) if size else 0
186190
human_size = f'{size / (1 << (order * 10)):.{decimal_places}f} {_suffixes[order]}'

0 commit comments

Comments
 (0)