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

Uploaded Source

Built Distribution

autosig-0.2.1-py2.py3-none-any.whl (3.0 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: autosig-0.2.1.tar.gz
  • Upload date:
  • Size: 9.5 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.1.tar.gz
Algorithm Hash digest
SHA256 59364686a5799ffec75492a82060cccfda7da794f012d5fa558d095cba9dabc7
MD5 da024052da06f92dff0fdd37a3a724a4
BLAKE2b-256 24c2b1648c9a9d8feeb94aeaa19c77724c211a3a4f141fdcbcf614d1c69db2d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: autosig-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.0 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.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c3475eef8d6418037745bbd595ab2e89efdce177855b1c0128c872138ef3da1d
MD5 999659f6422f8f1bb213e8e87218e1b7
BLAKE2b-256 c80a0e8b81b7d00f34f23f16c9643890b0128f9321033d455555192d1b79ec65

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