def getargspecs(func):
    """Bridges inspect.getargspec and inspect.getfullargspec.
    Automatically selects the proper one depending of current Python version.
    Automatically bypasses wrappers from typechecked- and override-decorators.
    """
    if func is None:
        raise TypeError('None is not a Python function')
    if hasattr(func, 'ch_func'):
        return getargspecs(func.ch_func)
    elif hasattr(func, 'ov_func'):
        return getargspecs(func.ov_func)
    if hasattr(inspect, 'getfullargspec'):
        return inspect.getfullargspec(func) # Python 3
    else:
        return inspect.getargspec(func)
def getargspecs ( func ) : if func is None : raise TypeError ( 'None is not a Python function' ) if hasattr ( func , 'ch_func' ) : return getargspecs ( func . ch_func ) elif hasattr ( func , 'ov_func' ) : return getargspecs ( func . ov_func ) if hasattr ( inspect , 'getfullargspec' ) : return inspect . getfullargspec ( func ) else : return inspect . getargspec ( func )
Bridges inspect.getargspec and inspect.getfullargspec.
    Automatically selects the proper one depending of current Python version.
    Automatically bypasses wrappers from typechecked- and override-decorators.