Openlibrary: Ejecutar tanto en Python 2 como en Python 3

Creado en 19 mar. 2018  ·  20Comentarios  ·  Fuente: internetarchive/openlibrary

Bloqueado por: internetarchive / infogami # 56, internetarchive / infogami # 50

Como se discutió en el n. ° 846, hay una gran cantidad de código en la base de Internet Archive Code que actualmente está escrito en Python 2 y en desuso para Python 3.

El siguiente enlace informa sobre las diferencias clave de Python 2 a Python 3.

EDITAR: actualizado según las sugerencias de @cclauss

  • [x] Obtener la base de código para que sea compatible con la sintaxis de Python 3 (consulte __make lint__ cuando se ejecute en Py3 para conocer nuestro estado)

    • [x] # 1466 Corregir cómo se generan las excepciones en Python 3

    • [x] # 1509 Agregue __six__ a nuestros requisitos (lo encuentro menos sutil que __future__ mencionado a continuación).

    • [x] # 1517 Los parámetros de la función pueden no ser tuplas explícitas en Python 3

    • [x] # 1603 Rehaga las correcciones de __lambda__ que se revertieron en # 1466

    • [x] # 1468 Escape de carácter \ N con formato incorrecto en catalog / marc / load.py

    • [x] # 1501 __print () __ es una función en Python 3 en plugins / upstream / acs4.py

    • [x] Nombres no definidos __python3 -m flake8. --count --exclude = scripts / 20 , proveedor / --select = F821__

    • [x] Un RP de __basestring__ # 1563

    • [x] Un PR para __cmp () __ # 1643

    • [x] Un PR para __execfile () __ # 1525

    • [x] Un PR para __file () __ # 1564

    • [x] Un PR para __raw_input () __ # 1526

    • [x] Un PR para __unicode__ (Este es complicado y es mejor guardarlo para el final).



      • [x] Un PR para __xrange () __ # 1524



  • [x] Actualice nuestras dependencias para asegurarnos de que tenemos compatibilidad con Python 3 (consulte el n. ° 1454 para obtener algunas sugerencias).
  • [x] Arregle el vendored en cosas como __infogami__

    • [x] __Más opciones__, __Trigger build__ en https://travis-ci.org/internetarchive/acs4_py

    • [x] internetarchive / acs4_py # 7

    • [x] internetarchive / infogami # 40

    • [x] internetarchive / infogami # 42

    • [x] internetarchive / infogami # 43

    • [x] internetarchive / infogami # 56 Importaciones seguras de Cherrypick desde # 50

    • [x] internetarchive / infogami # 50 Más actualizaciones de Python 3

    • [x] internetarchive / infogami pasa las pruebas de Travis CI en Python 3

  • [x] Pasar las pruebas de Travis y desactivar el modo __allow_failures__ en Python 3
  • [] Prueba, prueba, prueba
@cclauss 2 Work In Progress Epic

Comentario más útil

Gracias por crear un problema separado para realizar un seguimiento de esto. La tarea es definitivamente de baja prioridad, pero no es fácil ni es un buen proyecto para principiantes, así que eliminé ambas etiquetas.

Cosas como esta son sensibles al tiempo, por lo que una publicación de blog aleatoria de 3 a 4 años no es una buena fuente de información. Para fines de planificación, las cosas que son importantes son cosas como cuándo las bibliotecas requeridas admitirán Python 3, cuándo dejarán de admitir Python 2, cómo se ven las últimas herramientas de migración, etc.

PERO, dado que es de baja prioridad, tenemos cosas más importantes en las que pensar para el plazo inmediato.

Todos 20 comentarios

A riesgo de decir lo obvio, es probable que la prioridad sea identificar aquellas características de Python 2 que a) se romperán en Python 3 yb) se usan en OL.

Gracias por crear un problema separado para realizar un seguimiento de esto. La tarea es definitivamente de baja prioridad, pero no es fácil ni es un buen proyecto para principiantes, así que eliminé ambas etiquetas.

Cosas como esta son sensibles al tiempo, por lo que una publicación de blog aleatoria de 3 a 4 años no es una buena fuente de información. Para fines de planificación, las cosas que son importantes son cosas como cuándo las bibliotecas requeridas admitirán Python 3, cuándo dejarán de admitir Python 2, cómo se ven las últimas herramientas de migración, etc.

PERO, dado que es de baja prioridad, tenemos cosas más importantes en las que pensar para el plazo inmediato.

Acuerdo completo con @tfmorris en todos los frentes.
Gracias por organizar un problema para esto, ya que eventualmente tendremos que averiguar la ruta para mantener infogami .

Mmm, hay "prioridades" y luego hay "prioridades". Lo importante puede no ser urgente y viceversa. Diría que este es importante pero no urgente. Si se ignora el tiempo suficiente, seguramente causará roturas.

@LeadSongDog ¿

@tfmorris No estoy en desacuerdo exactamente contigo, pero estoy diciendo que las prioridades unidimensionales conducen a la gestión de crisis. Una vez que algo difícil se etiqueta como de baja prioridad, queda desatendido o se cierra hasta que se rompe y se vuelve urgente. ¿Mejor no priorizarlo en absoluto?

Hay un trabajo de Travis CI para seguir nuestro progreso en esto ahora, gracias al PR # 1273

Hola, soy nuevo en OpenLibrary, pero parece que esto es algo que me interesaría hacer. ¿Le importa si continúo con esto, aunque sea lentamente, a pesar de que este no es un "buen primer número"?

NOTA: Esta lista se movió al principio de este problema:

Además, sugeriría que cambiemos el título de este número a "__Ejecutar tanto en Python 2 como en Python 3__" porque claramente es una buena práctica tener una base de código que funcione en ambos _antes_ de eliminar el soporte de Python 2. 423 días hasta el final de la vida de Python 2.

@cclauss con su permiso, ¿puedo actualizar su mensaje anterior ahora que se ha cambiado el título y se ha actualizado la lista de verificación? (para evitar que 2 listas de verificación no estén sincronizadas)

Aparte de Infogami, cualquier paso de seguimiento adicional que pueda recomendar sería muy apreciado: bowing_man:

¡Gracias por ser una fuerza impulsora para que esto suceda!

Siéntase libre de hacer las ediciones que tengan sentido para usted. Centrémonos en llevar a Infogami a un punto en el que ya no bloquee la prueba de Travis. Mi enfoque ha estado en otra parte, pero espero poder volver a participar en las próximas semanas.

Actualizamos nuestra lista de tareas anterior para celebrar los 100 días hasta el final de la vida de Python 2.

Por la charla aquí y la holgura, estoy etiquetando esto como un trabajo en progreso. Sin embargo, no hay cesionario. Supongo que @cclauss y @ salman-bhai serían los mejores candidatos, ya que son los líderes del equipo de Python3.

@cclauss ¿ @hornc y

¿Queremos repetir los pasos / bloqueadores restantes específicos para Python3?

No estoy seguro de por qué se redujo la prioridad. No es necesario que lo haga antes del 1 de enero, pero debe hacerlo pronto.

El principal bloqueador en este momento es infogami, aunque su portabilidad podría revelar problemas que quedan en otras partes del sistema. En lugar de intentar rastrear cada problema de infogami por separado aquí, podría tener más sentido señalar un problema épico de Python 3 de nivel superior de infogami.

Parece que tenemos algunos meses más de indulto. A finales de diciembre, la Python Software Foundation aplazó la fecha de jubilación (¡de nuevo!) Hasta abril de 2020.

https://www.python.org/psf/press-release/pr20191220/

Sí, pero este proyecto es el último gran proyecto que conozco que aún no ha superado la línea.

Se ha realizado la versión final de Python 2: https://stackoverflow.blog/2020/04/23/the-final-python-2-release-marks-the-end-of-an-era/ y no recibirá más actualizaciones de cualquier tipo, incluidos errores de seguridad críticos.

Cada día a partir de ahora (desde hace unos meses realmente) aumenta la exposición a vulnerabilidades sin parche que comprometen los sistemas de producción de OpenLibrary.

¡Es hora de cerrar este! ¡Gracias a todos por ayudarnos a llevarnos a Python 3!

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