Traduction brouillone de howto/pyporting (#871)

* Traduction brouillone de howto/pyporting

* Fix spelling + syntax

* Missing reference

* Fix superfluous reference

* Apply suggestions from code review

Co-Authored-By: Christophe Nanteuil <35002064+christopheNan@users.noreply.github.com>

* Fix ref

* Update howto/pyporting.po

Co-Authored-By: Christophe Nanteuil <35002064+christopheNan@users.noreply.github.com>

* Fix a few errors

* Fix a few errors

* wrapping
This commit is contained in:
Nicolas 2019-09-11 18:17:45 +02:00 committed by Christophe Nanteuil
parent 1d40067346
commit 2ab53730f7

View File

@ -6,17 +6,18 @@ msgstr ""
"Project-Id-Version: Python 3.6\n" "Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-10 11:27+0200\n" "POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2019-09-05 10:42+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n" "Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Last-Translator: \n"
"X-Generator: Poedit 2.2.1\n"
#: ../Doc/howto/pyporting.rst:5 #: ../Doc/howto/pyporting.rst:5
msgid "Porting Python 2 Code to Python 3" msgid "Porting Python 2 Code to Python 3"
msgstr "" msgstr "Portage de code Python 2 vers Python 3"
#: ../Doc/howto/pyporting.rst:0 #: ../Doc/howto/pyporting.rst:0
msgid "author" msgid "author"
@ -24,7 +25,7 @@ msgstr "auteur"
#: ../Doc/howto/pyporting.rst:7 #: ../Doc/howto/pyporting.rst:7
msgid "Brett Cannon" msgid "Brett Cannon"
msgstr "" msgstr "Brett Cannon"
#: ../Doc/howto/pyporting.rst:None #: ../Doc/howto/pyporting.rst:None
msgid "Abstract" msgid "Abstract"
@ -37,12 +38,18 @@ msgid ""
"Python. This guide is meant to help you figure out how best to support both " "Python. This guide is meant to help you figure out how best to support both "
"Python 2 & 3 simultaneously." "Python 2 & 3 simultaneously."
msgstr "" msgstr ""
"Python 3 étant le futur de Python tandis que Python 2 est encore activement "
"utilisé, il est préférable de faire en sorte que votre projet soit "
"disponible pour les deux versions majeures de Python. Ce guide est destiné à "
"vous aider à comprendre comment gérer simultanément Python 2 & 3."
#: ../Doc/howto/pyporting.rst:16 #: ../Doc/howto/pyporting.rst:16
msgid "" msgid ""
"If you are looking to port an extension module instead of pure Python code, " "If you are looking to port an extension module instead of pure Python code, "
"please see :ref:`cporting-howto`." "please see :ref:`cporting-howto`."
msgstr "" msgstr ""
"Si vous cherchez à porter un module d'extension plutôt que du pur Python, "
"veuillez consulter :ref:`cporting-howto`."
#: ../Doc/howto/pyporting.rst:19 #: ../Doc/howto/pyporting.rst:19
msgid "" msgid ""
@ -50,54 +57,71 @@ msgid ""
"came into existence, you can read Nick Coghlan's `Python 3 Q & A`_ or Brett " "came into existence, you can read Nick Coghlan's `Python 3 Q & A`_ or Brett "
"Cannon's `Why Python 3 exists`_." "Cannon's `Why Python 3 exists`_."
msgstr "" msgstr ""
"Si vous souhaitez lire l'avis d'un développeur principal de Python sur ce "
"qui a motivé la création de Python 3, vous pouvez lire le `Python 3 Q & A`_ "
"de Nick Coghlan ou bien `Why Python 3 exists`_ de Brett Cannon."
#: ../Doc/howto/pyporting.rst:23 #: ../Doc/howto/pyporting.rst:23
msgid "" msgid ""
"For help with porting, you can email the python-porting_ mailing list with " "For help with porting, you can email the python-porting_ mailing list with "
"questions." "questions."
msgstr "" msgstr ""
"Vous pouvez solliciter par courriel l'aide de la liste de diffusion python-"
"porting_ pour vos questions liées au portage."
#: ../Doc/howto/pyporting.rst:27 #: ../Doc/howto/pyporting.rst:27
msgid "The Short Explanation" msgid "The Short Explanation"
msgstr "" msgstr "La version courte"
#: ../Doc/howto/pyporting.rst:29 #: ../Doc/howto/pyporting.rst:29
msgid "" msgid ""
"To make your project be single-source Python 2/3 compatible, the basic steps " "To make your project be single-source Python 2/3 compatible, the basic steps "
"are:" "are:"
msgstr "" msgstr ""
"Afin de rendre votre projet compatible Python 2/3 avec le même code source, "
"les étapes de base sont :"
#: ../Doc/howto/pyporting.rst:32 #: ../Doc/howto/pyporting.rst:32
msgid "Only worry about supporting Python 2.7" msgid "Only worry about supporting Python 2.7"
msgstr "" msgstr "Ne se préoccuper que du support de Python 2.7"
#: ../Doc/howto/pyporting.rst:33 #: ../Doc/howto/pyporting.rst:33
msgid "" msgid ""
"Make sure you have good test coverage (coverage.py_ can help; ``pip install " "Make sure you have good test coverage (coverage.py_ can help; ``pip install "
"coverage``)" "coverage``)"
msgstr "" msgstr ""
"S'assurer d'une bonne couverture des tests (coverage.py_ peut aider ; ``pip "
"install coverage``)"
#: ../Doc/howto/pyporting.rst:35 ../Doc/howto/pyporting.rst:116 #: ../Doc/howto/pyporting.rst:35 ../Doc/howto/pyporting.rst:116
msgid "Learn the differences between Python 2 & 3" msgid "Learn the differences between Python 2 & 3"
msgstr "" msgstr "Apprendre les différences entre Python 2 et 3"
#: ../Doc/howto/pyporting.rst:36 #: ../Doc/howto/pyporting.rst:36
msgid "" msgid ""
"Use Futurize_ (or Modernize_) to update your code (e.g. ``pip install " "Use Futurize_ (or Modernize_) to update your code (e.g. ``pip install "
"future``)" "future``)"
msgstr "" msgstr ""
"Utiliser Futurize_ (ou Modernize_) pour mettre à jour votre code (par "
"exemple ``pip install future``)"
#: ../Doc/howto/pyporting.rst:37 #: ../Doc/howto/pyporting.rst:37
#, fuzzy
msgid "" msgid ""
"Use Pylint_ to help make sure you don't regress on your Python 3 support " "Use Pylint_ to help make sure you don't regress on your Python 3 support "
"(``pip install pylint``)" "(``pip install pylint``)"
msgstr "" msgstr ""
"Utiliser Pylint_ pour faciliter la détection de régressions concernant la "
"compatibilité Python 3 (``pip install pylint``)"
#: ../Doc/howto/pyporting.rst:39 #: ../Doc/howto/pyporting.rst:39
msgid "" msgid ""
"Use caniusepython3_ to find out which of your dependencies are blocking your " "Use caniusepython3_ to find out which of your dependencies are blocking your "
"use of Python 3 (``pip install caniusepython3``)" "use of Python 3 (``pip install caniusepython3``)"
msgstr "" msgstr ""
"Utiliser caniusepython3_ pour déterminer quelles sont, parmi les dépendances "
"que vous utilisez, celles qui bloquent votre utilisation de Python 3 (``pip "
"install caniusepython3``)"
#: ../Doc/howto/pyporting.rst:41 #: ../Doc/howto/pyporting.rst:41
msgid "" msgid ""
@ -105,6 +129,10 @@ msgid ""
"integration to make sure you stay compatible with Python 2 & 3 (tox_ can " "integration to make sure you stay compatible with Python 2 & 3 (tox_ can "
"help test against multiple versions of Python; ``pip install tox``)" "help test against multiple versions of Python; ``pip install tox``)"
msgstr "" msgstr ""
"Une fois que vos dépendances ne sont plus un obstacle, utiliser "
"l'intégration continue pour s'assurer que votre code demeure compatible "
"Python 2 & 3 (tox_ peut aider à tester la comptabilité de sources avec "
"plusieurs versions de Python; ``pip install tox``)"
#: ../Doc/howto/pyporting.rst:44 #: ../Doc/howto/pyporting.rst:44
msgid "" msgid ""
@ -112,6 +140,9 @@ msgid ""
"works in both Python 2 & 3 (e.g. use mypy_ to check your typing under both " "works in both Python 2 & 3 (e.g. use mypy_ to check your typing under both "
"Python 2 & Python 3)." "Python 2 & Python 3)."
msgstr "" msgstr ""
"Envisager l'utilisation d'un vérifieur de type statique afin de vous assurer "
"que votre façon d'utiliser les types est compatible avec Python 2 et 3 (par "
"exemple en utilisant mypy_ pour vérifier votre typage sous Python 2 et 3)."
#: ../Doc/howto/pyporting.rst:50 #: ../Doc/howto/pyporting.rst:50
msgid "Details" msgid "Details"
@ -125,6 +156,12 @@ msgid ""
"3. Most changes required to support Python 3 lead to cleaner code using " "3. Most changes required to support Python 3 lead to cleaner code using "
"newer practices even in Python 2 code." "newer practices even in Python 2 code."
msgstr "" msgstr ""
"Un point clé du support simultané de Python 2 et 3 est qu'il vous est "
"possible de commencer **dès aujourd'hui** ! Même si vos dépendances ne sont "
"pas encore compatibles Python 3, vous pouvez moderniser votre code **dès "
"maintenant** pour gérer Python 3. La plupart des modifications nécessaires à "
"la compatibilité Python 3 donnent un code plus propre utilisant une syntaxe "
"plus récente, même dans du code Python 2."
#: ../Doc/howto/pyporting.rst:58 #: ../Doc/howto/pyporting.rst:58
msgid "" msgid ""
@ -134,16 +171,25 @@ msgid ""
"lower-level work is now mostly done for you and thus can at least benefit " "lower-level work is now mostly done for you and thus can at least benefit "
"from the automated changes immediately." "from the automated changes immediately."
msgstr "" msgstr ""
"Un autre point important est que la modernisation de votre code Python 2 "
"pour le rendre compatible Python 3 est pratiquement automatique. Bien qu'il "
"soit possible d'avoir à effectuer des changements d'API compte-tenu de la "
"clarification de la gestion des données textuelles et binaires dans Python "
"3, le travail de bas niveau est en grande partie fait pour vous et vous "
"pouvez ainsi bénéficiez de ces modifications automatiques immédiatement."
#: ../Doc/howto/pyporting.rst:64 #: ../Doc/howto/pyporting.rst:64
msgid "" msgid ""
"Keep those key points in mind while you read on about the details of porting " "Keep those key points in mind while you read on about the details of porting "
"your code to support Python 2 & 3 simultaneously." "your code to support Python 2 & 3 simultaneously."
msgstr "" msgstr ""
"Gardez ces points-clés en tête pendant que vous lisez les détails ci-dessous "
"concernant le portage de votre code vers une compatibilité simultanée Python "
"2 et 3."
#: ../Doc/howto/pyporting.rst:69 #: ../Doc/howto/pyporting.rst:69
msgid "Drop support for Python 2.6 and older" msgid "Drop support for Python 2.6 and older"
msgstr "" msgstr "Abandon de la compatibilité Python 2.6 et antérieures"
#: ../Doc/howto/pyporting.rst:71 #: ../Doc/howto/pyporting.rst:71
msgid "" msgid ""
@ -153,6 +199,12 @@ msgid ""
"simultaneously (``pip install six``). Do realize, though, that nearly all " "simultaneously (``pip install six``). Do realize, though, that nearly all "
"the projects listed in this HOWTO will not be available to you." "the projects listed in this HOWTO will not be available to you."
msgstr "" msgstr ""
"Bien qu'il soit possible de rendre Python 2.5 compatible avec Python 3, il "
"est **beaucoup** plus simple de n'avoir qu'à travailler avec Python 2.7. Si "
"abandonner Python 2.5 n'est pas une option, alors le projet six_ peut vous "
"aider à gérer simultanément Python 2.5 et 3 (``pip install six``). "
"Néanmoins, soyez conscient que la quasi-totalité des projets listés dans ce "
"guide pratique ne seront pas applicables à votre situation."
#: ../Doc/howto/pyporting.rst:77 #: ../Doc/howto/pyporting.rst:77
msgid "" msgid ""
@ -162,6 +214,12 @@ msgid ""
"or have to import a function instead of using a built-in one, but otherwise " "or have to import a function instead of using a built-in one, but otherwise "
"the overall transformation should not feel foreign to you." "the overall transformation should not feel foreign to you."
msgstr "" msgstr ""
"Si vous pouvez ignorer Python 2.5 et antérieur, les changements nécessaires "
"à appliquer à votre code devraient encore ressembler à vos yeux à du code "
"Python idiomatique. Dans le pire cas, vous devrez utiliser une fonction "
"plutôt qu'une méthode dans certains cas, ou bien vous devrez importer une "
"fonction plutôt qu'utiliser une fonction native, mais le reste du temps le "
"code transformé devrait vous rester familier."
#: ../Doc/howto/pyporting.rst:83 #: ../Doc/howto/pyporting.rst:83
msgid "" msgid ""
@ -173,11 +231,22 @@ msgid ""
"simply be easier for you if you only support the versions of Python that you " "simply be easier for you if you only support the versions of Python that you "
"have to support." "have to support."
msgstr "" msgstr ""
"Mais nous vous conseillons de viser seulement un support de Python 2.7. "
"Python 2.6 n'est plus supporté gratuitement et par conséquent ne reçoit plus "
"aucun correctif. Cela signifie que **vous** devrez trouver des solutions de "
"contournement aux problèmes que vous rencontrez avec Python 2.6. Il existe "
"en outre des outils mentionnés dans ce guide pratique qui ne supportent pas "
"Python 2.6 (par exemple Pylint_), ce qui sera de plus en plus courant au fil "
"du temps. Il est simplement plus facile pour vous de n'assurer une "
"compatibilité qu'avec les versions de Python que vous avez l'obligation de "
"gérer."
#: ../Doc/howto/pyporting.rst:92 #: ../Doc/howto/pyporting.rst:92
msgid "" msgid ""
"Make sure you specify the proper version support in your ``setup.py`` file" "Make sure you specify the proper version support in your ``setup.py`` file"
msgstr "" msgstr ""
"Assurez vous de spécifier la bonne version supportée dans le fichier ``setup."
"py``"
#: ../Doc/howto/pyporting.rst:94 #: ../Doc/howto/pyporting.rst:94
msgid "" msgid ""
@ -188,10 +257,16 @@ msgid ""
"minor version of Python that you do support, e.g. ``Programming Language :: " "minor version of Python that you do support, e.g. ``Programming Language :: "
"Python :: 2.7``." "Python :: 2.7``."
msgstr "" msgstr ""
"Votre fichier ``setup.py`` devrait contenir le bon `trove classifier`_ "
"spécifiant les versions de Python avec lesquelles vous êtes compatible. "
"Comme votre projet ne supporte pas encore Python 3, vous devriez au moins "
"spécifier ``Programming Language :: Python :: 2 :: Only``. Dans l'idéal vous "
"devriez indiquer chaque version majeure/mineure de Python que vous gérez, "
"par exemple ``Programming Language :: Python :: 2.7``."
#: ../Doc/howto/pyporting.rst:103 #: ../Doc/howto/pyporting.rst:103
msgid "Have good test coverage" msgid "Have good test coverage"
msgstr "" msgstr "Obtenir une bonne couverture de code"
#: ../Doc/howto/pyporting.rst:105 #: ../Doc/howto/pyporting.rst:105
msgid "" msgid ""
@ -204,6 +279,16 @@ msgid ""
"get better than 90% coverage). If you don't already have a tool to measure " "get better than 90% coverage). If you don't already have a tool to measure "
"test coverage then coverage.py_ is recommended." "test coverage then coverage.py_ is recommended."
msgstr "" msgstr ""
"Une fois que votre code est compatible avec la plus ancienne version de "
"Python 2 que vous souhaitez, vous devez vous assurer que votre suite de test "
"a une couverture suffisante. Une bonne règle empirique consiste à avoir "
"suffisamment confiance en la suite de test pour qu'une erreur apparaissant "
"après la réécriture du code par les outils automatiques résulte de bogues de "
"ces derniers et non de votre code. Si vous souhaitez une valeur cible, "
"essayez de dépasser les 80 % de couverture (et ne vous sentez pas coupable "
"si vous trouvez difficile de faire mieux que 90 % de couverture). Si vous ne "
"disposez pas encore d'un outil pour mesurer la couverture de code, coverage."
"py_ est recommandé."
#: ../Doc/howto/pyporting.rst:118 #: ../Doc/howto/pyporting.rst:118
msgid "" msgid ""
@ -215,10 +300,18 @@ msgid ""
"and the `Porting to Python 3`_ book (which is free online). There is also a " "and the `Porting to Python 3`_ book (which is free online). There is also a "
"handy `cheat sheet`_ from the Python-Future project." "handy `cheat sheet`_ from the Python-Future project."
msgstr "" msgstr ""
"Une fois que votre code est bien testé, vous êtes prêt à démarrer votre "
"portage vers Python 3 ! Mais afin de comprendre comment votre code va "
"changer et à quoi s'intéresser spécifiquement pendant que vous codez, vous "
"aurez sûrement envie de découvrir quels sont les changements introduits par "
"Python 3 par rapport à Python 2. Pour atteindre cet objectif, les deux "
"meilleurs moyens sont de lire le document `\"What's New\"`_ de chaque "
"version de Python 3 et le livre `Porting to Python 3`_ (gratuit en ligne). "
"Il y a également une `cheat sheet`_ très pratique du projet Python-Future."
#: ../Doc/howto/pyporting.rst:128 #: ../Doc/howto/pyporting.rst:128
msgid "Update your code" msgid "Update your code"
msgstr "" msgstr "Mettre à jour votre code"
#: ../Doc/howto/pyporting.rst:130 #: ../Doc/howto/pyporting.rst:130
msgid "" msgid ""
@ -234,6 +327,20 @@ msgid ""
"future, it might be best to consider Futurize to begin adjusting to any new " "future, it might be best to consider Futurize to begin adjusting to any new "
"practices that Python 3 introduces which you are not accustomed to yet." "practices that Python 3 introduces which you are not accustomed to yet."
msgstr "" msgstr ""
"Une fois que vous pensez en savoir suffisamment sur les différences entre "
"Python 3 et Python 2, il est temps de mettre à jour votre code ! Vous avez "
"le choix entre deux outils pour porter votre code automatiquement : "
"Futurize_ et Modernize_. Le choix de l'outil dépend de la dose de Python 3 "
"que vous souhaitez introduire dans votre code. Futurize_ s'efforce "
"d'introduire les idiomes et pratiques de Python 3 dans Python 2, par exemple "
"en réintroduisant le type ``bytes`` de Python 3 de telle sorte que la "
"sémantique soit identique entre les deux versions majeures de Python. En "
"revanche, Modernize_ est plus conservateur et vise un sous-ensemble "
"d'instructions Python 2/3, en s'appuyant directement sur six_ pour la "
"compatibilité. Python 3 étant le futur de Python, il pourrait être "
"préférable d'utiliser *Futurize* afin de commencer à s'ajuster aux nouvelles "
"pratiques introduites par Python 3 avec lesquelles vous n'êtes pas encore "
"habitué."
#: ../Doc/howto/pyporting.rst:142 #: ../Doc/howto/pyporting.rst:142
msgid "" msgid ""
@ -246,6 +353,16 @@ msgid ""
"transform your application code knowing that any tests which fail is a " "transform your application code knowing that any tests which fail is a "
"translation failure." "translation failure."
msgstr "" msgstr ""
"Indépendamment de l'outil sur lequel se porte votre choix, celui-ci mettra à "
"jour votre code afin qu'il puisse être exécuté par Python 3 tout en "
"maintenant sa compatibilité avec la version de Python 2 dont vous êtes "
"parti. En fonction du niveau de prudence que vous visez, vous pouvez "
"exécuter l'outil sur votre suite de test d'abord puis inspecter visuellement "
"la différence afin de vous assurer que la transformation est exacte. Après "
"avoir transformé votre suite de test et vérifié que tous les tests "
"s'exécutent comme attendu, vous pouvez transformer le code de votre "
"application avec l'assurance que chaque test qui échoue correspond à un "
"échec de traduction."
#: ../Doc/howto/pyporting.rst:150 #: ../Doc/howto/pyporting.rst:150
msgid "" msgid ""
@ -260,6 +377,18 @@ msgid ""
"watch out for which can be considered large issues that may be hard to debug " "watch out for which can be considered large issues that may be hard to debug "
"if not watched for." "if not watched for."
msgstr "" msgstr ""
"Malheureusement les outils ne peuvent pas automatiser tous les changements "
"requis pour permettre à votre code de s'exécuter sous Python 3 et il y a "
"donc quelques points sur lesquels vous devrez travailler manuellement afin "
"d'atteindre la compatibilité totale Python 3 (les étapes nécessaires peuvent "
"varier en fonction de l'outil utilisé). Lisez la documentation de l'outil "
"que vous avez choisi afin d'identifier ce qu'il corrige par défaut et ce qui "
"peut être appliqué de façon optionnelle afin de savoir ce qui sera (ou non) "
"corrigé pour vous ou ce que vous devrez modifier vous-même (par exemple, le "
"remplacement ``io.open()`` plutôt que la fonction native ``open()`` est "
"inactif par défaut dans *Modernize*). Heureusement, il n'y a que quelques "
"points à surveiller qui peuvent réellement être considérés comme des "
"problèmes difficiles à déboguer si vous n'y prêtez pas attention."
#: ../Doc/howto/pyporting.rst:162 #: ../Doc/howto/pyporting.rst:162
msgid "Division" msgid "Division"
@ -275,16 +404,27 @@ msgid ""
"Q`` flag. If you have not been doing this then you will need to go through " "Q`` flag. If you have not been doing this then you will need to go through "
"your code and do two things:" "your code and do two things:"
msgstr "" msgstr ""
"Dans Python 3, ``5 / 2 == 2.5`` et non ``2``; toutes les divisions entre des "
"valeurs ``int`` renvoient un ``float``. Ce changement était en réalité "
"planifié depuis Python 2.2, publié en 2002. Depuis cette date, les "
"utilisateurs ont été encouragés à ajouter ``from __future__ import "
"division`` à tous les fichiers utilisant les opérateurs ``/`` et ``//`` ou à "
"exécuter l'interpréteur avec l'option ``-Q``. Si vous n'avez pas suivi cette "
"recommandation, vous devrez manuellement modifier votre code et effectuer "
"deux changements :"
#: ../Doc/howto/pyporting.rst:172 #: ../Doc/howto/pyporting.rst:172
msgid "Add ``from __future__ import division`` to your files" msgid "Add ``from __future__ import division`` to your files"
msgstr "" msgstr "Ajouter ``from __future__ import division`` à vos fichiers"
#: ../Doc/howto/pyporting.rst:173 #: ../Doc/howto/pyporting.rst:173
msgid "" msgid ""
"Update any division operator as necessary to either use ``//`` to use floor " "Update any division operator as necessary to either use ``//`` to use floor "
"division or continue using ``/`` and expect a float" "division or continue using ``/`` and expect a float"
msgstr "" msgstr ""
"Remplacer tous les opérateurs de division par ``//`` pour la division "
"entière, le cas échant, ou utiliser ``/`` et vous attendre à un résultat "
"flottant"
#: ../Doc/howto/pyporting.rst:176 #: ../Doc/howto/pyporting.rst:176
msgid "" msgid ""
@ -293,10 +433,16 @@ msgid ""
"then your code would begin to fail (e.g. a user-defined class that uses ``/" "then your code would begin to fail (e.g. a user-defined class that uses ``/"
"`` to signify some operation but not ``//`` for the same thing or at all)." "`` to signify some operation but not ``//`` for the same thing or at all)."
msgstr "" msgstr ""
"La raison pour laquelle ``/`` n'est pas simplement remplacé par ``//`` "
"automatiquement est que si un objet définit une méthode ``__truediv__`` mais "
"pas de méthode ``__floordiv__``, alors votre code pourrait produire une "
"erreur (par exemple, une classe définie par l'utilisateur qui utilise ``/`` "
"pour définir une opération quelconque mais pour laquelle ``//`` n'a pas du "
"tout la même signification, voire n'est pas utilisé du tout)."
#: ../Doc/howto/pyporting.rst:183 #: ../Doc/howto/pyporting.rst:183
msgid "Text versus binary data" msgid "Text versus binary data"
msgstr "" msgstr "Texte et données binaires"
#: ../Doc/howto/pyporting.rst:185 #: ../Doc/howto/pyporting.rst:185
msgid "" msgid ""
@ -309,6 +455,16 @@ msgid ""
"supporting multiple languages as APIs wouldn't bother explicitly supporting " "supporting multiple languages as APIs wouldn't bother explicitly supporting "
"``unicode`` when they claimed text data support." "``unicode`` when they claimed text data support."
msgstr "" msgstr ""
"Dans Python 2, il était possible d'utiliser le type ``str`` pour du texte et "
"pour des données binaires. Malheureusement cet amalgame entre deux concepts "
"différents peut conduire à du code fragile pouvant parfois fonctionner pour "
"les deux types de données et parfois non. Cela a également conduit à des API "
"confuses si les auteurs ne déclaraient pas explicitement que quelque chose "
"qui acceptait ``str`` était compatible avec du texte ou des données binaires "
"et pas un seul des deux types. Cela a compliqué la situation pour les "
"personnes devant gérer plusieurs langages avec des API qui ne se "
"préoccupaient pas de la gestion de ``unicode`` lorsqu'elles affirmaient être "
"compatibles avec des données au format texte."
#: ../Doc/howto/pyporting.rst:194 #: ../Doc/howto/pyporting.rst:194
msgid "" msgid ""
@ -321,6 +477,15 @@ msgid ""
"it does mean you might have to now care about when you are using text " "it does mean you might have to now care about when you are using text "
"compared to binary data, which is why this cannot be entirely automated." "compared to binary data, which is why this cannot be entirely automated."
msgstr "" msgstr ""
"Afin de rendre la distinction entre texte et données binaires claire et "
"prononcée, Python 3 a suivi la voie pavée par la plupart des langages créés "
"à l'ère d'Internet et a séparé les types texte et données binaires de telle "
"sorte qu'il ne soit plus possible de les confondre (Python est antérieur à "
"la démocratisation de l'accès à Internet). Cette séparation ne pose pas de "
"problème pour du code ne gérant soit que du texte, soit que des données "
"binaires. Cependant un code source devant gérer les deux doit désormais se "
"préoccuper du type des données manipulées, ce qui explique que ce processus "
"ne peut pas être entièrement automatisé."
#: ../Doc/howto/pyporting.rst:203 #: ../Doc/howto/pyporting.rst:203
msgid "" msgid ""
@ -341,38 +506,57 @@ msgid ""
"Python 3 doesn't have the method). Do note that as of Python 3.5 the " "Python 3 doesn't have the method). Do note that as of Python 3.5 the "
"``__mod__`` method was added to the bytes type." "``__mod__`` method was added to the bytes type."
msgstr "" msgstr ""
"Pour commencer, vous devrez choisir quelles API travaillent sur du texte et "
"lesquelles travaillent avec des données binaires (il est **fortement** "
"recommandé de ne pas concevoir d'API qui gèrent les deux types compte-tenu "
"de la difficulté supplémentaire que cela induit). Dans Python 2, cela "
"signifie s'assurer que les API recevant du texte en entrée peuvent gérer "
"``unicode`` et celles qui reçoivent des données binaires fonctionnent avec "
"le type ``bytes`` de Python 3 (qui est un sous-ensemble de ``str`` dans "
"Python 2 et opère comme un alias du type ``bytes`` de Python 2). En général, "
"le principal problème consiste à inventorier quelles méthodes existent et "
"opèrent sur quel type dans Python & 3 simultanément (pour le texte, il "
"s'agit de ``unicode`` dans Python 2 et ``str`` dans Python 3, pour le "
"binaire il s'agit de ``str``/``bytes`` dans Python 2 et ``bytes`` dans "
"Python 3). Le tableau ci-dessous liste les méthodes **spécifiques** à chaque "
"type de données dans Python 2 et 3 (par exemple, la méthode ``decode()`` "
"peut être utilisée sur des données binaires équivalentes en Python 2 et 3, "
"mais ne peut pas être utilisée de la même façon sur le type texte en Python "
"2 et 3 car le type ``str`` de Python 3 ne possède pas de telle méthode). "
"Notez que depuis Python 3.5, la méthode ``__mod__`` a été ajoutée au type "
"*bytes*."
#: ../Doc/howto/pyporting.rst:220 #: ../Doc/howto/pyporting.rst:220
msgid "**Text data**" msgid "**Text data**"
msgstr "" msgstr "**Format texte**"
#: ../Doc/howto/pyporting.rst:220 #: ../Doc/howto/pyporting.rst:220
msgid "**Binary data**" msgid "**Binary data**"
msgstr "" msgstr "**Format binaire**"
#: ../Doc/howto/pyporting.rst:222 #: ../Doc/howto/pyporting.rst:222
msgid "\\" msgid "\\"
msgstr "" msgstr "\\"
#: ../Doc/howto/pyporting.rst:222 #: ../Doc/howto/pyporting.rst:222
msgid "decode" msgid "decode"
msgstr "" msgstr "decode"
#: ../Doc/howto/pyporting.rst:224 #: ../Doc/howto/pyporting.rst:224
msgid "encode" msgid "encode"
msgstr "" msgstr "encode"
#: ../Doc/howto/pyporting.rst:226 #: ../Doc/howto/pyporting.rst:226
msgid "format" msgid "format"
msgstr "" msgstr "format"
#: ../Doc/howto/pyporting.rst:228 #: ../Doc/howto/pyporting.rst:228
msgid "isdecimal" msgid "isdecimal"
msgstr "" msgstr "isdecimal"
#: ../Doc/howto/pyporting.rst:230 #: ../Doc/howto/pyporting.rst:230
msgid "isnumeric" msgid "isnumeric"
msgstr "" msgstr "isnumeric"
#: ../Doc/howto/pyporting.rst:233 #: ../Doc/howto/pyporting.rst:233
msgid "" msgid ""
@ -383,6 +567,14 @@ msgid ""
"possible. This allows your code to work with only text internally and thus " "possible. This allows your code to work with only text internally and thus "
"eliminates having to keep track of what type of data you are working with." "eliminates having to keep track of what type of data you are working with."
msgstr "" msgstr ""
"Vous pouvez rendre le problème plus simple à gérer en réalisant les "
"opérations d'encodage et de décodage entre données binaires et texte aux "
"extrémités de votre code. Cela signifie que lorsque vous recevez du texte "
"dans un format binaire, vous devez immédiatement le décoder. À l'inverse si "
"votre code doit transmettre du texte sous forme binaire, encodez-le le plus "
"tard possible. Cela vous permet de ne manipuler que du texte à l'intérieur "
"de votre code et permet de ne pas se préoccuper du type des données sur "
"lesquelles vous travaillez."
#: ../Doc/howto/pyporting.rst:240 #: ../Doc/howto/pyporting.rst:240
msgid "" msgid ""
@ -393,6 +585,14 @@ msgid ""
"unspecified literals to be Unicode, but usage has shown it isn't as " "unspecified literals to be Unicode, but usage has shown it isn't as "
"effective as adding a ``b`` or ``u`` prefix to all literals explicitly)" "effective as adding a ``b`` or ``u`` prefix to all literals explicitly)"
msgstr "" msgstr ""
"Le point suivant est de s'assurer que vous savez quelles chaînes de "
"caractères littérales de votre code correspondent à du texte ou à du "
"binaire. Vous devez préfixer par ``b`` tous les littéraux qui représentent "
"des données binaires et par ``u`` les littéraux qui représentent du texte "
"(il existe une importation du module :mod:`__future__` permettant de forcer "
"l'encodage de toutes les chaînes de caractères littérales non spécifiées en "
"Unicode, mais cette pratique s'est avérée moins efficace que l'ajout "
"explicite des préfixe ``b`` et ``u``)."
#: ../Doc/howto/pyporting.rst:247 #: ../Doc/howto/pyporting.rst:247
msgid "" msgid ""
@ -411,6 +611,22 @@ msgid ""
"`codecs.open` as that's only necessary for keeping compatibility with Python " "`codecs.open` as that's only necessary for keeping compatibility with Python "
"2.5." "2.5."
msgstr "" msgstr ""
"Une conséquence de cette dichotomie est que vous devez être prudents lors de "
"l'ouverture d'un fichier. À moins que vous travailliez sous Windows, il y a "
"des chances pour que vous ne vous soyez jamais préoccupé de spécifier le "
"mode ``b`` lorsque vous ouvrez des fichiers binaires (par exemple ``rb`` "
"pour lire un fichier binaire). Sous Python 3, les fichiers binaire et texte "
"sont distincts et mutuellement incompatibles ; se référer au module :mod:"
"`io` pour plus de détails. Ainsi vous **devez** décider lorsque vous ouvrez "
"un fichier si vous y accéderez en mode binaire (ce qui permet de lire et "
"écrire des données binaires) ou en mode texte (ce qui permet de lire et "
"écrire du texte). Vous devez également utiliser :func:`io.open` pour ouvrir "
"des fichiers plutôt que la fonction native :func:`open` étant donné que le "
"module :mod:`io` est cohérent de Python 2 à 3, ce qui n'est pas vrai pour la "
"fonction :func:`open` (en Python 3, il s'agit en réalité de :func:`io."
"open`). Ne cherchez pas à appliquer l'ancienne pratique consistant à "
"utiliser :func:`codecs.open` qui n'est nécessaire que pour préserver une "
"compatibilité avec Python 2.5."
#: ../Doc/howto/pyporting.rst:261 #: ../Doc/howto/pyporting.rst:261
msgid "" msgid ""
@ -424,6 +640,16 @@ msgid ""
"back: ``str(b'3') == b'3'``. But in Python 3 you get the string " "back: ``str(b'3') == b'3'``. But in Python 3 you get the string "
"representation of the bytes object: ``str(b'3') == \"b'3'\"``." "representation of the bytes object: ``str(b'3') == \"b'3'\"``."
msgstr "" msgstr ""
"Les constructeurs des types ``str`` et ``bytes`` possèdent une sémantique "
"différente pour les mêmes arguments sous Python 2 et 3. Passer un entier à "
"``bytes`` sous Python 2 produit une représentation de cet entier en chaîne "
"de caractères : ``bytes(3) == '3'``. Mais sous Python 3, fournir un argument "
"entier à ``bytes`` produit un objet *bytes* de la longueur de l'entier "
"spécifié, rempli par des octets nuls : ``bytes(3) == b'\\x00\\x00\\x00'``. "
"La même prudence est nécessaire lorsque vous passez un objet *bytes* à "
"``str``. En Python 2, vous récupérez simplement l'objet *bytes* initial : "
"``str(b'3') == b'3'``. Mais en Python 3, vous récupérez la représentation en "
"chaîne de caractères de l'objet *bytes* : ``str(b'3') == \"b'3'\"``."
#: ../Doc/howto/pyporting.rst:271 #: ../Doc/howto/pyporting.rst:271
msgid "" msgid ""
@ -436,14 +662,25 @@ msgid ""
"``six.indexbytes()`` which will return an integer like in Python 3: ``six." "``six.indexbytes()`` which will return an integer like in Python 3: ``six."
"indexbytes(b'123', 1)``." "indexbytes(b'123', 1)``."
msgstr "" msgstr ""
"Enfin, l'indiçage des données binaires exige une manipulation prudente (bien "
"que le découpage, ou *slicing* en anglais, ne nécessite pas d'attention "
"particulière). En Python 2, ``b'123'[1] == b'2'`` tandis qu'en Python 3 "
"``b'123'[1] == 50``. Puisque les données binaires ne sont simplement qu'une "
"collection de nombres en binaire, Python 3 renvoie la valeur entière de "
"l'octet indicé. Mais en Python 2, étant donné que ``bytes == str``, "
"l'indiçage renvoie une tranche de longueur 1 de *bytes*. Le projet six_ "
"dispose d'une fonction appelée ``six.indexbytes()`` qui renvoie un entier "
"comme en Python 3 : ``six.indexbytes(b'123', 1)``."
#: ../Doc/howto/pyporting.rst:280 #: ../Doc/howto/pyporting.rst:280
msgid "To summarize:" msgid "To summarize:"
msgstr "" msgstr "Pour résumer :"
#: ../Doc/howto/pyporting.rst:282 #: ../Doc/howto/pyporting.rst:282
msgid "Decide which of your APIs take text and which take binary data" msgid "Decide which of your APIs take text and which take binary data"
msgstr "" msgstr ""
"Décidez lesquelles de vos API travaillent sur du texte et lesquelles "
"travaillent sur des données binaires"
#: ../Doc/howto/pyporting.rst:283 #: ../Doc/howto/pyporting.rst:283
msgid "" msgid ""
@ -451,32 +688,43 @@ msgid ""
"and code for binary data works with ``bytes`` in Python 2 (see the table " "and code for binary data works with ``bytes`` in Python 2 (see the table "
"above for what methods you cannot use for each type)" "above for what methods you cannot use for each type)"
msgstr "" msgstr ""
"Assurez vous que votre code travaillant sur du texte fonctionne aussi avec "
"le type ``unicode`` et que le code travaillant sur du binaire fonctionne "
"avec le type ``bytes`` en Python 2 (voir le tableau ci-dessus pour la liste "
"des méthodes utilisables par chaque type)"
#: ../Doc/howto/pyporting.rst:286 #: ../Doc/howto/pyporting.rst:286
msgid "" msgid ""
"Mark all binary literals with a ``b`` prefix, textual literals with a ``u`` " "Mark all binary literals with a ``b`` prefix, textual literals with a ``u`` "
"prefix" "prefix"
msgstr "" msgstr ""
"Préfixez tous vos littéraux binaires par ``b`` et toutes vos chaînes de "
"caractères littérales par ``u``"
#: ../Doc/howto/pyporting.rst:288 #: ../Doc/howto/pyporting.rst:288
msgid "" msgid ""
"Decode binary data to text as soon as possible, encode text as binary data " "Decode binary data to text as soon as possible, encode text as binary data "
"as late as possible" "as late as possible"
msgstr "" msgstr ""
"Décodez les données binaires en texte dès que possible, encodez votre texte "
"au format binaire le plus tard possible"
#: ../Doc/howto/pyporting.rst:290 #: ../Doc/howto/pyporting.rst:290
msgid "" msgid ""
"Open files using :func:`io.open` and make sure to specify the ``b`` mode " "Open files using :func:`io.open` and make sure to specify the ``b`` mode "
"when appropriate" "when appropriate"
msgstr "" msgstr ""
"Ouvrez les fichiers avec la fonction :func:`io.open` et assurez-vous de "
"spécifier le mode ``b`` le cas échéant"
#: ../Doc/howto/pyporting.rst:292 #: ../Doc/howto/pyporting.rst:292
msgid "Be careful when indexing into binary data" msgid "Be careful when indexing into binary data"
msgstr "" msgstr "Utilisez avec prudence l'indiçage sur des données binaires"
#: ../Doc/howto/pyporting.rst:296 #: ../Doc/howto/pyporting.rst:296
msgid "Use feature detection instead of version detection" msgid "Use feature detection instead of version detection"
msgstr "" msgstr ""
"Utilisez la détection de fonctionnalités plutôt que la détection de version"
#: ../Doc/howto/pyporting.rst:298 #: ../Doc/howto/pyporting.rst:298
msgid "" msgid ""
@ -487,6 +735,13 @@ msgid ""
"version check be against Python 2 and not Python 3. To help explain this, " "version check be against Python 2 and not Python 3. To help explain this, "
"let's look at an example." "let's look at an example."
msgstr "" msgstr ""
"Vous rencontrerez inévitablement du code devant décider quoi faire en "
"fonction de la version de Python qui s'exécute. La meilleure façon de gérer "
"ce cas est de détecter si les fonctionnalités dont vous avez besoin sont "
"gérées par la version de Python sous laquelle le code s'exécute. Si pour "
"certaines raisons cela ne fonctionne pas, alors vous devez tester si votre "
"version est Python 2 et non Python 3. Afin de clarifier cette pratique, "
"voici un exemple."
#: ../Doc/howto/pyporting.rst:305 #: ../Doc/howto/pyporting.rst:305
msgid "" msgid ""
@ -495,6 +750,11 @@ msgid ""
"Python 2 through importlib2_ on PyPI. You might be tempted to write code to " "Python 2 through importlib2_ on PyPI. You might be tempted to write code to "
"access e.g. the ``importlib.abc`` module by doing the following::" "access e.g. the ``importlib.abc`` module by doing the following::"
msgstr "" msgstr ""
"Supposons que vous avez besoin d'accéder à une fonctionnalité de importlib_ "
"qui n'est disponible dans la bibliothèque standard de Python que depuis la "
"version 3.3 et est disponible pour Python 2 via le module importlib2_ sur "
"PyPI. Vous pourriez être tenté d'écrire un code qui accède, par exemple, au "
"module ``importlib.abc`` avec l'approche suivante : ::"
#: ../Doc/howto/pyporting.rst:317 #: ../Doc/howto/pyporting.rst:317
msgid "" msgid ""
@ -503,6 +763,10 @@ msgid ""
"assume that future Python versions will be more compatible with Python 3 " "assume that future Python versions will be more compatible with Python 3 "
"than Python 2::" "than Python 2::"
msgstr "" msgstr ""
"Le problème est le suivant : que se passe-t-il lorsque Python 4 est publié ? "
"Il serait préférable de traiter le cas Python 2 comme l'exception plutôt que "
"Python 3 et de supposer que les versions futures de Python 2 seront plus "
"compatibles avec Python 3 qu'avec Python 2 : ::"
#: ../Doc/howto/pyporting.rst:329 #: ../Doc/howto/pyporting.rst:329
msgid "" msgid ""
@ -510,10 +774,15 @@ msgid ""
"rely on feature detection. That avoids any potential issues of getting the " "rely on feature detection. That avoids any potential issues of getting the "
"version detection wrong and helps keep you future-compatible::" "version detection wrong and helps keep you future-compatible::"
msgstr "" msgstr ""
"Néanmoins la meilleure solution est de ne pas chercher à déterminer la "
"version de Python mais plutôt à détecter les fonctionnalités disponibles. "
"Cela évite les problèmes potentiels liés aux erreurs de détection de version "
"et facilite la compatibilité future : ::"
#: ../Doc/howto/pyporting.rst:340 #: ../Doc/howto/pyporting.rst:340
#, fuzzy
msgid "Prevent compatibility regressions" msgid "Prevent compatibility regressions"
msgstr "" msgstr "Éviter les régressions de compatibilité"
#: ../Doc/howto/pyporting.rst:342 #: ../Doc/howto/pyporting.rst:342
msgid "" msgid ""
@ -522,12 +791,19 @@ msgid ""
"Python 3. This is especially true if you have a dependency which is blocking " "Python 3. This is especially true if you have a dependency which is blocking "
"you from actually running under Python 3 at the moment." "you from actually running under Python 3 at the moment."
msgstr "" msgstr ""
"Une fois votre code traduit pour être compatible avec Python 3, vous devez "
"vous assurer que votre code n'a pas régressé ou qu'il ne fonctionne pas sous "
"Python 3. Ceci est particulièrement important si une de vos dépendances vous "
"empêche de réellement exécuter le code sous Python 3 pour le moment."
#: ../Doc/howto/pyporting.rst:347 #: ../Doc/howto/pyporting.rst:347
msgid "" msgid ""
"To help with staying compatible, any new modules you create should have at " "To help with staying compatible, any new modules you create should have at "
"least the following block of code at the top of it::" "least the following block of code at the top of it::"
msgstr "" msgstr ""
"Afin de vous aider à maintenir la compatibilité, nous préconisons que tous "
"les nouveaux modules que vous créez aient au moins le bloc de code suivant "
"en en-tête : ::"
#: ../Doc/howto/pyporting.rst:354 #: ../Doc/howto/pyporting.rst:354
msgid "" msgid ""
@ -536,6 +812,11 @@ msgid ""
"warnings into errors with ``-Werror`` then you can make sure that you don't " "warnings into errors with ``-Werror`` then you can make sure that you don't "
"accidentally miss a warning." "accidentally miss a warning."
msgstr "" msgstr ""
"Vous pouvez également lancer Python 2 avec le paramètre ``-3`` afin d'être "
"alerté en cas de divers problèmes de compatibilité que votre code déclenche "
"durant son exécution. Si vous transformez les avertissements en erreur avec "
"``-Werror``, vous pouvez être certain que ne passez pas accidentellement à "
"côté d'un avertissement."
#: ../Doc/howto/pyporting.rst:359 #: ../Doc/howto/pyporting.rst:359
msgid "" msgid ""
@ -546,10 +827,17 @@ msgid ""
"does require you only support Python 2.7 and Python 3.4 or newer as that is " "does require you only support Python 2.7 and Python 3.4 or newer as that is "
"Pylint's minimum Python version support." "Pylint's minimum Python version support."
msgstr "" msgstr ""
"Vous pouvez également utiliser le projet Pylint_ et son option ``--py3k`` "
"afin de modifier votre code pour recevoir des avertissements lorsque celui-"
"ci dévie de la compatibilité Python 3. Cela vous évite par ailleurs "
"d'appliquer Modernize_ ou Futurize_ sur votre code régulièrement pour "
"détecter des régressions liées à la compatibilité. Cependant cela nécessite "
"de votre part le support de Python 2.7 et Python 3.4 ou ultérieur étant "
"donné qu'il s'agit de la version minimale gérée par Pylint."
#: ../Doc/howto/pyporting.rst:368 #: ../Doc/howto/pyporting.rst:368
msgid "Check which dependencies block your transition" msgid "Check which dependencies block your transition"
msgstr "" msgstr "Vérifier quelles dépendances empêchent la migration"
#: ../Doc/howto/pyporting.rst:370 #: ../Doc/howto/pyporting.rst:370
msgid "" msgid ""
@ -560,6 +848,12 @@ msgid ""
"is both a command-line tool as well as a web interface at https://" "is both a command-line tool as well as a web interface at https://"
"caniusepython3.com." "caniusepython3.com."
msgstr "" msgstr ""
"**Après** avoir rendu votre code compatible avec Python 3, vous devez "
"commencer à vous intéresser au portage de vos dépendances. Le projet "
"caniusepython3_ a été créé afin de vous aider à déterminer quels projets "
"sont bloquants dans votre support de Python 3, directement ou indirectement. "
"Il existe un outil en ligne de commande ainsi qu'une interface web : https://"
"caniusepython3.com."
#: ../Doc/howto/pyporting.rst:377 #: ../Doc/howto/pyporting.rst:377
msgid "" msgid ""
@ -569,10 +863,17 @@ msgid ""
"manually check your dependencies and to be notified quickly when you can " "manually check your dependencies and to be notified quickly when you can "
"start running on Python 3." "start running on Python 3."
msgstr "" msgstr ""
"Le projet fournit également du code intégrable dans votre suite de test qui "
"déclenchera un échec de test lorsque plus aucune de vos dépendances n'est "
"bloquante pour l'utilisation de Python 3. Cela vous permet de ne pas avoir à "
"vérifier manuellement vos dépendances et d'être notifié rapidement quand "
"vous pouvez exécuter votre application avec Python 3."
#: ../Doc/howto/pyporting.rst:384 #: ../Doc/howto/pyporting.rst:384
msgid "Update your ``setup.py`` file to denote Python 3 compatibility" msgid "Update your ``setup.py`` file to denote Python 3 compatibility"
msgstr "" msgstr ""
"Mettre à jour votre fichier ``setup.py`` pour spécifier la compatibilité "
"avec Python 3"
#: ../Doc/howto/pyporting.rst:386 #: ../Doc/howto/pyporting.rst:386
msgid "" msgid ""
@ -582,10 +883,16 @@ msgid ""
"that you support Python 2 **and** 3. Ideally you will also want to add " "that you support Python 2 **and** 3. Ideally you will also want to add "
"classifiers for each major/minor version of Python you now support." "classifiers for each major/minor version of Python you now support."
msgstr "" msgstr ""
"Une fois que votre code fonctionne sous Python 3, vous devez mettre à jour "
"vos classeurs dans votre ``setup.py`` pour inclure ``Programming Language :: "
"Python :: 3`` et non seulement le support de Python 2. Cela signifiera à "
"quiconque utilise votre code que vous gérez Python 2 **et** 3. Dans l'idéal "
"vous devrez aussi ajouter une mention pour chaque version majeure/mineure de "
"Python que vous supportez désormais."
#: ../Doc/howto/pyporting.rst:394 #: ../Doc/howto/pyporting.rst:394
msgid "Use continuous integration to stay compatible" msgid "Use continuous integration to stay compatible"
msgstr "" msgstr "Utiliser l'intégration continue pour maintenir la compatibilité"
#: ../Doc/howto/pyporting.rst:396 #: ../Doc/howto/pyporting.rst:396
msgid "" msgid ""
@ -595,6 +902,12 @@ msgid ""
"integrate tox with your continuous integration system so that you never " "integrate tox with your continuous integration system so that you never "
"accidentally break Python 2 or 3 support." "accidentally break Python 2 or 3 support."
msgstr "" msgstr ""
"Une fois que vous êtes en mesure d'exécuter votre code sous Python 3, vous "
"devrez vous assurer que celui-ci fonctionne toujours pour Python 2 & 3. tox_ "
"est vraisemblablement le meilleur outil pour exécuter vos tests avec "
"plusieurs interpréteurs Python. Vous pouvez alors intégrer *tox* à votre "
"système d'intégration continue afin de ne jamais accidentellement casser "
"votre gestion de Python 2 ou 3."
#: ../Doc/howto/pyporting.rst:402 #: ../Doc/howto/pyporting.rst:402
msgid "" msgid ""
@ -607,6 +920,15 @@ msgid ""
"these kinds of comparisons occur, making the mistake much easier to track " "these kinds of comparisons occur, making the mistake much easier to track "
"down." "down."
msgstr "" msgstr ""
"Vous pouvez également utiliser l'option ``-bb`` de l'interpréteur Python 3 "
"afin de déclencher une exception lorsque vous comparez des *bytes* à des "
"chaînes de caractères ou à un entier (cette deuxième possibilité est "
"disponible à partir de Python 3.5). Par défaut, des comparaisons entre types "
"différents renvoient simplement ``False`` mais si vous avez fait une erreur "
"dans votre séparation de la gestion texte/données binaires ou votre indiçage "
"des *bytes*, vous ne trouverez pas facilement le bogue. Ce drapeau lève une "
"exception lorsque ce genre de comparaison apparaît, facilitant ainsi sa "
"identification et sa localisation."
#: ../Doc/howto/pyporting.rst:410 #: ../Doc/howto/pyporting.rst:410
msgid "" msgid ""
@ -615,10 +937,15 @@ msgid ""
"don't accidentally break Python 2 or 3 compatibility regardless of which " "don't accidentally break Python 2 or 3 compatibility regardless of which "
"version you typically run your tests under while developing." "version you typically run your tests under while developing."
msgstr "" msgstr ""
"Et c'est à peu près tout ! Une fois ceci fait, votre code source est "
"compatible avec Python 2 et 3 simultanément. Votre suite de test est "
"également en place de telle sorte que vous ne cassiez pas la compatibilité "
"Python 2 ou 3 indépendamment de la version que vous utilisez pendant le "
"développement."
#: ../Doc/howto/pyporting.rst:417 #: ../Doc/howto/pyporting.rst:417
msgid "Consider using optional static type checking" msgid "Consider using optional static type checking"
msgstr "" msgstr "Envisager l'utilisation d'un vérificateur de type statique optionnel"
#: ../Doc/howto/pyporting.rst:419 #: ../Doc/howto/pyporting.rst:419
msgid "" msgid ""
@ -632,3 +959,14 @@ msgid ""
"binary data, helping to make sure everything functions as expected in both " "binary data, helping to make sure everything functions as expected in both "
"versions of Python." "versions of Python."
msgstr "" msgstr ""
"Une autre façon de faciliter le portage de votre code est d'utiliser un "
"vérificateur de type statique comme mypy_ ou pytype_. Ces outils peuvent "
"être utilisés pour analyser votre code comme s'il était exécuté sous Python "
"2, puis une seconde fois comme s'il était exécuté sous Python 3. "
"L'utilisation double d'un vérificateur de type statique de cette façon "
"permet de détecter si, par exemple, vous faites une utilisation inappropriée "
"des types de données binaires dans une version de Python par rapport à "
"l'autre. Si vous ajoutez les indices optionnels de typage à votre code, vous "
"pouvez alors explicitement déclarer que vos API attendent des données "
"binaires ou du texte, ce qui facilite alors la vérification du comportement "
"de votre code dans les deux versions de Python."