Estou migrando para Python 3.12 e finalmente preciso remover a última distutils
dependência.
Estou usando from distutils.util import strtobool
para garantir que os argumentos da linha de comando sejam argparse
de fato bool, cuidando adequadamente de NaN
vs.False
True
arg_parser = argparse.ArgumentParser()
arg_parser.add_argument("-r", "--rebuild_all", type=lambda x: bool(strtobool(x)), default=True)
Portanto, esta questão é na verdade dupla:
- Qual seria uma alternativa ao obsoleto
strtobool
? - Alternativamente: Qual seria uma solução ainda melhor para impor que 'qualquer string' seja interpretada como
bool
, de maneira segura (por exemplo, para analisar argumentos)?
Que tal usar argparse
BooleanOptionalAction
? Isso está documentado na documentação do argparse , mas não de uma forma que me forneça um link útil.Isso seria parecido com:
E isso permitiria que você passasse
--rebuild-all
ou--no-rebuild-all
. Isso lhe dá uma opção que pode ser verdadeira ou falsa, mas sem o incômodo de ter que analisar uma string em um valor booleano.Você pode verificar esta alternativa:
https://github.com/symonsoft/str2bool