Python is a not typed language, and runs under the paradigm of first try and then it success or fails. This package allows you to have the capability of apply typing features in last versions of Python, allowing to the developer to have a transparent mechanism to grant that typing annotations are satisfied in the execution time of their programs.
Project description
safetypes package
Python is a non typed language, and runs under the paradigm of first try and then it success or fails. This package allows you to have the capability of apply typing features in last versions of Python, allowing to the developer to have a transparent mechanism to grant that typing annotations are satisfied in the execution time of their programs.
To use this package you only need to add an annotation before a function or method definition:
@safe_types
def my_func(test: str) -> int:
...
With this simple line when you run your program the annotation checks:
- The test argument satisfies the condition to be a str.
- The return value satisfies the condition to be an int.
Also, you can use the Typing package to have multiple types for the same argument or to extend the detail of typing your code::
from typing import Union
@safe_types
def my_func(test: Union[int, float]) -> Union[int, float]:
...
With this definition, the annotation checks if test argument and return value are one of two possible types: int and float. Note that not necessarily needs to be the same type in both cases, due to the annotation could not correlate a direct causality between arguments and return types.
If you have optional arguments, like this one:
@safe_types
def my_func(test: str = 'empty') -> None:
...
my_func()
Then the test argument is ignored if it is not used when you call the function.
If you want to accept unknown arguments using *args or **kwargs then you can use the non-strict validation as follows:
@safe_types(strict=False)
def my_func(test: str, *args, **kwargs) -> None:
...
my_func('yeah!', 'more... yeah!!', yeah='Not enough!!!')
In this case, the argument test will be checked but other parameters passed as additional and unknown arguments will be ignored and not checked.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file safetypes-0.1rc2.tar.gz.
File metadata
- Download URL: safetypes-0.1rc2.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3042dbe70633c76861ef9b60fce69c36fdfbb533ca1024461d29fecec6e4f871
|
|
| MD5 |
0505a9f8bed0aa7ab94ba3a7055e0314
|
|
| BLAKE2b-256 |
b191e0d7b69d317d964759d27b7f2ad6013b7edd25479954105e8ece4e00fc1c
|
File details
Details for the file safetypes-0.1rc2-py3-none-any.whl.
File metadata
- Download URL: safetypes-0.1rc2-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
957cf20116521aeaf69010746250f51cf2740217f5314ea476b12b6a89b979c5
|
|
| MD5 |
3e31ccd242a6275cfede5c864b20de6e
|
|
| BLAKE2b-256 |
48f8ac5546d1ba9bd5c848810735eb865261bfd357ce77d23369b92488fed627
|