applicable.py
applicable.py is a very basic package with a single function: applicable(). It is simply used to test if a callable can be called with a set of arguments without raising an error.
This package must be used with Python 3.6 or higher.
The signature of applicable() is:
applicable(callable: Callable,
*args: Any,
**kwargs: Any,
ret_result: bool = True,
ret_exc: bool = True) -> Any
* Note: This is not the actual signature, as you can probably tell. The actual signature (and the one type checkers and other tools will give you) is applicable(callable: Callable, *args: Any, **kwargs: Any). As noted in the docstring (applicable.__doc__), ret_result and ret_exc are special keyword arguments, and it would be preferred that they be used after the callable arguments.
Arguments:
callable: The callable to be testedret_result: Whether to returncallable(*args, **kwargs)upon no error.Trueby default. If false,applicable()will returnTrueupon no error.ret_exc: Type or value to return upon error. Defaults to_FalseException. With the exception of_FalseException(which is returned as_FalseException(exception_instance)), the default value for the type is returned, e.g.,int()(which is0),bool()(False),Noneifret_excis a type. Ifret_excis a value, the value is returned. Changed in version 1.1.0:ret_excwas previously a boolean value specifying whether to return a_FalseExceptionor not.argsandkwargs: The arguments that are passed tocallable().
This function will usually be used in an if statement like the following:
from applicable import applicable
val = applicable(SomeCallable, 'arg!', a_kwarg='kwarg!')
if val == False or isinstance(val, _FalseException):
# Do somthing with val
else:
# Do something with the exception; use val.cls for the exception class
More examples, to show the full functionality of applicable() (and _FalseException):
>>> from applicable import applicable
>>> a = applicable(int, '4')
>>> a
4
>>>
>>> a = applicable(int, 'whoops')
>>> a
applicable._FalseException(exc_inst=ValueError(...))
>>> a.cls
<class 'ValueError'>
>>> a.inst
ValueError("invalid literal for int() with base 10: 'whoops'")
>>> bool(a)
False
>>>
>>> a = applicable(complex, 4, imag=3)
>>> a
(4+3j)
>>>
>>> a = applicable(complex, 4, imag=3, ret_result=False)
>>> a
True
>>> a = applicable(int, 'whoops', ret_exc=bool)
>>> a
False
>>> applicable(int, 'whoops', ret_exc=None)
None
>>> applicable(int, 'whoops', ret_exc=4)
4
Metadata
Release files for applicable 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| applicable-1.1.1.tar.gz | 3.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| applicable-1.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.6 kB
Release files / applicable-1.1.1.tar.gz
| Download URL | applicable-1.1.1.tar.gz |
|---|---|
| Size | 3.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
861b81463aea5e7003d8cd7728a488e80e4bdcb3558479c8ab623254bbc35153
|
|
BLAKE2b-256 checksum How to use checksums |
adae0210cc130efed2200b6ccb3eece7eab7a739614d34b3c2813403dfa0a456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5
|
Release files / applicable-1.1.1-py3-none-any.whl
| Download URL | applicable-1.1.1-py3-none-any.whl |
|---|---|
| Size | 3.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1c3f92bca12767eb3977e747d114478393cd118f3c6ce84d2278c0698bfc0226
|
|
BLAKE2b-256 checksum How to use checksums |
a58efad7f8b13755fa826558ac32838e53c74249628a95bb02f95565a8f9452e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5
|