Python-future: Fijador para eliminar __future __ / futuras importaciones de código futurizado

Creado en 28 may. 2019  ·  5Comentarios  ·  Fuente: PythonCharmers/python-future

Estaba buscando esta función, pero no la vi en la documentación, así que estoy abriendo una solicitud de función.

Me encantaría ver un reparador que tome el código compatible con Python 2/3 y elimine el soporte de Python 2 de la mejor manera posible.

Esto sería:

  • Elimine las importaciones __future__ innecesarias ( print_function por ejemplo)
  • Quitar from future import standard_library y standard_library.install_aliases() líneas
  • Quitar from builtins import * líneas
  • Quitar from future.utils import python_2_unicode_compatible

Si ya existe un reparador de este tipo, me encantaría saberlo.

Varios de mis clientes están usando future para actualizar su código a Python 3 y luego descartan el soporte de Python 2 poco después y un reparador de este tipo sería muy útil para ellos.

futurize script help wanted unscheduled wontfix / cantfix

Comentario más útil

Yo mismo hice algunas transformaciones y las reuní en un guión. Actualmente está disponible aquí: https://github.com/purplediane/drop2

Todos 5 comentarios

Si existe, no está bien documentado. Tuve que eliminar manualmente todo eso. El uso de un accesorio que se ejecutó automáticamente tal vez con una bandera como -3 para significar solo refactorizar para el cumplimiento 3 e ignorar la compatibilidad con python2 sería genial.

Yo mismo hice algunas transformaciones y las reuní en un guión. Actualmente está disponible aquí: https://github.com/purplediane/drop2

Una herramienta relacionada, con cierta superposición (es decir, __future__ importaciones):

asottile / pyupgrade: una herramienta (y un gancho de confirmación previa) para actualizar automáticamente la sintaxis para las versiones más nuevas del idioma.

Otras cosas notables:

  • Elimina el prefijo u
  • Elimina (object) de class definiciones
  • Actualiza super() llamadas
  • Actualiza las importaciones de mock

Dicho esto, pude usar sed por standard_library :

sed -i '' '/.*standard_library.*/d' **/*.py
-from future import standard_library
-standard_library.install_aliases()
 import json
 import logging
 import urllib.parse

Planeo hacer lo mismo para:

  • .*python_2_unicode_compatible.*
  • .*implements_iterator.*
  • from builtins.*

Ya conozco pyupgrade y lo he usado. Es de mucha ayuda.

pyupgrade (más el gancho de confirmación previa) es una gran herramienta para este propósito. ¿Podemos cerrar este FR ya que la alternativa está disponible?

¿Fue útil esta página
0 / 5 - 0 calificaciones