Kw_assign Default Value

Default value can be assigned by adding default args to kw_assign() method.

In the following msg arg is assigned a default of Result:

from kwhelp import KwArg

def my_method(**kwargs) -> str:
    kw = KwArg(**kwargs)
    # assign args
    kw.kw_assign(key='first', require=True, types=[int])
    kw.kw_assign(key='second', require=True, types=[int])
    kw.kw_assign(key='msg', types=[str], default='Result:')
    kw.kw_assign(key='end', types=[str])
    _result = kw.first + kw.second
    if kw.is_attribute_exist('end'):
        return_msg = f'{kw.msg} {_result}{kw.end}'
    else:
        return_msg = f'{kw.msg} {_result}'
    return return_msg

Method result contains prefix of msg default value

>>> result = my_method(first=10, second=22, end="!")
>>> print(result)
Result: 32!

Method result contains Tally as msg default is now overridden by assiging value.

>>> result = my_method(first=10, second=22, end="!", msg="Tally")
>>> print(result)
Tally 32!

Method will raise an error as msg must be of type str as defined by types

>>> result = my_method(first=10, second=22, end="!", msg=-34)
TypeError: KwArg arg 'msg' is expected to be of '<class 'str'>' but got 'int'