Skip to main content

Define signatures to create beautiful APIs

Project description

=======
Autosig
=======


.. image:: https://img.shields.io/pypi/v/autosig.svg
:target: https://pypi.python.org/pypi/autosig

.. image:: https://img.shields.io/travis/piccolbo/autosig.svg
:target: https://travis-ci.org/piccolbo/autosig

.. image:: https://readthedocs.org/projects/autosig/badge/?version=latest
:target: https://autosig.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status


.. image:: https://pyup.io/repos/github/piccolbo/autosig/shield.svg
:target: https://pyup.io/repos/github/piccolbo/autosig/
:alt: Updates

**Experimental**

Autosig allows to create classes that describe signatures of functions and common processing of arguments. This allows to:

* Model functions that share the same signature
* Model the commonalities between different signatures, e.g. sharing the first few arguments
* Model common processing normally associated with signatures, such as default values, type checking, validation and conversion, this both at the level of individual arguments and globally for a signature (e.g, check the the first argument is a DataFrame vs. check the that first two arguments are both of the same type)

Since a signature is modeled with class, inheritance can be used to capture commonalities and differences between signatures::

from autosig import *
# define a class with @signature decorator inheriting from a subclass of
# Signature (I know, a little redundant in this case)
# x and y are parameters with no special properties
@signature
class BinaryOp(Signature):
x = param()
y = param()

# define a parameter with an int annotation, converting to int if necessary)
int_param = param(converter=int, type=int)

# define another signature with two integer parameters, same annotation and
# conversion behavior
@signature
class BinaryIntOp(BinaryOp):
x = int_param
y = int_param


# define a binary operator
@autosig(sig=BinaryOp)
def add(x, y):
return x + y

# define a binary operator with int parameters
@autosig(sig=BinaryIntOp)
def int_add(x, y):
return x + y

add(2, 3) # 5
add(2, "3") # fails
int_add(2, "3") # 5


=======
History
=======


0.3.0 (2018-08-30)
-----------------

* Compose docstring from param docstrings

0.2.3 (2018-08-28)

* Better and passing tests.

0.2.2 (2018-08-27)
------------------

* More stringent enforcement of signatures including defaults. Fixed build.

0.1.0 (2018-04-25)
------------------

* First release on PyPI.


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

autosig-0.3.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

autosig-0.3.0-py2.py3-none-any.whl (3.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file autosig-0.3.0.tar.gz.

File metadata

  • Download URL: autosig-0.3.0.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.6

File hashes

Hashes for autosig-0.3.0.tar.gz
Algorithm Hash digest
SHA256 c4599b3a56e3bf38bd5ab45680951e31e94b62c059dbf7da4a3237ede660d8b7
MD5 2e7a5f1582124e304053955f8ae298be
BLAKE2b-256 06709b33437dd2d34b568165065e37241676c7881a3c73ce1f0aa8acc31c8c3e

See more details on using hashes here.

File details

Details for the file autosig-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: autosig-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.6

File hashes

Hashes for autosig-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 64a1834396732e77fa3d73fcfce03ab60cc1658d89810fd138e2c469ffbda094
MD5 4b3d9f2d22558d00ed28138766810c89
BLAKE2b-256 6232b7379534d4fe4f4031162ed3dcd0a1ba5965048b7ff8e0f1ed8e21590324

See more details on using hashes here.

Supported by

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