Skip to main content

No project description provided

Project description

lazy-main

Generalized framework for main loop function.

Installation

pip install lazy-main

How to Use

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.

...

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.

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.

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.

from lazy_main import LazyMain

...

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

...

Returning Terminate will terminate the loop.

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.

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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lazy_main-0.6.2.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lazy_main-0.6.2-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file lazy_main-0.6.2.tar.gz.

File metadata

  • Download URL: lazy_main-0.6.2.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for lazy_main-0.6.2.tar.gz
Algorithm Hash digest
SHA256 b17c90696c49b083eafe13c3a2104529083a97110dce4bfa644d66b7ade16385
MD5 172b6d14594ae3956e7a5ae8c98cfcf5
BLAKE2b-256 24fb4b388293e67e71d508ba3d8ee911e8928f9d8c0be3cf70511d397aa92c35

See more details on using hashes here.

File details

Details for the file lazy_main-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: lazy_main-0.6.2-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.3 Linux/5.15.167.4-microsoft-standard-WSL2

File hashes

Hashes for lazy_main-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e074dccb0925e3cbb74925e02c5f73a0743468b135c23133396d5f98f9290637
MD5 0937d43d617e531d70470a3343803045
BLAKE2b-256 fb8f4eff410260387e031d0903d2c401f07dc6bd66fa9673099e9e745fc8476d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page