tabnanny — Validador de sangría

Propósito:Escanear el código fuente de Python en busca de sangría sospechosa.

El uso constante de la sangría es importante en un lenguaje como Python, donde el espacio en blanco es significativo. El módulo tabnanny proporciona un escáner para informar sobre el uso ambiguo de la sangría.

Correr desde la línea de comando

La forma más simple de usar tabnanny es ejecutarlo desde la línea de comandos, pasando los nombres de los archivos para verificar. Si pasas nombres de directorio, los directorios se escanean recursivamente para encontrar archivos .py para verificar.

Ejecutar tabnanny a través del código fuente PyMOTW expuso un módulo antiguo con tabuladores en lugar de espacios.

$ python3 -m tabnanny .
./source/queue/fetch_podcasts.py 65 "    \t\tparsed_url = \
urlparse(enclosure['url'])\n"

La línea 65 de fetch_podcasts.py tenía dos tabuladores en lugar de 8 espacios. Esto no era evidente en un editor de texto, que estaba configurado con tabuladores configurados en 4 espacios, por lo que visualmente no había diferencia.

        for enclosure in entry.get('enclosures', []):
            parsed_url = urlparse(enclosure['url'])
            message('queuing {}'.format(
                parsed_url.path.rpartition('/')[-1]))
            enclosure_queue.put(enclosure['url'])

Corregir la línea 65 y ejecutar tabnanny nuevamente mostró otro error en la línea 66. Un último problema apareció en la línea 67.

Si deseas escanear archivos, pero no ves los detalles sobre el error, usa la opción -q para suprimir toda la información, excepto el nombre de archivo.

$ python3 -m tabnanny -q .
./source/queue/fetch_podcasts.py

Para ver más información sobre los archivos que se escanean, usa la opción -v.

'source/queue/': listing directory
'source/queue/fetch_podcasts.py': *** Line 65: trouble in tab
city! ***
offending line: "    \t\tparsed_url = urlparse(enclosure['url'])
\n"
indent not greater e.g. at tab sizes 1, 2
'source/queue/queue_fifo.py': Clean bill of health.
'source/queue/queue_lifo.py': Clean bill of health.
'source/queue/queue_priority.py': Clean bill of health.

Nota

Ejecutar estos ejemplos contra los archivos fuente PyMOTW no informará los mismos errores, ya que los problemas se han solucionado.

Ver también