Skip to main content

No project description provided

Project description

plshandle

Create an explicit contract between caller and function that requires the caller to handle specific exceptions raised by the function.

Why

Sometimes, we just have to recover from an error. And because you are a human being, you might not always keep exception handling in mind at all times. This tool helps reduce this mental overhead by reporting all contract violations.

How

A simple example:

from plshandle import plshandle

@plshandle(KeyError)
def get_item(key):
    return {}[key]

get_item(0)  # tool reports this call expression as a contract violation

It is also possible to propagate errors, similar to Java:

@plshandle(KeyError)
def foo():
    return get_item(0)  # o.k., KeyError is propagated, caller's responsibility to handle it

Note: This tool performs static analysis only. As such, dynamic constructs are most likely not supported:

@plshandle(KeyError)
def foo():
    pass
def bar(callback):
    callback()  # nothing reported
bar(foo)

Refer to https://plshandle.readthedocs.io for more in-depth examples.

Before committing

Fetch development dependencies

pip -r requirements-dev.txt

Ensure there are no linting errors

pylint plshandle && mypy -p plshandle

Ensure all tests are successful and code coverage is 100%

pytest && coverage report --fail-under=100

Reformat all files

black plshandle

Or just do this if you have make installed

make check

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

plshandle-0.2.tar.gz (13.3 kB view details)

Uploaded Source

File details

Details for the file plshandle-0.2.tar.gz.

File metadata

  • Download URL: plshandle-0.2.tar.gz
  • Upload date:
  • Size: 13.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.20.1 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0

File hashes

Hashes for plshandle-0.2.tar.gz
Algorithm Hash digest
SHA256 12cbcc0133ac190a321ed346350ea6ed1c462a47f06ae4df871facb7d7f2f0f0
MD5 b2f2caa287f30ac4ac115ef303ab051d
BLAKE2b-256 5283131eb55bccba57a1108c72002059cb4cc8c76c326633876cd70e7395404d

See more details on using hashes here.

Supported by

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