withwait


Namewithwait JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/MiguelGuthridge/withwait
SummaryA simple utility to ensure that sleep operations always complete
upload_time2023-04-22 19:45:39
maintainer
docs_urlNone
authorMiguel Guthridge
requires_python>=3.9,<4.0
licenseMIT
keywords testing with sleep time wait delay
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Withwait

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

## Usage

```py
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.

```py
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.

```py
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.

```py
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")
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/MiguelGuthridge/withwait",
    "name": "withwait",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.9,<4.0",
    "maintainer_email": "",
    "keywords": "testing,with,sleep,time,wait,delay",
    "author": "Miguel Guthridge",
    "author_email": "hdsq@outlook.com.au",
    "download_url": "https://files.pythonhosted.org/packages/30/79/536ae6787ebefd60181eb5d401ecedb2b8f2adbe264034b5f089429e5e1b/withwait-0.1.1.tar.gz",
    "platform": null,
    "description": "# Withwait\n\nA simple utility to ensure that sleep operations always complete, even if an\nexception happens within the with statement.\n\n## Usage\n\n```py\nfrom withwait import wait\n\n# Start a 2 second wait timer\nwith wait(2):\n    # These operations happen while the timer is run\n    print(\"Started timer\")\n    # Even if an error is raised, the timer will always be allowed to complete\n    # before the withwait block is closed\n    raise Exception(\"Yikes\")\n\n# The exception isn't actually caught so this code won't run\nprint(\"This never prints\")\n```\n\n### Cancelling a timer\n\nIf you need to stop the timer during the operation, you can stop it using the\n`cancel` method. Normal running will resume from the end of the `with`\nstatement.\n\n```py\nfrom withwait import wait\n\nwith wait(1) as timer:\n    # Stop the timer\n    timer.cancel()\n    # Code after this point in the with statement won't be run\n\n# Program flow resumes normally after\nprint(\"Ok\")\n```\n\n* Different timers can be cancelled separately - if you cancel one timer, all\n  other timers will run to completion.\n\n### Aborting a timer\n\nIf you don't want to resume normal program flow after the `with` statement,\nyou can stop the timer using the `abort` method.\n\n```py\nfrom withwait import wait, WithwaitAbort\n\ntry:\n    with wait(1) as timer:\n        # Abort the timer\n        timer.abort()\n        # Code after this point in the with statement won't be run\n\n    # And code after the with statement won't be run either\n    print(\"Nope\")\n\n# We need to catch the exception ourselves\nexcept WithwaitAbort:\n    print(\"Caught\")\n```\n\n* Arguments can be provided to the `abort` method which will be\n  given as arguments to the exception\n* Different timers can be aborted separately - if you cancel one timer, all\n  other timers will run to completion.\n\n### Aborting all timers\n\nIf you want to cancel anything, you can call the `abort_all` method. You can\nalso raise a `WithwaitAbortAll` exception, which will have the same effect.\n\n```py\nfrom withwait import wait, WithwaitAbortAll\n\ntry:\n    with wait(1):\n        with wait(1):\n            with wait(1) as timer:\n                # Abort all timers\n                timer.abort_all()\nexcept WithwaitAbortAll:\n    print(\"All timers stopped\")\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A simple utility to ensure that sleep operations always complete",
    "version": "0.1.1",
    "split_keywords": [
        "testing",
        "with",
        "sleep",
        "time",
        "wait",
        "delay"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "95708384722a7e65fa4603e0b9c8701e4c3941ccdae47a8fbfb945b6c951e0c9",
                "md5": "d251a174dfafd440b803f8d84f0603c6",
                "sha256": "39372a2b764e6736ab04ec38c61c2417cb280b54a8bfbb6fe50e281c37398f8c"
            },
            "downloads": -1,
            "filename": "withwait-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d251a174dfafd440b803f8d84f0603c6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9,<4.0",
            "size": 4786,
            "upload_time": "2023-04-22T19:45:37",
            "upload_time_iso_8601": "2023-04-22T19:45:37.248038Z",
            "url": "https://files.pythonhosted.org/packages/95/70/8384722a7e65fa4603e0b9c8701e4c3941ccdae47a8fbfb945b6c951e0c9/withwait-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3079536ae6787ebefd60181eb5d401ecedb2b8f2adbe264034b5f089429e5e1b",
                "md5": "dad5f31aa64e6f67f01bf44b34e42ca0",
                "sha256": "9737ae98d715f05e597a63e29bb17272edc7fee4ec496b4c97fba5721b29dc9f"
            },
            "downloads": -1,
            "filename": "withwait-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "dad5f31aa64e6f67f01bf44b34e42ca0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9,<4.0",
            "size": 3915,
            "upload_time": "2023-04-22T19:45:39",
            "upload_time_iso_8601": "2023-04-22T19:45:39.208142Z",
            "url": "https://files.pythonhosted.org/packages/30/79/536ae6787ebefd60181eb5d401ecedb2b8f2adbe264034b5f089429e5e1b/withwait-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-04-22 19:45:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "MiguelGuthridge",
    "github_project": "withwait",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "withwait"
}
        
Elapsed time: 0.06027s