def _verify_arg_name(stub_arg: nodes.Argument, runtime_arg: inspect.Parameter, function_name: str) -> Iterator[str]:
    'Checks whether argument names match.'
    if is_dunder(function_name, exclude_special=True):
        return

    def strip_prefix(s: str, prefix: str) -> str:
        return (s[len(prefix):] if s.startswith(prefix) else s)
    if (strip_prefix(stub_arg.variable.name, '__') == runtime_arg.name):
        return

    def names_approx_match(a: str, b: str) -> bool:
        a = a.strip('_')
        b = b.strip('_')
        return (a.startswith(b) or b.startswith(a) or (len(a) == 1) or (len(b) == 1))
    if ((runtime_arg.kind == inspect.Parameter.POSITIONAL_ONLY) and names_approx_match(stub_arg.variable.name, runtime_arg.name)):
        return
    if (stub_arg.variable.name == '_self'):
        return
    (yield 'stub argument "{}" differs from runtime argument "{}"'.format(stub_arg.variable.name, runtime_arg.name))
Checks whether argument names match.
def _verify_arg_name(stub_arg: nodes.Argument, runtime_arg: inspect.Parameter, function_name: str) -> Iterator[str]:
    
    if is_dunder(function_name, exclude_special=True):
        return

    def strip_prefix(s: str, prefix: str) -> str:
        return (s[len(prefix):] if s.startswith(prefix) else s)
    if (strip_prefix(stub_arg.variable.name, '__') == runtime_arg.name):
        return

    def names_approx_match(a: str, b: str) -> bool:
        a = a.strip('_')
        b = b.strip('_')
        return (a.startswith(b) or b.startswith(a) or (len(a) == 1) or (len(b) == 1))
    if ((runtime_arg.kind == inspect.Parameter.POSITIONAL_ONLY) and names_approx_match(stub_arg.variable.name, runtime_arg.name)):
        return
    if (stub_arg.variable.name == '_self'):
        return
    (yield 'stub argument "{}" differs from runtime argument "{}"'.format(stub_arg.variable.name, runtime_arg.name))