Skip to main content

A simple utility to ensure that sleep operations always complete

Project description

Withwait

A simple utility to ensure that sleep operations always complete, even if an exception happens within the with statement.

Usage

from withwait import wait

# Start a 2 second wait timer
with wait(2):
    # These operations happen while the timer is run
    print("Started timer")
    # Even if an error is raised, the timer will always be allowed to complete
    # before the withwait block is closed
    raise Exception("Yikes")

# The exception isn't actually caught so this code won't run
print("This never prints")

Cancelling a timer

If you need to stop the timer during the operation, you can stop it using the cancel method. Normal running will resume from the end of the with statement.

from withwait import wait

with wait(1) as timer:
    # Stop the timer
    timer.cancel()
    # Code after this point in the with statement won't be run

# Program flow resumes normally after
print("Ok")
  • Different timers can be cancelled separately - if you cancel one timer, all other timers will run to completion.

Aborting a timer

If you don't want to resume normal program flow after the with statement, you can stop the timer using the abort method.

from withwait import wait, WithwaitAbort

try:
    with wait(1) as timer:
        # Abort the timer
        timer.abort()
        # Code after this point in the with statement won't be run

    # And code after the with statement won't be run either
    print("Nope")

# We need to catch the exception ourselves
except WithwaitAbort:
    print("Caught")
  • Arguments can be provided to the abort method which will be given as arguments to the exception
  • Different timers can be aborted separately - if you cancel one timer, all other timers will run to completion.

Aborting all timers

If you want to cancel anything, you can call the abort_all method. You can also raise a WithwaitAbortAll exception, which will have the same effect.

from withwait import wait, WithwaitAbortAll

try:
    with wait(1):
        with wait(1):
            with wait(1) as timer:
                # Abort all timers
                timer.abort_all()
except WithwaitAbortAll:
    print("All timers stopped")

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

withwait-0.1.2.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

withwait-0.1.2-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file withwait-0.1.2.tar.gz.

File metadata

  • Download URL: withwait-0.1.2.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.5.0-1021-azure

File hashes

Hashes for withwait-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e416faf3624294ce8e594239c600d5525044778f040b1251e99fd91f490452f4
MD5 31de9e42f782d74cece0f27709e41f73
BLAKE2b-256 db57e62964d881374132d778465c165f30456e5241edfb1523a9106e839cd0c1

See more details on using hashes here.

File details

Details for the file withwait-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: withwait-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.5.0-1021-azure

File hashes

Hashes for withwait-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 82dac56f0f9d33ae7e3f1289640820c65d6364b6b644f8f8ec78319f558843e1
MD5 b4e0538ad155d8a8d1232a64e981cabc
BLAKE2b-256 385e754298fcfd37acdc364d0ac7b5bbbd25f24968189364b74d5559d3d3c9e4

See more details on using hashes here.

Supported by

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