Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
682 changes: 21 additions & 661 deletions LICENSE

Large diffs are not rendered by default.

54 changes: 43 additions & 11 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,24 @@ classifiers = [
"Topic :: System :: Logging",
]
dependencies = [
"asyncio==3.4.3",
"lagom==2.6.0",
"pydantic==2.9.2",
"fastapi==0.100.0",
"python-socketio==5.12.1",
"python-socketio[client]==5.12.1",
"uvicorn[standard]==0.30.6",
"uvicorn-worker==0.2.0",
"python-multipart==0.0.10",
"httpx==0.27.2",
"lagom>=2.6.0",
"pydantic>=2.9.2",
"fastapi>=0.100.0",
"python-socketio>=5.12.1",
"python-socketio[client]>=5.12.1",
"uvicorn[standard]>=0.30.6",
"uvicorn-worker>=0.2.0",
"python-multipart>=0.0.10",
"httpx>=0.27.2",
]

[project.optional-dependencies]
django = ["django>=5.1.1"]
dev = [
"pytest>=8.3.3",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"ruff>=0.1.0",
]

[project.urls]
Expand All @@ -40,4 +48,28 @@ Repository = "https://github.com/Msameim181/Python-Logging-Best-Practice.git"
Issues = "https://github.com/Msameim181/Python-Logging-Best-Practice/issues"

[tool.hatch.build.targets.wheel]
packages = ["src/chromatrace"]
packages = ["src/chromatrace"]

[tool.ruff]
line-length = 100
target-version = "py310"

[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"C", # flake8-comprehensions
"B", # flake8-bugbear
]
ignore = ["E501"] # line length

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["F401"]

[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[pytest]
asyncio_mode=auto
asyncio_default_fixture_loop_scope="function"
asyncio_default_fixture_loop_scope=function
python_files = tests.py test_*.py *_tests.py *_test.py
33 changes: 19 additions & 14 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
asyncio==3.4.3
django==5.1.1
lagom==2.6.0
pydantic==2.9.2
fastapi==0.100.0
python-socketio==5.12.1
python-socketio[client]==5.12.1
pytest==8.3.3
pytest-asyncio==0.24.0
pytest-cov==6.0.0
uvicorn[standard]==0.30.6
uvicorn-worker==0.2.0
python-multipart==0.0.10
httpx==0.27.2
# Core dependencies
lagom>=2.6.0
pydantic>=2.9.2
fastapi>=0.100.0
python-socketio>=5.12.1
python-socketio[client]>=5.12.1
uvicorn[standard]>=0.30.6
uvicorn-worker>=0.2.0
python-multipart>=0.0.10
httpx>=0.27.2

# Optional: Django integration
django>=5.1.1

# Development dependencies
pytest>=8.3.3
pytest-asyncio>=0.24.0
pytest-cov>=6.0.0
ruff>=0.1.0
24 changes: 2 additions & 22 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,24 +1,4 @@
[metadata]
license_files = LICENSE

[tool.ruff]
line-length = 100
target-version = "py37"
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"C", # flake8-comprehensions
"B", # flake8-bugbear
]
ignore = ["E501"] # line length

[tool.ruff.per-file-ignores]
"__init__.py" = ["F401"]

[mypy]
python_version = 3.10
warn_return_any = True
warn_unused_configs = True
disallow_untyped_defs = True
name = chromatrace
description = Advanced logging for Python
2 changes: 1 addition & 1 deletion src/chromatrace/RabbitMQ.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ def callback(ch, method, properties, body):
with rabbitmq_trace_context(ch, properties):
on_message_callback(ch, method, properties, body)
self.channel.basic_consume(queue=queue, on_message_callback=callback, auto_ack=auto_ack)
self.channel.start_consuming()
self.channel.start_consuming()
2 changes: 1 addition & 1 deletion src/chromatrace/fastapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ async def dispatch(self, request: Request, call_next):
with RequestIdContext(request_id):
response = await call_next(request)
response.headers["X-Request-ID"] = trace_id_ctx.get()
return response
return response
1 change: 0 additions & 1 deletion src/chromatrace/logging_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,6 @@ def __init__(
super().__init__(
message_splitter=message_splitter,
log_splitter=log_splitter,
*args,
**kwargs,
)

Expand Down
3 changes: 2 additions & 1 deletion src/examples/adaptors/socket_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
from typing import Dict, List, Optional

import socketio
from pydantic import BaseModel, Field

from chromatrace import LoggingConfig, LoggingSettings
from chromatrace.tracer import trace_id_ctx
from pydantic import BaseModel, Field

logging_config = LoggingConfig(
LoggingSettings(
Expand Down
7 changes: 4 additions & 3 deletions src/examples/frameworks/api_app.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import multiprocessing

import uvicorn
from chromatrace import LoggingConfig
from chromatrace.fastapi import RequestIdMiddleware
from chromatrace.uvicorn import GetLoggingConfig, UvicornLoggingSettings
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from usecases import AnotherSample, ExampleService

from chromatrace import LoggingConfig
from chromatrace.fastapi import RequestIdMiddleware
from chromatrace.uvicorn import GetLoggingConfig, UvicornLoggingSettings


class APIService:
def __init__(
Expand Down
1 change: 1 addition & 0 deletions src/examples/frameworks/socket_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import socketio
import uvicorn

from chromatrace import (
LoggingConfig,
)
Expand Down
3 changes: 2 additions & 1 deletion src/examples/injection.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from chromatrace import LoggingSettings
from dependency import container
from frameworks.api_app import APIService
from frameworks.socket_app import SocketService
from lagom import Singleton

from chromatrace import LoggingSettings

container[LoggingSettings] = LoggingSettings(
application_level="Development",
enable_tracing=True,
Expand Down
3 changes: 2 additions & 1 deletion src/examples/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
import sys

import injection # noqa
from chromatrace import LoggingConfig, LoggingSettings, tracer
from dependency import container
from frameworks.api_app import APIService
from frameworks.socket_app import SocketService
from usecases.example_service import ExampleService
from usecases.sample import AnotherSample

from chromatrace import LoggingConfig, LoggingSettings, tracer

sys.stdout.reconfigure(encoding="utf-8")


Expand Down
3 changes: 2 additions & 1 deletion src/examples/tests/chromatrace_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
import injection # noqa
import pytest
from adaptors.socket_client import SocketClient, SocketClientConfig
from chromatrace import LoggingConfig
from dependency import container
from frameworks.api_app import APIService
from frameworks.socket_app import SocketService
from usecases.example_service import ExampleService, InnerService
from usecases.sample import AnotherSample

from chromatrace import LoggingConfig


class TestChromatrace:
@pytest.fixture(scope="class")
Expand Down
5 changes: 3 additions & 2 deletions test/logger_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
from io import StringIO

import pytest
from fastapi import FastAPI
from fastapi.testclient import TestClient

from chromatrace import (
LoggingConfig,
LoggingSettings,
Expand All @@ -15,8 +18,6 @@
from chromatrace.logging_settings import ApplicationLevelFilter, BasicFormatter
from chromatrace.socketio import SocketRequestIdMiddleware
from chromatrace.tracer import RequestIdFilter
from fastapi import FastAPI
from fastapi.testclient import TestClient


class TestLoggingConfiguration:
Expand Down