Migrer Autolib' à Python 3 (sans douleur)

Presenter Notes

About me

Presenter Notes

Pourquoi adopter Py 3 ?

Presenter Notes

Pourquoi migrer à Python 3

Les bonnes raisons :

  • Actif (asyncio, TLS, metaclass helpers, etc.)
  • Agréable (super(), f-strings, ...)
  • Permet d'écrire du code plus sûr (bytes, keyword-only arguments, mypy)

Presenter Notes

Pourquoi migrer à Python 3

Rester sur Python2 n'est pas une option...

  • Nouvelles bibliothèques : Python :: 3 :: Only

Presenter Notes

Pourquoi migrer à Python 3

Rester sur Python2 n'est pas une option...

  • Nouvelles bibliothèques : Python :: 3 :: Only
  • Fin de support de Python 2 en 2020

Presenter Notes

Pourquoi migrer à Python 3

Rester sur Python2 n'est pas une option...

  • Nouvelles bibliothèques : Python :: 3 :: Only
  • Fin de support de Python 2 en 2020
  • Fin de support imminent sur Django (version 2.0, dans environ 8 mois)

Presenter Notes

Migrer un projet Django (théorie)

Presenter Notes

Migrer un projet Django (théorie)

Suivez la doc !

  • Plus simple qu'un projet Python pur (Django gère la partie bytes/text)
  • Utilisez six
  • Test, fix, test, repeat

Presenter Notes

Migrer un projet Django (théorie)

Changements standards (Python):

  • from future import .unicode_literals, division
  • iteritems() => items()
  • long => int
  • six.text_type

Presenter Notes

Migrer un projet Django (théorie)

Changements standards (Django) :

  • @python_2_unicode_compatible
  • Corriger les b'XXX' dans les migrations
  • Management commands : remplacer print foo par self.stdout.write

Presenter Notes

Interlude : Autolib'

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave
  • 2012 : Auto-partage entreprise ; bluetils

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave
  • 2012 : Auto-partage entreprise ; bluetils
  • 2013 : Lyon, Bordeaux, Bluebus ; blusers, bluecrash, bluebus, bluefinance

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave
  • 2012 : Auto-partage entreprise ; bluetils
  • 2013 : Lyon, Bordeaux, Bluebus ; blusers, bluecrash, bluebus, bluefinance
  • 2014 : Londres ; chargealot, subzero, corzeham ; bluesup

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave
  • 2012 : Auto-partage entreprise ; bluetils
  • 2013 : Lyon, Bordeaux, Bluebus ; blusers, bluecrash, bluebus, bluefinance
  • 2014 : Londres ; chargealot, subzero, corzeham ; bluesup
  • 2015 : Londres v2, leasing ; milborne, leasetaylor

Presenter Notes

Interlude : Autolib'

  • 2011 : Lancement ; autoslave
  • 2012 : Auto-partage entreprise ; bluetils
  • 2013 : Lyon, Bordeaux, Bluebus ; blusers, bluecrash, bluebus, bluefinance
  • 2014 : Londres ; chargealot, subzero, corzeham ; bluesup
  • 2015 : Londres v2, leasing ; milborne, leasetaylor
  • 2016 : Indianapolis, Turin ; oook, loglumbo, filio

Presenter Notes

Interlude : plan de bascule

bluesys-packages.png

Presenter Notes

Impact réels

Presenter Notes

Impact réels

  • Une vingtaine de régressions mineures

Presenter Notes

Impact réels

  • Une vingtaine de régressions mineures
  • Une série de hacks cassés

Presenter Notes

Impact réels

  • Une vingtaine de régressions mineures
  • Une série de hacks cassés
  • 15 minutes de coupure en production

Presenter Notes

Petits bugs

  • sort() ne trie plus les objets non comparables
  • L'ordre des dictionnaires n'est plus stable -- on s'en sert quelque part sans le savoir !

Presenter Notes

Complications

  • Interactions "non-HTTP" (fichiers bancaires plats, etc.)
  • Sérialisation CSV (changemeent du sniffer)

Presenter Notes

Coupures

  • Les bricolages Shadow IT...
  • Bibliothèques exotiques / peu usitées (spyne)

Presenter Notes

Merci !

Presenter Notes

PS: On recrute ;)

Presenter Notes