decorator for fast check types of arguments which are given to function
Project description
Overview.
char stands for: check of arguments.
This library gives to user ability to check types of function arguments via one decorator.
Example
from char import char
# OR from char import check_types_of_arguments # They are equivalent
@char
def func(int_x):
pass
ArgumentTypeError: Incorrect type of variable was given to function: func
---> For variable: int_x
---> Were given value: pewpew
---> With type: <class 'str'>
---> Instead of: <class 'int'>
Installation via pip:
pip install char
Usage with default settings
Default prefixes
Here will be a list of name prefixes and which type the variable is expected to be
If variable name doesn’t start with ony of the given prefixes then variable type won’t be checked.
“any_” - object
“bool_” - bool
“b_” - bool
“is_” - bool
“has_” - bool
“str_” - str
“bytes_” - bytes
“int_” - int
“i_” - int
“float_” - float
“f_” - float
“list_” - list
“l_” - list
“dict_” - dict
“d_” - dict
“set_” - set
“tuple_” - tuple
“t_” - tuple
Example
from char import char
@char
def oh_my_god(
int_arg,
float_arg,
list_arg,
undef_arg,
d_kwarg=None,
i_kwarg=0,
is_kwarg=False
):
pass
oh_my_god(0, 0.0, [], 1) # Will PASS
oh_my_god(0, 0.0, None, "text") # Will PASS
oh_my_god(0, 0.0, {}, "text") # Will FAIL and raise an ArgumentTypeError
oh_my_god(0, 0.0, [], Exception, d_kwarg={0: 1}) # Will PASS
oh_my_god(0, 0.0, [], object, is_kwarg=0) # Will FAIL and raise an ArgumentTypeError
Usage with user defined settings
Decorator arguments
bool_is_to_skip_None_value=True: Flag what to do with None values, by default None values won’t be checked.
dict_tuple_types_by_prefix_to_update_default: dictionary, which prefixes to add to the default ones
dict_tuple_types_by_prefix: dictionary, which prefixes to use instead of default ones
Decorator argument: bool_is_to_skip_None_value
@char
def func_with_default_decorator(dict_x):
pass
@char(bool_is_to_skip_None_value=False)
def func_with_custom_decorator(dict_x):
pass
func_with_default_decorator(None) # Will PASS
func_with_custom_decorator(None) # Will FAIL and raise an ArgumentTypeError
Decorator argument: dict_tuple_types_by_prefix_to_update_default
@char(dict_tuple_types_by_prefix_to_update_default={"num_": (int, float, bool)})
def very_complex_function(num_x, str_y=""):
pass
very_complex_function(0, "hihi") # Will PASS
very_complex_function(0.5, "heyhey") # Will PASS
very_complex_function(True) # Will PASS
very_complex_function("True") # Will FAIL and raise an ArgumentTypeError
Decorator argument: dict_tuple_types_by_prefix
@char(dict_tuple_types_by_prefix={"exception": (BaseException)})
def function_with_only_one_check(int_x, exception_y=None):
pass
function_with_only_one_check(0, Exception) # Will PASS
function_with_only_one_check(0.5, TypeError) # Will PASS because first variable won't be checked
function_with_only_one_check(0.5, "ERROR") # Will FAIL and raise an ArgumentTypeError
Links
Project local Links
Contacts
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.