Name | lazy-main JSON |
Version |
0.6.1
JSON |
| download |
home_page | None |
Summary | None |
upload_time | 2025-07-09 03:44:43 |
maintainer | None |
docs_url | None |
author | Mister Nyan |
requires_python | <4.0,>=3.8 |
license | None |
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"
}