Name | lazy-main JSON |
Version |
0.5.0
JSON |
| download |
home_page | None |
Summary | None |
upload_time | 2024-10-23 01:25:10 |
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 `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"
}