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.
=========
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a729257585dd88763a142405cb74fa0a9c5d0ff4f4d15ef376ed1cf86085a42d |
|
MD5 | aeaf12b891ed50497663bdd521c75ddc |
|
BLAKE2b-256 | da5426a73f158fca65bc14be01b25358c183f2939223e9d46b55124363dacd7d |
File details
Details for the file annotated-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: annotated-0.0.2-py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14125fa5166d444da8d9f582014b00d9ae49eb00c459c0e42537105611ab8110 |
|
MD5 | eaf9af277792d0097fa8460a9773de42 |
|
BLAKE2b-256 | 3eefe985819b40d16ec4fb19dd45332b5154b2b5316df2a11910861388de29d6 |