qaviton handlers
Project description
Qaviton Handlers
error handling utilities
Installation
pip install --upgrade qaviton_handlers
Requirements
- Python 3.6+
Features
- retry decorator ✓
- retry with context ✓
- try functions ✓
- catch errors ✓
- simple Exception wrapper ✓
Usage
retry decorator
from qaviton_handlers.try_decorator import retry
@retry()
def foo():
n = int('1'+input('select number:'))
print(n)
foo()
retry with context
from qaviton_handlers.try_context import retry
with retry() as trying:
while trying:
with trying:
print("Attempt #%d of %d" % (trying.attempt, trying.attempts))
raise
using different try wrapper functions
from qaviton_handlers.try_functions import try_to, try_or_none, multi_try, multi_try_no_break
def foo(a=0):
print(float(a+input("select number:")))
# simply try
try_to(foo, 1)
try_to(foo, 2)
try_to(foo, 3)
# get the error
error = try_to(foo, 4)
if error: print(error)
# if error occurred
if try_to(foo, 5):
try_to(foo, 5)
# try with key arguments
r = try_to(lambda a,b,c:a*b*c, 1,kwargs={'b':2,'c':3})
print(r)
# try to get a number
number = try_or_none(lambda a:float(a+input("select number:")), 6)
if number: print(number)
# try many functions, return a list of results, or an error
# if an error occurred, the multi try stops
multi_try(
lambda: foo(10),
lambda: foo(11),
)
# specify errors to ignore
response = multi_try(
lambda: foo(13),
lambda: foo(14),
exceptions=Exception,
)
# handle the error
response = multi_try(
lambda: foo(13),
lambda: foo(14),
)
if isinstance(response, Exception):
...
# try many functions, return a list of results, some may be errors
# if an error occurred, the multi try continues
multi_try_no_break(
lambda: foo(8),
lambda: foo(9),
lambda: foo(0),
)
ignore errors now so you can handle them later
from qaviton_handlers.catch import Catch
from qaviton_handlers.utils.error import Error
catch = Catch(store=True)
# catch an error
try:
1 + '1'
except Exception as e:
catch(e)
# a cleaner syntax
with catch:
1 + '1'
2 + '2'
# ignore the error
with Catch():
5 * 'e'
print(f"caught {catch.count} errors")
print(f"caught first {catch.first}")
print(f"caught last {catch.last}")
# make your own Catch
class MyCatch(Catch):
def handler(self, e):
self.stack.add(Error(e))
print()
return self
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for qaviton_handlers-2019.9.29.7.46.16.681860.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0c6fbce2b13022da452d28900c93bca1c5f57f224ab3a9b253b4235c1827cfa |
|
MD5 | 069f45e751df6f11b4fc86328e5d6a29 |
|
BLAKE2b-256 | a98bce723e612545e10d92ba07887e11d3a9e48926f81d18e0ae7ef8bcba6292 |
Close
Hashes for qaviton_handlers-2019.9.29.7.46.16.681860-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69661fa9cfce5f9f9d8d87cf545dd5356f85de1361d05a1bd1a47c029146ef12 |
|
MD5 | 03cfa7461ceed242468ad07b5b79b79f |
|
BLAKE2b-256 | dbb103b60171846f1f514f9e83cf4c126d32eb6b10ce7598e3b548139c1b0f7b |