56 lines
1.9 KiB
Text
56 lines
1.9 KiB
Text
|
Metadata-Version: 2.1
|
||
|
Name: backcall
|
||
|
Version: 0.2.0
|
||
|
Summary: Specifications for callback functions passed in to an API
|
||
|
Home-page: https://github.com/takluyver/backcall
|
||
|
License: UNKNOWN
|
||
|
Author: Thomas Kluyver
|
||
|
Author-email: thomas@kluyver.me.uk
|
||
|
Description-Content-Type: text/x-rst
|
||
|
Classifier: License :: OSI Approved :: BSD License
|
||
|
Classifier: Programming Language :: Python :: 2
|
||
|
Classifier: Programming Language :: Python :: 2.7
|
||
|
Classifier: Programming Language :: Python :: 3
|
||
|
|
||
|
========
|
||
|
backcall
|
||
|
========
|
||
|
|
||
|
.. image:: https://travis-ci.org/takluyver/backcall.png?branch=master
|
||
|
:target: https://travis-ci.org/takluyver/backcall
|
||
|
|
||
|
Specifications for callback functions passed in to an API
|
||
|
|
||
|
If your code lets other people supply callback functions, it's important to
|
||
|
specify the function signature you expect, and check that functions support that.
|
||
|
Adding extra parameters later would break other peoples code unless you're careful.
|
||
|
|
||
|
backcall provides a way of specifying the callback signature using a prototype
|
||
|
function::
|
||
|
|
||
|
from backcall import callback_prototype
|
||
|
|
||
|
@callback_prototype
|
||
|
def handle_ping(sender, delay=None):
|
||
|
# Specify positional parameters without a default, and keyword
|
||
|
# parameters with a default.
|
||
|
pass
|
||
|
|
||
|
def register_ping_handler(callback):
|
||
|
# This checks and adapts the function passed in:
|
||
|
callback = handle_ping.adapt(callback)
|
||
|
ping_callbacks.append(callback)
|
||
|
|
||
|
If the callback takes fewer parameters than your prototype, *backcall* will wrap
|
||
|
it in a function that discards the extra arguments. If the callback expects
|
||
|
more arguments, a TypeError is thrown when it is registered.
|
||
|
|
||
|
For more details, see the `docs <http://backcall.readthedocs.org/en/latest/>`_ or
|
||
|
the `Demo notebook <http://nbviewer.ipython.org/github/takluyver/backcall/blob/master/Demo.ipynb>`_.
|
||
|
|
||
|
The tests are run with `pytest <http://pytest.org/latest/>`_. In the root directory,
|
||
|
execute::
|
||
|
|
||
|
py.test
|
||
|
|