style - visual code python linter
¿Herramienta para determinar qué versión más baja de Python requiere? (2)
¿Hay algo similar a Pylint, que verá un script de Python (o lo ejecutará) 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 posible tal cosa? Supongo que la forma más simple sería tener todas las versiones de Python en el disco, ejecutar el script con cada una y ver qué errores ocurren.
Inspirado por esta excelente pregunta, recientemente armé un guión que trata de hacer esto. Puedes encontrarlo en github at pyqver .
Está razonablemente completo, pero hay algunos aspectos que todavía no se han manejado (como se menciona en el archivo README). ¡Siéntete libre de bifurcar y mejorar!
No es una respuesta útil real, pero aquí va de todos modos. Creo que esto debería ser factible (aunque probablemente sea un buen ejercicio), por ejemplo, puedes asegurarte de tener todas las gramáticas oficiales para las versiones que quieras verificar, como esta .
Luego analiza el bit de código comenzando 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 de nuevo comenzando con la versión más antigua, aunque puede ser difícil diferenciar entre módulos integrados y módulos que son externos o algo intermedio, como ElementTree.
El resultado debería ser una descripción general de las versiones que admitan la sintaxis del código y una descripción general de los módulos y qué versión (si es que se necesita) para usarla. Con ese resultado podrías calcular la mejor versión más baja y la más alta.