traceme


Nametraceme JSON
Version 0.5.0 PyPI version JSON
download
home_page
SummaryPython debug and tracer library
upload_time2024-02-10 16:20:49
maintainer
docs_urlNone
authorDag Brattli
requires_python>=3.10,<4.0
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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

```bash
pip install traceme
```

## Usage

```python
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:

```bash
❯ poetry run python tests/test_pythagoras.py
2024-02-10T15:52:19.284431Z [info     ] │ ▶ pythagoras args=(3, 4, <function <lambda> at 0x1040c2840>) kwargs={} module=test_pythagoras
2024-02-10T15:52:19.313361Z [info     ] │   │ ▶ square args=(3, <function pythagoras.<locals>.<lambda> at 0x1040c2ac0>) kwargs={} module=test_pythagoras
2024-02-10T15:52:19.313621Z [info     ] │   │   │ ▶ square args=(4, <function pythagoras.<locals>.<lambda>.<locals>.<lambda> at 0x1040c2c00>) kwargs={} module=test_pythagoras
2024-02-10T15:52:19.314165Z [debug    ] │   │   │   │ ▶ add args=(9, 16, <function pythagoras.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda> at 0x1040c2ca0>) kwargs={} module=test_pythagoras
2024-02-10T15:52:19.314407Z [info     ] │   │   │   │   │ ▶ sqrt args=(25, <function <lambda> at 0x1040c2840>) kwargs={} module=test_pythagoras
2024-02-10T15:52:19.314616Z [debug    ] │   │   │   │   │   │ The result is module=test_pythagoras result=5
2024-02-10T15:52:19.314806Z [info     ] │   │   │   │   │ ◀ sqrt elapsed=399 us module=test_pythagoras
2024-02-10T15:52:19.315301Z [info     ] │   │   │ ◀ square elapsed=1.68 ms module=test_pythagoras
2024-02-10T15:52:19.315493Z [info     ] │   │ ◀ square elapsed=2.15 ms module=test_pythagoras
2024-02-10T15:52:19.315676Z [info     ] │ ◀ pythagoras elapsed=31.27 ms module=test_pythagoras
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "traceme",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Dag Brattli",
    "author_email": "dag@brattli.net",
    "download_url": "https://files.pythonhosted.org/packages/19/85/ec95920e526467f0b067e361eb14a4aa57254f93a423779965131e5cb8fa/traceme-0.5.0.tar.gz",
    "platform": null,
    "description": "# traceme\n\nIs a `structlog` helper library that helps you to debug and trace your\ncode. It aims to replace `print` debugging with a more powerful and\npermanent solution.\n\n## Installation\n\n```bash\npip install traceme\n```\n\n## Usage\n\n```python\nimport math\nfrom collections.abc import Callable\n\nimport structlog\n\nimport traceme\n\n\nlogger = structlog.get_logger()\n\n@traceme.info(exit=True)\ndef add(a: int, b: int, cont: Callable[[int], None]) -> None:\n    cont(a + b)\n\n\n@traceme.info(exit=True)\ndef square(a: int, cont: Callable[[int], None]) -> None:\n    cont(a * a)\n\n\n@traceme.info(exit=True)\ndef sqrt(a: int, cont: Callable[[int], None]) -> None:\n    cont(int(math.sqrt(a)))\n\n\n@traceme.info(exit=True)\ndef pythagoras(a: int, b: int, cont: Callable[[int], None]) -> None:\n    square(\n        a,\n        lambda a2: square(\n            b,\n            lambda b2: add(\n                a2,\n                b2,\n                lambda a2b2: sqrt(\n                    a2b2,\n                    cont,\n                ),\n            ),\n        ),\n    )\n\n\nif __name__ == \"__main__\":\n    traceme.configure()\n\n    pythagoras(3, 4, lambda result: logger.info(\"The result is\", result=result))\n```\n\nThis will output:\n\n```bash\n\u276f poetry run python tests/test_pythagoras.py\n2024-02-10T15:52:19.284431Z [info     ] \u2502 \u25b6 pythagoras args=(3, 4, <function <lambda> at 0x1040c2840>) kwargs={} module=test_pythagoras\n2024-02-10T15:52:19.313361Z [info     ] \u2502   \u2502 \u25b6 square args=(3, <function pythagoras.<locals>.<lambda> at 0x1040c2ac0>) kwargs={} module=test_pythagoras\n2024-02-10T15:52:19.313621Z [info     ] \u2502   \u2502   \u2502 \u25b6 square args=(4, <function pythagoras.<locals>.<lambda>.<locals>.<lambda> at 0x1040c2c00>) kwargs={} module=test_pythagoras\n2024-02-10T15:52:19.314165Z [debug    ] \u2502   \u2502   \u2502   \u2502 \u25b6 add args=(9, 16, <function pythagoras.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda> at 0x1040c2ca0>) kwargs={} module=test_pythagoras\n2024-02-10T15:52:19.314407Z [info     ] \u2502   \u2502   \u2502   \u2502   \u2502 \u25b6 sqrt args=(25, <function <lambda> at 0x1040c2840>) kwargs={} module=test_pythagoras\n2024-02-10T15:52:19.314616Z [debug    ] \u2502   \u2502   \u2502   \u2502   \u2502   \u2502 The result is module=test_pythagoras result=5\n2024-02-10T15:52:19.314806Z [info     ] \u2502   \u2502   \u2502   \u2502   \u2502 \u25c0 sqrt elapsed=399 us module=test_pythagoras\n2024-02-10T15:52:19.315301Z [info     ] \u2502   \u2502   \u2502 \u25c0 square elapsed=1.68 ms module=test_pythagoras\n2024-02-10T15:52:19.315493Z [info     ] \u2502   \u2502 \u25c0 square elapsed=2.15 ms module=test_pythagoras\n2024-02-10T15:52:19.315676Z [info     ] \u2502 \u25c0 pythagoras elapsed=31.27 ms module=test_pythagoras\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Python debug and tracer library",
    "version": "0.5.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6eaff4c0a5509a4f882e752dd9dabcad2a94c18cc4052511dc9921c041546fa8",
                "md5": "10a309018d899161028cff1d2260a6d4",
                "sha256": "07e372643569030aa2cb21d0dac1375820ec34bf14a53d79b0cbf9632ea63da3"
            },
            "downloads": -1,
            "filename": "traceme-0.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "10a309018d899161028cff1d2260a6d4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0",
            "size": 5505,
            "upload_time": "2024-02-10T16:20:48",
            "upload_time_iso_8601": "2024-02-10T16:20:48.288080Z",
            "url": "https://files.pythonhosted.org/packages/6e/af/f4c0a5509a4f882e752dd9dabcad2a94c18cc4052511dc9921c041546fa8/traceme-0.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1985ec95920e526467f0b067e361eb14a4aa57254f93a423779965131e5cb8fa",
                "md5": "cfbda6e862eb92748e833ceb40cbd348",
                "sha256": "f6300e6e3b74e29295920dfa1292e14ce20bbadf717d1fb833c4a06641a3e454"
            },
            "downloads": -1,
            "filename": "traceme-0.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "cfbda6e862eb92748e833ceb40cbd348",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0",
            "size": 4932,
            "upload_time": "2024-02-10T16:20:49",
            "upload_time_iso_8601": "2024-02-10T16:20:49.668003Z",
            "url": "https://files.pythonhosted.org/packages/19/85/ec95920e526467f0b067e361eb14a4aa57254f93a423779965131e5cb8fa/traceme-0.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-10 16:20:49",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "traceme"
}
        
Elapsed time: 0.17345s