Validargs
Description
A function decorator that is using the inspect library to validate arguments passed in the decorated function.
It allows writing complex and re-usable argument validation rules injected directly in the function signature.
The validation is not based on type annotations, which allows to go beyond the basic type validations.
NOTE: pydantic is a far more advanced and very well supported library, but requires to model your arguments. If you haven't already, make sure you check it out.
Source Code: https://github.com/kolitiri/validargs
Requirements
Python 3.8+
Installation
pip install validargs
Usage
For best results, use the argument definitions syntax as of python v3.8.
Use "/" and "*" to distinguish between "positional only", "positional or keyword" and "keyword only" arguments.
Define custom validation rules using the Validator class.
""" my_app.py """
from typing import Any
from validargs import validated, Validator
def positive_number(argument: int) -> None:
if argument is None:
return None
if type(argument) is not int:
raise TypeError("Number must be an integer")
if argument <= 0:
raise Exception("Number must be a positive integer")
def short_str(argument: str) -> None:
if argument is None:
return None
if len(argument) > 20:
raise Exception("String too long")
Use the validated decorator to decorate the functions that you want validated.
@validated
def my_function(
positive_number: int = Validator(positive_number),
/,
short_string: str = Validator(short_str),
*,
another_short_string: str = Validator(short_str),
):
pass
You can mix and match arguments with and without validators and also assign default values.
@validated
def my_function(
positive_number: int = Validator(positive_number, default_value=10), # Validator with default value
non_validated_arg: int = 0, # Regular argument with default value
/,
short_string: str = Validator(short_str), # Validator without default value
*,
another_validated_argument: str, # Regular argument without default value
):
pass
Contributions
If you want to contribute to the package, please have a look at the CONTRIBUTING.md file for some basic instructions. Feel free to reach me in my email or my twitter account, which you can find in my github profile!
License
This project is licensed under the terms of the MIT license.
Authors
Christos Liontos
Metadata
Release files for validargs 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| validargs-0.1.1.tar.gz | 4.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| validargs-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.2 kB
Release files / validargs-0.1.1.tar.gz
| Download URL | validargs-0.1.1.tar.gz |
|---|---|
| Size | 4.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f2609624fda0e72075d93383c4e9457c21f44b4577962ebbd1f19d4ab1fada2d
|
|
BLAKE2b-256 checksum How to use checksums |
432ad85517f7af343ef8a0a92d11f8ab6222fabb747397d8da95fb7418f14c3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.0 CPython/3.10.0 Darwin/21.6.0
|
Release files / validargs-0.1.1-py3-none-any.whl
| Download URL | validargs-0.1.1-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1bddd147bed301a70ec93b993505a33c12799d8074efec2b3ef8973499de5bc2
|
|
BLAKE2b-256 checksum How to use checksums |
669d0e020c505e23ffa8925a0241162045c3c348118095a7282199dfc8dd89cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.2.0 CPython/3.10.0 Darwin/21.6.0
|