traceme
Is a structlog helper library that helps you to debug and trace your
code. It aims to replace print debugging with a more powerful and
permanent solution.
Installation
pip install traceme
Usage
import math
from collections.abc import Callable
import structlog
import traceme
logger = structlog.get_logger()
@traceme.info(exit=True)
def add(a: int, b: int, cont: Callable[[int], None]) -> None:
cont(a + b)
@traceme.info(exit=True)
def square(a: int, cont: Callable[[int], None]) -> None:
cont(a * a)
@traceme.info(exit=True)
def sqrt(a: int, cont: Callable[[int], None]) -> None:
cont(int(math.sqrt(a)))
@traceme.info(exit=True)
def pythagoras(a: int, b: int, cont: Callable[[int], None]) -> None:
square(
a,
lambda a2: square(
b,
lambda b2: add(
a2,
b2,
lambda a2b2: sqrt(
a2b2,
cont,
),
),
),
)
if __name__ == "__main__":
traceme.configure()
pythagoras(3, 4, lambda result: logger.info("The result is", result=result))
This will output:
❯ poetry run python tests/test_pythagoras.py
Switching traceme to Environment.PRODUCTION will remove all the indentation.
traceme.configure(Environment.PRODUCTION)
{"event": "pythagoras", "timestamp": "2024-05-25T09:49:09.802510Z", "level": "info"}
{"event": "square", "timestamp": "2024-05-25T09:49:09.802929Z", "level": "info"}
{"event": "square", "timestamp": "2024-05-25T09:49:09.802991Z", "level": "info"}
{"event": "add", "timestamp": "2024-05-25T09:49:09.803050Z", "level": "debug"}
{"event": "sqrt", "timestamp": "2024-05-25T09:49:09.803101Z", "level": "info"}
{"result": 5, "event": "The result is", "timestamp": "2024-05-25T09:49:09.803147Z", "level": "debug"}
{"event": "sqrt", "timestamp": "2024-05-25T09:49:09.803200Z", "level": "info"}
{"event": "square", "timestamp": "2024-05-25T09:49:09.803248Z", "level": "info"}
{"event": "square", "timestamp": "2024-05-25T09:49:09.803291Z", "level": "info"}
{"event": "pythagoras", "timestamp": "2024-05-25T09:49:09.803335Z", "level": "info"}
Release files for traceme 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| traceme-0.6.0.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| traceme-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / traceme-0.6.0.tar.gz
| Download URL | traceme-0.6.0.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3a9f4155d6c4100748d603b39f55891db1cb5bf857c32d7adeca8547600b3c8
|
|
BLAKE2b-256 checksum How to use checksums |
ed79816ff26828bbdbfc71238327032d8ae78f29226c2e1be65ab09874451c62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1021-azure
|
Release files / traceme-0.6.0-py3-none-any.whl
| Download URL | traceme-0.6.0-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1fb8ee6a24e037ccd7f4f41ac62c3d3e01bee0e47f7827306d2d21105fc885a1
|
|
BLAKE2b-256 checksum How to use checksums |
fd523cea560f9b5d6b6ec9f14f20fd2d76c94053678ef80f7e94f0acf77634ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1021-azure
|