from argparse import ArgumentParser def indent_type(n): n = int(n) if n: return " " * n else: return "\t" for argv in [[],"--indent 4".split()]: for default in ["\t", 0]: try: parser = ArgumentParser() parser.add_argument("--indent", default=default, type=indent_type) args = parser.parse_args(argv) if type(args.indent) != str: raise Exception("tried to-be-converted default; wasn’t converted") print(" win:", repr(default), argv) except Exception as e: print("fail:", repr(default), argv, type(e).__name__, e)