lazy-main


Namelazy-main JSON
Version 0.5.0 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-10-23 01:25:10
maintainerNone
docs_urlNone
authorMister Nyan
requires_python<4.0,>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # lazy-main #

Generalized framework for main loop function.

## Installation ##

```sh
pip install lazy-main
```

## How to Use ##

```py
from lazy_main import LazyMain

def main(*args, **kwargs):
    print("Hello World!")

def error_handler(exception):
    print("An error occurred!", exception)

if __name__ == "__main__":
    LazyMain(
        main=main,
        error_handler=error_handler, # This is optional.
        sleep_min=3,
        sleep_max=5,
        print_logs=True,
        loop_count=-1, # -1 Means it will loop infinitely.
    ).run()
```

Some aliases are also provided for `loop_count`.

```py
...

LazyMain(
    ...
    # Sets `loop_count` to 1 if `True`.
    # Sets `loop_count` to -1 if `False`.
    # Does nothing if `None`.
    run_once=True,
    ...
)


# Or...

LazyMain(
    ...
    # Sets `loop_count` to -1 if `True`.
    # Sets `loop_count` to 1 if `False`.
    # Does nothing if `None`.
    run_forever=True,
    ...
)

...
```

You can also pass arguments to the `main` function.

```py
from lazy_main import LazyMain

def main(*args, **kwargs):
    print(kwargs["hello"]) # World!

if __name__ == "__main__":
    LazyMain(
        main=main,
    ).run(
        hello="World!",
    )
```

Returning `True` will print the total elapsed time.

```py
from lazy_main import LazyMain

def main():
    return True

if __name__ == "__main__":
    LazyMain(
        main=main,
    ).run() # Done in 0.10s.
```

If you don't like the logs, you can disable it.

```py
from lazy_main import LazyMain

...

if __name__ == "__main__":
    LazyMain(
        ...
        print_logs=False,
        ...
    ).run()

...
```

Returning `SIGTERM` will terminate the loop.

```py
from lazy_main import LazyMain
import signal

def main():
    return signal.SIGTERM

if __name__ == "__main__":
    LazyMain(
        main=main,
    ).run()

    print("I'm free!")
```

You can also use a generator for the return value.

```py
from lazy_main import LazyMain
import signal

def main():
    for i in range(10):
        if i == 5:
            yield signal.SIGTERM

if __name__ == "__main__":
    LazyMain(
        main=main,
    ).run()

    print("I'm free!")
```

You can also provide dynamic kwargs via iteration.

```py
from lazy_main import LazyMain

def main(*args, **kwargs):
    print(kwargs["hello"]) # 0, 1, 2, 3, ...

if __name__ == "__main__":
    i = 0
    
    for loop in LazyMain(
        main=main,
    ):
        loop(
            hello=i,
        )

        i += 1
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "lazy-main",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Mister Nyan",
    "author_email": "michael.edmund.wong@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1b/fe/88b60bfe37d04ae6d51171cc0dd6fc31ff138261a122f49a468dfea7e327/lazy_main-0.5.0.tar.gz",
    "platform": null,
    "description": "# lazy-main #\n\nGeneralized framework for main loop function.\n\n## Installation ##\n\n```sh\npip install lazy-main\n```\n\n## How to Use ##\n\n```py\nfrom lazy_main import LazyMain\n\ndef main(*args, **kwargs):\n    print(\"Hello World!\")\n\ndef error_handler(exception):\n    print(\"An error occurred!\", exception)\n\nif __name__ == \"__main__\":\n    LazyMain(\n        main=main,\n        error_handler=error_handler, # This is optional.\n        sleep_min=3,\n        sleep_max=5,\n        print_logs=True,\n        loop_count=-1, # -1 Means it will loop infinitely.\n    ).run()\n```\n\nSome aliases are also provided for `loop_count`.\n\n```py\n...\n\nLazyMain(\n    ...\n    # Sets `loop_count` to 1 if `True`.\n    # Sets `loop_count` to -1 if `False`.\n    # Does nothing if `None`.\n    run_once=True,\n    ...\n)\n\n\n# Or...\n\nLazyMain(\n    ...\n    # Sets `loop_count` to -1 if `True`.\n    # Sets `loop_count` to 1 if `False`.\n    # Does nothing if `None`.\n    run_forever=True,\n    ...\n)\n\n...\n```\n\nYou can also pass arguments to the `main` function.\n\n```py\nfrom lazy_main import LazyMain\n\ndef main(*args, **kwargs):\n    print(kwargs[\"hello\"]) # World!\n\nif __name__ == \"__main__\":\n    LazyMain(\n        main=main,\n    ).run(\n        hello=\"World!\",\n    )\n```\n\nReturning `True` will print the total elapsed time.\n\n```py\nfrom lazy_main import LazyMain\n\ndef main():\n    return True\n\nif __name__ == \"__main__\":\n    LazyMain(\n        main=main,\n    ).run() # Done in 0.10s.\n```\n\nIf you don't like the logs, you can disable it.\n\n```py\nfrom lazy_main import LazyMain\n\n...\n\nif __name__ == \"__main__\":\n    LazyMain(\n        ...\n        print_logs=False,\n        ...\n    ).run()\n\n...\n```\n\nReturning `SIGTERM` will terminate the loop.\n\n```py\nfrom lazy_main import LazyMain\nimport signal\n\ndef main():\n    return signal.SIGTERM\n\nif __name__ == \"__main__\":\n    LazyMain(\n        main=main,\n    ).run()\n\n    print(\"I'm free!\")\n```\n\nYou can also use a generator for the return value.\n\n```py\nfrom lazy_main import LazyMain\nimport signal\n\ndef main():\n    for i in range(10):\n        if i == 5:\n            yield signal.SIGTERM\n\nif __name__ == \"__main__\":\n    LazyMain(\n        main=main,\n    ).run()\n\n    print(\"I'm free!\")\n```\n\nYou can also provide dynamic kwargs via iteration.\n\n```py\nfrom lazy_main import LazyMain\n\ndef main(*args, **kwargs):\n    print(kwargs[\"hello\"]) # 0, 1, 2, 3, ...\n\nif __name__ == \"__main__\":\n    i = 0\n    \n    for loop in LazyMain(\n        main=main,\n    ):\n        loop(\n            hello=i,\n        )\n\n        i += 1\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.5.0",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "505aad743a4e32440fb3c54eaaae47d96710574bc414e2a3f5e693942310ce95",
                "md5": "51e59395af15eb32763c65909cdd2e13",
                "sha256": "33c8cc6b1625e24de16f532eb50fe3a9cf0be1669c9b8099fae0786e9965a1d1"
            },
            "downloads": -1,
            "filename": "lazy_main-0.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "51e59395af15eb32763c65909cdd2e13",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 3589,
            "upload_time": "2024-10-23T01:25:08",
            "upload_time_iso_8601": "2024-10-23T01:25:08.910122Z",
            "url": "https://files.pythonhosted.org/packages/50/5a/ad743a4e32440fb3c54eaaae47d96710574bc414e2a3f5e693942310ce95/lazy_main-0.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1bfe88b60bfe37d04ae6d51171cc0dd6fc31ff138261a122f49a468dfea7e327",
                "md5": "31524b8cedb3f4d53a62b78bf5aa81a9",
                "sha256": "7dde8e30829e3f2c77e1673a7ed1834fa9df3a8d1505fa5acf4dbbd453395873"
            },
            "downloads": -1,
            "filename": "lazy_main-0.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "31524b8cedb3f4d53a62b78bf5aa81a9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 2833,
            "upload_time": "2024-10-23T01:25:10",
            "upload_time_iso_8601": "2024-10-23T01:25:10.450043Z",
            "url": "https://files.pythonhosted.org/packages/1b/fe/88b60bfe37d04ae6d51171cc0dd6fc31ff138261a122f49a468dfea7e327/lazy_main-0.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-23 01:25:10",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "lazy-main"
}
        
Elapsed time: 0.37245s