2012-02-11 23 views
18

Tengo un gran cuerpo de código python que necesita tener un estilo/formato que cumpla con el protocolo pep8. Hay variantes de pep8 que varias reglas (como this one by a coworker), pero lo más difícil es lidiar con dividir líneas demasiado largas y formatear el código modificado.Formateador de origen python programático

He mirado las preguntas sobre esto:

  1. python-formatter-tool
  2. python-source-formatter-pretty-printer

son de 2009 y 2010. Espero que mejores herramientas se han desarrollado desde entonces.

Sé acerca de PythonTidy, que es bastante bueno, pero hace un montón de código peor, en mi humilde opinión. Pylint detecta errores de formateo pero no los corrige. Los servicios web no son realmente relevantes para mis requisitos porque quiero una herramienta que pueda ser parte de una compilación.

¿Alguien tiene una recomendación que no ha sido cubierta? Gracias.

+0

Y no es programático, presumiblemente. – hughdbrown

+2

En cuanto a la votación de cierre, sería útil saber por qué las dos preguntas anteriores sobre las herramientas de formato de python no tienen votos cercanos, pero este intento sí lo hace. – hughdbrown

Respuesta

1

Google yapf funciona muy bien.

Hay una demostración en línea aquí: yapf.now.sh

Puede integrarla en su flujo de trabajo y ejecutarlo al guardar archivos en su editor o como un git precommit gancho o algo por el estilo.

+1

Detener el reloj. Tenemos un ganador. Esto es lo más cercano a lo que quiero. ¡Y tomó solo seis años obtener la respuesta! – hughdbrown

7

Otro que se ve bastante decente: autopep8

Pero tenga en cuenta que seguir ciegamente todas las convenciones en PEP8 no está realmente en el espíritu de PEP8. De PEP8 sí:

Pero lo más importante: saber cuándo hay que ser inconsistente - a veces la guía estilo simplemente no se aplica.

+0

Debería haber comentado anteriormente que tengo algo que trata con algunos errores pep8 pero nada que maneje inteligentemente las líneas que son demasiado largas, lo que me lleva a creer que se requiere una solución más general, un formateador de código. – hughdbrown

2

PyCharm tiene esta funcionalidad incorporada en y ahora tiene una, de código abierto edición gratuita comunidad. Abra su archivo en él y pulse CtrlAltL.

De manera unitaria, tampoco refactorizará automáticamente los nombres de las funciones y las variables a la convención PEP8 ... ésos tendrán que hacerse uno por uno con la funcionalidad de cambio de nombre de PyCharm.