Pregunta

¿Hay algo similar a Pylint, que se verá en un script de Python (o lo ejecute) y determinará qué versión de Python requiere cada línea (o función)?

Por ejemplo, uso teórico:

$ magic_tool <EOF
with something:
    pass
EOF
1: 'with' statement requires Python 2.6 or greater

$ magic_tool <EOF
class Something:
    @classmethod
    def blah(cls):
        pass
EOF
2: classmethod requires Python 2.2 or greater
$ magic_tool <EOF
print """Test
"""
EOF
1: Triple-quote requires Python 1.5 of later

¿Es tal cosa posible? Supongo que la forma más sencilla sería tener todas las versiones de Python en el disco, ejecutar el script con cada una y ver qué errores ocurren ...

¿Fue útil?

Solución

Inspirado por esta excelente pregunta, recientemente armé un script que intenta hacer esto. Puede encontrarlo en github en pyqver .

Está razonablemente completo, pero hay algunos aspectos que aún no se manejan (como se menciona en el archivo README). Siéntete libre de bifurcarlo y mejorarlo!

Otros consejos

No es una respuesta útil real, pero aquí va de todos modos. Creo que esto debería ser factible (aunque probablemente sea un ejercicio), por ejemplo, puede asegurarse de tener todas las gramáticas oficiales para las versiones que desea verificar, como this .

Luego, analice el bit de código que comienza con la primera versión de gramática. A continuación, necesita un mapa similar de todos los espacios de nombres de módulos incorporados y analizar el código nuevamente, comenzando con la versión más antigua, aunque podría ser difícil diferenciar entre módulos incorporados y módulos que son externos o algo intermedio como ElementTree. / p>

El resultado debe ser una descripción general de las versiones que admiten la sintaxis del código y una descripción general de los módulos y qué versión (si la hay) se necesita para usarla. Con ese resultado podrías calcular la mejor versión más baja y más alta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top