¿Herramienta para determinar qué versión más baja de Python se requiere?

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

Por ejemplo, el 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 sencilla 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 intenta hacer esto. Lo puedes encontrar 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!

No es una respuesta realmente útil, 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 deseas verificar, como esta .

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 nuevamente el código a partir de la versión más temprana, aunque podría ser difícil diferenciar entre módulos incorporados y módulos que son externos o algo intermedio como ElementTree.

El resultado debe ser una descripción general de las versiones que admiten la syntax 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.