Skip to main content

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 tested
  • ret_result: Whether to return callable(*args, **kwargs) upon no error. True by default. If false, applicable() will return True upon 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 is 0), bool() (False), None if ret_exc is a type. If ret_exc is a value, the value is returned. Changed in version 1.1.0: ret_exc was previously a boolean value specifying whether to return a _FalseException or not.
  • args and kwargs: The arguments that are passed to callable().

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)

Source distribution for applicable 1.1.1
File Size Uploaded
applicable-1.1.1.tar.gz 3.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for applicable 1.1.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page