lazy-main


Namelazy-main JSON
Version 0.6.1 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2025-07-09 03:44:43
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 `Terminate` will terminate the loop.

```py
from lazy_main import LazyMain, Terminate

def main():
    return Terminate

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, Terminate

def main():
    for i in range(10):
        if i == 5:
            yield Terminate

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/72/96/07c9d848f7b28f27db41e8749f4b2f6a19179a22e13669b443c294000696/lazy_main-0.6.1.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 `Terminate` will terminate the loop.\n\n```py\nfrom lazy_main import LazyMain, Terminate\n\ndef main():\n    return Terminate\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, Terminate\n\ndef main():\n    for i in range(10):\n        if i == 5:\n            yield Terminate\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.6.1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b646cc5161ae2d5ae337d912b653a9272720c7c4390325a3c6c00c1b715bdb9f",
                "md5": "2a15607af0ff1b7c0c4b91e91e7b3896",
                "sha256": "102538120e9bd2439a06a2af4f7ad00cd07a62bcb1aa03f43644b5ace352449f"
            },
            "downloads": -1,
            "filename": "lazy_main-0.6.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "2a15607af0ff1b7c0c4b91e91e7b3896",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 3855,
            "upload_time": "2025-07-09T03:44:42",
            "upload_time_iso_8601": "2025-07-09T03:44:42.224635Z",
            "url": "https://files.pythonhosted.org/packages/b6/46/cc5161ae2d5ae337d912b653a9272720c7c4390325a3c6c00c1b715bdb9f/lazy_main-0.6.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "729607c9d848f7b28f27db41e8749f4b2f6a19179a22e13669b443c294000696",
                "md5": "447b375046bf7e1a92ce5cc30b98149c",
                "sha256": "fe5a8f94de9ee80d39a3fb8e7fa4461df1266c117379ff37acceeaece4f356f6"
            },
            "downloads": -1,
            "filename": "lazy_main-0.6.1.tar.gz",
            "has_sig": false,
            "md5_digest": "447b375046bf7e1a92ce5cc30b98149c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 2703,
            "upload_time": "2025-07-09T03:44:43",
            "upload_time_iso_8601": "2025-07-09T03:44:43.518865Z",
            "url": "https://files.pythonhosted.org/packages/72/96/07c9d848f7b28f27db41e8749f4b2f6a19179a22e13669b443c294000696/lazy_main-0.6.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-09 03:44:43",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "lazy-main"
}
        
Elapsed time: 1.61567s