def checkArg(arg: str| list[str]) -> str:
match arg:
case str():
return 'str'
case [*items] if all(isinstance(item, str) for item in items):
return 'list(str)'
case _:
return "unmatched"
def test(arg: str|list[str]):
print(f'{arg=!r}: {checkArg(arg)}')
test(0)
test('This should match')
test(['This','should','match'])
test(['This','should',0,'not','match'])
ZGVmIGNoZWNrQXJnKGFyZzogc3RyfCBsaXN0W3N0cl0pIC0+IHN0cjoKICAgIG1hdGNoIGFyZzoKICAgICAgICBjYXNlIHN0cigpOgogICAgICAgICAgICByZXR1cm4gJ3N0cicKICAgICAgICBjYXNlIFsqaXRlbXNdIGlmIGFsbChpc2luc3RhbmNlKGl0ZW0sIHN0cikgZm9yIGl0ZW0gaW4gaXRlbXMpOgogICAgICAgICAgICByZXR1cm4gJ2xpc3Qoc3RyKScKICAgICAgICBjYXNlIF86CiAgICAgICAgICAgIHJldHVybiAidW5tYXRjaGVkIgoKZGVmIHRlc3QoYXJnOiBzdHJ8bGlzdFtzdHJdKToKICAgIHByaW50KGYne2FyZz0hcn06IHtjaGVja0FyZyhhcmcpfScpCgp0ZXN0KDApCnRlc3QoJ1RoaXMgc2hvdWxkIG1hdGNoJykKdGVzdChbJ1RoaXMnLCdzaG91bGQnLCdtYXRjaCddKQp0ZXN0KFsnVGhpcycsJ3Nob3VsZCcsMCwnbm90JywnbWF0Y2gnXSk=