Skip to main content

Define signatures to create beautiful APIs

Project description

Autosig

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

Uploaded Source

Built Distribution

autosig-0.2.2-py2.py3-none-any.whl (3.1 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: autosig-0.2.2.tar.gz
  • Upload date:
  • Size: 9.6 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.25.0 CPython/3.6.6

File hashes

Hashes for autosig-0.2.2.tar.gz
Algorithm Hash digest
SHA256 a3bc015d5c7bb5072bb837dced55fe7f2d2b78a725dfcf25dc9fe1b6a5ae6fab
MD5 11bfadcf1ccc4306437d13ac5bbb7648
BLAKE2b-256 91eb14e5d623f45b0d93fc300fe2f3763b41ebc2b27f77fc84b28c7b23e2aef0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: autosig-0.2.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.1 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.25.0 CPython/3.6.6

File hashes

Hashes for autosig-0.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 216c2aae32be0b0212e32ae62f8b077b202ac908727c0f912cb32bdc2e3c14ef
MD5 fc725d7ee4e69f2bdc846727df38cb46
BLAKE2b-256 1804b4a5f67341832d8dc26c9947a8ab5498269f47e98e995a731cfa09006612

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