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"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2019-09-05 10:42+0200\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Last-Translator: \n"
"X-Generator: Poedit 2.2.1\n"
#: ../Doc/howto/pyporting.rst:5
msgid "Porting Python 2 Code to Python 3"
msgstr ""
msgstr "Portage de code Python 2 vers Python 3"
#: ../Doc/howto/pyporting.rst:0
msgid "author"
@ -24,7 +25,7 @@ msgstr "auteur"
#: ../Doc/howto/pyporting.rst:7
msgid "Brett Cannon"
msgstr ""
msgstr "Brett Cannon"
#: ../Doc/howto/pyporting.rst:None
msgid "Abstract"
@ -37,12 +38,18 @@ msgid ""
"Python. This guide is meant to help you figure out how best to support both "
"Python 2 & 3 simultaneously."
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
msgid ""
"If you are looking to port an extension module instead of pure Python code, "
"please see :ref:`cporting-howto`."
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
msgid ""
@ -50,54 +57,71 @@ msgid ""
"came into existence, you can read Nick Coghlan's `Python 3 Q & A`_ or Brett "
"Cannon's `Why Python 3 exists`_."
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
msgid ""
"For help with porting, you can email the python-porting_ mailing list with "
"questions."
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
msgid "The Short Explanation"
msgstr ""
msgstr "La version courte"
#: ../Doc/howto/pyporting.rst:29
msgid ""
"To make your project be single-source Python 2/3 compatible, the basic steps "
"are:"
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
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
msgid ""
"Make sure you have good test coverage (coverage.py_ can help; ``pip install "
"coverage``)"
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
msgid "Learn the differences between Python 2 & 3"
msgstr ""
msgstr "Apprendre les différences entre Python 2 et 3"
#: ../Doc/howto/pyporting.rst:36
msgid ""
"Use Futurize_ (or Modernize_) to update your code (e.g. ``pip install "
"future``)"
msgstr ""
"Utiliser Futurize_ (ou Modernize_) pour mettre à jour votre code (par "
"exemple ``pip install future``)"
#: ../Doc/howto/pyporting.rst:37
#, fuzzy
msgid ""
"Use Pylint_ to help make sure you don't regress on your Python 3 support "
"(``pip install pylint``)"
msgstr ""
"Utiliser Pylint_ pour faciliter la détection de régressions concernant la "
"compatibilité Python 3 (``pip install pylint``)"
#: ../Doc/howto/pyporting.rst:39
msgid ""
"Use caniusepython3_ to find out which of your dependencies are blocking your "
"use of Python 3 (``pip install caniusepython3``)"
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
msgid ""
@ -105,6 +129,10 @@ msgid ""
"integration to make sure you stay compatible with Python 2 & 3 (tox_ can "
"help test against multiple versions of Python; ``pip install tox``)"
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
msgid ""
@ -112,6 +140,9 @@ msgid ""
"works in both Python 2 & 3 (e.g. use mypy_ to check your typing under both "
"Python 2 & Python 3)."
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
msgid "Details"
@ -125,6 +156,12 @@ msgid ""
"3. Most changes required to support Python 3 lead to cleaner code using "
"newer practices even in Python 2 code."
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
msgid ""
@ -134,16 +171,25 @@ msgid ""
"lower-level work is now mostly done for you and thus can at least benefit "
"from the automated changes immediately."
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
msgid ""
"Keep those key points in mind while you read on about the details of porting "
"your code to support Python 2 & 3 simultaneously."
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
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
msgid ""
@ -153,6 +199,12 @@ msgid ""
"simultaneously (``pip install six``). Do realize, though, that nearly all "
"the projects listed in this HOWTO will not be available to you."
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
msgid ""
@ -162,6 +214,12 @@ msgid ""
"or have to import a function instead of using a built-in one, but otherwise "
"the overall transformation should not feel foreign to you."
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
msgid ""
@ -173,11 +231,22 @@ msgid ""
"simply be easier for you if you only support the versions of Python that you "
"have to support."
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
msgid ""
"Make sure you specify the proper version support in your ``setup.py`` file"
msgstr ""
"Assurez vous de spécifier la bonne version supportée dans le fichier ``setup."
"py``"
#: ../Doc/howto/pyporting.rst:94
msgid ""
@ -188,10 +257,16 @@ msgid ""
"minor version of Python that you do support, e.g. ``Programming Language :: "
"Python :: 2.7``."
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
msgid "Have good test coverage"
msgstr ""
msgstr "Obtenir une bonne couverture de code"
#: ../Doc/howto/pyporting.rst:105
msgid ""
@ -204,6 +279,16 @@ msgid ""
"get better than 90% coverage). If you don't already have a tool to measure "
"test coverage then coverage.py_ is recommended."
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
msgid ""
@ -215,10 +300,18 @@ msgid ""
"and the `Porting to Python 3`_ book (which is free online). There is also a "
"handy `cheat sheet`_ from the Python-Future project."
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
msgid "Update your code"
msgstr ""
msgstr "Mettre à jour votre code"
#: ../Doc/howto/pyporting.rst:130
msgid ""
@ -234,6 +327,20 @@ msgid ""
"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."
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
msgid ""
@ -246,6 +353,16 @@ msgid ""
"transform your application code knowing that any tests which fail is a "
"translation failure."
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
msgid ""
@ -260,6 +377,18 @@ msgid ""
"watch out for which can be considered large issues that may be hard to debug "
"if not watched for."
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
msgid "Division"
@ -275,16 +404,27 @@ msgid ""
"Q`` flag. If you have not been doing this then you will need to go through "
"your code and do two things:"
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
msgid "Add ``from __future__ import division`` to your files"
msgstr ""
msgstr "Ajouter ``from __future__ import division`` à vos fichiers"
#: ../Doc/howto/pyporting.rst:173
msgid ""
"Update any division operator as necessary to either use ``//`` to use floor "
"division or continue using ``/`` and expect a float"
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
msgid ""
@ -293,10 +433,16 @@ msgid ""
"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)."
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
msgid "Text versus binary data"
msgstr ""
msgstr "Texte et données binaires"
#: ../Doc/howto/pyporting.rst:185
msgid ""
@ -309,6 +455,16 @@ msgid ""
"supporting multiple languages as APIs wouldn't bother explicitly supporting "
"``unicode`` when they claimed text data support."
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
msgid ""
@ -321,6 +477,15 @@ msgid ""
"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."
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
msgid ""
@ -341,38 +506,57 @@ msgid ""
"Python 3 doesn't have the method). Do note that as of Python 3.5 the "
"``__mod__`` method was added to the bytes type."
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
msgid "**Text data**"
msgstr ""
msgstr "**Format texte**"
#: ../Doc/howto/pyporting.rst:220
msgid "**Binary data**"
msgstr ""
msgstr "**Format binaire**"
#: ../Doc/howto/pyporting.rst:222
msgid "\\"
msgstr ""
msgstr "\\"
#: ../Doc/howto/pyporting.rst:222
msgid "decode"
msgstr ""
msgstr "decode"
#: ../Doc/howto/pyporting.rst:224
msgid "encode"
msgstr ""
msgstr "encode"
#: ../Doc/howto/pyporting.rst:226
msgid "format"
msgstr ""
msgstr "format"
#: ../Doc/howto/pyporting.rst:228
msgid "isdecimal"
msgstr ""
msgstr "isdecimal"
#: ../Doc/howto/pyporting.rst:230
msgid "isnumeric"
msgstr ""
msgstr "isnumeric"
#: ../Doc/howto/pyporting.rst:233
msgid ""
@ -383,6 +567,14 @@ msgid ""
"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."
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
msgid ""
@ -393,6 +585,14 @@ msgid ""
"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)"
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
msgid ""
@ -411,6 +611,22 @@ msgid ""
"`codecs.open` as that's only necessary for keeping compatibility with Python "
"2.5."
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
msgid ""
@ -424,6 +640,16 @@ msgid ""
"back: ``str(b'3') == b'3'``. But in Python 3 you get the string "
"representation of the bytes object: ``str(b'3') == \"b'3'\"``."
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
msgid ""
@ -436,14 +662,25 @@ msgid ""
"``six.indexbytes()`` which will return an integer like in Python 3: ``six."
"indexbytes(b'123', 1)``."
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
msgid "To summarize:"
msgstr ""
msgstr "Pour résumer :"
#: ../Doc/howto/pyporting.rst:282
msgid "Decide which of your APIs take text and which take binary data"
msgstr ""
"Décidez lesquelles de vos API travaillent sur du texte et lesquelles "
"travaillent sur des données binaires"
#: ../Doc/howto/pyporting.rst:283
msgid ""
@ -451,32 +688,43 @@ msgid ""
"and code for binary data works with ``bytes`` in Python 2 (see the table "
"above for what methods you cannot use for each type)"
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
msgid ""
"Mark all binary literals with a ``b`` prefix, textual literals with a ``u`` "
"prefix"
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
msgid ""
"Decode binary data to text as soon as possible, encode text as binary data "
"as late as possible"
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
msgid ""
"Open files using :func:`io.open` and make sure to specify the ``b`` mode "
"when appropriate"
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
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
msgid "Use feature detection instead of version detection"
msgstr ""
"Utilisez la détection de fonctionnalités plutôt que la détection de version"
#: ../Doc/howto/pyporting.rst:298
msgid ""
@ -487,6 +735,13 @@ msgid ""
"version check be against Python 2 and not Python 3. To help explain this, "
"let's look at an example."
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
msgid ""
@ -495,6 +750,11 @@ msgid ""
"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::"
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
msgid ""
@ -503,6 +763,10 @@ msgid ""
"assume that future Python versions will be more compatible with Python 3 "
"than Python 2::"
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
msgid ""
@ -510,10 +774,15 @@ msgid ""
"rely on feature detection. That avoids any potential issues of getting the "
"version detection wrong and helps keep you future-compatible::"
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
#, fuzzy
msgid "Prevent compatibility regressions"
msgstr ""
msgstr "Éviter les régressions de compatibilité"
#: ../Doc/howto/pyporting.rst:342
msgid ""
@ -522,12 +791,19 @@ msgid ""
"Python 3. This is especially true if you have a dependency which is blocking "
"you from actually running under Python 3 at the moment."
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
msgid ""
"To help with staying compatible, any new modules you create should have at "
"least the following block of code at the top of it::"
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
msgid ""
@ -536,6 +812,11 @@ msgid ""
"warnings into errors with ``-Werror`` then you can make sure that you don't "
"accidentally miss a warning."
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
msgid ""
@ -546,10 +827,17 @@ msgid ""
"does require you only support Python 2.7 and Python 3.4 or newer as that is "
"Pylint's minimum Python version support."
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
msgid "Check which dependencies block your transition"
msgstr ""
msgstr "Vérifier quelles dépendances empêchent la migration"
#: ../Doc/howto/pyporting.rst:370
msgid ""
@ -560,6 +848,12 @@ msgid ""
"is both a command-line tool as well as a web interface at https://"
"caniusepython3.com."
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
msgid ""
@ -569,10 +863,17 @@ msgid ""
"manually check your dependencies and to be notified quickly when you can "
"start running on Python 3."
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
msgid "Update your ``setup.py`` file to denote Python 3 compatibility"
msgstr ""
"Mettre à jour votre fichier ``setup.py`` pour spécifier la compatibilité "
"avec Python 3"
#: ../Doc/howto/pyporting.rst:386
msgid ""
@ -582,10 +883,16 @@ msgid ""
"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."
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
msgid "Use continuous integration to stay compatible"
msgstr ""
msgstr "Utiliser l'intégration continue pour maintenir la compatibilité"
#: ../Doc/howto/pyporting.rst:396
msgid ""
@ -595,6 +902,12 @@ msgid ""
"integrate tox with your continuous integration system so that you never "
"accidentally break Python 2 or 3 support."
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
msgid ""
@ -607,6 +920,15 @@ msgid ""
"these kinds of comparisons occur, making the mistake much easier to track "
"down."
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
msgid ""
@ -615,10 +937,15 @@ msgid ""
"don't accidentally break Python 2 or 3 compatibility regardless of which "
"version you typically run your tests under while developing."
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
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
msgid ""
@ -632,3 +959,14 @@ msgid ""
"binary data, helping to make sure everything functions as expected in both "
"versions of Python."
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."