Skip to main content

Apply annotations as callables on their respective arguments

Project description

Annotated
=========
Annotated provides a decorator that flags a function's annotations as useful, callable expressions. Each annotation will be called with its corresponding argument as first parameter, and the result will replace that argument.

If no annotation was specified for this particular argument, it will behave as if `lambda x: x` had been used as annotation.

`@annotated` Decorator
----------------------
The `@annotated` decorator is meant to decorate functions, or other objects with a `__code__` attribute (a class is **not** one). It indicates that the function decorated has "active" annotations, for example:

```python
from annotated import annotated

@annotated
def hello(name: str):
print('Hello, ' + name + '!')

hello('world')
# "Hello, world!"
hello(None)
# "Hello, None!"
```

Albeit a bad example (one would rather use `str.format` or the `%` notation to include a value in a string), this illustrates the behaviour of an `@annotated` function.

Used this way, `@annotated` ensures that the `name` argument of the `hello` function is **always** a character string.

`@annotated` also respects default values, and applies annotations to them. Thus, if we were to rewrite `hello` such as:

```python
from annotated import annotated

@annotated
def hello(name: str='world'):
print('Hello, ' + name + '!')

hello()
# "Hello, world!"
```

The default value would be honored, as well as any non-defaults.

It should be noted that `@annotated` supports both return annotations (`->`), keyword argument annotations and `*`/`**` annotations.

Using `@annotated` on an incompatible (`__code__`-less) object will result in a `TypeError` exception.


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

annotated-0.0.2.tar.gz (3.0 kB view details)

Uploaded Source

Built Distribution

annotated-0.0.2-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file annotated-0.0.2.tar.gz.

File metadata

  • Download URL: annotated-0.0.2.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for annotated-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a729257585dd88763a142405cb74fa0a9c5d0ff4f4d15ef376ed1cf86085a42d
MD5 aeaf12b891ed50497663bdd521c75ddc
BLAKE2b-256 da5426a73f158fca65bc14be01b25358c183f2939223e9d46b55124363dacd7d

See more details on using hashes here.

File details

Details for the file annotated-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for annotated-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 14125fa5166d444da8d9f582014b00d9ae49eb00c459c0e42537105611ab8110
MD5 eaf9af277792d0097fa8460a9773de42
BLAKE2b-256 3eefe985819b40d16ec4fb19dd45332b5154b2b5316df2a11910861388de29d6

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