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.1 (2018-08-30)
-----------------

* Improved docstring generation

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.1.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: autosig-0.3.1.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.1.tar.gz
Algorithm Hash digest
SHA256 94f3f798485342eaca54a466524ee4d4d32ad3c67a63095425dac1beacab75eb
MD5 c039ad3bf8af8c229d54be977c88cf23
BLAKE2b-256 92dbfe14a539539f386577ea1c5b54845ab0e3752e671304ef044286eb3a6088

See more details on using hashes here.

File details

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

File metadata

  • Download URL: autosig-0.3.1-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.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7d72b322092b286d8df180c3b8bf52b720f2d47ee55ccdfdb23537d9cd3dc2bb
MD5 b96cb32a15ea37c4a0b4498dbeaa80d8
BLAKE2b-256 18cb58273424dd23a6cf61bfcf3b7bf2e646a0c99c9e584b8523755185ccba41

See more details on using hashes here.

Supported by

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