Compare commits

...

5 Commits

Author SHA1 Message Date
Julien Palard 9e4003e36e
Backporting for #1628. 2021-06-04 17:23:52 +02:00
Julien Palard 5087de50b2
Backporting using pomerge --no-overwrite --to-files *.po */*.po 2021-06-04 13:52:38 +02:00
Christophe Nanteuil 1e8d67f3bc
Rétro-portage de 3.8 vers 3.6 (#1237) 2020-04-24 11:39:30 +02:00
Julien Palard 010f7ed5ca Backport from 3.8 2019-12-06 14:19:13 +01:00
Julien Palard ab52579de4 Replicating from 3.7 2019-05-28 15:00:18 +02:00
306 changed files with 24759 additions and 5777 deletions

View File

@ -91,4 +91,4 @@ msgid ""
"Python has such wonderful documentation -- Thank You!"
msgstr ""
"Ce n'est que grâce aux suggestions et contributions de la communauté Python "
"que Python a une documentation si merveilleuse -- Merci !"
"que Python a une documentation si merveilleuse Merci !"

46
bugs.po
View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/bugs.rst:5
msgid "Dealing with Bugs"
msgstr "S'attaquer aux bugs"
msgstr "S'attaquer aux bogues"
#: ../Doc/bugs.rst:7
msgid ""
@ -27,9 +27,9 @@ msgid ""
"for stability. In order to maintain this reputation, the developers would "
"like to know of any deficiencies you find in Python."
msgstr ""
"Python est un langage de programmation mature réputé pour sa stabilité. Afin "
"de maintenir cette réputation, les développeurs souhaitent connaître toute "
"déficience que vous pourriez rencontrer dans Python."
"Python est un langage de programmation robuste réputé pour sa stabilité. "
"Afin de maintenir cette réputation, les développeurs souhaitent connaître "
"tout problème que vous pourriez rencontrer dans Python."
#: ../Doc/bugs.rst:11
msgid ""
@ -37,9 +37,9 @@ msgid ""
"Python as it streamlines the process and involves less people. Learn how to :"
"ref:`contribute <contributing-to-python>`."
msgstr ""
"Il est parfois plus rapide de réparer les bugs soi-même et d'en proposer les "
"*patch*, ça simplifie le processus et implique moins de monde. Apprenez à :"
"ref:`contribuer <contributing-to-python>`."
"Il est parfois plus rapide de réparer les bogues soi-même et d'en proposer "
"les correctifs, ça simplifie le processus et implique moins de monde. "
"Apprenez à :ref:`contribuer <contributing-to-python>`."
#: ../Doc/bugs.rst:16
msgid "Documentation bugs"
@ -67,9 +67,9 @@ msgid ""
"'docs@' is a mailing list run by volunteers; your request will be noticed, "
"though it may take a while to be processed."
msgstr ""
"Si vous êtes limités par le temps, vous pouvez aussi envoyer un e-mail à "
"docs@python.org (les bugs de comportement peuvent être envoyés à python-"
"list@python.org). 'docs@' est une liste de diffusion gérée par des "
"Si vous êtes limité par le temps, vous pouvez aussi envoyer un courriel à "
"docs@python.org (les bogues de comportement peuvent être envoyés à python-"
"list@python.org). « docs@ » est une liste de diffusion gérée par des "
"volontaires, votre requête sera vue, mais elle peut prendre un moment pour "
"être traitée."
@ -79,7 +79,7 @@ msgstr "`Documentation bugs`_ sur le gestionnaire de ticket de Python"
#: ../Doc/bugs.rst:33
msgid "Using the Python issue tracker"
msgstr "Utilisation du gestionnaire de ticket Python"
msgstr "Utilisation du gestionnaire de tickets Python"
#: ../Doc/bugs.rst:35
msgid ""
@ -87,10 +87,10 @@ msgid ""
"(https://bugs.python.org/). The bug tracker offers a Web form which allows "
"pertinent information to be entered and submitted to the developers."
msgstr ""
"Les rapports de bugs pour Python lui-même devraient être soumis via le *Bug "
"Tracker Python* (http://bugs.python.org/). Le gestionnaire de ticket propose "
"un formulaire Web permettant de saisir des informations pertinentes à "
"soumettre aux développeurs."
"Les rapports de bogues pour Python lui-même devraient être soumis via le "
"*Bug Tracker Python* (http://bugs.python.org/). Le gestionnaire de tickets "
"propose un formulaire Web permettant de saisir des informations pertinentes "
"à soumettre aux développeurs."
#: ../Doc/bugs.rst:39
msgid ""
@ -120,9 +120,9 @@ msgid ""
msgstr ""
"Si le problème que vous soumettez n'est pas déjà dans le *bug tracker*, "
"revenez au *Python Bug Tracker* et connectez-vous. Si vous n'avez pas déjà "
"un compte pour le *tracker*, cliquez sur le lien \"S'enregistrer\", ou, si "
"un compte pour le *tracker*, cliquez sur le lien « S'enregistrer », ou, si "
"vous utilisez *OpenID*, sur l'un des logos des fournisseurs *OpenID* dans la "
"barre latérale. Il n'est pas possible de soumettre un rapport de bug de "
"barre latérale. Il n'est pas possible de soumettre un rapport de bogue de "
"manière anonyme."
#: ../Doc/bugs.rst:51
@ -142,9 +142,9 @@ msgid ""
"\"Component\" and \"Versions\" to which the bug relates."
msgstr ""
"Le formulaire de soumission a un certain nombre de champs. Pour le champ "
"\"Titre\", saisissez une *très* courte description du problème ; moins de "
"dix mots est approprié. Dans le champ \"Type\", sélectionnez le type de "
"problème ; sélectionnez aussi \"Composant\" et \"Versions\" en rapport avec "
"« Titre », saisissez une *très* courte description du problème ; moins de "
"dix mots est approprié. Dans le champ « Type », sélectionnez le type de "
"problème ; sélectionnez aussi « Composant » et « Versions » en rapport avec "
"le bogue."
#: ../Doc/bugs.rst:59
@ -154,7 +154,7 @@ msgid ""
"extension modules were involved, and what hardware and software platform you "
"were using (including version information as appropriate)."
msgstr ""
"Dans le champ \"Commentaire\", décrivez le problème de manière détaillée, "
"Dans le champ « Commentaire », décrivez le problème de manière détaillée, "
"incluant ce à quoi vous vous attendiez et ce qui s'est vraiment produit. "
"Assurez-vous d'y inclure les éventuels modules d'extensions impliqués et la "
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
@ -215,8 +215,8 @@ msgid ""
"the `core-mentorship mailing list`_ is a friendly place to get answers to "
"any and all questions pertaining to the process of fixing issues in Python."
msgstr ""
"Au delà de simplement remonter les bugs que vous trouvez, vous serez aussi "
"appréciés si vous y attachiez des correctifs. Vous pouvez trouver plus "
"Au-delà de simplement remonter les bogues que vous trouvez, il est aussi "
"apprécié d'y attacher des correctifs. Vous pouvez trouver plus "
"d'informations pour débuter la rédaction de correctifs dans le `Python "
"Developer's Guide`_. Si vous avez des questions, le `core-mentorship mailing "
"list`_ est un endroit amical pour obtenir des réponses à toutes les "

View File

@ -90,6 +90,10 @@ msgid ""
"this object. You won't have to release any memory yourself. The only "
"exceptions are ``es``, ``es#``, ``et`` and ``et#``."
msgstr ""
"En général, lorsqu'un format définit un pointeur vers un tampon, le tampon "
"est géré par l'objet Python correspondant et le tampon partage la durée de "
"vie de cet objet. vous n'avez pas à libérer de mémoire. Les seules "
"exceptions sont ``es``, ``es#``, ``et`` et ``et#``."
#: ../Doc/c-api/arg.rst:42
msgid ""
@ -152,6 +156,13 @@ msgid ""
"is raised. Unicode objects are converted to C strings using ``'utf-8'`` "
"encoding. If this conversion fails, a :exc:`UnicodeError` is raised."
msgstr ""
"Convertit un objet Unicode en un pointeur vers une chaîne de caractères. "
"S'il s'agit d'un pointeur vers une chaîne de caractères déjà existante, il "
"est stocké dans la variable de type pointeur vers un caractère dont vous "
"avez donné l'adresse. Une chaîne de caractères en C se termine par *NULL*. "
"La chaîne de caractères Python ne doit donc pas contenir de caractère dont "
"le code est *null*. Si elle en contient, une exception :exc:`ValueError` est "
"levée. Si la conversion échoue, une :exc:`UnicodeError` est levée."
#: ../Doc/c-api/arg.rst:77
msgid ""
@ -160,12 +171,19 @@ msgid ""
"strings, it is preferable to use the ``O&`` format with :c:func:"
"`PyUnicode_FSConverter` as *converter*."
msgstr ""
"Ce format n'accepte pas les :term:`objets compatibles avec une chaîne "
"d'octets <bytes-like object>`. Si vous voulez accepter les chemins du "
"système de fichiers et les convertir vers des chaînes de caractères C, il "
"est préférable d'utiliser le format ``O&`` avec :c:func:"
"`PyUnicode_FSConverter` en tant que *converter*."
#: ../Doc/c-api/arg.rst:83 ../Doc/c-api/arg.rst:150
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null code points were "
"encountered in the Python string."
msgstr ""
"Auparavant, une :exc:`TypeError` était levée quand la chaîne de caractères "
"Python contenait des codes NULL."
#: ../Doc/c-api/arg.rst:91
msgid "``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]"
@ -178,12 +196,19 @@ msgid ""
"resulting C string may contain embedded NUL bytes. Unicode objects are "
"converted to C strings using ``'utf-8'`` encoding."
msgstr ""
"Ce format accepte les objets Unicode et les *bytes-like object*. Cela "
"remplit une structure :c:type:`Py_buffer` qui est fournie par l'appelant. "
"Dans ce cas, la chaîne de caractères C qui en résulte peut contenir des "
"octets NULL. Les objets Unicode sont convertis en chaînes de caractères C en "
"utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:98
msgid ""
"``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, "
"int or :c:type:`Py_ssize_t`]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
#: ../Doc/c-api/arg.rst:94
msgid ""
@ -192,6 +217,11 @@ msgid ""
"second one its length. The string may contain embedded null bytes. Unicode "
"objects are converted to C strings using ``'utf-8'`` encoding."
msgstr ""
"La même chose que ``s*``, mais n'accepte pas les objets muables. Le résultat "
"est stocké dans deux variables C, la première est un pointeur vers une "
"chaîne de caractères C, la seconde contient sa taille. La chaîne de "
"caractères peut contenir des octets NULL. Les objets Unicode sont convertis "
"vers des chaînes de caractères C utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:102
msgid "``z`` (:class:`str` or ``None``) [const char \\*]"
@ -234,6 +264,8 @@ msgstr ""
#: ../Doc/c-api/arg.rst:120
msgid "``y`` (read-only :term:`bytes-like object`) [const char \\*]"
msgstr ""
"``y`` (lecture seule :term:`objet compatible avec une chaîne d'octets <bytes-"
"like object>`) [constante char \\*]"
#: ../Doc/c-api/arg.rst:113
msgid ""
@ -242,12 +274,18 @@ msgid ""
"contain embedded null bytes; if it does, a :exc:`ValueError` exception is "
"raised."
msgstr ""
"Ce format convertit un *objet compatible avec une chaîne d'octets* en un "
"pointeur C vers une chaîne de caractères ; il n'accepte pas les objets "
"Unicode. Le tampon d'octets ne doit pas contenir d'octets *null* ; si c'est "
"le cas, une exception :exc:`ValueError` est levée."
#: ../Doc/c-api/arg.rst:118
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null bytes were "
"encountered in the bytes buffer."
msgstr ""
"Auparavant, :exc:`TypeError` était levée lorsque des octets *null* étaient "
"rencontrés dans le tampon d'octets."
#: ../Doc/c-api/arg.rst:125
msgid "``y*`` (:term:`bytes-like object`) [Py_buffer]"
@ -308,6 +346,13 @@ msgid ""
"Python string must not contain embedded null code points; if it does, a :exc:"
"`ValueError` exception is raised."
msgstr ""
"Convertit un objet Python Unicode en un pointeur C vers un tampon de "
"caractères Unicode terminé par *NULL*. Vous devez passer l'adresse d'un "
"pointeur :c:type:`Py_UNICODE`, qui sera rempli avec le pointeur vers un "
"tampon Unicode existant. Veuillez noter que la taille d'un :c:type:"
"`Py_UNICODE` dépend des options de compilation (soit 16, soit 32 bits). La "
"chaîne de caractères Python ne doit pas contenir de code *NULL*. Si elle en "
"contient, une exception :exc:`ValueError` est levée."
#: ../Doc/c-api/arg.rst:157 ../Doc/c-api/arg.rst:166 ../Doc/c-api/arg.rst:174
#: ../Doc/c-api/arg.rst:182

View File

@ -530,7 +530,7 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:321
msgid "format"
msgstr ""
msgstr "format"
#: ../Doc/c-api/buffer.rst:323 ../Doc/c-api/buffer.rst:325
#: ../Doc/c-api/buffer.rst:327 ../Doc/c-api/buffer.rst:329

View File

@ -75,7 +75,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:68
msgid "Format Characters"
msgstr ""
msgstr "Caractères de format"
#: ../Doc/c-api/bytes.rst:68
msgid "Type"

View File

@ -45,31 +45,37 @@ msgstr ""
#: ../Doc/c-api/cell.rst:20
msgid "The C structure used for cell objects."
msgstr ""
msgstr "Structure C utilisée pour les objets cellules."
#: ../Doc/c-api/cell.rst:25
msgid "The type object corresponding to cell objects."
msgstr ""
msgstr "Type objet correspondant aux objets cellules."
#: ../Doc/c-api/cell.rst:30
msgid "Return true if *ob* is a cell object; *ob* must not be *NULL*."
msgstr ""
"Renvoie ``True`` si *ob* est un objet cellule ; *ob* ne doit pas être à "
"*NULL*."
#: ../Doc/c-api/cell.rst:35
msgid ""
"Create and return a new cell object containing the value *ob*. The parameter "
"may be *NULL*."
msgstr ""
"Crée et retourne un nouvel objet cellule contenant la valeur *ob*. Le "
"paramètre peut être mis à *NULL*."
#: ../Doc/c-api/cell.rst:41
msgid "Return the contents of the cell *cell*."
msgstr ""
msgstr "Renvoie le contenu de la cellule *cell*."
#: ../Doc/c-api/cell.rst:46
msgid ""
"Return the contents of the cell *cell*, but without checking that *cell* is "
"non-*NULL* and a cell object."
msgstr ""
"Renvoie le contenu de la cellule *cell*, mais sans vérifier si *cell* est "
"non *NULL* et sans vérifier si c'est un objet cellule."
#: ../Doc/c-api/cell.rst:52
msgid ""
@ -78,6 +84,10 @@ msgid ""
"must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On "
"success, ``0`` will be returned."
msgstr ""
"Définit le contenu de l'objet cellule à *value*. Cela libère la référence à "
"toute valeur de la cellule. *value* peut être fixé à *NULL*. *cell* ne doit "
"pas être *NULL* ; si ce n'est pas un objet cellule, ``-1`` est renvoyé. Si "
"c'est un objet cellule, renvoie ``0``."
#: ../Doc/c-api/cell.rst:60
msgid ""
@ -85,3 +95,6 @@ msgid ""
"are adjusted, and no checks are made for safety; *cell* must be non-*NULL* "
"and must be a cell object."
msgstr ""
"Définit la valeur de l'objet cellule à *value*. Pas de comptage de "
"références n'est ajusté et il n'y' a pas de contrôle effectué pour vérifier "
"la sûreté ; *cell* doit être à non *NULL* et doit être un objet cellule."

View File

@ -55,54 +55,73 @@ msgid ""
"objects use structures of this type as input or output values, as "
"appropriate. It is defined as::"
msgstr ""
"Structure C représentant la valeur d'un nombre complexe Python. La majorité "
"des fonctions qui traitent des nombres complexes utilisent cette structure "
"en entrée ou en sortie, selon le cas. Elle est définie par ::"
#: ../Doc/c-api/complex.rst:39
msgid ""
"Return the sum of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
"Renvoie la somme de deux nombres complexes, sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:45
msgid ""
"Return the difference between two complex numbers, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
"Renvoie la différence de deux nombres complexes, sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:51
msgid ""
"Return the negation of the complex number *complex*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
"Renvoie l'opposé du nombre complexe *complex*, sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:57
msgid ""
"Return the product of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
"Renvoie le produit de deux nombres complexes, sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:63
msgid ""
"Return the quotient of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
"Renvoie le quotient de deux nombres complexes, sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:66
msgid ""
"If *divisor* is null, this method returns zero and sets :c:data:`errno` to :"
"c:data:`EDOM`."
msgstr ""
"Si *divisor* est nul, cette méthode renvoie zéro et assigne :c:data:`EDOM` "
"à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:72
msgid ""
"Return the exponentiation of *num* by *exp*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
"Renvoie *num* à la puissance *exp*, sous la forme d'un :c:type:`Py_complex` "
"en C."
#: ../Doc/c-api/complex.rst:75
msgid ""
"If *num* is null and *exp* is not a positive real number, this method "
"returns zero and sets :c:data:`errno` to :c:data:`EDOM`."
msgstr ""
"Si *num* est nul et *exp* n'est pas un nombre réel positif, cette méthode "
"renvoie zéro et assigne :c:data:`EDOM` à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:80
msgid "Complex Numbers as Python Objects"
@ -112,46 +131,64 @@ msgstr "Nombres complexes en tant qu'objets Python"
msgid ""
"This subtype of :c:type:`PyObject` represents a Python complex number object."
msgstr ""
"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre complexe en "
"Python."
#: ../Doc/c-api/complex.rst:90
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python complex number "
"type. It is the same object as :class:`complex` in the Python layer."
msgstr ""
"Cette instance de :c:type:`PyTypeObject` représente le type nombre complexe "
"Python. C'est le même objet que la classe :class:`complex` de la couche "
"Python."
#: ../Doc/c-api/complex.rst:96
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject` or a subtype of :"
"c:type:`PyComplexObject`."
msgstr ""
"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject` ou un sous-"
"type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:102
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject`, but not a "
"subtype of :c:type:`PyComplexObject`."
msgstr ""
"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject`, mais pas "
"un sous-type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:108
msgid ""
"Create a new Python complex number object from a C :c:type:`Py_complex` "
"value."
msgstr ""
"Crée un nouveau nombre complexe à partir de la valeur d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:113
msgid "Return a new :c:type:`PyComplexObject` object from *real* and *imag*."
msgstr ""
"Renvoie un nouveau :c:type:`PyComplexObject` à partir de *real* et de *imag*."
#: ../Doc/c-api/complex.rst:118
msgid "Return the real part of *op* as a C :c:type:`double`."
msgstr ""
"Renvoie la partie réelle du nombre complexe *op* sous la forme d'un :c:type:"
"`double` en C."
#: ../Doc/c-api/complex.rst:123
msgid "Return the imaginary part of *op* as a C :c:type:`double`."
msgstr ""
"Renvoie la partie imaginaire du nombre complexe *op* sous la forme d'un :c:"
"type:`double` en C."
#: ../Doc/c-api/complex.rst:128
msgid "Return the :c:type:`Py_complex` value of the complex number *op*."
msgstr ""
"Renvoie la valeur du nombre complexe *op* sous la forme d'un :c:type:"
"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:130
msgid ""
@ -159,3 +196,7 @@ msgid ""
"method, this method will first be called to convert *op* to a Python complex "
"number object. Upon failure, this method returns ``-1.0`` as a real value."
msgstr ""
"Si *op* n'est pas un nombre complexe Python mais a une méthode :meth:"
"`__complex__`, cette méthode est d'abord appelée pour convertir *op* en "
"nombre complexe Python. En cas d'échec, cette méthode renvoie ``-1.0`` en "
"tant que nombre réel."

View File

@ -31,74 +31,102 @@ msgid ""
"structure into a static variable, :c:data:`PyDateTimeAPI`, that is used by "
"the following macros."
msgstr ""
"De nombreux objets *date* et *time* sont exposés par le module :mod:"
"`DateTime`. Avant d'utiliser une de ces fonctions, le fichier d'en-tête :"
"file:`datetime.h` doit être inclus dans vos sources (veuillez noter qu'il "
"n'est pas inclus par le fichier :file:`Python.h`) et la macro :c:macro:"
"`PyDateTime_IMPORT` doit-être invoquée, généralement lors de la fonction "
"d'initialisation du module. La macro crée un pointeur vers une structure C "
"et place celui-ci dans une variable statique, :c:data:`PyDateTimeAPI`, qui "
"est utilisée par les macros suivantes."
#: ../Doc/c-api/datetime.rst:16
msgid "Type-check macros:"
msgstr ""
msgstr "Macros pour vérifier les types :"
#: ../Doc/c-api/datetime.rst:20
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType` or a subtype "
"of :c:data:`PyDateTime_DateType`. *ob* must not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType` ou un sous-"
"type de :c:data:`PyDateTime_DateType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:26
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType`. *ob* must not "
"be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType`. *ob* ne doit "
"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:32
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType` or a "
"subtype of :c:data:`PyDateTime_DateTimeType`. *ob* must not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType` ou un "
"sous-type de :c:data:`PyDateTime_DateTimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:38
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType`. *ob* must "
"not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType`. *ob* ne "
"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:44
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType` or a subtype "
"of :c:data:`PyDateTime_TimeType`. *ob* must not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType` ou un sous-"
"type de :c:data:`PyDateTime_TimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:50
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType`. *ob* must not "
"be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType`. *ob* ne doit "
"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:56
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType` or a subtype "
"of :c:data:`PyDateTime_DeltaType`. *ob* must not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType` ou un sous-"
"type de :c:data:`PyDateTime_DeltaType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:62
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType`. *ob* must not "
"be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType`. *ob* ne "
"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:68
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType` or a subtype "
"of :c:data:`PyDateTime_TZInfoType`. *ob* must not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType` ou un sous-"
"type de :c:data:`PyDateTime_TZInfoType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:74
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType`. *ob* must "
"not be *NULL*."
msgstr ""
"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType`. *ob* ne "
"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:78
msgid "Macros to create objects:"
msgstr ""
msgstr "Macros pour créer des objets :"
#: ../Doc/c-api/datetime.rst:82
msgid ""
@ -132,18 +160,22 @@ msgid ""
"`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is "
"not checked:"
msgstr ""
"Macros pour extraire les champs des objets *date*. L'argument doit être une "
"instance de :c:data:`PyDateTime_Date`, ou une sous-classe (telle que :c:data:"
"`PyDateTime_DateTime`). L'argument ne doit pas être *NULL*, et le type n'est "
"pas vérifié :"
#: ../Doc/c-api/datetime.rst:112
msgid "Return the year, as a positive int."
msgstr ""
msgstr "Renvoie l'année, sous forme d'entier positif."
#: ../Doc/c-api/datetime.rst:117
msgid "Return the month, as an int from 1 through 12."
msgstr ""
msgstr "Renvoie le mois, sous forme d'entier allant de 1 à 12."
#: ../Doc/c-api/datetime.rst:122
msgid "Return the day, as an int from 1 through 31."
msgstr ""
msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
#: ../Doc/c-api/datetime.rst:125
msgid ""
@ -151,22 +183,25 @@ msgid ""
"instance of :c:data:`PyDateTime_DateTime`, including subclasses. The "
"argument must not be *NULL*, and the type is not checked:"
msgstr ""
"Macros pour extraire les champs des objets *datetime*. L'argument doit être "
"une instance de :c:data:`PyDateTime_DateTime` ou une sous-classe de celle-"
"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:131 ../Doc/c-api/datetime.rst:155
msgid "Return the hour, as an int from 0 through 23."
msgstr ""
msgstr "Renvoie l'heure, sous forme d'entier allant de 0 à 23."
#: ../Doc/c-api/datetime.rst:136 ../Doc/c-api/datetime.rst:160
msgid "Return the minute, as an int from 0 through 59."
msgstr ""
msgstr "Renvoie la minute, sous forme d'entier allant de 0 à 59."
#: ../Doc/c-api/datetime.rst:141 ../Doc/c-api/datetime.rst:165
msgid "Return the second, as an int from 0 through 59."
msgstr ""
msgstr "Renvoie la seconde, sous forme d'entier allant de 0 à 59."
#: ../Doc/c-api/datetime.rst:146 ../Doc/c-api/datetime.rst:170
msgid "Return the microsecond, as an int from 0 through 999999."
msgstr ""
msgstr "Renvoie la microseconde, sous forme d'entier allant de 0 à 999999."
#: ../Doc/c-api/datetime.rst:149
msgid ""
@ -174,6 +209,9 @@ msgid ""
"instance of :c:data:`PyDateTime_Time`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
"Macros pour extraire les champs des objets *time*. L'argument doit être une "
"instance de :c:data:`PyDateTime_Time` ou une sous-classe de celle-ci. "
"L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:173
msgid ""
@ -181,22 +219,28 @@ msgid ""
"instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
"Macros pour extraire les champs des objets *time delta*. L'argument doit "
"être une instance de :c:data:`PyDateTime_Delta` ou une sous-classe de celle-"
"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:179
msgid "Return the number of days, as an int from -999999999 to 999999999."
msgstr ""
"Renvoie le nombre de jours, sous forme d'entier allant de -999999999 à "
"999999999."
#: ../Doc/c-api/datetime.rst:186
msgid "Return the number of seconds, as an int from 0 through 86399."
msgstr ""
msgstr "Renvoie le nombre de secondes sous forme d'entier allant de 0 à 86399."
#: ../Doc/c-api/datetime.rst:193
msgid "Return the number of microseconds, as an int from 0 through 999999."
msgstr ""
"Renvoie le nombre de microsecondes, sous forme d'entier allant de 0 à 999999."
#: ../Doc/c-api/datetime.rst:198
msgid "Macros for the convenience of modules implementing the DB API:"
msgstr ""
msgstr "Macros de confort pour les modules implémentant l'API DB :"
#: ../Doc/c-api/datetime.rst:202
msgid ""

View File

@ -486,7 +486,7 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:477
msgid "Signal Handling"
msgstr ""
msgstr "Traitement des signaux"
#: ../Doc/c-api/exceptions.rst:487
msgid ""

View File

@ -32,6 +32,16 @@ msgid ""
"reporting in the interpreter; third-party code is advised to access the :mod:"
"`io` APIs instead."
msgstr ""
"Ces API sont une émulation minimale de l'API C Python 2 pour les objets "
"fichier natifs, qui reposaient sur la gestion des entrées-sorties avec "
"tampon (:c:type:`FILE\\*`) de la bibliothèque standard C. En Python 3, les "
"fichiers et les flux utilisent le nouveau module :mod:`io`, qui définit "
"plusieurs couches au dessus des entrées/sorties bas niveau sans tampon du "
"système d'exploitation. Les fonctions définies ci-dessous, écrites en C, "
"encapsulent ces nouvelles APi pour les rendre plus faciles d'utilisation et "
"sont majoritairement pensées pour signaler des erreurs internes dans "
"l'interpréteur ; il est conseillé au code tiers d'utiliser les API de :mod:"
"`io` à la place."
#: ../Doc/c-api/file.rst:22
msgid ""
@ -42,6 +52,13 @@ msgid ""
"failure. For a more comprehensive description of the arguments, please refer "
"to the :func:`io.open` function documentation."
msgstr ""
"Crée un objet fichier Python à partir du descripteur d'un fichier déjà "
"ouvert *fd*. Les arguments *name*, *encoding*, *errors* et *newline* peuvent "
"être *NULL* pour utiliser ceux par défaut ; *buffering* peut être *-1* pour "
"utiliser celui par défaut ; *name* est ignoré et gardé pour la rétro-"
"compatibilité. Renvoie *NULL* en cas d'échec. Pour une description plus "
"détaillée des arguments, merci de vous référer à la documentation de "
"fonction :func:`io.open`."
#: ../Doc/c-api/file.rst:31
msgid ""
@ -49,10 +66,14 @@ msgid ""
"level file descriptors can produce various issues (such as unexpected "
"ordering of data)."
msgstr ""
"Étant donné que les flux de données Python possèdent leur propre couche de "
"tampon, les mélanger avec des descripteurs de fichiers du niveau du système "
"d'exploitation peut produire des erreurs (comme par exemple un ordre des "
"données inattendu)."
#: ../Doc/c-api/file.rst:35
msgid "Ignore *name* attribute."
msgstr ""
msgstr "ignore l'attribut *name*"
#: ../Doc/c-api/file.rst:41
msgid ""
@ -62,6 +83,11 @@ msgid ""
"integer, which is returned as the file descriptor value. Sets an exception "
"and returns ``-1`` on failure."
msgstr ""
"Renvoie un descripteur de fichier associé avec *p* comme un :c:type:`int`. "
"Si l'objet est un entier, sa valeur est renvoyée. Sinon, la méthode :meth:"
"`~io.IOBase.fileno` de l'objet est appelée si elle existe; la méthode doit "
"renvoyer un entier, qui est renvoyé en tant que valeur du descripteur. "
"Affecte une exception et renvoie ``-1`` lors d'un échec."
#: ../Doc/c-api/file.rst:52
msgid ""
@ -75,6 +101,16 @@ msgid ""
"regardless of length, but :exc:`EOFError` is raised if the end of the file "
"is reached immediately."
msgstr ""
"Cette fonction, équivalente à ``p.readline([n])``, lit une ligne de l'objet "
"*p*. *p* peut être un objet fichier ou n'importe quel objet qui possède une "
"méthode :meth:`~io.IOBase.readline`. Si *n* vaut ``0``, une seule ligne est "
"lue, indépendamment de la taille de la ligne. Si *n* est plus grand que "
"``0``, un maximum de *n* octets seront lus en provenance du fichier ; une "
"ligne partielle peut être renvoyée. Dans les deux cas, une chaîne de "
"caractères vide est renvoyée si la fin du fichier est atteinte "
"immédiatement. Cependant, si *n* est plus petit que ``0``, une ligne est lue "
"indépendamment de sa taille, mais :exc:`EOFError` est levée si la fin du "
"fichier est atteinte immédiatement."
#: ../Doc/c-api/file.rst:67
msgid ""
@ -83,9 +119,16 @@ msgid ""
"instead of the :func:`repr`. Return ``0`` on success or ``-1`` on failure; "
"the appropriate exception will be set."
msgstr ""
"Écrit l'objet *obj* dans l'objet fichier *p*. La seule option gérée pour "
"*flags* est :const:`Py_PRINT_RAW` ; si défini, l'attribut :func:`str` de "
"l'objet est écrit à la place de l'attribut :func:`repr`. Retourne ``0`` en "
"cas de succès ou ``-1`` en cas échec ; l'exception appropriée sera levée."
#: ../Doc/c-api/file.rst:75
msgid ""
"Write string *s* to file object *p*. Return ``0`` on success or ``-1`` on "
"failure; the appropriate exception will be set."
msgstr ""
"Écrit la chaîne de caractères *s* dans l'objet fichier *p*. Retourne ``0`` "
"en cas de succès ou ``-1`` en cas d'échec ; l'exception appropriée sera mise "
"en place."

View File

@ -19,40 +19,53 @@ msgstr ""
#: ../Doc/c-api/float.rst:6
msgid "Floating Point Objects"
msgstr ""
msgstr "Objets représentant les nombres à virgule flottante"
#: ../Doc/c-api/float.rst:13
msgid ""
"This subtype of :c:type:`PyObject` represents a Python floating point object."
msgstr ""
"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre à virgule "
"flottante en Python."
#: ../Doc/c-api/float.rst:18
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python floating point "
"type. This is the same object as :class:`float` in the Python layer."
msgstr ""
"Cette instance de l'objet :c:type:`PyTypeObject` représente le type nombre à "
"virgule flottante en Python. C'est le même objet que la classe :class:"
"`float` de la couche Python."
#: ../Doc/c-api/float.rst:24
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject` or a subtype of :c:"
"type:`PyFloatObject`."
msgstr ""
"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject` ou un sous-"
"type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:30
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject`, but not a subtype "
"of :c:type:`PyFloatObject`."
msgstr ""
"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject`, mais pas un "
"sous-type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:36
msgid ""
"Create a :c:type:`PyFloatObject` object based on the string value in *str*, "
"or *NULL* on failure."
msgstr ""
"Crée un objet :c:type:`PyFloatObject` à partir de la valeur de la chaîne de "
"caractères *str*, ou *NULL* en cas d'échec."
#: ../Doc/c-api/float.rst:42
msgid "Create a :c:type:`PyFloatObject` object from *v*, or *NULL* on failure."
msgstr ""
"Crée un objet :c:type:`PyFloatObject` à partir de *v*, ou *NULL* en cas "
"d'échec."
#: ../Doc/c-api/float.rst:47
msgid ""
@ -62,12 +75,20 @@ msgid ""
"This method returns ``-1.0`` upon failure, so one should call :c:func:"
"`PyErr_Occurred` to check for errors."
msgstr ""
"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
"type:`double` en C. Si le *pyfloat* n'est pas un nombre à virgule flottante "
"mais contient une méthode :meth:`__float__`, elle est d'abord appelée pour "
"convertir le *pyfloat* en nombre à virgule flottante. Cette méthode renvoie "
"``-1.0`` en cas d'échec, il faut appeler :c:func:`PyErr_Occurred` pour "
"vérifier les erreurs."
#: ../Doc/c-api/float.rst:56
msgid ""
"Return a C :c:type:`double` representation of the contents of *pyfloat*, but "
"without error checking."
msgstr ""
"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
"type:`double` en C, sans vérifier les erreurs."
#: ../Doc/c-api/float.rst:62
msgid ""
@ -75,20 +96,29 @@ msgid ""
"minimum and maximum values of a float. It's a thin wrapper around the header "
"file :file:`float.h`."
msgstr ""
"Renvoie une instance *structseq* qui contient les informations sur la "
"précision et les valeurs minimales et maximales pour un nombre à virgule "
"flottante. C'est une enveloppe autour du fichier d'entête :file:`float.h`."
#: ../Doc/c-api/float.rst:69
msgid ""
"Return the maximum representable finite float *DBL_MAX* as C :c:type:"
"`double`."
msgstr ""
"Renvoie le nombre à virgule flottante fini maximal *DBL_MAX* sous la forme "
"d'un :c:type:`double` en C."
#: ../Doc/c-api/float.rst:74
msgid ""
"Return the minimum normalized positive float *DBL_MIN* as C :c:type:`double`."
msgstr ""
"Renvoie le nombre à virgule flottante minimal normalisé *DBL_MIN* sous la "
"forme :c:type:`double` en C."
#: ../Doc/c-api/float.rst:78
msgid ""
"Clear the float free list. Return the number of items that could not be "
"freed."
msgstr ""
"Libère la mémoire de la *free list* des nombres à virgule flottante. Renvoie "
"le nombre d'éléments qui n'ont pas pu être libérés."

View File

@ -157,7 +157,7 @@ msgstr ""
#: ../Doc/c-api/intro.rst:113
msgid "Reference Counts"
msgstr ""
msgstr "Compteurs de références"
#: ../Doc/c-api/intro.rst:115
msgid ""
@ -466,7 +466,7 @@ msgstr ""
#: ../Doc/c-api/intro.rst:517
msgid "Embedding Python"
msgstr ""
msgstr "Embarquer Python"
#: ../Doc/c-api/intro.rst:519
msgid ""

View File

@ -41,10 +41,13 @@ msgid ""
"one-argument form of the :func:`iter` built-in function for built-in "
"sequence types."
msgstr ""
"Type des itérateurs renvoyés par les fonctions :c:func:`PySeqIter_New` et la "
"forme à un argument de la fonction native :func:`iter` pour les séquences "
"natives."
#: ../Doc/c-api/iterator.rst:24
msgid "Return true if the type of *op* is :c:data:`PySeqIter_Type`."
msgstr ""
msgstr "Renvoie vrai si *op* est de type :c:data:`PySeqIter_Type`."
#: ../Doc/c-api/iterator.rst:29
msgid ""
@ -52,16 +55,20 @@ msgid ""
"iteration ends when the sequence raises :exc:`IndexError` for the "
"subscripting operation."
msgstr ""
"Renvoie un itérateur sur la séquence *seq*. L'itération prend fin lorsque la "
"séquence lève :exc:`IndexError` lors d'une tentative d'accès."
#: ../Doc/c-api/iterator.rst:36
msgid ""
"Type object for iterator objects returned by :c:func:`PyCallIter_New` and "
"the two-argument form of the :func:`iter` built-in function."
msgstr ""
"Type de l'itérateur renvoyé par les fonctions :c:func:`PyCallIter_New` et :"
"func:`iter` à deux arguments."
#: ../Doc/c-api/iterator.rst:42
msgid "Return true if the type of *op* is :c:data:`PyCallIter_Type`."
msgstr ""
msgstr "Renvoie vrai si *op* est de type :c:data:`PyCallIter_Type`."
#: ../Doc/c-api/iterator.rst:47
msgid ""
@ -70,3 +77,7 @@ msgid ""
"should return the next item in the iteration. When *callable* returns a "
"value equal to *sentinel*, the iteration will be terminated."
msgstr ""
"Renvoie un nouvel itérateur. Le premier paramètre, *callable*, peut être "
"n'importe quel objet Python appelable sans aucun paramètre ; chaque appel "
"doit renvoyer l'élément suivant de l'itération. Lorsque *callable* renvoie "
"une valeur égale à *sentinel*, l'itération prend fin."

View File

@ -19,13 +19,15 @@ msgstr ""
#: ../Doc/c-api/mapping.rst:6
msgid "Mapping Protocol"
msgstr ""
msgstr "Protocole de correspondance"
#: ../Doc/c-api/mapping.rst:8
msgid ""
"See also :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` and :c:func:"
"`PyObject_DelItem`."
msgstr ""
"Voir aussi :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` et :c:func:"
"`PyObject_DelItem`."
#: ../Doc/c-api/mapping.rst:14
msgid ""
@ -40,6 +42,8 @@ msgid ""
"Returns the number of keys in object *o* on success, and ``-1`` on failure. "
"This is equivalent to the Python expression ``len(o)``."
msgstr ""
"Renvoie le nombre de clefs dans l'objet *o* et ``-1`` en cas d'échec. C'est "
"l'équivalent de l'expression Python ``len(o)``."
#: ../Doc/c-api/mapping.rst:32
msgid ""
@ -61,12 +65,18 @@ msgid ""
"on failure. This is equivalent to the Python statement ``del o[key]``. This "
"is an alias of :c:func:`PyObject_DelItem`."
msgstr ""
"Supprime la correspondance associée à l'objet *key* dans l'objet *o*. "
"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
"``del o[key]``. C'est un alias pour :c:func:`PyObject_DelItem`."
#: ../Doc/c-api/mapping.rst:53
msgid ""
"Remove the mapping for the string *key* from the object *o*. Return ``-1`` "
"on failure. This is equivalent to the Python statement ``del o[key]``."
msgstr ""
"Supprime la correspondance associée à la chaîne *key* dans l'objet *o*. "
"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
"``del o[key]``."
#: ../Doc/c-api/mapping.rst:59 ../Doc/c-api/mapping.rst:66
msgid ""
@ -74,6 +84,9 @@ msgid ""
"This is equivalent to the Python expression ``key in o``. This function "
"always succeeds."
msgstr ""
"Renvoie ``1`` si l'objet de correspondance possède une clef *key* et ``0`` "
"sinon. C'est l'équivalent de l'expression Python ``key in o``. Cette "
"fonction ne provoque jamais d'erreur."
#: ../Doc/c-api/mapping.rst:73
msgid ""

View File

@ -23,7 +23,7 @@ msgstr ""
#: ../Doc/c-api/memory.rst:17
msgid "Overview"
msgstr ""
msgstr "Aperçu"
#: ../Doc/c-api/memory.rst:19
msgid ""
@ -384,7 +384,7 @@ msgstr ""
#: ../Doc/c-api/memory.rst:340 ../Doc/c-api/memory.rst:477
msgid "Field"
msgstr ""
msgstr "Champ"
#: ../Doc/c-api/memory.rst:340 ../Doc/c-api/memory.rst:477
msgid "Meaning"

View File

@ -27,6 +27,9 @@ msgid ""
"<bufferobjects>` as a Python object which can then be passed around like any "
"other object."
msgstr ""
"Un objet Python :class:`memoryview` expose le :ref:`protocole tampon "
"<bufferobjects>` du C. Cet objet peut ensuite être passé comme n'importe "
"quel objet."
#: ../Doc/c-api/memoryview.rst:18
msgid ""
@ -35,12 +38,18 @@ msgid ""
"will be read/write, otherwise it may be either read-only or read/write at "
"the discretion of the exporter."
msgstr ""
"Crée un objet *memoryview* à partir d'un objet implémentant le protocole "
"tampon. Si *obj* permet d'exporter des tampons modifiables, l'objet "
"*memoryview* crée acceptera la lecture et écriture, sinon l'objet crée est "
"soit en lecture seule ou lecture/écriture, à la discrétion de l'*exporteur*."
#: ../Doc/c-api/memoryview.rst:25
msgid ""
"Create a memoryview object using *mem* as the underlying buffer. *flags* can "
"be one of :c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE`."
msgstr ""
"Crée un objet *memoryview* utilisant *mem* comme un tampon sous-jacent. "
"*flags* peut être :c:macro:`PyBUF_READ` ou :c:macro:`PyBUF_WRITE`."
#: ../Doc/c-api/memoryview.rst:32
msgid ""
@ -48,6 +57,8 @@ msgid ""
"simple byte buffers, :c:func:`PyMemoryView_FromMemory` is the preferred "
"function."
msgstr ""
"Crée un objet *memoryview* à partir de la structure tampon *view*. Pour de "
"simples tampons d'octets, :c:func:`PyMemoryView_FromMemory` est préférée."
#: ../Doc/c-api/memoryview.rst:38
msgid ""
@ -57,6 +68,11 @@ msgid ""
"original memory. Otherwise, a copy is made and the memoryview points to a "
"new bytes object."
msgstr ""
"Crée un objet *memoryview* vers un segment de mémoire :term:`contiguous` "
"(organisé comme en ``'C'`` ou comme en ``'F'`` pour Fortran) à partir d'un "
"objet qui expose le protocole tampon. Si la mémoire est contiguë, l'objet "
"*memoryview* pointe vers la mémoire d'origine. Sinon une copie est faite et "
"la *memoryview* pointe vers un nouvel objet *bytes*."
#: ../Doc/c-api/memoryview.rst:47
msgid ""
@ -70,6 +86,10 @@ msgid ""
"*mview* **must** be a memoryview instance; this macro doesn't check its "
"type, you must do it yourself or you will risk crashes."
msgstr ""
"Retourne un pointeur vers la copie privée du tampon de l'*exporteur* de "
"*memoryview*. *mview* **doit** être une instance de *memoryview*; cette "
"macro ne vérifie pas le type, vous devez le faire vous-même sinon vous "
"pourriez subir un crash."
#: ../Doc/c-api/memoryview.rst:59
msgid ""

View File

@ -57,6 +57,12 @@ msgid ""
"and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:"
"`TypeError` on error."
msgstr ""
"Retourne un pointeur vers un emplacement de mémoire en lecture seule "
"utilisable en tant qu'entrée basée sur des caractères. L'argument *obj* doit "
"prendre en charge l'interface de tampon de caractère à segment unique. En "
"cas de succès, retourne ``0``, définit *buffer* à l'emplacement de la "
"mémoire et *buffer_len* à la longueur de la mémoire tampon. Retourne ``-1`` "
"et affecte une exception :exc:`TypeError` en cas d'erreur."
#: ../Doc/c-api/objbuffer.rst:32
msgid ""
@ -66,6 +72,12 @@ msgid ""
"and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:"
"`TypeError` on error."
msgstr ""
"Retourne un pointeur vers un emplacement de mémoire en lecture seule "
"contenant des données arbitraires. L'argument *obj* doit prendre en charge "
"l'interface de tampon lisible à segment unique. En cas de succès, retourne "
"``0``, définit *buffer* à l'emplacement de la mémoire et *buffer_len* à la "
"longueur de la mémoire tampon. Renvoie ``-1`` et affecte l'exception :exc:"
"`TypeError` en cas d'erreur."
#: ../Doc/c-api/objbuffer.rst:41
msgid ""

View File

@ -19,13 +19,15 @@ msgstr ""
#: ../Doc/c-api/object.rst:6
msgid "Object Protocol"
msgstr ""
msgstr "Protocole Objet"
#: ../Doc/c-api/object.rst:11
msgid ""
"The ``NotImplemented`` singleton, used to signal that an operation is not "
"implemented for the given type combination."
msgstr ""
"Le singleton ``NotImplemented``, utilisé pour signaler qu'une opération "
"n'est pas implémentée pour la combinaison de types en question."
#: ../Doc/c-api/object.rst:17
msgid ""
@ -33,6 +35,9 @@ msgid ""
"function (that is, increment the reference count of NotImplemented and "
"return it)."
msgstr ""
"Traite proprement le renvoi de :c:data:`Py_NotImplemented` depuis "
"l'intérieur d'une fonction C (c'est-à-dire, incrémente le compteur de "
"référence de `NotImplemented` et le renvoie)."
#: ../Doc/c-api/object.rst:24
msgid ""
@ -41,6 +46,11 @@ msgid ""
"currently supported is :const:`Py_PRINT_RAW`; if given, the :func:`str` of "
"the object is written instead of the :func:`repr`."
msgstr ""
"Écrit un objet *o*, dans le fichier *fp*. Renvoie ``-1`` en cas d'erreur. "
"L'argument *flags* est utilisé pour permettre certaines options de rendu. La "
"seule option actuellement gérée est :const:`Py_PRINT_RAW` ; si cet argument "
"est fourni, le :func:`str` de l'objet est utilisé pour le rendu à la place "
"de :func:`repr`."
#: ../Doc/c-api/object.rst:32 ../Doc/c-api/object.rst:39
msgid ""
@ -48,6 +58,9 @@ msgid ""
"This is equivalent to the Python expression ``hasattr(o, attr_name)``. This "
"function always succeeds."
msgstr ""
"Renvoie ``1`` si *o* a l'attribut *attr_name*, et ``0`` sinon. Ceci est "
"équivalent à l'expression Python ``hasattr(o, attr_name)``. Cette fonction "
"réussit toujours."
#: ../Doc/c-api/object.rst:46
msgid ""
@ -55,6 +68,9 @@ msgid ""
"attribute value on success, or *NULL* on failure. This is the equivalent of "
"the Python expression ``o.attr_name``."
msgstr ""
"Récupère l'attribut nommé *attr_name* de l'objet *o*. Renvoie la valeur de "
"l'attribut en cas de succès, ou *NULL* en cas d'échec. Ceci est équivalent à "
"l'expression Python ``o.attr_name``."
#: ../Doc/c-api/object.rst:53
msgid ""
@ -62,6 +78,9 @@ msgid ""
"attribute value on success, or *NULL* on failure. This is the equivalent of "
"the Python expression ``o.attr_name``."
msgstr ""
"Récupère un attribut nommé *attr_name* de l'objet *o*. Renvoie la valeur de "
"l'attribut en cas de succès, ou *NULL* en cas d'échec. Ceci est équivalent à "
"l'expression Python ``o.attr_name``."
#: ../Doc/c-api/object.rst:60
msgid ""
@ -72,6 +91,13 @@ msgid ""
"descriptors take preference over instance attributes, while non-data "
"descriptors don't. Otherwise, an :exc:`AttributeError` is raised."
msgstr ""
"Accesseur d'attribut générique destiné à être mis dans le *slot* "
"``tp_getattro`` d'un objet type. Recherche un descripteur dans le "
"dictionnaire de classes du MRO de l'objet ainsi qu'un attribut dans le :attr:"
"`~object.__dict__` de l'objet (si présent). Comme défini dans :ref:"
"`descriptors`, les descripteurs de données sont prioritaires sur les "
"attributs d'instance, contrairement aux autres descripteurs. Sinon, une :exc:"
"`AttributeError` est levée."
#: ../Doc/c-api/object.rst:70 ../Doc/c-api/object.rst:81
msgid ""
@ -79,18 +105,26 @@ msgid ""
"value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on "
"success. This is the equivalent of the Python statement ``o.attr_name = v``."
msgstr ""
"Définit la valeur de l'attribut nommé *attr_name*, pour l'objet *o*, à la "
"valeur *v*. Lève une exception et renvoie ``-1`` en cas d'échec ; renvoie "
"``0`` en cas de succès. Ceci est équivalent à l'instruction Python ``o."
"attr_name = v``."
#: ../Doc/c-api/object.rst:75
msgid ""
"If *v* is *NULL*, the attribute is deleted, however this feature is "
"deprecated in favour of using :c:func:`PyObject_DelAttr`."
msgstr ""
"Si *v* est *NULL*, l'attribut est supprimé. Cette fonctionnalité est "
"obsolète,nous vous conseillons d'utiliser :c:func:`PyObject_DelAttr`."
#: ../Doc/c-api/object.rst:86
msgid ""
"If *v* is *NULL*, the attribute is deleted, however this feature is "
"deprecated in favour of using :c:func:`PyObject_DelAttrString`."
msgstr ""
"Si *v* est *NULL*, l'attribut est supprimé. Cette fonctionnalité est "
"obsolète, nous vous conseillons d'utiliser :c:func:`PyObject_DelAttr`."
#: ../Doc/c-api/object.rst:92
msgid ""
@ -103,24 +137,39 @@ msgid ""
"returned, otherwise an :exc:`AttributeError` is raised and ``-1`` is "
"returned."
msgstr ""
"Accesseur et suppresseur générique d'attributs qui est fait pour être mis "
"dans le :c:member:`~PyTypeObject.tp_setattro` d'un objet type. Il cherche un "
"descripteur de données dans le dictionnaire de classes dans le MRO de "
"l'objet et, si ce descripteur est trouvé, c'est lui qui est utilisé de "
"préférence pour la suppression et la définition de l'attribut dans le "
"dictionnaire d'instance. Sinon, l'attribut est défini ou supprimé dans le :"
"attr:`~object.__dict__` de l'objet (si présent). En cas de succès, ``0`` est "
"renvoyé, sinon une :exc:`AttributeError` est levée et ``-1`` est renvoyé."
#: ../Doc/c-api/object.rst:104 ../Doc/c-api/object.rst:110
msgid ""
"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on "
"failure. This is the equivalent of the Python statement ``del o.attr_name``."
msgstr ""
"Supprime l'attribut nommé *attr_name*, pour l'objet *o*. Renvoie ``-1`` en "
"cas d'échec. Ceci est l'équivalent de l'expression Python ``del o."
"attr_name``."
#: ../Doc/c-api/object.rst:116
msgid ""
"A generic implementation for the getter of a ``__dict__`` descriptor. It "
"creates the dictionary if necessary."
msgstr ""
"Une implémentation générique de l'accesseur d'un descripteur d'un "
"``__dict__``. Crée le dictionnaire si nécessaire."
#: ../Doc/c-api/object.rst:124
msgid ""
"A generic implementation for the setter of a ``__dict__`` descriptor. This "
"implementation does not allow the dictionary to be deleted."
msgstr ""
"Une implémentation générique du mutateur d'un descripteur de ``__dict__``. "
"Cette implémentation n'autorise pas la suppression du dictionnaire."
#: ../Doc/c-api/object.rst:132
msgid ""
@ -132,6 +181,13 @@ msgid ""
"to *opid*. Returns the value of the comparison on success, or *NULL* on "
"failure."
msgstr ""
"Compare les valeurs de *o1* et *o2* en utilisant l'opération spécifiée par "
"*opid*, qui doit être :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:"
"`Py_NE`, :const:`Py_GT`, ou :const:`Py_GE`, correspondant à ``<``, ``<=``, "
"``==``, ``!=``, ``>``, ou ``>=`` respectivement. Ceci est l'équivalent de "
"l'expression Python ``o1 op o2``, où ``op`` est l'opérateur correspondant à "
"*opid*. Renvoie la valeur de la comparaison en cas de succès, ou *NULL* en "
"cas d'échec."
#: ../Doc/c-api/object.rst:142
msgid ""
@ -143,12 +199,21 @@ msgid ""
"Python expression ``o1 op o2``, where ``op`` is the operator corresponding "
"to *opid*."
msgstr ""
"Compare les valeurs de *o1* et *o2* en utilisant l'opération spécifiée par "
"*opid*, qui doit être :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:"
"`Py_NE`, :const:`Py_GT`, ou :const:`Py_GE`, correspondant à ``<``, ``<=``, "
"``==``, ``!=``, ``>``, ou ``>=`` respectivement. Renvoie ``-1`` en cas "
"d'erreur, ``0`` si le résultat est faux, et ``1`` sinon. Ceci est "
"l'équivalent de l'expression Python ``o1 op o2``, où ``op`` est l'opérateur "
"correspondant à *opid*."
#: ../Doc/c-api/object.rst:151
msgid ""
"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` "
"will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`."
msgstr ""
"Si *o1* et *o2* sont le même objet, :c:func:`PyObject_RichCompareBool` "
"renvoie toujours ``1`` pour :const:`Py_EQ` et ``0`` pour :const:`Py_NE`."
#: ../Doc/c-api/object.rst:158
msgid ""
@ -156,12 +221,18 @@ msgid ""
"representation on success, *NULL* on failure. This is the equivalent of the "
"Python expression ``repr(o)``. Called by the :func:`repr` built-in function."
msgstr ""
"Calcule une représentation en chaîne de caractères de l'objet *o*. Renvoie "
"la représentation en chaîne de caractères en cas de succès, *NULL* en cas "
"d'échec. Ceci est l'équivalent de l'expression Python ``repr(o)``. Appelé "
"par la fonction intégrée :func:`repr`."
#: ../Doc/c-api/object.rst:162 ../Doc/c-api/object.rst:186
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
msgstr ""
"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
"qu'elle ne passe pas sous silence une exception active."
#: ../Doc/c-api/object.rst:170
msgid ""
@ -171,6 +242,12 @@ msgid ""
"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. "
"Called by the :func:`ascii` built-in function."
msgstr ""
"Comme :c:Func:`PyObject_Repr`, calcule une représentation en chaîne de "
"caractères de l'objet *o*, mais échappe les caractères non ASCII dans la "
"chaîne de caractères renvoyée par :c:Func:`PyObject_Repr` avec' ``\\x``, ``"
"\\u`` ou ``\\U``. Cela génère une chaîne de caractères similaire à celle "
"renvoyée par :c:func:`PyObject_Repr` en Python 2. Appelée par la fonction "
"native :func:`ascii`."
#: ../Doc/c-api/object.rst:181
msgid ""
@ -179,6 +256,11 @@ msgid ""
"Python expression ``str(o)``. Called by the :func:`str` built-in function "
"and, therefore, by the :func:`print` function."
msgstr ""
"Calcule une représentation en chaîne de caractères de l'objet *o*. Renvoie "
"la représentation en chaîne de caractères en cas de succès, *NULL* en cas "
"d'échec. Ceci est l'équivalent de l'expression Python ``str(o)``. Appelée "
"par la fonction native :func:`str`, et, par conséquent, par la fonction :"
"func:`print`."
#: ../Doc/c-api/object.rst:194
msgid ""
@ -187,12 +269,19 @@ msgid ""
"``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a TypeError "
"is raised when *o* is an integer instead of a zero-initialized bytes object."
msgstr ""
"Calcule une représentation en octets de l'objet *o*. *NULL* est renvoyé en "
"cas d'échec, un objet séquence d'octets est renvoyé en cas de succès. Ceci "
"est l'équivalent de l'expression Python ``bytes(o)``, quand *o* n'est pas un "
"entier. Contrairement à ``bytes(o)``, une exception *TypeError* est levée "
"lorsque *o* est un entier au lieu d'un objet octet initialisé avec des zéros."
#: ../Doc/c-api/object.rst:203
msgid ""
"Return ``1`` if the class *derived* is identical to or derived from the "
"class *cls*, otherwise return ``0``. In case of an error, return ``-1``."
msgstr ""
"Renvoie ``1`` si la classe *derived* est identique à ou dérivée de la classe "
"*cls*, renvoie ``0`` sinon. En cas d'erreur, renvoie ``-1``."
#: ../Doc/c-api/object.rst:206 ../Doc/c-api/object.rst:225
msgid ""
@ -200,6 +289,9 @@ msgid ""
"The result will be ``1`` when at least one of the checks returns ``1``, "
"otherwise it will be ``0``."
msgstr ""
"Si *cls* est un tuple, la vérification est menée sur chaque entrée de *cls*. "
"Le résultat sera ``1`` quand au moins une des vérifications renvoie ``1``, "
"sinon ce sera ``0``."
#: ../Doc/c-api/object.rst:210
msgid ""
@ -208,6 +300,10 @@ msgid ""
"*derived* is a subclass of *cls* if it is a direct or indirect subclass, i."
"e. contained in ``cls.__mro__``."
msgstr ""
"Si *cls* a une méthode :meth:`~class.__subclasscheck__`, elle est appelée "
"pour déterminer le statut de la sous-classe comme décrit dans :pep:`3119`. "
"Sinon, *derived* est une sous-classe de *cls* si c'est une sous-classe "
"directe ou indirecte, c'est-à-dire contenue dans ``cls.__mro__``."
#: ../Doc/c-api/object.rst:215
msgid ""
@ -215,12 +311,19 @@ msgid ""
"class, are considered classes. However, objects can override this by having "
"a :attr:`__bases__` attribute (which must be a tuple of base classes)."
msgstr ""
"Normalement seulement les classes objets, c'est-à-dire les instances de :"
"class:`type` ou d'une classe dérivée, sont considérées classes. Cependant, "
"les objets peuvent surcharger cela en ayant un attribut :attr:`__bases__` "
"(qui doit être un tuple de classes de bases)."
#: ../Doc/c-api/object.rst:222
msgid ""
"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of "
"*cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception."
msgstr ""
"Renvoie ``1`` si *inst* est une instance de la classe *cls* ou une sous-"
"classe de *cls*, ou ``0`` sinon. En cas d'erreur, renvoie ``-1`` et "
"initialise une exception."
#: ../Doc/c-api/object.rst:229
msgid ""
@ -228,12 +331,18 @@ msgid ""
"determine the subclass status as described in :pep:`3119`. Otherwise, "
"*inst* is an instance of *cls* if its class is a subclass of *cls*."
msgstr ""
"Si *cls* a une méthode :meth:`~class.__subclasscheck__`, elle sera appelée "
"pour déterminer le statut de la sous-classe comme décrit dans :pep:`3119`. "
"Sinon, *inst* est une instance *cls* si sa classe est une sous-classe de "
"*cls*."
#: ../Doc/c-api/object.rst:233
msgid ""
"An instance *inst* can override what is considered its class by having a :"
"attr:`__class__` attribute."
msgstr ""
"Une instance *inst* peut surcharger ce qui est considéré comme sa classe en "
"ayant un attribut :attr:`__class__`."
#: ../Doc/c-api/object.rst:236
msgid ""
@ -241,12 +350,17 @@ msgid ""
"classes are, by having a :attr:`__bases__` attribute (which must be a tuple "
"of base classes)."
msgstr ""
"Un objet *cls* peut surcharger s'il est considéré comme une classe, et ce "
"que ses classes de bases sont, en ayant un attribut :attr:`__bases__` (qui "
"doit être un tuple des classes de base)."
#: ../Doc/c-api/object.rst:243
msgid ""
"Determine if the object *o* is callable. Return ``1`` if the object is "
"callable and ``0`` otherwise. This function always succeeds."
msgstr ""
"Détermine si l'objet *o* est appelable. Renvoie ``1`` si c'est le cas, et "
"``0`` sinon. Cette fonction réussit toujours."
#: ../Doc/c-api/object.rst:249
msgid ""

View File

@ -19,41 +19,52 @@ msgstr ""
#: ../Doc/c-api/reflection.rst:6
msgid "Reflection"
msgstr ""
msgstr "Réflexion"
#: ../Doc/c-api/reflection.rst:10
msgid ""
"Return a dictionary of the builtins in the current execution frame, or the "
"interpreter of the thread state if no frame is currently executing."
msgstr ""
"Renvoie un dictionnaire des fonctions natives de la *frame* en cours "
"d'exécution, ou si aucune *frame* n'est exécutée, les fonctions natives du "
"*thread* indiqué par le *thread state*."
#: ../Doc/c-api/reflection.rst:16
msgid ""
"Return a dictionary of the local variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
"Renvoie un dictionnaire des variables locales de la *frame* en cours "
"d'exécution, ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:22
msgid ""
"Return a dictionary of the global variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
"Renvoie un dictionnaire des variables globales de la *frame* en cours "
"d'exécution ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:28
msgid ""
"Return the current thread state's frame, which is *NULL* if no frame is "
"currently executing."
msgstr ""
"Renvoie la *frame* actuelle selon le *thread state*, qui est *NULL* si "
"aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:34
msgid "Return the line number that *frame* is currently executing."
msgstr ""
msgstr "Renvoie le numéro de ligne que *frame* est en train d'exécuter"
#: ../Doc/c-api/reflection.rst:39
msgid ""
"Return the name of *func* if it is a function, class or instance object, "
"else the name of *func*\\s type."
msgstr ""
"Renvoie le nom de *func* s'il s'agit d'une fonction, d'une classe ou d'un "
"objet d'instance, sinon le nom du type de *func*"
#: ../Doc/c-api/reflection.rst:45
msgid ""
@ -62,3 +73,8 @@ msgid ""
"and \" object\". Concatenated with the result of :c:func:"
"`PyEval_GetFuncName`, the result will be a description of *func*."
msgstr ""
"Renvoie une description en chaîne de caractères, en fonction du type de "
"*func*. Les valeurs renvoyées peuvent être ``\"()\"`` pour les fonction et "
"les méthodes, ``\\\" constructor\\\"``, ``\\\" instance\\\"``, ``\\\" object"
"\\\"``. Concaténé avec le résultat de :c:func:`PyEval_GetFuncName`, le "
"résultat sera une description de *func*"

View File

@ -135,7 +135,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
#: ../Doc/c-api/structures.rst:305
msgid "Field"
msgstr ""
msgstr "Champ"
#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
#: ../Doc/c-api/structures.rst:305

View File

@ -153,7 +153,7 @@ msgstr ""
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "Field"
msgstr ""
msgstr "Champ"
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "C Type"

View File

@ -440,7 +440,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:447
msgid "Format Characters"
msgstr ""
msgstr "Caractères de format"
#: ../Doc/c-api/unicode.rst:447
msgid "Type"

View File

@ -375,6 +375,8 @@ msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
msgstr ""
"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
"qu'elle ne passe pas sous silence une exception active."
#: ../Doc/c-api/veryhigh.rst:341
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/weakref.rst:6
msgid "Weak Reference Objects"
msgstr ""
msgstr "Objets à références faibles"
#: ../Doc/c-api/weakref.rst:8
msgid ""
@ -28,18 +28,22 @@ msgid ""
"is a simple reference object, and the second acts as a proxy for the "
"original object as much as it can."
msgstr ""
"Python gère les *références faibles* comme des objets de première classe. Il "
"existe deux types d'objets spécifiques qui implémentent directement les "
"références faibles. Le premier est un objet de référence simple, et le "
"second agit autant que possible comme un mandataire vers l'objet original."
#: ../Doc/c-api/weakref.rst:16
msgid "Return true if *ob* is either a reference or proxy object."
msgstr ""
msgstr "Renvoie vrai si *ob* est soit une référence, soit un objet proxy."
#: ../Doc/c-api/weakref.rst:21
msgid "Return true if *ob* is a reference object."
msgstr ""
msgstr "Retourne vrai si *ob* est un objet référence."
#: ../Doc/c-api/weakref.rst:26
msgid "Return true if *ob* is a proxy object."
msgstr ""
msgstr "Retourne vrai si *ob* est un objet proxy"
#: ../Doc/c-api/weakref.rst:31
msgid ""
@ -52,6 +56,16 @@ msgid ""
"referencable object, or if *callback* is not callable, ``None``, or *NULL*, "
"this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
"Retourne un objet de référence faible pour l'objet *ob*. Elle renvoie "
"toujours une nouvelle référence, mais cela ne signifie pas qu'un nouvel "
"objet est créé ; un objet référence existant peut être renvoyé. Le second "
"paramètre, *callback*, peut être un objet appelable qui reçoit une "
"notification lorsque *ob* est collecté par le ramasse-miette (*garbage "
"collected* en anglais) ; il doit accepter un paramètre unique, qui est "
"l'objet référence faible lui-même. *callback* peut aussi être positionné à "
"``None`` ou à *NULL*. Si *ob* n'est pas un objet faiblement référençable, "
"ou si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci retourne "
"*NULL* et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:43
msgid ""
@ -64,12 +78,23 @@ msgid ""
"is not a weakly-referencable object, or if *callback* is not callable, "
"``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
"Retourne un objet mandataire à référence faible pour l'objet *ob*. Ceci "
"renvoie toujours une nouvelle référence, mais ne garantit pas la création "
"d'un nouvel objet ; un objet proxy existant peut être retourné. Le second "
"paramètre, *callback*, peut être un objet appelable qui reçoit une "
"notification lorsque *ob* est collecté ; il doit accepter un seul paramètre, "
"qui sera l'objet de référence faible lui-même. *callback* peut aussi être "
"``None`` ou *NULLL*. Si *ob* n'est pas un objet faiblement référençable, ou "
"si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci renvoie *NULL* "
"et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:55
msgid ""
"Return the referenced object from a weak reference, *ref*. If the referent "
"is no longer live, returns :const:`Py_None`."
msgstr ""
"Retourne l'objet référencé à partir d'une référence faible, *ref*. Si le "
"référence n'existe plus, alors l'objet renvoie :const:`Py_None`."
#: ../Doc/c-api/weakref.rst:60
msgid ""
@ -77,9 +102,15 @@ msgid ""
"This means that you should always call :c:func:`Py_INCREF` on the object "
"except if you know that it cannot be destroyed while you are still using it."
msgstr ""
"Cette fonction renvoie une **référence empruntée** à l'objet référencé. Cela "
"signifie que vous devez toujours appeler :c:func:`Py_INCREF` sur l'objet "
"sauf si vous savez qu'il ne peut pas être détruit tant que vous l'utilisez "
"encore."
#: ../Doc/c-api/weakref.rst:68
msgid ""
"Similar to :c:func:`PyWeakref_GetObject`, but implemented as a macro that "
"does no error checking."
msgstr ""
"Similaire à :c:func:`PyWeakref_GetObject`, mais implémenté comme une macro "
"qui ne vérifie pas les erreurs."

View File

@ -70,7 +70,7 @@ msgid ""
"the distribution and installation tools provided with Python."
msgstr ""
"Pour les entreprises et autres institutions, gardez en tête que certaines "
"organisations ont leur propres règles sur l'utilisation et la contribution "
"organisations ont leurs propres règles sur l'utilisation et la contribution "
"au logiciel libre. Prenez ces règles en compte lorsque vous utilisez les "
"outils de distribution et d'installation fournis par Python."
@ -225,7 +225,7 @@ msgid ""
msgstr ""
"Les outils de construction de paquets et de distribution actuellement "
"recommandées peuvent être installées en invoquant le module ``pip`` dans une "
"invite de commande : ::"
"invite de commande ::"
#: ../Doc/distributing/index.rst:104
msgid ""

File diff suppressed because it is too large Load Diff

View File

@ -34,8 +34,8 @@ msgstr ""
"\" ou à un \"installateur\" (tout dépend de votre environnement). Ce n'est "
"cependant pas forcément un binaire, il peut ne contenir que des sources "
"Python et / ou du *byte-code*; et nous n'appelons pas ça un *package* parce "
"que ce mot est déjà utilisée dans Python (et \"installateur\" est un terme "
"spécifique au monde des systèmes de bureau). "
"que ce mot est déjà utilisé dans Python (et \"installateur\" est un terme "
"spécifique au monde des systèmes de bureau)."
#: ../Doc/distutils/builtdist.rst:14
msgid ""
@ -52,14 +52,14 @@ msgid ""
msgstr ""
"Une distribution compilée est une manière de rendre la vie plus facile à "
"ceux qui installent votre module : pour les utilisateurs de système Linux "
"basé sur RPM, ce sera des binaire RPM; pour les utilisateurs de Windows, "
"c'est un installateur exécutable; pour les utilisateurs de Linux basé sur "
"basé sur RPM, ce sera des binaires RPM; pour les utilisateurs de Windows, "
"c'est un installateur exécutable; pour les utilisateurs de Linux basés sur "
"Debian, c'est un paquet Debian; et ainsi de suite. Évidemment, personne "
"n'est capable de créer une distribution compilée pour toute les plateformes "
"n'est capable de créer une distribution compilée pour toutes les plateformes "
"existantes, donc Distutils est fait pour permettre aux développeurs de se "
"concentrer sur leurs spécialités --- écrire du code et créer des "
"distribution source --- pendant que d'autres, appelés *packagers* s'occupent "
"de transformer les sources en paquets pour chaque plateforme."
"distributions source --- pendant que d'autres, appelés *packagers* "
"s'occupent de transformer les sources en paquets pour chaque plateforme."
#: ../Doc/distutils/builtdist.rst:24
msgid ""
@ -97,7 +97,7 @@ msgid ""
"considered \"dumb\" because it has to be unpacked in a specific location to "
"work.)"
msgstr ""
"alors Distutils construit ma distribution du module (Distutils lui même dans "
"alors Distutils construit ma distribution du module (Distutils lui-même dans "
"ce cas), fait une \"fausse\" installation (aussi dans le dossier :file:"
"`build`) et crée le type de distribution compilée par défaut pour ma "
"plateforme. Le format par défaut est un \"bête\" fichier *tar* pour Unix et "
@ -151,7 +151,7 @@ msgid ""
msgstr ""
"La commande :command:`bdist` a l'option :option:`!--formats`, similaire à la "
"commande :command:`sdist`, que vous pouvez utiliser pour sélectionner le "
"type de distribution compilée à générer : par exemple,"
"type de distribution compilée à générer : par exemple, ::"
#: ../Doc/distutils/builtdist.rst:66
msgid ""
@ -165,7 +165,7 @@ msgstr ""
#: ../Doc/distutils/builtdist.rst:70
msgid "The available formats for built distributions are:"
msgstr "Les formats disponible pour les distributions compilées sont :"
msgstr "Les formats disponibles pour les distributions compilées sont :"
#: ../Doc/distutils/builtdist.rst:73
msgid "Format"
@ -185,7 +185,7 @@ msgstr "``gztar``"
#: ../Doc/distutils/builtdist.rst:75
msgid "gzipped tar file (:file:`.tar.gz`)"
msgstr "Fichier *tar* *gzippé* (:file:`.tar.gz`)"
msgstr "fichier *tar* *gzippé* (:file:`.tar.gz`)"
#: ../Doc/distutils/builtdist.rst:75
msgid "\\(1)"
@ -197,7 +197,7 @@ msgstr "``bztar``"
#: ../Doc/distutils/builtdist.rst:78
msgid "bzipped tar file (:file:`.tar.bz2`)"
msgstr "Fichier *tar* de type *bzipped* (:file:`.tar.bz2`)"
msgstr "fichier *tar* de type *bzipped* (:file:`.tar.bz2`)"
#: ../Doc/distutils/builtdist.rst:81
msgid "``xztar``"
@ -205,7 +205,7 @@ msgstr "``xztar``"
#: ../Doc/distutils/builtdist.rst:81
msgid "xzipped tar file (:file:`.tar.xz`)"
msgstr "Fichier *tar* de type *xzipped* (:file:`.tar.xz`)"
msgstr "fichier *tar* de type *xzipped* (:file:`.tar.xz`)"
#: ../Doc/distutils/builtdist.rst:84
msgid "``ztar``"
@ -213,7 +213,7 @@ msgstr "``ztar``"
#: ../Doc/distutils/builtdist.rst:84
msgid "compressed tar file (:file:`.tar.Z`)"
msgstr "Fichier *tar* compressé par *compress* (:file:`.tar.Z`)"
msgstr "fichier *tar* compressé par *compress* (:file:`.tar.Z`)"
#: ../Doc/distutils/builtdist.rst:84
msgid "\\(3)"
@ -233,7 +233,7 @@ msgstr "``zip``"
#: ../Doc/distutils/builtdist.rst:89
msgid "zip file (:file:`.zip`)"
msgstr "Fichier *zip* (:file:`.zip`)"
msgstr "fichier *zip* (:file:`.zip`)"
#: ../Doc/distutils/builtdist.rst:89
msgid "(2),(4)"
@ -273,7 +273,7 @@ msgstr "``wininst``"
#: ../Doc/distutils/builtdist.rst:97
msgid "self-extracting ZIP file for Windows"
msgstr "Fichier zip auto-extracteur Windows"
msgstr "fichier zip auto-extracteur Windows"
#: ../Doc/distutils/builtdist.rst:97
msgid "\\(4)"
@ -297,15 +297,15 @@ msgstr "Notes :"
#: ../Doc/distutils/builtdist.rst:110
msgid "default on Unix"
msgstr "Par défaut sur Unix"
msgstr "par défaut sur Unix"
#: ../Doc/distutils/builtdist.rst:113
msgid "default on Windows"
msgstr "Par défaut sur Windows"
msgstr "par défaut sur Windows"
#: ../Doc/distutils/builtdist.rst:116
msgid "requires external :program:`compress` utility."
msgstr "Nécessite un programme externe :program:`compress`."
msgstr "nécessite un programme externe :program:`compress`."
#: ../Doc/distutils/builtdist.rst:119
msgid ""
@ -320,7 +320,7 @@ msgid ""
"requires external :program:`rpm` utility, version 3.0.4 or better (use ``rpm "
"--version`` to find out which version you have)"
msgstr ""
"Nécessite un programme externe :program:`rpm`, version 3.0.4 ou mieux "
"nécessite un programme externe :program:`rpm`, version 3.0.4 ou mieux "
"(utilisez ``rpm --version`` pour connaître quelle version vous avez)"
#: ../Doc/distutils/builtdist.rst:126
@ -337,9 +337,9 @@ msgstr ""
"Vous ne devez pas utiliser la commande :command:`bdist` avec l'option :"
"option:`!--formats`; Vous pouvez également utiliser la commande qui "
"implémente directement le format qui vous intéresse. Certaines de ces \"sous-"
"commandes\" :command:`bdist` génèrent plusieurs formats similaire; par "
"commandes\" :command:`bdist` génèrent plusieurs formats similaires; par "
"exemple, La commande :command:`bdist_dumb` génère les archives aux formats "
"\"bête\" (``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, et ``zip``), "
"\"bêtes\" (``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, et ``zip``), "
"et :command:`bdist_rpm` génère les binaires RPM et ainsi que les sources. "
"Les sous-commandes :command:`bdist`, et les formats générés par chacun, "
"sont :"
@ -424,7 +424,7 @@ msgstr ""
#: ../Doc/distutils/builtdist.rst:177
msgid "or the :command:`bdist` command with the :option:`!--format` option::"
msgstr ""
msgstr "ou la commande :command:`bdist` avec l'option :option:`!--format` ::"
#: ../Doc/distutils/builtdist.rst:181
msgid ""
@ -433,10 +433,10 @@ msgid ""
"you can explicitly specify multiple :command:`bdist_\\*` commands and their "
"options::"
msgstr ""
"La première vous permet de spécifier des options spécifique à RPM; la "
"dernière vous permet de spécifier plusieurs format d'un seul coup. Si vous "
"La première vous permet de spécifier des options spécifiques à RPM; la "
"dernière vous permet de spécifier plusieurs formats d'un seul coup. Si vous "
"avez besoin d'utiliser les deux, vous pouvez explicitement spécifier "
"plusieurs commande :command:`bdist_\\*` et leurs options ::"
"plusieurs commandes :command:`bdist_\\*` et leurs options ::"
#: ../Doc/distutils/builtdist.rst:188
msgid ""
@ -447,7 +447,7 @@ msgid ""
"any Distutils configuration files. Various options and sections in the :"
"file:`.spec` file are derived from options in the setup script as follows:"
msgstr ""
"La création de Package RPM est configurée par une fichier :file:`.spec`, un "
"La création de Package RPM est configurée par un fichier :file:`.spec`, un "
"peu comme Distutils est configuré par script *setup.py*. Pour vous faciliter "
"la tâche, la commande :command:`bdist_rpm` crée normalement un fichier :file:"
"`.spec` basé sur les informations que vous fournissez dans *setup.py*, dans "
@ -481,7 +481,7 @@ msgstr "``description``"
#: ../Doc/distutils/builtdist.rst:202
msgid "Version"
msgstr "*Version*"
msgstr "Version"
#: ../Doc/distutils/builtdist.rst:202
msgid "``version``"
@ -489,7 +489,7 @@ msgstr "``version``"
#: ../Doc/distutils/builtdist.rst:204 ../Doc/distutils/builtdist.rst:227
msgid "Vendor"
msgstr "*vendor*"
msgstr "Vendor"
#: ../Doc/distutils/builtdist.rst:204
msgid ""
@ -509,7 +509,7 @@ msgstr "``license``"
#: ../Doc/distutils/builtdist.rst:210
msgid "Url"
msgstr "*Url*"
msgstr "Url"
#: ../Doc/distutils/builtdist.rst:210
msgid "``url``"
@ -539,7 +539,7 @@ msgstr "Option de :command:`bdist_rpm`"
#: ../Doc/distutils/builtdist.rst:220
msgid "default value"
msgstr "Valeur par défaut"
msgstr "valeur par défaut"
#: ../Doc/distutils/builtdist.rst:223
msgid "Release"
@ -555,7 +555,7 @@ msgstr "\"1\""
#: ../Doc/distutils/builtdist.rst:225
msgid "Group"
msgstr "*Group*"
msgstr "Group"
#: ../Doc/distutils/builtdist.rst:225
msgid "``group``"
@ -575,7 +575,7 @@ msgstr "(voir au-dessus)"
#: ../Doc/distutils/builtdist.rst:229
msgid "Packager"
msgstr "*Packager*"
msgstr "Packager"
#: ../Doc/distutils/builtdist.rst:229
msgid "``packager``"
@ -590,7 +590,7 @@ msgstr "(none)"
#: ../Doc/distutils/builtdist.rst:231
msgid "Provides"
msgstr "*Provides*"
msgstr "Provides"
#: ../Doc/distutils/builtdist.rst:231
msgid "``provides``"
@ -598,7 +598,7 @@ msgstr "``provides``"
#: ../Doc/distutils/builtdist.rst:233
msgid "Requires"
msgstr "*Requires*"
msgstr "Requires"
#: ../Doc/distutils/builtdist.rst:233
msgid "``requires``"
@ -606,7 +606,7 @@ msgstr "``requires``"
#: ../Doc/distutils/builtdist.rst:235
msgid "Conflicts"
msgstr "*Conflicts*"
msgstr "Conflicts"
#: ../Doc/distutils/builtdist.rst:235
msgid "``conflicts``"
@ -614,7 +614,7 @@ msgstr "``conflicts``"
#: ../Doc/distutils/builtdist.rst:237
msgid "Obsoletes"
msgstr "*Obsoletes*"
msgstr "Obsoletes"
#: ../Doc/distutils/builtdist.rst:237
msgid "``obsoletes``"
@ -622,7 +622,7 @@ msgstr "``obsoletes``"
#: ../Doc/distutils/builtdist.rst:239
msgid "Distribution"
msgstr "*Distribution*"
msgstr "Distribution"
#: ../Doc/distutils/builtdist.rst:239
msgid "``distribution_name``"
@ -630,7 +630,7 @@ msgstr "``distribution_name``"
#: ../Doc/distutils/builtdist.rst:241
msgid "BuildRequires"
msgstr "*BuildRequires*"
msgstr "BuildRequires"
#: ../Doc/distutils/builtdist.rst:241
msgid "``build_requires``"
@ -638,7 +638,7 @@ msgstr "``build_requires``"
#: ../Doc/distutils/builtdist.rst:243
msgid "Icon"
msgstr "*Icon*"
msgstr "Icon"
#: ../Doc/distutils/builtdist.rst:243
msgid "``icon``"
@ -655,6 +655,14 @@ msgid ""
"disable this file, you can pass the :option:`!--no-user-cfg` option to :file:"
"`setup.py`."
msgstr ""
"Fournir ces options en ligne de commande est fastidieux et sujet à des "
"erreurs, il est donc recommandé de les mettre dans un fichier de "
"configuration. :file:`setup.cfg`\\ --- voir la section :ref:`setup-config`. "
"Si vous distribuez ou empaquetez beaucoup de modules de distribution Python, "
"vous pourriez vouloir mettre les options qui s'appliquent à tous vos projets "
"dans votre fichier de configuration personnel Distutils (:file:`~/."
"pydistutils.cfg`). Si vous voulez temporairement désactiver ce fichier, vous "
"pouvez passer l'option :option:`!--no-user-cfg` à :file:`setup.py`."
#: ../Doc/distutils/builtdist.rst:254
msgid ""
@ -670,7 +678,7 @@ msgid ""
"Distutils setup script; in fact, much of the information in the setup "
"script winds up in the :file:`.spec` file)"
msgstr ""
"Créer un fichier :file:`.spec` qui décrira le paquet (comme le script de "
"crée un fichier :file:`.spec` qui décrit le paquet (comme le script de "
"préparation Distutils, en réalité la plupart des informations du script de "
"préparation se retrouve dans le fichier :file:`.spec`)"
@ -683,7 +691,7 @@ msgid ""
"create the \"binary\" RPM (which may or may not contain binary code, "
"depending on whether your module distribution contains Python extensions)"
msgstr ""
"Créer le RPM \"binaire\" (qui peut ou non contenir des binaires, tout dépend "
"crée le RPM \"binaire\" (qui peut ou non contenir des binaires, tout dépend "
"de si votre module contiens des extensions)"
#: ../Doc/distutils/builtdist.rst:266
@ -704,6 +712,14 @@ msgid ""
"winds up deep in the \"build tree,\" in a temporary directory created by :"
"command:`bdist_rpm`.)"
msgstr ""
"Si vous le souhaitez, vous pouvez séparer ces trois étapes. Vous pouvez "
"utiliser l'option :option:`!--spec-only` pour faire en sorte que la "
"commande :command:`bdist_rpm` crée juste le fichier :file:`.spec` et "
"quitte ; dans ce cas, le fichier :file:`.spec` sera écrit dans le dossier de "
"distribution (\"*distribution directory*\") --- normalement :file:`dist/`, "
"mais personnalisable avec l'option :option:`!--dist-dir`. (Normalement, le "
"fichier :file:`.spec` se retrouve profondément enfoui dans l'arborescence, "
"dans un dossier temporaire créé par la commande :command:`bdist_rpm`.)"
#: ../Doc/distutils/builtdist.rst:297
msgid "Creating Windows Installers"
@ -717,7 +733,7 @@ msgid ""
"metadata in the setup script, let the user select a few options, and start "
"or cancel the installation."
msgstr ""
"Les installateurs exécutable sont le format naturel pour les distributions "
"Les installateurs exécutables sont le format naturel pour les distributions "
"sur Windows. Ils affichent une jolie interface graphique, montrent quelques "
"informations à propos du module qui va être installé, tiré des métadonnées "
"dans le script de préparation, laisse l'utilisateur choisir quelques options "
@ -733,7 +749,7 @@ msgstr ""
#: ../Doc/distutils/builtdist.rst:310
msgid "or the :command:`bdist` command with the :option:`!--formats` option::"
msgstr ""
msgstr "ou la commande :command:`bdist` avec l'option :option:`!--formats` ::"
#: ../Doc/distutils/builtdist.rst:314
msgid ""
@ -769,6 +785,11 @@ msgid ""
"`bdist_wininst` command with the :option:`!--no-target-compile` and/or the :"
"option:`!--no-target-optimize` option."
msgstr ""
"L'installeur essaiera de compiler les modules purs en :term:`bytecode` après "
"installation sur le système cible dans les modes normaux et optimisé. Si "
"vous ne voulez pas que ce soit fait, vous pouvez lancer la commande :command:"
"`bdist_wininst` avec l'option :option:`!--no-target-compile` et/ou l'option :"
"option:`!--no-target-optimize`."
#: ../Doc/distutils/builtdist.rst:331
msgid ""
@ -776,6 +797,9 @@ msgid ""
"it is run, but you can also supply your own 152x261 bitmap which must be a "
"Windows :file:`.bmp` file with the :option:`!--bitmap` option."
msgstr ""
"Par défaut l'installateur affichera le super logo \"Python Powered\", mais "
"vous pouvez aussi donnez votre propre bitmap de 152x261 qui doit être un "
"fichier :file:`.bmp` Windows avec l'option :option:`!--bitmap`."
#: ../Doc/distutils/builtdist.rst:335
msgid ""
@ -784,6 +808,10 @@ msgid ""
"distribution and the version number. This can be changed to another text by "
"using the :option:`!--title` option."
msgstr ""
"L'installateur affichera aussi un grand titre en arrière plan de la fenêtre "
"quand exécuté, qui est composé du nom de votre distribution et du numéro de "
"version. Cela peut être changé avec un autre texte avec l'option :option:`!--"
"title`."
#: ../Doc/distutils/builtdist.rst:340
msgid ""
@ -791,6 +819,9 @@ msgid ""
"normally :file:`dist/`, but customizable with the :option:`!--dist-dir` "
"option."
msgstr ""
"Le fichier d'installation sera écrit dans le dossier de distribution "
"(\"*distribution directory*\") --- normalement :file:`dist/`, mais "
"personnalisable avec l'option :option:`!--dist-dir`."
#: ../Doc/distutils/builtdist.rst:346
msgid "Cross-compiling on Windows"
@ -803,7 +834,7 @@ msgid ""
"installed, you can use a 32bit version of Windows to create 64bit extensions "
"and vice-versa."
msgstr ""
"Depuis Python 2.6, *distutils* est capable de compiler pour toute les "
"Depuis Python 2.6, *distutils* est capable de compiler pour toutes les "
"plateformes de Windows. En pratique, cela signifie qu'avec les bons outils "
"installés, vous pouvez utiliser une version 32 bits de Windows pour créer "
"une extension 64 bits et vice-versa."
@ -821,7 +852,7 @@ msgid ""
"to build a 64bit version of your extension. The Windows Installers also "
"support this option, so the command::"
msgstr ""
"Pour construire une version 64 bits de votre module. L'installateur Windows "
"pour construire une version 64 bits de votre module. L'installateur Windows "
"supporte aussi cette option, donc la commande ::"
#: ../Doc/distutils/builtdist.rst:364
@ -860,7 +891,7 @@ msgid ""
"to check or modify your existing install.)"
msgstr ""
"Remarquez que par défaut Visual Studio 2008 n'installe pas les outils et "
"compilateur 64 bits. Vous devrez peut être réexécuter le processus "
"compilateur 64 bits. Vous devrez peut-être ré-exécuter le processus "
"d'installation et sélectionner ces outils (utiliser le *Panneau de Contrôle -"
"> [Ajouter/Supprimer]* est un bon moyen de vérifier ou modifier votre "
"installation existante.)"
@ -876,6 +907,9 @@ msgid ""
"specified, and the script filename must also be listed in the scripts "
"argument to the setup function."
msgstr ""
"Depuis Python 2.3, un script post-installation peut être spécifié avec "
"l'option :option:`!--install-script`. Le nom du script doit être spécifié et "
"présent dans l'argument \"scripts\" de la fonction ``setup``."
#: ../Doc/distutils/builtdist.rst:390
msgid ""
@ -884,6 +918,11 @@ msgid ""
"again at uninstallation time before the files are removed with ``argv[1]`` "
"set to :option:`!-remove`."
msgstr ""
"Ce script doit être lancé au moment de l'installation sur le système cible "
"après que tous les fichiers ont été copiés, avec la valeur de ``argv[1]`` "
"à :option:`!-install`, et une autre fois durant la désinstallation avant "
"que les fichiers soient supprimés avec la valeur de ``argv[1]`` à :option:`!-"
"remove`."
#: ../Doc/distutils/builtdist.rst:395
msgid ""
@ -900,8 +939,8 @@ msgid ""
"Some functions especially useful in this context are available as additional "
"built-in functions in the installation script."
msgstr ""
"certaines fonctions spécialement utiles dans ce contexte sont disponibles "
"comme fonctions intégrées additionnelles dans le script d'installation."
"Certaines fonctions spécialement utiles dans ce contexte sont disponibles "
"comme fonctions natives additionnelles dans le script d'installation."
#: ../Doc/distutils/builtdist.rst:406
msgid ""
@ -912,7 +951,7 @@ msgid ""
msgstr ""
"Ces fonctions peuvent être appelées lorsqu'un répertoire ou un fichier est "
"crée par le script de post installation au moment de l'installation. Cela va "
"enregistrer le *chemin* avec le des-installeur, de sorte qu'il soit retiré "
"enregistrer le *chemin* avec le des-installateur, de sorte qu'il soit retiré "
"lors de la des-installation de la distribution. pour être sûr, les "
"répertoires sont uniquement retirés s'ils sont vides."
@ -973,3 +1012,9 @@ msgid ""
"Python was installed for all users) and 'force' (meaning always prompt for "
"elevation)."
msgstr ""
"Depuis Python 2.6, *bdist_wininst* accepte une option :option:`!--user-"
"access-control`. Sa valeur par défaut est 'none' (Ce qui veut dire que aucun "
"UAC est fait), et les autres valeurs valides sont 'auto' (ce qui veut dire "
"qu'il faut demander une élévation de privilèges UAC si Python a été installé "
"pour tous les utilisateurs) et 'force' (Toujours demander une élévation de "
"privilèges)."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/extending.rst:5
msgid "Extending Distutils"
msgstr ""
msgstr "Extension de Distutils"
#: ../Doc/distutils/extending.rst:7
msgid ""
@ -29,6 +29,11 @@ msgid ""
"while replacements for existing commands may be made to modify details of "
"how the command operates on a package."
msgstr ""
"*Distutils* peut être étendu de multiples façons. La plupart des extensions "
"sont soit des nouvelles commandes soit des remplacements de commandes "
"existantes. De nouvelles commandes pourraient par exemple servir à "
"l'empaquetage pour des plateformes spécifiques tandis que des remplacements "
"peuvent modifier certains aspects des commandes existantes."
#: ../Doc/distutils/extending.rst:13
msgid ""
@ -37,6 +42,9 @@ msgid ""
"that should be copied into packages in addition to :file:`.py` files as a "
"convenience."
msgstr ""
"La plupart des extensions de *distutils* sont faites dans le script :file:"
"`setup.py`. La plupart ajoutent simplement quelques extensions de fichiers "
"qui devraient être copiés dans le paquet en plus des fichiers :file:`.py`."
#: ../Doc/distutils/extending.rst:18
msgid ""
@ -46,10 +54,16 @@ msgid ""
"indirectly, directly subclassing the command they are replacing. Commands "
"are required to derive from :class:`Command`."
msgstr ""
"La plupart des implémentations des commandes *distutils* sont des sous-"
"classes de :class:`distutils.cmd.Command`. Les nouvelles commandes peuvent "
"hériter directement de :class:`Command`, alors que les remplacements "
"dérivent souvent de :class:`Command` indirectement, directement sous-"
"classant la commande qu'ils remplacent. Les commandes doivent dériver de la "
"classe :class:`Command`."
#: ../Doc/distutils/extending.rst:33
msgid "Integrating new commands"
msgstr ""
msgstr "Intégrer de nouvelles commandes"
#: ../Doc/distutils/extending.rst:35
msgid ""
@ -58,6 +72,11 @@ msgid ""
"features in distutils itself, and wait for (and require) a version of Python "
"that provides that support. This is really hard for many reasons."
msgstr ""
"Il y a différentes façons dintégrer de nouvelles implémentations de "
"commandes dans *distutils*. La plus difficile est de faire pression pour "
"inclure une nouvelle fonctionnalité dans *distutils* même, et dattendre (et "
"demander) une version de Python l'implémentant. C'est très difficile pour "
"beaucoup de raisons."
#: ../Doc/distutils/extending.rst:40
msgid ""
@ -65,6 +84,10 @@ msgid ""
"include the new implementations with your :file:`setup.py` script, and cause "
"the :func:`distutils.core.setup` function use them::"
msgstr ""
"La plus commune, et possiblement la plus raisonnable pour la plupart des "
"cas, est d'inclure les nouvelles implémentations dans votre fichier :file:"
"`setup.py`, et de faire en sorte que la fonction :func:`distutils.core."
"setup` les utilise ::"
#: ../Doc/distutils/extending.rst:55
msgid ""
@ -72,6 +95,10 @@ msgid ""
"use a particular package, as everyone interested in the package will need to "
"have the new command implementation."
msgstr ""
"Cette approche est la plus valable si les nouvelles implémentations doivent "
"être utilisées pour utiliser un paquet particulier, vu que toutes les "
"personnes intéressées par le paquet devront avoir ces nouvelles "
"implémentations de commandes."
#: ../Doc/distutils/extending.rst:59
msgid ""
@ -90,6 +117,23 @@ msgid ""
"it to an empty string on the command line causes the default to be used. "
"This should never be set in a configuration file provided with a package."
msgstr ""
"Depuis Python 2.4, une troisième option est disponible, prévue pour "
"permettre d'ajouter de nouvelles commandes compatibles avec le script "
"existant :file:`setup.py` sans avoir besoin de modifier l'installation "
"Python. C'est fait pour que les extensions tierces puissent rester "
"compatibles avec d'autres systèmes d'empaquetage, mais les commandes peuvent "
"être utilisées pour tout ce que les commandes de *distutils* peuvent faire. "
"Une nouvelle option de configuration, ``command_packages`` (option shell :"
"option:`!--command-packages`), peut être utilisée pour spécifier des "
"recherches de paquets additionnels pour des modules qui implémentent des "
"commandes. Comme toutes les options *distutils*, cela peut être spécifié en "
"ligne de commande ou dans un fichier de configuration. Cette option peut "
"être fixée dans la section ``[global]`` d'un fichier de configuration, ou "
"avant n'importe quelle commande dans un shell. Si définie dans un fichier de "
"configuration, elle peut être écrasée depuis la ligne de commande. Mettre "
"une chaine de caractères vide en valeur de cette option forcera "
"l'utilisation de la valeur par défaut. Cela ne devrait jamais être fixé dans "
"un fichier de configuration donné avec un paquet."
#: ../Doc/distutils/extending.rst:74
msgid ""
@ -105,10 +149,23 @@ msgid ""
"could be implemented by the class :class:`distcmds.bdist_openpkg."
"bdist_openpkg` or :class:`buildcmds.bdist_openpkg.bdist_openpkg`."
msgstr ""
"Cette nouvelle option peut être utilisée pour ajouter n'importe quel nombre "
"de paquet à la liste des paquets recherchés pour les implémentations de "
"commandes ; plusieurs noms de paquets doivent être séparés par des virgules. "
"Quand non spécifié, la recherche est seulement faite dans le paquet :mod:"
"`distutils.command`. Cependant, lorsque :file:`setup.py` est lancé avec "
"l'option ``--command-packages distcmds,buildcmds``, les paquets :mod:"
"`distutils.command`, :mod:`distcmds`, et :mod:`buildcmds` seront cherchés "
"dans cet ordre. Il est attendu des nouvelles commandes dêtre implémentées "
"en modules du même nom que la commande en utilisant des classes partageant "
"le même nom. Comme dans l'exemple shell donné ci-dessus, la commande :"
"command:`bdist_openpkg` pourrait être implémentée avec la classe :class:"
"`distcmds.bdist_openpkg.bdist_openpkg` ou :class:`buildcmds.bdist_openpkg."
"bdist_openpkg`."
#: ../Doc/distutils/extending.rst:88
msgid "Adding new distribution types"
msgstr ""
msgstr "Ajout de nouveaux types de distribution"
#: ../Doc/distutils/extending.rst:90
msgid ""
@ -119,3 +176,9 @@ msgid ""
"file itself. In dry-run mode, pairs should still be added to represent what "
"would have been created."
msgstr ""
"Les commandes qui créent des distributions (fichiers dans le dossier :file:"
"`dist/`) doivent ajouter la paire ``(command, filename)`` à ``self."
"distribution.dist_files`` pour que :command:`upload` puisse publier sur "
"PyPI. Le nom de fichier (*filename*) dans la paire ne contiens pas de "
"chemin, juste le nom du fichier lui-même. En mode *dry-run*, les paires "
"doivent toujours être ajoutées pour représenter ce qui aurait été créé."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/introduction.rst:5
msgid "An Introduction to Distutils"
msgstr ""
msgstr "Introduction à Distutils"
#: ../Doc/distutils/introduction.rst:7
msgid ""
@ -28,10 +28,14 @@ msgid ""
"information on installing Python modules, you should refer to the :ref:"
"`install-index` chapter."
msgstr ""
"Ce document traite de l'utilisation de Distutils pour distribuer des modules "
"Python, en se concentrant sur le rôle de développeur/distributeur : si vous "
"cherchez des informations sur l'installation de modules Python, vous devriez "
"vous référer au chapitre :ref:`install-index`."
#: ../Doc/distutils/introduction.rst:16
msgid "Concepts & Terminology"
msgstr ""
msgstr "Concepts et Terminologie"
#: ../Doc/distutils/introduction.rst:18
msgid ""
@ -40,26 +44,30 @@ msgid ""
"responsibilities (apart from writing solid, well-documented and well-tested "
"code, of course!) are:"
msgstr ""
"Utiliser Distuils est assez simple, à la fois pour les développeurs de "
"module et pour les utilisateurs/administrateurs qui installent des modules "
"tiers. En tant que développeur, vos responsabilités (en plus d'écrire du "
"code solide, bien documenté et bien testé, bien entendu !) sont :"
#: ../Doc/distutils/introduction.rst:23
msgid "write a setup script (:file:`setup.py` by convention)"
msgstr ""
msgstr "écrire un script d'installation (:file:`setup.py` par convention) ;"
#: ../Doc/distutils/introduction.rst:25
msgid "(optional) write a setup configuration file"
msgstr ""
msgstr "(optionnel) écrire un fichier de configuration pour l'installation ;"
#: ../Doc/distutils/introduction.rst:27
msgid "create a source distribution"
msgstr ""
msgstr "créer une distribution source ;"
#: ../Doc/distutils/introduction.rst:29
msgid "(optional) create one or more built (binary) distributions"
msgstr ""
msgstr "(optionnel) créer une ou plusieurs distributions compilées (binaires)."
#: ../Doc/distutils/introduction.rst:31
msgid "Each of these tasks is covered in this document."
msgstr ""
msgstr "Chacune de ces tâches est couverte dans ce document."
#: ../Doc/distutils/introduction.rst:33
msgid ""
@ -73,6 +81,16 @@ msgid ""
"module distributions in the most natural way for their platform, without "
"having to run a single setup script or compile a line of code."
msgstr ""
"Tous les développeurs de modules n'ont pas accès à une multitude de "
"plateformes, donc on ne peut pas exiger d'eux qu'ils créent une multitude de "
"distributions compilées. On s'attend à ce que certains intermédiaires, "
"appelés *packagers*, prennent en charge ce besoin. Les packagers vont "
"prendre les sources des distributions publiées par les développeurs de "
"modules, les construire sur on ou plusieurs plateformes, et publier les "
"distributions compilées résultantes. Ainsi, les utilisateurs sur les "
"plateformes les plus populaires vont pouvoir installer la plupart des "
"modules Python de la façon la plus naturelle qui soit pour leur plateforme, "
"sans avoir à exécuter de script ou à compiler du code."
#: ../Doc/distutils/introduction.rst:47
msgid "A Simple Example"
@ -87,22 +105,33 @@ msgid ""
"script may be run multiple times in the course of building and installing "
"your module distribution."
msgstr ""
"Le script d'installation est habituellement assez simple, même s'il n'y a "
"pas de limite à ce qu'il peut faire (il est écrit en Python, n'est-ce "
"pas ?). Veillez d'ailleurs à ne pas surcharger ce script avec des opérations "
"coûteuses car, contrairement aux scripts de configuration façon Autoconf, le "
"script d'installation peut être amené à être exécuté plusieurs fois au cours "
"de la compilation et de l'installation du module. "
#: ../Doc/distutils/introduction.rst:56
msgid ""
"If all you want to do is distribute a module called :mod:`foo`, contained in "
"a file :file:`foo.py`, then your setup script can be as simple as this::"
msgstr ""
"Si tout ce que vous voulez est de distribuer un module appelé :mod:`foo`, "
"contenu dans un fichier :file:`foo.py`, alors votre script d'installation "
"peut se résumer à :"
#: ../Doc/distutils/introduction.rst:65
msgid "Some observations:"
msgstr ""
msgstr "Quelques observations :"
#: ../Doc/distutils/introduction.rst:67
msgid ""
"most information that you supply to the Distutils is supplied as keyword "
"arguments to the :func:`setup` function"
msgstr ""
"la plupart des informations que vous fournissez à Distutils sont fournies en "
"tant que qu'arguments nommés à la fonction :func:`setup`;"
#: ../Doc/distutils/introduction.rst:70
msgid ""
@ -110,12 +139,17 @@ msgid ""
"version number) and information about what's in the package (a list of pure "
"Python modules, in this case)"
msgstr ""
"ces arguments nommés tombent dans deux catégories : métadonnées du paquet "
"(nom, numéro de version) et des informations sur le contenu du paquet paquet "
"(une liste de purs modules Python, dans ce cas) ; "
#: ../Doc/distutils/introduction.rst:74
msgid ""
"modules are specified by module name, not filename (the same will hold true "
"for packages and extensions)"
msgstr ""
"les modules sont listés par nom de module, plutôt que par nom de fichier (le "
"cas est similaire pour les paquets et extensions) ;"
#: ../Doc/distutils/introduction.rst:77
msgid ""
@ -123,6 +157,9 @@ msgid ""
"name, email address and a URL for the project (see section :ref:`setup-"
"script` for an example)"
msgstr ""
"il est recommandé de fournir un minimum de métadonnées, en particulier votre "
"nom, une adresse de courriel et une URL pour le projet (voir section :ref:"
"`setup-script` pour un exemple)."
#: ../Doc/distutils/introduction.rst:81
msgid ""
@ -130,12 +167,17 @@ msgid ""
"script, :file:`setup.py`, containing the above code, and run this command "
"from a terminal::"
msgstr ""
"Pour créer une distribution source pour ce module, il faut créer un script "
"d'installation, :file:`setup.py`, contenant le code ci-dessus, et exécuter "
"cette commande depuis un terminal :"
#: ../Doc/distutils/introduction.rst:87
msgid ""
"For Windows, open a command prompt window (:menuselection:`Start --> "
"Accessories`) and change the command to::"
msgstr ""
"Pour Windows, ouvrez une invite de commande (:menuselection:`Démarrer --> "
"Accessoires`) et changez la commande en :"
#: ../Doc/distutils/introduction.rst:92
msgid ""
@ -144,6 +186,11 @@ msgid ""
"module :file:`foo.py`. The archive file will be named :file:`foo-1.0.tar.gz` "
"(or :file:`.zip`), and will unpack into a directory :file:`foo-1.0`."
msgstr ""
":command:`sdist` va créer un fichier d'archive (p. ex. une archive *tar* sur "
"Unix, un fichier ZIP sous Windows) contenant votre script d'installation :"
"file:`setup.py`, et votre module :file:`foo.py`. Le fichier d'archive va "
"être nommé :file:`foo-1.0.tar.gz` (ou :file:`.zip`), et va se décompresser "
"dans un répertoire :file:`foo-1.0`."
#: ../Doc/distutils/introduction.rst:97
msgid ""
@ -157,6 +204,8 @@ msgid ""
"which will ultimately copy :file:`foo.py` to the appropriate directory for "
"third-party modules in their Python installation."
msgstr ""
"ce qui va finalement copier :file:`foo.py` dans le répertoire approprié pour "
"un module tiers dans son installation Python."
#: ../Doc/distutils/introduction.rst:106
msgid ""
@ -167,6 +216,13 @@ msgid ""
"while :command:`install` is more often for installers (although most "
"developers will want to install their own code occasionally)."
msgstr ""
"Ce simple exemple démontre des concepts fondamentaux de Distutils, "
"Premièrement, les développeurs et installeurs ont la même interface "
"utilisateur basique, p. ex. le script d'installation. La différence est "
"quelle *commande* Distutils ils utilisent : la commande :command:`sdist` est "
"quasiment exclusivement pour les développeurs de modules Python, tandis que :"
"command:`install` est plus souvent pour les installeurs (bien que la plupart "
"des développeurs vont vouloir installer leur code occasionnellement)."
#: ../Doc/distutils/introduction.rst:113
msgid ""
@ -177,12 +233,21 @@ msgid ""
"distribution for this platform) with the :command:`bdist_wininst` command. "
"For example::"
msgstr ""
"Si vous voulez rendre les choses vraiment faciles pour vos utilisateurs, "
"vous pouvez créer on ou plusieurs distributions compilées pour eux. En "
"loccurrence, si vous tournez sous une machine Windows, et que vous voulez "
"rendre les choses faciles pour les autres utilisateurs Windows, vous pouvez "
"créer un installateur exécutable (le mode de distribution le plus approprié "
"pour cette plateforme) avec la commande :command:`bdist_wininst`. Par "
"exemple :"
#: ../Doc/distutils/introduction.rst:121
msgid ""
"will create an executable installer, :file:`foo-1.0.win32.exe`, in the "
"current directory."
msgstr ""
"va créer une installeur exécutable, :file:`foo-1.0.win32.exe`, dans le "
"répertoire courant."
#: ../Doc/distutils/introduction.rst:124
msgid ""
@ -191,6 +256,11 @@ msgid ""
"and HP-UX :program:`swinstall` (:command:`bdist_sdux`). For example, the "
"following command will create an RPM file called :file:`foo-1.0.noarch.rpm`::"
msgstr ""
"D'autres formats de distributions compilés utiles sont RPM, implémenté par "
"la commande :command:`bdist_rpm`, Solaris :program:`pkgtool` (:command:"
"`bdist_pkgtool`), et HP-UX :program:`swinstall` (:command:`bdist_sdux`). Par "
"exemple, la commande suivante va créer un fichier RPM appelé :file:`foo-1.0."
"noarch.rpm`::"
#: ../Doc/distutils/introduction.rst:132
msgid ""
@ -198,16 +268,21 @@ msgid ""
"therefore this has to be run on an RPM-based system such as Red Hat Linux, "
"SuSE Linux, or Mandrake Linux.)"
msgstr ""
"(La commande :command:`bdist_rpm` utilise l'exécutable :command:`rpm`, "
"cependant cela doit être exécuté sur un système basé sur RPM tel que Red Hat "
"Linux, SuSE Linux, or Mandrake Linux.)"
#: ../Doc/distutils/introduction.rst:136
msgid ""
"You can find out what distribution formats are available at any time by "
"running ::"
msgstr ""
"Vous pouvez trouver quelles sont les formats de distribution disponibles à "
"n'importe quel moment en exécutant :"
#: ../Doc/distutils/introduction.rst:145
msgid "General Python terminology"
msgstr ""
msgstr "Terminologie Python générale"
#: ../Doc/distutils/introduction.rst:147
msgid ""
@ -216,6 +291,10 @@ msgid ""
"everyone is operating from a common starting point, we offer the following "
"glossary of common Python terms:"
msgstr ""
"Si vous lisez ce document, vous avez probablement une bonne idée de ce que "
"sont les modules, extensions, etc. Néanmoins, juste pour être sur que tout "
"le monde opère depuis un point d'entrée commun, nous reprécisons le "
"glossaire suivant des termes Python communs :"
#: ../Doc/distutils/introduction.rst:155
msgid "module"
@ -227,10 +306,13 @@ msgid ""
"some other code. Three types of modules concern us here: pure Python "
"modules, extension modules, and packages."
msgstr ""
"unité de base de la réutilisabilité en Python : un bloc de code importé par "
"un autre code. Trois types de modules nous concernent ici : les purs modules "
"Python, les modules d'extension, et les packages."
#: ../Doc/distutils/introduction.rst:160
msgid "pure Python module"
msgstr ""
msgstr "pur module Python"
#: ../Doc/distutils/introduction.rst:158
msgid ""
@ -238,6 +320,8 @@ msgid ""
"possibly associated :file:`.pyc` files). Sometimes referred to as a \"pure "
"module.\""
msgstr ""
"un module écrit en Python et contenu dans un seul fichier :file:`.py` (et "
"possiblement un fichier :file:`.pyc` associé). Parfois appelé \"pur module.\""
#: ../Doc/distutils/introduction.rst:168
msgid "extension module"
@ -253,6 +337,13 @@ msgid ""
"(Note that currently, the Distutils only handles C/C++ extensions for "
"Python.)"
msgstr ""
"un module écrit dans un langage de bas niveau de l'implémentation Python: C/C"
"++ pour Python, Java pour Jython. Typiquement contenu dans un unique fichier "
"pré-compilé chargeable, p. ex. un fichier objet partagé (:file:`.so`) pour "
"des extensions Python sous Unix, un fichier DLL (étant donné l'extension :"
"file:`.pyd`) pour les extensions Python sous Windows, ou un fichier de "
"classe Java pour les extensions Jython (notez qu'actuellement, Distutils "
"gère seulement les extensions Python C/C++)."
#: ../Doc/distutils/introduction.rst:173
msgid "package"
@ -264,6 +355,9 @@ msgid ""
"the filesystem and distinguished from other directories by the presence of a "
"file :file:`__init__.py`."
msgstr ""
"un module qui contient d'autres modules ; très souvent contenu dans un "
"répertoire du système de fichier et qui se distingue des autres répertoires "
"par la présence d'un fichier :file:`__init__.py`."
#: ../Doc/distutils/introduction.rst:183
msgid "root package"
@ -279,20 +373,30 @@ msgid ""
"package can be found in many directories: in fact, every directory listed in "
"``sys.path`` contributes modules to the root package."
msgstr ""
"la racine de la hiérarchie de paquets. (Ce n'est pas vraiment un paquet, "
"puisqu'il n'a pas un fichier :file:`__init__.py`. Mais nous devons bien le "
"nommer.) La grande majorité de la bibliothèque standard est dans le package "
"racine, comme le sont certains petits, des packages tiers autonomes qui "
"n'appartiennent pas à une un module plus grand. Contrairement aux packages "
"réguliers, les modules dans le package racine peuvent être trouvés dans "
"plusieurs répertoires : en effet, tous les répertoires listés ``sys.path`` "
"contribuent à faire partie du package racine."
#: ../Doc/distutils/introduction.rst:188
msgid "Distutils-specific terminology"
msgstr ""
msgstr "Terminologie spécifique à Distutils"
#: ../Doc/distutils/introduction.rst:190
msgid ""
"The following terms apply more specifically to the domain of distributing "
"Python modules using the Distutils:"
msgstr ""
"Les termes suivant s'appliquent plus spécifiquement au domaine de la "
"distribution de modules Python en utilisant les Distutils :"
#: ../Doc/distutils/introduction.rst:199
msgid "module distribution"
msgstr ""
msgstr "module de distribution"
#: ../Doc/distutils/introduction.rst:194
msgid ""
@ -302,30 +406,40 @@ msgid ""
"called a *package*, except that term is already taken in the Python context: "
"a single module distribution may contain zero, one, or many Python packages.)"
msgstr ""
"une collection de modules Python distribués ensemble, comme une unique "
"ressource téléchargeable et ayant pour but d'être installé *en bloc*. Des "
"exemples de modules distribués bien connus sont *NumPy*, *SciPy*, *Pillow*, "
"ou *mxBase*. (On pourrait les appeler des *packages*, malgré que le terme "
"soit déjà pris dans le contexte Python : une distribution de module simple "
"pourrait contenir zéro, on ou plusieurs packages Python"
#: ../Doc/distutils/introduction.rst:203
msgid "pure module distribution"
msgstr ""
msgstr "distribution de modules purs"
#: ../Doc/distutils/introduction.rst:202
msgid ""
"a module distribution that contains only pure Python modules and packages. "
"Sometimes referred to as a \"pure distribution.\""
msgstr ""
"une distribution de module qui contient seulement des modules purs et "
"packages Python. Parfois appelée « distribution pure »."
#: ../Doc/distutils/introduction.rst:207
msgid "non-pure module distribution"
msgstr ""
msgstr "distribution de module non pur"
#: ../Doc/distutils/introduction.rst:206
msgid ""
"a module distribution that contains at least one extension module. "
"Sometimes referred to as a \"non-pure distribution.\""
msgstr ""
"une distribution de module qui contient au moins un module d'extension. "
"Parfois appelée « distribution non-pure »."
#: ../Doc/distutils/introduction.rst:211
msgid "distribution root"
msgstr ""
msgstr "distribution racine"
#: ../Doc/distutils/introduction.rst:210
msgid ""
@ -333,3 +447,6 @@ msgid ""
"directory where :file:`setup.py` exists. Generally :file:`setup.py` will "
"be run from this directory."
msgstr ""
"le répertoire de plus haut niveau de votre arborescence (ou distribution "
"source) ; le répertoire ou :file:`setup.py` existe. Généralement :file:"
"`setup.py` est exécuté depuis ce répertoire."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/packageindex.rst:9
msgid "The Python Package Index (PyPI)"
msgstr ""
msgstr "L'index de paquets Python (*Python Package Index* : PyPI)"
#: ../Doc/distutils/packageindex.rst:11
msgid ""

File diff suppressed because it is too large Load Diff

View File

@ -70,7 +70,7 @@ msgstr ""
"Dans ce cas, le nom de la fonction d'initialisation est "
"``PyInitU_<modulename>``, où ``modulename`` est encodé avec l'encodage "
"*punyencode* de Python, dont les tirets sont remplacés par des tirets-bas. "
"En Python ça donne : ::"
"En Python ça donne ::"
#: ../Doc/extending/building.rst:39
msgid ""
@ -112,7 +112,7 @@ msgstr ""
#: ../Doc/extending/building.rst:73
msgid "With this :file:`setup.py`, and a file :file:`demo.c`, running ::"
msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer : ::"
msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer ::"
#: ../Doc/extending/building.rst:77
msgid ""
@ -188,7 +188,7 @@ msgstr ""
"paquets. En ce qui concerne l'extension, sont définis quelques macros "
"préprocesseur, dossiers pour les en-têtes et bibliothèques. En fonction du "
"compilateur, *distutils* peut donner ces informations de manière différente. "
"Par exemple, sur Unix, ça peut ressembler aux commandes : ::"
"Par exemple, sur Unix, ça peut ressembler aux commandes ::"
#: ../Doc/extending/building.rst:139
msgid ""
@ -215,14 +215,14 @@ msgid ""
"End-users will typically want to install the module, they do so by running ::"
msgstr ""
"Typiquement, les utilisateurs vont vouloir installer le module, ils le font "
"en exécutant : ::"
"en exécutant ::"
#: ../Doc/extending/building.rst:154
msgid ""
"Module maintainers should produce source packages; to do so, they run ::"
msgstr ""
"Les mainteneurs de modules voudront produire des paquets source, pour ce "
"faire ils exécuteront : ::"
"faire ils exécuteront ::"
#: ../Doc/extending/building.rst:158
msgid ""

View File

@ -33,13 +33,13 @@ msgid ""
"writing some scripts in Python. You can also use it yourself if some of the "
"functionality can be written in Python more easily."
msgstr ""
"Les chapitres précédents couvraient l'extension de Python, c'est à dire, "
"Les chapitres précédents couvraient l'extension de Python, c'est-à-dire, "
"comment enrichir une fonctionnalité de Python en y attachant une "
"bibliothèque de fonctions C. C'est aussi possible dans l'autre sens: "
"bibliothèque de fonctions C. C'est aussi possible dans l'autre sens : "
"enrichir vos applications C/C++ en y intégrant Python. Intégrer Python vous "
"permet d'implémenter certaines fonctionnalités de vos applications en Python "
"plutôt qu'en C ou C++. C'est utile dans de nombreux cas, un exemple serait "
"de permettre aux utilisateurs d'adapter une application à leur besoins en y "
"de permettre aux utilisateurs d'adapter une application à leurs besoins en y "
"écrivant des scripts Python. Vous pouvez aussi l'utiliser vous même si "
"certaines fonctionnalités peuvent être rédigées plus facilement en Python."
@ -81,9 +81,9 @@ msgid ""
"level operations described in the previous chapters to construct and use "
"Python objects."
msgstr ""
"Il existe différents moyens d'appeler l'interpréteur: vous pouvez donner une "
"chaîne contenant des instructions Python à :c:func:`PyRun_SimpleString`, ou "
"vous pouvez donner un pointeur de fichier *stdio* et un nom de fichier "
"Il existe différents moyens d'appeler l'interpréteur : vous pouvez donner "
"une chaîne contenant des instructions Python à :c:func:`PyRun_SimpleString`, "
"ou vous pouvez donner un pointeur de fichier *stdio* et un nom de fichier "
"(juste pour nommer les messages d'erreur) à :c:func:`PyRunSimpleFile`. Vous "
"pouvez aussi appeler les API de bas niveau décrites dans les chapitres "
"précédents pour construire et utiliser des objets Python."
@ -144,7 +144,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:92
msgid "Beyond Very High Level Embedding: An overview"
msgstr "Au delà de l'intégration de haut niveau: survol"
msgstr "Au-delà de l'intégration de haut niveau : survol"
#: ../Doc/extending/embedding.rst:94
msgid ""
@ -170,7 +170,7 @@ msgstr ""
"Il est à souligner qu'étendre ou intégrer Python revient à la louche au "
"même, en dépit de la différence d'intention. La plupart des sujets parcourus "
"dans les chapitres précédents sont toujours valides. Pour le prouver, "
"regardez ce qu'un code d'extension de Python vers C fait réellement :"
"regardez ce qu'un code d'extension de Python vers C fait réellement :"
#: ../Doc/extending/embedding.rst:104
msgid "Convert data values from Python to C,"
@ -186,7 +186,7 @@ msgstr "Convertir les résultats de l'appel à la fonction C pour Python."
#: ../Doc/extending/embedding.rst:110
msgid "When embedding Python, the interface code does:"
msgstr "Lors de l'intégration de Python, le code de l'interface fait :"
msgstr "Lors de l'intégration de Python, le code de l'interface fait :"
#: ../Doc/extending/embedding.rst:112
msgid "Convert data values from C to Python,"
@ -212,7 +212,7 @@ msgid ""
"you call a C routine, when embedding, you call a Python routine."
msgstr ""
"Tel que vous le voyez, les conversions sont simplement inversées pour "
"s'adapter au différentes directions de transfert inter-langage. La seule "
"s'adapter aux différentes directions de transfert inter-langage. La seule "
"différence est la fonction que vous appelez entre les deux conversions de "
"données. Lors de l'extension, vous appelez une fonction C, lors de "
"l'intégration vous appelez une fonction Python."
@ -248,7 +248,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:140
msgid "The code to run a function defined in a Python script is:"
msgstr "Le code pour appeler une fonction définie dans un script Python est :"
msgstr "Le code pour appeler une fonction définie dans un script Python est :"
#: ../Doc/extending/embedding.rst:145
msgid ""
@ -262,11 +262,11 @@ msgstr ""
"fonction dont le nom est dans ``argv[2]``. Ses arguments entiers sont les "
"autres valeurs de ``argv``. Si vous :ref:`compilez et liez <compiling>` ce "
"programme (appelons l'exécutable :program:`call`), et l'appelez pour "
"exécuter un script Python, tel que :"
"exécuter un script Python, tel que :"
#: ../Doc/extending/embedding.rst:160
msgid "then the result should be:"
msgstr "alors, le résultat sera:"
msgstr "alors, le résultat sera :"
#: ../Doc/extending/embedding.rst:168
msgid ""
@ -277,7 +277,7 @@ msgstr ""
"Bien que le programme soit plutôt gros pour ses fonctionnalités, la plupart "
"du code n'est que conversion de données entre Python et C, aussi que pour "
"rapporter les erreurs. La partie intéressante, qui concerne l'intégration de "
"Python débute par : ::"
"Python débute par ::"
#: ../Doc/extending/embedding.rst:177
msgid ""
@ -288,8 +288,8 @@ msgid ""
msgstr ""
"Après avoir initialisé l'interpréteur, le script est chargé en utilisant :c:"
"func:`PyImport_Import`. Cette fonction prend une chaîne Python pour "
"argument, elle même construite en utilisant la fonction de conversion :c:"
"func:`PyUnicode_FromString`."
"argument, elle-même construite en utilisant la fonction de conversion :c:"
"func:`PyUnicode_FromString`. ::"
#: ../Doc/extending/embedding.rst:190
msgid ""
@ -303,7 +303,7 @@ msgstr ""
"`PyObject_GetAttrString`. Si le nom existe, et que l'objet récupéré peut "
"être appelé, vous pouvez présumer sans risque que c'est une fonction. Le "
"programme continue, classiquement, par la construction de n-uplet "
"d'arguments. L'appel à la fonction Python est alors effectué avec : ::"
"d'arguments. L'appel à la fonction Python est alors effectué avec ::"
#: ../Doc/extending/embedding.rst:198
msgid ""
@ -338,7 +338,7 @@ msgstr ""
"démarre l'interpréteur Python, au lieu de cela, voyez l'application comme un "
"ensemble de fonctions, et rédigez un peu de code pour exposer ces fonctions "
"à Python, tout comme vous écririez une extension Python normale. Par "
"exemple : ::"
"exemple ::"
#: ../Doc/extending/embedding.rst:245
msgid ""
@ -364,7 +364,7 @@ msgid ""
"In a real application, the methods will expose an API of the application to "
"Python."
msgstr ""
"Dans un cas réel, les méthodes exposeraient une API de l'application a "
"Dans un cas réel, les méthodes exposeraient une API de l'application à "
"Python."
#: ../Doc/extending/embedding.rst:270
@ -409,10 +409,10 @@ msgid ""
"available). This script has several options, of which the following will be "
"directly useful to you:"
msgstr ""
"Pour trouver les bonnes option de compilateur et *linker*, vous pouvez "
"Pour trouver les bonnes options de compilateur et *linker*, vous pouvez "
"exécuter le script :file:`python(X.Y)-config` généré durant l'installation "
"(un script :file:`python3-config` peut aussi être disponible). Ce script a "
"quelques options, celles-ci vous seront utiles :"
"quelques options, celles-ci vous seront utiles :"
#: ../Doc/extending/embedding.rst:295
msgid ""
@ -420,7 +420,7 @@ msgid ""
"compiling:"
msgstr ""
"``pythonX.Y-config --cflags`` vous donnera les options recommandées pour "
"compiler:"
"compiler :"
#: ../Doc/extending/embedding.rst:303
msgid ""
@ -428,7 +428,7 @@ msgid ""
"linking:"
msgstr ""
"``pythonX.Y-config --ldflags`` vous donnera les drapeaux recommandés lors de "
"l'édition de lien:"
"l'édition de lien :"
#: ../Doc/extending/embedding.rst:312
msgid ""

View File

@ -423,8 +423,7 @@ msgid ""
"you usually declare a static object variable at the beginning of your file::"
msgstr ""
"Vous pouvez également créer une exception spécifique à votre module. Pour "
"cela, déclarez simplement une variable statique au début de votre "
"fichier : ::"
"cela, déclarez simplement une variable statique au début de votre fichier ::"
#: ../Doc/extending/extending.rst:206
msgid ""
@ -564,13 +563,16 @@ msgstr ""
#: ../Doc/extending/extending.rst:307
msgid "The Module's Method Table and Initialization Function"
msgstr ""
msgstr "La fonction d'initialisation et le tableau des méthodes du module"
#: ../Doc/extending/extending.rst:309
msgid ""
"I promised to show how :c:func:`spam_system` is called from Python programs. "
"First, we need to list its name and address in a \"method table\"::"
msgstr ""
"Nous avons promis de montrer comment :c:func:`spam_system` est appelée "
"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et "
"son adresse dans un « tableau des méthodes » ::"
#: ../Doc/extending/extending.rst:320
msgid ""
@ -580,6 +582,11 @@ msgid ""
"value of ``0`` means that an obsolete variant of :c:func:`PyArg_ParseTuple` "
"is used."
msgstr ""
"Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de "
"convention à utiliser pour la fonction C, à destination de l'interpréteur. "
"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | "
"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:"
"func:`PyArg_ParseTuple` est utilisée."
#: ../Doc/extending/extending.rst:325
msgid ""
@ -587,6 +594,10 @@ msgid ""
"level parameters to be passed in as a tuple acceptable for parsing via :c:"
"func:`PyArg_ParseTuple`; more information on this function is provided below."
msgstr ""
"Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les "
"paramètres Python soient passés comme un n-uplet que l'on peut analyser "
"*via* :c:func:`PyArg_ParseTuple` ; des informations supplémentaires sont "
"fournies plus bas."
#: ../Doc/extending/extending.rst:329
msgid ""
@ -596,11 +607,18 @@ msgid ""
"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments "
"to such a function."
msgstr ""
"Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si "
"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, "
"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un "
"dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` "
"pour analyser les arguments d'une telle fonction."
#: ../Doc/extending/extending.rst:335
msgid ""
"The method table must be referenced in the module definition structure::"
msgstr ""
"Le tableau des méthodes doit être référencé dans la structure de définition "
"du module ::"
#: ../Doc/extending/extending.rst:346
msgid ""
@ -609,6 +627,10 @@ msgid ""
"`PyInit_name`, where *name* is the name of the module, and should be the "
"only non-\\ ``static`` item defined in the module file::"
msgstr ""
"Cette structure, à son tour, doit être transmise à l'interpréteur dans la "
"fonction d'initialisation du module. La fonction d'initialisation doit être "
"nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le "
"seul élément non ``static`` défini dans le fichier du module ::"
#: ../Doc/extending/extending.rst:357
msgid ""
@ -616,6 +638,10 @@ msgid ""
"type, declares any special linkage declarations required by the platform, "
"and for C++ declares the function as ``extern \"C\"``."
msgstr ""
"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de "
"type ``PyObject *``, et déclare également toute déclaration de liaison "
"spéciale requise par la plate-forme, et pour le C++ déclare la fonction "
"comme un C ``extern``."
#: ../Doc/extending/extending.rst:361
msgid ""
@ -638,6 +664,11 @@ msgid ""
"table. To add the module to the initialization table, use :c:func:"
"`PyImport_AppendInittab`, optionally followed by an import of the module::"
msgstr ""
"Lors de l'intégration de Python, la fonction :c:func:`PyInit_spam` n'est pas "
"appelée automatiquement, sauf s'il y a une entrée dans la table :c:data:"
"`PyImport_Inittab`. Pour ajouter le module à la table d'initialisation, "
"utilisez :c:func:`PyImport_AppendInittab`, suivi éventuellement d'une "
"importation du module ::"
#: ../Doc/extending/extending.rst:408
msgid ""
@ -647,6 +678,12 @@ msgid ""
"extension modules. Extension module authors should exercise caution when "
"initializing internal data structures."
msgstr ""
"Supprimer des entrées de ``sys.modules`` ou importer des modules compilés "
"dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:"
"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes "
"pour certains modules d'extension. Les auteurs de modules d'extension "
"doivent faire preuve de prudence lorsqu'ils initialisent des structures de "
"données internes."
#: ../Doc/extending/extending.rst:414
msgid ""
@ -654,6 +691,9 @@ msgid ""
"distribution as :file:`Modules/xxmodule.c`. This file may be used as a "
"template or simply read as an example."
msgstr ""
"Un exemple de module plus substantiel est inclus dans la distribution des "
"sources Python sous le nom :file:`Modules/xxmodule.c`. Ce fichier peut être "
"utilisé comme modèle ou simplement lu comme exemple."
#: ../Doc/extending/extending.rst:420
msgid ""
@ -662,10 +702,15 @@ msgid ""
"``PyInit_spam``, and creation of the module is left to the import machinery. "
"For details on multi-phase initialization, see :PEP:`489`."
msgstr ""
"Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une "
"*initialisation multi-phase* (nouveau en Python 3.5), où une structure "
"*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du "
"module est laissée au mécanisme d'importation. Pour plus de détails sur "
"l'initialisation multi-phase, voir :PEP:`489`."
#: ../Doc/extending/extending.rst:429
msgid "Compilation and Linkage"
msgstr ""
msgstr "Compilation et liaison"
#: ../Doc/extending/extending.rst:431
msgid ""
@ -704,7 +749,7 @@ msgstr ""
#: ../Doc/extending/extending.rst:466
msgid "Calling Python Functions from C"
msgstr ""
msgstr "Appeler des fonctions Python en C"
#: ../Doc/extending/extending.rst:468
msgid ""
@ -743,6 +788,10 @@ msgid ""
"c:func:`PyArg_ParseTuple` function and its arguments are documented in "
"section :ref:`parsetuple`."
msgstr ""
"Cette fonction doit être déclarée en utilisant le drapeau :const:"
"`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La "
"fonction :c:func:`PyArg_ParseTuple` et ses arguments sont documentés dans la "
"section :ref:`parsetuple`."
#: ../Doc/extending/extending.rst:517
msgid ""
@ -804,6 +853,16 @@ msgid ""
"simplest way to do this is to call :c:func:`Py_BuildValue`. For example, if "
"you want to pass an integral event code, you might use the following code::"
msgstr ""
"Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez "
"peut-être aussi fournir une liste d'arguments à :c:func:"
"`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également "
"fournie par le programme Python, par l'intermédiaire de la même interface "
"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et "
"utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous "
"pouvez avoir à construire un nouveau n-uplet à passer comme liste "
"d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:"
"`Py_BuildValue`. Par exemple, si vous voulez passer un code d'événement "
"intégral, vous pouvez utiliser le code suivant ::"
#: ../Doc/extending/extending.rst:588
msgid ""
@ -819,14 +878,18 @@ msgid ""
"`PyObject_Call`, which supports arguments and keyword arguments. As in the "
"above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::"
msgstr ""
"Vous pouvez également appeler une fonction avec des arguments nommés en "
"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les "
"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:"
"`Py_BuildValue` pour construire le dictionnaire. ::"
#: ../Doc/extending/extending.rst:610
msgid "Extracting Parameters in Extension Functions"
msgstr ""
msgstr "Extraire des paramètres dans des fonctions d'extension"
#: ../Doc/extending/extending.rst:614
msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::"
msgstr ""
msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::"
#: ../Doc/extending/extending.rst:618
msgid ""
@ -856,16 +919,17 @@ msgstr ""
#: ../Doc/extending/extending.rst:632
msgid "Some example calls::"
msgstr ""
msgstr "Quelques exemples d'appels ::"
#: ../Doc/extending/extending.rst:702
msgid "Keyword Parameters for Extension Functions"
msgstr ""
msgstr "Paramètres nommés pour des fonctions d'extension"
#: ../Doc/extending/extending.rst:706
msgid ""
"The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::"
msgstr ""
"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::"
#: ../Doc/extending/extending.rst:711
msgid ""
@ -884,22 +948,29 @@ msgid ""
"parameters passed in which are not present in the *kwlist* will cause :exc:"
"`TypeError` to be raised."
msgstr ""
"Les n-uplets imbriqués ne peuvent pas être traités lorsqu'on utilise des "
"arguments de type mot-clé ! Ceux-ci doivent apparaître dans dans *kwlist*, "
"dans le cas contraire une exception :exc:`TypeError` est levée."
#: ../Doc/extending/extending.rst:727
msgid ""
"Here is an example module which uses keywords, based on an example by Geoff "
"Philbrick (philbrick@hks.com)::"
msgstr ""
"Voici un exemple de module qui utilise des mots-clés, basé sur un exemple de "
"*Geoff Philbrick* (philbrick@hks.com) ::"
#: ../Doc/extending/extending.rst:781
msgid "Building Arbitrary Values"
msgstr ""
msgstr "Créer des valeurs arbitraires"
#: ../Doc/extending/extending.rst:783
msgid ""
"This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is "
"declared as follows::"
msgstr ""
"Cette fonction est le complément de :c:func:`PyArg_ParseTuple`. Elle est "
"déclarée comme suit ::"
#: ../Doc/extending/extending.rst:788
msgid ""
@ -908,6 +979,11 @@ msgid ""
"not output) must not be pointers, just values. It returns a new Python "
"object, suitable for returning from a C function called from Python."
msgstr ""
"Il reconnaît un ensemble d'unités de format similaires à celles reconnues "
"par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en "
"entrée de fonction, et non de la sortie) ne doivent pas être des pointeurs, "
"mais juste des valeurs. Il renvoie un nouvel objet Python, adapté pour être "
"renvoyé par une fonction C appelée depuis Python."
#: ../Doc/extending/extending.rst:793
msgid ""
@ -925,10 +1001,11 @@ msgstr ""
msgid ""
"Examples (to the left the call, to the right the resulting Python value):"
msgstr ""
"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :"
#: ../Doc/extending/extending.rst:827
msgid "Reference Counts"
msgstr ""
msgstr "Compteurs de références"
#: ../Doc/extending/extending.rst:829
msgid ""
@ -938,6 +1015,12 @@ msgid ""
"``new`` and ``delete`` are used with essentially the same meaning and we'll "
"restrict the following discussion to the C case."
msgstr ""
"Dans les langages comme le C ou le C++, le développeur est responsable de "
"l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En "
"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. "
"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec "
"essentiellement la même signification et nous limiterons la discussion "
"suivante au cas du C."
#: ../Doc/extending/extending.rst:835
msgid ""
@ -981,6 +1064,14 @@ msgid ""
"reference to it is deleted. When the counter reaches zero, the last "
"reference to the object has been deleted and the object is freed."
msgstr ""
"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:"
"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi "
"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:"
"`reference counting`. Le principe est simple : chaque objet contient un "
"compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée "
"quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est "
"supprimée. Lorsque le compteur atteint zéro, la dernière référence à l'objet "
"a été supprimée et l'objet est libéré."
#: ../Doc/extending/extending.rst:867
msgid ""
@ -997,6 +1088,19 @@ msgid ""
"garbage collector will be available for C. Until then, we'll have to live "
"with reference counts."
msgstr ""
"Une stratégie alternative est appelée :dfn:`automatic garbage collection` "
"(ramasse-miettes). Parfois, le comptage des références est également appelé "
"stratégie de ramasse-miettes, d'où l'utilisation du terme \"automatique\" "
"pour distinguer les deux. Le grand avantage du ramasse-miettes est que "
"l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un "
"autre avantage important est l'amélioration de la vitesse ou de "
"l'utilisation de la mémoire, ce n'est cependant pas un fait avéré). "
"L'inconvénient est que pour C, il n'y a pas de ramasse-miettes portable "
"proprement-dit, alors que le comptage des références peut être implémenté de "
"façon portable (tant que les fonctions :c:func:`malloc` et :c:func:`free` "
"soient disponibles, ce que la norme C garantit). Peut-être qu'un jour un "
"ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous "
"devrons utiliser les compteurs des références."
#: ../Doc/extending/extending.rst:879
msgid ""
@ -1011,6 +1115,18 @@ msgid ""
"in a reference cycle, or referenced from the objects in the cycle, even "
"though there are no further references to the cycle itself."
msgstr ""
"Bien que Python utilise l'implémentation traditionnelle de comptage de "
"référence, il contient également un détecteur de cycles qui fonctionne pour "
"détecter les cycles de référence. Cela permet aux applications d'empêcher la "
"création de références circulaires directes ou indirectes ; ceci sont les "
"faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement le "
"comptage de référence. Les cycles de référence sont constitués d'objets qui "
"contiennent des références (éventuellement indirectes) à eux-mêmes, de sorte "
"que chaque objet du cycle a un comptage de référence qui n'est pas nul. Les "
"implémentations typiques de comptage de référence ne sont pas capables de "
"récupérer la mémoire appartenant à des objets dans un cycle de référence, ou "
"référencés à partir des objets dans le cycle, même s'il n'y a pas d'autres "
"références au cycle lui-même."
#: ../Doc/extending/extending.rst:890
msgid ""
@ -1026,7 +1142,7 @@ msgstr ""
#: ../Doc/extending/extending.rst:904
msgid "Reference Counting in Python"
msgstr ""
msgstr "Comptage de références en Python"
#: ../Doc/extending/extending.rst:906
msgid ""
@ -1038,6 +1154,13 @@ msgid ""
"this purpose (and others), every object also contains a pointer to its type "
"object."
msgstr ""
"Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent "
"l'incrémentation et la décrémentation du comptage de référence. :c:func:"
"`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour "
"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, "
"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type "
"objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient "
"également un pointeur vers son objet type."
#: ../Doc/extending/extending.rst:913
msgid ""
@ -1051,6 +1174,16 @@ msgid ""
"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned "
"reference creates a memory leak."
msgstr ""
"La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et "
"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne "
"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le "
"comptage de références d'un objet est maintenant défini comme étant le "
"nombre de références à cet objet. Le propriétaire d'une référence est "
"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus "
"nécessaire. La propriété d'une référence peut être transférée. Il y a trois "
"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :"
"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite "
"de mémoire."
#: ../Doc/extending/extending.rst:922
msgid ""
@ -1071,6 +1204,14 @@ msgid ""
"code a borrowed reference can be used after the owner from which it was "
"borrowed has in fact disposed of it."
msgstr ""
"L'avantage d'emprunter, plutôt qu'être propriétaire d'une référence est que "
"vous n'avez pas à vous soucier de disposer de la référence sur tous les "
"chemins possibles dans le code — en d'autres termes, avec une référence "
"empruntée, vous ne courez pas le risque de fuites lors d'une sortie "
"prématurée. L'inconvénient de l'emprunt par rapport à la possession est "
"qu'il existe certaines situations subtiles où, dans un code apparemment "
"correct, une référence empruntée peut être utilisée après que le "
"propriétaire auquel elle a été empruntée l'a en fait éliminée."
#: ../Doc/extending/extending.rst:936
msgid ""
@ -1083,7 +1224,7 @@ msgstr ""
#: ../Doc/extending/extending.rst:946
msgid "Ownership Rules"
msgstr ""
msgstr "Règles concernant la propriété de références"
#: ../Doc/extending/extending.rst:948
msgid ""
@ -1091,6 +1232,10 @@ msgid ""
"of the function's interface specification whether ownership is transferred "
"with the reference or not."
msgstr ""
"Chaque fois qu'une référence d'objet est passée à l'intérieur ou à "
"l'extérieur d'une fonction, elle fait partie de la spécification de "
"l'interface de la fonction, peu importe que la propriété soit transférée "
"avec la référence ou non."
#: ../Doc/extending/extending.rst:952
msgid ""
@ -1150,7 +1295,7 @@ msgstr ""
#: ../Doc/extending/extending.rst:993
msgid "Thin Ice"
msgstr ""
msgstr "Terrain dangereux"
#: ../Doc/extending/extending.rst:995
msgid ""
@ -1159,6 +1304,10 @@ msgid ""
"invocations of the interpreter, which can cause the owner of a reference to "
"dispose of it."
msgstr ""
"Il existe quelques situations où l'utilisation apparemment inoffensive d'une "
"référence empruntée peut entraîner des problèmes. Tous ces problèmes sont en "
"lien avec des invocations implicites de linterpréteur, et peuvent amener le "
"propriétaire d'une référence à s'en défaire."
#: ../Doc/extending/extending.rst:999
msgid ""
@ -1166,6 +1315,9 @@ msgid ""
"on an unrelated object while borrowing a reference to a list item. For "
"instance::"
msgstr ""
"Le premier cas, et le plus important à connaître, est celui de l'application "
"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une "
"référence à un élément de liste. Par exemple ::"
#: ../Doc/extending/extending.rst:1011
msgid ""
@ -1173,6 +1325,9 @@ msgid ""
"``list[1]`` with the value ``0``, and finally prints the borrowed reference. "
"Looks harmless, right? But it's not!"
msgstr ""
"Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace "
"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. "
"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !"
#: ../Doc/extending/extending.rst:1015
msgid ""
@ -1183,6 +1338,13 @@ msgid ""
"defined a :meth:`__del__` method. If this class instance has a reference "
"count of 1, disposing of it will call its :meth:`__del__` method."
msgstr ""
"Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède "
"des références à tous ses éléments, donc quand l'élément 1 est remplacé, "
"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que "
"l'élément 1 original était une instance d'une classe définie par "
"l'utilisateur, et supposons en outre que la classe définisse une méthode :"
"meth:`__del__`. Si l'instance de cette classe a un nombre des références de "
"1, sa destruction appellera sa méthode :meth:`__del__`."
#: ../Doc/extending/extending.rst:1022
msgid ""
@ -1194,6 +1356,13 @@ msgid ""
"this was the last reference to that object, it would free the memory "
"associated with it, thereby invalidating ``item``."
msgstr ""
"Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du "
"code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la "
"référence à ``item`` dans :c:func:`bug` ? Bien sûr ! En supposant que la "
"liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, "
"elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en "
"supposant que ce soit la dernière référence à cet objet, elle libérerait la "
"mémoire qui lui est associée, invalidant ainsi ``item``."
#: ../Doc/extending/extending.rst:1030
msgid ""
@ -1220,10 +1389,20 @@ msgid ""
"complete. Obviously, the following function has the same problem as the "
"previous one::"
msgstr ""
"Le deuxième cas de problèmes liés à une référence empruntée est une variante "
"impliquant des fils de discussion. Normalement, plusieurs threads dans "
"l'interpréteur Python ne peuvent pas se gêner mutuellement, car il existe un "
"verrou global protégeant tout l'espace objet de Python. Cependant, il est "
"possible de libérer temporairement ce verrou en utilisant la macro :c:macro:"
"`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:"
"`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels "
"d'entrées/sorties, afin de permettre aux autres threads d'utiliser le "
"processeur en attendant que les E/S soient terminées. Évidemment, la "
"fonction suivante a le même problème que la précédente ::"
#: ../Doc/extending/extending.rst:1071
msgid "NULL Pointers"
msgstr ""
msgstr "Pointeurs ``NULL``"
#: ../Doc/extending/extending.rst:1073
msgid ""
@ -1275,7 +1454,7 @@ msgstr ""
#: ../Doc/extending/extending.rst:1110
msgid "Writing Extensions in C++"
msgstr ""
msgstr "Écrire des extensions en C++"
#: ../Doc/extending/extending.rst:1112
msgid ""
@ -1289,10 +1468,21 @@ msgid ""
"`` --- they use this form already if the symbol ``__cplusplus`` is defined "
"(all recent C++ compilers define this symbol)."
msgstr ""
"C'est possible d'écrire des modules d'extension en C++, mais sous certaines "
"conditions. Si le programme principal (l'interpréteur Python) est compilé et "
"lié par le compilateur C, les objets globaux ou statiques avec les "
"constructeurs ne peuvent pas être utilisés. Ceci n'est pas un problème si le "
"programme principal est relié par le compilateur C++. Les fonctions qui "
"seront appelées par l'interpréteur Python (en particulier, les fonctions "
"d'initialisation des modules) doivent être déclarées en utilisant ``extern "
"\"C\"``. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python "
"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole "
"``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce "
"symbole)."
#: ../Doc/extending/extending.rst:1126
msgid "Providing a C API for an Extension Module"
msgstr ""
msgstr "Fournir une API en langage C pour un module d'extension"
#: ../Doc/extending/extending.rst:1131
msgid ""
@ -1304,6 +1494,15 @@ msgid ""
"create and manipulate lists, this new collection type should have a set of C "
"functions for direct manipulation from other extension modules."
msgstr ""
"De nombreux modules d'extension fournissent simplement de nouvelles "
"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois "
"le code d'un module d'extension peut être utile pour d'autres modules "
"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type "
"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le "
"type de liste Python standard possède une API C qui permet aux modules "
"d'extension de créer et de manipuler des listes, ce nouveau type de "
"collection devrait posséder un ensemble de fonctions C pour une manipulation "
"directe à partir d'autres modules d'extension."
#: ../Doc/extending/extending.rst:1139
msgid ""
@ -1320,6 +1519,20 @@ msgid ""
"if symbols are globally visible, the module whose functions one wishes to "
"call might not have been loaded yet!"
msgstr ""
"À première vue, cela semble facile : il suffit d'écrire les fonctions (sans "
"les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête "
"approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous "
"les modules d'extension étaient toujours liés statiquement avec "
"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme "
"des bibliothèques partagées, les symboles définis dans un module peuvent ne "
"pas être visibles par un autre module. Les détails de la visibilité "
"dépendent du système d'exploitation ; certains systèmes utilisent un espace "
"de noms global pour l'interpréteur Python et tous les modules d'extension "
"(Windows, par exemple), tandis que d'autres exigent une liste explicite des "
"symboles importés au moment de la liaison des modules (AIX en est un "
"exemple), ou offrent un choix de stratégies différentes (la plupart des "
"*Unix*). Et même si les symboles sont globalement visibles, le module dont "
"on souhaite appeler les fonctions n'est peut-être pas encore chargé !"
#: ../Doc/extending/extending.rst:1151
msgid ""
@ -1330,6 +1543,14 @@ msgid ""
"section :ref:`methodtable`). And it means that symbols that *should* be "
"accessible from other extension modules must be exported in a different way."
msgstr ""
"La portabilité exige donc de ne faire aucune supposition sur la visibilité "
"des symboles. Cela signifie que tous les symboles des modules d'extension "
"doivent être déclarés ``static``, à l'exception de la fonction "
"d'initialisation du module, afin d'éviter les conflits de noms avec les "
"autres modules d'extension (comme discuté dans la section :ref:"
"`methodtable`). Et cela signifie que les symboles qui *devraient* être "
"accessibles à partir d'autres modules d'extension doivent être exportés "
"d'une manière différente."
#: ../Doc/extending/extending.rst:1158
msgid ""
@ -1352,6 +1573,13 @@ msgid ""
"distributed in different ways between the module providing the code and the "
"client modules."
msgstr ""
"Il existe de nombreuses façons d'utiliser les Capsules pour exporter l'API C "
"d'un module d'extension. Chaque fonction peut obtenir sa propre Capsule, ou "
"tous les pointeurs de l'API C peuvent être stockés dans un tableau dont "
"l'adresse est inscrite dans une Capsule. Et les différentes tâches de "
"stockage et de récupération des pointeurs peuvent être réparties de "
"différentes manières entre le module fournissant le code et les modules "
"clients."
#: ../Doc/extending/extending.rst:1172
msgid ""
@ -1387,6 +1615,14 @@ msgid ""
"takes care of importing the module and retrieving its C API pointers; client "
"modules only have to call this macro before accessing the C API."
msgstr ""
"L'exemple suivant montre une approche qui fait peser la plus grande partie "
"de la charge sur le rédacteur du module d'exportation, ce qui est approprié "
"pour les modules de bibliothèque couramment utilisés. Il stocke tous les "
"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de "
"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier "
"d'en-tête correspondant au module fournit une macro qui se charge d'importer "
"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont "
"qu'à appeler cette macro avant d'accéder à l'API C."
#: ../Doc/extending/extending.rst:1197
msgid ""
@ -1397,6 +1633,13 @@ msgid ""
"complicated in reality (such as adding \"spam\" to every command). This "
"function :c:func:`PySpam_System` is also exported to other extension modules."
msgstr ""
"Le module d'exportation est une modification du module :mod:`spam` de la "
"section :ref:`extending-simpleexample`. La fonction :func:`spam.system` "
"n'appelle pas directement la fonction de la bibliothèque C :c:func:`system`, "
"mais une fonction :c:func:`PySpam_System`, qui ferait bien sûr quelque chose "
"de plus compliqué en réalité (comme ajouter du *spam* à chaque commande). "
"Cette fonction :c:func:`PySpam_System` est également exportée vers d'autres "
"modules d'extension."
#: ../Doc/extending/extending.rst:1204
msgid ""
@ -1406,15 +1649,15 @@ msgstr ""
#: ../Doc/extending/extending.rst:1213
msgid "The function :c:func:`spam_system` is modified in a trivial way::"
msgstr ""
msgstr "La fonction :c:func:`spam_system` est modifiée de manière simple ::"
#: ../Doc/extending/extending.rst:1227
msgid "In the beginning of the module, right after the line ::"
msgstr ""
msgstr "Au début du module, immédiatement après la ligne ::"
#: ../Doc/extending/extending.rst:1231
msgid "two more lines must be added::"
msgstr ""
msgstr "on doit ajouter deux lignes supplémentaires ::"
#: ../Doc/extending/extending.rst:1236
msgid ""
@ -1423,18 +1666,26 @@ msgid ""
"initialization function must take care of initializing the C API pointer "
"array::"
msgstr ""
"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête "
"qu'il est inclus dans le module d'exportation, et non dans un module client. "
"Enfin, la fonction d'initialisation du module doit prendre en charge "
"l'initialisation du tableau de pointeurs de l'API C ::"
#: ../Doc/extending/extending.rst:1262
msgid ""
"Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array "
"would disappear when :func:`PyInit_spam` terminates!"
msgstr ""
"Notez que ``PySpam_API`` est déclaré ``static`` ; sinon le tableau de "
"pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !"
#: ../Doc/extending/extending.rst:1265
msgid ""
"The bulk of the work is in the header file :file:`spammodule.h`, which looks "
"like this::"
msgstr ""
"L'essentiel du travail se trouve dans le fichier d'en-tête :file:`spammodule."
"h`, qui ressemble à ceci ::"
#: ../Doc/extending/extending.rst:1316
msgid ""
@ -1442,6 +1693,9 @@ msgid ""
"func:`PySpam_System` is to call the function (or rather macro) :c:func:"
"`import_spam` in its initialization function::"
msgstr ""
"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:"
"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:"
"`import_spam` dans sa fonction d'initialisation ::"
#: ../Doc/extending/extending.rst:1334
msgid ""
@ -1449,6 +1703,10 @@ msgid ""
"is rather complicated. However, the basic structure is the same for each "
"function that is exported, so it has to be learned only once."
msgstr ""
"Le principal inconvénient de cette approche est que le fichier :file:"
"`spammodule.h` est assez compliqué. Cependant, la structure de base est la "
"même pour chaque fonction exportée, ce qui fait qu'elle ne doit être apprise "
"qu'une seule fois."
#: ../Doc/extending/extending.rst:1338
msgid ""
@ -1459,6 +1717,13 @@ msgid ""
"Capsules (files :file:`Include/pycapsule.h` and :file:`Objects/pycapsule.c` "
"in the Python source code distribution)."
msgstr ""
"Enfin, il convient de mentionner que Capsules offrent des fonctionnalités "
"supplémentaires, qui sont particulièrement utiles pour l'allocation de la "
"mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les "
"détails sont décrits dans le manuel de référence de l'API Python/C dans la "
"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :"
"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la "
"distribution du code source Python)."
#: ../Doc/extending/extending.rst:1346
msgid "Footnotes"
@ -1469,12 +1734,16 @@ msgid ""
"An interface for this function already exists in the standard module :mod:"
"`os` --- it was chosen as a simple and straightforward example."
msgstr ""
"Une interface pour cette fonction existe déjà dans le module standard :mod:"
"`os`, elle a été choisie comme un exemple simple et direct."
#: ../Doc/extending/extending.rst:1350
msgid ""
"The metaphor of \"borrowing\" a reference is not completely correct: the "
"owner still has a copy of the reference."
msgstr ""
"L'expression « emprunter une référence » n'est pas tout à fait correcte, car "
"le propriétaire a toujours une copie de la référence."
#: ../Doc/extending/extending.rst:1353
msgid ""
@ -1482,9 +1751,15 @@ msgid ""
"reference count itself could be in freed memory and may thus be reused for "
"another object!"
msgstr ""
"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne "
"pas**, le compte de référence lui-même pourrait être en mémoire libérée et "
"peut donc être réutilisé pour un autre objet !"
#: ../Doc/extending/extending.rst:1357
msgid ""
"These guarantees don't hold when you use the \"old\" style calling "
"convention --- this is still found in much existing code."
msgstr ""
"Ces garanties ne sont pas valables lorsqu'on emploie les conventions de "
"nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code "
"existant."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:5
msgid "Defining Extension Types: Assorted Topics"
msgstr ""
msgstr "Définir les types d'extension : divers sujets"
#: ../Doc/extending/newtypes.rst:9
msgid ""
@ -71,16 +71,21 @@ msgid ""
"Here you can put a string (or its address) that you want returned when the "
"Python script references ``obj.__doc__`` to retrieve the doc string."
msgstr ""
"Ici vous pouvez mettre une chaîne (ou son adresse) que vous voulez renvoyer "
"lorsque le script Python référence ``obj.__doc__`` pour récupérer le "
"*docstring*."
#: ../Doc/extending/newtypes.rst:47
msgid ""
"Now we come to the basic type methods -- the ones most extension types will "
"implement."
msgstr ""
"Nous en arrivons maintenant aux méthodes de type basiques -- celles que la "
"plupart des types d'extension mettront en œuvre."
#: ../Doc/extending/newtypes.rst:52
msgid "Finalization and De-allocation"
msgstr ""
msgstr "Finalisation et de-allocation"
#: ../Doc/extending/newtypes.rst:64
msgid ""
@ -128,11 +133,11 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:134
msgid ":pep:`442` explains the new finalization scheme."
msgstr ""
msgstr ":pep:`442` explique le nouveau schéma de finalisation."
#: ../Doc/extending/newtypes.rst:141
msgid "Object Presentation"
msgstr ""
msgstr "Présentation de l'objet"
#: ../Doc/extending/newtypes.rst:143
msgid ""
@ -168,11 +173,11 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:174
msgid "Here is a simple example::"
msgstr ""
msgstr "Voici un exemple simple ::"
#: ../Doc/extending/newtypes.rst:186
msgid "Attribute Management"
msgstr ""
msgstr "Gestion des attributs"
#: ../Doc/extending/newtypes.rst:188
msgid ""
@ -206,7 +211,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:217
msgid "Generic Attribute Management"
msgstr ""
msgstr "Gestion des attributs génériques"
#: ../Doc/extending/newtypes.rst:219
msgid ""
@ -219,6 +224,8 @@ msgid ""
"The name of the attributes must be known when :c:func:`PyType_Ready` is "
"called."
msgstr ""
"Le nom des attributs doivent être déjà connus lorsqu'on lance :c:func:"
"`PyType_Ready`."
#: ../Doc/extending/newtypes.rst:225
msgid ""
@ -247,6 +254,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:239
msgid "The tables are declared as three fields of the type object::"
msgstr ""
"Les tables sont déclarées sous la forme de trois champs de type objet ::"
#: ../Doc/extending/newtypes.rst:245
msgid ""
@ -298,35 +306,35 @@ msgstr "Signification"
#: ../Doc/extending/newtypes.rst:286
msgid ":const:`READONLY`"
msgstr ""
msgstr ":const:`READONLY`"
#: ../Doc/extending/newtypes.rst:286
msgid "Never writable."
msgstr ""
msgstr "Jamais disponible en écriture."
#: ../Doc/extending/newtypes.rst:288
msgid ":const:`READ_RESTRICTED`"
msgstr ""
msgstr ":const:`READ_RESTRICTED`"
#: ../Doc/extending/newtypes.rst:288
msgid "Not readable in restricted mode."
msgstr ""
msgstr "Non disponible en lecture, dans le mode restreint."
#: ../Doc/extending/newtypes.rst:290
msgid ":const:`WRITE_RESTRICTED`"
msgstr ""
msgstr ":const:`WRITE_RESTRICTED`"
#: ../Doc/extending/newtypes.rst:290
msgid "Not writable in restricted mode."
msgstr ""
msgstr "Non disponible en écriture dans le mode restreint."
#: ../Doc/extending/newtypes.rst:292
msgid ":const:`RESTRICTED`"
msgstr ""
msgstr ":const:`RESTRICTED`"
#: ../Doc/extending/newtypes.rst:292
msgid "Not readable or writable in restricted mode."
msgstr ""
msgstr "Non disponible en lecture ou écriture, en mode restreint."
#: ../Doc/extending/newtypes.rst:301
msgid ""
@ -337,6 +345,13 @@ msgid ""
"the descriptor from the class object, and get the doc string using its :attr:"
"`__doc__` attribute."
msgstr ""
"Un avantage intéressant de l'utilisation de la table :c:member:"
"`~PyTypeObject.tp_members` pour construire les descripteurs qui sont "
"utilisés à l'exécution, est que à tout attribut défini de cette façon on "
"peut associer un *docstring*, en écrivant simplement le texte dans la table. "
"Une application peut utiliser l'API d'introspection pour récupérer le "
"descripteur de l'objet de classe, et utiliser son attribut :attr:`__doc__` "
"pour renvoyer le *docstring*."
#: ../Doc/extending/newtypes.rst:307
msgid ""
@ -346,7 +361,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:321
msgid "Type-specific Attribute Management"
msgstr ""
msgstr "Gestion des attributs de type spécifiques"
#: ../Doc/extending/newtypes.rst:323
msgid ""
@ -368,7 +383,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:335
msgid "Here is an example::"
msgstr "Voici un exemple : ::"
msgstr "Voici un exemple ::"
#: ../Doc/extending/newtypes.rst:351
msgid ""
@ -382,7 +397,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:365
msgid "Object Comparison"
msgstr ""
msgstr "Comparaison des objets"
#: ../Doc/extending/newtypes.rst:371
msgid ""
@ -411,7 +426,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:414
msgid "Abstract Protocol Support"
msgstr ""
msgstr "Support pour le protocole abstrait"
#: ../Doc/extending/newtypes.rst:416
msgid ""
@ -469,7 +484,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:470
msgid "This function takes three arguments:"
msgstr ""
msgstr "Cette fonction prend trois arguments :"
#: ../Doc/extending/newtypes.rst:472
msgid ""
@ -494,7 +509,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:484
msgid "Here is a toy ``tp_call`` implementation::"
msgstr ""
msgstr "Ceci est une implémentation ``tp_call`` très simple ::"
#: ../Doc/extending/newtypes.rst:510
msgid ""
@ -512,6 +527,10 @@ msgid ""
"tp_iter` handler, which must return an :term:`iterator` object. Here the "
"same guidelines apply as for Python classes:"
msgstr ""
"Tout objet :term:`iterable` doit implémenter le gestionnaire :c:member:"
"`~PyTypeObject.tp_iter`, qui doit renvoyer un objet de type :term:"
"`iterator`. Ici, les mêmes directives s'appliquent de la même façon que "
"pour les classes *Python* :"
#: ../Doc/extending/newtypes.rst:521
msgid ""
@ -519,6 +538,9 @@ msgid ""
"independent iterators, a new iterator should be created and returned by each "
"call to :c:member:`~PyTypeObject.tp_iter`."
msgstr ""
"Pour les collections (telles que les listes et les n-uplets) qui peuvent "
"implémenter plusieurs itérateurs indépendants, un nouvel itérateur doit être "
"créé et renvoyé par chaque appel de type :c:member:`~PyTypeObject.tp_iter`."
#: ../Doc/extending/newtypes.rst:524
msgid ""
@ -544,7 +566,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:545
msgid "Weak Reference Support"
msgstr ""
msgstr "Prise en charge de la référence faible"
#: ../Doc/extending/newtypes.rst:547
msgid ""
@ -552,16 +574,22 @@ msgid ""
"type to participate in the weak reference mechanism without incurring the "
"overhead on performance-critical objects (such as numbers)."
msgstr ""
"L'un des objectifs de l'implémentation de la référence faible de *Python* "
"est de permettre à tout type d'objet de participer au mécanisme de référence "
"faible sans avoir à supporter le surcoût de la performance critique des "
"certains objets, tels que les nombres."
#: ../Doc/extending/newtypes.rst:552
msgid "Documentation for the :mod:`weakref` module."
msgstr ""
msgstr "Documentation pour le module :mod:`weakref`."
#: ../Doc/extending/newtypes.rst:554
msgid ""
"For an object to be weakly referencable, the extension type must do two "
"things:"
msgstr ""
"Pour qu'un objet soit faiblement référençable, le type d'extension doit "
"faire deux choses :"
#: ../Doc/extending/newtypes.rst:556
msgid ""
@ -577,16 +605,23 @@ msgid ""
"offset of the aforementioned field in the C object structure, so that the "
"interpreter knows how to access and modify that field."
msgstr ""
"Définissez le membre de type :c:member:`~PyTypeObject.tp_weaklistoffset` à "
"la valeur de décalage (*offset*) du champ susmentionné dans la structure de "
"l'objet *C*, afin que l'interpréteur sache comment accéder à ce champ et le "
"modifier."
#: ../Doc/extending/newtypes.rst:565
msgid ""
"Concretely, here is how a trivial object structure would be augmented with "
"the required field::"
msgstr ""
"Concrètement, voici comment une structure d'objet simple serait complétée "
"par le champ requis ::"
#: ../Doc/extending/newtypes.rst:573
msgid "And the corresponding member in the statically-declared type object::"
msgstr ""
"Et le membre correspondant dans l'objet de type déclaré statiquement ::"
#: ../Doc/extending/newtypes.rst:581
msgid ""
@ -597,7 +632,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:597
msgid "More Suggestions"
msgstr ""
msgstr "Plus de suggestions"
#: ../Doc/extending/newtypes.rst:599
msgid ""
@ -607,6 +642,12 @@ msgid ""
"want (for example, ``tp_richcompare``). You will find examples of the "
"function you want to implement."
msgstr ""
"Pour savoir comment mettre en œuvre une méthode spécifique pour votre "
"nouveau type de données, téléchargez le code source :term:`CPython`. Allez "
"dans le répertoire :file:`Objects`, puis cherchez dans les fichiers sources "
"*C* la fonction ``tp_`` plus la fonction que vous voulez (par exemple, "
"``tp_richcompare``). Vous trouverez des exemples de la fonction que vous "
"voulez implémenter."
#: ../Doc/extending/newtypes.rst:605
msgid ""
@ -614,23 +655,27 @@ msgid ""
"you are implementing, use the :c:func:`PyObject_TypeCheck` function. A "
"sample of its use might be something like the following::"
msgstr ""
"Lorsque vous avez besoin de vérifier qu'un objet est une instance concrète "
"du type que vous implémentez, utilisez la fonction :c:func:"
"`PyObject_TypeCheck`. Voici un exemple de son utilisation ::"
#: ../Doc/extending/newtypes.rst:616
msgid "Download CPython source releases."
msgstr ""
msgstr "Télécharger les versions sources de *CPython*."
#: ../Doc/extending/newtypes.rst:616
msgid "https://www.python.org/downloads/source/"
msgstr ""
msgstr "https://www.python.org/downloads/source/"
#: ../Doc/extending/newtypes.rst:618
msgid ""
"The CPython project on GitHub, where the CPython source code is developed."
msgstr ""
"Le projet *CPython* sur *GitHub*, où se trouve le code source *CPython*."
#: ../Doc/extending/newtypes.rst:619
msgid "https://github.com/python/cpython"
msgstr ""
msgstr "https://github.com/python/cpython"
#~ msgid "Footnotes"
#~ msgstr "Notes"

View File

@ -169,17 +169,17 @@ msgid ""
"application or DLL."
msgstr ""
"Sur Windows, il y a deux types de bibliothèques, une bibliothèque statique "
"et une bibliothèque d'import (toutes deux appelées :file:`.lib`). Une "
"et une bibliothèque d'importation (toutes deux appelées :file:`.lib`). Une "
"bibliothèque statique est comme un fichier Unix :file:`.a` ; elle contient "
"du code pouvant être inclus si nécessaire. Une bibliothèque d'import est "
"uniquement utilisée pour rassurer le lieur qu'un certain identificateur est "
"légal, et sera présent dans le programme quand la DLL est chargé. Comme ça "
"le lieur utilise les informations provenant de la bibliothèque d'import pour "
"construire la table de conversion pour utiliser les identificateurs qui ne "
"sont pas inclus dans la DLL. Quand une application ou une DLL est lié, une "
"bibliothèque d'import peut être générée, qui devra être utilisée pour tous "
"les futures DLL dépendantes aux symboles provenant de l'application ou de la "
"DLL."
"du code pouvant être inclus si nécessaire. Une bibliothèque d'importation "
"est uniquement utilisée pour rassurer le lieur qu'un certain identificateur "
"est légal, et sera présent dans le programme quand la DLL est chargée. Comme "
"ça le lieur utilise les informations provenant de la bibliothèque "
"d'importation pour construire la table de conversion pour utiliser les "
"identificateurs qui ne sont pas inclus dans la DLL. Quand une application ou "
"une DLL est liée, une bibliothèque d'importation peut être générée, qui "
"devra être utilisée pour toutes les futures DLL dépendantes aux symboles "
"provenant de l'application ou de la DLL."
#: ../Doc/extending/windows.rst:86
msgid ""
@ -207,10 +207,10 @@ msgid ""
"On Unix, linking with a library is more like ``from spam import *``; it does "
"create a separate copy."
msgstr ""
"Sur Windows, utiliser une bibliothèque d'import est comme utiliser ``import "
"spam``; cela vous donne accès aux noms des spams, mais ne crée par de copie "
"séparée. Sur Unix, se lier à une bibliothèque est plus comme ``from spam "
"import *`` ; cela créé une copie séparée."
"Sur Windows, utiliser une bibliothèque d'importation est comme utiliser "
"``import spam``; cela vous donne accès aux noms des spams, mais ne crée par "
"de copie séparée. Sur Unix, se lier à une bibliothèque est plus comme ``from "
"spam import *`` ; cela crée une copie séparée."
#: ../Doc/extending/windows.rst:103
msgid "Using DLLs in Practice"
@ -278,8 +278,8 @@ msgid ""
"the Project Settings dialog, Link tab, to specify *ignore default "
"libraries*. Add the correct :file:`msvcrtxx.lib` to the list of libraries."
msgstr ""
"\\ Developer Studio apportera beaucoup de bibliothèques d'import dont vous "
"n'avez pas vraiment besoin, augmentant d'environ 100ko votre exécutable. "
"Pour s'en débarrasser, allez dans les Paramètres du Projet, onglet Lien, "
"pour préciser *ignorer les bibliothèques par défaut*. Et la :file:`msvcrtxx."
"lib` correcte à la liste des bibliothèques."
"\\ Developer Studio apportera beaucoup de bibliothèques d'importation dont "
"vous n'avez pas vraiment besoin, augmentant d'environ 100ko votre "
"exécutable. Pour s'en débarrasser, allez dans les Paramètres du Projet, "
"onglet Lien, pour préciser *ignorer les bibliothèques par défaut*. Et la :"
"file:`msvcrtxx.lib` correcte à la liste des bibliothèques."

View File

@ -24,7 +24,7 @@ msgstr "FAQ histoire et design"
#: ../Doc/faq/design.rst:6
msgid "Why does Python use indentation for grouping of statements?"
msgstr ""
"Pourquoi Python utilise-t-il l'indentation pour grouper les instructions ?"
"Pourquoi Python utilise-t-il l'indentation pour grouper les instructions ?"
#: ../Doc/faq/design.rst:8
msgid ""
@ -46,7 +46,7 @@ msgstr ""
"Comme il n'y a pas d'accolades de début/fin, il ne peut y avoir de "
"différence entre le bloc perçu par l'analyseur syntaxique et le lecteur "
"humain. Parfois les programmeurs C pourront trouver un morceau de code comme "
"celui-ci : ::"
"celui-ci ::"
#: ../Doc/faq/design.rst:21
msgid ""
@ -98,7 +98,7 @@ msgstr ""
msgid "Why am I getting strange results with simple arithmetic operations?"
msgstr ""
"Pourquoi ai-je d'étranges résultats suite à de simples opérations "
"arithmétiques ?"
"arithmétiques ?"
#: ../Doc/faq/design.rst:43
msgid "See the next question."
@ -106,12 +106,11 @@ msgstr "Voir la question suivante."
#: ../Doc/faq/design.rst:47
msgid "Why are floating-point calculations so inaccurate?"
msgstr "Pourquoi les calculs à virgules flottantes sont si imprécis ?"
msgstr "Pourquoi les calculs à virgules flottantes sont si imprécis ?"
#: ../Doc/faq/design.rst:49
msgid "Users are often surprised by results like this::"
msgstr ""
"Les gens sont très souvent surpris par des résultats comme celui-ci : ::"
msgstr "Les gens sont très souvent surpris par des résultats comme celui-ci ::"
#: ../Doc/faq/design.rst:54
msgid ""
@ -148,7 +147,7 @@ msgid ""
msgstr ""
"Beaucoup de nombres pouvant être écrits facilement en notation décimale ne "
"peuvent pas s'exprimer de manière exacte en binaire à virgule flottante. Par "
"exemple, après : ::"
"exemple, après ::"
#: ../Doc/faq/design.rst:70
msgid ""
@ -158,11 +157,11 @@ msgid ""
msgstr ""
"la valeur stockée pour ``x`` est une (très bonne) approximation de la valeur "
"décimale ``1.2``, mais cette valeur n'est pas exacte. Sur une machine "
"typique, la valeur stockée est en fait : ::"
"typique, la valeur stockée est en fait ::"
#: ../Doc/faq/design.rst:76
msgid "which is exactly::"
msgstr "qui est, exactement : ::"
msgstr "qui est, exactement ::"
#: ../Doc/faq/design.rst:80
msgid ""
@ -182,7 +181,7 @@ msgstr ""
#: ../Doc/faq/design.rst:88
msgid "Why are Python strings immutable?"
msgstr "Pourquoi les chaînes de caractères Python sont-elles immuables ?"
msgstr "Pourquoi les chaînes de caractères Python sont-elles immuables ?"
#: ../Doc/faq/design.rst:90
msgid "There are several advantages."
@ -216,7 +215,7 @@ msgstr ""
msgid "Why must 'self' be used explicitly in method definitions and calls?"
msgstr ""
"Pourquoi \"self\" doit-il être explicitement utilisé dans les définitions et "
"les appels de méthode ?"
"les appels de méthode ?"
#: ../Doc/faq/design.rst:107
msgid ""
@ -302,11 +301,11 @@ msgstr ""
"les références vers des noms non-qualifiés au sein d'une méthode n'ont pas à "
"être cherchés dans l'annuaire d'instances. En d'autres termes, les variables "
"locales et les variables d'instance vivent dans deux différents espaces de "
"noms, et vous devez dire à Python quel espace de noms utiliser."
"nommage, et vous devez dire à Python quel espace de nommage utiliser."
#: ../Doc/faq/design.rst:145
msgid "Why can't I use an assignment in an expression?"
msgstr "Pourquoi ne puis-je pas utiliser d'assignation dans une expression ?"
msgstr "Pourquoi ne puis-je pas utiliser d'assignation dans une expression ?"
#: ../Doc/faq/design.rst:147
msgid ""
@ -463,11 +462,11 @@ msgstr ""
"mêmes fonctionnalités que celles qui étaient déjà disponibles en utilisant "
"les fonctions du module string. La plupart de ces nouvelles méthodes ont été "
"largement acceptées, mais celle qui semble rendre certains programmeurs "
"inconfortables est : ::"
"inconfortables est ::"
#: ../Doc/faq/design.rst:244
msgid "which gives the result::"
msgstr "qui donne le résultat : ::"
msgstr "qui donne le résultat ::"
#: ../Doc/faq/design.rst:248
msgid "There are two common arguments against this usage."
@ -498,7 +497,7 @@ msgstr ""
"train de dire à une séquence de joindre ses membres avec une constante de "
"chaîne\". Malheureusement, vous ne l'êtes pas. Pour quelque raison, il "
"semble être bien moins difficile d'avoir :meth:`~str.split` en tant que "
"méthode de chaîne, puisque dans ce cas il est facile de voir que::"
"méthode de chaîne, puisque dans ce cas il est facile de voir que ::"
#: ../Doc/faq/design.rst:263
msgid ""
@ -527,7 +526,7 @@ msgstr ""
#: ../Doc/faq/design.rst:274
msgid "How fast are exceptions?"
msgstr "À quel point les exceptions sont-elles rapides ?"
msgstr "À quel point les exceptions sont-elles rapides ?"
#: ../Doc/faq/design.rst:276
msgid ""
@ -547,7 +546,7 @@ msgid ""
msgstr ""
"Cela n'a de sens que si vous vous attendez à ce que le dictionnaire ait la "
"clé presque tout le temps. Si ce n'était pas le cas, vous l'auriez codé "
"comme suit : ::"
"comme suit ::"
#: ../Doc/faq/design.rst:294
msgid ""
@ -563,7 +562,7 @@ msgstr ""
msgid "Why isn't there a switch or case statement in Python?"
msgstr ""
"Pourquoi n'y a-t-il pas une instruction *switch* ou une structure similaire "
"à *switch / case* en Python ?"
"à *switch / case* en Python ?"
#: ../Doc/faq/design.rst:302
msgid ""
@ -585,7 +584,7 @@ msgid ""
msgstr ""
"Dans les cas où vous devez choisir parmi un très grand nombre de "
"possibilités, vous pouvez créer un dictionnaire faisant correspondre des "
"valeurs à des fonctions à appeler. Par exemple : ::"
"valeurs à des fonctions à appeler. Par exemple ::"
#: ../Doc/faq/design.rst:321
msgid ""
@ -594,7 +593,7 @@ msgid ""
msgstr ""
"Pour appeler les méthodes sur des objets, vous pouvez simplifier davantage "
"en utilisant la fonction native :func:`getattr` pour récupérer les méthodes "
"avec un nom donné : ::"
"avec un nom donné ::"
#: ../Doc/faq/design.rst:333
msgid ""
@ -614,7 +613,7 @@ msgid ""
"specific thread implementation?"
msgstr ""
"Est-il possible d'émuler des fils d'exécution dans l'interpréteur plutôt que "
"se baser sur les implémentations spécifique aux OS ?"
"se baser sur les implémentations spécifique aux OS ?"
#: ../Doc/faq/design.rst:341
msgid ""
@ -642,7 +641,7 @@ msgstr ""
#: ../Doc/faq/design.rst:351
msgid "Why can't lambda expressions contain statements?"
msgstr ""
"Pourquoi les expressions lambda ne peuvent pas contenir d'instructions ?"
"Pourquoi les expressions lambda ne peuvent pas contenir d'instructions ?"
#: ../Doc/faq/design.rst:353
msgid ""
@ -674,7 +673,7 @@ msgstr ""
"fonction lambda au lieu d'une fonction définie localement est que vous "
"n'avez nullement besoin d'un nom pour la fonction -- Mais c'est juste une "
"variable locale à laquelle est affecté l'objet fonction (qui est exactement "
"le même type d'objet qui donne une expression lambda) !"
"le même type d'objet qui donne une expression lambda) !"
#: ../Doc/faq/design.rst:367
msgid "Can Python be compiled to machine code, C or some other language?"
@ -689,10 +688,15 @@ msgid ""
"full Python language. For compiling to Java you can consider `VOC <https://"
"voc.readthedocs.io>`_."
msgstr ""
"`Cython <http://cython.org/>`_ compile une version modifiée de Python avec "
"des annotations optionnelles en extensions C. `Nuitka <http://www.nuitka.net/"
">`_ est un nouveau compilateur de Python vers C++, visant à supporter le "
"langage Python entièrement. Pour compiler en Java, vous pouvez regarder `VOC "
"<https://voc.readthedocs.io>`_."
#: ../Doc/faq/design.rst:377
msgid "How does Python manage memory?"
msgstr "Comment Python gère la mémoire ?"
msgstr "Comment Python gère la mémoire ?"
#: ../Doc/faq/design.rst:379
msgid ""
@ -763,7 +767,7 @@ msgstr ""
#: ../Doc/faq/design.rst:415
msgid "Why doesn't CPython use a more traditional garbage collection scheme?"
msgstr ""
"Pourquoi CPython n'utilise-il pas un ramasse-miette plus traditionnel ?"
"Pourquoi CPython n'utilise-il pas un ramasse-miette plus traditionnel ?"
#: ../Doc/faq/design.rst:417
msgid ""
@ -801,7 +805,7 @@ msgstr ""
#: ../Doc/faq/design.rst:432
msgid "Why isn't all memory freed when CPython exits?"
msgstr ""
"Pourquoi toute la mémoire n'est pas libérée lorsque *CPython* s'arrête ?"
"Pourquoi toute la mémoire n'est pas libérée lorsque *CPython* s'arrête ?"
#: ../Doc/faq/design.rst:434
msgid ""
@ -812,8 +816,8 @@ msgid ""
"about these). Python is, however, aggressive about cleaning up memory on "
"exit and does try to destroy every single object."
msgstr ""
"Les objets référencés depuis les espaces de noms globaux des modules Python "
"ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
"Les objets référencés depuis les espaces de nommage globaux des modules "
"Python ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
"produire s'il y a des références circulaires. Il y a aussi certaines parties "
"de mémoire qui sont alloués par la bibliothèque C qui sont impossibles à "
"libérer (par exemple un outil comme *Purify* s'en plaindra). Python est, "
@ -832,7 +836,7 @@ msgstr ""
#: ../Doc/faq/design.rst:446
msgid "Why are there separate tuple and list data types?"
msgstr ""
"Pourquoi les *tuples* et les *list* sont deux types de données séparés ?"
"Pourquoi les *tuples* et les *list* sont deux types de données séparés ?"
#: ../Doc/faq/design.rst:448
msgid ""
@ -1009,7 +1013,7 @@ msgstr ""
#: ../Doc/faq/design.rst:521
msgid "Some unacceptable solutions that have been proposed:"
msgstr "Certaines solutions insatisfaisantes qui ont été proposées :"
msgstr "Certaines solutions insatisfaisantes qui ont été proposées :"
#: ../Doc/faq/design.rst:523
msgid ""
@ -1049,6 +1053,11 @@ msgid ""
"by accident. It also invalidates an important invariant of dictionaries: "
"every value in ``d.keys()`` is usable as a key of the dictionary."
msgstr ""
"Autoriser les listes en tant que clés, mais indiquer à l'utilisateur de ne "
"pas les modifier. Cela permettrait un ensemble de bogues difficiles à suivre "
"dans les programmes lorsque vous avez oublié ou modifié une liste par "
"accident. Cela casse également un impératif important des dictionnaires : "
"chaque valeur de ``d.keys()`` est utilisable comme clé du dictionnaire."
#: ../Doc/faq/design.rst:542
msgid ""
@ -1059,6 +1068,14 @@ msgid ""
"read-only -- and again, self-referential objects could cause an infinite "
"loop."
msgstr ""
"Marquer les listes comme étant en lecture seule une fois qu'elles sont "
"utilisées comme clé de dictionnaire. Le problème est que ce n'est pas "
"seulement l'objet de niveau supérieur qui pourrait changer sa valeur; vous "
"pourriez utiliser un tuple contenant une liste comme clé. Utiliser "
"n'importe quoi comme une clé dans un dictionnaire nécessiterait de marquer "
"tous les objets accessibles à partir de là comme en lecture seule -- et "
"encore une fois, les objets se faisant référence pourraient provoquer une "
"boucle infinie."
#: ../Doc/faq/design.rst:548
msgid ""
@ -1069,6 +1086,13 @@ msgid ""
"dictionary (or other hash based structure), remain fixed while the object is "
"in the dictionary (or other structure). ::"
msgstr ""
"Il y a un truc pour contourner ceci si vous en avez besoin, mais utilisez-le "
"à vos risques et périls. Vous pouvez encapsuler une structure mutable à "
"l'intérieur d'une instance de classe qui a à la fois une méthode :meth:"
"`__eq__` et :meth:`__hash__`. Vous devez ensuite vous assurer que la valeur "
"de hachage pour tous ces objets *wrapper* qui résident dans un dictionnaire "
"(ou une autre structure basée sur le hachage), restent fixes pendant que "
"l'objet est dans le dictionnaire (ou une autre structure). ::"
#: ../Doc/faq/design.rst:572
msgid ""
@ -1076,6 +1100,9 @@ msgid ""
"members of the list may be unhashable and also by the possibility of "
"arithmetic overflow."
msgstr ""
"Notez que le calcul de hachage peut être compliqué car il est possible que "
"certains membres de la liste peuvent être impossible à hacher et aussi par "
"la possibilité de débordement arithmétique."
#: ../Doc/faq/design.rst:576
msgid ""
@ -1085,6 +1112,11 @@ msgid ""
"not. If you fail to meet these restrictions dictionaries and other hash "
"based structures will misbehave."
msgstr ""
"De plus, il faut toujours que, si ``o1 == o2`` (par exemple ``o1.__eq__(o2) "
"vaut True``) alors ``hash(o1) == hash(o2)`` (par exemple, ``o1.__hash__() == "
"o2.__hash__()``), que lobjet se trouve dans un dictionnaire ou pas. Si vous "
"ne remplissez pas ces conditions, les dictionnaires et autres structures "
"basées sur le hachage se comporteront mal."
#: ../Doc/faq/design.rst:581
msgid ""
@ -1093,10 +1125,15 @@ msgid ""
"you are prepared to think hard about the requirements and the consequences "
"of not meeting them correctly. Consider yourself warned."
msgstr ""
"Dans le cas de *ListWrapper*, chaque fois que l'objet *wrapper* est dans un "
"dictionnaire, la liste encapsulée ne doit pas changer pour éviter les "
"anomalies. Ne faites pas cela à moins que vous nayez pensé aux potentielles "
"conséquences de ne pas satisfaire entièrement ces conditions. Vous avez été "
"prévenus."
#: ../Doc/faq/design.rst:588
msgid "Why doesn't list.sort() return the sorted list?"
msgstr ""
msgstr "Pourquoi ``list.sort()`` ne renvoie pas la liste triée ?"
#: ../Doc/faq/design.rst:590
msgid ""
@ -1107,6 +1144,12 @@ msgid ""
"when you need a sorted copy but also need to keep the unsorted version "
"around."
msgstr ""
"Dans les situations où la performance est importante, faire une copie de la "
"liste juste pour la trier serait un gaspillage. Par conséquent, :meth:`list."
"sort` trie la liste en place. Afin de vous le rappeler, il ne retourne pas "
"la liste triée. De cette façon, vous ne serez pas dupés en écrasant "
"accidentellement une liste lorsque vous avez besoin dune copie triée, mais "
"vous devrez également garder sous la main la version non triée."
#: ../Doc/faq/design.rst:596
msgid ""
@ -1115,10 +1158,16 @@ msgid ""
"it and returns it. For example, here's how to iterate over the keys of a "
"dictionary in sorted order::"
msgstr ""
"Si vous souhaitez retourner une nouvelle liste, utilisez plutôt la fonction "
"native :func:`sorted`. Cette fonction crée une nouvelle liste à partir dun "
"itérable fourni, la trie et la retourne. Par exemple, voici comment itérer "
"sur les clefs dun dictionnaire dans lordre trié ::"
#: ../Doc/faq/design.rst:606
msgid "How do you specify and enforce an interface spec in Python?"
msgstr ""
"Comment spécifiez-vous et appliquez-vous une spécification dinterface en "
"Python ?"
#: ../Doc/faq/design.rst:608
msgid ""
@ -1127,6 +1176,10 @@ msgid ""
"module. Many feel that compile-time enforcement of interface specifications "
"helps in the construction of large programs."
msgstr ""
"Une spécification d'interface pour un module fourni par des langages tels "
"que C++ et Java décrit les prototypes pour les méthodes et les fonctions du "
"module. Beaucoup estiment que la vérification au moment de la compilation "
"des spécifications d'interface aide à la construction de grands programmes."
#: ../Doc/faq/design.rst:613
msgid ""
@ -1137,6 +1190,13 @@ msgid ""
"`~collections.abc.Iterable`, :class:`~collections.abc.Container`, and :class:"
"`~collections.abc.MutableMapping`."
msgstr ""
"Python 2.6 ajoute un module :mod:`abc` qui vous permet de définir des "
"classes de base abstraites (ABCs). Vous pouvez ensuite utiliser :func:"
"`isinstance` et :func:`issubclass` pour vérifier si une instance ou une "
"classe implémente une ABC particulière. Le module :mod:`collections.abc` "
"définit un ensemble d'ABCs utiles telles que :class:`~collections.abc."
"Iterable`, :class:`~collections.abc.Container` et :class:`collections.abc."
"MutableMapping`."
#: ../Doc/faq/design.rst:620
msgid ""
@ -1144,6 +1204,10 @@ msgid ""
"obtained by an appropriate test discipline for components. There is also a "
"tool, PyChecker, which can be used to find problems due to subclassing."
msgstr ""
"Pour Python, la plupart des avantages des spécifications d'interface peuvent "
"être obtenus par une discipline de test appropriée pour les composants. Il "
"existe aussi un outil, PyChecker, qui peut être utilisé pour trouver des "
"problèmes d'héritage."
#: ../Doc/faq/design.rst:624
msgid ""
@ -1156,6 +1220,15 @@ msgid ""
"be used to construct exhaustive test suites that exercise every line of code "
"in a module."
msgstr ""
"Une bonne suite de tests pour un module peut à la fois fournir un test de "
"non régression et servir de spécification d'interface de module ainsi qu'un "
"ensemble d'exemples. De nombreux modules Python peuvent être exécutés en "
"tant que script pour fournir un simple « auto-test ». Même les modules qui "
"utilisent des interfaces externes complexes peuvent souvent être testés "
"isolément à l'aide d'émulations triviales embryonnaires de l'interface "
"externe. Les modules :mod:`doctest` et :mod:`UnitTest` ou des frameworks de "
"test tiers peuvent être utilisés pour construire des suites de tests "
"exhaustives qui éprouvent chaque ligne de code dans un module."
#: ../Doc/faq/design.rst:632
msgid ""
@ -1167,6 +1240,15 @@ msgid ""
"test that your :meth:`append` implementation will actually do this "
"correctly, but it's trivial to check this property in a test suite."
msgstr ""
"Une discipline de test appropriée peut aider à construire des applications "
"complexes de grande taille en Python aussi bien que le feraient des "
"spécifications d'interface. En fait, c'est peut être même mieux parce qu'une "
"spécification d'interface ne peut pas tester certaines propriétés d'un "
"programme. Par exemple, la méthode :meth:`Append` est censée ajouter de "
"nouveaux éléments à la fin d'une liste « sur place » ; une spécification "
"d'interface ne peut pas tester que votre implémentation de :meth:`append` va "
"réellement le faire correctement, mais il est trivial de vérifier cette "
"propriété dans une suite de tests."
#: ../Doc/faq/design.rst:640
msgid ""
@ -1176,6 +1258,12 @@ msgid ""
"before you write any of the actual code. Of course Python allows you to be "
"sloppy and not write test cases at all."
msgstr ""
"L'écriture des suites de tests est très utile, et vous voudrez peut-être "
"concevoir votre code de manière à le rendre facilement testable. Une "
"technique de plus en plus populaire, le développement dirigé par les tests, "
"requiert d'écrire d'abord des éléments de la suite de tests, avant d'écrire "
"le code réel. Bien sûr, Python vous permet d'être laxiste et de ne pas "
"écrire de test du tout."
#: ../Doc/faq/design.rst:648
msgid "Why is there no goto?"
@ -1206,6 +1294,8 @@ msgstr ""
#: ../Doc/faq/design.rst:670
msgid "Why can't raw strings (r-strings) end with a backslash?"
msgstr ""
"Pourquoi les chaînes de caractères brutes (r-strings) ne peuvent-elles pas "
"se terminer par un *backslash* ?"
#: ../Doc/faq/design.rst:672
msgid ""
@ -1213,6 +1303,9 @@ msgid ""
"unpaired backslash at the end escapes the closing quote character, leaving "
"an unterminated string."
msgstr ""
"Plus précisément, elles ne peuvent pas se terminer par un nombre impair de "
"*backslashes* : le *backslash* non appairé à la fin échappe le caractère de "
"guillemet final, laissant une chaîne non terminée."
#: ../Doc/faq/design.rst:676
msgid ""
@ -1223,17 +1316,30 @@ msgid ""
"pass on the string quote character by escaping it with a backslash. These "
"rules work well when r-strings are used for their intended purpose."
msgstr ""
"Les chaînes brutes ont été conçues pour faciliter la création de données "
"pour les processeurs de texte (principalement les moteurs d'expressions "
"régulières) qui veulent faire leur propre traitement d'échappement "
"d'*antislashes*. Ces processeurs considèrent un *antislash* de fin non-"
"appairé comme une erreur, alors les chaînes brutes ne le permettent pas. En "
"retour, elles vous permettent de transmettre le caractère de citation de la "
"chaîne en l'échappant avec un *antislash*. Ces règles fonctionnent bien "
"lorsque les chaînes brutes sont utilisées pour leur but premier."
#: ../Doc/faq/design.rst:683
msgid ""
"If you're trying to build Windows pathnames, note that all Windows system "
"calls accept forward slashes too::"
msgstr ""
"Si vous essayez de construire des chemins d'accès Windows, notez que tous "
"les appels système Windows acceptent également les *slashes* \"classiques"
"\" ::"
#: ../Doc/faq/design.rst:688
msgid ""
"If you're trying to build a pathname for a DOS command, try e.g. one of ::"
msgstr ""
"Si vous essayez de construire un chemin d'accès pour une commande DOS, "
"essayez par exemple l'un de ceux-là ::"
#: ../Doc/faq/design.rst:696
msgid "Why doesn't Python have a \"with\" statement for attribute assignments?"
@ -1284,7 +1390,7 @@ msgstr ""
#: ../Doc/faq/design.rst:719
msgid "For instance, take the following incomplete snippet::"
msgstr ""
msgstr "Prenons par exemple l'extrait incomplet suivant ::"
#: ../Doc/faq/design.rst:725
msgid ""
@ -1294,6 +1400,11 @@ msgid ""
"variable named \"x\", will it be used inside the with block? As you see, "
"the dynamic nature of Python makes such choices much harder."
msgstr ""
"L'extrait suppose que \"a\" doit avoir un attribut membre appelé \"x\". "
"Néanmoins, il n'y a rien en Python qui en informe l'interpréteur. Que se "
"passe-t-il si \"a\" est, disons, un entier ? Si une variable globale nommée "
"\"x\" existe, sera-t-elle utilisée dans le bloc ``with`` ? Comme vous "
"voyez, la nature dynamique du Python rend ces choix beaucoup plus difficiles."
#: ../Doc/faq/design.rst:731
msgid ""
@ -1301,10 +1412,13 @@ msgid ""
"code volume) can, however, easily be achieved in Python by assignment. "
"Instead of::"
msgstr ""
"L'avantage principal de ``with`` et des fonctionnalités de langage "
"similaires (réduction du volume de code) peut, cependant, être facilement "
"réalisé en Python par assignation. Au lieu de ::"
#: ../Doc/faq/design.rst:738
msgid "write this::"
msgstr ""
msgstr "écrivez ceci ::"
#: ../Doc/faq/design.rst:745
msgid ""
@ -1312,20 +1426,27 @@ msgid ""
"bindings are resolved at run-time in Python, and the second version only "
"needs to perform the resolution once."
msgstr ""
"Cela a également pour effet secondaire d'augmenter la vitesse d'exécution "
"car les liaisons de noms sont résolues au moment de l'exécution en Python, "
"et la deuxième version n'a besoin d'exécuter la résolution qu'une seule fois."
#: ../Doc/faq/design.rst:751
msgid "Why are colons required for the if/while/def/class statements?"
msgstr ""
"Pourquoi les deux-points sont-ils nécessaires pour les déclarations ``if/"
"while/def/class`` ?"
#: ../Doc/faq/design.rst:753
msgid ""
"The colon is required primarily to enhance readability (one of the results "
"of the experimental ABC language). Consider this::"
msgstr ""
"Le deux-points est principalement nécessaires pour améliorer la lisibilité "
"(l'un des résultats du langage expérimental ABC). Considérez ceci ::"
#: ../Doc/faq/design.rst:759
msgid "versus ::"
msgstr ""
msgstr "versus ::"
#: ../Doc/faq/design.rst:764
msgid ""
@ -1333,6 +1454,9 @@ msgid ""
"colon sets off the example in this FAQ answer; it's a standard usage in "
"English."
msgstr ""
"Remarquez comment le deuxième est un peu plus facile à lire. Remarquez "
"aussi comment un deux-points introduit l'exemple dans cette réponse à la "
"FAQ ; c'est un usage standard en anglais."
#: ../Doc/faq/design.rst:767
msgid ""
@ -1341,16 +1465,23 @@ msgid ""
"needs to be increased instead of having to do a more elaborate parsing of "
"the program text."
msgstr ""
"Une autre raison mineure est que les deux-points facilitent la tâche des "
"éditeurs avec coloration syntaxique ; ils peuvent rechercher les deux-points "
"pour décider quand l'indentation doit être augmentée au lieu d'avoir à faire "
"une analyse plus élaborée du texte du programme."
#: ../Doc/faq/design.rst:773
msgid "Why does Python allow commas at the end of lists and tuples?"
msgstr ""
"Pourquoi Python permet-il les virgules à la fin des listes et des tuples ?"
#: ../Doc/faq/design.rst:775
msgid ""
"Python lets you add a trailing comma at the end of lists, tuples, and "
"dictionaries::"
msgstr ""
"Python vous permet d'ajouter une virgule à la fin des listes, des tuples et "
"des dictionnaires ::"
#: ../Doc/faq/design.rst:786
msgid "There are several reasons to allow this."
@ -1363,12 +1494,19 @@ msgid ""
"remember to add a comma to the previous line. The lines can also be "
"reordered without creating a syntax error."
msgstr ""
"Lorsque vous avez une valeur littérale pour une liste, un tuple ou un "
"dictionnaire réparti sur plusieurs lignes, il est plus facile d'ajouter plus "
"d'éléments parce que vous n'avez pas besoin de vous rappeler d'ajouter une "
"virgule à la ligne précédente. Les lignes peuvent aussi être réorganisées "
"sans créer une erreur de syntaxe."
#: ../Doc/faq/design.rst:793
msgid ""
"Accidentally omitting the comma can lead to errors that are hard to "
"diagnose. For example::"
msgstr ""
"L'omission accidentelle de la virgule peut entraîner des erreurs difficiles "
"à diagnostiquer, par exemple ::"
#: ../Doc/faq/design.rst:803
msgid ""
@ -1376,12 +1514,16 @@ msgid ""
"\"fee\", \"fiefoo\" and \"fum\". Always adding the comma avoids this source "
"of error."
msgstr ""
"Cette liste a l'air d'avoir quatre éléments, mais elle en contient en fait "
"trois : \"*fee*\", \"*fiefoo*\" et \"*fum*\". Toujours ajouter la virgule "
"permet d'éviter cette source d'erreur."
#: ../Doc/faq/design.rst:806
msgid ""
"Allowing the trailing comma may also make programmatic code generation "
"easier."
msgstr ""
"Permettre la virgule de fin peut également faciliter la génération de code."
#~ msgid "Practical answer:"
#~ msgstr "Réponse concrète :"

View File

@ -35,10 +35,15 @@ msgid ""
"exceptions and even new types in C. This is explained in the document :ref:"
"`extending-index`."
msgstr ""
"Oui, vous pouvez créer des modules intégrés contenant des fonctions, des "
"variables, des exceptions et même de nouveaux types en C. Ceci est expliqué "
"dans le document :ref:`extending-index`."
#: ../Doc/faq/extending.rst:22
msgid "Most intermediate or advanced Python books will also cover this topic."
msgstr ""
"La plupart des livres Python intermédiaires ou avancés couvrent également ce "
"sujet."
#: ../Doc/faq/extending.rst:26
msgid "Can I create my own functions in C++?"
@ -77,6 +82,11 @@ msgid ""
"Cython and Pyrex make it possible to write an extension without having to "
"learn Python's C API."
msgstr ""
"`Cython <http://cython.org>`_ et son cousin `Pyrex <https://www.cosc."
"canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ sont des compilateurs qui "
"acceptent une forme légèrement modifiée de Python et produisent du code C "
"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir "
"à connaître l'API C de Python."
#: ../Doc/faq/extending.rst:50
msgid ""
@ -88,10 +98,19 @@ msgid ""
"html>`_, or `Weave <https://github.com/scipy/weave>`_ are also alternatives "
"for wrapping C++ libraries."
msgstr ""
"Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour "
"laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer "
"d'encapsuler les types de données et fonctions de la bibliothèque avec un "
"outil tel que `SWIG <http://www.swig.org>`_. `SIP <https://"
"riverbankcomputing.com/software/sip/intro>`__, `CXX <http://cxx.sourceforge."
"net/>`_, `Boost <http://www.boost.org/libs/python/doc/index.html>`_ ou "
"`Weave <https://github.com/scipy/weave>`_ sont également des alternatives "
"pour encapsuler des bibliothèques C++."
#: ../Doc/faq/extending.rst:61
msgid "How can I execute arbitrary Python statements from C?"
msgstr ""
"Comment puis-je exécuter des instructions quelconques Python à partir de C ?"
#: ../Doc/faq/extending.rst:63
msgid ""
@ -106,6 +125,7 @@ msgstr ""
#: ../Doc/faq/extending.rst:72
msgid "How can I evaluate an arbitrary Python expression from C?"
msgstr ""
"Comment puis-je évaluer une expression quelconque de Python à partir de C ?"
#: ../Doc/faq/extending.rst:74
msgid ""
@ -113,10 +133,13 @@ msgid ""
"start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it "
"and returns its value."
msgstr ""
"Appelez la fonction :c:func:`PyRun_String` de la question précédente avec le "
"symbole de départ :c:data:`Py_eval_input` ; il analyse une expression, "
"l'évalue et renvoie sa valeur."
#: ../Doc/faq/extending.rst:80
msgid "How do I extract C values from a Python object?"
msgstr ""
msgstr "Comment puis-je extraire des donnés en C d'un objet Python ?"
#: ../Doc/faq/extending.rst:82
msgid ""
@ -125,6 +148,10 @@ msgid ""
"specified index. Lists have similar functions, :c:func:`PyListSize` and :c:"
"func:`PyList_GetItem`."
msgstr ""
"Cela dépend du type d'objet. Si c'est un tuple, :c:func:`PyTuple_Size` "
"renvoie sa longueur et :c:func:`PyTuple_GetItem` renvoie l'élément à l'index "
"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :"
"c:func:`PyList_GetItem`."
#: ../Doc/faq/extending.rst:87
msgid ""
@ -133,6 +160,10 @@ msgid ""
"Note that Python bytes objects may contain null bytes so C's :c:func:"
"`strlen` should not be used."
msgstr ""
"Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:"
"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa longueur. "
"Notez que les objets bytes en Python peuvent contenir des valeurs nulles, "
"c'est pourquoi il ne faut pas utiliser la fonction C :c:func:`strlen`."
#: ../Doc/faq/extending.rst:92
msgid ""
@ -150,18 +181,26 @@ msgid ""
"as many other useful protocols such as numbers (:c:func:`PyNumber_Index` et "
"al.) and mappings in the PyMapping APIs."
msgstr ""
"Il y a aussi une API de haut niveau pour les objets Python qui est fournie "
"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus "
"de détails. Elle permet l'interfaçage avec tout type de séquence Python en "
"utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:"
"`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles "
"tels que les nombres (:c:func:`PyNumber_Index` et autres) et les "
"correspondances dans les APIs PyMapping."
#: ../Doc/faq/extending.rst:104
msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?"
msgstr ""
"Comment utiliser Py_BuildValue() pour créer un tuple de longueur définie ?"
#: ../Doc/faq/extending.rst:106
msgid "You can't. Use :c:func:`PyTuple_Pack` instead."
msgstr ""
msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place."
#: ../Doc/faq/extending.rst:110
msgid "How do I call an object's method from C?"
msgstr ""
msgstr "Comment puis-je appeler la méthode d'un objet à partir de C ?"
#: ../Doc/faq/extending.rst:112
msgid ""
@ -170,6 +209,10 @@ msgid ""
"to call, a format string like that used with :c:func:`Py_BuildValue`, and "
"the argument values::"
msgstr ""
"La fonction :c:func:`PyObject_CallMethod` peut être utilisée pour appeler la "
"méthode d'un objet. Les paramètres sont l'objet, le nom de la méthode à "
"appeler, une chaîne de caractères comme celle utilisée pour :c:func:"
"`Py_BuildValue` et les valeurs des arguments ::"
#: ../Doc/faq/extending.rst:121
msgid ""
@ -177,12 +220,17 @@ msgid ""
"defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the "
"return value."
msgstr ""
"Cela fonctionne pour tous les objets qui ont des méthodes — qu'elles soient "
"intégrées ou définies par l'utilisateur. Vous êtes responsable de « :c:func:"
"`Py_DECREF`\\ *er* » la valeur de retour à la fin."
#: ../Doc/faq/extending.rst:124
msgid ""
"To call, e.g., a file object's \"seek\" method with arguments 10, 0 "
"(assuming the file object pointer is \"f\")::"
msgstr ""
"Pour appeler, p. ex., la méthode *seek* d'un objet *file* avec les arguments "
"10, 0 (en supposant que le pointeur de l'objet fichier est *f*) ::"
#: ../Doc/faq/extending.rst:135
msgid ""
@ -191,12 +239,18 @@ msgid ""
"format, and to call a function with one argument, surround the argument in "
"parentheses, e.g. \"(i)\"."
msgstr ""
"Notez que :c:func:`PyObject_CallObject` veut *toujours* un tuple comme liste "
"d'arguments. Aussi, pour appeler une fonction sans arguments, utilisez "
"\"()\" pour être conforme au type et, pour appeler une fonction avec un "
"paramètre, entourez-le de parenthèses, p. ex. \"(i)\"."
#: ../Doc/faq/extending.rst:142
msgid ""
"How do I catch the output from PyErr_Print() (or anything that prints to "
"stdout/stderr)?"
msgstr ""
"Comment puis-je récupérer la sortie de ``PyErr_Print()`` (ou tout ce qui "
"s'affiche sur *stdout*/*stderr*) ?"
#: ../Doc/faq/extending.rst:144
msgid ""
@ -205,22 +259,29 @@ msgid ""
"print_error, or just allow the standard traceback mechanism to work. Then, "
"the output will go wherever your ``write()`` method sends it."
msgstr ""
"Dans le code Python, définissez un objet qui possède la méthode ``write()``. "
"Affectez cet objet à :data:`sys.stdout` et :data:`sys.stderr`. Appelez "
"*print_error* ou faites simplement en sorte que le mécanisme standard de "
"remontée des erreurs fonctionne. Ensuite, la sortie sera dirigée vers "
"l'endroit où votre méthode ``write()`` écrit."
#: ../Doc/faq/extending.rst:149
msgid "The easiest way to do this is to use the :class:`io.StringIO` class:"
msgstr ""
"La façon la plus simple consiste à utiliser la classe :class:`io.StringIO` :"
#: ../Doc/faq/extending.rst:161
msgid "A custom object to do the same would look like this:"
msgstr ""
"Le code d'un objet à la fonctionnalité similaire ressemblerait à ceci :"
#: ../Doc/faq/extending.rst:182
msgid "How do I access a module written in Python from C?"
msgstr ""
msgstr "Comment accéder à un module écrit en Python à partir de C ?"
#: ../Doc/faq/extending.rst:184
msgid "You can get a pointer to the module object as follows::"
msgstr ""
msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit ::"
#: ../Doc/faq/extending.rst:188
msgid ""
@ -230,22 +291,32 @@ msgid ""
"module into any namespace -- it only ensures it has been initialized and is "
"stored in :data:`sys.modules`."
msgstr ""
"Si le module n'a pas encore été importé (c.-à-d. qu'il n'est pas encore "
"présent dans :data:`sys.modules`), cela initialise le module ; sinon il "
"renvoie simplement la valeur de ``sys.modules[\"<modulename>\"]``. Notez "
"qu'il n'inscrit le module dans aucun espace de nommage — il s'assure "
"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys."
"modules`."
#: ../Doc/faq/extending.rst:194
msgid ""
"You can then access the module's attributes (i.e. any name defined in the "
"module) as follows::"
msgstr ""
"Vous pouvez alors accéder aux attributs du module (c.-à-d. à tout nom défini "
"dans le module) comme suit ::"
#: ../Doc/faq/extending.rst:199
msgid ""
"Calling :c:func:`PyObject_SetAttrString` to assign to variables in the "
"module also works."
msgstr ""
"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux "
"variables du module fonctionne également."
#: ../Doc/faq/extending.rst:204
msgid "How do I interface to C++ objects from Python?"
msgstr ""
msgstr "Comment s'interfacer avec les objets C++ depuis Python ?"
#: ../Doc/faq/extending.rst:206
msgid ""
@ -256,14 +327,22 @@ msgid ""
"building a new Python type around a C structure (pointer) type will also "
"work for C++ objects."
msgstr ""
"Selon vos besoins, de nombreuses approches sont possibles. Pour le faire "
"manuellement, commencez par lire :ref:`le document \"Extension et intégration"
"\" <extending-index>`. Sachez que pour le système d'exécution Python, il n'y "
"a pas beaucoup de différence entre C et C++ — donc la méthode pour "
"construire un nouveau type Python à partir d'une structure C (pointeur) "
"fonctionne également avec des objets en C++."
#: ../Doc/faq/extending.rst:212
msgid "For C++ libraries, see :ref:`c-wrapper-software`."
msgstr ""
msgstr "Pour les bibliothèques C++, voir :ref:`c-wrapper-software`."
#: ../Doc/faq/extending.rst:216
msgid "I added a module using the Setup file and the make fails; why?"
msgstr ""
"J'ai ajouté un module en utilisant le fichier *Setup* et la compilation "
"échoue ; pourquoi ?"
#: ../Doc/faq/extending.rst:218
msgid ""
@ -271,30 +350,40 @@ msgid ""
"fails. (Fixing this requires some ugly shell script hackery, and this bug "
"is so minor that it doesn't seem worth the effort.)"
msgstr ""
"Le fichier *Setup* doit se terminer par une ligne vide, s'il n'y a pas de "
"ligne vide, le processus de compilation échoue (ce problème peut se régler "
"en bidouillant un script shell, et ce bogue est si mineur qu'il ne mérite "
"pas qu'on s'y attarde)."
#: ../Doc/faq/extending.rst:224
msgid "How do I debug an extension?"
msgstr ""
msgstr "Comment déboguer une extension ?"
#: ../Doc/faq/extending.rst:226
msgid ""
"When using GDB with dynamically loaded extensions, you can't set a "
"breakpoint in your extension until your extension is loaded."
msgstr ""
"Lorsque vous utilisez GDB avec des extensions chargées dynamiquement, vous "
"ne pouvez pas placer de point d'arrêt dans votre extension tant que celle-ci "
"n'est pas chargée."
#: ../Doc/faq/extending.rst:229
msgid "In your ``.gdbinit`` file (or interactively), add the command:"
msgstr ""
"Dans votre fichier ``.gdbinit`` (ou manuellement), ajoutez la commande :"
#: ../Doc/faq/extending.rst:235
msgid "Then, when you run GDB:"
msgstr ""
msgstr "Ensuite, lorsque vous exécutez GDB :"
#: ../Doc/faq/extending.rst:247
msgid ""
"I want to compile a Python module on my Linux system, but some files are "
"missing. Why?"
msgstr ""
"Je veux compiler un module Python sur mon système Linux, mais il manque "
"certains fichiers. Pourquoi ?"
#: ../Doc/faq/extending.rst:249
msgid ""
@ -302,18 +391,25 @@ msgid ""
"{x}/config/` directory, which contains various files required for compiling "
"Python extensions."
msgstr ""
"La plupart des versions pré-compilées de Python n'incluent pas le "
"répertoire :file:`/usr/lib/python2.{x}/config/`, qui contient les différents "
"fichiers nécessaires à la compilation des extensions Python."
#: ../Doc/faq/extending.rst:253
msgid "For Red Hat, install the python-devel RPM to get the necessary files."
msgstr ""
"Pour Red Hat, installez le RPM *python-devel* pour obtenir les fichiers "
"nécessaires."
#: ../Doc/faq/extending.rst:255
msgid "For Debian, run ``apt-get install python-dev``."
msgstr ""
msgstr "Pour Debian, exécutez ``apt-get install python-dev``."
#: ../Doc/faq/extending.rst:259
msgid "How do I tell \"incomplete input\" from \"invalid input\"?"
msgstr ""
"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une "
 entrée invalide » (*invalid input*) ?"
#: ../Doc/faq/extending.rst:261
msgid ""
@ -323,12 +419,19 @@ msgid ""
"parentheses or triple string quotes), but it gives you a syntax error "
"message immediately when the input is invalid."
msgstr ""
"Parfois vous souhaitez émuler le comportement de l'interpréteur interactif "
"Python, quand il vous donne une invite de continuation lorsque l'entrée est "
"incomplète (par exemple, vous avez tapé le début d'une instruction \"if\" ou "
"vous n'avez pas fermé vos parenthèses ou triple guillemets) mais il vous "
"renvoie immédiatement une erreur syntaxique quand la saisie est incorrecte."
#: ../Doc/faq/extending.rst:267
msgid ""
"In Python you can use the :mod:`codeop` module, which approximates the "
"parser's behavior sufficiently. IDLE uses this, for example."
msgstr ""
"En Python, vous pouvez utiliser le module :mod:`codeop`, qui se rapproche "
"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise."
#: ../Doc/faq/extending.rst:270
msgid ""
@ -338,6 +441,12 @@ msgid ""
"to point at your custom input function. See ``Modules/readline.c`` and "
"``Parser/myreadline.c`` for more hints."
msgstr ""
"La façon la plus simple de le faire en C est d'appeler :c:func:"
"`PyRun_InteractiveLoop` (peut-être dans un autre fil d'exécution) et laisser "
"l'interpréteur Python gérer l'entrée pour vous. Vous pouvez également "
"définir :c:func:`PyOS_ReadlineFunctionPointer` pour pointer vers votre "
"fonction d'entrée personnalisée. Voir ``Modules/readline.c`` et ``Parser/"
"myreadline.c`` pour plus de conseils."
#: ../Doc/faq/extending.rst:276
msgid ""
@ -360,10 +469,21 @@ msgid ""
"\". Here is a complete example using the GNU readline library (you may want "
"to ignore **SIGINT** while calling readline())::"
msgstr ""
"Une autre solution est d'essayer de compiler la chaîne reçue avec :c:func:"
"`Py_CompileString`. Si cela se compile sans erreur, essayez d'exécuter "
"l'objet code renvoyé en appelant :c:func:`PyEval_EvalCode`. Sinon, "
"enregistrez l'entrée pour plus tard. Si la compilation échoue, vérifiez s'il "
"s'agit d'une erreur ou s'il faut juste plus de données — en extrayant la "
"chaîne de message du tuple d'exception et en la comparant à la chaîne *"
"\"unexpected EOF while parsing\"*. Voici un exemple complet d'utilisation de "
"la bibliothèque *readline* de GNU (il vous est possible d'ignorer **SIGINT** "
"lors de l'appel à ``readline()``) ::"
#: ../Doc/faq/extending.rst:430
msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?"
msgstr ""
"Comment puis-je trouver les symboles g++ indéfinis ``__builtin_new`` ou "
"``__pure_virtual`` ?"
#: ../Doc/faq/extending.rst:432
msgid ""
@ -371,18 +491,27 @@ msgid ""
"it using g++ (change LINKCC in the Python Modules Makefile), and link your "
"extension module using g++ (e.g., ``g++ -shared -o mymodule.so mymodule.o``)."
msgstr ""
"Pour charger dynamiquement les modules d'extension g++, vous devez "
"recompiler Python, effectuer l'édition de liens en utilisant g++ (modifiez "
"*LINKCC* dans le *Python Modules Makefile*), et effectuer l'édition de liens "
"de votre module d'extension avec g++ (par exemple, ``g++ -shared -o mymodule."
"so mymodule.o``)."
#: ../Doc/faq/extending.rst:438
msgid ""
"Can I create an object class with some methods implemented in C and others "
"in Python (e.g. through inheritance)?"
msgstr ""
"Puis-je créer une classe d'objets avec certaines méthodes implémentées en C "
"et d'autres en Python (p. ex. en utilisant l'héritage) ?"
#: ../Doc/faq/extending.rst:440
msgid ""
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
"`list`, :class:`dict`, etc."
msgstr ""
"Oui, vous pouvez hériter de classes intégrées telles que :class:`int`, :"
"class:`list`, :class:`dict`, etc."
#: ../Doc/faq/extending.rst:443
msgid ""
@ -390,3 +519,6 @@ msgid ""
"html) provides a way of doing this from C++ (i.e. you can inherit from an "
"extension class written in C++ using the BPL)."
msgstr ""
"La bibliothèque *Boost Python Library* (BPL, http://www.boost.org/libs/"
"python/doc/index.html) fournit un moyen de le faire depuis C++ (c.-à-d. que "
"vous pouvez hériter d'une classe d'extension écrite en C++ en utilisant BPL)."

View File

@ -270,10 +270,11 @@ msgstr ""
"protocoles Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, script CGI), "
"ingénierie logicielle (tests unitaires, enregistrement, analyse de code "
"Python), et interfaces pour systèmes d'exploitation (appels système, système "
"de fichiers, *socket* TCP/IP). Regardez la table des matières :ref:`library-"
"index` pour avoir une idée de ce qui est disponible. Une grande variété de "
"greffons tiers existent aussi. Consultez `le sommaire des paquets Python "
"<https://pypi.org>`_ pour trouver les paquets qui pourraient vous intéresser."
"de fichiers, connecteurs TCP/IP). Regardez la table des matières :ref:"
"`library-index` pour avoir une idée de ce qui est disponible. Une grande "
"variété de greffons tiers existent aussi. Consultez `le sommaire des paquets "
"Python <https://pypi.org>`_ pour trouver les paquets qui pourraient vous "
"intéresser."
#: ../Doc/faq/general.rst:125
msgid "How does the Python version numbering scheme work?"
@ -411,7 +412,7 @@ msgid ""
"source for the documentation is part of the Python source distribution."
msgstr ""
"La documentation est écrite au format *reStructuredText* et traitée par "
"l'outil de documentation Sphinx <http://sphinx-doc.org/>`__. La source du "
"l'outil de documentation `Sphinx <http://sphinx-doc.org/>`__. La source du "
"*reStructuredText* pour la documentation constitue une partie des sources de "
"Python."
@ -769,12 +770,12 @@ msgid ""
"for a PEP titled \"Python X.Y Release Schedule\", where X.Y is a version "
"that hasn't been publicly released yet."
msgstr ""
"Regardez https://www.python.org/dev/peps/ pour Python Enhancement Proposals "
"(PEPs). PEPs sont des documents techniques qui décrivent une nouvelle "
"fonctionnalité qui a été suggérée pour Python, en fournissant une "
"spécification technique concise et logique. Recherchez une PEP intitulée "
"\"Python X.Y Release Schedule\", où X.Y est la version qui n'a pas encore "
"été publiée."
"Regardez les propositions d'amélioration de Python (« *Python Enhancement "
"Proposals* », ou *PEP*) sur https://www.python.org/dev/peps/. Les PEP sont "
"des documents techniques qui décrivent une nouvelle fonctionnalité qui a été "
"suggérée pour Python, en fournissant une spécification technique concise et "
"logique. Recherchez une PEP intitulée \"Python X.Y Release Schedule\", où X."
"Y est la version qui n'a pas encore été publiée."
#: ../Doc/faq/general.rst:361
msgid ""

View File

@ -31,7 +31,9 @@ msgstr "Questions générales sur l'interface graphique"
#: ../Doc/faq/gui.rst:18
msgid "What platform-independent GUI toolkits exist for Python?"
msgstr "Quelles boites à outils multi-plateforme existe-t-il sur Python ?"
msgstr ""
"Quelles bibliothèques d'interfaces graphiques multi-plateformes existent en "
"Python ?"
#: ../Doc/faq/gui.rst:20
msgid ""
@ -40,12 +42,12 @@ msgid ""
"known to be Python 3-compatible."
msgstr ""
"Selon les plateformes que vous comptez utiliser, il en existe plusieurs. "
"Certaines ne sont cependant pas encore disponible en Python 3. A minima, "
"`Tkinter`_ et `Qt`_ sont connus pour être compatible avec Python 3."
"Certaines ne sont cependant pas encore disponibles en Python 3. A minima, "
"`Tkinter`_ et `Qt`_ sont connus pour être compatibles avec Python 3."
#: ../Doc/faq/gui.rst:27
msgid "Tkinter"
msgstr "Tkinter"
msgstr "*Tkinter*"
#: ../Doc/faq/gui.rst:29
msgid ""
@ -57,6 +59,14 @@ msgid ""
"tk>`_. Tcl/Tk is fully portable to the Mac OS X, Windows, and Unix "
"platforms."
msgstr ""
"Les versions standards de Python incluent une interface orientée objet pour "
"le jeu d'objets graphiques *Tcl/Tk*, appelée :ref:`tkinter <Tkinter>`. "
"C'est probablement la plus facile à installer (puisqu'elle est incluse avec "
"la plupart des `distributions binaires <https://www.python.org/downloads/>`_ "
"de Python) et à utiliser. Pour plus d'informations sur *Tk*, y compris les "
"liens vers les sources, voir la page d'accueil `Tcl/Tk <https://www.tcl."
"tk>`_. *Tcl/Tk* est entièrement portable sur les plates-formes Mac OS X, "
"Windows et Unix."
#: ../Doc/faq/gui.rst:38
msgid "wxWidgets"
@ -70,6 +80,11 @@ msgid ""
"targets. Language bindings are available for a number of languages "
"including Python, Perl, Ruby, etc."
msgstr ""
"`wxWidgets` (https://www.wxwidgets.org) est une librairie de classe IUG "
"portable et gratuite écrite en C++ qui fournit une apparence native sur un "
"certain nombre de plates-formes, elle est notamment en version stable pour "
"Windows, Mac OS X, GTK et X11. Des clients sont disponibles pour un certain "
"nombre de langages, y compris Python, Perl, Ruby, etc."
#: ../Doc/faq/gui.rst:46
msgid ""
@ -91,10 +106,14 @@ msgid ""
"licences that allow their use in commercial products as well as in freeware "
"or shareware."
msgstr ""
"*wxWidgets* et *wxPython* sont tous deux des logiciels libres, open source, "
"avec des licences permissives qui permettent leur utilisation dans des "
"produits commerciaux ainsi que dans des logiciels gratuits ou contributifs "
"(*shareware*)."
#: ../Doc/faq/gui.rst:58
msgid "Qt"
msgstr ""
msgstr "*Qt*"
#: ../Doc/faq/gui.rst:60
msgid ""
@ -106,16 +125,26 @@ msgid ""
"com/commercial/license-faq>`_ if you want to write proprietary "
"applications. PySide is free for all applications."
msgstr ""
"Il existe des liens disponibles pour la boîte à outils *Qt* (en utilisant "
"soit `PyQt <https://riverbankcomputing.com/software/pyqt/intro>`_ ou `PySide "
"<https://wiki.qt.io/PySide>`_) et pour *KDE* (`PyKDE4 <https://techbase.kde."
"org/Languages/Python/Using_PyKDE_4>`__). *PyQt* est actuellement plus mûre "
"que *PySide*, mais*PyQt* nécessite d'acheter une licence de `Riverbank "
"Computing <https://www.riverbankcomputing.com/commercial/license-faq>`_ si "
"vous voulez écrire des applications propriétaires. *PySide* est gratuit "
"pour toutes les applications."
#: ../Doc/faq/gui.rst:67
msgid ""
"Qt 4.5 upwards is licensed under the LGPL license; also, commercial licenses "
"are available from `The Qt Company <https://www.qt.io/licensing/>`_."
msgstr ""
"*Qt >= 4.5* est sous licence LGPL ; de plus, des licences commerciales sont "
"disponibles auprès de `The Qt Company <https://www.qt.io/licensing/>`_."
#: ../Doc/faq/gui.rst:71
msgid "Gtk+"
msgstr ""
msgstr "*Gtk+*"
#: ../Doc/faq/gui.rst:73
msgid ""
@ -133,7 +162,7 @@ msgstr ""
#: ../Doc/faq/gui.rst:81
msgid "Kivy"
msgstr ""
msgstr "*Kivy*"
#: ../Doc/faq/gui.rst:83
msgid ""
@ -142,15 +171,20 @@ msgid ""
"(Android, iOS). It is written in Python and Cython, and can use a range of "
"windowing backends."
msgstr ""
"`*Kivy* <https://kivy.org/>`_ est une bibliothèque GUI multi-plateformes "
"disponible à la fois sur les systèmes d'exploitation de bureau (Windows, "
"MacOS, Linux) et les appareils mobiles (Android, iOS). Elle est écrite en "
"Python et Cython, et peut utiliser une série de fenêtres de *backends*."
#: ../Doc/faq/gui.rst:88
msgid ""
"Kivy is free and open source software distributed under the MIT license."
msgstr ""
"*Kivy* est un logiciel libre et open source distribué sous licence MIT."
#: ../Doc/faq/gui.rst:91
msgid "FLTK"
msgstr ""
msgstr "*FLTK*"
#: ../Doc/faq/gui.rst:93
msgid ""
@ -158,18 +192,24 @@ msgid ""
"powerful and mature cross-platform windowing system, are available from `the "
"PyFLTK project <http://pyfltk.sourceforge.net>`_."
msgstr ""
"Les liaisons Python pour `the FLTK toolkit <http://www.fltk.org>`_, un "
"système de fenêtrage multi-plateformes simple mais puissant et mûr, sont "
"disponibles auprès de `the PyFLTK project <http://pyfltk.sourceforge.net>`_."
#: ../Doc/faq/gui.rst:98
msgid "OpenGL"
msgstr ""
msgstr "*OpenGL*"
#: ../Doc/faq/gui.rst:100
msgid "For OpenGL bindings, see `PyOpenGL <http://pyopengl.sourceforge.net>`_."
msgstr ""
"Pour les clients OpenGL, voir `PyOpenGL <http://pyopengl.sourceforge.net>`_."
#: ../Doc/faq/gui.rst:104
msgid "What platform-specific GUI toolkits exist for Python?"
msgstr ""
"Quelles boîtes à outils IUG spécifiques à la plate-forme existent pour "
"Python ?"
#: ../Doc/faq/gui.rst:106
msgid ""
@ -183,14 +223,17 @@ msgid ""
"Microsoft Foundation Classes and a Python programming environment that's "
"written mostly in Python using the MFC classes."
msgstr ""
":ref:`Pythonwin <windows-faq>` de Mark Hammond inclut une interface vers les "
"classes `Microsoft Foundation Classes` et un environnement de programmation "
"Python qui est écrit principalement en Python utilisant les classes *MFC*."
#: ../Doc/faq/gui.rst:116
msgid "Tkinter questions"
msgstr ""
msgstr "Questions à propos de *Tkinter*"
#: ../Doc/faq/gui.rst:119
msgid "How do I freeze Tkinter applications?"
msgstr ""
msgstr "Comment puis-je geler (*freezer*) les applications *Tkinter* ?"
#: ../Doc/faq/gui.rst:121
msgid ""
@ -198,6 +241,10 @@ msgid ""
"applications, the applications will not be truly stand-alone, as the "
"application will still need the Tcl and Tk libraries."
msgstr ""
"*Freeze* est un outil pour créer des applications autonomes. Lors du "
"*freezage* des applications Tkinter, les applications ne seront pas vraiment "
"autonomes, car l'application aura toujours besoin des bibliothèques Tcl et "
"Tk."
#: ../Doc/faq/gui.rst:125
msgid ""
@ -205,6 +252,9 @@ msgid ""
"point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:"
"`TK_LIBRARY` environment variables."
msgstr ""
"Une solution consiste à empaqueter les bibliothèques *Tcl* et *Tk* dans "
"l'application et de les retrouver à l'exécution en utilisant les variables "
"d'environnement :envvar:`TCL_LIBRARY` et :envvar:`TK_LIBRARY`."
#: ../Doc/faq/gui.rst:129
msgid ""
@ -213,6 +263,10 @@ msgid ""
"is SAM (stand-alone modules), which is part of the Tix distribution (http://"
"tix.sourceforge.net/)."
msgstr ""
"Pour obtenir des applications vraiment autonomes, les scripts *Tcl* qui "
"forment la bibliothèque doivent également être intégrés dans l'application. "
"Un outil supportant cela est *SAM* (modules autonomes), qui fait partie de "
"la distribution *Tix* (http://tix.sourceforge.net/)."
#: ../Doc/faq/gui.rst:134
msgid ""
@ -220,10 +274,14 @@ msgid ""
"`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link "
"with libtclsam and libtksam (you might include the Tix libraries as well)."
msgstr ""
"Compilez Tix avec SAM activé, exécutez l'appel approprié à :c:func:"
"`Tclsam_init`, etc. dans le fichier :file:`Modules/tkappinit.c` de Python, "
"et liez avec *libtclsam* et *libtksam* (il est également possible d'inclure "
"les bibliothèques *Tix*)."
#: ../Doc/faq/gui.rst:141
msgid "Can I have Tk events handled while waiting for I/O?"
msgstr ""
msgstr "Puis-je modifier des événements *Tk* pendant l'écoute des *E/S* ?"
#: ../Doc/faq/gui.rst:143
msgid ""
@ -233,10 +291,18 @@ msgid ""
"function which will be called from the Tk mainloop when I/O is possible on a "
"file descriptor. See :ref:`tkinter-file-handlers`."
msgstr ""
"Sur d'autres plates-formes que Windows, oui, et vous n'avez même pas besoin "
"de fils d'exécution multiples ! Mais vous devrez restructurer un peu votre "
"code *E/S*. *Tk* possède l'équivalent de l'appel :c:func:`XtAddInput()` de "
"*Xt*, qui vous permet d'enregistrer une fonction de *callback* qui sera "
"appelée par la boucle principale *Tk* lorsque des *E/S* sont disponibles sur "
"un descripteur de fichier. Voir :ref:`tkinter-file-handlers`."
#: ../Doc/faq/gui.rst:151
msgid "I can't get key bindings to work in Tkinter: why?"
msgstr ""
"Je n'arrive pas à faire fonctionner les raccourcis clavier dans *Tkinter* : "
"pourquoi ?"
#: ../Doc/faq/gui.rst:153
msgid ""
@ -244,6 +310,9 @@ msgid ""
"meth:`bind` method don't get handled even when the appropriate key is "
"pressed."
msgstr ""
"Une raison récurrente est que les gestionnaires dévènements liés à des "
"évènements avec la méthode :meth:`bind` ne sont pas pris en charge même "
"lorsque la touche appropriée est activée."
#: ../Doc/faq/gui.rst:156
msgid ""
@ -252,3 +321,8 @@ msgid ""
"focus command. Usually a widget is given the keyboard focus by clicking in "
"it (but not for labels; see the takefocus option)."
msgstr ""
"La cause la plus fréquente est que l'objet graphique auquel s'applique la "
"liaison n'a pas de « focus clavier ». Consultez la documentation *Tk* pour "
"la commande *focus*. Habituellement, un objet graphique reçoit le focus du "
"clavier en cliquant dessus (mais pas pour les étiquettes ; voir l'option "
"*takefocus*)."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/faq/installed.rst:3
msgid "\"Why is Python Installed on my Computer?\" FAQ"
msgstr "\"Pourquoi Python est installé sur mon ordinateur ?\" FAQ"
msgstr "FAQ \"Pourquoi Python est installé sur mon ordinateur ?\""
#: ../Doc/faq/installed.rst:6
msgid "What is Python?"
@ -80,7 +80,7 @@ msgstr ""
"Une application tierce installée sur votre machine écrite en Python "
"installera Python. Il existe de nombreuses applications de ce type, allant "
"de programme avec interface graphique, jusqu'aux scripts d'administration, "
"en passant par les serveurs ."
"en passant par les serveurs."
#: ../Doc/faq/installed.rst:29
msgid ""
@ -100,7 +100,7 @@ msgid ""
"installation."
msgstr ""
"Python est installé par défaut et à l'installation par de nombreux systèmes "
"Unix, comme Mac OS X et certaines distributions Linux."
"Unix, comme Mac OS X et certaines distributions Linux."
#: ../Doc/faq/installed.rst:38
msgid "Can I delete Python?"
@ -108,7 +108,7 @@ msgstr "Puis-je supprimer Python ?"
#: ../Doc/faq/installed.rst:40
msgid "That depends on where Python came from."
msgstr "Cela dépend de l'origine de Python ."
msgstr "Cela dépend de l'origine de Python."
#: ../Doc/faq/installed.rst:42
msgid ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -37,7 +37,7 @@ msgid ""
msgstr ""
"Ce n'est pas forcément une question simple. Si vous êtes déjà familier avec "
"le lancement de programmes depuis la ligne de commande de Windows alors tout "
"semblera évident; Sinon, vous auriez besoin d'être un peu guidé."
"semblera évident ; sinon, vous pourriez avoir besoin d'être un peu guidé."
#: ../Doc/faq/windows.rst:None
msgid "|Python Development on XP|_"
@ -80,7 +80,7 @@ msgid ""
"you might just as easily see something like:"
msgstr ""
"La lettre peut être différente, et il peut y avoir d'autres choses à la "
"suite, alors il se peut aussi bien que vous voyez quelque chose tel que :"
"suite, alors il se peut que ça ressemble également à ça :"
#: ../Doc/faq/windows.rst:57
msgid ""
@ -119,7 +119,7 @@ msgstr ""
#: ../Doc/faq/windows.rst:75
msgid "You should then see something like:"
msgstr "Vous devez vous trouver face à quelque chose comme ça :"
msgstr "Vous devez voir quelque chose comme ça :"
#: ../Doc/faq/windows.rst:83
msgid ""
@ -313,6 +313,13 @@ msgid ""
"``PyInit_foo()`` to initialize it. You do not link your .exe with foo.lib, "
"as that would cause Windows to require the DLL to be present."
msgstr ""
"Oui, les fichiers *.pyd* sont des fichiers *dll*, mais il y a quelques "
"différences. Si vous avez une *DLL* ``foo.pyd``, celle-ci doit posséder une "
"fonction ``PyInit_foo()``. Vous pouvez alors écrire en Python « *import "
"foo* » et Python recherchera le fichier *foo.pyd* (ainsi que *foo.py* et "
"*foo.pyc*); s'il le trouve, il tentera d'appeler ``PyInit_foo()`` pour "
"l'initialiser. Ne liez pas votre *.exe* avec *foo.lib* car dans ce cas "
"Windows aura besoin de la DLL."
#: ../Doc/faq/windows.rst:202
msgid ""
@ -324,16 +331,26 @@ msgid ""
"``__declspec(dllexport)``. In a .pyd, linkage is defined in a list of "
"available functions."
msgstr ""
"Notez que le chemin de recherche pour *foo.pyd* est *PYTHONPATH*, il est "
"différent de celui qu'utilise Windows pour rechercher *foo.dll*. De plus, "
"*foo.pyd* n'a pas besoin d'être présent pour que votre programme s'exécute "
"alors que si vous avez lié votre programme avec une *dll* celle-ci est "
"requise. Bien sûr *foo.pyd* est nécessaire si vous écrivez ``import foo``. "
"Dans une *DLL* le lien est déclaré dans le code source avec "
"``__declspec(dllexport)``. Dans un *.pyd* la liaison est définie dans une "
"liste de fonctions disponibles."
#: ../Doc/faq/windows.rst:211
msgid "How can I embed Python into a Windows application?"
msgstr ""
msgstr "Comment puis-je intégrer Python dans une application Windows ?"
#: ../Doc/faq/windows.rst:213
msgid ""
"Embedding the Python interpreter in a Windows app can be summarized as "
"follows:"
msgstr ""
"L'intégration de l'interpréteur Python dans une application Windows peut se "
"résumer comme suit :"
#: ../Doc/faq/windows.rst:215
msgid ""
@ -343,6 +360,12 @@ msgid ""
"it is typically installed in ``C:\\Windows\\System``. *NN* is the Python "
"version, a number such as \"33\" for Python 3.3."
msgstr ""
"Ne compilez **pas** Python directement dans votre fichier *.exe*. Sous "
"Windows, Python doit être une DLL pour pouvoir importer des modules qui sont "
"eux-mêmes des DLL (ceci constitue une information de première importance non "
"documentée). Au lieu de cela faites un lien vers :file:`python{NN}.dll` qui "
"est généralement placé dans ``C:\\Windows\\System``. *NN* étant la version "
"Python, par exemple « 33 » pour Python 3.3."
#: ../Doc/faq/windows.rst:221
msgid ""
@ -352,6 +375,12 @@ msgid ""
"the so-called \"import lib\" corresponding to :file:`python{NN}.dll`. It "
"merely defines symbols for the linker.)"
msgstr ""
"Vous pouvez créer un lien vers Python de deux manières différentes. Un lien "
"au moment du chargement signifie pointer vers :file:`python{NN}.lib`, tandis "
"qu'un lien au moment de l'exécution signifie pointer vers :file:`python{NN}."
"dll`. (Note générale : :file:`python{NN}.lib` est le soi-disant « *import "
"lib* » correspondant à :file:`python{NN}.dll`. Il définit simplement des "
"liens symboliques pour l'éditeur de liens.)"
#: ../Doc/faq/windows.rst:227
msgid ""
@ -363,12 +392,22 @@ msgid ""
"these pointers transparent to any C code that calls routines in Python's C "
"API."
msgstr ""
"La liaison en temps réel simplifie grandement les options de liaison ; tout "
"se passe au moment de l'exécution. Votre code doit charger :file:"
"`python{NN}.dll` en utilisant la routine Windows ``LoadLibraryEx()``. Le "
"code doit aussi utiliser des routines d'accès et des données dans :file:"
"`python{NN}.dll` (c'est-à-dire les API C de Python) en utilisant des "
"pointeurs obtenus par la routine Windows ``GetProcAddress()``. Les macros "
"peuvent rendre l'utilisation de ces pointeurs transparente à tout code C qui "
"appelle des routines dans l'API C de Python."
#: ../Doc/faq/windows.rst:234
msgid ""
"Borland note: convert :file:`python{NN}.lib` to OMF format using Coff2Omf."
"exe first."
msgstr ""
"Note Borland : convertir :file:`python{NN}.lib` au format OMF en utilisant "
"*Coff2Omf.exe* en premier."
#: ../Doc/faq/windows.rst:239
msgid ""
@ -378,6 +417,12 @@ msgid ""
"link *into* your .exe file (!) You do _not_ have to create a DLL file, and "
"this also simplifies linking."
msgstr ""
"Si vous utilisez SWIG, il est facile de créer un « module d'extension » "
"Python qui rendra les données et les méthodes de l'application disponibles "
"pour Python. SWIG s'occupera de tous les détails ennuyeux pour vous. Le "
"résultat est du code C que vous liez *dans* votre *fichier.exe* (!) Vous "
"n'avez **pas** besoin de créer un fichier DLL, et cela simplifie également "
"la liaison."
#: ../Doc/faq/windows.rst:245
msgid ""
@ -387,6 +432,12 @@ msgid ""
"classes, as you should, the init function will be called initleoc(). This "
"initializes a mostly hidden helper class used by the shadow class."
msgstr ""
"SWIG va créer une fonction d'initialisation (fonction en C) dont le nom "
"dépend du nom du module d'extension. Par exemple, si le nom du module est "
"*leo*, la fonction *init* sera appelée *initleo()*. Si vous utilisez des "
"classes *shadow* SWIG, comme vous le devriez, la fonction *init* sera "
"appelée *initleoc()*. Ceci initialise une classe auxiliaire invisible "
"utilisée par la classe *shadow*."
#: ../Doc/faq/windows.rst:251
msgid ""
@ -394,18 +445,26 @@ msgid ""
"calling the initialization function is equivalent to importing the module "
"into Python! (This is the second key undocumented fact.)"
msgstr ""
"La raison pour laquelle vous pouvez lier le code C à l'étape 2 dans votre "
"*fichier.exe* est que l'appel de la fonction d'initialisation équivaut à "
"importer le module dans Python ! (C'est le deuxième fait clé non documenté.)"
#: ../Doc/faq/windows.rst:255
msgid ""
"In short, you can use the following code to initialize the Python "
"interpreter with your extension module."
msgstr ""
"En bref, vous pouvez utiliser le code suivant pour initialiser "
"l'interpréteur Python avec votre module d'extension."
#: ../Doc/faq/windows.rst:266
msgid ""
"There are two problems with Python's C API which will become apparent if you "
"use a compiler other than MSVC, the compiler used to build pythonNN.dll."
msgstr ""
"Il y a deux problèmes avec l'API C de Python qui apparaîtront si vous "
"utilisez un compilateur autre que MSVC, le compilateur utilisé pour "
"construire *pythonNN.dll*."
#: ../Doc/faq/windows.rst:269
msgid ""
@ -414,12 +473,19 @@ msgid ""
"compiler's notion of a struct FILE will be different. From an "
"implementation standpoint these are very _low_ level functions."
msgstr ""
"Problème 1 : Les fonctions dites de \"Très Haut Niveau\" qui prennent les "
"arguments FILE * ne fonctionneront pas dans un environnement multi-"
"compilateur car chaque compilateur aura une notion différente de la "
"structure de FILE. Du point de vue de l'implémentation, il s'agit de "
"fonctions de très bas niveau."
#: ../Doc/faq/windows.rst:274
msgid ""
"Problem 2: SWIG generates the following code when generating wrappers to "
"void functions:"
msgstr ""
"Problème 2 : SWIG génère le code suivant lors de la génération "
"*d'encapsuleurs* pour annuler les fonctions :"
#: ../Doc/faq/windows.rst:283
msgid ""
@ -427,6 +493,10 @@ msgid ""
"structure called _Py_NoneStruct inside pythonNN.dll. Again, this code will "
"fail in a mult-compiler environment. Replace such code by:"
msgstr ""
"Hélas, *Py_None* est une macro qui se développe en référence à une structure "
"de données complexe appelée *_Py_NoneStruct* dans *pythonNN.dll*. Encore "
"une fois, ce code échouera dans un environnement multi-compilateur. "
"Remplacez ce code par :"
#: ../Doc/faq/windows.rst:291
msgid ""
@ -434,6 +504,9 @@ msgid ""
"automatically, though I have not been able to get this to work (I'm a "
"complete SWIG newbie)."
msgstr ""
"Il est possible d'utiliser la commande ``%typemap`` de SWIG pour effectuer "
"le changement automatiquement, bien que je n'ai pas réussi à le faire "
"fonctionner (je suis un débutant complet avec SWIG)."
#: ../Doc/faq/windows.rst:295
msgid ""
@ -446,6 +519,15 @@ msgid ""
"is a Python object (defined in your extension module) that contains read() "
"and write() methods."
msgstr ""
"Utiliser un script shell Python pour créer une fenêtre d'interpréteur Python "
"depuis votre application Windows n'est pas une bonne idée ; la fenêtre "
"résultante sera indépendante du système de fenêtrage de votre application. "
"Vous (ou la classe *wxPythonWindow*) devriez plutôt créer une fenêtre "
"d'interpréteur « native ». Il est facile de connecter cette fenêtre à "
"l'interpréteur Python. Vous pouvez rediriger l'entrée/sortie de Python vers "
"*n'importe quel* objet qui supporte la lecture et l'écriture, donc tout ce "
"dont vous avez besoin est un objet Python (défini dans votre module "
"d'extension) qui contient les méthodes *read()* et *write()*."
#: ../Doc/faq/windows.rst:304
msgid "How do I keep editors from inserting tabs into my Python source?"
@ -491,6 +573,8 @@ msgstr ""
#: ../Doc/faq/windows.rst:322
msgid "How do I check for a keypress without blocking?"
msgstr ""
"Comment puis-je vérifier de manière non bloquante qu'une touche a été "
"pressée ?"
#: ../Doc/faq/windows.rst:324
msgid ""
@ -498,6 +582,10 @@ msgid ""
"module. It defines a function ``kbhit()`` which checks whether a keyboard "
"hit is present, and ``getch()`` which gets one character without echoing it."
msgstr ""
"Utilisez le module ``msvcrt``. C'est une extension standard spécifique à "
"Windows, qui définit une fonction ``kbhit()`` qui vérifie si une pression de "
"touche s'est produite, et ``getch()`` qui récupère le caractère sans "
"l'afficher."
#: ../Doc/faq/windows.rst:330
msgid "How do I emulate os.kill() in Windows?"

View File

@ -71,7 +71,7 @@ msgid ""
"reference`."
msgstr ""
"*2to3* est disponible dans la bibliothèque standard sous le nom de :mod:"
"`lib2to3`; un point dentrée indépendant est fourni via :file:`Tools/"
"`lib2to3` ; un point dentrée indépendant est fourni via :file:`Tools/"
"scripts/2to3`. Cf. :ref:`2to3-reference`."
#: ../Doc/glossary.rst:29
@ -94,7 +94,7 @@ msgstr ""
"Les classes de base abstraites (ABC, suivant l'abréviation anglaise "
"*Abstract Base Class*) complètent le :term:`duck-typing` en fournissant un "
"moyen de définir des interfaces pour les cas où d'autres techniques comme :"
"func:`hasattr` seraient inélégantes ou subitement fausses (par exemple avec "
"func:`hasattr` seraient inélégantes ou subtilement fausses (par exemple avec "
"les :ref:`méthodes magiques <special-lookup>`). Les ABC introduisent des "
"sous-classes virtuelles qui n'héritent pas d'une classe mais qui sont quand "
"même reconnues par :func:`isinstance` ou :func:`issubclass` (voir la "
@ -115,7 +115,7 @@ msgid ""
"parameter or return value, used by convention as a :term:`type hint`."
msgstr ""
"Étiquette associée à une variable, un attribut de classe, un paramètre de "
"fonction ou une valeur de retour. Elle est utilisé par convention comme :"
"fonction ou une valeur de retour. Elle est utilisée par convention comme :"
"term:`type hint`."
#: ../Doc/glossary.rst:48
@ -148,7 +148,7 @@ msgid ""
"function. There are two kinds of argument:"
msgstr ""
"Valeur, donnée à une :term:`fonction` ou à une :term:`méthode` lors de son "
"appel. Il existe deux types d'arguments :"
"appel. Il existe deux types d'arguments :"
#: ../Doc/glossary.rst:61
msgid ""
@ -157,10 +157,10 @@ msgid ""
"by ``**``. For example, ``3`` and ``5`` are both keyword arguments in the "
"following calls to :func:`complex`::"
msgstr ""
":dfn:`argument nommé`: un argument précédé d'un identifiant (comme "
":dfn:`argument nommé` : un argument précédé d'un identifiant (comme "
"``name=``) ou un dictionnaire précédé de ``**``, lors d'un appel de "
"fonction. Par exemple, ``3`` et ``5`` sont tous les deux des arguments "
"nommés dans l'appel à :func:`complex` ici : ::"
"nommés dans l'appel à :func:`complex` ici ::"
#: ../Doc/glossary.rst:69
msgid ""
@ -169,10 +169,10 @@ msgid ""
"be passed as elements of an :term:`iterable` preceded by ``*``. For example, "
"``3`` and ``5`` are both positional arguments in the following calls::"
msgstr ""
":dfn:`argument positionnel` : Un argument qui n'est pas nommé. Les arguments "
":dfn:`argument positionnel` : un argument qui n'est pas nommé. Les arguments "
"positionnels apparaissent au début de la liste des arguments, ou donnés sous "
"forme d'un :term:`itérable` précédé par ``*``. Par exemple, ``3`` et ``5`` "
"sont tous les deux des arguments positionnels dans les appels suivants : ::"
"sont tous les deux des arguments positionnels dans les appels suivants ::"
#: ../Doc/glossary.rst:78
msgid ""
@ -193,9 +193,9 @@ msgid ""
"difference between arguments and parameters <faq-argument-vs-parameter>`, "
"and :pep:`362`."
msgstr ""
"Voir aussi :term:`parameter` dans le glossaire, la question :ref:"
"`Différence entre argument et paramètre <faq-argument-vs-parameter>` de la "
"FAQ et la :pep:`362`."
"Voir aussi :term:`parameter` dans le glossaire, la question :ref:`Différence "
"entre argument et paramètre <faq-argument-vs-parameter>` de la FAQ et la :"
"pep:`362`."
#: ../Doc/glossary.rst:86
msgid "asynchronous context manager"
@ -278,7 +278,7 @@ msgstr ""
"mémoire l'endroit et l'état de l'exécution (ce qui inclut les variables "
"locales et les *try* en cours). Lorsque l'exécution de l'itérateur de "
"générateur asynchrone reprend avec un nouvel *awaitable* renvoyé par :meth:"
"`__anext__`, elle repart de là où elle s'était arrêtée. Voir la :pep:`492` "
"`__anext__`, elle repart de là où elle s'était arrêtée. Voir la :pep:`492` "
"et la :pep:`525`."
#: ../Doc/glossary.rst:119
@ -338,9 +338,9 @@ msgid ""
"term:`coroutine` or an object with an :meth:`__await__` method. See also :"
"pep:`492`."
msgstr ""
"Objet pouvant être utilisé dans une expression :keyword:`await`. Peut être "
"une :term:`coroutine` ou un objet avec une méthode :meth:`__await__`. Voir "
"aussi la :pep:`492`."
"Objet pouvant être utilisé dans une expression :keyword:`await`. Ce peut "
"être une :term:`coroutine` ou un objet avec une méthode :meth:`__await__`. "
"Voir aussi la :pep:`492`."
#: ../Doc/glossary.rst:141
msgid "BDFL"
@ -383,7 +383,7 @@ msgstr ""
#: ../Doc/glossary.rst:156
msgid "bytes-like object"
msgstr "Objet bytes-compatible"
msgstr "objet octet-compatible"
#: ../Doc/glossary.rst:158
msgid ""
@ -413,7 +413,7 @@ msgstr ""
"Certaines opérations nécessitent de travailler sur des données binaires "
"variables. La documentation parle de ceux-ci comme des *read-write bytes-"
"like objects*. Par exemple, :class:`bytearray` ou une :class:`memoryview` "
"d'un :class:`bytearray` en font partie. D'autres opérations nécessitent de "
"d'un :class:`bytearray` en font partie. D'autres opérations nécessitent de "
"travailler sur des données binaires stockées dans des objets immuables (*"
"\"read-only bytes-like objects\"*), par exemples :class:`bytes` ou :class:"
"`memoryview` d'un objet :class:`byte`."
@ -522,7 +522,7 @@ msgstr ""
"imaginaire. Les nombres imaginaires sont les nombres réels multipliés par "
"l'unité imaginaire (la racine carrée de ``-1``, souvent écrite ``i`` en "
"mathématiques ou ``j`` par les ingénieurs). Python comprend nativement les "
"nombres complexes, écrits avec cette dernière notation : la partie "
"nombres complexes, écrits avec cette dernière notation : la partie "
"imaginaire est écrite avec un suffixe ``j``, exemple, ``3+1j``. Pour "
"utiliser les équivalents complexes de :mod:`math`, utilisez :mod:`cmath`. "
"Les nombres complexes sont un concept assez avancé en mathématiques. Si vous "
@ -626,7 +626,7 @@ msgid ""
msgstr ""
"Fonction dont la valeur de retour est une autre fonction. Un décorateur est "
"habituellement utilisé pour transformer une fonction via la syntaxe "
"``@wrapper``, dont les exemples typiques sont : :func:`classmethod` et :func:"
"``@wrapper``, dont les exemples typiques sont : :func:`classmethod` et :func:"
"`staticmethod`."
#: ../Doc/glossary.rst:261
@ -666,12 +666,12 @@ msgstr ""
"N'importe quel objet définissant les méthodes :meth:`__get__`, :meth:"
"`__set__`, ou :meth:`__delete__`. Lorsque l'attribut d'une classe est un "
"descripteur, son comportement spécial est déclenché lors de la recherche des "
"attributs. Normalement, lorsque vous écrivez *a.b* pour obtenir, affecter "
"ou effacer un attribut, Python recherche l'objet nommé *b* dans le "
"dictionnaire de la classe de *a*. Mais si *b* est un descripteur, c'est la "
"méthode de ce descripteur qui est alors appelée. Comprendre les descripteurs "
"est requis pour avoir une compréhension approfondie de Python, ils sont la "
"base de nombre de ses caractéristiques notamment les fonctions, méthodes, "
"attributs. Normalement, lorsque vous écrivez *a.b* pour obtenir, affecter ou "
"effacer un attribut, Python recherche l'objet nommé *b* dans le dictionnaire "
"de la classe de *a*. Mais si *b* est un descripteur, c'est la méthode de ce "
"descripteur qui est alors appelée. Comprendre les descripteurs est requis "
"pour avoir une compréhension approfondie de Python, ils sont la base de "
"nombre de ses caractéristiques notamment les fonctions, méthodes, "
"propriétés, méthodes de classes, méthodes statiques et les références aux "
"classes parentes."
@ -716,7 +716,7 @@ msgstr ""
#: ../Doc/glossary.rst:301
msgid "docstring"
msgstr "*docstring*"
msgstr "*docstring* (chaîne de documentation)"
#: ../Doc/glossary.rst:303
msgid ""
@ -727,8 +727,8 @@ msgid ""
"the canonical place for documentation of the object."
msgstr ""
"Première chaîne littérale qui apparaît dans l'expression d'une classe, "
"fonction, ou module. Bien qu'ignorée à l'exécution, elles est reconnue par "
"le compilateur et placée dans l'attribut :attr:`__doc__` de la classe, de la "
"fonction, ou module. Bien qu'ignorée à l'exécution, elle est reconnue par le "
"compilateur et placée dans l'attribut :attr:`__doc__` de la classe, de la "
"fonction ou du module. Comme cette chaîne est disponible par introspection, "
"c'est l'endroit idéal pour documenter l'objet."
@ -848,9 +848,9 @@ msgstr ""
"méthodes :meth:`read()` ou :meth:`write()`). En fonction de la manière dont "
"il a été créé, un objet fichier peut interfacer l'accès à un fichier sur le "
"disque ou à un autre type de stockage ou de communication (typiquement "
"l'entrée standard, la sortie standard, un tampon en mémoire, une socket "
"réseau, ...). Les objets fichiers sont aussi appelés :dfn:`file-like-"
"objects` ou :dfn:`streams`."
"l'entrée standard, la sortie standard, un tampon en mémoire, un connecteur "
"réseau). Les objets fichiers sont aussi appelés :dfn:`file-like-objects` "
"ou :dfn:`streams`."
#: ../Doc/glossary.rst:356
msgid ""
@ -860,7 +860,7 @@ msgid ""
"The canonical way to create a file object is by using the :func:`open` "
"function."
msgstr ""
"Il existe en réalité trois catégories de fichiers objets : les :term:"
"Il existe en réalité trois catégories de fichiers objets : les :term:"
"`fichiers binaires <fichier binaire>` bruts, les :term:`fichiers binaires "
"<fichier binaire>` avec tampon (*buffer*) et les :term:`fichiers textes "
"<fichier texte>`. Leurs interfaces sont définies dans le module :mod:`io`. "
@ -893,9 +893,9 @@ msgid ""
"<meta path finder>` for use with :data:`sys.meta_path`, and :term:`path "
"entry finders <path entry finder>` for use with :data:`sys.path_hooks`."
msgstr ""
"Depuis Python 3.3, il existe deux types de chercheurs : les :term:"
"Depuis Python 3.3, il existe deux types de chercheurs : les :term:"
"`chercheurs dans les méta-chemins <meta path finder>` à utiliser avec :data:"
"`sys.meta_path` ; les :term:`chercheurs d'entrée dans path <path entry "
"`sys.meta_path` ; les :term:`chercheurs d'entrée dans path <path entry "
"finder>` à utiliser avec :data:`sys.path_hooks`."
#: ../Doc/glossary.rst:373
@ -942,7 +942,7 @@ msgstr "annotation de fonction"
#: ../Doc/glossary.rst:389
msgid "An :term:`annotation` of a function parameter or return value."
msgstr ":term:`annotation` d'un paramètre de fonction ou valeur de retour"
msgstr ":term:`annotation` d'un paramètre de fonction ou valeur de retour."
#: ../Doc/glossary.rst:391
msgid ""
@ -966,7 +966,7 @@ msgid ""
"See :term:`variable annotation` and :pep:`484`, which describe this "
"functionality."
msgstr ""
"Voir :term:`variable annotation` et :pep:` 484`, qui décrivent cette "
"Voir :term:`variable annotation` et :pep:`484`, qui décrivent cette "
"fonctionnalité."
#: ../Doc/glossary.rst:403
@ -990,7 +990,7 @@ msgid ""
msgstr ""
"En important le module :mod:`__future__` et en affichant ses variables, vous "
"pouvez voir à quel moment une nouvelle fonctionnalité a été rajoutée dans le "
"langage et quand elle devient le comportement par défaut : ::"
"langage et quand elle devient le comportement par défaut ::"
#: ../Doc/glossary.rst:415
msgid "garbage collection"
@ -1226,7 +1226,7 @@ msgstr ""
#: ../Doc/glossary.rst:513
msgid "import path"
msgstr "chemin des imports"
msgstr "chemin des importations"
#: ../Doc/glossary.rst:515
msgid ""
@ -1237,7 +1237,7 @@ msgid ""
msgstr ""
"Liste de :term:`entrées <path entry>` dans lesquelles le :term:`chercheur "
"basé sur les chemins <path based finder>` cherche les modules à importer. "
"Typiquement, lors d'une importation, cette liste vient de :data:`sys.path` ; "
"Typiquement, lors d'une importation, cette liste vient de :data:`sys.path` ; "
"pour les sous-paquets, elle peut aussi venir de l'attribut ``__path__`` du "
"paquet parent."
@ -1323,9 +1323,10 @@ msgstr ""
"modules ou quelques structures de données internes. Il fait aussi quelques "
"appels au :term:`ramasse-miettes`. Cela peut déclencher l'exécution de code "
"dans des destructeurs ou des fonctions de rappels de *weakrefs*. Le code "
"exécuté lors de l'arrêt peut rencontrer quelques exception puisque les "
"ressources auxquelles il fait appel pourraient ne plus fonctionner, "
"(typiquement les modules des bibliothèques ou le mécanisme de *warning*)."
"exécuté lors de l'arrêt peut rencontrer des exceptions puisque les "
"ressources auxquelles il fait appel sont susceptibles de ne plus "
"fonctionner, (typiquement les modules des bibliothèques ou le mécanisme de "
"*warning*)."
#: ../Doc/glossary.rst:556
msgid ""
@ -1368,14 +1369,14 @@ msgid ""
msgstr ""
"Les itérables peuvent être utilisés dans des boucles :keyword:`for` et à "
"beaucoup d'autres endroits où une séquence est requise (:func:`zip`, :func:"
"`map`, ...). Lorsqu'un itérable est passé comme argument à la fonction "
"native :func:`iter`, celle-ci fournit en retour un itérateur sur cet "
"itérable. Cet itérateur n'est valable que pour une seule passe sur le jeu de "
"valeurs. Lors de l'utilisation d'itérables, il n'est habituellement pas "
"nécessaire d'appeler :func:`iter` ou de s'occuper soi-même des objets "
"itérateurs. L'instruction ``for`` le fait automatiquement pour vous, créant "
"une variable temporaire anonyme pour garder l'itérateur durant la boucle. "
"Voir aussi :term:`itérateur`, :term:`séquence` et :term:`générateur`."
"`map`). Lorsqu'un itérable est passé comme argument à la fonction native :"
"func:`iter`, celle-ci fournit en retour un itérateur sur cet itérable. Cet "
"itérateur n'est valable que pour une seule passe sur le jeu de valeurs. Lors "
"de l'utilisation d'itérables, il n'est habituellement pas nécessaire "
"d'appeler :func:`iter` ou de s'occuper soi-même des objets itérateurs. "
"L'instruction ``for`` le fait automatiquement pour vous, créant une variable "
"temporaire anonyme pour garder l'itérateur durant la boucle. Voir aussi :"
"term:`itérateur`, :term:`séquence` et :term:`générateur`."
#: ../Doc/glossary.rst:577
msgid "iterator"
@ -1405,7 +1406,7 @@ msgstr ""
"point, l'itérateur est épuisé et tous les appels suivants à sa méthode :meth:"
"`__next__` lèveront encore une exception :exc:`StopIteration`. Les "
"itérateurs doivent avoir une méthode :meth:`__iter__` qui renvoie l'objet "
"itérateur lui même, de façon à ce que chaque itérateur soit aussi itérable "
"itérateur lui-même, de façon à ce que chaque itérateur soit aussi itérable "
"et puisse être utilisé dans la plupart des endroits où d'autres itérables "
"sont attendus. Une exception notable est un code qui tente plusieurs "
"itérations complètes. Un objet conteneur, (tel que :class:`list`) produit un "
@ -1462,7 +1463,7 @@ msgstr ""
"recherches insensibles à la casse. Aussi, il est possible de créer des "
"fonctions clés avec des expressions :keyword:`lambda`, comme ``lambda r: "
"(r[0], r[2])``. Vous noterez que le module :mod:`operator` propose des "
"constructeurs de fonctions clefs : :func:`~operator.attrgetter`, :func:"
"constructeurs de fonctions clefs : :func:`~operator.attrgetter`, :func:"
"`~operator.itemgetter` et :func:`~operator.methodcaller`. Voir :ref:`Comment "
"Trier <sortinghowto>` pour des exemples de création et d'utilisation de "
"fonctions clefs."
@ -1487,7 +1488,7 @@ msgid ""
msgstr ""
"Fonction anonyme sous la forme d'une :term:`expression` et ne contenant "
"qu'une seule expression, exécutée lorsque la fonction est appelée. La "
"syntaxe pour créer des fonctions lambda est: ``lambda [parameters]: "
"syntaxe pour créer des fonctions lambda est : ``lambda [parameters]: "
"expression``"
#: ../Doc/glossary.rst:624
@ -1501,9 +1502,9 @@ msgid ""
"approach and is characterized by the presence of many :keyword:`if` "
"statements."
msgstr ""
"Regarde devant avant de tomber, (*Look before you leap* en anglais). Ce "
"style de programmation consiste à vérifier des conditions avant d'effectuer "
"des appels ou des accès. Ce style contraste avec le style :term:`EAFP` et se "
"Regarde avant de sauter, (*Look before you leap* en anglais). Ce style de "
"programmation consiste à vérifier des conditions avant d'effectuer des "
"appels ou des accès. Ce style contraste avec le style :term:`EAFP` et se "
"caractérise par la présence de beaucoup d'instructions :keyword:`if`."
#: ../Doc/glossary.rst:631
@ -1516,7 +1517,7 @@ msgid ""
msgstr ""
"Dans un environnement avec plusieurs fils d'exécution (*multi-threaded* en "
"anglais), le style *LBYL* peut engendrer un séquencement critique (*race "
"condition* en anglais) entre le \"regarde\" et le \"tomber\". Par exemple, "
"condition* en anglais) entre le \"regarde\" et le \"sauter\". Par exemple, "
"le code ``if key in mapping: return mapping[key]`` peut échouer si un autre "
"fil d'exécution supprime la clé *key* du *mapping* après le test mais avant "
"l'accès. Ce problème peut être résolu avec des verrous (*locks*) ou avec "
@ -1552,8 +1553,8 @@ msgstr ""
"et renvoyer une liste contenant les résultats. ``result = ['{:#04x}'."
"format(x) for x in range(256) if x % 2 == 0]`` génère la liste composée des "
"nombres pairs de 0 à 255 écrits sous formes de chaînes de caractères et en "
"hexadécimal (``0x``...). La clause :keyword:`if` est optionnelle. Si elle "
"est omise, tous les éléments du ``range(256)`` seront utilisés."
"hexadécimal (``0x``). La clause :keyword:`if` est optionnelle. Si elle est "
"omise, tous les éléments du ``range(256)`` seront utilisés."
#: ../Doc/glossary.rst:649
msgid "loader"
@ -1573,7 +1574,7 @@ msgstr ""
#: ../Doc/glossary.rst:655
msgid "mapping"
msgstr "Tableau de correspondances"
msgstr "tableau de correspondances"
#: ../Doc/glossary.rst:657
msgid ""
@ -1635,16 +1636,16 @@ msgstr ""
"pour rôle de réunir ces trois paramètres pour construire la classe. La "
"plupart des langages orientés objet fournissent une implémentation par "
"défaut. La particularité de Python est la possibilité de créer des "
"métaclasses personnalisées. La plupart des utilisateurs n'aura jamais besoin "
"de cet outil, mais lorsque le besoin survient, les métaclasses offrent des "
"solutions élégantes et puissantes. Elles sont utilisées pour journaliser les "
"accès à des propriétés, rendre sûr les environnements *multi-threads*, "
"suivre la création d'objets, implémenter des singletons et bien d'autres "
"tâches."
"métaclasses personnalisées. La plupart des utilisateurs n'auront jamais "
"besoin de cet outil, mais lorsque le besoin survient, les métaclasses "
"offrent des solutions élégantes et puissantes. Elles sont utilisées pour "
"journaliser les accès à des propriétés, rendre sûrs les environnements "
"*multi-threads*, suivre la création d'objets, implémenter des singletons et "
"bien d'autres tâches."
#: ../Doc/glossary.rst:683
msgid "More information can be found in :ref:`metaclasses`."
msgstr "Plus d'informations sont disponibles dans : :ref:`metaclasses`."
msgstr "Plus d'informations sont disponibles dans : :ref:`metaclasses`."
#: ../Doc/glossary.rst:684
msgid "method"
@ -1691,7 +1692,7 @@ msgid ""
"into Python by the process of :term:`importing`."
msgstr ""
"Objet utilisé pour organiser une portion unitaire de code en Python. Les "
"modules ont un espace de noms et peuvent contenir n'importe quels objets "
"modules ont un espace de nommage et peuvent contenir n'importe quels objets "
"Python. Charger des modules est appelé :term:`importer <importing>`."
#: ../Doc/glossary.rst:702
@ -1707,7 +1708,7 @@ msgid ""
"A namespace containing the import-related information used to load a module. "
"An instance of :class:`importlib.machinery.ModuleSpec`."
msgstr ""
"Espace de noms contenant les informations, relatives à l'importation, "
"Espace de nommage contenant les informations, relatives à l'importation, "
"utilisées pour charger un module. C'est une instance de la classe :class:"
"`importlib.machinery.ModuleSpec`."
@ -1766,7 +1767,7 @@ msgstr ""
#: ../Doc/glossary.rst:727
msgid "namespace"
msgstr "espace de noms"
msgstr "espace de nommage"
#: ../Doc/glossary.rst:729
msgid ""
@ -1780,20 +1781,21 @@ msgid ""
"func:`itertools.islice` makes it clear that those functions are implemented "
"by the :mod:`random` and :mod:`itertools` modules, respectively."
msgstr ""
"L'endroit où une variable est stockée. Les espaces de noms sont implémentés "
"avec des dictionnaires. Il existe des espaces de noms globaux, natifs ou "
"imbriqués dans les objets (dans les méthodes). Les espaces de noms "
"favorisent la modularité car ils permettent d'éviter les conflits de noms. "
"Par exemple, les fonctions :func:`builtins.open <.open>` et :func:`os.open` "
"sont différenciées par leurs espaces de nom. Les espaces de noms aident "
"aussi à la lisibilité et la maintenabilité en rendant clair quel module "
"implémente une fonction. Par exemple, écrire :func:`random.seed` ou :func:"
"`itertools.islice` affiche clairement que ces fonctions sont implémentées "
"respectivement dans les modules :mod:`random` et :mod:`itertools`."
"L'endroit où une variable est stockée. Les espaces de nommage sont "
"implémentés avec des dictionnaires. Il existe des espaces de nommage "
"globaux, natifs ou imbriqués dans les objets (dans les méthodes). Les "
"espaces de nommage favorisent la modularité car ils permettent d'éviter les "
"conflits de noms. Par exemple, les fonctions :func:`builtins.open <.open>` "
"et :func:`os.open` sont différenciées par leurs espaces de nom. Les espaces "
"de nommage aident aussi à la lisibilité et la maintenabilité en rendant "
"clair quel module implémente une fonction. Par exemple, écrire :func:`random."
"seed` ou :func:`itertools.islice` affiche clairement que ces fonctions sont "
"implémentées respectivement dans les modules :mod:`random` et :mod:"
"`itertools`."
#: ../Doc/glossary.rst:739
msgid "namespace package"
msgstr "paquet-espace de noms"
msgstr "paquet-espace de nommage"
#: ../Doc/glossary.rst:741
msgid ""
@ -1803,9 +1805,9 @@ msgid ""
"``__init__.py`` file."
msgstr ""
"Un :term:`paquet` tel que défini dans la :pep:`421` qui ne sert qu'à "
"contenir des sous-paquets. Les paquets-espace de noms peuvent n'avoir aucune "
"représentation physique et, plus spécifiquement, ne sont pas comme un :term:"
"`paquet classique` puisqu'ils n'ont pas de fichier ``__init__.py``."
"contenir des sous-paquets. Les paquets-espace de nommage peuvent n'avoir "
"aucune représentation physique et, plus spécifiquement, ne sont pas comme "
"un :term:`paquet classique` puisqu'ils n'ont pas de fichier ``__init__.py``."
#: ../Doc/glossary.rst:746
msgid "See also :term:`module`."
@ -1828,10 +1830,10 @@ msgstr ""
"englobante. Typiquement, une fonction définie à l'intérieur d'une autre "
"fonction a accès aux variables de cette dernière. Souvenez-vous cependant "
"que cela ne fonctionne que pour accéder à des variables, pas pour les "
"assigner. Les variables locales sont lues et assignées dans l'espace de noms "
"le plus proche. Tout comme les variables globales qui sont stockés dans "
"l'espace de noms global, le mot clef :keyword:`nonlocal` permet d'écrire "
"dans l'espace de noms dans lequel est déclarée la variable."
"assigner. Les variables locales sont lues et assignées dans l'espace de "
"nommage le plus proche. Tout comme les variables globales qui sont stockés "
"dans l'espace de nommage global, le mot clef :keyword:`nonlocal` permet "
"d'écrire dans l'espace de nommage dans lequel est déclarée la variable."
#: ../Doc/glossary.rst:756
msgid "new-style class"
@ -1894,7 +1896,7 @@ msgid ""
msgstr ""
"Entité nommée dans la définition d'une :term:`fonction` (ou méthode), "
"décrivant un :term:`argument` (ou dans certains cas des arguments) que la "
"fonction accepte. Il existe cinq sortes de paramètres :"
"fonction accepte. Il existe cinq sortes de paramètres :"
#: ../Doc/glossary.rst:780
msgid ""
@ -1903,10 +1905,10 @@ msgid ""
"<argument>`. This is the default kind of parameter, for example *foo* and "
"*bar* in the following::"
msgstr ""
":dfn:`positional-or-keyword`: l'argument peut être passé soit par sa :term:"
":dfn:`positional-or-keyword` : l'argument peut être passé soit par sa :term:"
"`position <argument>`, soit en tant que :term:`argument nommé <argument>`. "
"C'est le type de paramètre par défaut. Par exemple, *foo* et *bar* dans "
"l'exemple suivant : ::"
"l'exemple suivant ::"
#: ../Doc/glossary.rst:789
msgid ""
@ -1927,11 +1929,11 @@ msgid ""
"definition before them, for example *kw_only1* and *kw_only2* in the "
"following::"
msgstr ""
":dfn:`keyword-only`: l'argument ne peut être fourni que nommé. Les "
":dfn:`keyword-only` : l'argument ne peut être fourni que nommé. Les "
"paramètres *keyword-only* peuvent être définis en utilisant un seul "
"paramètre *var-positional*, ou en ajoutant une étoile (``*``) seule dans la "
"liste des paramètres avant eux. Par exemple, *kw_only1* et *kw_only2* dans "
"le code suivant : ::"
"le code suivant ::"
#: ../Doc/glossary.rst:804
msgid ""
@ -1941,10 +1943,10 @@ msgid ""
"prepending the parameter name with ``*``, for example *args* in the "
"following::"
msgstr ""
":dfn:`var-positional`: une séquence d'arguments positionnels peut être "
":dfn:`var-positional` : une séquence d'arguments positionnels peut être "
"fournie (en plus de tous les arguments positionnels déjà acceptés par "
"d'autres paramètres). Un tel paramètre peut être défini en préfixant son nom "
"par une ``*``. Par exemple *args* ci-après : ::"
"par une ``*``. Par exemple *args* ci-après ::"
#: ../Doc/glossary.rst:812
msgid ""
@ -1953,7 +1955,7 @@ msgid ""
"parameters). Such a parameter can be defined by prepending the parameter "
"name with ``**``, for example *kwargs* in the example above."
msgstr ""
":dfn:`var-keyword`: une quantité arbitraire d'arguments peut être passée, "
":dfn:`var-keyword` : une quantité arbitraire d'arguments peut être passée, "
"chacun étant nommé (en plus de tous les arguments nommés déjà acceptés par "
"d'autres paramètres). Un tel paramètre est défini en préfixant le nom du "
"paramètre par ``**``. Par exemple, *kwargs* ci-dessus."
@ -1987,9 +1989,9 @@ msgid ""
"A single location on the :term:`import path` which the :term:`path based "
"finder` consults to find modules for importing."
msgstr ""
"Emplacement dans le :term:`chemin des imports <import path>` (*import path* "
"en anglais, d'où le *path*) que le :term:`chercheur basé sur les chemins "
"<path based finder>` consulte pour trouver des modules à importer."
"Emplacement dans le :term:`chemin des importations <import path>` (*import "
"path* en anglais, d'où le *path*) que le :term:`chercheur basé sur les "
"chemins <path based finder>` consulte pour trouver des modules à importer."
#: ../Doc/glossary.rst:829
msgid "path entry finder"
@ -2038,8 +2040,8 @@ msgid ""
"searches an :term:`import path` for modules."
msgstr ""
"L'un des :term:`chercheurs dans les méta-chemins <meta path finder>` par "
"défaut qui cherche des modules dans un :term:`chemin des imports <import "
"path>`."
"défaut qui cherche des modules dans un :term:`chemin des importations "
"<import path>`."
#: ../Doc/glossary.rst:846
msgid "path-like object"
@ -2111,7 +2113,7 @@ msgid ""
"contribute to a namespace package, as defined in :pep:`420`."
msgstr ""
"Jeu de fichiers dans un seul dossier (pouvant être stocké sous forme de "
"fichier zip) qui contribue à l'espace de noms d'un paquet, tel que défini "
"fichier zip) qui contribue à l'espace de nommage d'un paquet, tel que défini "
"dans la :pep:`420`."
#: ../Doc/glossary.rst:875
@ -2135,7 +2137,7 @@ msgstr ""
"Une API provisoire est une API qui n'offre aucune garantie de "
"rétrocompatibilité (la bibliothèque standard exige la rétrocompatibilité). "
"Bien que des changements majeurs d'une telle interface ne soient pas "
"attendus, tant qu'elle est étiquetée provisoire, des changement cassant la "
"attendus, tant qu'elle est étiquetée provisoire, des changements cassant la "
"rétrocompatibilité (y compris sa suppression complète) peuvent survenir si "
"les développeurs principaux le jugent nécessaire. Ces modifications ne "
"surviendront que si de sérieux problèmes sont découverts et qu'ils n'avaient "
@ -2147,9 +2149,9 @@ msgid ""
"\"solution of last resort\" - every attempt will still be made to find a "
"backwards compatible resolution to any identified problems."
msgstr ""
"Même pour les API provisoires, les changement cassant la rétrocompatibilité "
"sont considérées comme des \"solutions de dernier recours\". Tout ce qui est "
"possible sera fait pour tenter de résoudre les problème en conservant la "
"Même pour les API provisoires, les changements cassant la rétrocompatibilité "
"sont considérés comme des \"solutions de dernier recours\". Tout ce qui est "
"possible sera fait pour tenter de résoudre les problèmes en conservant la "
"rétrocompatibilité."
#: ../Doc/glossary.rst:893
@ -2201,13 +2203,12 @@ msgstr ""
"idiomatique en Python de parcourir les éléments d'un itérable en utilisant :"
"keyword:`for`. Beaucoup d'autres langages n'ont pas cette possibilité, donc "
"les gens qui ne sont pas habitués à Python utilisent parfois un compteur "
"numérique à la place : ::"
"numérique à la place ::"
#: ../Doc/glossary.rst:916
msgid "As opposed to the cleaner, Pythonic method::"
msgstr ""
"Plutôt qu'utiliser la méthode, plus propre et élégante, donc "
"*Pythonique* : ::"
"Plutôt qu'utiliser la méthode, plus propre et élégante, donc *Pythonique* ::"
#: ../Doc/glossary.rst:920
msgid "qualified name"
@ -2220,10 +2221,10 @@ msgid ""
"top-level functions and classes, the qualified name is the same as the "
"object's name::"
msgstr ""
"Nom, comprenant des points, montrant le \"chemin\" de l'espace de noms "
"Nom, comprenant des points, montrant le \"chemin\" de l'espace de nommage "
"global d'un module vers une classe, fonction ou méthode définie dans ce "
"module, tel que défini dans la :pep:`3155`. Pour les fonctions et classes de "
"premier niveau, le nom qualifié est le même que le nom de l'objet : ::"
"premier niveau, le nom qualifié est le même que le nom de l'objet ::"
#: ../Doc/glossary.rst:939
msgid ""
@ -2234,7 +2235,7 @@ msgstr ""
"Lorsqu'il est utilisé pour nommer des modules, le *nom qualifié complet* "
"(*fully qualified name - FQN* en anglais) signifie le chemin complet (séparé "
"par des points) vers le module, incluant tous les paquets parents. Par "
"exemple : ``email.mime.text`` ::"
"exemple : ``email.mime.text`` ::"
#: ../Doc/glossary.rst:946
msgid "reference count"
@ -2270,7 +2271,7 @@ msgstr ""
#: ../Doc/glossary.rst:959
msgid "See also :term:`namespace package`."
msgstr "Voir aussi :term:`paquet-espace de noms`."
msgstr "Voir aussi :term:`paquet-espace de nommage <namespace package>`."
#: ../Doc/glossary.rst:960
msgid "__slots__"
@ -2308,7 +2309,7 @@ msgstr ""
":term:`itérable` qui offre un accès efficace à ses éléments par un indice "
"sous forme de nombre entier via la méthode spéciale :meth:`__getitem__` et "
"qui définit une méthode :meth:`__len__` donnant sa taille. Voici quelques "
"séquences natives : :class:`list`, :class:`str`, :class:`tuple`, et :class:"
"séquences natives : :class:`list`, :class:`str`, :class:`tuple`, et :class:"
"`bytes`. Notez que :class:`dict` possède aussi une méthode :meth:"
"`__getitem__` et une méthode :meth:`__len__`, mais il est considéré comme un "
"*mapping* plutôt qu'une séquence, car ses accès se font par une clé "
@ -2502,7 +2503,7 @@ msgstr ""
#: ../Doc/glossary.rst:1056
msgid "could be made more readable like this::"
msgstr "pourrait être rendu plus lisible comme ceci ::"
msgstr "pourrait être rendu plus lisible comme ceci ::"
#: ../Doc/glossary.rst:1065 ../Doc/glossary.rst:1079
msgid "See :mod:`typing` and :pep:`484`, which describe this functionality."
@ -2526,8 +2527,8 @@ msgid ""
"to static type analysis tools, and aid IDEs with code completion and "
"refactoring."
msgstr ""
"Les indications de type sont facultatifs et ne sont pas indispensables à "
"l'interpréteur Python, mais ils sont utiles aux outils d'analyse de type "
"Les indications de type sont facultatives et ne sont pas indispensables à "
"l'interpréteur Python, mais elles sont utiles aux outils d'analyse de type "
"statique et aident les IDE à compléter et à réusiner (*code refactoring* en "
"anglais) le code."
@ -2553,7 +2554,7 @@ msgid ""
"splitlines` for an additional use."
msgstr ""
"Une manière d'interpréter des flux de texte dans lesquels sont reconnues "
"toutes les fins de ligne suivantes : la convention Unix ``'\\n'``, la "
"toutes les fins de ligne suivantes : la convention Unix ``'\\n'``, la "
"convention Windows ``'\\r\\n'`` et l'ancienne convention Macintosh "
"``'\\r'``. Voir la :pep:`278` et la :pep:`3116`, ainsi que la fonction :func:"
"`bytes.splitlines` pour d'autres usages."
@ -2571,7 +2572,7 @@ msgid ""
"When annotating a variable or a class attribute, assignment is optional::"
msgstr ""
"Lorsque vous annotez une variable ou un attribut de classe, l'affectation "
"est facultative ::"
"est facultative ::"
#: ../Doc/glossary.rst:1096
msgid ""
@ -2580,7 +2581,7 @@ msgid ""
msgstr ""
"Les annotations de variables sont généralement utilisées pour des :term:"
"`indications de types <type hint>` : par exemple, cette variable devrait "
"prendre des valeurs de type :class:`int` ::"
"prendre des valeurs de type :class:`int` ::"
#: ../Doc/glossary.rst:1102
msgid "Variable annotation syntax is explained in section :ref:`annassign`."
@ -2593,7 +2594,7 @@ msgid ""
"See :term:`function annotation`, :pep:`484` and :pep:`526`, which describe "
"this functionality."
msgstr ""
"Reportez-vous à :term:`function annotation`, à la :pep:` 484` et à la :pep:"
"Reportez-vous à :term:`function annotation`, à la :pep:`484` et à la :pep:"
"`526` qui décrivent cette fonctionnalité."
#: ../Doc/glossary.rst:1106

View File

@ -72,7 +72,7 @@ msgid ""
"defaults to displaying the contents of the current directory."
msgstr ""
"La commande :command:`ls` est utile quand elle est exécutée sans aucun "
"paramètre. Par défaut cela affiche le contenu du dossier courant."
"paramètre. Elle affiche par défaut le contenu du dossier courant."
#: ../Doc/howto/argparse.rst:51
msgid ""
@ -88,11 +88,11 @@ msgstr ""
"Si l'on veut plus que ce qui est proposé par défaut, il faut l'indiquer. "
"Dans le cas présent, on veut afficher un dossier différent : ``pypy``. Ce "
"que l'on a fait c'est spécifier un argument positionnel. C'est appelé ainsi "
"car cela permet au programme de savoir quoi faire avec la valeur seulement "
"en se basant sur sa position dans la ligne de commande. Ce concept est plus "
"pertinent pour une commande comme :command:`cp` dont l'usage de base est "
"``cp SRC DEST``. Le premier argument est *ce que vous voulez copier* et le "
"second est *où vous voulez le copier*."
"car cela permet au programme de savoir quoi faire avec la valeur en se "
"basant seulement sur sa position dans la ligne de commande. Ce concept est "
"plus pertinent pour une commande comme :command:`cp` dont l'usage de base "
"est ``cp SRC DEST``. Le premier argument est *ce que vous voulez copier* et "
"le second est *où vous voulez le copier*."
#: ../Doc/howto/argparse.rst:60
msgid ""
@ -100,9 +100,9 @@ msgid ""
"display more info for each file instead of just showing the file names. The "
"``-l`` in that case is known as an optional argument."
msgstr ""
"Maintenant, supposons que l'on veut changer la façon dont le programme agit. "
"Dans notre exemple, on affiche plus d'information pour chaque ficher que "
"simplement leur nom. Dans ce cas, ``-l`` est un argument facultatif."
"Maintenant, supposons que l'on veuille changer la façon dont le programme "
"agit. Dans notre exemple, on affiche plus d'information pour chaque ficher "
"que simplement leur nom. Dans ce cas, ``-l`` est un argument facultatif."
#: ../Doc/howto/argparse.rst:64
msgid ""
@ -120,8 +120,7 @@ msgstr "Les bases"
#: ../Doc/howto/argparse.rst:72
msgid "Let us start with a very simple example which does (almost) nothing::"
msgstr ""
"Commençons par un exemple très simple qui ne fait (quasiment) rien : ::"
msgstr "Commençons par un exemple très simple qui ne fait (quasiment) rien ::"
#: ../Doc/howto/argparse.rst:78 ../Doc/howto/argparse.rst:186
#: ../Doc/howto/argparse.rst:207
@ -131,22 +130,22 @@ msgstr "Ce qui suit est le résultat de l'exécution du code :"
#: ../Doc/howto/argparse.rst:95 ../Doc/howto/argparse.rst:252
#: ../Doc/howto/argparse.rst:296
msgid "Here is what is happening:"
msgstr "Voilà ce qu'il ce passe :"
msgstr "Voilà ce qu'il se passe :"
#: ../Doc/howto/argparse.rst:97
msgid ""
"Running the script without any options results in nothing displayed to "
"stdout. Not so useful."
msgstr ""
"Exécuter le script sans aucun paramètre à pour effet que rien est affiché "
"sur la sortie d'erreur. Ce n'est pas très utile."
"Exécuter le script sans aucun paramètre a pour effet de ne rien afficher sur "
"la sortie d'erreur. Ce n'est pas très utile."
#: ../Doc/howto/argparse.rst:100
msgid ""
"The second one starts to display the usefulness of the :mod:`argparse` "
"module. We have done almost nothing, but already we get a nice help message."
msgstr ""
"Le deuxième commence à montrer l'intérêt du module :mod:`argparse`. On a "
"Le deuxième commence à montrer l'intérêt du module :mod:`argparse`. On n'a "
"quasiment rien fait mais on a déjà un beau message d'aide."
#: ../Doc/howto/argparse.rst:103
@ -157,9 +156,9 @@ msgid ""
"also for free."
msgstr ""
"L'option ``--help``, que l'on peut aussi raccourcir en ``-h``, est la seule "
"option que l'on a gratuitement (i.e. pas besoin de la préciser). Préciser "
"quoi que ce soit d'autre entrainera une erreur. Mais même dans ce cas, on "
"reçoit aussi un message utile, toujours gratuitement."
"option que l'on a gratuitement (pas besoin de la préciser). Préciser quoi "
"que ce soit d'autre entraîne une erreur. Mais même dans ce cas, on reçoit "
"aussi un message utile, toujours gratuitement."
#: ../Doc/howto/argparse.rst:110
msgid "Introducing Positional arguments"
@ -167,7 +166,7 @@ msgstr "Introduction aux arguments positionnels"
#: ../Doc/howto/argparse.rst:112
msgid "An example::"
msgstr "Un exemple : ::"
msgstr "Un exemple ::"
#: ../Doc/howto/argparse.rst:120
msgid "And running the code:"
@ -175,7 +174,7 @@ msgstr "On exécute le code :"
#: ../Doc/howto/argparse.rst:138
msgid "Here is what's happening:"
msgstr "Voilà ce qu'il ce passe :"
msgstr "Voilà ce qu'il se passe :"
#: ../Doc/howto/argparse.rst:140
msgid ""
@ -198,7 +197,7 @@ msgid ""
"specified, in this case, ``echo``."
msgstr ""
"La méthode :meth:`parse_args` renvoie en réalité certaines données des "
"paramètres précisées, dans le cas présent : ``echo``."
"paramètres précisés, dans le cas présent : ``echo``."
#: ../Doc/howto/argparse.rst:149
msgid ""
@ -208,9 +207,9 @@ msgid ""
"``echo``."
msgstr ""
"La variable est comme une forme de 'magie' que :mod:`argparse` effectue "
"gratuitement (i.e. pas besoin de préciser dans quelle variable la valeur est "
"stockée). Vous aurez aussi remarqué que le nom est le même que l'argument en "
"chaîne de caractère donné à la méthode : ``echo``."
"gratuitement (c.-à-d. pas besoin de préciser dans quelle variable la valeur "
"est stockée). Vous aurez aussi remarqué que le nom est le même que "
"l'argument en chaîne de caractères donné à la méthode : ``echo``."
#: ../Doc/howto/argparse.rst:154
msgid ""
@ -223,8 +222,8 @@ msgstr ""
"Notez cependant que, même si l'affichage d'aide paraît bien , il n'est pas "
"aussi utile qu'il pourrait l'être. Par exemple, on peut lire que ``echo`` "
"est un argument positionnel mais on ne peut pas savoir ce que cela fait "
"autrement qu'en le devinant ou en lisant le code source. Donc, rendons le un "
"peu plus utile : ::"
"autrement qu'en le devinant ou en lisant le code source. Donc, rendons-le un "
"peu plus utile ::"
#: ../Doc/howto/argparse.rst:165
msgid "And we get:"
@ -233,8 +232,7 @@ msgstr "Et on obtient :"
#: ../Doc/howto/argparse.rst:178
msgid "Now, how about doing something even more useful::"
msgstr ""
"Maintenant, qu'en dîtes vous s'il on fait quelque chose d'encore plus "
"utile : ::"
"À présent, que diriez-vous de faire quelque chose d'encore plus utile ::"
#: ../Doc/howto/argparse.rst:196
msgid ""
@ -245,7 +243,7 @@ msgstr ""
"Cela n'a pas très bien fonctionné. C'est parce que :mod:`argparse` traite "
"les paramètres que l'on donne comme des chaînes de caractères à moins qu'on "
"ne lui indique de faire autrement. Donc, disons à :mod:`argparse` de traiter "
"cette entrée comme un entier : ::"
"cette entrée comme un entier ::"
#: ../Doc/howto/argparse.rst:217
msgid ""
@ -265,7 +263,7 @@ msgid ""
"how to add optional ones::"
msgstr ""
"Jusqu'à maintenant, on a joué avec les arguments positionnels. Regardons "
"comment ajouter des paramètres optionnels : ::"
"comment ajouter des paramètres optionnels ::"
#: ../Doc/howto/argparse.rst:234 ../Doc/howto/argparse.rst:280
#: ../Doc/howto/argparse.rst:396 ../Doc/howto/argparse.rst:430
@ -315,7 +313,7 @@ msgstr ""
"L'exemple ci-dessus accepte des valeurs entières arbitraires pour ``--"
"verbosity`` mais pour notre programme simple seule deux valeurs sont "
"réellement utiles : ``True`` et ``False``. Modifions le code en accord avec "
"cela : ::"
"cela ::"
#: ../Doc/howto/argparse.rst:298
msgid ""
@ -354,9 +352,9 @@ msgid ""
"yet touched on the topic of short versions of the options. It's quite "
"simple::"
msgstr ""
"Si vous êtes familier avec l'utilisation des ligne de commande vous avez dû "
"remarqué que je n'ai pour l'instant rien dit au sujet des versions "
"raccourcies des paramètres. C'est très simple : ::"
"Si vous êtes familier avec l'utilisation de la ligne de commande, vous avez "
"dû remarquer que je n'ai pour l'instant rien dit au sujet des versions "
"raccourcies des paramètres. C'est très simple ::"
#: ../Doc/howto/argparse.rst:326
msgid "And here goes:"
@ -372,7 +370,7 @@ msgstr "Combinaison d'arguments positionnels et optionnels"
#: ../Doc/howto/argparse.rst:345
msgid "Our program keeps growing in complexity::"
msgstr "Notre programme continue de grandir en complexité : ::"
msgstr "Notre programme continue de croître en complexité ::"
#: ../Doc/howto/argparse.rst:360
msgid "And now the output:"
@ -391,8 +389,8 @@ msgid ""
"How about we give this program of ours back the ability to have multiple "
"verbosity values, and actually get to use them::"
msgstr ""
"Qu'en est il si nous donnons à ce programme la possibilité d'avoir plusieurs "
"niveaux de verbosité, et que celui-ci les prend en compte : ::"
"Qu'en est-il si nous donnons à ce programme la possibilité d'avoir plusieurs "
"niveaux de verbosité, et que celui-ci les prend en compte ::"
#: ../Doc/howto/argparse.rst:412
msgid ""
@ -402,7 +400,7 @@ msgid ""
msgstr ""
"Tout semble bon sauf le dernier, qui montre que notre programme contient un "
"bogue. Corrigeons cela en restreignant les valeurs que ``--verbosity`` "
"accepte : ::"
"accepte ::"
#: ../Doc/howto/argparse.rst:448
msgid ""
@ -421,7 +419,7 @@ msgstr ""
"Essayons maintenant une approche différente pour jouer sur la verbosité, ce "
"qui arrive fréquemment. Cela correspond également à comment le programme "
"CPython gère ses propres paramètres de verbosité (jetez un œil sur la sortie "
"de la commande ``python --help``) : ::"
"de la commande ``python --help``) ::"
#: ../Doc/howto/argparse.rst:470
msgid ""
@ -457,8 +455,8 @@ msgid ""
"And if you don't specify the ``-v`` flag, that flag is considered to have "
"``None`` value."
msgstr ""
"Et si vous ne spécifiez pas le option ``-v``, ce option sera considéré en "
"tant que valeur ``None``."
"Et si vous ne spécifiez pas l'option ``-v``, cette option prendra la valeur "
"``None``."
#: ../Doc/howto/argparse.rst:509
msgid ""
@ -476,8 +474,7 @@ msgid ""
msgstr ""
"Malheureusement, notre sortie d'aide n'est pas très informative à propos des "
"nouvelles possibilités de notre programme, mais cela peut toujours être "
"corrigé en améliorant sa documentation. (e.g. en utilisant le l'argument "
"``help``)."
"corrigé en améliorant sa documentation (en utilisant l'argument ``help``)."
#: ../Doc/howto/argparse.rst:516
msgid "That last output exposes a bug in our program."
@ -485,7 +482,7 @@ msgstr "La dernière sortie du programme montre que celui-ci contient un bogue."
#: ../Doc/howto/argparse.rst:519
msgid "Let's fix::"
msgstr "Corrigeons : ::"
msgstr "Corrigeons ::"
#: ../Doc/howto/argparse.rst:538
msgid "And this is what it gives:"
@ -506,7 +503,7 @@ msgstr "La troisième sortie de programme n'est pas si bien que ça."
#: ../Doc/howto/argparse.rst:558
msgid "Let's fix that bug::"
msgstr "Corrigeons ce bogue : ::"
msgstr "Corrigeons ce bogue ::"
#: ../Doc/howto/argparse.rst:575
msgid ""
@ -520,7 +517,7 @@ msgstr ""
"l'avons définit à ``0`` pour le rendre comparable aux autres valeurs. "
"Rappelez-vous que par défaut, si un argument optionnel n'est pas spécifié, "
"il sera définit à ``None``, et ne pourra pas être comparé à une valeur de "
"type entier (Une erreur :exc:`TypeError` serait alors levée)."
"type entier (une erreur :exc:`TypeError` serait alors levée)."
#: ../Doc/howto/argparse.rst:582
msgid "And:"
@ -546,8 +543,8 @@ msgid ""
"What if we wanted to expand our tiny program to perform other powers, not "
"just squares::"
msgstr ""
"Qu'en est il si nous souhaitons étendre notre mini programme pour le rendre "
"capable de calculer d'autres puissances, et pas seulement des carrés : ::"
"Qu'en est-il si nous souhaitons étendre notre mini programme pour le rendre "
"capable de calculer d'autres puissances, et pas seulement des carrés ::"
#: ../Doc/howto/argparse.rst:615 ../Doc/howto/argparse.rst:653
msgid "Output:"
@ -561,7 +558,7 @@ msgid ""
msgstr ""
"Il est à noter que jusqu'à présent nous avons utilisé le niveau de verbosité "
"pour *changer* le texte qui est affiché. L'exemple suivant au contraire "
"utilise le niveau de verbosité pour afficher *plus* de texte à la place : ::"
"utilise le niveau de verbosité pour afficher *plus* de texte à la place ::"
#: ../Doc/howto/argparse.rst:667
msgid "Conflicting options"
@ -582,7 +579,7 @@ msgstr ""
"qui sont en conflit entre eux. Changeons aussi le reste du programme de "
"telle sorte que la nouvelle fonctionnalité fasse sens : nous allons "
"introduire l'option ``--quiet``, qui va avoir l'effet opposé de l'option ``--"
"verbose`` : ::"
"verbose`` ::"
#: ../Doc/howto/argparse.rst:695
msgid ""
@ -600,8 +597,8 @@ msgid ""
"form ones."
msgstr ""
"Cela devrait être facile à suivre. J'ai ajouté cette dernière sortie pour "
"que vous puissiez voir le genre de flexibilité que vous pouvez avoir, i.e. "
"faire un mixe entre des paramètres courts et longs."
"que vous puissiez voir le genre de flexibilité que vous pouvez avoir, par "
"exemple pour faire un mélange entre des paramètres courts et longs."
#: ../Doc/howto/argparse.rst:717
msgid ""
@ -609,8 +606,8 @@ msgid ""
"your program, just in case they don't know::"
msgstr ""
"Avant d'en finir, vous voudrez certainement dire à vos utilisateurs quel est "
"le but principal de votre programme, juste dans le cas ou ils ne savent "
"pas : ::"
"le but principal de votre programme, juste dans le cas ou ils ne le "
"sauraient pas ::"
#: ../Doc/howto/argparse.rst:738
msgid ""
@ -618,9 +615,9 @@ msgid ""
"tells us that we can either use ``-v`` or ``-q``, but not both at the same "
"time:"
msgstr ""
"Notez cette nuance dans le texte d'utilisation. Les options `[-v | -q]``, "
"qui nous disent que nous pouvons utiliser au choix ``-v`` ou ``-q``, mais "
"pas les deux ensemble :"
"Notez cette nuance dans le texte d'utilisation. Les options `[-v | -q]`` "
"nous disent que nous pouvons utiliser au choix ``-v`` ou ``-q``, mais pas "
"les deux ensemble :"
#: ../Doc/howto/argparse.rst:760
msgid "Conclusion"
@ -633,6 +630,6 @@ msgid ""
"tutorial, you should easily digest them without feeling overwhelmed."
msgstr ""
"Le module :mod:`argparse` offre bien plus que ce qui est montré ici. Sa "
"documentation est assez détaillée complète et pleine d'exemples. En ayant "
"accompli ce tutoriel, vous pourriez facilement comprendre cette "
"documentation sans vous sentir dépassé."
"documentation est assez détaillée, complète et pleine d'exemples. En ayant "
"accompli ce tutoriel, vous pourrez facilement comprendre cette documentation "
"sans vous sentir dépassé."

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/cporting.rst:7
msgid "Porting Extension Modules to Python 3"
msgstr ""
msgstr "Portage des modules d'extension vers Python 3"
#: ../Doc/howto/cporting.rst:0
msgid "author"
@ -41,36 +41,49 @@ msgid ""
"obvious on the C level. This document endeavors to document "
"incompatibilities and how they can be worked around."
msgstr ""
"Changer l'API C n'était pas l'un des objectifs de Python 3, cependant les "
"nombreux changements au niveau Python ont rendu impossible de garder l'API "
"de Python 2 comme elle était. Certains changements tels que l'unification "
"de :func:`int` et :func:`long` sont plus apparents au niveau C. Ce document "
"s'efforce de documenter les incompatibilités et la façon dont elles peuvent "
"être contournées."
#: ../Doc/howto/cporting.rst:23
msgid "Conditional compilation"
msgstr ""
msgstr "Compilation conditionnelle"
#: ../Doc/howto/cporting.rst:25
msgid ""
"The easiest way to compile only some code for Python 3 is to check if :c:"
"macro:`PY_MAJOR_VERSION` is greater than or equal to 3. ::"
msgstr ""
"La façon la plus simple de compiler seulement une section de code pour "
"Python 3 est de vérifier si :c:macro:`PY_MAJOR_VERSION` est supérieur ou "
"égal à 3. ::"
#: ../Doc/howto/cporting.rst:32
msgid ""
"API functions that are not present can be aliased to their equivalents "
"within conditional blocks."
msgstr ""
"Les fonctions manquantes dans l'API peuvent être remplacées par des alias à "
"leurs équivalents dans des blocs conditionnels."
#: ../Doc/howto/cporting.rst:37
msgid "Changes to Object APIs"
msgstr ""
msgstr "Modifications apportées aux API des objets"
#: ../Doc/howto/cporting.rst:39
msgid ""
"Python 3 merged together some types with similar functions while cleanly "
"separating others."
msgstr ""
"Python 3 a fusionné certains types avec des fonctions identiques tout en "
"séparant de façon propre, d'autres."
#: ../Doc/howto/cporting.rst:44
msgid "str/unicode Unification"
msgstr ""
msgstr "Unification de *str* et *unicode*"
#: ../Doc/howto/cporting.rst:46
msgid ""
@ -86,10 +99,23 @@ msgid ""
"shows best practices with regards to :c:type:`PyUnicode`, :c:type:"
"`PyString`, and :c:type:`PyBytes`. ::"
msgstr ""
"Le type :func:`str` de Python 3 est l'équivalent de :func:`unicode` sous "
"Python 2 ; Les fonctions C sont appelées ``PyUnicode_*`` pour les deux "
"versions. L'ancien type de chaîne de caractères de 8 bits est devenue :func:"
"`bytes`, avec des fonctions C nommées ``PyBytes_*``. Python 2.6 et toutes "
"les versions supérieures fournissent un en-tête de compatibilité, :file:"
"`bytesobject.h`, faisant correspondre les noms ``PyBytes`` aux ``PyString``. "
"Pour une meilleure compatibilité avec Python 3, :c:type:`PyUnicode` doit "
"être utilisé seulement pour des données textuelles et :c:type:`PyBytes` pour "
"des données binaires. Il est important de noter que :c:type:`PyBytes` et :c:"
"type:`PyUnicode` en Python 3 ne sont pas remplaçables contrairement à :c:"
"type:`PyString` et :c:type:`PyUnicode` dans Python 2. L'exemple suivant "
"montre l'utilisation optimale de :c:type:`PyUnicode`, :c:type:`PyString`, "
"et :c:type:`PyBytes`. ::"
#: ../Doc/howto/cporting.rst:95
msgid "long/int Unification"
msgstr ""
msgstr "Unification de *long* et *int*"
#: ../Doc/howto/cporting.rst:97
msgid ""
@ -98,10 +124,14 @@ msgid ""
"Python 2 was removed. In the C-API, ``PyInt_*`` functions are replaced by "
"their ``PyLong_*`` equivalents."
msgstr ""
"Python 3 n'a qu'un type d'entier, :func:`int`. Mais il correspond au type :"
"func:`long` de Python 2 — le type :func:`int` utilisé dans Python 2 a été "
"supprimé. Dans l'API C, les fonctions ``PyInt_*`` sont remplacées par leurs "
"équivalents ``PyLong_*``."
#: ../Doc/howto/cporting.rst:104
msgid "Module initialization and state"
msgstr ""
msgstr "Initialisation et état du module"
#: ../Doc/howto/cporting.rst:106
msgid ""
@ -111,10 +141,16 @@ msgid ""
"in both Python 2 and Python 3 is tricky. The following simple example "
"demonstrates how. ::"
msgstr ""
"Python 3 a remanié son système d'initialisation des modules d'extension "
"(Voir :pep:`3121`.). Au lieu de stocker les états de module dans les "
"variables globales, les états doivent être stockés dans une structure "
"spécifique à l'interpréteur. Créer des modules qui ont un fonctionnement "
"correct en Python 2 et Python 3 est délicat. L'exemple suivant montre "
"comment. ::"
#: ../Doc/howto/cporting.rst:197
msgid "CObject replaced with Capsule"
msgstr ""
msgstr "CObject remplacé par Capsule"
#: ../Doc/howto/cporting.rst:199
msgid ""
@ -125,6 +161,13 @@ msgid ""
"APIs relied on undefined behavior in C. (For further reading on the "
"rationale behind Capsules, please see :issue:`5630`.)"
msgstr ""
"L'objet :c:type:`Capsule` a été introduit dans Python 3.1 et 2.7 pour "
"remplacer :c:type:`CObject`. Le type :c:type:`CObject` était utile, mais son "
"API posait des soucis : elle ne permettait pas la distinction entre les "
"objets C valides, ce qui permettait aux objets C assortis incorrectement de "
"planter l'interpréteur, et certaines des API s'appuyaient sur un "
"comportement indéfini en C. (Pour plus de détails sur la logique de "
"Capsules, veuillez consulter :issue:`5630`)."
#: ../Doc/howto/cporting.rst:206
msgid ""
@ -136,6 +179,14 @@ msgid ""
"support both CObjects and Capsules. (Note that Python 3.0 is no longer "
"supported, and it is not recommended for production use.)"
msgstr ""
"Si vous utilisez actuellement CObjects et que vous voulez migrer vers la "
"version 3.1 ou plus récente, vous devrez passer à Capsules. :c:type:"
"`CObject` est déprécié dans 3.1 et 2.7 et est supprimé dans Python 3.2. Si "
"vous ne gérez que les versions 2.7, ou 3.1 et supérieures, vous pouvez "
"simplement passer à :c:type:`Capsule`. Si vous avez besoin de gérer Python "
"3.0, ou des versions de Python antérieures à 2.7, vous devez gérer CObjects "
"et Capsules. (Notez que Python 3.0 n'est plus maintenu, et qu'il n'est pas "
"recommandé pour une utilisation en production)."
#: ../Doc/howto/cporting.rst:216
msgid ""
@ -145,6 +196,11 @@ msgid ""
"automatically use Capsules in versions of Python with Capsules, and switch "
"to CObjects when Capsules are unavailable."
msgstr ""
"L'exemple suivant d'en-tête de fichier :file:`capsulethunk.h` peut résoudre "
"le problème. Il suffit d'écrire votre code dans l'API :c:type:`Capsule` et "
"d'inclure ce fichier d'en-tête après :file:`Python.h`. Votre code utilisera "
"automatiquement Capsules dans les versions de Python avec Capsules, et "
"passera à CObjects lorsque les Capsules ne sont pas disponibles."
#: ../Doc/howto/cporting.rst:223
msgid ""
@ -153,10 +209,15 @@ msgid ""
"the simulated :c:type:`Capsule` objects created by :file:`capsulethunk.h` "
"behave slightly differently from real Capsules. Specifically:"
msgstr ""
":file:`capsulethunk.h` reproduit le fonctionnement de Capsules en utilisant "
"CObjects. Cependant, :c:type:`CObject` ne permet pas de stocker le \"nom\" "
"de la capsule. Les objets simulés :c:type:`Capsule` créés par :file:"
"`capsulethunk.h` se comportent légèrement différemment des véritables "
"Capsules. Ainsi :"
#: ../Doc/howto/cporting.rst:228
msgid "The name parameter passed in to :c:func:`PyCapsule_New` is ignored."
msgstr ""
msgstr "Le paramètre *name* passé à :c:func:`PyCapsule_New` est ignoré."
#: ../Doc/howto/cporting.rst:230
msgid ""
@ -164,10 +225,13 @@ msgid ""
"`PyCapsule_GetPointer` is ignored, and no error checking of the name is "
"performed."
msgstr ""
"Le paramètre *name* passé à :c:func:`PyCapsule_IsValid` et :c:func:"
"`PyCapsule_GetPointer` est ignoré et il n'y a pas de vérification d'erreur "
"du nom."
#: ../Doc/howto/cporting.rst:234
msgid ":c:func:`PyCapsule_GetName` always returns NULL."
msgstr ""
msgstr ":c:func:`PyCapsule_GetName` renvoie toujours un NULL."
#: ../Doc/howto/cporting.rst:236
msgid ""
@ -176,6 +240,11 @@ msgid ""
"`PyCapsule_SetName` was deemed preferable to silent failure here. If this "
"is inconvenient, feel free to modify your local copy as you see fit.)"
msgstr ""
":c:func:`PyCapsule_SetName` lève toujours une exception et renvoie un échec. "
"Note : Puisqu'il n'y a aucun moyen de stocker un nom dans un CObject, "
"l'échec verbeux de :c:func:`PyCapsule_SetName` a été jugé préférable à un "
"échec non-verbeux dans ce cas. Si cela ne vous convenait pas, vous pouvez "
"modifier votre copie locale selon vos besoins."
#: ../Doc/howto/cporting.rst:243
msgid ""
@ -183,10 +252,13 @@ msgid ""
"source:`Doc/includes/capsulethunk.h`. We also include it here for your "
"convenience:"
msgstr ""
"Vous pouvez trouver :file:`capsulethunk.h` dans la distribution source de "
"Python comme :source:`Doc/includes/capsulethunk.h`. Nous l'incluons ici pour "
"votre confort :"
#: ../Doc/howto/cporting.rst:252
msgid "Other options"
msgstr ""
msgstr "Autres options"
#: ../Doc/howto/cporting.rst:254
msgid ""
@ -194,3 +266,7 @@ msgid ""
"<http://cython.org/>`_. It translates a Python-like language to C. The "
"extension modules it creates are compatible with Python 3 and Python 2."
msgstr ""
"Si vous écrivez un nouveau module d'extension, vous pouvez envisager "
"d'utiliser `Cython <http://cython.org/>`_. Il traduit un langage de type "
"Python en C. Les modules d'extension qu'il crée sont compatibles avec Python "
"3 et Python 2."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/curses.rst:5
msgid "Curses Programming with Python"
msgstr ""
msgstr "Programmation *Curses* avec Python"
#: ../Doc/howto/curses.rst:0
msgid "Author"
@ -27,7 +27,7 @@ msgstr "Auteur"
#: ../Doc/howto/curses.rst:7
msgid "A.M. Kuchling, Eric S. Raymond"
msgstr ""
msgstr "A.M. Kuchling, Eric S. Raymond"
#: ../Doc/howto/curses.rst:0
msgid "Release"
@ -35,7 +35,7 @@ msgstr "Version"
#: ../Doc/howto/curses.rst:8
msgid "2.04"
msgstr ""
msgstr "2.04"
#: ../Doc/howto/curses.rst:None
msgid "Abstract"
@ -46,10 +46,12 @@ msgid ""
"This document describes how to use the :mod:`curses` extension module to "
"control text-mode displays."
msgstr ""
"Ce document décrit comment utiliser le module d'extension :mod:`curses` pour "
"contrôler l'affichage en mode texte."
#: ../Doc/howto/curses.rst:18
msgid "What is curses?"
msgstr ""
msgstr "Qu'est-ce que *curses* ?"
#: ../Doc/howto/curses.rst:20
msgid ""
@ -61,6 +63,14 @@ msgid ""
"areas. Different terminals use widely differing codes, and often have their "
"own minor quirks."
msgstr ""
"La bibliothèque *curses* fournit une capacité de dessin à l'écran et de "
"gestion du clavier indépendante du terminal pour les terminaux textuels ; "
"ces terminaux comprennent les *VT100*, la console Linux et le terminal "
"simulé fourni par divers programmes. Les terminaux d'affichage prennent en "
"charge divers codes de commande pour effectuer des opérations courantes "
"telles que déplacer le curseur, faire défiler l'écran et effacer des zones. "
"Différents terminaux utilisent des codes très différents et ont souvent "
"leurs propres bizarreries mineures."
#: ../Doc/howto/curses.rst:28
msgid ""
@ -71,6 +81,15 @@ msgid ""
"an X server. Another is tools such as OS installers and kernel "
"configurators that may have to run before any graphical support is available."
msgstr ""
"Dans un monde d'affichages graphiques, on pourrait se demander « pourquoi "
"s'embêter ? ». Il est vrai que les terminaux d'affichage caractère par "
"caractère sont une technologie obsolète, mais il existe des niches pour "
"lesquelles la possibilité de faire des choses fantaisistes est encore "
"précieuse. En exemple de niche, on peut citer les systèmes de type Unix de "
"petite taille ou embarqués qui n'utilisent pas de serveur X. Il y a aussi "
"les outils tels que les installateurs d'OS et les outils de configuration du "
"noyau qui doivent être exécutés avant qu'un support graphique ne soit "
"disponible."
#: ../Doc/howto/curses.rst:36
msgid ""
@ -84,6 +103,16 @@ msgid ""
"features, consider a user interface library such as `Urwid <https://pypi.org/"
"project/urwid/>`_."
msgstr ""
"La bibliothèque *curses* propose des fonctionnalités assez basiques, "
"fournissant au programmeur une abstraction d'affichage contenant plusieurs "
"fenêtres de texte qui ne se chevauchent pas. Le contenu d'une fenêtre peut "
"être modifié de différentes manières — en ajoutant du texte, en l'effaçant "
"ou en changeant son apparence — et la bibliothèque *curses* trouve quels "
"codes de contrôle doivent être envoyés au terminal pour produire le bon "
"résultat. *curses* ne fournit pas beaucoup de concepts d'interface "
"utilisateur tels que boutons, cases à cocher ou dialogues ; si vous avez "
"besoin de telles fonctionnalités, pensez à une bibliothèque d'interface "
"utilisateur comme `Urwid <https://pypi.org/project/urwid/>`_."
#: ../Doc/howto/curses.rst:46
msgid ""
@ -97,6 +126,16 @@ msgid ""
"older versions of curses carried by some proprietary Unixes may not support "
"everything, though."
msgstr ""
"La bibliothèque *curses* a été écrite à l'origine pour BSD Unix ; les "
"dernières versions *System V* d'Unix d'AT&T ont ajouté de nombreuses "
"améliorations et de nouvelles fonctions. BSD *curses* n'est plus maintenu, "
"ayant été remplacé par *ncurses*, qui est une implémentation open-source de "
"l'interface AT&T. Si vous utilisez un Unix open-source comme Linux ou "
"FreeBSD, votre système utilise presque certainement *ncurses*. Comme la "
"plupart des versions commerciales actuelles d'Unix sont basées sur le code "
"*System V*, toutes les fonctions décrites ici seront probablement "
"disponibles. Les anciennes versions de *curses* portées par certains Unix "
"propriétaires pourraient ne pas gérer toutes les fonctions."
#: ../Doc/howto/curses.rst:56
msgid ""
@ -107,10 +146,16 @@ msgid ""
"API as curses but provides cursor-addressable text output and full support "
"for mouse and keyboard input."
msgstr ""
"La version Windows de Python n'inclut pas le module :mod:`curses`. Une "
"version portée appelée `UniCurses <https://pypi.org/project/UniCurses>`_ est "
"disponible. Vous pouvez également essayer le `Windows console driver <http://"
"effbot.org/zone/console-index.htm>`_ écrit par Fredrik Lundh, qui n'utilise "
"pas la même API que *curses*, mais fournit une sortie texte avec gestion du "
"curseur et une prise en charge complète de la souris et du clavier."
#: ../Doc/howto/curses.rst:66
msgid "The Python curses module"
msgstr ""
msgstr "Le module *curses* de Python"
#: ../Doc/howto/curses.rst:68
msgid ""
@ -122,6 +167,13 @@ msgid ""
"`mvwaddstr` into a single :meth:`~curses.window.addstr` method. You'll see "
"this covered in more detail later."
msgstr ""
"Le module Python est une surcouche assez simple enrobant les fonctions C "
"fournies par *curses* ; si vous êtes déjà familier avec la programmation "
"*curses* en C, il est très facile de transférer cette connaissance à Python. "
"La plus grande différence est que l'interface Python simplifie les choses en "
"fusionnant différentes fonctions C telles que :c:func:`addstr`, :c:func:"
"`mvaddstr` et :c:func:`mvwaddstr` en une seule méthode :meth:`~curses.window."
"addstr`. Nous voyons cela plus en détail ci-après."
#: ../Doc/howto/curses.rst:76
msgid ""
@ -130,10 +182,15 @@ msgid ""
"that, see the Python library guide's section on ncurses, and the C manual "
"pages for ncurses. It will, however, give you the basic ideas."
msgstr ""
"Ce guide pratique est une introduction à l'écriture de programmes en mode "
"texte avec *curses* et Python. Il n'essaie pas d'être un guide complet de "
"l'API *curses* ; pour cela, consultez la section du guide de la bibliothèque "
"Python sur *ncurses* et les pages du manuel C pour *ncurses*. Il vous donne "
"cependant les idées de base."
#: ../Doc/howto/curses.rst:83
msgid "Starting and ending a curses application"
msgstr ""
msgstr "Lancement et arrêt une application *curses*"
#: ../Doc/howto/curses.rst:85
msgid ""
@ -144,6 +201,12 @@ msgid ""
"object representing the entire screen; this is usually called ``stdscr`` "
"after the name of the corresponding C variable. ::"
msgstr ""
"Avant de faire quoi que ce soit, *curses* doit être initialisé. Appelez pour "
"cela la fonction :func:`~curses.initscr`, elle détermine le type de "
"terminal, envoie tous les codes de configuration requis au terminal et crée "
"diverses structures de données internes. En cas de succès, :func:`initscr` "
"renvoie un objet fenêtre représentant l'écran entier ; il est généralement "
"appelé ``stdscr`` d'après le nom de la variable C correspondante. ::"
#: ../Doc/howto/curses.rst:96
msgid ""
@ -151,6 +214,10 @@ msgid ""
"screen, in order to be able to read keys and only display them under certain "
"circumstances. This requires calling the :func:`~curses.noecho` function. ::"
msgstr ""
"Habituellement, les applications *curses* désactivent l'écho automatique des "
"touches à l'écran, afin de pouvoir lire les touches et ne les afficher que "
"dans certaines circonstances. Cela nécessite d'appeler la fonction :func:"
"`~curses.noecho`. ::"
#: ../Doc/howto/curses.rst:103
msgid ""
@ -158,6 +225,10 @@ msgid ""
"requiring the Enter key to be pressed; this is called cbreak mode, as "
"opposed to the usual buffered input mode. ::"
msgstr ""
"Également, les applications réagissent généralement instantanément aux "
"touches sans qu'il soit nécessaire d'appuyer sur la touche Entrée ; c'est ce "
"qu'on appelle le mode *cbreak*, par opposition au mode d'entrée habituel "
"avec un tampon. ::"
#: ../Doc/howto/curses.rst:109
msgid ""
@ -168,12 +239,21 @@ msgid ""
"const:`curses.KEY_LEFT`. To get curses to do the job, you'll have to enable "
"keypad mode. ::"
msgstr ""
"Les terminaux renvoient généralement les touches spéciales, telles que les "
"touches de curseur ou les touches de navigation (Page précédente et Accueil "
"par exemple), comme une séquence d'échappement sur plusieurs octets. Bien "
"que vous puissiez écrire votre application pour vous attendre à de telles "
"séquences et les traiter en conséquence, *curses* peut le faire pour vous, "
"renvoyant une valeur spéciale telle que :const:`curses.KEY_LEFT`. Pour que "
"*curses* fasse le travail, vous devez activer le mode *keypad*. ::"
#: ../Doc/howto/curses.rst:118
msgid ""
"Terminating a curses application is much easier than starting one. You'll "
"need to call::"
msgstr ""
"Arrêter une application *curses* est beaucoup plus facile que d'en démarrer "
"une. Appelez ::"
#: ../Doc/howto/curses.rst:125
msgid ""
@ -181,6 +261,9 @@ msgid ""
"`~curses.endwin` function to restore the terminal to its original operating "
"mode. ::"
msgstr ""
"pour inverser les réglages du terminal mis en place pour *curses*. Ensuite, "
"appelez la fonction :func:`~curses.enddwin` pour restaurer le terminal dans "
"son mode de fonctionnement original. ::"
#: ../Doc/howto/curses.rst:131
msgid ""
@ -190,12 +273,21 @@ msgid ""
"raises an uncaught exception. Keys are no longer echoed to the screen when "
"you type them, for example, which makes using the shell difficult."
msgstr ""
"Un problème courant lors du débogage d'une application *curses* est de se "
"retrouver avec un terminal sans queue ni tête lorsque l'application meurt "
"sans restaurer le terminal à son état précédent. Avec Python, cela arrive "
"souvent lorsque votre code est bogué et lève une exception non interceptée. "
"Les touches ne sont plus répétées à l'écran lorsque vous les tapez, par "
"exemple, ce qui rend l'utilisation de l'interface de commande du *shell* "
"difficile."
#: ../Doc/howto/curses.rst:137
msgid ""
"In Python you can avoid these complications and make debugging much easier "
"by importing the :func:`curses.wrapper` function and using it like this::"
msgstr ""
"En Python, vous pouvez éviter ces complications et faciliter le débogage en "
"important la fonction :func:`curses.wrapper` et en l'utilisant comme suit ::"
#: ../Doc/howto/curses.rst:156
msgid ""
@ -209,10 +301,19 @@ msgid ""
"funny state on exception and you'll be able to read the exception's message "
"and traceback."
msgstr ""
"La fonction :func:`~curses.wrapper` prend un objet appelable et fait les "
"initialisations décrites ci-dessus, initialisant également les couleurs si "
"la gestion des couleurs est possible. :func:`wrapper` lance l'appelable "
"fourni. Une fois que l'appelable termine, :func:`wrapper` restaure l'état "
"d'origine du terminal. L'appelable est appelé à l'intérieur d'un :keyword:"
"`try`...\\ :keyword:`except` qui capture les exceptions, restaure l'état du "
"terminal, puis relève l'exception. Par conséquent, votre terminal ne reste "
"pas dans un drôle d'état au moment de l'exception et vous pourrez lire le "
"message de l'exception et la trace de la pile d'appels."
#: ../Doc/howto/curses.rst:168
msgid "Windows and Pads"
msgstr ""
msgstr "Fenêtres et tampons (*pads* en anglais)"
#: ../Doc/howto/curses.rst:170
msgid ""
@ -220,6 +321,10 @@ msgid ""
"rectangular area of the screen, and supports methods to display text, erase "
"it, allow the user to input strings, and so forth."
msgstr ""
"Les fenêtres sont l'abstraction de base de *curses*. Un objet fenêtre "
"représente une zone rectangulaire de l'écran qui gère des méthodes pour "
"afficher du texte, l'effacer, permettre à l'utilisateur de saisir des "
"chaînes, etc."
#: ../Doc/howto/curses.rst:174
msgid ""
@ -230,6 +335,12 @@ msgid ""
"newwin` function creates a new window of a given size, returning the new "
"window object. ::"
msgstr ""
"L'objet ``stdscr`` renvoyé par la fonction :func:`~curses.initscr` est un "
"objet fenêtre qui couvre l'écran entier. De nombreux programmes peuvent "
"n'avoir besoin que de cette fenêtre unique, mais vous pouvez diviser l'écran "
"en fenêtres plus petites, afin de les redessiner ou de les effacer "
"séparément. La fonction :func:`~curses.newwin` crée une nouvelle fenêtre "
"d'une taille donnée, renvoyant le nouvel objet fenêtre. ::"
#: ../Doc/howto/curses.rst:185
msgid ""
@ -240,6 +351,13 @@ msgid ""
"difference from most other computer applications, but it's been part of "
"curses since it was first written, and it's too late to change things now."
msgstr ""
"Notez que le système de coordonnées utilisé dans *curses* est inhabituel. "
"Les coordonnées sont toujours passées dans l'ordre *y,x* et le coin "
"supérieur gauche d'une fenêtre a pour coordonnées (0,0). Ceci rompt la "
"convention normale des coordonnées où la coordonnée *x* vient en premier. "
"C'est une différence malheureuse par rapport à la plupart des autres "
"applications informatiques, mais elle fait partie de *curses* depuis qu'il a "
"été écrit et il est trop tard pour changer les choses maintenant."
#: ../Doc/howto/curses.rst:193
msgid ""
@ -248,6 +366,10 @@ msgid ""
"sizes. Legal coordinates will then extend from ``(0,0)`` to ``(curses.LINES "
"- 1, curses.COLS - 1)``."
msgstr ""
"Votre application peut déterminer la taille de l'écran en utilisant les "
"variables :data:`curses.LINES` et :data:`curses.COLS` pour obtenir les "
"tailles *y* et *x*. Les coordonnées licites s'étendent alors de ``(0,0)`` à "
"``(curses.LINES - 1, curses.COLS - 1)``."
#: ../Doc/howto/curses.rst:198
msgid ""
@ -255,6 +377,9 @@ msgid ""
"immediately show up on the display. Instead you must call the :meth:"
"`~curses.window.refresh` method of window objects to update the screen."
msgstr ""
"Quand vous appelez une méthode pour afficher ou effacer du texte, "
"l'affichage ne le reflète pas immédiatement. Vous devez appeler la méthode :"
"meth:`~curses.window.refresh` des objets fenêtre pour mettre à jour l'écran."
#: ../Doc/howto/curses.rst:203
msgid ""
@ -266,6 +391,14 @@ msgid ""
"and then clears the window, there's no need to send the original text "
"because they're never visible."
msgstr ""
"C'est parce que *curses* a été écrit du temps des terminaux avec une "
"connexion à 300 bauds seulement ; avec ces terminaux, il était important de "
"minimiser le temps passé à redessiner l'écran. *curses* calcule donc les "
"modifications à apporter à l'écran pour les afficher de la manière la plus "
"efficace au moment où la méthode :meth:`refresh` est appelée. Par exemple, "
"si votre programme affiche du texte dans une fenêtre puis efface cette "
"fenêtre, il n'est pas nécessaire de l'afficher puisqu'il ne sera jamais "
"visible."
#: ../Doc/howto/curses.rst:212
msgid ""
@ -276,6 +409,14 @@ msgid ""
"redrawn before pausing to wait for user input, by first calling ``stdscr."
"refresh()`` or the :meth:`refresh` method of some other relevant window."
msgstr ""
"Pratiquement, le fait de devoir indiquer explicitement à *curses* de "
"redessiner une fenêtre ne rend pas la programmation plus compliquée. La "
"plupart des programmes effectuent une rafale de traitements puis attendent "
"qu'une touche soit pressée ou toute autre action de la part de "
"l'utilisateur. Tout ce que vous avez à faire consiste à vous assurer que "
"l'écran a bien été redessiné avant d'attendre une entrée utilisateur, en "
"appelant d'abord ``stdscr.refresh()`` ou la méthode :meth:`refresh` de la "
"fenêtre adéquate."
#: ../Doc/howto/curses.rst:220
msgid ""
@ -285,6 +426,12 @@ msgid ""
"giving the coordinates of the on-screen area where a subsection of the pad "
"will be displayed. ::"
msgstr ""
"Un tampon (*pad* en anglais) est une forme spéciale de fenêtre ; il peut "
"être plus grand que l'écran effectif et il est possible de n'afficher qu'une "
"partie du tampon à la fois. La création d'un tampon nécessite de fournir sa "
"hauteur et sa largeur, tandis que pour le rafraîchissement du tampon, vous "
"devez fournir les coordonnées de la zone de l'écran où une partie du tampon "
"sera affichée."
#: ../Doc/howto/curses.rst:241
msgid ""
@ -294,6 +441,11 @@ msgid ""
"Beyond that difference, pads are exactly like ordinary windows and support "
"the same methods."
msgstr ""
"L'appel à :meth:`refresh` affiche une partie du tampon dans le rectangle "
"formé par les coins de coordonnées (5,5) et (20,75) de l'écran ; le coin "
"supérieur gauche de la partie affichée a pour coordonnées (0,0) dans le "
"tampon. À part cette différence, les tampons sont exactement comme les "
"fenêtres ordinaires et gèrent les mêmes méthodes."
#: ../Doc/howto/curses.rst:247
msgid ""
@ -301,28 +453,39 @@ msgid ""
"way to update the screen and prevent annoying screen flicker as each part of "
"the screen gets updated. :meth:`refresh` actually does two things:"
msgstr ""
"Si vous avez plusieurs fenêtres et tampons sur l'écran, il existe un moyen "
"plus efficace pour rafraîchir l'écran et éviter des scintillements agaçants "
"à chaque mise à jour. :meth:`refresh` effectue en fait deux choses :"
#: ../Doc/howto/curses.rst:252
msgid ""
"Calls the :meth:`~curses.window.noutrefresh` method of each window to update "
"an underlying data structure representing the desired state of the screen."
msgstr ""
"elle appelle la méthode :meth:`~curses.window.noutrefresh` de chaque fenêtre "
"pour mettre à jour les données sous-jacentes qui permettent d'obtenir "
"l'affichage voulu ;"
#: ../Doc/howto/curses.rst:255
msgid ""
"Calls the function :func:`~curses.doupdate` function to change the physical "
"screen to match the desired state recorded in the data structure."
msgstr ""
"elle appelle la fonction :func:`~curses.doupdate` pour modifier l'écran "
"physique afin de correspondre à l'état défini par les données sous-jacentes."
#: ../Doc/howto/curses.rst:258
msgid ""
"Instead you can call :meth:`noutrefresh` on a number of windows to update "
"the data structure, and then call :func:`doupdate` to update the screen."
msgstr ""
"Vous pouvez ainsi appeler :meth:`noutrefresh` sur les fenêtres dont vous "
"voulez mettre à jour des données, puis :func:`doupdate` pour mettre à jour "
"l'écran."
#: ../Doc/howto/curses.rst:264
msgid "Displaying Text"
msgstr ""
msgstr "Affichage de texte"
#: ../Doc/howto/curses.rst:266
msgid ""
@ -334,6 +497,14 @@ msgid ""
"allows specifying a window to use instead of using ``stdscr`` by default. :c:"
"func:`mvwaddstr` allows specifying both a window and a coordinate."
msgstr ""
"D'un point de vue de programmeur C, *curses* peut parfois ressembler à un "
"enchevêtrement de fonctions, chacune ayant sa subtilité. Par exemple, :c:"
"func:`addstr` affiche une chaîne à la position actuelle du curseur de la "
"fenêtre ``stdscr``, alors que :c:func:`mvaddstr` se déplace d'abord "
"jusqu'aux coordonnées (y,x) avant d'afficher la chaîne. :c:func:`waddstr` "
"est comme :c:func:`addstr`, mais permet de spécifier la fenêtre au lieu "
"d'utiliser ``stdscr`` par défaut. :c:func:`mvwaddstr` permet de spécifier à "
"la fois les coordonnées et la fenêtre."
#: ../Doc/howto/curses.rst:275
msgid ""
@ -342,10 +513,14 @@ msgid ""
"addstr` accept multiple argument forms. Usually there are four different "
"forms."
msgstr ""
"Heureusement, l'interface Python masque tous ces détails. ``stdscr`` est un "
"objet fenêtre comme les autres et les méthodes telles que :meth:`~curses."
"window.addstr` acceptent leurs arguments sous de multiples formes, "
"habituellement quatre."
#: ../Doc/howto/curses.rst:281
msgid "Form"
msgstr ""
msgstr "Forme"
#: ../Doc/howto/curses.rst:281 ../Doc/howto/curses.rst:350
msgid "Description"
@ -353,39 +528,45 @@ msgstr "Description"
#: ../Doc/howto/curses.rst:283
msgid "*str* or *ch*"
msgstr ""
msgstr "*str* ou *ch*"
#: ../Doc/howto/curses.rst:283
msgid "Display the string *str* or character *ch* at the current position"
msgstr ""
msgstr "Affiche la chaîne *str* ou le caractère *ch* à la position actuelle"
#: ../Doc/howto/curses.rst:286
msgid "*str* or *ch*, *attr*"
msgstr ""
msgstr "*str* ou *ch*, *attr*"
#: ../Doc/howto/curses.rst:286
msgid ""
"Display the string *str* or character *ch*, using attribute *attr* at the "
"current position"
msgstr ""
"Affiche la chaîne *str* ou le caractère *ch*, en utilisant l'attribut *attr* "
"à la position actuelle"
#: ../Doc/howto/curses.rst:290
msgid "*y*, *x*, *str* or *ch*"
msgstr ""
msgstr "*y*, *x*, *str* ou *ch*"
#: ../Doc/howto/curses.rst:290
msgid "Move to position *y,x* within the window, and display *str* or *ch*"
msgstr ""
"Se déplace à la position *y,x* dans la fenêtre et affiche la chaîne *str* ou "
"le caractère *ch*"
#: ../Doc/howto/curses.rst:293
msgid "*y*, *x*, *str* or *ch*, *attr*"
msgstr ""
msgstr "*y*, *x*, *str* ou *ch*, *attr*"
#: ../Doc/howto/curses.rst:293
msgid ""
"Move to position *y,x* within the window, and display *str* or *ch*, using "
"attribute *attr*"
msgstr ""
"Se déplace à la position *y,x* dans la fenêtre et affiche la chaîne *str* ou "
"le caractère *ch* en utilisant l'attribut *attr*"
#: ../Doc/howto/curses.rst:297
msgid ""
@ -393,6 +574,9 @@ msgid ""
"underline, reverse code, or in color. They'll be explained in more detail "
"in the next subsection."
msgstr ""
"Les attributs permettent de mettre en valeur du texte : gras, souligné, mode "
"vidéo inversé ou en couleur. Nous les voyons plus en détail dans la section "
"suivante."
#: ../Doc/howto/curses.rst:302
msgid ""
@ -402,12 +586,21 @@ msgid ""
"window's :attr:`encoding` attribute; this defaults to the default system "
"encoding as returned by :func:`locale.getpreferredencoding`."
msgstr ""
"La méthode :meth:`~curses.window.addstr` prend en argument une chaîne ou une "
"suite d'octets Python. Le contenu des chaînes d'octets est envoyé vers le "
"terminal tel quel. Les chaînes sont encodées en octets en utilisant la "
"valeur de l'attribut :attr:`encoding` de la fenêtre ; c'est par défaut "
"l'encodage du système tel que renvoyé par :func:`locale."
"getpreferredencoding`."
#: ../Doc/howto/curses.rst:309
msgid ""
"The :meth:`~curses.window.addch` methods take a character, which can be "
"either a string of length 1, a bytestring of length 1, or an integer."
msgstr ""
"Les méthodes :meth:`~curses.window.addch` prennent un caractère, soit sous "
"la forme d'une chaîne de longueur 1, d'une chaîne d'octets de longueur 1 ou "
"d'un entier."
#: ../Doc/howto/curses.rst:312
msgid ""
@ -416,6 +609,11 @@ msgid ""
"symbol, and :const:`ACS_ULCORNER` is the upper left corner of a box (handy "
"for drawing borders). You can also use the appropriate Unicode character."
msgstr ""
"Des constantes sont disponibles pour étendre les caractères ; ces constantes "
"sont des entiers supérieurs à 255. Par exemple, :const:`ACS_PLMINUS` "
"correspond au symbole +/- et :const:`ACS_ULCORNER` correspond au coin en "
"haut et à gauche d'une boîte (utile pour dessiner des encadrements). Vous "
"pouvez aussi utiliser les caractères Unicode adéquats."
#: ../Doc/howto/curses.rst:318
msgid ""
@ -427,6 +625,14 @@ msgid ""
"some location where it won't be distracting; it can be confusing to have the "
"cursor blinking at some apparently random location."
msgstr ""
"Windows se souvient de l'endroit où le curseur était positionné lors de la "
"dernière opération, de manière à ce que si vous n'utilisez pas les "
"coordonnées *y,x*, l'affichage se produit au dernier endroit utilisé. Vous "
"pouvez aussi déplacer le curseur avec la méthode ``move(y,x)``. Comme "
"certains terminaux affichent un curseur clignotant, vous pouvez ainsi vous "
"assurer que celui-ci est positionné à un endroit où il ne distrait pas "
"l'utilisateur (il peut être déroutant d'avoir un curseur qui clignote à des "
"endroits apparemment aléatoires)."
#: ../Doc/howto/curses.rst:326
msgid ""
@ -437,10 +643,17 @@ msgid ""
"attempt to suppress the flashing cursor, and you won't need to worry about "
"leaving it in odd locations."
msgstr ""
"Si votre application n'a pas besoin d'un curseur clignotant, vous pouvez "
"appeler ``curs_set(False)`` pour le rendre invisible. Par souci de "
"compatibilité avec les anciennes versions de *curses*, il existe la fonction "
"``leaveok(bool)`` qui est un synonyme de :func:`~curses.curs_set`. Quand "
"*bool* vaut ``True``, la bibliothèque *curses* essaie de supprimer le "
"curseur clignotant et vous n'avez plus besoin de vous soucier de le laisser "
"trainer à des endroits bizarres."
#: ../Doc/howto/curses.rst:335
msgid "Attributes and Color"
msgstr ""
msgstr "Attributs et couleurs"
#: ../Doc/howto/curses.rst:337
msgid ""
@ -449,6 +662,11 @@ msgid ""
"to highlight certain words. curses supports this by allowing you to specify "
"an attribute for each cell on the screen."
msgstr ""
"Les caractères peuvent être affichés de différentes façons. Les lignes de "
"statut des applications en mode texte sont généralement affichées en mode "
"vidéo inversé ; vous pouvez avoir besoin de mettre en valeur certains mots. "
"À ces fins, *curses* vous permet de spécifier un attribut pour chaque "
"caractère à l'écran."
#: ../Doc/howto/curses.rst:342
msgid ""
@ -459,6 +677,13 @@ msgid ""
"being used, so it's safest to stick to the most commonly available "
"attributes, listed here."
msgstr ""
"Un attribut est un entier dont chaque bit représente un attribut différent. "
"Vous pouvez essayer d'afficher du texte avec plusieurs attributs définis "
"simultanément mais *curses* ne garantit pas que toutes les combinaisons "
"soient prises en compte ou que le résultat soit visuellement différent. Cela "
"dépend de la capacité de chaque terminal utilisé, il est donc plus sage de "
"se cantonner aux attributs les plus communément utilisés, dont la liste est "
"fournie ci-dessous."
#: ../Doc/howto/curses.rst:350
msgid "Attribute"
@ -466,57 +691,59 @@ msgstr "Attribut"
#: ../Doc/howto/curses.rst:352
msgid ":const:`A_BLINK`"
msgstr ""
msgstr ":const:`A_BLINK`"
#: ../Doc/howto/curses.rst:352
msgid "Blinking text"
msgstr ""
msgstr "Texte clignotant"
#: ../Doc/howto/curses.rst:354
msgid ":const:`A_BOLD`"
msgstr ""
msgstr ":const:`A_BOLD`"
#: ../Doc/howto/curses.rst:354
msgid "Extra bright or bold text"
msgstr ""
msgstr "Texte en surbrillance ou en gras"
#: ../Doc/howto/curses.rst:356
msgid ":const:`A_DIM`"
msgstr ""
msgstr ":const:`A_DIM`"
#: ../Doc/howto/curses.rst:356
msgid "Half bright text"
msgstr ""
msgstr "Texte en demi-ton"
#: ../Doc/howto/curses.rst:358
msgid ":const:`A_REVERSE`"
msgstr ""
msgstr ":const:`A_REVERSE`"
#: ../Doc/howto/curses.rst:358
msgid "Reverse-video text"
msgstr ""
msgstr "Texte en mode vidéo inversé"
#: ../Doc/howto/curses.rst:360
msgid ":const:`A_STANDOUT`"
msgstr ""
msgstr ":const:`A_STANDOUT`"
#: ../Doc/howto/curses.rst:360
msgid "The best highlighting mode available"
msgstr ""
msgstr "Le meilleur mode de mis en valeur pour le texte"
#: ../Doc/howto/curses.rst:362
msgid ":const:`A_UNDERLINE`"
msgstr ""
msgstr ":const:`A_UNDERLINE`"
#: ../Doc/howto/curses.rst:362
msgid "Underlined text"
msgstr ""
msgstr "Texte souligné"
#: ../Doc/howto/curses.rst:365
msgid ""
"So, to display a reverse-video status line on the top line of the screen, "
"you could code::"
msgstr ""
"Ainsi, pour mettre la ligne de statut située en haut de l'écran en mode "
"vidéo inversé, vous pouvez coder ::"
#: ../Doc/howto/curses.rst:372
msgid ""
@ -524,6 +751,9 @@ msgid ""
"The most common such terminal is probably the Linux console, followed by "
"color xterms."
msgstr ""
"La bibliothèque *curses* gère également les couleurs pour les terminaux "
"compatibles. Le plus répandu de ces terminaux est sûrement la console Linux, "
"suivie par *xterm* en couleurs."
#: ../Doc/howto/curses.rst:376
msgid ""
@ -536,6 +766,14 @@ msgid ""
"to the British spelling, you'll have to resign yourself to misspelling it "
"for the sake of these functions.)"
msgstr ""
"Pour utiliser les couleurs, vous devez d'abord appeler la fonction :func:"
"`~curses.start_color` juste après avoir appelé :func:`~curses.initscr` afin "
"d'initialiser (la fonction :func:`curses.wrapper` le fait automatiquement). "
"Ensuite, la fonction :func:`~curses.has_colors` renvoie ``True`` si le "
"terminal utilisé gère les couleurs (note : *curses* utilise l'orthographe "
"américaine *color* et non pas l'orthographe britannique ou canadienne "
"*colour* ; si vous êtes habitué à l'orthographe britannique, vous devrez "
"vous résigner à mal l'orthographier tant que vous utilisez *curses*)."
#: ../Doc/howto/curses.rst:386
msgid ""
@ -546,10 +784,19 @@ msgid ""
"as :const:`A_REVERSE`, but again, such combinations are not guaranteed to "
"work on all terminals."
msgstr ""
"La bibliothèque *curses* maintient un nombre restreint de paires de "
"couleurs, constituées d'une couleur de texte (*foreground*) et de fond "
"(*background*). Vous pouvez obtenir la valeur des attributs correspondant à "
"une paire de couleur avec la fonction :func:`~curses.color_pair` ; cette "
"valeur peut être combinée bit par bit (avec la fonction *OR*) avec les "
"autres attributs tels que :const:`A_REVERSE`,mais là encore, de telles "
"combinaisons risquent de ne pas fonctionner sur tous les terminaux."
#: ../Doc/howto/curses.rst:393
msgid "An example, which displays a line of text using color pair 1::"
msgstr ""
"Un exemple d'affichage d'une ligne de texte en utilisant la paire de couleur "
"1 ::"
#: ../Doc/howto/curses.rst:398
msgid ""
@ -558,6 +805,11 @@ msgid ""
"pair *n*, to foreground color f and background color b. Color pair 0 is "
"hard-wired to white on black, and cannot be changed."
msgstr ""
"Comme indiqué auparavant, une paire de couleurs est constituée d'une couleur "
"de texte et d'une couleur de fond. La fonction ``init_pair(n, f, b)`` change "
"la définition de la paire de couleurs *n*, en définissant la couleur de "
"texte à *f* et la couleur de fond à *b*. La paire de couleurs 0 est codée en "
"dur à blanc sur noir et ne peut être modifiée."
#: ../Doc/howto/curses.rst:403
msgid ""
@ -567,12 +819,20 @@ msgid ""
"named constants for each of these colors: :const:`curses.COLOR_BLACK`, :"
"const:`curses.COLOR_RED`, and so forth."
msgstr ""
"Les couleurs sont numérotées et :func:`start_color` initialise 8 couleurs "
"basiques lors de l'activation du mode en couleurs. Ce sont : 0 pour noir "
"(*black*), 1 pour rouge (*red*), 2 pour vert (*green*), 3 pour jaune "
"(*yellow*), 4 pour bleu *(blue*), 5 pour magenta, 6 pour cyan et 7 pour "
"blanc (*white*). Le module :mod:`curses` définit des constantes nommées pour "
"chacune de ces couleurs : :const:`curses.COLOR_BLACK`, :const:`curses."
"COLOR_RED` et ainsi de suite."
#: ../Doc/howto/curses.rst:409
msgid ""
"Let's put all this together. To change color 1 to red text on a white "
"background, you would call::"
msgstr ""
"Testons tout ça. Pour changer la couleur 1 à rouge sur fond blanc, appelez ::"
#: ../Doc/howto/curses.rst:414
msgid ""
@ -580,6 +840,9 @@ msgid ""
"pair will change to the new colors. You can also display new text in this "
"color with::"
msgstr ""
"Quand vous modifiez une paire de couleurs, tout le texte déjà affiché qui "
"utilise cette paire de couleur voit les nouvelles couleurs s'appliquer à "
"lui. Vous pouvez aussi afficher du nouveau texte dans cette couleur avec ::"
#: ../Doc/howto/curses.rst:420
msgid ""
@ -592,10 +855,19 @@ msgid ""
"there. If you're lucky enough to have such a talented terminal, consult "
"your system's man pages for more information."
msgstr ""
"Les terminaux « de luxe » peuvent définir les couleurs avec des valeurs "
"*RGB*. Cela vous permet de modifier la couleur 1, habituellement rouge, en "
"violet ou bleu voire toute autre couleur selon votre goût. Malheureusement, "
"la console Linux ne gère pas cette fonctionnalité, je suis donc bien "
"incapable de la tester et de vous en fournir un exemple. Vous pouvez "
"vérifier si votre terminal la prend en charge en appelant :func:`~curses."
"can_change_color`, qui renvoie ``True`` en cas de succès. Si vous avez la "
"chance d'avoir un terminal aussi perfectionné, consultez les pages du manuel "
"de votre système pour obtenir plus d'informations."
#: ../Doc/howto/curses.rst:431
msgid "User Input"
msgstr ""
msgstr "Entrées de l'utilisateur"
#: ../Doc/howto/curses.rst:433
msgid ""
@ -604,10 +876,14 @@ msgid ""
"`Urwid <https://pypi.org/project/urwid/>`_ have more extensive collections "
"of widgets.)"
msgstr ""
"La bibliothèque C *curses* ne propose que quelques mécanismes très simples "
"pour les entrées. Le module :mod:`curses` y ajoute un *widget* basique "
"d'entrée de texte (d'autres bibliothèques telles que `Urwid <https://pypi."
"org/project/urwid/>`_ ont un ensemble de *widgets* plus conséquent)."
#: ../Doc/howto/curses.rst:438
msgid "There are two methods for getting input from a window:"
msgstr ""
msgstr "Il y a deux méthodes pour obtenir des entrées dans une fenêtre :"
#: ../Doc/howto/curses.rst:440
msgid ""
@ -616,6 +892,10 @@ msgid ""
"called earlier. You can optionally specify a coordinate to which the cursor "
"should be moved before pausing."
msgstr ""
":meth:`~curses.window.getch` rafraîchit l'écran et attend que l'utilisateur "
"appuie sur une touche, affichant cette touche si :func:`~curses.echo` a été "
"appelé auparavant. Vous pouvez en option spécifier des coordonnées où "
"positionner le curseur avant la mise en pause ;"
#: ../Doc/howto/curses.rst:445
msgid ""
@ -624,6 +904,11 @@ msgid ""
"special keys such as function keys return longer strings containing a key "
"name such as ``KEY_UP`` or ``^G``."
msgstr ""
":meth:`~curses.window.getkey` effectue la même chose mais convertit l'entier "
"en chaîne. Les caractères individuels sont renvoyés en chaînes de longueur 1 "
"alors que les touches spéciales (telles que les touches de fonction) "
"renvoient des chaînes plus longues contenant le nom de la touche (tel que "
"``KEY_UP`` ou ``^G``)."
#: ../Doc/howto/curses.rst:450
msgid ""
@ -636,6 +921,15 @@ msgid ""
"`getch`; if no input becomes available within a specified delay (measured in "
"tenths of a second), curses raises an exception."
msgstr ""
"Il est possible de ne pas attendre l'utilisateur en utilisant la méthode de "
"fenêtre :meth:`~curses.window.nodelay`. Après ``nodelay(True)``, les "
"méthodes de fenêtre :meth:`getch` et :meth:`getkey` deviennent non "
"bloquantes. Pour indiquer qu'aucune entrée n'a eu lieu, :meth:`getch` "
"renvoie ``curses.ERR`` (ayant pour valeur 1) et :meth:`getkey` lève une "
"exception. Il existe aussi la fonction :func:`~curses.halfdelay`, qui peut "
"être utilisée pour définir un délai maximal pour chaque :meth:`getch` ; si "
"aucune entrée n'est disponible dans le délai spécifié (mesuré en dixièmes de "
"seconde), *curses* lève une exception."
#: ../Doc/howto/curses.rst:460
msgid ""
@ -646,6 +940,13 @@ msgid ""
"`curses.KEY_HOME`, or :const:`curses.KEY_LEFT`. The main loop of your "
"program may look something like this::"
msgstr ""
"La méthode :meth:`getch` renvoie un entier ; s'il est entre 0 et 255, c'est "
"le code ASCII de la touche pressée. Les valeurs supérieures à 255 sont des "
"touches spéciales telles que Page Précédente, Accueil ou les touches du "
"curseur. Vous pouvez comparer la valeur renvoyée aux constantes :const:"
"`curses.KEY_PPAGE`, :const:`curses.KEY_HOME`, :const:`curses.KEY_LEFT`, etc. "
"La boucle principale de votre programme pourrait ressembler à quelque chose "
"comme ::"
#: ../Doc/howto/curses.rst:476
msgid ""
@ -656,6 +957,13 @@ msgid ""
"arguments and return the same type. For example, :func:`curses.ascii.ctrl` "
"returns the control character corresponding to its argument."
msgstr ""
"Le module :mod:`curses.ascii` fournit des fonctions pour déterminer si "
"l'entier ou la chaîne de longueur 1 passés en arguments font partie de la "
"classe ASCII ; elles peuvent s'avérer utile pour écrire du code plus lisible "
"dans ce genre de boucles. Il fournit également des fonctions de conversion "
"qui prennent un entier ou une chaîne de longueur 1 en entrée et renvoient le "
"type correspondant au nom de la fonction. Par exemple, :func:`curses.ascii."
"ctrl` renvoie le caractère de contrôle correspondant à son paramètre."
#: ../Doc/howto/curses.rst:483
msgid ""
@ -665,6 +973,11 @@ msgid ""
"key, which terminates the string. It can optionally be limited to a fixed "
"number of characters. ::"
msgstr ""
"Il existe aussi une méthode pour récupérer une chaîne entière, :meth:"
"`~curses.window.getstr`. Elle n'est pas beaucoup utilisée car son utilité "
"est limitée : les seules touches d'édition disponibles sont le retour "
"arrière et la touche Entrée, qui termine la chaîne. Elle peut, en option, "
"être limitée à un nombre fixé de caractères. ::"
#: ../Doc/howto/curses.rst:494
msgid ""
@ -673,15 +986,22 @@ msgid ""
"Textbox` class support editing with input validation and gathering the edit "
"results either with or without trailing spaces. Here's an example::"
msgstr ""
"Le module :mod:`curses.textpad` fournit un type de boîte texte qui gère des "
"touches de fonctions à la façon d'\\ *Emacs*. Plusieurs méthodes de la "
"classe :class:`~curses.textpad.Textbox` gèrent l'édition avec la validation "
"des entrées et le regroupement de l'entrée avec ou sans les espaces de début "
"et de fin. Par exemple ::"
#: ../Doc/howto/curses.rst:518
msgid ""
"See the library documentation on :mod:`curses.textpad` for more details."
msgstr ""
"Consultez la documentation de la bibliothèque pour plus de détails sur :mod:"
"`curses.textpad`."
#: ../Doc/howto/curses.rst:522
msgid "For More Information"
msgstr ""
msgstr "Pour aller plus loin"
#: ../Doc/howto/curses.rst:524
msgid ""
@ -690,6 +1010,11 @@ msgid ""
"Python library page for the :mod:`curses` module is now reasonably "
"complete. You should browse it next."
msgstr ""
"Ce guide pratique ne couvre pas certains sujets avancés, tels que la lecture "
"du contenu de l'écran ou la capture des événements relatifs à la souris dans "
"une instance *xterm*, mais la page de la bibliothèque Python du module :mod:"
"`curses` est maintenant suffisamment complète. Nous vous encourageons à la "
"parcourir."
#: ../Doc/howto/curses.rst:529
msgid ""
@ -699,6 +1024,12 @@ msgid ""
"quirks, and provide complete lists of all the functions, attributes, and :"
"const:`ACS_\\*` characters available to you."
msgstr ""
"Si vous vous posez des questions sur le fonctionnement précis de fonctions "
"*curses*, consultez les pages de manuel de l'implémentation *curses* de "
"votre système, que ce soit *ncurses* ou une version propriétaire Unix. Les "
"pages de manuel documentent toutes les bizarreries et vous donneront les "
"listes complètes des fonctions, attributs et codes :const:`ACS_\\*` des "
"caractères disponibles."
#: ../Doc/howto/curses.rst:536
msgid ""
@ -709,12 +1040,23 @@ msgid ""
"would be welcome; see `the Python Developer's Guide <https://devguide.python."
"org/>`_ to learn more about submitting patches to Python."
msgstr ""
"Étant donné que l'API *curses* est si volumineuse, certaines fonctions ne "
"sont pas prises en charge dans l'interface Python. Souvent, ce n'est pas "
"parce qu'elles sont difficiles à implémenter, mais parce que personne n'en a "
"eu encore besoin. De plus, Python ne prend pas encore en charge la "
"bibliothèque de gestion des menus associée à *ncurses*. Les correctifs "
"ajoutant cette prise en charge seraient bienvenus ; reportez-vous au `guide "
"du développeur Python <https://devguide.python.org/>`_ pour apprendre "
"comment soumettre des améliorations à Python."
#: ../Doc/howto/curses.rst:544
msgid ""
"`Writing Programs with NCURSES <http://invisible-island.net/ncurses/ncurses-"
"intro.html>`_: a lengthy tutorial for C programmers."
msgstr ""
"`Writing Programs with NCURSES <http://invisible-island.net/ncurses/ncurses-"
"intro.html>`_ : un long tutoriel pour les programmeurs C (ressource en "
"anglais)."
#: ../Doc/howto/curses.rst:546
msgid "`The ncurses man page <http://linux.die.net/man/3/ncurses>`_"
@ -724,6 +1066,8 @@ msgstr ""
msgid ""
"`The ncurses FAQ <http://invisible-island.net/ncurses/ncurses.faq.html>`_"
msgstr ""
"`La FAQ ncurses <http://invisible-island.net/ncurses/ncurses.faq.html>`_ "
"(ressource en anglais)"
#: ../Doc/howto/curses.rst:548
msgid ""
@ -731,6 +1075,9 @@ msgid ""
"v=eN1eZtjLEnU>`_: video of a PyCon 2013 talk on controlling terminals using "
"curses or Urwid."
msgstr ""
"`\"Use curses... don't swear\" <https://www.youtube.com/watch?"
"v=eN1eZtjLEnU>`_ : vidéo d'une conférence lors de la PyCon 2013 sur la "
"gestion des terminaux à l'aide de *curses* et *Urwid* (vidéo en anglais)."
#: ../Doc/howto/curses.rst:550
msgid ""
@ -738,3 +1085,6 @@ msgid ""
"console-applications-with-urwid>`_: video of a PyCon CA 2012 talk "
"demonstrating some applications written using Urwid."
msgstr ""
"`\"Console Applications with Urwid\" <http://www.pyvideo.org/video/1568/"
"console-applications-with-urwid>`_ : vidéo d'une conférence lors de PyCon CA "
"2012 montrant quelques applications utilisant *Urwid*."

View File

@ -248,7 +248,7 @@ msgid ""
msgstr ""
"Pour les classes, la machinerie est dans :meth:`type.__getattribute__` qui "
"transforme ``B.x`` en ``B.__dict__['x'].__get__(None, B)``. En Python pur, "
"il ressemble à : ::"
"il ressemble à ::"
#: ../Doc/howto/descriptor.rst:110
msgid "The important points to remember are:"
@ -339,10 +339,10 @@ msgid ""
"descriptor is useful for monitoring just a few chosen attributes::"
msgstr ""
"Le code suivant crée une classe dont les objets sont des descripteurs de "
"données qui impriment un message pour chaque lecture ou écriture. "
"Redefinir :meth:`__getattribute__` est une approche alternative qui pourrait "
"données qui affichent un message pour chaque lecture ou écriture. "
"Redéfinir :meth:`__getattribute__` est une approche alternative qui pourrait "
"le faire pour chaque attribut. Cependant, ce descripteur n'est utile que "
"pour le suivi de quelques attributs choisis : ::"
"pour le suivi de quelques attributs choisis ::"
#: ../Doc/howto/descriptor.rst:181
msgid ""
@ -368,14 +368,14 @@ msgid ""
msgstr ""
"Appeler :func:`property` est une façon succincte de construire un "
"descripteur de données qui déclenche des appels de fonction lors de l'accès "
"à un attribut. Sa signature est : ::"
"à un attribut. Sa signature est ::"
#: ../Doc/howto/descriptor.rst:195
msgid ""
"The documentation shows a typical use to define a managed attribute ``x``::"
msgstr ""
"La documentation montre une utilisation typique pour définir un attribut "
"géré ``x`` : ::"
"géré ``x`` ::"
#: ../Doc/howto/descriptor.rst:203
msgid ""
@ -383,7 +383,7 @@ msgid ""
"protocol, here is a pure Python equivalent::"
msgstr ""
"Pour voir comment :func:`property` est implémenté dans le protocole du "
"descripteur, voici un un équivalent Python pur : ::"
"descripteur, voici un un équivalent Python pur ::"
#: ../Doc/howto/descriptor.rst:243
msgid ""
@ -391,7 +391,7 @@ msgid ""
"attribute access and then subsequent changes require the intervention of a "
"method."
msgstr ""
"La fonction :func:`property` intégrée aide chaque fois qu'une interface "
"La fonction native :func:`property` aide chaque fois qu'une interface "
"utilisateur a accordé l'accès à un attribut et que des modifications "
"ultérieures nécessitent l'intervention d'une méthode."
@ -409,7 +409,7 @@ msgstr ""
"exigent que la cellule soit recalculée à chaque accès ; cependant, le "
"programmeur ne veut pas affecter le code client existant accédant "
"directement à l'attribut. La solution consiste à envelopper l'accès à "
"l'attribut de valeur dans un descripteur de données de propriété : ::"
"l'attribut de valeur dans un descripteur de données de propriété ::"
#: ../Doc/howto/descriptor.rst:263
msgid "Functions and Methods"
@ -454,7 +454,7 @@ msgid ""
"Running the interpreter shows how the function descriptor works in practice::"
msgstr ""
"L'exécution de l'interpréteur montre comment le descripteur de fonction se "
"comporte dans la pratique : ::"
"comporte dans la pratique ::"
#: ../Doc/howto/descriptor.rst:326
msgid "Static Methods and Class Methods"
@ -484,7 +484,7 @@ msgstr ""
msgid "This chart summarizes the binding and its two most useful variants:"
msgstr ""
"Ce tableau résume le lien (*binding*) et ses deux variantes les plus "
"utiles : ::"
"utiles ::"
#: ../Doc/howto/descriptor.rst:339
msgid "Transformation"
@ -576,7 +576,7 @@ msgid ""
"example calls are unexciting::"
msgstr ""
"Depuis que les méthodes statiques renvoient la fonction sous-jacente sans "
"changement, les exemples dappels ne sont pas excitants : ::"
"changement, les exemples dappels ne sont pas excitants ::"
#: ../Doc/howto/descriptor.rst:380
msgid ""
@ -584,7 +584,7 @@ msgid ""
"`staticmethod` would look like this::"
msgstr ""
"En utilisant le protocole de descripteur *non-data*, une version Python pure "
"de :func:`staticmethod` ressemblerait à ceci : ::"
"de :func:`staticmethod` ressemblerait à ceci ::"
#: ../Doc/howto/descriptor.rst:392
msgid ""
@ -594,7 +594,7 @@ msgid ""
msgstr ""
"Contrairement aux méthodes statiques, les méthodes de classe préchargent la "
"référence de classe dans la liste d'arguments avant d'appeler la fonction. "
"Ce format est le même que l'appelant soit un objet ou une classe : ::"
"Ce format est le même que l'appelant soit un objet ou une classe ::"
#: ../Doc/howto/descriptor.rst:407
msgid ""
@ -609,13 +609,13 @@ msgstr ""
"utilisations des méthodes de classe est de créer d'autres constructeurs de "
"classe. En Python 2.3, la méthode de classe :func:`dict.fromkeys` crée un "
"nouveau dictionnaire à partir d'une liste de clés. L'équivalent Python pur "
"est : ::"
"est ::"
#: ../Doc/howto/descriptor.rst:423
msgid "Now a new dictionary of unique keys can be constructed like this::"
msgstr ""
"Maintenant un nouveau dictionnaire de clés uniques peut être construit comme "
"ceci : ::"
"ceci ::"
#: ../Doc/howto/descriptor.rst:428
msgid ""
@ -623,4 +623,4 @@ msgid ""
"`classmethod` would look like this::"
msgstr ""
"En utilisant le protocole de descripteur *non-data*, une version Python pure "
"de :func:`classmethod` ressemblerait à ceci : ::"
"de :func:`classmethod` ressemblerait à ceci ::"

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/instrumentation.rst:7
msgid "Instrumenting CPython with DTrace and SystemTap"
msgstr ""
msgstr "Instrumenter CPython avec DTrace et SystemTap"
#: ../Doc/howto/instrumentation.rst:0
msgid "author"
@ -27,11 +27,11 @@ msgstr "auteur"
#: ../Doc/howto/instrumentation.rst:9
msgid "David Malcolm"
msgstr ""
msgstr "David Malcolm"
#: ../Doc/howto/instrumentation.rst:10
msgid "Łukasz Langa"
msgstr ""
msgstr "Łukasz Langa"
#: ../Doc/howto/instrumentation.rst:12
msgid ""
@ -39,18 +39,22 @@ msgid ""
"what the processes on a computer system are doing. They both use domain-"
"specific languages allowing a user to write scripts which:"
msgstr ""
"*DTrace* et *SystemTap* sont des outils de surveillance, chacun fournissant "
"un moyen de d'inspecter ce que font les processus d'un système informatique. "
"Ils utilisent tous les deux des langages dédiés permettant à un utilisateur "
"d'écrire des scripts qui permettent de ::"
#: ../Doc/howto/instrumentation.rst:16
msgid "filter which processes are to be observed"
msgstr ""
msgstr "Filtrer les processus à observer."
#: ../Doc/howto/instrumentation.rst:17
msgid "gather data from the processes of interest"
msgstr ""
msgstr "Recueillir des données sur le processus choisi."
#: ../Doc/howto/instrumentation.rst:18
msgid "generate reports on the data"
msgstr ""
msgstr "Générer des rapports sur les données."
#: ../Doc/howto/instrumentation.rst:20
msgid ""
@ -58,6 +62,9 @@ msgid ""
"as \"probes\", that can be observed by a DTrace or SystemTap script, making "
"it easier to monitor what the CPython processes on a system are doing."
msgstr ""
"À partir de Python 3.6, CPython peut être compilé avec des « marqueurs » "
"intégrés, aussi appelés « sondes », qui peuvent être observés par un script "
"*DTrace* ou *SystemTap*, ce qui facilite le suivi des processus CPython."
#: ../Doc/howto/instrumentation.rst:27
msgid ""
@ -66,10 +73,15 @@ msgid ""
"DTrace scripts can stop working or work incorrectly without warning when "
"changing CPython versions."
msgstr ""
"Les marqueurs DTrace sont des détails d'implémentation de l'interpréteur "
"CPython. Aucune garantie n'est donnée quant à la compatibilité des sondes "
"entre les versions de CPython. Les scripts DTrace peuvent s'arrêter de "
"fonctionner ou fonctionner incorrectement sans avertissement lors du "
"changement de version de CPython."
#: ../Doc/howto/instrumentation.rst:34
msgid "Enabling the static markers"
msgstr ""
msgstr "Activer les marqueurs statiques"
#: ../Doc/howto/instrumentation.rst:36
msgid ""
@ -77,18 +89,21 @@ msgid ""
"CPython with the embedded markers for SystemTap, the SystemTap development "
"tools must be installed."
msgstr ""
"macOS est livré avec un support intégré pour *DTrace*. Sous Linux, pour "
"construire CPython avec les marqueurs embarqués pour *SystemTap*, les outils "
"de développement *SystemTap* doivent être installés."
#: ../Doc/howto/instrumentation.rst:40
msgid "On a Linux machine, this can be done via::"
msgstr ""
msgstr "Sur une machine Linux, cela se fait via ::"
#: ../Doc/howto/instrumentation.rst:44
msgid "or::"
msgstr "ou : ::"
msgstr "ou ::"
#: ../Doc/howto/instrumentation.rst:49
msgid "CPython must then be configured ``--with-dtrace``:"
msgstr ""
msgstr "CPython doit être configuré avec l'option ``--with-dtrace`` ::"
#: ../Doc/howto/instrumentation.rst:55
msgid ""
@ -96,22 +111,33 @@ msgid ""
"in the background and listing all probes made available by the Python "
"provider::"
msgstr ""
"Sous macOS, vous pouvez lister les sondes *DTrace* disponibles en exécutant "
"un processus Python en arrière-plan et en listant toutes les sondes mises à "
"disposition par le fournisseur Python ::"
#: ../Doc/howto/instrumentation.rst:72
msgid ""
"On Linux, you can verify if the SystemTap static markers are present in the "
"built binary by seeing if it contains a \".note.stapsdt\" section."
msgstr ""
"Sous Linux, pour vérifier que les marqueurs statiques *SystemTap* sont "
"présents dans le binaire compilé, il suffit de regarder s'il contient une "
"section ``.note.stapsdt``."
#: ../Doc/howto/instrumentation.rst:80
msgid ""
"If you've built Python as a shared library (with --enable-shared), you need "
"to look instead within the shared library. For example::"
msgstr ""
"Si vous avez compilé Python en tant que bibliothèque partagée (avec ``--"
"enable-shared``), vous devez plutôt regarder dans la bibliothèque partagée. "
"Par exemple ::"
#: ../Doc/howto/instrumentation.rst:86
msgid "Sufficiently modern readelf can print the metadata::"
msgstr ""
"Une version suffisamment moderne de *readelf* peut afficher les "
"métadonnées ::"
#: ../Doc/howto/instrumentation.rst:123
msgid ""
@ -119,10 +145,14 @@ msgid ""
"patch strategically-placed machine code instructions to enable the tracing "
"hooks used by a SystemTap script."
msgstr ""
"Les métadonnées ci-dessus contiennent des informations pour *SystemTap* "
"décrivant comment il peut mettre à jour des instructions de code machine "
"stratégiquement placées pour activer les crochets de traçage utilisés par un "
"script *SystemTap*."
#: ../Doc/howto/instrumentation.rst:129
msgid "Static DTrace probes"
msgstr ""
msgstr "Sondes DTrace statiques"
#: ../Doc/howto/instrumentation.rst:131
msgid ""
@ -131,18 +161,22 @@ msgid ""
"function called \"start\". In other words, import-time function invocations "
"are not going to be listed:"
msgstr ""
"L'exemple suivant de script *DTrace* montre la hiérarchie d'appel/retour "
"d'un script Python, en ne traçant que l'invocation d'une fonction ``start``. "
"En d'autres termes, les appels de fonctions lors de la phase d'import ne "
"seront pas répertoriées ::"
#: ../Doc/howto/instrumentation.rst:170 ../Doc/howto/instrumentation.rst:228
msgid "It can be invoked like this::"
msgstr ""
msgstr "Il peut être utilisé de cette manière ::"
#: ../Doc/howto/instrumentation.rst:174 ../Doc/howto/instrumentation.rst:234
msgid "The output looks like this:"
msgstr ""
msgstr "La sortie ressemble à ceci ::"
#: ../Doc/howto/instrumentation.rst:199
msgid "Static SystemTap markers"
msgstr ""
msgstr "Marqueurs statiques *SystemTap*"
#: ../Doc/howto/instrumentation.rst:201
msgid ""
@ -150,33 +184,39 @@ msgid ""
"markers directly. This requires you to explicitly state the binary file "
"containing them."
msgstr ""
"La façon la plus simple d'utiliser l'intégration *SystemTap* est d'utiliser "
"directement les marqueurs statiques. Pour cela vous devez pointer "
"explicitement le fichier binaire qui les contient."
#: ../Doc/howto/instrumentation.rst:205
msgid ""
"For example, this SystemTap script can be used to show the call/return "
"hierarchy of a Python script:"
msgstr ""
"Par exemple, ce script *SystemTap* peut être utilisé pour afficher la "
"hiérarchie d'appel/retour d'un script Python ::"
#: ../Doc/howto/instrumentation.rst:245
msgid "where the columns are:"
msgstr ""
msgstr "où les colonnes sont ::"
#: ../Doc/howto/instrumentation.rst:247
msgid "time in microseconds since start of script"
msgstr ""
msgstr "temps en microsecondes depuis le début du script"
#: ../Doc/howto/instrumentation.rst:249
msgid "name of executable"
msgstr ""
msgstr "nom de l'exécutable"
#: ../Doc/howto/instrumentation.rst:251
msgid "PID of process"
msgstr ""
msgstr "PID du processus"
#: ../Doc/howto/instrumentation.rst:253
msgid ""
"and the remainder indicates the call/return hierarchy as the script executes."
msgstr ""
"et le reste indique la hiérarchie d'appel/retour lorsque le script s'exécute."
#: ../Doc/howto/instrumentation.rst:255
msgid ""
@ -184,24 +224,30 @@ msgid ""
"the libpython shared library, and the probe's dotted path needs to reflect "
"this. For example, this line from the above example:"
msgstr ""
"Pour une compilation `--enable-shared` de CPython, les marqueurs sont "
"contenus dans la bibliothèque partagée *libpython*, et le chemin du module "
"de la sonde doit le refléter. Par exemple, la ligne de l'exemple ci-dessus :"
#: ../Doc/howto/instrumentation.rst:263
msgid "should instead read:"
msgstr ""
msgstr "doit plutôt se lire comme ::"
#: ../Doc/howto/instrumentation.rst:269
msgid "(assuming a debug build of CPython 3.6)"
msgstr ""
"(en supposant une version compilée avec le débogage activé de CPython 3.6)"
#: ../Doc/howto/instrumentation.rst:273
msgid "Available static markers"
msgstr ""
msgstr "Marqueurs statiques disponibles"
#: ../Doc/howto/instrumentation.rst:279
msgid ""
"This marker indicates that execution of a Python function has begun. It is "
"only triggered for pure-Python (bytecode) functions."
msgstr ""
"Ce marqueur indique que l'exécution d'une fonction Python a commencé. Il "
"n'est déclenché que pour les fonctions en Python pur (code intermédiaire)."
#: ../Doc/howto/instrumentation.rst:282
msgid ""
@ -209,22 +255,29 @@ msgid ""
"tracing script as positional arguments, which must be accessed using ``"
"$arg1``, ``$arg2``, ``$arg3``:"
msgstr ""
"Le nom de fichier, le nom de la fonction et le numéro de ligne sont renvoyés "
"au script de traçage sous forme d'arguments positionnels, auxquels il faut "
"accéder en utilisant ``$arg1``, ``$arg2``, ``$arg3`` :"
#: ../Doc/howto/instrumentation.rst:286
msgid ""
"``$arg1`` : ``(const char *)`` filename, accessible using "
"``user_string($arg1)``"
msgstr ""
"``$arg1`` : ``(const char *)`` nom de fichier, accessible via "
"``user_string($arg1)``"
#: ../Doc/howto/instrumentation.rst:288
msgid ""
"``$arg2`` : ``(const char *)`` function name, accessible using "
"``user_string($arg2)``"
msgstr ""
"``$arg2`` : ``(const char *)`` nom de la fonction, accessible via "
"``user_string($arg2)``"
#: ../Doc/howto/instrumentation.rst:291
msgid "``$arg3`` : ``int`` line number"
msgstr ""
msgstr "``$arg3`` : numéro de ligne ``int``"
#: ../Doc/howto/instrumentation.rst:295
msgid ""
@ -232,10 +285,14 @@ msgid ""
"execution of a Python function has ended (either via ``return``, or via an "
"exception). It is only triggered for pure-Python (bytecode) functions."
msgstr ""
"Ce marqueur est l'inverse de :c:func:`function__entry`, et indique que "
"l'exécution d'une fonction Python est terminée (soit via ``return``, soit "
"via une exception). Il n'est déclenché que pour les fonctions en Python pur "
"(code intermédiaire)."
#: ../Doc/howto/instrumentation.rst:299
msgid "The arguments are the same as for :c:func:`function__entry`"
msgstr ""
msgstr "Les arguments sont les mêmes que pour :c:func:`function__entry`"
#: ../Doc/howto/instrumentation.rst:303
msgid ""
@ -243,26 +300,34 @@ msgid ""
"equivalent of line-by-line tracing with a Python profiler. It is not "
"triggered within C functions."
msgstr ""
"Ce marqueur indique qu'une ligne Python est sur le point d'être exécutée. "
"C'est l'équivalent du traçage ligne par ligne avec un profileur Python. Il "
"n'est pas déclenché dans les fonctions C."
#: ../Doc/howto/instrumentation.rst:307
msgid "The arguments are the same as for :c:func:`function__entry`."
msgstr ""
msgstr "Les arguments sont les mêmes que pour :c:func:`function__entry`."
#: ../Doc/howto/instrumentation.rst:311
msgid ""
"Fires when the Python interpreter starts a garbage collection cycle. "
"``arg0`` is the generation to scan, like :func:`gc.collect()`."
msgstr ""
"Fonction appelée lorsque l'interpréteur Python lance un cycle de collecte du "
"ramasse-miettes. ``arg0`` est la génération à scanner, comme :func:`gc."
"collect()`."
#: ../Doc/howto/instrumentation.rst:316
msgid ""
"Fires when the Python interpreter finishes a garbage collection cycle. "
"``arg0`` is the number of collected objects."
msgstr ""
"Fonction appelée lorsque l'interpréteur Python termine un cycle de collecte "
"du ramasse-miettes. ``Arg0`` est le nombre d'objets collectés."
#: ../Doc/howto/instrumentation.rst:321
msgid "SystemTap Tapsets"
msgstr ""
msgstr "*Tapsets* de *SystemTap*"
#: ../Doc/howto/instrumentation.rst:323
msgid ""
@ -270,16 +335,24 @@ msgid ""
"\": SystemTap's equivalent of a library, which hides some of the lower-level "
"details of the static markers."
msgstr ""
"La façon la plus simple d'utiliser l'intégration *SystemTap* est d'utiliser "
"un *« tapset »*. L'équivalent pour *SystemTap* d'une bibliothèque, qui "
"permet de masquer les détails de niveau inférieur des marqueurs statiques."
#: ../Doc/howto/instrumentation.rst:327
msgid "Here is a tapset file, based on a non-shared build of CPython:"
msgstr ""
"Voici un fichier *tapset*, basé sur une version non partagée compilée de "
"CPython ::"
#: ../Doc/howto/instrumentation.rst:350
msgid ""
"If this file is installed in SystemTap's tapset directory (e.g. ``/usr/share/"
"systemtap/tapset``), then these additional probepoints become available:"
msgstr ""
"Si ce fichier est installé dans le répertoire *tapset* de *SystemTap* (par "
"exemple ``/usr/share/systemtap/tapset``), alors ces sondes supplémentaires "
"deviennent disponibles ::"
#: ../Doc/howto/instrumentation.rst:356
msgid ""
@ -305,6 +378,10 @@ msgid ""
"example given above of tracing the Python function-call hierarchy, without "
"needing to directly name the static markers:"
msgstr ""
"Ce script *SystemTap* utilise le *tapset* ci-dessus pour implémenter plus "
"proprement l'exemple précédent de traçage de la hiérarchie des appels de "
"fonctions Python, sans avoir besoin de nommer directement les marqueurs "
"statiques ::"
#: ../Doc/howto/instrumentation.rst:388
msgid ""
@ -312,3 +389,7 @@ msgid ""
"running CPython code, showing the top 20 most frequently-entered bytecode "
"frames, each second, across the whole system:"
msgstr ""
"Le script suivant utilise le *tapset* ci-dessus pour fournir une vue de "
"l'ensemble du code CPython en cours d'exécution, montrant les 20 cadres de "
"la pile d'appel (*stack frames*) les plus fréquemment utilisées du code "
"intermédiaire, chaque seconde, sur l'ensemble du système ::"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/ipaddress.rst:9
msgid "An introduction to the ipaddress module"
msgstr ""
msgstr "Introduction au module ``ipaddress``"
#: ../Doc/howto/ipaddress.rst:0
msgid "author"
@ -27,15 +27,15 @@ msgstr "auteur"
#: ../Doc/howto/ipaddress.rst:11
msgid "Peter Moody"
msgstr ""
msgstr "Peter Moody"
#: ../Doc/howto/ipaddress.rst:12
msgid "Nick Coghlan"
msgstr ""
msgstr "Nick Coghlan"
#: ../Doc/howto/ipaddress.rst:None
msgid "Overview"
msgstr ""
msgstr "Aperçu"
#: ../Doc/howto/ipaddress.rst:16
msgid ""
@ -45,10 +45,15 @@ msgid ""
"an overview of how :mod:`ipaddress` represents IP network addressing "
"concepts."
msgstr ""
"Ce document vise à fournir une introduction rapide au module :mod:"
"`ipaddress`. Il est destiné aux utilisateurs qui ne sont pas familiers avec "
"la terminologie des réseaux IP, mais il peut aussi être utile aux ingénieurs "
"réseaux qui cherchent un aperçu de la représentation des concepts "
"d'adressage IP avec le module :mod:`ipaddress`."
#: ../Doc/howto/ipaddress.rst:24
msgid "Creating Address/Network/Interface objects"
msgstr ""
msgstr "Créer un objet Adresse/Réseau/Interface"
#: ../Doc/howto/ipaddress.rst:26
msgid ""
@ -56,10 +61,14 @@ msgid ""
"addresses, the first thing you'll want to do is create some objects. You "
"can use :mod:`ipaddress` to create objects from strings and integers."
msgstr ""
"Vu que :mod:`ipaddress` est un module pour inspecter et manipuler des "
"adresses IP, la première chose que vous voudrez faire est de créer quelques "
"objets. Vous pouvez utiliser :mod:`ipaddress` pour créer des objets à partir "
"de chaînes de caractères et d'entiers."
#: ../Doc/howto/ipaddress.rst:32
msgid "A Note on IP Versions"
msgstr ""
msgstr "Note sur les versions d'IP"
#: ../Doc/howto/ipaddress.rst:34
msgid ""
@ -70,6 +79,13 @@ msgid ""
"addresses to handle the needs of the whole world, especially given the "
"increasing number of devices with direct connections to the internet."
msgstr ""
"Pour les lecteurs qui ne sont pas particulièrement familiers avec "
"l'adressage IP il est important de savoir que le protocole IP est "
"actuellement en évolution de la version 4 du protocole vers la version 6. "
"Cette transition est largement due au fait que la version 4 du protocole ne "
"fournit pas assez d'adresses pour gérer les besoins du monde entier, "
"particulièrement à cause de la croissance des périphériques directement "
"connectés à Internet."
#: ../Doc/howto/ipaddress.rst:41
msgid ""
@ -78,10 +94,14 @@ msgid ""
"least be aware that these two versions exist, and it will sometimes be "
"necessary to force the use of one version or the other."
msgstr ""
"Expliquer les détails des différences entre les deux versions du protocole "
"est au-delà du périmètre de cette introduction, mais les lecteurs doivent au "
"moins être avertis de l'existence de ces deux versions et qu'il sera "
"nécessaire de forcer l'utilisation d'une version ou de l'autre."
#: ../Doc/howto/ipaddress.rst:48
msgid "IP Host Addresses"
msgstr ""
msgstr "Adresses IP des hôtes"
#: ../Doc/howto/ipaddress.rst:50
msgid ""
@ -91,12 +111,21 @@ msgid ""
"determines whether to create an IPv4 or IPv6 address based on the passed in "
"value:"
msgstr ""
"Les adresses, souvent dénommées \"adresses hôtes\" sont les unités les plus "
"basiques quand on travaille avec l'adressage IP. Le moyen le plus simple de "
"créer des adresses est d'utiliser la fonction de fabrication :func:"
"`ipaddress.ip_address` qui va automatiquement déterminer quoi créer entre "
"une adresse IPv4 ou une adresse IPv6 en fonction de la valeur qui est "
"transmise :"
#: ../Doc/howto/ipaddress.rst:61
msgid ""
"Addresses can also be created directly from integers. Values that will fit "
"within 32 bits are assumed to be IPv4 addresses::"
msgstr ""
"Les adresses peuvent être créées directement depuis des entiers. Les valeurs "
"qui correspondent à des entiers 32 bits sont assimilées à des adresses "
"IPv4 ::"
#: ../Doc/howto/ipaddress.rst:69
msgid ""
@ -104,10 +133,13 @@ msgid ""
"invoked directly. This is particularly useful to force creation of IPv6 "
"addresses for small integers::"
msgstr ""
"Pour forcer l'utilisation d'IPv4 ou d'IPv6, la classe appropriée peut être "
"invoquée directement. C'est particulièrement utile pour forcer la création "
"d'adresse IPv6 pour de petits entiers ::"
#: ../Doc/howto/ipaddress.rst:82
msgid "Defining Networks"
msgstr ""
msgstr "Définir des réseaux"
#: ../Doc/howto/ipaddress.rst:84
msgid ""
@ -120,12 +152,23 @@ msgid ""
"whether or not an address is part of the network and the network address "
"defines the expected value of those bits."
msgstr ""
"Les adresses hôtes sont souvent regroupées dans des réseaux IP, donc :mod:"
"`ipaddress` fournit un moyen de créer, d'inspecter et de manipuler les "
"définitions des réseaux. Les objets correspondants aux réseaux IP sont "
"construits à partir de chaînes de caractères qui définissent le périmètre "
"des adresses hôtes qui font partie de ce réseau. La forme la plus simple de "
"cette information est un couple \"adresse réseau/préfixe réseau\" , où le "
"préfixe définit le nombre de bits de tête qui sont comparés pour déterminer "
"si l'adresse fait ou ne fait pas partie de ce réseau et l'adresse réseau "
"définit la valeur attendue pour ces bits."
#: ../Doc/howto/ipaddress.rst:93
msgid ""
"As for addresses, a factory function is provided that determines the correct "
"IP version automatically::"
msgstr ""
"Tout comme pour les adresses, une fonction de fabrication est disponible et "
"détermine automatiquement la version correcte d'IP ::"
#: ../Doc/howto/ipaddress.rst:101
msgid ""
@ -135,6 +178,12 @@ msgid ""
"commonly used to describe network interfaces of a computer on a given "
"network and are described further in the next section."
msgstr ""
"Il est interdit pour des objets réseaux d'avoir des bits affectés à leurs "
"hôtes mis à 1. Ainsi la chaine de caractères ``192.0.2.1/24`` ne peut "
"définir un réseau. Ces objets réseaux sont aussi appelés objets d'interfaces "
"car la notation ``adresse ip / réseau`` est couramment utilisée pour décrire "
"les interfaces réseau d'un ordinateur sur un réseau donné (nous les "
"détaillons plus loin dans cette section)."
#: ../Doc/howto/ipaddress.rst:107
msgid ""
@ -143,6 +192,10 @@ msgid ""
"bits instead be coerced to zero, the flag ``strict=False`` can be passed to "
"the constructor::"
msgstr ""
"Par défaut, tenter de créer un objet réseau avec des bits d'hôtes mis à 1 "
"lève une :exc:`ValueError`. Pour demander que les bits supplémentaires "
"soient plutôt forcés à zéro, l'attribut ``strict=False`` peut être passé au "
"constructeur ::"
#: ../Doc/howto/ipaddress.rst:119
msgid ""
@ -151,16 +204,24 @@ msgid ""
"network is considered to contain only the single address identified by the "
"integer, so the network prefix includes the entire network address::"
msgstr ""
"Alors que la forme textuelle offre davantage de flexibilité les réseaux "
"peuvent aussi être définis avec des entiers, tout comme les adresses hôtes. "
"Dans ce cas le réseau est considéré comme contenant uniquement l'adresse "
"identifiée par l'entier, donc le préfixe réseau inclut l'adresse du réseau "
"complet ::"
#: ../Doc/howto/ipaddress.rst:129
msgid ""
"As with addresses, creation of a particular kind of network can be forced by "
"calling the class constructor directly instead of using the factory function."
msgstr ""
"Comme avec les adresses, la création d'un type de réseau particulier peut "
"être forcée en appelant directement le constructeur de la classe plutôt que "
"d'utiliser la fonction de fabrication."
#: ../Doc/howto/ipaddress.rst:135
msgid "Host Interfaces"
msgstr ""
msgstr "Interfaces des hôtes"
#: ../Doc/howto/ipaddress.rst:137
msgid ""
@ -174,16 +235,29 @@ msgid ""
"defining network objects, except that the address portion isn't constrained "
"to being a network address."
msgstr ""
"Comme mentionné ci-dessus, si vous avez besoin de décrire une adresse sur un "
"réseau particulier, ni l'adresse ni les classes réseaux ne sont suffisantes. "
"Les notations comme ``192.0.2.1/24`` sont généralement utilisées par les "
"ingénieurs réseaux et les personnes qui écrivent des outils pour les pare-"
"feu et les routeurs comme raccourci pour \" l'hôte ``192.0.2.1`` sur le "
"réseau ``192.0.2.0/24``\", par conséquent, :mod:`ipaddress` fournit un "
"ensemble de classes hybrides qui associent une adresse à un réseau "
"particulier. L'interface pour la création est identique à celle pour la "
"définition des objets réseaux, excepté que la partie adresse n'est pas "
"contrainte d'être une adresse réseau."
#: ../Doc/howto/ipaddress.rst:152
msgid ""
"Integer inputs are accepted (as with networks), and use of a particular IP "
"version can be forced by calling the relevant constructor directly."
msgstr ""
"Les entiers sont acceptés en entrée (comme avec les réseaux) et "
"l'utilisation d'une version d'IP peut être forcée en appelant directement le "
"constructeur adapté."
#: ../Doc/howto/ipaddress.rst:157
msgid "Inspecting Address/Network/Interface Objects"
msgstr ""
msgstr "Inspecter les objets Address/Network/Interface"
#: ../Doc/howto/ipaddress.rst:159
msgid ""
@ -191,32 +265,38 @@ msgid ""
"Interface) object, so you probably want to get information about it. :mod:"
"`ipaddress` tries to make doing this easy and intuitive."
msgstr ""
"Vous vous êtes donné la peine de créer un objet (adresse|réseau|"
"interface)IPv(4|6), donc vous voudrez probablement des informations sur "
"celui-ci. :mod:`ipaddress` essaie de rendre ceci facile et intuitif."
#: ../Doc/howto/ipaddress.rst:163
msgid "Extracting the IP version::"
msgstr ""
msgstr "Extraire la version du protocole IP ::"
#: ../Doc/howto/ipaddress.rst:172
msgid "Obtaining the network from an interface::"
msgstr ""
msgstr "Obtenir le réseau à partir de l'interface ::"
#: ../Doc/howto/ipaddress.rst:181
msgid "Finding out how many individual addresses are in a network::"
msgstr ""
msgstr "Trouver combien d'adresses individuelles sont dans un réseau ::"
#: ../Doc/howto/ipaddress.rst:190
msgid "Iterating through the \"usable\" addresses on a network::"
msgstr ""
msgstr "Itération sur chacune des adresses \"utilisables\" d'un réseau ::"
#: ../Doc/howto/ipaddress.rst:205
msgid ""
"Obtaining the netmask (i.e. set bits corresponding to the network prefix) or "
"the hostmask (any bits that are not part of the netmask):"
msgstr ""
"Obtenir le masque réseau (définit les bits correspondant au préfixe du "
"réseau) ou le masque de l'hôte (tous les bits qui ne sont pas dans le masque "
"du réseau) :"
#: ../Doc/howto/ipaddress.rst:220
msgid "Exploding or compressing the address::"
msgstr ""
msgstr "Éclater ou compresser l'adresse ::"
#: ../Doc/howto/ipaddress.rst:231
msgid ""
@ -225,26 +305,37 @@ msgid ""
"easily ensure the most concise or most verbose form is used for IPv6 "
"addresses while still correctly handling IPv4 addresses."
msgstr ""
"Alors que IPv4 ne gère pas l'éclatement ou la compression, les objets "
"associés fournissent toujours les propriétés adaptées pour que du code, le "
"plus neutre possible vis-à-vis de la version, puisse facilement s'assurer "
"que la forme la plus concise ou la plus verbeuse utilisée pour des adresses "
"IPv6 va aussi fonctionner pour gérer des adresses IPv4."
#: ../Doc/howto/ipaddress.rst:238
msgid "Networks as lists of Addresses"
msgstr ""
msgstr "Réseaux en tant que listes d'adresses"
#: ../Doc/howto/ipaddress.rst:240
msgid ""
"It's sometimes useful to treat networks as lists. This means it is possible "
"to index them like this::"
msgstr ""
"Il est parfois utile de traiter les réseaux en tant que listes. Cela "
"signifie qu'il est possible de les indexer comme ça ::"
#: ../Doc/howto/ipaddress.rst:253
msgid ""
"It also means that network objects lend themselves to using the list "
"membership test syntax like this::"
msgstr ""
"Cela signifie aussi que les objets réseaux se prêtent bien à l'utilisation "
"de la syntaxe suivante pour le test d'appartenance à la liste ::"
#: ../Doc/howto/ipaddress.rst:259
msgid "Containment testing is done efficiently based on the network prefix::"
msgstr ""
"En se basant sur le préfixe réseau on peut efficacement tester "
"l'appartenance ::"
#: ../Doc/howto/ipaddress.rst:269
msgid "Comparisons"
@ -255,16 +346,20 @@ msgid ""
":mod:`ipaddress` provides some simple, hopefully intuitive ways to compare "
"objects, where it makes sense::"
msgstr ""
":mod:`ipaddress` fournit des moyens simples et intuitifs (du moins nous "
"l'espérons) pour comparer les objets, quand cela fait sens ::"
#: ../Doc/howto/ipaddress.rst:277
msgid ""
"A :exc:`TypeError` exception is raised if you try to compare objects of "
"different versions or different types."
msgstr ""
"Une exception :exc:`TypeError` est levée si vous tentez de comparer des "
"objets de différentes versions ou de types différents."
#: ../Doc/howto/ipaddress.rst:282
msgid "Using IP Addresses with other modules"
msgstr ""
msgstr "Utiliser des adresse IP avec d'autre modules"
#: ../Doc/howto/ipaddress.rst:284
msgid ""
@ -272,10 +367,14 @@ msgid ""
"accept objects from this module directly. Instead, they must be coerced to "
"an integer or string that the other module will accept::"
msgstr ""
"Les autres modules qui utilisent des adresses IP (comme :mod:`socket`) "
"n'acceptent généralement pas les objets de ce module directement. Au lieu de "
"cela, ils doivent être convertis en entiers ou en chaînes de caractères que "
"l'autre module va accepter ::"
#: ../Doc/howto/ipaddress.rst:296
msgid "Getting more detail when instance creation fails"
msgstr ""
msgstr "Obtenir plus de détails lors de l'échec de la création de l'instance"
#: ../Doc/howto/ipaddress.rst:298
msgid ""
@ -286,6 +385,13 @@ msgid ""
"because it's necessary to know whether the value is *supposed* to be IPv4 or "
"IPv6 in order to provide more detail on why it has been rejected."
msgstr ""
"Lors de la création des objets Adresse/Réseau/Interface en utilisant les "
"fonctions de fabrication agnostiques à la version, n'importe quelle erreur "
"va être signalée en tant que :exc:`ValueError` avec un message d'erreur "
"générique qui dit simplement que la valeur entrée n'a pas été reconnue en "
"tant qu'objet de ce type. Pour fournir plus de détails sur la cause du "
"rejet, il faudrait reconnaitre si la valeur est *supposée* être une adresse "
"IPv4 ou IPv6."
#: ../Doc/howto/ipaddress.rst:305
msgid ""
@ -295,12 +401,19 @@ msgid ""
"`ipaddress.NetmaskValueError` to indicate exactly which part of the "
"definition failed to parse correctly."
msgstr ""
"Pour gérer les cas d'usage où il est utile d'avoir accès à ces détails, les "
"constructeurs individuels des classes lèvent actuellement les sous-classes "
"de :exc:`ValueError`, :exc:`ipaddress.AddressValueError` et :exc:`ipaddress."
"NetmaskValueError` pour indiquer précisément quelle partie de la définition "
"n'a pas pu être correctement traitée."
#: ../Doc/howto/ipaddress.rst:311
msgid ""
"The error messages are significantly more detailed when using the class "
"constructors directly. For example::"
msgstr ""
"Les messages d'erreur sont particulièrement plus détaillés lors de "
"l'utilisation directe du constructeur. Par exemple ::"
#: ../Doc/howto/ipaddress.rst:332
msgid ""
@ -308,3 +421,6 @@ msgid ""
"their parent class, so if you're not concerned with the particular type of "
"error, you can still write code like the following::"
msgstr ""
"Cependant, les exceptions spécifiques des deux modules ont :exc:`ValueError` "
"comme classe parent ; donc si vous n'êtes pas intéressé par le type "
"particulier d'erreur remontée, vous pouvez écrire votre code comme suit ::"

View File

@ -27,7 +27,7 @@ msgstr "Auteur"
#: ../Doc/howto/logging-cookbook.rst:7
msgid "Vinay Sajip <vinay_sajip at red-dove dot com>"
msgstr ""
msgstr "Vinay Sajip <vinay_sajip at red-dove dot com>"
#: ../Doc/howto/logging-cookbook.rst:9
msgid ""
@ -57,7 +57,7 @@ msgstr ""
#: ../Doc/howto/logging-cookbook.rst:75
msgid "The output looks like this:"
msgstr ""
msgstr "La sortie ressemble à ceci ::"
#: ../Doc/howto/logging-cookbook.rst:101
msgid "Logging from multiple threads"
@ -729,27 +729,27 @@ msgstr ""
#: ../Doc/howto/logging-cookbook.rst:1320
msgid "Module :mod:`logging`"
msgstr ""
msgstr "Module :mod:`logging`"
#: ../Doc/howto/logging-cookbook.rst:1320
msgid "API reference for the logging module."
msgstr ""
msgstr "Référence d'API pour le module de journalisation."
#: ../Doc/howto/logging-cookbook.rst:1323
msgid "Module :mod:`logging.config`"
msgstr ""
msgstr "Module :mod:`logging.config`"
#: ../Doc/howto/logging-cookbook.rst:1323
msgid "Configuration API for the logging module."
msgstr ""
msgstr "API de configuration pour le module de journalisation."
#: ../Doc/howto/logging-cookbook.rst:1326
msgid "Module :mod:`logging.handlers`"
msgstr ""
msgstr "Module :mod:`logging.handlers`"
#: ../Doc/howto/logging-cookbook.rst:1326
msgid "Useful handlers included with the logging module."
msgstr ""
msgstr "Gestionnaires utiles inclus avec le module de journalisation."
#: ../Doc/howto/logging-cookbook.rst:1328
msgid ":ref:`A basic logging tutorial <logging-basic-tutorial>`"

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../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"
@ -27,7 +27,7 @@ msgstr "auteur"
#: ../Doc/howto/pyporting.rst:7
msgid "Brett Cannon"
msgstr ""
msgstr "Brett Cannon"
#: ../Doc/howto/pyporting.rst:None
msgid "Abstract"
@ -40,12 +40,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 ""
@ -53,54 +59,70 @@ 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
msgid ""
"Use Pylint_ to help make sure you don't regress on your Python 3 support "
"(``pip install pylint``)"
msgstr ""
"Utilisez Pylint_ pour vous assurer que vous ne régressez pas sur votre prise "
"en charge de 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 ""
@ -108,6 +130,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 ""
@ -115,6 +141,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"
@ -128,6 +157,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 ""
@ -137,16 +172,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 ""
@ -156,6 +200,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 ""
@ -165,6 +215,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 ""
@ -176,11 +232,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 ""
@ -191,10 +258,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 ""
@ -207,6 +280,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 ""
@ -218,10 +301,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 ""
@ -237,6 +328,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 ""
@ -249,6 +354,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 ""
@ -263,10 +378,22 @@ 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"
msgstr ""
msgstr "Division"
#: ../Doc/howto/pyporting.rst:164
msgid ""
@ -278,16 +405,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 ""
@ -296,10 +434,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 ""
@ -312,6 +456,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 ""
@ -324,6 +478,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 ""
@ -344,38 +507,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 ""
@ -386,6 +568,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 ""
@ -396,6 +586,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 ""
@ -414,6 +612,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 ""
@ -427,6 +641,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 ""
@ -439,14 +663,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 ""
@ -454,32 +689,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 ""
@ -490,6 +736,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 ""
@ -498,6 +751,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 ""
@ -506,6 +764,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 ""
@ -513,10 +775,14 @@ 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
msgid "Prevent compatibility regressions"
msgstr ""
msgstr "Prévenir les régressions de compatibilité"
#: ../Doc/howto/pyporting.rst:342
msgid ""
@ -525,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 ""
@ -539,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 ""
@ -549,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 ""
@ -563,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 ""
@ -572,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 ""
@ -585,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 ""
@ -598,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 ""
@ -610,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 son "
"identification et sa localisation."
#: ../Doc/howto/pyporting.rst:410
msgid ""
@ -618,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 ""
@ -635,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."

View File

@ -1371,7 +1371,7 @@ msgid ""
"it is to read? ::"
msgstr ""
"Par exemple, voici une RE qui utilise :const:`re.VERBOSE` ; vous pouvez "
"constater qu'elle est beaucoup plus facile à lire ::"
"constater qu'elle est beaucoup plus facile à lire ::"
#: ../Doc/howto/regex.rst:659
msgid "Without the verbose setting, the RE would look like this::"
@ -2589,7 +2589,7 @@ msgstr ""
#: ../Doc/howto/regex.rst:1364
msgid "This is far more readable than::"
msgstr "Ceci est beaucoup plus lisible que::"
msgstr "Ceci est beaucoup plus lisible que ::"
#: ../Doc/howto/regex.rst:1370
msgid "Feedback"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/sockets.rst:5
msgid "Socket Programming HOWTO"
msgstr ""
msgstr "Guide pratique : programmation avec les *sockets*"
#: ../Doc/howto/sockets.rst:0
msgid "Author"
@ -27,7 +27,7 @@ msgstr "Auteur"
#: ../Doc/howto/sockets.rst:7
msgid "Gordon McMillan"
msgstr ""
msgstr "Gordon McMillan"
#: ../Doc/howto/sockets.rst:None
msgid "Abstract"
@ -42,6 +42,12 @@ msgid ""
"a lot of them), but I hope it will give you enough background to begin using "
"them decently."
msgstr ""
"Les connecteurs (*sockets*, en anglais) sont utilisés presque partout, mais "
"ils sont l'une des technologies les plus méconnues. En voici un aperçu très "
"général. Ce n'est pas vraiment un tutoriel — vous aurez encore du travail à "
"faire pour avoir un résultat opérationnel. Il ne couvre pas les détails (et "
"il y en a beaucoup), mais j'espère qu'il vous donnera suffisamment "
"d'informations pour commencer à les utiliser correctement."
#: ../Doc/howto/sockets.rst:20
msgid "Sockets"
@ -58,6 +64,17 @@ msgid ""
"blocking sockets. But I'll start by talking about blocking sockets. You'll "
"need to know how they work before dealing with non-blocking sockets."
msgstr ""
"Je ne vais aborder que les connecteurs INET (i.e. IPv4), mais ils "
"représentent au moins 99% des connecteurs (*socket* en anglais) utilisés. Et "
"je n'aborderai que les connecteurs STREAM (i.e. TCP) — à moins que vous ne "
"sachiez vraiment ce que vous faites (auquel cas ce HOWTO n'est pas pour "
"vous !), vous obtiendrez un meilleur comportement et de meilleures "
"performances avec un connecteur STREAM que tout autre. Je vais essayer "
"d'éclaircir le mystère de ce qu'est un connecteur, ainsi que quelques "
"conseils sur la façon de travailler avec des connecteurs bloquants et non "
"bloquants. Mais je vais commencer par aborder les connecteurs bloquants. "
"Nous avons besoin de savoir comment ils fonctionnent avant de traiter les "
"connecteurs non bloquants."
#: ../Doc/howto/sockets.rst:31
msgid ""
@ -69,6 +86,14 @@ msgid ""
"sockets exclusively; the web server it's talking to uses both \"server\" "
"sockets and \"client\" sockets."
msgstr ""
"Une partie de la difficulté à comprendre ces choses est que « connecteur » "
"peut désigner plusieurs choses très légèrement différentes, selon le "
"contexte. Faisons donc d'abord une distinction entre un connecteur "
 client » — point final d'une conversation — et un connecteur « serveur », "
"qui ressemble davantage à un standardiste. L'application cliente (votre "
"navigateur par exemple) utilise exclusivement des connecteurs « client » ; "
"le serveur web avec lequel elle parle utilise à la fois des connecteurs "
 serveur » et des connecteurs « client »."
#: ../Doc/howto/sockets.rst:40
msgid "History"
@ -81,6 +106,11 @@ msgid ""
"other forms of IPC that are faster, but for cross-platform communication, "
"sockets are about the only game in town."
msgstr ""
"Parmi les différentes formes d:abbr:`IPC (Inter Process Communication)`, "
"les connecteurs sont de loin les plus populaires. Sur une plate-forme "
"donnée, il est probable que d'autres formes d'\\ *IPC* soient plus rapides, "
"mais pour la communication entre plates-formes, les connecteurs sont à peu "
"près la seule solution valable."
#: ../Doc/howto/sockets.rst:47
msgid ""
@ -89,16 +119,23 @@ msgid ""
"of sockets with INET makes talking to arbitrary machines around the world "
"unbelievably easy (at least compared to other schemes)."
msgstr ""
"Ils ont été inventés à Berkeley dans le cadre de la déclinaison *BSD* "
"d'Unix. Ils se sont répandus comme une traînée de poudre avec Internet. Et "
"pour cause : la combinaison des connecteurs avec *INET* rend le dialogue "
"avec nimporte quelle machine dans le monde entier incroyablement facile (du "
"moins par rapport à d'autres systèmes)."
#: ../Doc/howto/sockets.rst:54
msgid "Creating a Socket"
msgstr "Créer un *socket*"
msgstr "Créer un connecteur"
#: ../Doc/howto/sockets.rst:56
msgid ""
"Roughly speaking, when you clicked on the link that brought you to this "
"page, your browser did something like the following::"
msgstr ""
"Grosso modo, lorsque vous avez cliqué sur le lien qui vous a amené à cette "
"page, votre navigateur a fait quelque chose comme ceci ::"
#: ../Doc/howto/sockets.rst:64
msgid ""
@ -107,12 +144,19 @@ msgid ""
"then be destroyed. That's right, destroyed. Client sockets are normally only "
"used for one exchange (or a small set of sequential exchanges)."
msgstr ""
"Lorsque lappel à ``connect`` est terminé, le connecteur ``s`` peut être "
"utilisé pour envoyer une requête demandant le texte de la page. Le même "
"connecteur lira la réponse, puis sera mis au rebut. C'est exact, mis au "
"rebut. Les connecteurs clients ne sont normalement utilisés que pour un seul "
"échange (ou un petit ensemble d'échanges séquentiels)."
#: ../Doc/howto/sockets.rst:70
msgid ""
"What happens in the web server is a bit more complex. First, the web server "
"creates a \"server socket\"::"
msgstr ""
"Ce qui se passe dans le serveur web est un peu plus complexe. Tout d'abord, "
"le serveur web crée un « connecteur serveur » ::"
#: ../Doc/howto/sockets.rst:80
msgid ""
@ -123,6 +167,12 @@ msgid ""
"machine. ``s.bind(('', 80))`` specifies that the socket is reachable by any "
"address the machine happens to have."
msgstr ""
"Quelques remarques : nous avons utilisé ``socket.gethostname()`` pour que le "
"connecteur soit visible par le monde extérieur. Si nous avions utilisé ``s."
"bind((('localhost', 80))`` ou ``s.bind((('127.0.0.0.1', 80))`` nous aurions "
"encore un connecteur \"serveur\", mais qui ne serait visible que sur la "
"machine même. ``s.bind('', 80)]`` spécifie que le socket est accessible par "
"toute adresse que la machine possède."
#: ../Doc/howto/sockets.rst:87
msgid ""
@ -130,6 +180,9 @@ msgid ""
"known\" services (HTTP, SNMP etc). If you're playing around, use a nice high "
"number (4 digits)."
msgstr ""
"Une deuxième chose à noter : les ports dont le numéro est petit sont "
"généralement réservés aux services \"bien connus\" (HTTP, SNMP, etc.). Si "
"vous expérimentez, utilisez un nombre suffisamment élevé (4 chiffres)."
#: ../Doc/howto/sockets.rst:91
msgid ""
@ -138,12 +191,18 @@ msgid ""
"outside connections. If the rest of the code is written properly, that "
"should be plenty."
msgstr ""
"Enfin, l'argument ``listen`` indique à la bibliothèque de connecteurs que "
"nous voulons qu'elle mette en file d'attente jusqu'à 5 requêtes de connexion "
"(le maximum normal) avant de refuser les connexions externes. Si le reste du "
"code est écrit correctement, cela devrait suffire."
#: ../Doc/howto/sockets.rst:95
msgid ""
"Now that we have a \"server\" socket, listening on port 80, we can enter the "
"mainloop of the web server::"
msgstr ""
"Maintenant que nous avons un connecteur « serveur », en écoute sur le port "
"80, nous pouvons entrer dans la boucle principale du serveur web ::"
#: ../Doc/howto/sockets.rst:106
msgid ""
@ -160,10 +219,24 @@ msgid ""
"The two \"clients\" are free to chat it up - they are using some dynamically "
"allocated port which will be recycled when the conversation ends."
msgstr ""
"Il y a en fait trois façons générales de faire fonctionner cette boucle : "
"mobiliser un fil d'exécution pour gérer les ``clientsocket``\\s, créer un "
"nouveau processus pour gérer les ``clientsocket``\\s, ou restructurer cette "
"application pour utiliser des connecteurs non bloquants, et multiplexer "
"entre notre connecteur « serveur » et n'importe quel ``clientsocket`` actif "
"en utilisant ``select``. Plus d'informations à ce sujet plus tard. La chose "
"importante à comprendre maintenant est la suivante : c'est *tout* ce que "
"fait un connecteur « serveur ». Il n'envoie aucune donnée. Il ne reçoit "
"aucune donnée. Il ne fait que produire des connecteurs « clients ». Chaque "
"``clientsocket`` est créé en réponse à un *autre* connecteur « client » qui "
"se connecte à l'hôte et au port auxquels nous sommes liés. Dès que nous "
"avons créé ce ``clientsocket``, nous retournons à l'écoute pour d'autres "
"connexions. Les deux « clients » sont libres de discuter — ils utilisent un "
"port alloué dynamiquement qui sera recyclé à la fin de la conversation."
#: ../Doc/howto/sockets.rst:121
msgid "IPC"
msgstr ""
msgstr "Communication Entre Processus"
#: ../Doc/howto/sockets.rst:123
msgid ""
@ -173,16 +246,24 @@ msgid ""
"a shortcut around a couple of layers of network code and be quite a bit "
"faster."
msgstr ""
"Si vous avez besoin d'une communication rapide entre deux processus sur une "
"même machine, vous devriez regarder comment utiliser les *pipes* ou la "
"mémoire partagée. Si vous décidez d'utiliser les connecteurs AF_INET, liez "
"le connecteur \"serveur\" à ``'localhost'``. Sur la plupart des plates-"
"formes, cela court-circuite quelques couches réseau et est un peu plus "
"rapide."
#: ../Doc/howto/sockets.rst:129
msgid ""
"The :mod:`multiprocessing` integrates cross-platform IPC into a higher-level "
"API."
msgstr ""
"Le :mod:`multiprocessing` intègre de lIPC multiplateforme dans une API de "
"plus haut niveau."
#: ../Doc/howto/sockets.rst:134
msgid "Using a Socket"
msgstr ""
msgstr "Utilisation d'un connecteur"
#: ../Doc/howto/sockets.rst:136
msgid ""
@ -194,6 +275,14 @@ msgid ""
"in a request, or perhaps a signon. But that's a design decision - it's not a "
"rule of sockets."
msgstr ""
"La première chose à noter, c'est que la prise « client » du navigateur web "
"et la prise « client » du serveur web sont des bêtes identiques. C'est-à-"
"dire qu'il s'agit d'une conversation « pair à pair ». Ou pour le dire "
"autrement, *en tant que concepteur, vous devrez décider quelles sont les "
"règles d'étiquette pour une conversation*. Normalement, la connexion via "
"``connect`` lance la conversation en envoyant une demande, ou peut-être un "
"signe. Mais c'est une décision de conception — ce n'est pas une règle des "
"connecteurs."
#: ../Doc/howto/sockets.rst:143
msgid ""
@ -206,6 +295,16 @@ msgid ""
"reply. Without a ``flush`` in there, you may wait forever for the reply, "
"because the request may still be in your output buffer."
msgstr ""
"Il y a maintenant deux ensembles de verbes à utiliser pour la communication. "
"Vous pouvez utiliser ``send`` et ``recv``, ou vous pouvez transformer votre "
"connecteur client en une bête imitant un fichier et utiliser ``read`` et "
"``write``. C'est la façon dont Java présente ses connecteurs. Je ne vais pas "
"en parler ici, sauf pour vous avertir que vous devez utiliser ``flush`` sur "
"les connecteurs. Ce sont des « fichiers », mis en mémoire tampon, et une "
"erreur courante est d'« écrire » via ``write`` quelque chose, puis de "
 lire » via ``read`` pour obtenir une réponse. Sans un ``flush``, vous "
"pouvez attendre la réponse pour toujours, parce que la requête peut encore "
"être dans votre mémoire tampon de sortie."
#: ../Doc/howto/sockets.rst:152
msgid ""
@ -217,6 +316,14 @@ msgid ""
"you how many bytes they handled. It is *your* responsibility to call them "
"again until your message has been completely dealt with."
msgstr ""
"Nous arrivons maintenant au principal écueil des connecteurs — ``send`` et "
"``recv`` fonctionnent sur les mémoires tampons du réseau. Ils ne traitent "
"pas nécessairement tous les octets que vous leur passez (ou que vous "
"attendez d'eux), car leur principal objectif est de gérer les tampons "
"réseau. En général, leur exécution se termine lorsque les tampons réseau "
"associés ont été remplis (``send``) ou vidés (``recv``). Ils vous indiquent "
"alors combien d'octets ils ont traité. Il est de *votre* responsabilité de "
"les rappeler jusqu'à ce que votre message ait été complètement traité."
#: ../Doc/howto/sockets.rst:160
msgid ""
@ -225,6 +332,10 @@ msgid ""
"data on this connection. Ever. You may be able to send data successfully; "
"I'll talk more about this later."
msgstr ""
"Lorsqu'un ``recv`` renvoie 0 octet, cela signifie que l'autre partie a fermé "
"(ou est en train de fermer) la connexion. Vous ne recevrez plus de données "
"sur cette connexion. Jamais. Vous pouvez peut-être envoyer des données avec "
"succès. Jen parlerai plus tard."
#: ../Doc/howto/sockets.rst:165
msgid ""
@ -232,6 +343,10 @@ msgid ""
"request, then reads a reply. That's it. The socket is discarded. This means "
"that a client can detect the end of the reply by receiving 0 bytes."
msgstr ""
"Un protocole comme HTTP utilise un connecteur pour un seul transfert. Le "
"client envoie une demande, puis lit une réponse. C'est tout. Le connecteur "
"est mis au rebut. Cela signifie qu'un client peut détecter la fin de la "
"réponse en recevant 0 octet."
#: ../Doc/howto/sockets.rst:169
msgid ""
@ -246,12 +361,27 @@ msgid ""
"they are* (much better), *or end by shutting down the connection*. The "
"choice is entirely yours, (but some ways are righter than others)."
msgstr ""
"Mais si vous prévoyez de réutiliser votre connecteur pour d'autres "
"transferts, vous devez réaliser que il n'y a *pas* d':abbr:`EOT (End of "
"Transfer)` sur un connecteur. Je répète : si un connecteur ``send`` ou "
"``recv`` retourne après avoir manipulé 0 octets, la connexion a été "
"interrompue. Si la connexion n'a *pas* été interrompue, vous pouvez attendre "
"sur un ``recv`` pour toujours, car le connecteur ne vous dira pas qu'il n'y "
"a plus rien à lire (pour le moment). Maintenant, si vous y réfléchissez un "
"peu, vous allez vous rendre compte d'une vérité fondamentale sur les "
"connecteurs : *les messages doivent être de longueur fixe* (beurk), *ou être "
"délimités* (haussement d'épaules), *ou indiquer de quelle longueur ils sont* "
"(beaucoup mieux), *ou terminer en coupant la connexion*. Le choix est "
"entièrement de votre côté, (mais certaines façons sont plus justes que "
"d'autres)."
#: ../Doc/howto/sockets.rst:180
msgid ""
"Assuming you don't want to end the connection, the simplest solution is a "
"fixed length message::"
msgstr ""
"En supposant que vous ne vouliez pas terminer la connexion, la solution la "
"plus simple est un message de longueur fixe ::"
#: ../Doc/howto/sockets.rst:217
msgid ""
@ -261,6 +391,12 @@ msgid ""
"gets more complex. (And in C, it's not much worse, except you can't use "
"``strlen`` if the message has embedded ``\\0``\\ s.)"
msgstr ""
"Le code d'envoi ici est utilisable pour presque tous les systèmes de "
"messagerie — en Python, vous envoyez des chaînes de caractères, et vous "
"pouvez utiliser ``len()`` pour en déterminer la longueur (même si elle "
"contient des caractères ``\\0``). C'est surtout le code de réception qui "
"devient plus complexe. (Et en C, ce n'est pas bien pire, sauf que vous ne "
"pouvez pas utiliser ``strlen`` si le message contient des ``\\0``\\ s)."
#: ../Doc/howto/sockets.rst:223
msgid ""
@ -272,6 +408,15 @@ msgid ""
"chunk size, (4096 or 8192 is frequently a good match for network buffer "
"sizes), and scanning what you've received for a delimiter."
msgstr ""
"Le plus simple est de faire du premier caractère du message un indicateur du "
"type de message, et de faire en sorte que le type détermine la longueur. "
"Vous avez maintenant deux ``recv``\\ s — le premier pour obtenir (au moins) "
"ce premier caractère afin de pouvoir déterminer la longueur, et le second "
"dans une boucle pour obtenir le reste. Si vous décidez de suivre la route "
"délimitée, vous recevrez un morceau de taille arbitraire (4096 ou 8192 est "
"fréquemment une bonne valeur pour correspondre à la taille de la mémoire "
"tampon du réseau), et vous analyserez ce que vous avez reçu pour trouver un "
"délimiteur."
#: ../Doc/howto/sockets.rst:231
msgid ""
@ -281,6 +426,12 @@ msgid ""
"of a following message. You'll need to put that aside and hold onto it, "
"until it's needed."
msgstr ""
"Une subtilité dont il faut être conscient : si votre protocole de "
"conversation permet de renvoyer plusieurs messages les uns à la suite des "
"autres (sans aucune sorte de réponse), et que vous passez à ``recv`` une "
"taille de morceau arbitraire, vous pouvez en arriver à lire le début du "
"message suivant. Vous devrez alors le mettre de côté et le conserver, "
"jusqu'à ce que vous en ayez besoin."
#: ../Doc/howto/sockets.rst:237
msgid ""
@ -293,6 +444,16 @@ msgid ""
"not always manage to get rid of everything in one pass. And despite having "
"read this, you will eventually get bit by it!"
msgstr ""
"Préfixer le message avec sa longueur (disons, sous la forme de 5 caractères "
"numériques) devient plus complexe, parce que (croyez-le ou non), vous pouvez "
"ne pas recevoir les 5 caractères en un seul ``recv``. Pour une utilisation "
"triviale, vous vous en tirerez à bon compte ; mais en cas de forte charge "
"réseau, votre code se cassera très rapidement, à moins que vous nutilisiez "
"deux boucles ``recv`` — la première pour déterminer la longueur, la deuxième "
"pour obtenir la partie « données » du message. Vilain. Cest aussi à ce "
"moment que vous découvrirez que « lenvoi » via ``send`` ne parvient pas "
"toujours à tout évacuer en un seul passage. Et bien que vous ayez lu cet "
"avertissement, vous finirez par vous faire avoir par cette subtilité !"
#: ../Doc/howto/sockets.rst:246
msgid ""
@ -300,10 +461,14 @@ msgid ""
"competitive position), these enhancements are left as an exercise for the "
"reader. Lets move on to cleaning up."
msgstr ""
"Pour garder une longueur raisonnable à cette page, pour forger votre "
"caractère (et afin de garder lavantage concurrentiel que jai sur vous), "
"ces améliorations ne seront pas abordées et sont laissées en exercice au "
"lecteur. Passons maintenant au nettoyage."
#: ../Doc/howto/sockets.rst:252
msgid "Binary Data"
msgstr ""
msgstr "Données binaires"
#: ../Doc/howto/sockets.rst:254
msgid ""
@ -317,6 +482,18 @@ msgid ""
"order is host order, these do nothing, but where the machine is byte-"
"reversed, these swap the bytes around appropriately."
msgstr ""
"Il est parfaitement possible denvoyer des données binaires sur un "
"connecteur. Le gros problème est que toutes les machines nutilisent pas les "
"mêmes formats pour les données binaires. Par exemple, une puce Motorola code "
"l'entier 1, sous 16 bits, comme les deux octets hexadécimaux 00 01. Intel et "
"DEC, cependant, utilisent lordre doctets inverse — ce même 1 est codé 01 "
"00. Les bibliothèques de connecteurs ont des appels pour convertir des "
"entiers de 16 et 32 bits — ``ntohl, htonl, ntohs, htons`` où ``n`` signifie "
"*réseau* (*network*, en anglais) et ``h`` signifie *hôte*, ``s`` signifie "
"*court* (*short*, en anglais) et ``l`` signifie *long*. Lorsque lordre du "
"réseau est lordre de lhôte, ceux-ci ne font rien, mais lorsque la machine "
"utilise lordre doctets inverse, ceux-ci échangent les octets de manière "
"appropriée."
#: ../Doc/howto/sockets.rst:264
msgid ""
@ -326,10 +503,17 @@ msgid ""
"The string \"0\" would be two bytes, while binary is four. Of course, this "
"doesn't fit well with fixed-length messages. Decisions, decisions."
msgstr ""
"De nos jours, avec les machines 32 bits, la représentation *ASCII* des "
"données binaires est souvent plus compacte que la représentation binaire. "
"Cest parce quun nombre surprenant de fois, tous ces *longs* ont la valeur "
"0, ou peut-être 1. La chaîne « 0 » serait codée sur deux octets, alors "
"qu'elle le serait sur quatre en binaire. Bien sûr, cela ne fonctionne pas "
"très bien avec les messages de longueur fixe. Ah, les décisions, les "
"décisions…"
#: ../Doc/howto/sockets.rst:272
msgid "Disconnecting"
msgstr ""
msgstr "Déconnexion"
#: ../Doc/howto/sockets.rst:274
msgid ""
@ -342,6 +526,15 @@ msgid ""
"same as ``shutdown(); close()``. So in most situations, an explicit "
"``shutdown`` is not needed."
msgstr ""
"À proprement parler, vous êtes censé utiliser ``shutdown`` sur un connecteur "
"pour larrêter avant de le fermer via ``close``. Le ``shutdown`` est un "
"avertissement au connecteur de lautre côté. Selon largument que vous lui "
"passez, cela peut signifier « Je ne vais plus envoyer, mais je vais quand "
"même écouter », ou « Je nécoute pas, bon débarras ! ». La plupart des "
"bibliothèques de connecteurs, cependant, sont tellement habituées à ce que "
"les programmeurs négligent dutiliser ce morceau détiquette que normalement "
"un ``close`` est équivalent à ``shutdown() ; close()``. Ainsi, dans la "
"plupart des situations, un ``shutdown`` explicite nest pas nécessaire."
#: ../Doc/howto/sockets.rst:282
msgid ""
@ -352,6 +545,13 @@ msgid ""
"complete request. The server sends a reply. If the ``send`` completes "
"successfully then, indeed, the client was still receiving."
msgstr ""
"Une façon dutiliser efficacement le ``shutdown`` est dutiliser un échange "
"de type HTTP. Le client envoie une requête et effectue ensuite un "
"``shutdown(1)``. Cela indique au serveur que « ce client a fini denvoyer, "
"mais peut encore recevoir ». Le serveur peut détecter *EOF* par une "
"réception de 0 octet. Il peut supposer quil a la requête complète. Le "
"serveur envoie une réponse. Si le ``send`` se termine avec succès, alors, en "
"effet, le client était encore en train de recevoir."
#: ../Doc/howto/sockets.rst:289
msgid ""
@ -362,10 +562,17 @@ msgid ""
"indefinitely, thinking you're just being slow. *Please* ``close`` your "
"sockets when you're done."
msgstr ""
"Python pousse larrêt automatique un peu plus loin, et dit que lorsquun "
"connecteur est collecté par le ramasse-miette, il effectue automatiquement "
"une fermeture via ``close`` si elle est nécessaire. Mais cest une très "
"mauvaise habitude de sappuyer sur ce système. Si votre connecteur disparaît "
"sans avoir fait un ``close``, le connecteur à lautre bout peut rester "
"suspendu indéfiniment, pensant que vous êtes juste lent. Fermez vos "
"connecteurs quand vous avez terminé *sil vous plait*."
#: ../Doc/howto/sockets.rst:297
msgid "When Sockets Die"
msgstr ""
msgstr "Quand les connecteurs meurent"
#: ../Doc/howto/sockets.rst:299
msgid ""
@ -381,10 +588,23 @@ msgid ""
"automatic recycling of resources. In other words, if you do manage to kill "
"the thread, your whole process is likely to be screwed up."
msgstr ""
"Le pire dans l'utilisation de connecteurs bloquants est probablement ce qui "
"se passe lorsque l'autre côté s'interrompt brutalement (sans faire de "
"fermeture via ``close``). Votre connecteur risque dattendre infiniment. TCP "
"est un protocole fiable, et il attendra très, très longtemps avant "
"d'abandonner une connexion. Si vous utilisez des fils dexécution, le fil "
"entier est pratiquement mort. Il n'y a pas grand-chose que vous puissiez "
"faire à ce sujet. Du moment que vous ne faites rien de stupide, comme tenir "
"un verrou verrouillé pendant une lecture bloquante, le fil ne consomme pas "
"vraiment beaucoup de ressources. N'essayez *pas* de tuer le fil — si les "
"fils sont plus efficients que les processus, c'est en partie parce qu'ils "
"évitent les coûts significatifs liés au recyclage automatique des "
"ressources. En d'autres termes, si vous parvenez à tuer le fil, tout votre "
"processus risque d'être foutu."
#: ../Doc/howto/sockets.rst:313
msgid "Non-blocking Sockets"
msgstr ""
msgstr "Connecteurs non bloquants"
#: ../Doc/howto/sockets.rst:315
msgid ""
@ -393,6 +613,10 @@ msgid ""
"calls, in much the same ways. It's just that, if you do it right, your app "
"will be almost inside-out."
msgstr ""
"Si vous avez compris ce qui précède, vous savez déjà tout ce que vous devez "
"savoir sur la mécanique de l'utilisation des connecteurs. Vous utiliserez "
"toujours les mêmes appels, de la même façon. C'est juste que, si vous le "
"faites bien, votre application sera presque dans la poche."
#: ../Doc/howto/sockets.rst:320
msgid ""
@ -403,6 +627,13 @@ msgid ""
"the exact same idea. You do this after creating the socket, but before using "
"it. (Actually, if you're nuts, you can switch back and forth.)"
msgstr ""
"En Python, vous utilisez ``socket.setblocking(0)`` pour le rendre non-"
"bloquant. En C, c'est plus complexe (pour commencer, vous devez choisir "
"entre la version BSD ``O_NONBLOCK`` et la version Posix presque impossible à "
"distinguer ``O_NDELAY``, qui est complètement différente de "
"``TCP_NODELAY``), mais c'est exactement la même idée. Vous le faites après "
"avoir créé le connecteur mais avant de l'utiliser (en fait, si vous êtes "
"fou, vous pouvez alterner)."
#: ../Doc/howto/sockets.rst:327
msgid ""
@ -413,10 +644,17 @@ msgid ""
"will grow large, buggy and suck CPU. So let's skip the brain-dead solutions "
"and do it right."
msgstr ""
"La différence majeure de fonctionnement est que `send``, ``recv``, "
"``connect`` et ``accept`` peuvent rendre la main sans avoir rien fait. Vous "
"avez (bien sûr) un certain nombre de choix. Vous pouvez vérifier le code de "
"retour et les codes d'erreur et, en général, devenir fou. Si vous ne me "
"croyez pas, essayez un jour. Votre application va grossir, boguer et "
"vampiriser le processeur. Alors, évitons les solutions vouées à léchec dès "
"le départ et faisons les choses correctement."
#: ../Doc/howto/sockets.rst:334
msgid "Use ``select``."
msgstr ""
msgstr "Utiliser ``select``."
#: ../Doc/howto/sockets.rst:336
msgid ""
@ -424,6 +662,9 @@ msgid ""
"but it's close enough to the C version that if you understand ``select`` in "
"Python, you'll have little trouble with it in C::"
msgstr ""
"En C, implémenter ``select`` est assez complexe. En Python, c'est du gâteau, "
"mais c'est assez proche de la version C ; aussi, si vous comprenez "
"``select`` en Python, vous aurez peu de problèmes avec lui en C ::"
#: ../Doc/howto/sockets.rst:347
msgid ""
@ -435,6 +676,15 @@ msgid ""
"generally a sensible thing to do - give it a nice long timeout (say a "
"minute) unless you have good reason to do otherwise."
msgstr ""
"Vous passez à ``select`` trois listes : la première contient tous les "
"connecteurs dont vous souhaiter lire le contenu ; la deuxième tous les "
"connecteurs sur lesquels vous voudriez écrire, et la dernière (normalement "
"laissée vide) ceux sur lesquels vous voudriez vérifier sil y a des erreurs. "
"Prenez note qu'un connecteur peut figurer dans plus d'une liste. L'appel à "
"``select`` est bloquant, mais vous pouvez lui donner un délai d'attente. "
"C'est généralement une bonne chose à faire — donnez-lui un bon gros délai "
"d'attente (disons une minute), à moins que vous n'ayez une bonne raison de "
"ne pas le faire."
#: ../Doc/howto/sockets.rst:355
msgid ""
@ -442,6 +692,10 @@ msgid ""
"actually readable, writable and in error. Each of these lists is a subset "
"(possibly empty) of the corresponding list you passed in."
msgstr ""
"En retour, vous recevrez trois listes. Elles contiennent les connecteurs qui "
"sont réellement lisibles, inscriptibles et en erreur. Chacune de ces listes "
"est un sous-ensemble (éventuellement vide) de la liste correspondante que "
"vous avez transmise."
#: ../Doc/howto/sockets.rst:359
msgid ""
@ -452,6 +706,14 @@ msgid ""
"nothing. (Actually, any reasonably healthy socket will return as writable - "
"it just means outbound network buffer space is available.)"
msgstr ""
"Si un connecteur se trouve dans la liste des sorties que vous pouvez lire, "
"vous pouvez être pratiquement certain qu'un ``recv`` sur ce connecteur "
"retournera *quelque chose*. Même chose pour la liste des sorties sur "
"lesquelles vous pouvez écrire. Vous pourrez envoyer *quelque chose*. Peut-"
"être pas tout ce que vous voudrez, mais *quelque chose* est mieux que rien. "
"(En fait, n'importe quel connecteur raisonnablement sain retournera en "
"écriture — cela signifie simplement que l'espace tampon réseau sortant est "
"disponible)."
#: ../Doc/howto/sockets.rst:366
msgid ""
@ -461,6 +723,13 @@ msgid ""
"it in the potential_writers list. If it shows up in the writable list, you "
"have a decent chance that it has connected."
msgstr ""
"Si vous avez un connecteur \"serveur\", mettez-le dans la liste des lecteurs "
"potentiels. Si il apparaît dans la liste des sorties que vous pouvez lire, "
"votre ``accept`` fonctionnera (presque certainement). Si vous avez créé un "
"nouveau connecteur pour ``connect`` à quelqu'un d'autre, mettez-le dans la "
"liste des éditeurs potentiels. Si il apparaît dans la liste des sorties sur "
"lesquelles vous pouvez écrire, vous avez une bonne chance qu'il se soit "
"connecté."
#: ../Doc/howto/sockets.rst:372
msgid ""
@ -470,6 +739,11 @@ msgid ""
"problem of determining whether the other end is done, or just busy with "
"something else."
msgstr ""
"En fait, ``select`` peut être pratique même avec des connecteurs bloquants. "
"C'est une façon de déterminer si vous allez bloquer — le connecteur "
"redevient lisible lorsqu'il y a quelque chose dans les tampons. Cependant, "
"cela n'aide pas encore à déterminer si l'autre extrémité a terminé, ou si "
"elle est simplement occupée par autre chose."
#: ../Doc/howto/sockets.rst:377
msgid ""
@ -479,3 +753,9 @@ msgid ""
"differently on Windows. In fact, on Windows I usually use threads (which "
"work very, very well) with my sockets."
msgstr ""
"**Alerte de portabilité** : Sous Unix, ``select`` fonctionne aussi bien avec "
"les connecteurs qu'avec les fichiers. N'essayez pas cela sous Windows. Sous "
"Windows, ``select`` ne fonctionne qu'avec les connecteurs. Notez également "
"qu'en C, la plupart des options de connecteurs les plus avancées se font "
"différemment sous Windows. En fait, sous Windows, j'utilise habituellement "
"des fils d'exécution (qui fonctionnent très, très bien) avec mes connecteurs."

View File

@ -65,7 +65,7 @@ msgid ""
"It returns a new sorted list::"
msgstr ""
"Un tri ascendant simple est très facile : il suffit d'appeler la fonction :"
"func:`sorted`. Elle renvoie une nouvelle liste triée : ::"
"func:`sorted`. Elle renvoie une nouvelle liste triée ::"
#: ../Doc/howto/sorting.rst:26
msgid ""
@ -368,7 +368,7 @@ msgstr ""
"En portant du code depuis Python 2.X vers 3.x, des problèmes peuvent "
"survenir quand des utilisateurs fournissent une fonction de comparaison et "
"qu'il faut convertir cette fonction en une fonction-clef. La fonction "
"d'encapsulation suivante rend cela plus facile à faire : ::"
"d'encapsulation suivante rend cela plus facile à faire ::"
#: ../Doc/howto/sorting.rst:245
msgid "To convert to a key function, just wrap the old comparison function:"
@ -417,7 +417,7 @@ msgstr ""
"Il est garanti que les routines de tri utilisent les méthodes :meth:`__lt__` "
"lorsqu'elles effectuent des comparaisons entre deux objets. Donc il est "
"facile d'ajouter un ordre de tri standard à une classe en définissant sa "
"méthode :meth:`__lt__` : ::"
"méthode :meth:`__lt__` ::"
#: ../Doc/howto/sorting.rst:285
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/howto/unicode.rst:5
msgid "Unicode HOWTO"
msgstr ""
msgstr "Guide Unicode"
#: ../Doc/howto/unicode.rst:0
msgid "Release"
@ -27,7 +27,7 @@ msgstr "Version"
#: ../Doc/howto/unicode.rst:7
msgid "1.12"
msgstr ""
msgstr "1.12"
#: ../Doc/howto/unicode.rst:9
msgid ""
@ -37,11 +37,11 @@ msgstr ""
#: ../Doc/howto/unicode.rst:14
msgid "Introduction to Unicode"
msgstr ""
msgstr "Introduction à Unicode"
#: ../Doc/howto/unicode.rst:17
msgid "History of Character Codes"
msgstr ""
msgstr "Histoire des codes de caractères"
#: ../Doc/howto/unicode.rst:19
msgid ""
@ -50,6 +50,11 @@ msgid ""
"for various characters, with the numeric values running from 0 to 127. For "
"example, the lowercase letter 'a' is assigned 97 as its code value."
msgstr ""
"En 1968, l'*American Standard Code for Information Interchange*, mieux connu "
"sous son acronyme *ASCII*, a été normalisé. L'ASCII définissait des codes "
"numériques pour différents caractères, les valeurs numériques s'étendant de "
"0 à 127. Par exemple, la lettre minuscule « a » est assignée à 97 comme "
"valeur de code."
#: ../Doc/howto/unicode.rst:24
msgid ""
@ -60,6 +65,13 @@ msgid ""
"words such as 'naïve' and 'café', and some publications have house styles "
"which require spellings such as 'coöperate'.)"
msgstr ""
"ASCII était une norme développée par les États-Unis, elle ne définissait "
"donc que des caractères non accentués. Il y avait « e », mais pas « é » ou "
"« Í ». Cela signifiait que les langues qui nécessitaient des caractères "
"accentués ne pouvaient pas être fidèlement représentées en ASCII. (En fait, "
"les accents manquants importaient pour l'anglais aussi, qui contient des "
"mots tels que « naïve » et « café », et certaines publications ont des "
"styles propres qui exigent des orthographes tels que « *coöperate* ».)"
#: ../Doc/howto/unicode.rst:31
msgid ""
@ -67,12 +79,17 @@ msgid ""
"mid-1980s an Apple II BASIC program written by a French speaker might have "
"lines like these:"
msgstr ""
"Pendant un certain temps, les gens ont juste écrit des programmes qui "
"n'affichaient pas d'accents. Au milieu des années 1980, un programme Apple "
"II BASIC écrit par un français pouvait avoir des lignes comme celles-ci : ::"
#: ../Doc/howto/unicode.rst:40
msgid ""
"Those messages should contain accents (terminée, paramètre, enregistrés) and "
"they just look wrong to someone who can read French."
msgstr ""
"Ces messages devraient contenir des accents (terminée, paramètre, "
"enregistrés) et ils ont juste l'air anormaux à quelqu'un lisant le français."
#: ../Doc/howto/unicode.rst:43
msgid ""
@ -86,6 +103,17 @@ msgid ""
"conventions that were invented by one company or another and managed to "
"catch on."
msgstr ""
"Dans les années 1980, presque tous les ordinateurs personnels étaient à 8 "
"bits, ce qui signifie que les octets pouvaient contenir des valeurs allant "
"de 0 à 255. Les codes ASCII allaient seulement jusqu'à 127, alors certaines "
"machines ont assigné les valeurs entre 128 et 255 à des caractères "
"accentués. Différentes machines avaient des codes différents, cependant, ce "
"qui a conduit à des problèmes d'échange de fichiers. Finalement, divers "
"ensembles de valeurs couramment utilisés pour la gamme 128--255 ont émergé. "
"Certains étaient de véritables normes, définies par l'Organisation "
"internationale de normalisation, et certaines étaient des conventions *de "
"facto* qui ont été inventées par une entreprise ou une autre et qui ont fini "
"par se répandre."
#: ../Doc/howto/unicode.rst:52
msgid ""
@ -94,6 +122,10 @@ msgid ""
"for Russian into the 128--255 range because there are more than 128 such "
"characters."
msgstr ""
"255 caractères, ça n'est pas beaucoup. Par exemple, vous ne pouvez pas "
"contenir à la fois les caractères accentués utilisés en Europe occidentale "
"et l'alphabet cyrillique utilisé pour le russe dans la gamme 128--255, car "
"il y a plus de 128 de tous ces caractères."
#: ../Doc/howto/unicode.rst:56
msgid ""
@ -103,6 +135,12 @@ msgid ""
"that quotes some Russian text? In the 1980s people began to want to solve "
"this problem, and the Unicode standardization effort began."
msgstr ""
"Vous pouviez écrire les fichiers avec des codes différents (tous vos "
"fichiers russes dans un système de codage appelé *KOI8*, tous vos fichiers "
"français dans un système de codage différent appelé *Latin1*), mais que "
"faire si vous souhaitiez écrire un document français citant du texte russe ? "
"Dans les années 80, les gens ont commencé à vouloir résoudre ce problème, et "
"les efforts de standardisation Unicode ont commencé."
#: ../Doc/howto/unicode.rst:62
msgid ""
@ -114,6 +152,14 @@ msgid ""
"meet that goal, and the modern Unicode specification uses a wider range of "
"codes, 0 through 1,114,111 ( ``0x10FFFF`` in base 16)."
msgstr ""
"Unicode a commencé par utiliser des caractères 16 bits au lieu de 8 bits. 16 "
"bits signifie que vous avez 2^16 = 65 536 valeurs distinctes disponibles, ce "
"qui permet de représenter de nombreux caractères différents à partir de "
"nombreux alphabets différents. Un des objectifs initiaux était de faire en "
"sorte que Unicode contienne les alphabets de chaque langue humaine. Il "
"savère que même 16 bits ne suffisent pas pour atteindre cet objectif, et la "
"spécification Unicode moderne utilise une gamme de codes plus étendue, "
"allant de 0 à 1 114 111 (``0x10FFFF`` en base 16)."
#: ../Doc/howto/unicode.rst:70
msgid ""
@ -121,6 +167,9 @@ msgid ""
"originally separate efforts, but the specifications were merged with the 1.1 "
"revision of Unicode."
msgstr ""
"Il existe une norme ISO connexe, ISO 10646. Unicode et ISO 10646 étaient à "
"lorigine des efforts séparés, mais les spécifications ont été fusionnées "
"avec la révision 1.1 dUnicode."
#: ../Doc/howto/unicode.rst:74
msgid ""
@ -130,10 +179,16 @@ msgid ""
"listed in the References or the `Wikipedia entry for Unicode <https://en."
"wikipedia.org/wiki/Unicode#History>`_ for more information.)"
msgstr ""
"(Cette discussion sur lhistorique dUnicode est extrêmement simplifiée. Les "
"détails historiques précis ne sont pas nécessaires pour comprendre comment "
"utiliser efficacement Unicode, mais si vous êtes curieux, consultez le site "
"du consortium Unicode indiqué dans les références ou la `page Wikipédia pour "
"Unicode <https://en.wikipedia.org/wiki/Unicode#History>`_ (page en anglais) "
"pour plus dinformations.)"
#: ../Doc/howto/unicode.rst:83
msgid "Definitions"
msgstr ""
msgstr "Définitions"
#: ../Doc/howto/unicode.rst:85
msgid ""
@ -174,10 +229,17 @@ msgid ""
"to worry about glyphs; figuring out the correct glyph to display is "
"generally the job of a GUI toolkit or a terminal's font renderer."
msgstr ""
"Un caractère est représenté sur un écran ou sur papier par un ensemble "
"déléments graphiques appelé **glyphe**. Le glyphe dun A majuscule, par "
"exemple, est deux traits diagonaux et un trait horizontal, bien que les "
"détails exacts dépendent de la police utilisée. La plupart du code Python "
"na pas besoin de sinquiéter des glyphes ; trouver le bon glyphe à afficher "
"est généralement le travail dune boîte à outils GUI ou du moteur de rendu "
"des polices dun terminal."
#: ../Doc/howto/unicode.rst:122
msgid "Encodings"
msgstr ""
msgstr "Encodages"
#: ../Doc/howto/unicode.rst:124
msgid ""
@ -199,10 +261,14 @@ msgid ""
"This representation is straightforward but using it presents a number of "
"problems."
msgstr ""
"Cette représentation est simple mais son utilisation pose un certain nombre "
"de problèmes."
#: ../Doc/howto/unicode.rst:142
msgid "It's not portable; different processors order the bytes differently."
msgstr ""
"Elle nest pas portable ; des processeurs différents ordonnent les octets "
"différemment."
#: ../Doc/howto/unicode.rst:144
msgid ""
@ -214,18 +280,32 @@ msgid ""
"that large), but expanding our usage of disk and network bandwidth by a "
"factor of 4 is intolerable."
msgstr ""
"Elle gâche beaucoup d'espace. Dans la plupart des textes, la majorité des "
"points de code sont inférieurs à 127, ou à 255, donc beaucoup d'espace est "
"occupé par des octets ``0x00``. La chaîne ci-dessus occupe 24 octets, à "
"comparer aux 6 octets nécessaires pour une représentation en ASCII. "
"L'utilisation supplémentaire de RAM n'a pas trop d'importance (les "
"ordinateurs de bureau ont des gigaoctets de RAM et les chaînes ne sont "
"généralement pas si grandes que ça), mais l'accroissement de notre "
"utilisation du disque et de la bande passante réseau par un facteur de 4 est "
"intolérable."
#: ../Doc/howto/unicode.rst:152
msgid ""
"It's not compatible with existing C functions such as ``strlen()``, so a new "
"family of wide string functions would need to be used."
msgstr ""
"Elle nest pas compatible avec les fonctions C existantes telles que "
"``strlen()``, il faudrait donc utiliser une nouvelle famille de fonctions, "
"celle des chaînes larges (*wide strings*)."
#: ../Doc/howto/unicode.rst:155
msgid ""
"Many Internet standards are defined in terms of textual data, and can't "
"handle content with embedded zero bytes."
msgstr ""
"De nombreuses normes Internet sont définies en termes de données textuelles "
"et ne peuvent pas gérer le contenu incorporant des octets *zéro*."
#: ../Doc/howto/unicode.rst:158
msgid ""
@ -233,6 +313,10 @@ msgid ""
"that are more efficient and convenient. UTF-8 is probably the most commonly "
"supported encoding; it will be discussed below."
msgstr ""
"Généralement, les gens nutilisent pas cet encodage, mais optent pour "
"dautres encodages plus efficaces et pratiques. UTF-8 est probablement "
"lencodage le plus couramment pris en charge ; celui-ci sera abordé ci-"
"dessous."
#: ../Doc/howto/unicode.rst:162
msgid ""
@ -240,12 +324,17 @@ msgid ""
"encodings don't. The rules for converting a Unicode string into the ASCII "
"encoding, for example, are simple; for each code point:"
msgstr ""
"Les encodages n'ont pas à gérer tous les caractères Unicode possibles, et "
"les plupart ne le font pas. Les règles pour convertir une chaîne Unicode en "
"codage ASCII, par exemple, sont simples. pour chaque point de code :"
#: ../Doc/howto/unicode.rst:166
msgid ""
"If the code point is < 128, each byte is the same as the value of the code "
"point."
msgstr ""
"Si le point de code est < 128, chaque octet est identique à la valeur du "
"point de code."
#: ../Doc/howto/unicode.rst:169
msgid ""
@ -253,6 +342,9 @@ msgid ""
"in this encoding. (Python raises a :exc:`UnicodeEncodeError` exception in "
"this case.)"
msgstr ""
"Si le point de code est égal à 128 ou plus, la chaîne Unicode ne peut pas "
"être représentée dans ce codage (Python déclenche une exception :exc:"
"`UnicodeEncodeError` dans ce cas)."
#: ../Doc/howto/unicode.rst:173
msgid ""
@ -262,6 +354,11 @@ msgid ""
"point larger than 255 is encountered, the string can't be encoded into "
"Latin-1."
msgstr ""
"Latin-1, également connu sous le nom de ISO-8859-1, est un encodage "
"similaire. Les points de code Unicode 0255 étant identiques aux valeurs de "
"Latin-1, la conversion en cet encodage nécessite simplement la conversion "
"des points de code en octets de même valeur ; si un point de code supérieur "
"à 255 est rencontré, la chaîne ne peut pas être codée en latin-1."
#: ../Doc/howto/unicode.rst:178
msgid ""
@ -272,6 +369,14 @@ msgid ""
"encoding, you'd probably use some sort of lookup table to perform the "
"conversion, but this is largely an internal detail."
msgstr ""
"Les encodages ne doivent pas nécessairement être de simples mappages un à "
"un, comme Latin-1. Prenons lexemple du code EBCDIC dIBM, utilisé sur les "
"ordinateurs centraux IBM. Les valeurs de lettre ne faisaient pas partie dun "
"bloc: les lettres « a » à « i » étaient comprises entre 129 et 137, mais les "
"lettres « j » à « r » étaient comprises entre 145 et 153. Si vous vouliez "
"utiliser EBCDIC comme encodage, vous auriez probablement utilisé une sorte "
"de table de correspondance pour effectuer la conversion, mais il sagit en "
"surtout dun détail d'implémentation."
#: ../Doc/howto/unicode.rst:185
msgid ""
@ -285,20 +390,25 @@ msgstr ""
msgid ""
"If the code point is < 128, it's represented by the corresponding byte value."
msgstr ""
"Si le point de code est < 128, il est représenté par la valeur de l'octet "
"correspondant."
#: ../Doc/howto/unicode.rst:191
msgid ""
"If the code point is >= 128, it's turned into a sequence of two, three, or "
"four bytes, where each byte of the sequence is between 128 and 255."
msgstr ""
"Si le point de code est ≥ 128, il est transformé en une séquence de deux, "
"trois ou quatre octets, où chaque octet de la séquence est compris entre 128 "
"et 255."
#: ../Doc/howto/unicode.rst:194
msgid "UTF-8 has several convenient properties:"
msgstr ""
msgstr "UTF-8 a plusieurs propriétés intéressantes :"
#: ../Doc/howto/unicode.rst:196
msgid "It can handle any Unicode code point."
msgstr ""
msgstr "Il peut gérer n'importe quel point de code Unicode."
#: ../Doc/howto/unicode.rst:197
msgid ""
@ -310,13 +420,15 @@ msgstr ""
#: ../Doc/howto/unicode.rst:201
msgid "A string of ASCII text is also valid UTF-8 text."
msgstr ""
msgstr "Une chaîne de texte ASCII est également un texte UTF-8 valide."
#: ../Doc/howto/unicode.rst:202
msgid ""
"UTF-8 is fairly compact; the majority of commonly used characters can be "
"represented with one or two bytes."
msgstr ""
"UTF-8 est assez compact. La majorité des caractères couramment utilisés "
"peuvent être représentés avec un ou deux octets."
#: ../Doc/howto/unicode.rst:204
msgid ""
@ -324,6 +436,10 @@ msgid ""
"next UTF-8-encoded code point and resynchronize. It's also unlikely that "
"random 8-bit data will look like valid UTF-8."
msgstr ""
"Si des octets sont corrompus ou perdus, il est possible de déterminer le "
"début du prochain point de code encodé en UTF-8 et de se resynchroniser. Il "
"est également improbable que des données 8-bits aléatoires ressemblent à du "
"UTF-8 valide."
#: ../Doc/howto/unicode.rst:211 ../Doc/howto/unicode.rst:485
#: ../Doc/howto/unicode.rst:705
@ -338,6 +454,11 @@ msgid ""
"history/>`_ of the origin and development of Unicode is also available on "
"the site."
msgstr ""
"Le site du `Consortium Unicode <http://www.unicode.org>`_, en anglais, a des "
"diagrammes de caractères, un glossaire et des versions PDF de la "
"spécification Unicode. Préparez-vous à une lecture difficile. Une "
"`chronologie <http://www.unicode.org/history/>`_ de lorigine et du "
"développement de lUnicode est également disponible sur le site."
#: ../Doc/howto/unicode.rst:218
msgid ""
@ -360,20 +481,25 @@ msgid ""
"encoding <https://en.wikipedia.org/wiki/Character_encoding>`_\" and `UTF-8 "
"<https://en.wikipedia.org/wiki/UTF-8>`_, for example."
msgstr ""
"Les pages Wikipédia sont souvent utiles ; voir les pages pour « `Codage des "
"caractères <https://fr.wikipedia.org/wiki/Codage_des_caract%C3%A8res>`_ » et "
"`UTF-8 <https://fr.wikipedia.org/wiki/UTF-8>`_, par exemple."
#: ../Doc/howto/unicode.rst:233
msgid "Python's Unicode Support"
msgstr ""
msgstr "Prise en charge Unicode de Python"
#: ../Doc/howto/unicode.rst:235
msgid ""
"Now that you've learned the rudiments of Unicode, we can look at Python's "
"Unicode features."
msgstr ""
"Maintenant que vous avez appris les rudiments de l'Unicode, nous pouvons "
"regarder les fonctionnalités Unicode de Python."
#: ../Doc/howto/unicode.rst:239
msgid "The String Type"
msgstr ""
msgstr "Le type *String*"
#: ../Doc/howto/unicode.rst:241
msgid ""
@ -388,6 +514,8 @@ msgid ""
"The default encoding for Python source code is UTF-8, so you can simply "
"include a Unicode character in a string literal::"
msgstr ""
"L'encodage par défaut pour le code source Python est UTF-8, il est donc "
"facile d'inclure des caractères Unicode dans une chaîne littérale ::"
#: ../Doc/howto/unicode.rst:255
msgid ""
@ -399,6 +527,7 @@ msgstr ""
msgid ""
"Side note: Python 3 also supports using Unicode characters in identifiers::"
msgstr ""
"Note : Python 3 sait gérer les caractères Unicode dans les identifiants ::"
#: ../Doc/howto/unicode.rst:266
msgid ""
@ -407,6 +536,12 @@ msgid ""
"string literals. (Depending on your system, you may see the actual capital-"
"delta glyph instead of a \\u escape.) ::"
msgstr ""
"Si vous ne pouvez pas entrer un caractère particulier dans votre éditeur ou "
"si vous voulez garder le code source uniquement en ASCII pour une raison "
"quelconque, vous pouvez également utiliser des séquences d'échappement dans "
"les littéraux de chaîne (en fonction de votre système, il se peut que vous "
"voyiez le glyphe réel du *delta majuscule* au lieu d'une séquence "
"d'échappement ``\\u...``) ::"
#: ../Doc/howto/unicode.rst:278
msgid ""
@ -414,6 +549,10 @@ msgid ""
"of :class:`bytes`. This method takes an *encoding* argument, such as "
"``UTF-8``, and optionally an *errors* argument."
msgstr ""
"De plus, une chaîne de caractères peut être créée en utilisant la méthode :"
"func:`~bytes.decode` de la classe :class:`bytes`. Cette méthode prend un "
"argument *encoding*, ``UTF-8`` par exemple, et optionnellement un argument "
"*errors*."
#: ../Doc/howto/unicode.rst:282
msgid ""
@ -425,6 +564,14 @@ msgid ""
"``'backslashreplace'`` (inserts a ``\\xNN`` escape sequence). The following "
"examples show the differences::"
msgstr ""
"L'argument *errors* détermine la réponse lorsque la chaîne en entrée ne peut "
"pas être convertie selon les règles de l'encodage. Les valeurs autorisées "
"pour cet argument sont ``'strict'`` (« strict » : lève une exception :exc:"
"`UnicodeDecodeError`), ``'replace'`` (« remplacer » : utilise ``U+FFFD``, "
"``REPLACEMENT CARACTER``), ``'ignore'`` (« ignorer » : n'inclut pas le "
"caractère dans le résultat Unicode) ou ``'backslashreplace'`` (« remplacer "
"avec antislash » : insère une séquence déchappement ``\\xNN``). Les "
"exemples suivants illustrent les différences ::"
#: ../Doc/howto/unicode.rst:302
msgid ""
@ -443,10 +590,15 @@ msgid ""
"built-in :func:`ord` function that takes a one-character Unicode string and "
"returns the code point value::"
msgstr ""
"Des chaînes Unicode à un caractère peuvent également être créées avec la "
"fonction native :func:`chr`, qui prend des entiers et renvoie une chaîne "
"Unicode de longueur 1 qui contient le point de code correspondant. "
"L'opération inverse est la fonction native :func:`ord` qui prend une chaîne "
"Unicode d'un caractère et renvoie la valeur du point de code ::"
#: ../Doc/howto/unicode.rst:320
msgid "Converting to Bytes"
msgstr ""
msgstr "Conversion en octets"
#: ../Doc/howto/unicode.rst:322
msgid ""
@ -454,6 +606,9 @@ msgid ""
"returns a :class:`bytes` representation of the Unicode string, encoded in "
"the requested *encoding*."
msgstr ""
"La méthode inverse de :meth:`bytes.decode` est :meth:`str.encode`, qui "
"renvoie une représentation :class:`bytes` de la chaîne Unicode, codée dans "
"lencodage *encoding* demandé."
#: ../Doc/howto/unicode.rst:326
msgid ""
@ -465,10 +620,17 @@ msgid ""
"``backslashreplace`` (inserts a ``\\uNNNN`` escape sequence) and "
"``namereplace`` (inserts a ``\\N{...}`` escape sequence)."
msgstr ""
"Le paramètre *errors* est le même que le paramètre de la méthode :meth:"
"`~bytes.decode` mais possède quelques gestionnaires supplémentaires. En plus "
"de ``'strict'``, ``'ignore'`` et ``'remplace'`` (qui dans ce cas insère un "
"point d'interrogation au lieu du caractère non codable), il y a aussi "
"``'xmlcharrefreplace'`` (insère une référence XML), ``backslashreplace`` "
"(insère une séquence ``\\uNNNN``) et ``namereplace`` (insère une séquence ``"
"\\N{...}``)."
#: ../Doc/howto/unicode.rst:334
msgid "The following example shows the different results::"
msgstr ""
msgstr "L'exemple suivant montre les différents résultats ::"
#: ../Doc/howto/unicode.rst:355
msgid ""
@ -479,10 +641,17 @@ msgid ""
"is comfortable, and writing new encodings is a specialized task, so the "
"module won't be covered in this HOWTO."
msgstr ""
"Les routines de bas niveau pour enregistrer et accéder aux encodages "
"disponibles se trouvent dans le module :mod:`codecs`. L'implémentation de "
"nouveaux encodages nécessite également de comprendre le module :mod:"
"`codecs`. Cependant, les fonctions d'encodage et de décodage renvoyées par "
"ce module sont généralement de bas-niveau pour être facilement utilisées et "
"l'écriture de nouveaux encodages est une tâche très spécialisée, donc le "
"module ne sera pas couvert dans ce guide."
#: ../Doc/howto/unicode.rst:364
msgid "Unicode Literals in Python Source Code"
msgstr ""
msgstr "Littéraux Unicode dans le code source Python"
#: ../Doc/howto/unicode.rst:366
msgid ""
@ -491,6 +660,10 @@ msgid ""
"code point. The ``\\U`` escape sequence is similar, but expects eight hex "
"digits, not four::"
msgstr ""
"Dans le code source Python, des points de code Unicode spécifiques peuvent "
"être écrits en utilisant la séquence d'échappement ``\\u``, suivie de quatre "
"chiffres hexadécimaux donnant le point de code. La séquence d'échappement ``"
"\\U`` est similaire, mais attend huit chiffres hexadécimaux, pas quatre ::"
#: ../Doc/howto/unicode.rst:378
msgid ""
@ -500,6 +673,12 @@ msgid ""
"language. You can also assemble strings using the :func:`chr` built-in "
"function, but this is even more tedious."
msgstr ""
"L'utilisation de séquences d'échappement pour des points de code supérieurs "
"à 127 est acceptable à faible dose, mais devient gênante si vous utilisez "
"beaucoup de caractères accentués, comme c'est le cas dans un programme avec "
"des messages en français ou dans une autre langue utilisant des lettres "
"accentuées. Vous pouvez également assembler des chaînes de caractères à "
"l'aide de la fonction native :func:`chr`, mais c'est encore plus fastidieux."
#: ../Doc/howto/unicode.rst:384
msgid ""
@ -508,6 +687,10 @@ msgid ""
"which would display the accented characters naturally, and have the right "
"characters used at runtime."
msgstr ""
"Idéalement, vous devriez être capable d'écrire des littéraux dans l'encodage "
"naturel de votre langue. Vous pourriez alors éditer le code source de Python "
"avec votre éditeur favori qui affiche les caractères accentués "
"naturellement, et a les bons caractères utilisés au moment de l'exécution."
#: ../Doc/howto/unicode.rst:389
msgid ""
@ -516,6 +699,10 @@ msgid ""
"including a special comment as either the first or second line of the source "
"file::"
msgstr ""
"Python considère que le code source est écrit en UTF-8 par défaut, mais vous "
"pouvez utiliser presque n'importe quel encodage si vous déclarez l'encodage "
"utilisé. Cela se fait en incluant un commentaire spécial sur la première ou "
"la deuxième ligne du fichier source ::"
#: ../Doc/howto/unicode.rst:399
msgid ""
@ -525,16 +712,24 @@ msgid ""
"special; they have no significance to Python but are a convention. Python "
"looks for ``coding: name`` or ``coding=name`` in the comment."
msgstr ""
"La syntaxe s'inspire de la notation d'*Emacs* pour spécifier les variables "
"locales à un fichier. *Emacs* supporte de nombreuses variables différentes, "
"mais Python ne gère que *coding*. Les symboles ``-*-`` indiquent à *Emacs* "
"que le commentaire est spécial ; ils n'ont aucune signification pour Python "
"mais sont une convention. Python cherche ``coding: name`` ou ``coding=name`` "
"dans le commentaire."
#: ../Doc/howto/unicode.rst:405
msgid ""
"If you don't include such a comment, the default encoding used will be UTF-8 "
"as already mentioned. See also :pep:`263` for more information."
msgstr ""
"Si vous n'incluez pas un tel commentaire, l'encodage par défaut est UTF-8 "
"comme déjà mentionné. Voir aussi la :pep:`263` pour plus d'informations."
#: ../Doc/howto/unicode.rst:410
msgid "Unicode Properties"
msgstr ""
msgstr "Propriétés Unicode"
#: ../Doc/howto/unicode.rst:412
msgid ""
@ -551,10 +746,12 @@ msgid ""
"The following program displays some information about several characters, "
"and prints the numeric value of one particular character::"
msgstr ""
"Le programme suivant affiche des informations sur plusieurs caractères et "
"affiche la valeur numérique d'un caractère particulier ::"
#: ../Doc/howto/unicode.rst:433
msgid "When run, this prints:"
msgstr ""
msgstr "Si vous l'exécutez, cela affiche :"
#: ../Doc/howto/unicode.rst:444
msgid ""
@ -568,10 +765,20 @@ msgid ""
"unicode.org/reports/tr44/#General_Category_Values>`_ for a list of category "
"codes."
msgstr ""
"Les codes de catégorie sont des abréviations décrivant la nature du "
"caractère. Celles-ci sont regroupées en catégories telles que « Lettre », "
 Nombre », « Ponctuation » ou « Symbole », qui sont à leur tour divisées en "
"sous-catégories. Pour prendre par exemple les codes de la sortie ci-dessus, "
"``'Ll'`` signifie « Lettre, minuscules », ``'No'`` signifie « Nombre, "
"autre », ``'Mn'`` est « Marque, non-espaçant », et ``'So'`` est « Symbole, "
"autre ». Voir la section `Valeurs générales des catégories de la "
"documentation de la base de données de caractères Unicode <http://www."
"unicode.org/reports/tr44/#General_Category_Values>`_ (ressource en anglais) "
"pour une liste de codes de catégories."
#: ../Doc/howto/unicode.rst:455
msgid "Unicode Regular Expressions"
msgstr ""
msgstr "Expressions régulières Unicode"
#: ../Doc/howto/unicode.rst:457
msgid ""
@ -582,12 +789,20 @@ msgid ""
"characters ``[0-9]`` in bytes but in strings will match any character that's "
"in the ``'Nd'`` category."
msgstr ""
"Les expressions régulières gérées par le module :mod:`re` peuvent être "
"fournies sous forme de chaîne d'octets ou de texte. Certaines séquences de "
"caractères spéciaux telles que ``\\d`` et ``\\w`` ont des significations "
"différentes selon que le motif est fourni en octets ou en texte. Par "
"exemple, ``\\d`` correspond aux caractères ``[0-9]`` en octets mais dans les "
"chaînes de caractères correspond à tout caractère de la catégorie ``'Nd'``."
#: ../Doc/howto/unicode.rst:464
msgid ""
"The string in this example has the number 57 written in both Thai and Arabic "
"numerals::"
msgstr ""
"Dans cet exemple, la chaîne contient le nombre 57 écrit en chiffres arabes "
"et thaïlandais ::"
#: ../Doc/howto/unicode.rst:474
msgid ""
@ -595,6 +810,9 @@ msgid ""
"you supply the :const:`re.ASCII` flag to :func:`~re.compile`, ``\\d+`` will "
"match the substring \"57\" instead."
msgstr ""
"Une fois exécuté, ``\\d+`` correspond aux chiffres thaïlandais et les "
"affiche. Si vous fournissez le drapeau :const:`re.ASCII` à :func:`~re."
"compile`, ``\\d+`` correspond cette fois à la chaîne \"57\"."
#: ../Doc/howto/unicode.rst:478
msgid ""
@ -602,16 +820,24 @@ msgid ""
"``[a-zA-Z0-9_]`` in bytes or if :const:`re.ASCII` is supplied, and ``\\s`` "
"will match either Unicode whitespace characters or ``[ \\t\\n\\r\\f\\v]``."
msgstr ""
"De même, ``\\w`` correspond à une grande variété de caractères Unicode mais "
"seulement ``[a-zA-Z0-9_]`` en octets (ou si :const:`re.ASCII` est fourni) et "
"``\\s`` correspond soit aux caractères blancs Unicode soit aux caractères "
"``[ \\t\\n\\r\\f\\v]``."
#: ../Doc/howto/unicode.rst:489
msgid "Some good alternative discussions of Python's Unicode support are:"
msgstr ""
"Quelques bonnes discussions alternatives sur la gestion d'Unicode par Python "
"sont :"
#: ../Doc/howto/unicode.rst:491
msgid ""
"`Processing Text Files in Python 3 <http://python-notes.curiousefficiency."
"org/en/latest/python3/text_file_processing.html>`_, by Nick Coghlan."
msgstr ""
"`Processing Text Files in Python 3 <http://python-notes.curiousefficiency."
"org/en/latest/python3/text_file_processing.html>`_, par Nick Coghlan."
#: ../Doc/howto/unicode.rst:492
msgid ""
@ -624,14 +850,16 @@ msgid ""
"The :class:`str` type is described in the Python library reference at :ref:"
"`textseq`."
msgstr ""
"Le type :class:`str` est décrit dans la référence de la bibliothèque Python "
"à :ref:`textseq`."
#: ../Doc/howto/unicode.rst:497
msgid "The documentation for the :mod:`unicodedata` module."
msgstr ""
msgstr "La documentation du module :mod:`unicodedata`."
#: ../Doc/howto/unicode.rst:499
msgid "The documentation for the :mod:`codecs` module."
msgstr ""
msgstr "La documentation du module :mod:`codecs`."
#: ../Doc/howto/unicode.rst:501
msgid ""
@ -641,10 +869,16 @@ msgid ""
"Python 2's Unicode features (where the Unicode string type is called "
"``unicode`` and literals start with ``u``)."
msgstr ""
"Marc-André Lemburg a donné une présentation intitulée `« Python et "
"Unicode » (diapositives PDF) <https://downloads.egenix.com/python/Unicode-"
"EPC2002-Talk.pdf>`_ à *EuroPython* 2002. Les diapositives sont un excellent "
"aperçu de la conception des fonctionnalités Unicode de Python 2 (où le type "
"de chaîne Unicode est appelé ``unicode`` et les littéraux commencent par "
"``u``)."
#: ../Doc/howto/unicode.rst:509
msgid "Reading and Writing Unicode Data"
msgstr ""
msgstr "Lecture et écriture de données Unicode"
#: ../Doc/howto/unicode.rst:511
msgid ""
@ -652,6 +886,10 @@ msgid ""
"is input/output. How do you get Unicode strings into your program, and how "
"do you convert Unicode into a form suitable for storage or transmission?"
msgstr ""
"Une fois que vous avez écrit du code qui fonctionne avec des données "
"Unicode, le problème suivant concerne les entrées/sorties. Comment obtenir "
"des chaînes Unicode dans votre programme et comment convertir les chaînes "
"Unicode dans une forme appropriée pour le stockage ou la transmission ?"
#: ../Doc/howto/unicode.rst:515
msgid ""
@ -661,6 +899,13 @@ msgid ""
"Unicode data, for example. Many relational databases also support Unicode-"
"valued columns and can return Unicode values from an SQL query."
msgstr ""
"Il est possible que vous n'ayez rien à faire en fonction de vos sources "
"d'entrée et des destinations de vos données de sortie ; il convient de "
"vérifier si les bibliothèques utilisées dans votre application gèrent "
"l'Unicode nativement. Par exemple, les analyseurs XML renvoient souvent des "
"données Unicode. De nombreuses bases de données relationnelles prennent "
"également en charge les colonnes encodées en Unicode et peuvent renvoyer des "
"valeurs Unicode à partir d'une requête SQL."
#: ../Doc/howto/unicode.rst:521
msgid ""
@ -670,6 +915,11 @@ msgid ""
"bytes with ``bytes.decode(encoding)``. However, the manual approach is not "
"recommended."
msgstr ""
"Les données Unicode sont généralement converties en un encodage particulier "
"avant d'être écrites sur le disque ou envoyées sur un connecteur réseau. Il "
"est possible de faire tout le travail vous-même : ouvrir un fichier, lire un "
"élément 8-bits, puis convertir les octets avec ``bytes.decode(encoding)``. "
"Cependant, l'approche manuelle n'est pas recommandée."
#: ../Doc/howto/unicode.rst:526
msgid ""
@ -684,6 +934,17 @@ msgid ""
"least a moment you'd need to have both the encoded string and its Unicode "
"version in memory.)"
msgstr ""
"La nature multi-octets des encodages pose problème ; un caractère Unicode "
"peut être représenté par plusieurs octets. Si vous voulez lire le fichier "
"par morceaux de taille arbitraire (disons 1024 ou 4096 octets), vous devez "
"écrire un code de gestion des erreurs pour détecter le cas où une partie "
"seulement des octets codant un seul caractère Unicode est lue à la fin d'un "
"morceau. Une solution serait de lire le fichier entier en mémoire et "
"d'effectuer le décodage, mais cela vous empêche de travailler avec des "
"fichiers extrêmement volumineux ; si vous avez besoin de lire un fichier de "
"2 Gio, vous avez besoin de 2 Gio de RAM (plus que ça, en fait, puisque "
"pendant un moment, vous aurez besoin d'avoir à la fois la chaîne encodée et "
"sa version Unicode en mémoire)."
#: ../Doc/howto/unicode.rst:536
msgid ""
@ -696,16 +957,27 @@ msgid ""
"*encoding* and *errors* parameters which are interpreted just like those in :"
"meth:`str.encode` and :meth:`bytes.decode`."
msgstr ""
"La solution serait d'utiliser l'interface de décodage de bas-niveau pour "
"intercepter le cas des séquences d'encodage incomplètes. Ce travail "
"d'implémentation a déjà été fait pour vous : la fonction native :func:`open` "
"peut renvoyer un objet de type fichier qui suppose que le contenu du fichier "
"est dans un encodage spécifié et accepte les paramètres Unicode pour des "
"méthodes telles que :meth:`~io.TextIOBase.read` et :meth:`~io.TextIOBase."
"write`. Ceci fonctionne grâce aux paramètres *encoding* et *errors* de :func:"
"`open` qui sont interprétés comme ceux de :meth:`str.encode` et :meth:`bytes."
"decode`."
#: ../Doc/howto/unicode.rst:545
msgid "Reading Unicode from a file is therefore simple::"
msgstr ""
msgstr "Lire de l'Unicode à partir d'un fichier est donc simple ::"
#: ../Doc/howto/unicode.rst:551
msgid ""
"It's also possible to open files in update mode, allowing both reading and "
"writing::"
msgstr ""
"Il est également possible d'ouvrir des fichiers en mode « mise à jour », "
"permettant à la fois la lecture et l'écriture ::"
#: ../Doc/howto/unicode.rst:559
msgid ""
@ -719,6 +991,17 @@ msgid ""
"endian encodings, that specify one particular byte ordering and don't skip "
"the BOM."
msgstr ""
"Le caractère Unicode ``U+FEFFF`` est utilisé comme marque pour indiquer le "
"boutisme (c'est-à-dire l'ordre dans lequel les octets sont placés pour "
"indiquer une valeur sur plusieurs octets, *byte-order mark* en anglais ou "
"*BOM*), et est souvent écrit en tête (premier caractère) d'un fichier afin "
"d'aider à l'auto-détection du boutisme du fichier. Certains encodages, comme "
"UTF-16, s'attendent à ce qu'une *BOM* soit présente au début d'un fichier ; "
"lorsqu'un tel encodage est utilisé, la *BOM* sera automatiquement écrite "
"comme premier caractère et sera silencieusement retirée lorsque le fichier "
"sera lu. Il existe des variantes de ces encodages, comme ``utf-16-le`` et "
"``utf-16-be`` pour les encodages petit-boutiste et gros-boutiste, qui "
"spécifient un ordre d'octets donné et ne sautent pas la *BOM*."
#: ../Doc/howto/unicode.rst:568
msgid ""
@ -731,7 +1014,7 @@ msgstr ""
#: ../Doc/howto/unicode.rst:576
msgid "Unicode filenames"
msgstr ""
msgstr "Noms de fichiers Unicode"
#: ../Doc/howto/unicode.rst:578
msgid ""
@ -753,12 +1036,20 @@ msgid ""
"writing, you can usually just provide the Unicode string as the filename, "
"and it will be automatically converted to the right encoding for you::"
msgstr ""
"La fonction :func:`sys.getfilesystemencoding` renvoie l'encodage à utiliser "
"sur votre système actuel, au cas où vous voudriez faire l'encodage "
"manuellement, mais il n'y a pas vraiment de raisons de s'embêter avec ça. "
"Lors de l'ouverture d'un fichier pour la lecture ou l'écriture, vous pouvez "
"généralement simplement fournir la chaîne Unicode comme nom de fichier et "
"elle est automatiquement convertie à l'encodage qui convient ::"
#: ../Doc/howto/unicode.rst:597
msgid ""
"Functions in the :mod:`os` module such as :func:`os.stat` will also accept "
"Unicode filenames."
msgstr ""
"Les fonctions du module :mod:`os` telles que :func:`os.stat` acceptent "
"également les noms de fichiers Unicode."
#: ../Doc/howto/unicode.rst:600
msgid ""
@ -775,13 +1066,15 @@ msgstr ""
#: ../Doc/howto/unicode.rst:618
msgid "will produce the following output:"
msgstr ""
msgstr "produit la sortie suivante :"
#: ../Doc/howto/unicode.rst:626
msgid ""
"The first list contains UTF-8-encoded filenames, and the second list "
"contains the Unicode versions."
msgstr ""
"La première liste contient les noms de fichiers encodés en UTF-8 et la "
"seconde contient les versions Unicode."
#: ../Doc/howto/unicode.rst:629
msgid ""
@ -792,23 +1085,28 @@ msgstr ""
#: ../Doc/howto/unicode.rst:635
msgid "Tips for Writing Unicode-aware Programs"
msgstr ""
msgstr "Conseils pour écrire des programmes compatibles Unicode"
#: ../Doc/howto/unicode.rst:637
msgid ""
"This section provides some suggestions on writing software that deals with "
"Unicode."
msgstr ""
"Cette section fournit quelques suggestions sur l'écriture de logiciels qui "
"traitent de l'Unicode."
#: ../Doc/howto/unicode.rst:640
msgid "The most important tip is:"
msgstr ""
msgstr "Le conseil le plus important est :"
#: ../Doc/howto/unicode.rst:642
msgid ""
"Software should only work with Unicode strings internally, decoding the "
"input data as soon as possible and encoding the output only at the end."
msgstr ""
"Il convient que le logiciel ne traite que des chaînes Unicode en interne, "
"décodant les données d'entrée dès que possible et encodant la sortie "
"uniquement à la fin."
#: ../Doc/howto/unicode.rst:645
msgid ""
@ -818,6 +1116,12 @@ msgid ""
"or decoding: if you do e.g. ``str + bytes``, a :exc:`TypeError` will be "
"raised."
msgstr ""
"Si vous essayez d'écrire des fonctions de traitement qui acceptent à la fois "
"les chaînes Unicode et les chaînes d'octets, les possibilités d'occurrences "
"de bogues dans votre programme augmentent partout où vous combinez les deux "
"différents types de chaînes. Il n'y a pas d'encodage ou de décodage "
"automatique : si vous faites par exemple ``str + octets``, une :exc:"
"`TypeError` est levée."
#: ../Doc/howto/unicode.rst:650
msgid ""
@ -830,10 +1134,21 @@ msgid ""
"true if the input data also specifies the encoding, since the attacker can "
"then choose a clever way to hide malicious text in the encoded bytestream."
msgstr ""
"Lors de l'utilisation de données provenant d'un navigateur Web ou d'une "
"autre source non fiable, une technique courante consiste à vérifier la "
"présence de caractères illégaux dans une chaîne de caractères avant de "
"l'utiliser pour générer une ligne de commande ou de la stocker dans une base "
"de données. Si vous le faites, vérifiez bien la chaîne décodée, pas les "
"données d'octets codés ; certains encodages peuvent avoir des propriétés "
"intéressantes, comme ne pas être bijectifs ou ne pas être entièrement "
"compatibles avec l'ASCII. C'est particulièrement vrai si l'encodage est "
"spécifié explicitement dans vos données d'entrée, car l'attaquant peut alors "
"choisir un moyen intelligent de cacher du texte malveillant dans le flux de "
"données encodé."
#: ../Doc/howto/unicode.rst:661
msgid "Converting Between File Encodings"
msgstr ""
msgstr "Conversion entre les encodages de fichiers"
#: ../Doc/howto/unicode.rst:663
msgid ""
@ -841,16 +1156,23 @@ msgid ""
"encodings, taking a stream that returns data in encoding #1 and behaving "
"like a stream returning data in encoding #2."
msgstr ""
"La classe :class:`~codecs.StreamRecoder` peut convertir de manière "
"transparente entre les encodages : prenant un flux qui renvoie des données "
"dans l'encodage #1, elle se comporte comme un flux qui renvoie des données "
"dans l'encodage #2."
#: ../Doc/howto/unicode.rst:667
msgid ""
"For example, if you have an input file *f* that's in Latin-1, you can wrap "
"it with a :class:`~codecs.StreamRecoder` to return bytes encoded in UTF-8::"
msgstr ""
"Par exemple, si vous avez un fichier d'entrée *f* qui est en Latin-1, vous "
"pouvez l'encapsuler dans un :class:`~codecs.StreamRecoder` pour qu'il "
"renvoie des octets encodés en UTF-8 ::"
#: ../Doc/howto/unicode.rst:681
msgid "Files in an Unknown Encoding"
msgstr ""
msgstr "Fichiers dans un encodage inconnu"
#: ../Doc/howto/unicode.rst:683
msgid ""
@ -859,6 +1181,10 @@ msgid ""
"to examine or modify the ASCII parts, you can open the file with the "
"``surrogateescape`` error handler::"
msgstr ""
"Vous avez besoin de modifier un fichier, mais vous ne connaissez pas son "
"encodage ? Si vous savez que l'encodage est compatible ASCII et que vous "
"voulez seulement examiner ou modifier les parties ASCII, vous pouvez ouvrir "
"le fichier avec le gestionnaire d'erreurs ``surrogateescape`` ::"
#: ../Doc/howto/unicode.rst:697
msgid ""
@ -875,6 +1201,10 @@ msgid ""
"video/289/pycon-2010--mastering-python-3-i-o>`_, a PyCon 2010 talk by David "
"Beazley, discusses text processing and binary data handling."
msgstr ""
"Une partie de la conférence `Mastering Python 3 Input/Output <http://pyvideo."
"org/video/289/pycon-2010--mastering-python-3-i-o>`_ (ressource en anglais), "
"donnée lors de *PyCon* 2010 de David Beazley, parle du traitement de texte "
"et du traitement des données binaires."
#: ../Doc/howto/unicode.rst:711
msgid ""
@ -884,6 +1214,12 @@ msgid ""
"character encodings as well as how to internationalize and localize an "
"application. These slides cover Python 2.x only."
msgstr ""
"Le `PDF du diaporama de la présentation de Marc-André Lemburg \"Writing "
"Unicodeaware Applications in Python\" <https://downloads.egenix.com/python/"
"LSM2005-Developing-Unicode-aware-applications-in-Python.pdf>`_ (ressource en "
"anglais) traite des questions d'encodage de caractères ainsi que de "
"l'internationalisation et de la localisation d'une application. Ces "
"diapositives ne couvrent que Python 2.x."
#: ../Doc/howto/unicode.rst:717
msgid ""
@ -891,6 +1227,10 @@ msgid ""
"unicode-in-python>`_ is a PyCon 2013 talk by Benjamin Peterson that "
"discusses the internal Unicode representation in Python 3.3."
msgstr ""
"`The Guts of Unicode in Python <http://pyvideo.org/video/1768/the-guts-of-"
"unicode-in-python>`_ (ressource en anglais) est une conférence *PyCon* 2013 "
"donnée par Benjamin Peterson qui traite de la représentation interne Unicode "
"en Python 3.3."
#: ../Doc/howto/unicode.rst:724
msgid "Acknowledgements"
@ -902,6 +1242,9 @@ msgid ""
"since been revised further by Alexander Belopolsky, Georg Brandl, Andrew "
"Kuchling, and Ezio Melotti."
msgstr ""
"La première ébauche de ce document a été rédigée par Andrew Kuchling. Il a "
"depuis été révisé par Alexander Belopolsky, Georg Brandl, Andrew Kuchling et "
"Ezio Melotti."
#: ../Doc/howto/unicode.rst:730
msgid ""

View File

@ -20,6 +20,7 @@ msgstr ""
#: ../Doc/howto/urllib2.rst:5
msgid "HOWTO Fetch Internet Resources Using The urllib Package"
msgstr ""
"Guide pratique : récupérer des ressources web en utilisant le module *urllib*"
#: ../Doc/howto/urllib2.rst:0
msgid "Author"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/install/index.rst:7
msgid "Installing Python Modules (Legacy version)"
msgstr "installation des modules python (Version historique)"
msgstr "Installation des modules python (Version historique)"
#: ../Doc/install/index.rst:0
msgid "Author"
@ -190,21 +190,23 @@ msgid ""
msgstr ""
"Si vous téléchargez une distribution source du module, vous pouvez dire "
"assez rapidement s'il a été empaqueté et distribué de la façon standard, "
"c'est à dire en utilisant Distutils. Premièrement, le nom et le numéro de "
"version de la distribution seront affichés en bonne place dans le nom de "
"c'est-à-dire en utilisant Distutils. Premièrement, le nom et le numéro de "
"version de la distribution sont affichés en bonne place dans le nom de "
"l'archive téléchargée, par exemple :file:`foo-1.0.tar.gz` ou :file:"
"`widget-0.9.7.zip`. Ensuite, l'archive va se décompresser dans un répertoire "
"du même nom : :file:`foo-1.0` ou :file:`widget-0.9.7`. En outre, la "
"distribution va contenir un script d'installation :file:`setup.py` et un "
"`widget-0.9.7.zip`. Ensuite, l'archive se décompresse dans un répertoire du "
"même nom : :file:`foo-1.0` ou :file:`widget-0.9.7`. En outre, la "
"distribution contient un script d'installation :file:`setup.py` et un "
"fichier nommé :file:`README.txt` ou éventuellement juste :file:`README`, qui "
"doit expliquer que la construction et l'installation de la distribution du "
"module se fait simplement en exécutant ceci : ::"
"module se fait simplement en exécutant ceci ::"
#: ../Doc/install/index.rst:116
msgid ""
"For Windows, this command should be run from a command prompt window (:"
"menuselection:`Start --> Accessories`)::"
msgstr ""
"Sous Windows, cette commande doit être lancée depuis une invite de commande "
"(:menuselection:`Démarrer --> Accessoires`) ::"
#: ../Doc/install/index.rst:121
msgid ""
@ -215,11 +217,11 @@ msgid ""
"you need to get out of this manual."
msgstr ""
"Si toutes ces choses sont vérifiées, alors vous savez déjà comment "
"construire et installer le module que vous venez de télécharger : en "
"construire et installer le module que vous venez de télécharger : en "
"exécutant la commande ci-dessus. Sauf si vous avez besoin d'installer les "
"choses d'une manière non standard ou de personnaliser le processus de "
"construction, vous n'avez pas vraiment besoin de ce manuel. Ou plutôt, la "
"commande ci-dessus est tout ce dont vous avez besoin de sortir de ce manuel."
"commande ci-dessus est tout ce dont vous avez besoin de retenir de ce manuel."
#: ../Doc/install/index.rst:131
msgid "Standard Build and Install"
@ -231,9 +233,9 @@ msgid ""
"module distribution using the Distutils is usually one simple command to run "
"from a terminal::"
msgstr ""
"Comme décrit dans la section :ref:`inst-new-standard`, la construction et "
"l'installation d'une distribution d'un module en utilisant Distutils est "
"habituellement fait avec la commande dans un terminal : ::"
"Comme décrit dans la section :ref:`inst-new-standard`, construire et "
"installer une distribution de modules en utilisant les Distutils consiste "
"généralement à exécuter une simple commande dans un terminal ::"
#: ../Doc/install/index.rst:143
msgid "Platform variations"
@ -248,11 +250,11 @@ msgid ""
"thing to do is::"
msgstr ""
"Vous devez toujours exécuter la commande *setup* à partir du répertoire "
"racine de la distribution, à savoir le sous-répertoire de niveau supérieur à "
"celui où se sont décompressées les sources de la distribution du module. Par "
"exemple, si vous venez de télécharger les sources d'une distribution du "
"module :file:`foo-1.0.tar.gz` sous un système UNIX, la méthode normale "
"consiste à faire : ::"
"racine de la distribution, à savoir le sous-répertoire de plus haut niveau "
"dans l'arborescence où se sont décompressées les sources de la distribution "
"du module. Par exemple, si vous venez de télécharger les sources d'une "
"distribution du module :file:`foo-1.0.tar.gz` sous un système UNIX, la "
"méthode normale consiste à faire ::"
#: ../Doc/install/index.rst:154
msgid ""
@ -265,11 +267,11 @@ msgid ""
msgstr ""
"Sous Windows, vous avez probablement téléchargé :file:`foo-1.0.zip`. Si vous "
"avez téléchargé le fichier d'archive dans :file:`C:\\\\Temp`, il se "
"décompressera alors dans :file:`C:\\\\Temp\\\\foo-1.0` ; vous pouvez "
"utiliser soit un manipulateur d'archive avec une interface graphique (comme "
"WinZip) soit un outil de ligne de commande (telles que :program:`unzip` ou :"
"program:`pkunzip`) pour décompresser l'archive. Ensuite, ouvrez une fenêtre "
"d'invite de commandes et exécutez : ::"
"décompressera alors dans :file:`C:\\\\Temp\\\\foo-1.0` ; vous pouvez "
"utiliser soit un gestionnaire d'archives graphique (comme WinZip), soit un "
"outil de ligne de commande (tels que :program:`unzip` ou :program:`pkunzip`) "
"pour décompresser l'archive. Ensuite, ouvrez une fenêtre d'invite de "
"commandes et exécutez ::"
#: ../Doc/install/index.rst:168
msgid "Splitting the job up"
@ -287,12 +289,12 @@ msgid ""
"privileges)."
msgstr ""
"Exécuter ``setup.py install`` construit et installe tous les modules en un "
"seul coup. Si vous préférez travailler progressivement -- ce qui est "
"seul coup. Si vous préférez travailler progressivement ce qui est "
"particulièrement utile si vous souhaitez personnaliser le processus de "
"construction, ou si les choses vont mal -- vous pouvez utiliser le script de "
"construction ou si les choses vont mal — vous pouvez utiliser le script de "
"configuration pour faire une chose à la fois. Cela est particulièrement "
"utile lorsque la construction et l'installation doit être faite par "
"différents utilisateurs -- par exemple, vous pouvez vouloir construire une "
"différents utilisateurs par exemple, vous pouvez vouloir construire une "
"distribution d'un module et la transférer à un administrateur système pour "
"l'installation (ou le faire vous-même, avec les privilèges de super-"
"utilisateur)."
@ -304,7 +306,7 @@ msgid ""
msgstr ""
"Par exemple, vous pouvez construire tout en une seule étape et ensuite "
"installer le tout dans une deuxième étape, en invoquant le script "
"d'installation deux fois : ::"
"d'installation deux fois ::"
#: ../Doc/install/index.rst:184
msgid ""
@ -325,12 +327,12 @@ msgid ""
"advanced tasks. If you get into distributing your own Python modules and "
"extensions, you'll run lots of individual Distutils commands on their own."
msgstr ""
"Il se peut que vous n'ayez pas souvent besoin de cette capacité à découper "
"les étapes si tout ce que vous faite est d'installer les modules téléchargés "
"sur le Net, mais c'est très pratique pour des tâches plus avancées. Si vous "
"en venez à distribuer vos propres modules et extensions Python, vous allez "
"exécuter beaucoup de commandes individuelles de Distutils, indépendamment "
"les unes des autres."
"Il se peut que vous n'ayez pas souvent besoin de cette capacité à séparer "
"les étapes si tout ce que vous faites est d'installer les modules "
"téléchargés sur le Net, mais c'est très pratique pour des tâches plus "
"avancées. Si vous en venez à distribuer vos propres modules et extensions "
"Python, vous allez exécuter beaucoup de commandes individuelles de "
"Distutils, indépendamment les unes des autres."
#: ../Doc/install/index.rst:198
msgid "How building works"
@ -346,10 +348,10 @@ msgid ""
msgstr ""
"Comme sous-entendu ci-dessus, la commande :command:`build` est chargée de "
"mettre les fichiers à installer dans un *répertoire de travail*. Par défaut, "
"c'est :file:`build` à la racine de la distribution ; si vous êtes très "
"c'est :file:`build` à la racine de la distribution ; si vous êtes très "
"préoccupés par la vitesse, ou si vous voulez conserver l'arborescence des "
"sources d'origine, vous pouvez changer le répertoire de construction avec "
"l'option :option:`!--build-base`. Par exemple : ::"
"l'option :option:`!--build-base`. Par exemple ::"
#: ../Doc/install/index.rst:208
msgid ""
@ -358,14 +360,14 @@ msgid ""
"files`.) Normally, this isn't necessary."
msgstr ""
"(Ou vous pourriez le faire de façon permanente avec une directive dans votre "
"système ou dans le fichier de configuration personnelle de Distutils ; voir "
"système ou dans le fichier de configuration personnelle de Distutils ; voir "
"la section :ref:`inst-config-files`.) Normalement, ce n'est pas nécessaire."
#: ../Doc/install/index.rst:212
msgid "The default layout for the build tree is as follows::"
msgstr ""
"La mise en page par défaut pour l'arbre de compilation se présente comme "
"suit : ::"
"L'arborescence par défaut produite par la compilation se présente comme "
"suit ::"
#: ../Doc/install/index.rst:219
msgid ""
@ -382,15 +384,16 @@ msgid ""
msgstr ""
"où ``<plat>`` représente une brève description de l'actuel système "
"d'exploitation / plateforme matérielle et la version Python. La première "
"forme, avec juste un dossier :file:`lib` est utilisé pour les «distributions "
"de modules purs\" -- c'est-à-dire des distributions de module qui ne "
"incorporent que des modules en Python. Si un module de la distribution "
"forme, avec juste un dossier :file:`lib` est utilisée pour les "
"« distributions de modules purs » — c'est-à-dire des distributions de module "
"qui n'incorporent que des modules en Python. Si un module de la distribution "
"contient au moins une extension (modules écrits en C/C++), alors il faut "
"utiliser la deuxième forme, avec deux dossiers ``<plat>``. Dans ce cas, le "
"répertoire :file:`temp.{plat}` contient les fichiers temporaires générés par "
"le processus de compilation et de lien qui ne seront pas installés. Dans les "
"deux cas, le dossier :file:`lib` (ou :file:`lib.{plat}`) contient tous les "
"modules Python (Python pur et extensions) qui seront installés."
"le processus de compilation et de génération de liens (ils ne seront pas "
"installés). Dans les deux cas, le dossier :file:`lib` (ou :file:`lib.{plat}"
"`) contient tous les modules Python (Python pur et extensions) qui seront "
"installés."
#: ../Doc/install/index.rst:229
msgid ""
@ -415,10 +418,10 @@ msgid ""
"under :file:`build/lib` (or :file:`build/lib.{plat}`) to your chosen "
"installation directory."
msgstr ""
"Après l'exécution de la commande :command:`build` (que vous l'ayez exécutez "
"explicitement ou que la commande :command:`install` l'ai fait pour vous), le "
"travail de la commande :command:`install` est relativement simple : tout ce "
"qu'il a à faire est de copier tout ce qui est sous :file:`build/lib` (ou :"
"Après l'exécution de la commande :command:`build` (que vous l'ayez exécutée "
"explicitement ou que la commande :command:`install` l'ait fait pour vous), "
"le travail de la commande :command:`install` est relativement simple : tout "
"ce qu'il a à faire est de copier tout ce qui est sous :file:`build/lib` (ou :"
"file:`build/lib.{plat}`) dans le répertoire que vous avez choisi pour "
"l'installation."
@ -432,14 +435,14 @@ msgid ""
"distribution being installed is pure Python or contains extensions (\"non-"
"pure\"):"
msgstr ""
"Si vous ne choisissez aucun répertoire d'installation -- c'est-à-dire, si "
"vous lancez simplement ``setup.py install``\\ -- alors la commande :command:"
"`install` installe à l'emplacement standard pour les modules tiers de "
"Python. Cet emplacement varie selon la plateforme et selon la façon dont "
"vous avez construit et/ou installés Python lui-même. Sous UNIX (et Mac OS X, "
"qui est également basé sur Unix), il dépend aussi de savoir si le module de "
"la distribution en cours d'installation est en pur Python ou contient des "
"extensions (\"non-pur\"):"
"Si vous ne choisissez aucun répertoire d'installation c'est-à-dire, si "
"vous lancez simplement ``setup.py install`` alors la commande :command:"
"`install` installe le module dans l'emplacement standard pour les modules "
"tiers de Python. Cet emplacement varie selon la plateforme et selon la façon "
"dont vous avez construit ou installé Python lui-même. Sous UNIX (et Mac OS "
"X, qui est également basé sur Unix), cela dépend aussi du module de la "
"distribution en cours d'installation, suivant qu'il est en pur Python ou "
"s'il contient des extensions (« non-pur ») :"
#: ../Doc/install/index.rst:255
msgid "Platform"
@ -515,14 +518,14 @@ msgstr ""
"du système, donc :file:`{prefix}` et :file:`{exec-prefix}` sont généralement "
"tous les deux :file:`/usr` sous Linux. Si vous construisez vous-même Python "
"sous Linux (ou tout autre système de type Unix), les valeurs par défaut de :"
"file:`{prefix}` et :file:`{exec-prefix}` sont souvent :file:`/usr/locale/`."
"file:`{prefix}` et :file:`{exec-prefix}` sont souvent :file:`/usr/local`."
#: ../Doc/install/index.rst:273
msgid ""
"The default installation directory on Windows was :file:`C:\\\\Program Files"
"\\\\Python` under Python 1.6a1, 1.5.2, and earlier."
msgstr ""
"Sous Windows, le dossier d'installation par défaut était : :file:`C:\\"
"Sous Windows, le dossier d'installation par défaut était : :file:`C:\\"
"\\Program Files\\\\Python` sous Python 1.6a1, 1.5.2 et avant."
#: ../Doc/install/index.rst:276
@ -540,17 +543,17 @@ msgid ""
"find out my :file:`{prefix}` and :file:`{exec-prefix}`:"
msgstr ""
":file:`{prefix}` et :file:`{exec-prefix}` désignent les répertoires dans "
"lesquels Python est installé et où il trouve les librairies lors de "
"lesquels Python est installé et où il trouve ses bibliothèques lors de "
"l'exécution. Ils sont toujours identiques sous Windows et très souvent les "
"mêmes sous Unix et Mac OS X. Vous pouvez trouver ce que votre installation "
"de Python utilise pour :file:`{prefix}` et :file:`{exec-prefix}` en "
"exécutant Python en mode interactif et en tapant quelques commandes simples. "
"Sous Unix, taper seulement ``python`` à l'invite du *shell*. Sous Windows, "
"sélectionner :menuselection:`Démarrer --> Programmes --> Python X.Y --> "
"Python (ligne de commande)`. Un fois l'interpréteur démarré, vous taper du "
"Sous Unix, tapez simplement ``python`` à l'invite du *shell*. Sous Windows, "
"sélectionnez :menuselection:`Démarrer --> Programmes --> Python X.Y --> "
"Python (ligne de commande)`. Une fois l'interpréteur démarré, vous tapez du "
"code Python à l'invite de commande. Par exemple, sur mon système Linux, je "
"tape les trois instructions ci-dessous et obtient la sortie comme indiqué "
"pour trouver mes :file:`{prefix}` et :file:`{exec-prefix}` :"
"tape les trois instructions ci-dessous et obtiens la sortie suivante pour "
"trouver mes :file:`{prefix}` et :file:`{exec-prefix}` :"
#: ../Doc/install/index.rst:298
msgid ""
@ -563,7 +566,7 @@ msgid ""
"``python3.2`` on UNIX will typically use ``Python32`` on Windows."
msgstr ""
"Quelques autres remplacements utilisés dans ce document : :file:`{X.Y}` "
"représenter la version de Python, par exemple ``3.2``; :file:`{abiflags}` "
"représente la version de Python, par exemple ``3.2`` ; :file:`{abiflags}` "
"sera remplacé par la valeur de :data:`sys.abiflags` ou la chaine vide pour "
"les plateformes qui ne définissent pas dindicateurs dABI ; :file:"
"`{distname}` sera remplacé par le nom de la distribution de modules en train "
@ -580,11 +583,11 @@ msgid ""
"install` on custom installations."
msgstr ""
"Si vous ne voulez pas installer des modules à l'emplacement standard, ou si "
"vous n'avez pas la permission d'écrire là-bas, alors vous avez besoin de "
"lire la section :ref:`inst-alt-install` sur les alternatives d'installation. "
"Si vous souhaitez personnaliser vos répertoires d'installation plus "
"fortement, allez voir la section :ref:`inst-custom-install` sur les "
"installations personnalisées."
"vous n'avez pas la permission d'écrire à cet endroit, alors lisez la "
"section :ref:`inst-alt-install` relative aux installations alternatives. Si "
"vous souhaitez personnaliser encore plus vos répertoires d'installation, "
"lisez la section :ref:`inst-custom-install` sur les installations "
"personnalisées."
#: ../Doc/install/index.rst:316
msgid "Alternate Installation"
@ -608,8 +611,8 @@ msgstr ""
"pouvez vouloir essayer un module avant den faire une partie standard de "
"votre installation locale de Python. Cest surtout vrai lors dune mise à "
"jour dune distribution déjà présente : vous voulez vous assurer que votre "
"base de scripts marche encore avec la nouvelle version avant de faire la "
"mise à jour pour de vrai."
"base de scripts fonctionne encore avec la nouvelle version avant de faire la "
"mise à jour pour de bon."
#: ../Doc/install/index.rst:326
msgid ""
@ -625,9 +628,9 @@ msgstr ""
"linstallation de distributions de modules à un emplacement alternatif "
"simple et sans douleur. Lidée de base est que vous lui fournissez un "
"dossier de base pour linstallation, et la commande :command:`install` "
"choisit un ensemble de dossier (appelé le *schéma dinstallation*) dans "
"choisit un ensemble de dossiers (appelé le *schéma dinstallation*) dans "
"lequel elle installe les fichiers. Les détails diffèrent dune plateforme à "
"une autre, donc lisez la section ci-dessous qui sapplique à vous."
"une autre, donc lisez les sections ci-dessous qui sappliquent à vous."
#: ../Doc/install/index.rst:334
msgid ""
@ -654,7 +657,7 @@ msgstr ""
"Ce schéma est conçu pour être la solution la plus pratique pour les "
"utilisateurs qui nont pas la permission décrire dans le dossier site-"
"packages global, ou qui ne veulent pas y écrire. Il est activé avec une "
"simple option : ::"
"simple option ::"
#: ../Doc/install/index.rst:351
msgid ""
@ -667,7 +670,7 @@ msgstr ""
"USER_BASE` (écrit :file:`{userbase}` dans la suite). Ce schéma installe des "
"modules Python purs et les modules dextension au même endroit (aussi connu "
"sous le nom de :data:`site.USER_SITE`).Voici les valeurs pour UNIX, y "
"compris Mac OS XX : ::"
"compris Mac OS X ::"
#: ../Doc/install/index.rst:357 ../Doc/install/index.rst:368
#: ../Doc/install/index.rst:419 ../Doc/install/index.rst:468
@ -723,7 +726,7 @@ msgstr ":file:`{userbase}/include/python{X.Y}{abiflags}/{distname}`"
#: ../Doc/install/index.rst:365
msgid "And here are the values used on Windows:"
msgstr "Et voici les valeurs utilisées sur Windows : ::"
msgstr "Et voici les valeurs utilisées sur Windows ::"
#: ../Doc/install/index.rst:370
msgid ":file:`{userbase}\\\\Python{XY}\\\\site-packages`"
@ -758,10 +761,15 @@ msgid ""
"`{userbase}/lib` to the compiler search path for libraries as well as to the "
"runtime search path for shared C libraries (rpath)."
msgstr ""
"La commande :command:`build_ext` possède aussi une option ``--user`` pour "
"ajouter :file:`{userbase}/include` dans les chemins où le compilateur "
"recherche les fichiers d'en-têtes et :file:`{userbase}/lib` dans les chemins "
"où le compilateur recherche les bibliothèques ainsi que les bibliothèques C "
"partagées chargeables à l'exécution (`rpath`)."
#: ../Doc/install/index.rst:391
msgid "Alternate installation: the home scheme"
msgstr "Installation alternative : le schéma home"
msgstr "Installation alternative : le schéma *home*"
#: ../Doc/install/index.rst:393
msgid ""
@ -775,14 +783,13 @@ msgstr ""
"Lidée derrière le « schéma home » est que vous compilez et maintenez un "
"espace personnel de modules Python. Le nom de ce schéma vient de lidée du "
"dossier « home » sur Unix, vu quil nest pas rare pour un utilisateur UNIX "
"de construire leur dossier *home* avec la même disposition que :file:`/usr/` "
"or :file:`/usr/local/`. Ce schéma peut être utilisé par nimporte qui, quel "
"que soit le système dexploitation."
"d'agencer son dossier *home* avec la même disposition que :file:`/usr/` ou :"
"file:`/usr/local/`. Ce schéma peut être utilisé par nimporte qui, quel que "
"soit le système dexploitation."
#: ../Doc/install/index.rst:400
msgid "Installing a new module distribution is as simple as ::"
msgstr ""
"Installer une nouvelle distribution de module est aussi simple que : ::"
msgstr "Installer une nouvelle distribution de module est aussi simple que ::"
#: ../Doc/install/index.rst:404
msgid ""
@ -791,9 +798,9 @@ msgid ""
"`install` command will expand this to your home directory::"
msgstr ""
"où vous pouvez fournir le dossier de votre choix à loption :option:`!--"
"home`. Sur Unix, les paresseux pourront juste mettre un tilde (``~``) ; la "
"home`. Sur Unix, les paresseux peuvent mettre un simple tilde (``~``) ; la "
"commande :command:`install` le remplacera par le chemin vers votre dossier "
"*home* : ::"
"personnel ::"
#: ../Doc/install/index.rst:410
msgid ""
@ -805,7 +812,7 @@ msgstr ""
"Pour que Python puisse trouver les distributions installées avec ce schéma, "
"vous devez :ref:`modifier le chemin de recherche de Python <inst-search-"
"path>` ou modifier :mod:`sitecustomize` (voir :mod:`site`) pour appeler :"
"func:`site.addsitedir` ou modifiez :data:`sys.path`."
"func:`site.addsitedir` ou modifier :data:`sys.path`."
#: ../Doc/install/index.rst:415
msgid ""
@ -814,8 +821,8 @@ msgid ""
"follows:"
msgstr ""
"Loption :option:`!--home` définit le dossier de base de linstallation. Les "
"fichiers sont installés dans les dossiers suivants dans la base de "
"linstallation de la façon suivante : ::"
"fichiers sont installés dans les dossiers suivants sous la base de "
"l'installation de la façon suivante ::"
#: ../Doc/install/index.rst:421
msgid ":file:`{home}/lib/python`"
@ -836,7 +843,7 @@ msgstr ":file:`{home}/include/python/{distname}`"
#: ../Doc/install/index.rst:427
msgid "(Mentally replace slashes with backslashes if you're on Windows.)"
msgstr ""
"(Remplacez mentalement les slashs avec des antislash si vous êtes sur "
"(Remplacez mentalement les slashs avec des antislashs si vous êtes sur "
"Windows.)"
#: ../Doc/install/index.rst:433
@ -854,12 +861,12 @@ msgid ""
"where the prefix scheme will be useful."
msgstr ""
"Le schéma de préfixe est utile quand vous voulez une installation de Python "
"pour faire la compilation/linstallation (i.e. exécuter le script *setup*), "
"pour faire la compilation/linstallation (c-à-d exécuter le script *setup*), "
"mais utiliser les modules tiers dune installation Python différente (ou "
"quelque chose qui ressemble à une installation Python différente). Si cela "
"semble inhabituel, ça lest -- cest pourquoi les schémas *user* et *home* "
"viennent avant. Cependant, il y a au moins deux cas connus où le schéma "
"*prefix* est utile."
"vous semble inhabituel, ça lest — cest pourquoi les schémas *user* et "
"*home* viennent avant. Cependant, il y a au moins deux cas connus où le "
"schéma *prefix* est utile."
#: ../Doc/install/index.rst:442
msgid ""
@ -876,7 +883,7 @@ msgstr ""
"plutôt que dune addition locale. Cependant, si vous installez des modules "
"Python depuis leur source, vous voulez probablement quils aillent dans :"
"file:`/usr/local/lib/python2.{X}` plutôt que dans :file:`/usr/lib/python2.{X}"
"`. Ça peut être fait avec : ::"
"`. Ça peut être fait avec ::"
#: ../Doc/install/index.rst:451
msgid ""
@ -887,12 +894,12 @@ msgid ""
"would have to be installed to, say, :file:`/mnt/{@server}/export/lib/python2."
"{X}`. This could be done with ::"
msgstr ""
"Une autre possibilité est un système de fichier réseau où le nom est utilisé "
"pour écrire dans un dossier distant qui est différent du nom utilisé pour le "
"lire : par exemple, linterpréteur Python appelé est :file:`/usr/local/bin/"
"python` et cherche les modules dans :file:`/usr/local/lib/python2.{X}`, mais "
"ces modules doivent être installé dans, par exemple, :file:`/mnt/{@server}/"
"export/lib/python2.{X}`.Ça peut être fait avec : ::"
"Une autre possibilité est un système de fichiers réseau où le nom utilisé "
"pour écrire dans un dossier distant est différent du nom utilisé pour le "
"lire : par exemple, linterpréteur Python auquel on accède par :file:`/usr/"
"local/bin/python` peut chercher les modules dans :file:`/usr/local/lib/"
"python2.{X}`, mais ces modules doivent être installés dans, par exemple, :"
"file:`/mnt/{@server}/export/lib/python2.{X}`. Ça peut être fait avec ::"
#: ../Doc/install/index.rst:460
msgid ""
@ -905,12 +912,13 @@ msgid ""
"follows:"
msgstr ""
"Dans les deux cas, loption :option:`!--prefix` définit la base de "
"linstallation, et loption :option:`!--exec-prefix` définit la base "
"dinstallation spécifique à la plateforme, qui est utilisé pour des fichiers "
"spécifiques à la plateforme. (Actuellement, ça ne signifie que les "
"distributions de modules non-purs, mais peuvent être étendus aux "
"bibliothèques C, exécutables, etc.). Si :option:`!--exec-prefix` nest pas "
"fourni, il vaut par défaut :option:`!--prefix`. Les fichiers sont ainsi : ::"
"linstallation et loption :option:`!--exec-prefix` définit la base "
"dinstallation spécifique à la plateforme, qui est utilisée pour des "
"fichiers spécifiques à la plateforme (actuellement, ça ne concerne que les "
"distributions de modules non-purs, mais cela pourrait être étendu aux "
"bibliothèques C, exécutables, etc.). Si l'option :option:`!--exec-prefix` "
"nest pas fournie, elle vaut par défaut :option:`!--prefix`. Les fichiers "
"sont installés ainsi :"
#: ../Doc/install/index.rst:470 ../Doc/install/index.rst:547
msgid "Python modules"
@ -977,18 +985,18 @@ msgstr ""
"aucun effet sur la façon dont ces extensions sont construites. En "
"particulier, les fichiers en-têtes de Python (:file:`Python.h` et ses amis) "
"installés avec linterpréteur Python utilisé pour exécuter le script *setup* "
"sera utilisé pour compiler les extensions. Il est de votre responsabilité de "
"vous assurer que linterpréteur utilisé pour pour exécuter les extensions "
"seront utilisés pour compiler les extensions. Il est de votre responsabilité "
"de vous assurer que linterpréteur utilisé pour exécuter les extensions "
"installées de cette façon est compatible avec celui utilisé pour les "
"compiler. La meilleure façon pour cela est de sassurer quils sont "
"exactement la même version de Python (possiblement des compilations "
"différentes, ou différentes copies de la même). (Évidemment, si vos :option:"
"`!--prefix` et :option:`!--exec-prefix` ne pointent pas vers une "
"installation alternative de Python, cela na pas de sens."
"installation alternative de Python, cela na pas de sens.)"
#: ../Doc/install/index.rst:503
msgid "Alternate installation: Windows (the prefix scheme)"
msgstr ""
msgstr "Installation alternative : Windows (le schéma de préfixe)"
#: ../Doc/install/index.rst:505
msgid ""
@ -997,12 +1005,18 @@ msgid ""
"`!--prefix` option has traditionally been used to install additional "
"packages in separate locations on Windows. ::"
msgstr ""
"Windows n'a pas de concept de répertoire utilisateur, et comme "
"l'installation standard de Python sur Windows est plus simple que sur Unix, "
"l':option:`!--prefix` option a traditionnellement été utilisée pour "
"installer des paquets supplémentaires à des endroits séparés sur Windows. ::"
#: ../Doc/install/index.rst:512
msgid ""
"to install modules to the :file:`\\\\Temp\\\\Python` directory on the "
"current drive."
msgstr ""
"pour installer des modules dans le dossier :file:`\\\\Temp\\\\Python` du "
"disque courant."
#: ../Doc/install/index.rst:514
msgid ""
@ -1011,10 +1025,14 @@ msgid ""
"that pure Python modules and extension modules are installed into the same "
"location. Files are installed as follows:"
msgstr ""
"Le dossier racine de l'installation est défini par l'option :option:`!--"
"prefix`. L'option :option:`!--exec-prefix` n'est pas gérée sur Windows, ce "
"qui signifie que les modules Python et les modules d'extension sont "
"installés au même endroit. Les fichiers sont installés selon ce tableau :"
#: ../Doc/install/index.rst:523
msgid ":file:`{prefix}\\\\Scripts`"
msgstr ""
msgstr ":file:`{prefix}\\\\Scripts`"
#: ../Doc/install/index.rst:525
msgid ":file:`{prefix}\\\\Include\\\\{distname}`"
@ -1022,7 +1040,7 @@ msgstr ":file:`{prefix}\\\\Include\\\\{distname}`"
#: ../Doc/install/index.rst:532
msgid "Custom Installation"
msgstr ""
msgstr "Installation personnalisée"
#: ../Doc/install/index.rst:534
msgid ""
@ -1032,6 +1050,12 @@ msgid ""
"directory, or you might want to completely redefine the installation "
"scheme. In either case, you're creating a *custom installation scheme*."
msgstr ""
"Parfois, les procédés d'installation alternatifs décrits dans la section :"
"ref:`inst-alt-install` ne font pas ce que vous attendiez. Vous pourriez "
"vouloir modifier seulement un ou deux répertoires en conservant tout le "
"reste sous la même racine, ou vouloir redéfinir l'ensemble du procédé "
"d'installation. Quel que soit le cas, vous créez ainsi un *procédé "
"d'installation personnalisé*."
#: ../Doc/install/index.rst:540
msgid ""
@ -1039,38 +1063,41 @@ msgid ""
"schemes and override some of the installation directories used for the "
"various types of files, using these options:"
msgstr ""
"Pour créer un modèle d'installation personnalisé, partez d'un modèle "
"alternatif et remplacez les dossiers d'installation de types de fichiers "
"donnés via ces options :"
#: ../Doc/install/index.rst:545
msgid "Override option"
msgstr ""
msgstr "Option"
#: ../Doc/install/index.rst:547
msgid "``--install-purelib``"
msgstr ""
msgstr "``--install-purelib``"
#: ../Doc/install/index.rst:548
msgid "``--install-platlib``"
msgstr ""
msgstr "``--install-platlib``"
#: ../Doc/install/index.rst:549
msgid "all modules"
msgstr ""
msgstr "tous les modules"
#: ../Doc/install/index.rst:549
msgid "``--install-lib``"
msgstr ""
msgstr "``--install-lib``"
#: ../Doc/install/index.rst:550
msgid "``--install-scripts``"
msgstr ""
msgstr "``--install-scripts``"
#: ../Doc/install/index.rst:551
msgid "``--install-data``"
msgstr ""
msgstr "``--install-data``"
#: ../Doc/install/index.rst:552
msgid "``--install-headers``"
msgstr ""
msgstr "``--install-headers``"
#: ../Doc/install/index.rst:555
msgid ""
@ -1142,7 +1169,7 @@ msgstr ""
#: ../Doc/install/index.rst:613
msgid "or, equivalently, ::"
msgstr "ou : ::"
msgstr "ou ::"
#: ../Doc/install/index.rst:621
msgid ""

View File

@ -49,7 +49,7 @@ msgid ""
msgstr ""
"Cela permet aux utilisateurs de Python de partager et de collaborer "
"efficacement, bénéficiant des solutions que les autres ont déjà crées pour "
"résoudre les problèmes communs (ou même, parfois, rares !), aussi que de "
"résoudre les problèmes communs (ou même, parfois, rares !), aussi que de "
"partager leurs propres solutions à tous."
#: ../Doc/installing/index.rst:20
@ -70,7 +70,7 @@ msgid ""
"the distribution and installation tools provided with Python."
msgstr ""
"Pour les entreprises et autres institutions, gardez en tête que certaines "
"organisations ont leur propres règles sur l'utilisation et la contribution "
"organisations ont leurs propres règles sur l'utilisation et la contribution "
"au logiciel libre. Prenez ces règles en compte lorsque vous utilisez les "
"outils de distribution et d'installation fournis par Python."
@ -155,7 +155,7 @@ msgstr ""
"``distutils`` est le premier système de construction et de distribution "
"ajouté à la bibliothèque standard en 1998. Bien que l'utilisation directe de "
"``distutils`` soit progressivement supprimée, elle reste le fondement de "
"l'infrastructure actuelle de construction de paquet et de distribution. Au "
"l'infrastructure actuelle de construction de paquet et de distribution. Au-"
"delà de rester dans la bibliothèque standard, son nom vit aussi sous "
"d'autres formes, tel que la liste de diffusion utilisée pour coordonner le "
"développement et les standards de la création de paquet."
@ -174,7 +174,7 @@ msgstr ""
msgid ""
"The use of ``venv`` is now recommended for creating virtual environments."
msgstr ""
"L'utilisation de ``venv`` est maintenant recommandée pour créer vos "
"L'utilisation de ``venv`` est maintenant recommandée pour créer vos "
"environnements virtuels."
#: ../Doc/installing/index.rst:75
@ -244,7 +244,7 @@ msgid ""
msgstr ""
"Normalement, si un module approprié est déjà installé, l'installer à nouveau "
"n'aura aucun effet. La mise à jour de modules existants doit être demandée "
"explicitement : ::"
"explicitement ::"
#: ../Doc/installing/index.rst:113
msgid ""
@ -275,7 +275,7 @@ msgstr ""
#: ../Doc/installing/index.rst:127
msgid "How do I ...?"
msgstr "Comment puis-je ...?"
msgstr "Comment puis-je … ?"
#: ../Doc/installing/index.rst:129
msgid "These are quick answers or links for some common tasks."
@ -285,7 +285,7 @@ msgstr ""
#: ../Doc/installing/index.rst:132
msgid "... install ``pip`` in versions of Python prior to Python 3.4?"
msgstr ""
"... Installer ``pip`` avec une version de Python antérieures à la 3.4 ?"
"... Installer ``pip`` avec une version de Python antérieures à la 3.4 ?"
#: ../Doc/installing/index.rst:134
msgid ""
@ -308,7 +308,7 @@ msgstr ""
#: ../Doc/installing/index.rst:147
msgid "... install packages just for the current user?"
msgstr "... Installer des paquets juste pour l'utilisateur actuel ?"
msgstr "... Installer des paquets juste pour l'utilisateur actuel ?"
#: ../Doc/installing/index.rst:149
msgid ""
@ -321,7 +321,7 @@ msgstr ""
#: ../Doc/installing/index.rst:154
msgid "... install scientific Python packages?"
msgstr "... Installer des paquets Python scientifiques ?"
msgstr "... Installer des paquets Python scientifiques ?"
#: ../Doc/installing/index.rst:156
msgid ""
@ -349,7 +349,7 @@ msgstr ""
#: ../Doc/installing/index.rst:169
msgid "... work with multiple versions of Python installed in parallel?"
msgstr ""
"... Travailler avec plusieurs versions de Python installés en parallèle ?"
"... Travailler avec plusieurs versions de Python installés en parallèle ?"
#: ../Doc/installing/index.rst:171
msgid ""
@ -359,7 +359,7 @@ msgid ""
msgstr ""
"Sous Linux, Max OS X et autres systèmes POSIX, utiliser les commandes Python "
"de la version souhaitée en combinaison avec l'option ``-m`` permet de lancer "
"la version appropriée de ``pip`` : ::"
"la version appropriée de ``pip`` ::"
#: ../Doc/installing/index.rst:180
msgid "Appropriately versioned ``pip`` commands may also be available."
@ -391,7 +391,7 @@ msgid ""
"package manager and other components of the system if a component is "
"unexpectedly upgraded using ``pip``."
msgstr ""
"Sur les systèmes Linux, une installation de Python sera généralement inclue "
"Sur les systèmes Linux, une installation de Python sera généralement incluse "
"dans le cadre de la distribution. Installer dans cette installation de "
"Python nécessite un accès *root* sur le système, et peut interférer avec le "
"fonctionnement du gestionnaire de paquets du système et d'autres composants "
@ -409,7 +409,7 @@ msgstr ""
#: ../Doc/installing/index.rst:215
msgid "Pip not installed"
msgstr "Pip n'est pas installé"
msgstr "``Pip`` n'est pas installé"
#: ../Doc/installing/index.rst:217
msgid ""
@ -417,7 +417,7 @@ msgid ""
"fix is::"
msgstr ""
"Il est possible que ``pip`` ne soit pas installé par défaut. Une solution "
"est : ::"
"est ::"
#: ../Doc/installing/index.rst:221
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/2to3.rst:4
msgid "2to3 - Automated Python 2 to 3 code translation"
msgstr "*2to3* --- Traduction automatique de code en Python 2 vers Python 3"
msgstr "*2to3* Traduction automatique de code en Python 2 vers Python 3"
#: ../Doc/library/2to3.rst:8
msgid ""
@ -86,7 +86,7 @@ msgstr ""
#: ../Doc/library/2to3.rst:51
msgid "After transformation, :file:`example.py` looks like this::"
msgstr "Après transformation, :file:`example.py` ressemble à : ::"
msgstr "Après transformation, :file:`example.py` ressemble à ::"
#: ../Doc/library/2to3.rst:59
msgid ""
@ -108,7 +108,7 @@ msgstr ""
"fixers>`. L'option :option:`!-l` énumère tous les correcteurs disponibles. "
"Un ensemble explicite de correcteurs à exécuter peut être donné avec :option:"
"`!-f`. De même, :option:`!-x` désactive explicitement un correcteur. "
"L'exemple suivant exécute uniquement les ``imports`` et les correcteurs "
"L'exemple suivant exécute uniquement les ``import`` et les correcteurs "
"``has_key`` :"
#: ../Doc/library/2to3.rst:70
@ -385,8 +385,8 @@ msgid ""
msgstr ""
"Fixe les méthodes d'itération sur les dictionnaires. :meth:`dict.iteritems` "
"est converti en :meth:`dict.items`, :meth:`dict.iterkeys` en :meth:`dict."
"keys` et :meth:`dict.itervalues` en :meth:`dict.values`. Similarly, :meth:"
"`dict.viewitems`, :meth:`dict.viewkeys` et :meth:`dict.viewvalues` sont "
"keys` et :meth:`dict.itervalues` en :meth:`dict.values`. De la même façon, :"
"meth:`dict.viewitems`, :meth:`dict.viewkeys` et :meth:`dict.viewvalues` sont "
"convertis respectivement en :meth:`dict.items`, :meth:`dict.keys` et :meth:"
"`dict.values`. Il encapsule également les usages existants de :meth:`dict."
"items`, :meth:`dict.keys` et :meth:`dict.values` dans un appel à :class:"
@ -457,11 +457,12 @@ msgstr ""
#: ../Doc/library/2to3.rst:262
msgid "is changed to ::"
msgstr "est transformé en : ::"
msgstr "est transformé en ::"
#: ../Doc/library/2to3.rst:268
msgid "Detects sibling imports and converts them to relative imports."
msgstr "Détecte les imports voisins et les convertis en imports relatifs."
msgstr ""
"Détecte les importations voisines et les convertit en importations relatives."
#: ../Doc/library/2to3.rst:272
msgid "Handles module renames in the standard library."
@ -502,9 +503,9 @@ msgid ""
"func:`itertools.imap`. Imports of :func:`itertools.ifilterfalse` are also "
"changed to :func:`itertools.filterfalse`."
msgstr ""
"Supprime les imports de :func:`itertools.ifilter`, :func:`itertools.izip` "
"et :func:`itertools.imap`. Les imports de :func:`itertools.ifilterfalse` "
"sont aussi changés en :func:`itertools.filterfalse`."
"Supprime les importations de :func:`itertools.ifilter`, :func:`itertools."
"izip` et :func:`itertools.imap`. Les importations de :func:`itertools."
"ifilterfalse` sont aussi changées en :func:`itertools.filterfalse`."
#: ../Doc/library/2to3.rst:302
msgid ""
@ -763,7 +764,7 @@ msgstr ""
#: ../Doc/library/2to3.rst:456
msgid ":mod:`lib2to3` - 2to3's library"
msgstr ":mod:`lib2to3` --- la bibliothèque de *2to3*"
msgstr ":mod:`lib2to3` la bibliothèque de *2to3*"
#: ../Doc/library/2to3.rst:465
msgid "**Source code:** :source:`Lib/lib2to3/`"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/__future__.rst:2
msgid ":mod:`__future__` --- Future statement definitions"
msgstr ":mod:`__future__` --- Définitions des futurs"
msgstr ":mod:`__future__` Définitions des futurs"
#: ../Doc/library/__future__.rst:7
msgid "**Source code:** :source:`Lib/__future__.py`"
@ -28,12 +28,15 @@ msgstr "**Source code:** :source:`Lib/_future_.py`"
#: ../Doc/library/__future__.rst:11
msgid ":mod:`__future__` is a real module, and serves three purposes:"
msgstr ""
"Le module :mod:`__future__` est un vrai module, et il a trois objectifs :"
#: ../Doc/library/__future__.rst:13
msgid ""
"To avoid confusing existing tools that analyze import statements and expect "
"to find the modules they're importing."
msgstr ""
"éviter de dérouter les outils existants qui analysent les instructions "
"d'importation et s'attendent à trouver les modules qu'ils importent ;"
#: ../Doc/library/__future__.rst:16
msgid ""
@ -41,6 +44,10 @@ msgid ""
"2.1 at least yield runtime exceptions (the import of :mod:`__future__` will "
"fail, because there was no module of that name prior to 2.1)."
msgstr ""
"s'assurer que les :ref:`instructions *future* <future>` lancées sous les "
"versions antérieures à 2.1 lèvent au moins des exceptions à l'exécution "
"(limportation du module :mod:`__future__` échoue, car il ny avait pas de "
"module de ce nom avant 2.1) ;"
#: ../Doc/library/__future__.rst:20
msgid ""
@ -49,22 +56,31 @@ msgid ""
"and can be inspected programmatically via importing :mod:`__future__` and "
"examining its contents."
msgstr ""
"Pour documenter le phasage de changements entraînant des incompatibilités : "
"introduction, utilisation obligatoire. Il sagit dune forme de "
"documentation exécutable, qui peut être inspectée par un programme en "
"important :mod:`__future__` et en examinant son contenu."
#: ../Doc/library/__future__.rst:25
msgid "Each statement in :file:`__future__.py` is of the form::"
msgstr ""
msgstr "Chaque instruction dans :file:`__future__.py` est de la forme ::"
#: ../Doc/library/__future__.rst:31
msgid ""
"where, normally, *OptionalRelease* is less than *MandatoryRelease*, and both "
"are 5-tuples of the same form as :data:`sys.version_info`::"
msgstr ""
"où, normalement, *OptionalRelease* est inférieur à *MandatoryRelease*, et "
"les deux sont des quintuplets de la même forme que :data:`sys."
"version_info` ::"
#: ../Doc/library/__future__.rst:41
msgid ""
"*OptionalRelease* records the first release in which the feature was "
"accepted."
msgstr ""
"*OptionalRelease* enregistre la première version dans laquelle la "
"fonctionnalité a été acceptée."
#: ../Doc/library/__future__.rst:43
msgid ""
@ -72,6 +88,9 @@ msgid ""
"*MandatoryRelease* predicts the release in which the feature will become "
"part of the language."
msgstr ""
"Dans le cas d'un *MandatoryRelease* qui n'a pas encore eu lieu, "
"*MandatoryRelease* prédit la *release* dans laquelle la fonctionnalité "
"deviendra un élément du langage."
#: ../Doc/library/__future__.rst:47
msgid ""
@ -80,18 +99,26 @@ msgid ""
"statement to use the feature in question, but may continue to use such "
"imports."
msgstr ""
"Sinon *MandatoryRelease* enregistre lorsque la fonctionnalité est devenue "
"une partie du langage ; dans cette version ou les suivantes, les modules "
"n'ont plus besoin d'une déclaration *future* pour utiliser la fonctionnalité "
"en question, mais ils peuvent continuer à utiliser ces importations."
#: ../Doc/library/__future__.rst:51
msgid ""
"*MandatoryRelease* may also be ``None``, meaning that a planned feature got "
"dropped."
msgstr ""
"*MandatoryRelease* peut également être ``None``, ce qui signifie qu'une "
"fonction planifiée a été abandonnée."
#: ../Doc/library/__future__.rst:54
msgid ""
"Instances of class :class:`_Feature` have two corresponding methods, :meth:"
"`getOptionalRelease` and :meth:`getMandatoryRelease`."
msgstr ""
"Les instances de classe :class:`_Feature` ont deux méthodes "
"correspondantes, :meth:`getOptionalRelease` et :meth:`getMandatoryRelease`."
#: ../Doc/library/__future__.rst:57
msgid ""
@ -100,6 +127,11 @@ msgid ""
"dynamically compiled code. This flag is stored in the :attr:`compiler_flag` "
"attribute on :class:`_Feature` instances."
msgstr ""
"*CompilerFlag* est un drapeau (chaque bit représente un champ) qui doit être "
"passé en tant que quatrième argument à la fonction native :func:`compile` "
"pour activer la fonctionnalité dans le code compilé dynamiquement. Cet "
"indicateur est stocké dans l'attribut :attr:`compiler_flag` dans les "
"instances de :class:`_Feature`."
#: ../Doc/library/__future__.rst:62
msgid ""
@ -141,7 +173,7 @@ msgstr "2.2"
#: ../Doc/library/__future__.rst:69
msgid ":pep:`227`: *Statically Nested Scopes*"
msgstr ":pep:`227`: *Statically Nested Scopes*"
msgstr ":pep:`227` : *Portées imbriquées*"
#: ../Doc/library/__future__.rst:72
msgid "generators"
@ -157,7 +189,7 @@ msgstr "2.3"
#: ../Doc/library/__future__.rst:72
msgid ":pep:`255`: *Simple Generators*"
msgstr ":pep:`255` : *Générateurs simples*"
msgstr ":pep:`255` : *Générateurs simples*"
#: ../Doc/library/__future__.rst:75
msgid "division"
@ -174,7 +206,7 @@ msgstr "3.0"
#: ../Doc/library/__future__.rst:75
msgid ":pep:`238`: *Changing the Division Operator*"
msgstr ":pep:`328` : *Changer l'opérateur de division*"
msgstr ":pep:`238` : *Changement de l'opérateur de division*"
#: ../Doc/library/__future__.rst:78
msgid "absolute_import"
@ -187,6 +219,8 @@ msgstr "2.5.0a1"
#: ../Doc/library/__future__.rst:78
msgid ":pep:`328`: *Imports: Multi-Line and Absolute/Relative*"
msgstr ""
":pep:`328` : *Importations : multilignes et absolues/relatives* (ressource "
"en anglais)"
#: ../Doc/library/__future__.rst:81
msgid "with_statement"
@ -198,7 +232,7 @@ msgstr "2.6"
#: ../Doc/library/__future__.rst:81
msgid ":pep:`343`: *The \"with\" Statement*"
msgstr ":pep:`343` : *L'instruction \"with\"*"
msgstr ":pep:`343` : *L'instruction \"with\"*"
#: ../Doc/library/__future__.rst:84
msgid "print_function"
@ -210,7 +244,7 @@ msgstr "2.6.0a2"
#: ../Doc/library/__future__.rst:84
msgid ":pep:`3105`: *Make print a function*"
msgstr ":pep:`3105`: *Make print a function*"
msgstr ":pep:`3105` : *Transformation de print en fonction*"
#: ../Doc/library/__future__.rst:87
msgid "unicode_literals"
@ -218,7 +252,7 @@ msgstr "unicode_literals"
#: ../Doc/library/__future__.rst:87
msgid ":pep:`3112`: *Bytes literals in Python 3000*"
msgstr ":pep:`3112` : *Obtets littéraux en Python 3000*"
msgstr ":pep:`3112` : *Chaînes d'octets littéraux en Python 3000*"
#: ../Doc/library/__future__.rst:90
msgid "generator_stop"
@ -235,6 +269,7 @@ msgstr "3.7"
#: ../Doc/library/__future__.rst:90
msgid ":pep:`479`: *StopIteration handling inside generators*"
msgstr ""
":pep:`479` : *Gestion de *StopIteration* à lintérieur des générateurs*"
#: ../Doc/library/__future__.rst:97
msgid ":ref:`future`"
@ -242,7 +277,7 @@ msgstr ":ref:`future`"
#: ../Doc/library/__future__.rst:98
msgid "How the compiler treats future imports."
msgstr "Comment le compilateur gère les imports du futur."
msgstr "Comment le compilateur gère les importations « futures »."
#, fuzzy
#~ msgid "future"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/__main__.rst:3
msgid ":mod:`__main__` --- Top-level script environment"
msgstr ":mod:`__main__` --- Point d'entrée des scripts"
msgstr ":mod:`__main__` Point d'entrée des scripts"
#: ../Doc/library/__main__.rst:10
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/_thread.rst:2
msgid ":mod:`_thread` --- Low-level threading API"
msgstr ":mod:`_thread` --- API bas niveau de gestion de fils d'exécution"
msgstr ":mod:`_thread` API bas niveau de gestion de fils d'exécution"
#: ../Doc/library/_thread.rst:15
msgid ""
@ -30,6 +30,13 @@ msgid ""
"provided. The :mod:`threading` module provides an easier to use and higher-"
"level threading API built on top of this module."
msgstr ""
"Ce module fournit les primitives de bas niveau pour travailler avec de "
"multiples fils d'exécution (aussi appelés :dfn:`light-weight processes` ou :"
"dfn:`tasks`) — plusieurs fils d'exécution de contrôle partagent leur espace "
"de données global. Pour la synchronisation, de simples verrous (aussi "
"appelés des :dfn:`mutexes` ou des :dfn:`binary semaphores`) sont fournis. Le "
"module :mod:`threading` fournit une API de fils d'exécution de haut niveau, "
"plus facile à utiliser et construite à partir de ce module."
#: ../Doc/library/_thread.rst:26
msgid ""
@ -46,7 +53,7 @@ msgstr "Elle définit les constantes et fonctions suivantes :"
#: ../Doc/library/_thread.rst:37
msgid "Raised on thread-specific errors."
msgstr "Levée lors d'erreur spécifique aux fils d'exécution."
msgstr "Levée lors d'erreurs spécifiques aux fils d'exécution."
#: ../Doc/library/_thread.rst:39
msgid "This is now a synonym of the built-in :exc:`RuntimeError`."
@ -55,7 +62,7 @@ msgstr ""
#: ../Doc/library/_thread.rst:45
msgid "This is the type of lock objects."
msgstr "C'est le type des verrous."
msgstr "C'est le type d'objets verrous."
#: ../Doc/library/_thread.rst:50
msgid ""
@ -66,6 +73,14 @@ msgid ""
"terminates with an unhandled exception, a stack trace is printed and then "
"the thread exits (but other threads continue to run)."
msgstr ""
"Démarre un nouveau fils d'exécution et renvoie son identifiant. Ce fil "
"d'exécution exécute la fonction *function* avec la liste d'arguments *args* "
"(qui doit être un *tuple*). L'argument optionnel *kwargs* spécifie un "
"dictionnaire d'arguments de mots clés. Quand la fonction se termine, le fil "
"d'exécution se termine silencieusement. Quand la fonction termine avec une "
"exception non gérée, une trace de la pile est affichée et ensuite le fil "
"d'exécution s'arrête (mais les autres fils d'exécutions continuent de "
"s'exécuter)."
#: ../Doc/library/_thread.rst:60
msgid ""
@ -78,14 +93,16 @@ msgid ""
"Raise the :exc:`SystemExit` exception. When not caught, this will cause the "
"thread to exit silently."
msgstr ""
"Lève une exception :exc:`SystemExit`. Quand elle n'est pas interceptée, le "
"fil d'exécution se terminera silencieusement."
#: ../Doc/library/_thread.rst:80
msgid ""
"Return a new lock object. Methods of locks are described below. The lock "
"is initially unlocked."
msgstr ""
"Renvoie un nouvel objet *lock*. Les méthodes de l'objet *lock* sont décrites "
"ci-après. Le *lock* est initialement déverrouillé."
"Renvoie un nouveau verrou. Les méthodes des verrous sont décrites ci-"
"dessous. Le verrou est initialement déverrouillé."
#: ../Doc/library/_thread.rst:86
msgid ""
@ -95,6 +112,12 @@ msgid ""
"identifiers may be recycled when a thread exits and another thread is "
"created."
msgstr ""
"Renvoie l'« identifiant de fil » du fil d'exécution courant. C'est un "
"entier non nul. Sa valeur n'a pas de signification directe ; il est destiné "
"à être utilisé comme *cookie* magique, par exemple pour indexer un "
"dictionnaire de données pour chaque fil. Les identifiants de fils peuvent "
"être recyclés lorsqu'un fil d'exécution se termine et qu'un autre fil est "
"créé."
#: ../Doc/library/_thread.rst:94
msgid ""
@ -122,12 +145,12 @@ msgid ""
"`OverflowError`."
msgstr ""
"La valeur maximale autorisée pour le paramètre *timeout* de la méthode :"
"meth:`Lock.acquire`. Donner un délai d'attente supérieur à cette valeur lève "
"une :exc:`OverflowError`."
"meth:`Lock.acquire`. Préciser un délai d'attente supérieur à cette valeur "
"lève une exception :exc:`OverflowError`."
#: ../Doc/library/_thread.rst:120
msgid "Lock objects have the following methods:"
msgstr "Les verrous (`lock objects`) ont les méthodes suivantes :"
msgstr "Les verrous ont les méthodes suivantes :"
#: ../Doc/library/_thread.rst:125
msgid ""
@ -136,6 +159,10 @@ msgid ""
"(only one thread at a time can acquire a lock --- that's their reason for "
"existence)."
msgstr ""
"Sans aucun argument optionnel, cette méthode acquiert le verrou "
"inconditionnellement, et si nécessaire attend jusqu'à ce qu'il soit relâché "
"par un autre fil d'exécution (un seul fil d'exécution à la fois peut "
"acquérir le verrou — c'est leur raison d'être)."
#: ../Doc/library/_thread.rst:129
msgid ""
@ -144,6 +171,10 @@ msgid ""
"immediately without waiting, while if it is nonzero, the lock is acquired "
"unconditionally as above."
msgstr ""
"Si l'argument *waitflag*, un entier, est présent, l'action dépend de sa "
"valeur : si elle est de zéro, le verrou est seulement acquis s'il peut être "
"acquis immédiatement, sans attendre, sinon le verrou est acquis "
"inconditionnellement comme ci-dessus."
#: ../Doc/library/_thread.rst:134
msgid ""
@ -152,12 +183,18 @@ msgid ""
"*timeout* argument specifies an unbounded wait. You cannot specify a "
"*timeout* if *waitflag* is zero."
msgstr ""
"Si l'argument *timeout*, en virgule flottante, est présent et positif, il "
"spécifie le temps d'attente maximum en secondes avant de renvoyer. Un "
"argument *timeout* négatif spécifie une attente illimitée. Vous ne pouvez "
"pas spécifier un *timeout* si *waitflag* est à zéro."
#: ../Doc/library/_thread.rst:139
msgid ""
"The return value is ``True`` if the lock is acquired successfully, ``False`` "
"if not."
msgstr ""
"La valeur renvoyée est ``True`` si le verrou est acquis avec succès, sinon "
"``False``."
#: ../Doc/library/_thread.rst:142
msgid "The *timeout* parameter is new."
@ -166,24 +203,31 @@ msgstr "Le paramètre *timeout* est nouveau."
#: ../Doc/library/_thread.rst:145
msgid "Lock acquires can now be interrupted by signals on POSIX."
msgstr ""
"Le verrou acquis peut maintenant être interrompu par des signaux sur POSIX."
#: ../Doc/library/_thread.rst:151
msgid ""
"Releases the lock. The lock must have been acquired earlier, but not "
"necessarily by the same thread."
msgstr ""
"Relâche le verrou. Le verrou doit avoir été acquis plus tôt, mais pas "
"nécessairement par le même fil d'exécution."
#: ../Doc/library/_thread.rst:157
msgid ""
"Return the status of the lock: ``True`` if it has been acquired by some "
"thread, ``False`` if not."
msgstr ""
"Renvoie le statut du verrou : ``True`` s'il a été acquis par certains fils "
"d'exécution, sinon ``False``."
#: ../Doc/library/_thread.rst:160
msgid ""
"In addition to these methods, lock objects can also be used via the :keyword:"
"`with` statement, e.g.::"
msgstr ""
"En plus de ces méthodes, les objets verrous peuvent aussi être utilisés via "
"l'instruction :keyword:`with`, e.g. ::"
#: ../Doc/library/_thread.rst:170
msgid "**Caveats:**"
@ -195,12 +239,18 @@ msgid ""
"exception will be received by an arbitrary thread. (When the :mod:`signal` "
"module is available, interrupts always go to the main thread.)"
msgstr ""
"Les fils d'exécution interagissent étrangement avec les interruptions : "
"l'exception :exc:`KeyboardInterrupt` sera reçue par un fil d'exécution "
"arbitraire. (Quand le module :mod:`signal` est disponible, les interruptions "
"vont toujours au fil d'exécution principal)."
#: ../Doc/library/_thread.rst:178
msgid ""
"Calling :func:`sys.exit` or raising the :exc:`SystemExit` exception is "
"equivalent to calling :func:`_thread.exit`."
msgstr ""
"Appeler la fonction :func:`sys.exit` ou lever l'exception :exc:`SystemExit` "
"est équivalent à appeler la fonction :func:`_thread.exit`."
#: ../Doc/library/_thread.rst:181
msgid ""
@ -208,6 +258,9 @@ msgid ""
"the :exc:`KeyboardInterrupt` exception will happen after the lock has been "
"acquired."
msgstr ""
"Il n'est pas possible d'interrompre la méthode :meth:`acquire` sur un verrou "
"— l'exception :exc:`KeyboardInterrupt` surviendra après que le verrou a été "
"acquis."
#: ../Doc/library/_thread.rst:184
msgid ""
@ -215,6 +268,10 @@ msgid ""
"survive. On most systems, they are killed without executing :keyword:"
"`try` ... :keyword:`finally` clauses or executing object destructors."
msgstr ""
"Quand le fil d'exécution principal s'arrête, il est défini par le système si "
"les autres fils d'exécution survivent. Sur beaucoup de systèmes, ils sont "
"tués sans l'exécution des clauses :keyword:`try`… :keyword:`finally` ou "
"l'exécution des destructeurs d'objets."
#: ../Doc/library/_thread.rst:189
msgid ""
@ -222,3 +279,6 @@ msgid ""
"that :keyword:`try` ... :keyword:`finally` clauses are honored), and the "
"standard I/O files are not flushed."
msgstr ""
"Quand le fil d'exécution principal s'arrête, il ne fait pas son nettoyage "
"habituel (excepté que les clauses :keyword:`try`… :keyword:`finally` sont "
"honorées) et les fichiers d'entrée/sortie standards ne sont pas nettoyés."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/abc.rst:2
msgid ":mod:`abc` --- Abstract Base Classes"
msgstr ":mod:`abc` --- Classes de Base Abstraites"
msgstr ":mod:`abc` Classes de Base Abstraites"
#: ../Doc/library/abc.rst:11
msgid "**Source code:** :source:`Lib/abc.py`"
@ -73,7 +73,7 @@ msgid ""
msgstr ""
"Classe d'aide qui a :class:`ABCMeta` pour métaclasse. Avec cette classe, une "
"ABC peut être créée simplement en héritant de :class:`ABC` , ce qui permet "
"d'éviter l'utilisation parfois déroutante de métaclasse, par exemple : ::"
"d'éviter l'utilisation parfois déroutante de métaclasse, par exemple ::"
#: ../Doc/library/abc.rst:41
msgid ""
@ -88,7 +88,7 @@ msgstr ""
"concernant l'utilisation de métaclasses : l'utilisation d'héritage multiple "
"peut entrainer des conflits de métaclasses. Il est également possible de "
"définir une ABC en passant l'argument nommé *metaclass* et en utilisant :"
"class:`ABCMeta` directement, par exemple : ::"
"class:`ABCMeta` directement, par exemple ::"
#: ../Doc/library/abc.rst:57
msgid "Metaclass for defining Abstract Base Classes (ABCs)."
@ -129,7 +129,7 @@ msgid ""
"Register *subclass* as a \"virtual subclass\" of this ABC. For example::"
msgstr ""
"Enregistrer *subclass* en tant que sous-classe virtuelle de cette ABC. Par "
"exemple : ::"
"exemple ::"
#: ../Doc/library/abc.rst:85
msgid "Returns the registered subclass, to allow usage as a class decorator."
@ -188,7 +188,7 @@ msgid ""
"For a demonstration of these concepts, look at this example ABC definition::"
msgstr ""
"Pour une illustration de ces concepts, voir cet exemple de définition de "
"ABC : ::"
"ABC ::"
#: ../Doc/library/abc.rst:143
msgid ""
@ -280,7 +280,7 @@ msgid ""
msgstr ""
"Quand le décorateur :func:`abstractmethod` est utilisé en même temps que "
"d'autres descripteurs de méthodes, il doit être appliqué en tant que "
"décorateur le plus interne. Voir les exemples d'utilisation suivants : ::"
"décorateur le plus interne. Voir les exemples d'utilisation suivants ::"
#: ../Doc/library/abc.rst:216
msgid ""
@ -339,7 +339,7 @@ msgid ""
msgstr ""
"Ce cas spécial est obsolète car le décorateur :func:`classmethod` est "
"désormais correctement identifié comme abstrait quand il est appliqué à une "
"méthode abstraite : ::"
"méthode abstraite ::"
#: ../Doc/library/abc.rst:265
msgid ""
@ -365,7 +365,7 @@ msgid ""
msgstr ""
"Ce cas spécial est obsolète car le décorateur :func:`staticmethod` est "
"désormais correctement identifié comme abstrait quand appliqué à une méthode "
"abstraite : ::"
"abstraite ::"
#: ../Doc/library/abc.rst:285
msgid ""
@ -389,7 +389,7 @@ msgid ""
msgstr ""
"Ce cas spécial est obsolète car le décorateur :func:`property` est désormais "
"correctement identifié comme abstrait quand appliqué à une méthode "
"abstraite : ::"
"abstraite ::"
#: ../Doc/library/abc.rst:303
msgid ""
@ -399,7 +399,7 @@ msgid ""
msgstr ""
"L'exemple ci-dessus définit une propriété en lecture seule. Vous pouvez "
"également définir une propriété en lecture-écriture abstraite en indiquant "
"une ou plusieurs des méthodes sous-jacentes comme abstraite : ::"
"une ou plusieurs des méthodes sous-jacentes comme abstraite ::"
#: ../Doc/library/abc.rst:317
msgid ""
@ -408,7 +408,7 @@ msgid ""
msgstr ""
"Si seuls certains composants sont abstraits, seuls ces composants abstraits "
"nécessitent d'être mis à jour pour créer une propriété concrète dans une "
"sous-classe : ::"
"sous-classe ::"
#: ../Doc/library/abc.rst:326
msgid "The :mod:`abc` module also provides the following functions:"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/aifc.rst:2
msgid ":mod:`aifc` --- Read and write AIFF and AIFC files"
msgstr ":mod:`aifc` --- Lis et écrit dans les fichiers AIFF et AIFC"
msgstr ":mod:`aifc` Lis et écrit dans les fichiers AIFF et AIFC"
#: ../Doc/library/aifc.rst:7
msgid "**Source code:** :source:`Lib/aifc.py`"
@ -72,7 +72,7 @@ msgstr ""
#: ../Doc/library/aifc.rst:50
msgid "Support for the :keyword:`with` statement was added."
msgstr ""
msgstr "La prise en charge de l'instruction :keyword:`with` a été ajoutée."
#: ../Doc/library/aifc.rst:53
msgid ""
@ -115,6 +115,9 @@ msgid ""
"framerate, nframes, comptype, compname)``, equivalent to output of the :meth:"
"`get\\*` methods."
msgstr ""
"Renvoie une :func:`~collections.namedtuple` ``(nchannels, sampwidth, "
"framerate, nframes, comptype, compname)``, équivalent à la sortie des "
"méthodes :meth:`get\\*`."
#: ../Doc/library/aifc.rst:100
msgid ""

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/array.rst:2
msgid ":mod:`array` --- Efficient arrays of numeric values"
msgstr ":mod:`array` --- Tableaux efficaces de valeurs numériques"
msgstr ":mod:`array` Tableaux efficaces de valeurs numériques"
#: ../Doc/library/array.rst:11
msgid ""
@ -519,7 +519,7 @@ msgstr ""
"c'est une liste de nombres. Il est garanti que la chaîne puisse être "
"convertie en un tableau avec le même type et la même valeur en utilisant :"
"func:`eval`, tant que la classe :class:`~array.array` a été importée en "
"utilisant ``from array import array``. Exemples : ::"
"utilisant ``from array import array``. Exemples ::"
#: ../Doc/library/array.rst:269
msgid "Module :mod:`struct`"
@ -544,7 +544,7 @@ msgstr ""
#: ../Doc/library/array.rst:276
msgid "`The Numerical Python Documentation <https://docs.scipy.org/doc/>`_"
msgstr "`The Numerical Python Documentation <https://docs.scipy.org/doc/>`_"
msgstr "`La documentation de *Numerical Python* <https://docs.scipy.org/doc/>`"
#: ../Doc/library/array.rst:276
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/ast.rst:2
msgid ":mod:`ast` --- Abstract Syntax Trees"
msgstr ":mod:`ast` --- Arbres Syntaxiques Abstraits"
msgstr ":mod:`ast` Arbres Syntaxiques Abstraits"
#: ../Doc/library/ast.rst:10
msgid "**Source code:** :source:`Lib/ast.py`"
@ -166,11 +166,11 @@ msgid ""
"use ::"
msgstr ""
"Par exemple, pour créer et peupler un nœud :class:`ast.UnaryOp`, on peut "
"utiliser : ::"
"utiliser ::"
#: ../Doc/library/ast.rst:88
msgid "or the more compact ::"
msgstr "ou, plus compact : ::"
msgstr "ou, plus compact ::"
#: ../Doc/library/ast.rst:97
msgid "Abstract Grammar"
@ -390,7 +390,7 @@ msgid ""
"(``foo``) to ``data['foo']``::"
msgstr ""
"Voici un exemple du *transformer* qui réécrit les occurrences du "
"dictionnaire (``foo``) en ``data['foo']`` : ::"
"dictionnaire (``foo``) en ``data['foo']`` ::"
#: ../Doc/library/ast.rst:242
msgid ""

View File

@ -271,7 +271,7 @@ msgstr "Exemple avec le bug : ::"
#: ../Doc/library/asyncio-dev.rst:194
msgid "Output in debug mode::"
msgstr "Affichage en mode débogage : ::"
msgstr "Affichage en mode débogage ::"
#: ../Doc/library/asyncio-dev.rst:201
msgid ""

View File

@ -210,6 +210,8 @@ msgid ""
"See the :ref:`concurrency and multithreading <asyncio-multithreading>` "
"section of the documentation."
msgstr ""
"Voir la section :ref:`exécution concurrente et multi-fils d'exécution "
"<asyncio-multithreading>` de la documentation."
#: ../Doc/library/asyncio-eventloop.rst:157
msgid "Delayed calls"
@ -271,7 +273,7 @@ msgstr "La fonction :func:`asyncio.sleep`."
#: ../Doc/library/asyncio-eventloop.rst:213
msgid "Futures"
msgstr ""
msgstr "Futurs"
#: ../Doc/library/asyncio-eventloop.rst:217
msgid "Create an :class:`asyncio.Future` object attached to the loop."

View File

@ -269,7 +269,7 @@ msgstr ""
#: ../Doc/library/asyncio-eventloops.rst:183
msgid "Set the event loop for the current context to *loop*."
msgstr ""
msgstr "Définit la boucle d'événements du contexte actuel sur *loop*."
#: ../Doc/library/asyncio-eventloops.rst:187
msgid ""

View File

@ -120,7 +120,7 @@ msgstr ""
#: ../Doc/library/asyncio-protocol.rst:74
msgid "SSL socket:"
msgstr "*Socket* SSL :"
msgstr "Connecteur (*socket* en anglais) SSL :"
#: ../Doc/library/asyncio-protocol.rst:76
msgid ""
@ -160,7 +160,7 @@ msgstr "``'pipe'`` : objet *pipe*"
#: ../Doc/library/asyncio-protocol.rst:93
msgid "subprocess:"
msgstr "processus fils :"
msgstr "sous-processus :"
#: ../Doc/library/asyncio-protocol.rst:95
msgid "``'subprocess'``: :class:`subprocess.Popen` instance"

View File

@ -82,7 +82,7 @@ msgstr "Les nouvelles méthodes :meth:`join` et :meth:`task_done`."
#: ../Doc/library/asyncio-queue.rst:42
msgid "Return ``True`` if the queue is empty, ``False`` otherwise."
msgstr ""
msgstr "Renvoie ``True`` si la queue est vide, ``False`` sinon."
#: ../Doc/library/asyncio-queue.rst:46
msgid "Return ``True`` if there are :attr:`maxsize` items in the queue."
@ -121,6 +121,8 @@ msgstr ""
#: ../Doc/library/asyncio-queue.rst:73
msgid "Block until all items in the queue have been gotten and processed."
msgstr ""
"Bloque jusqu'à ce que tous les éléments de la queue aient été récupérés et "
"traités."
#: ../Doc/library/asyncio-queue.rst:75
msgid ""

View File

@ -331,7 +331,7 @@ msgstr ""
#: ../Doc/library/asyncio-subprocess.rst:247
msgid "Sends the signal *signal* to the child process."
msgstr "Envoie le signal *signal* au processus fils."
msgstr "Envoie le signal *signal* au sous-processus."
#: ../Doc/library/asyncio-subprocess.rst:251
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/asyncio-sync.rst:5
msgid "Synchronization primitives"
msgstr ""
msgstr "Primitives de synchronisation"
#: ../Doc/library/asyncio-sync.rst:7
msgid "**Source code:** :source:`Lib/asyncio/locks.py`"

View File

@ -453,7 +453,7 @@ msgstr ""
#: ../Doc/library/asyncio-task.rst:396
msgid "Return a set of all tasks for an event loop."
msgstr "Donne l'ensemble des tâches d'une boucle d'évènements."
msgstr "Renvoie l'ensemble des tâches d'une boucle d'évènements."
#: ../Doc/library/asyncio-task.rst:398
msgid "By default all tasks for the current event loop are returned."
@ -514,7 +514,7 @@ msgstr ""
#: ../Doc/library/asyncio-task.rst:438
msgid "The frames are always ordered from oldest to newest."
msgstr ""
msgstr "La pile est toujours affichée de l'appelant à l'appelé."
#: ../Doc/library/asyncio-task.rst:440
msgid ""
@ -583,6 +583,8 @@ msgid ""
"Raises :exc:`asyncio.TimeoutError` if the timeout occurs before all Futures "
"are done."
msgstr ""
"Lève une exception :exc:`asyncio.TimeoutError` si le délai d'attente est "
"dépassé avant que tous les futurs ne soient achevés."
#: ../Doc/library/asyncio-task.rst:515
msgid "Example::"
@ -650,6 +652,8 @@ msgid ""
"If the *gather* itself is cancelled, the cancellation is propagated "
"regardless of *return_exceptions*."
msgstr ""
"Si *gather* est lui-même annulé, l'annulation est propagée indépendamment de "
"*return_exceptions*."
#: ../Doc/library/asyncio-task.rst:577
msgid ""
@ -689,6 +693,8 @@ msgid ""
"See the :ref:`concurrency and multithreading <asyncio-multithreading>` "
"section of the documentation."
msgstr ""
"Voir la section :ref:`exécution concurrente et multi-fils d'exécution "
"<asyncio-multithreading>` de la documentation."
#: ../Doc/library/asyncio-task.rst:620
msgid ""
@ -719,7 +725,7 @@ msgstr "Attends un future, en le protégeant des annulations."
#: ../Doc/library/asyncio-task.rst:641
msgid "The statement::"
msgstr "L'instruction : ::"
msgstr "L'instruction ::"
#: ../Doc/library/asyncio-task.rst:645
msgid "is exactly equivalent to the statement::"
@ -780,6 +786,7 @@ msgstr ":const:`FIRST_COMPLETED`"
#: ../Doc/library/asyncio-task.rst:686
msgid "The function will return when any future finishes or is cancelled."
msgstr ""
"La fonction se termine lorsque n'importe quel futur se termine ou est annulé."
#: ../Doc/library/asyncio-task.rst:689
msgid ":const:`FIRST_EXCEPTION`"
@ -791,6 +798,9 @@ msgid ""
"If no future raises an exception then it is equivalent to :const:"
"`ALL_COMPLETED`."
msgstr ""
"La fonction se termine lorsque n'importe quel futur se termine en levant une "
"exception. Si aucun *futur* ne lève d'exception, équivaut à :const:"
"`ALL_COMPLETED`."
#: ../Doc/library/asyncio-task.rst:695
msgid ":const:`ALL_COMPLETED`"
@ -799,6 +809,7 @@ msgstr ":const:`ALL_COMPLETED`"
#: ../Doc/library/asyncio-task.rst:695
msgid "The function will return when all futures finish or are cancelled."
msgstr ""
"La fonction se termine lorsque les *futurs* sont tous finis ou annulés."
#: ../Doc/library/asyncio-task.rst:701
msgid "Usage::"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/asyncore.rst:2
msgid ":mod:`asyncore` --- Asynchronous socket handler"
msgstr ":mod:`asyncore` --- Gestionnaire de socket asynchrone"
msgstr ":mod:`asyncore` Gestionnaire de socket asynchrone"
#: ../Doc/library/asyncore.rst:13
msgid "**Source code:** :source:`Lib/asyncore.py`"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/atexit.rst:2
msgid ":mod:`atexit` --- Exit handlers"
msgstr ":mod:`atexit` --- Gestionnaire de fin de programme"
msgstr ":mod:`atexit` Gestionnaire de fin de programme"
#: ../Doc/library/atexit.rst:12
msgid ""
@ -68,6 +68,12 @@ msgid ""
"modules will normally be imported before higher level modules and thus must "
"be cleaned up later."
msgstr ""
"Lors d'un arrêt normal du programme (par exemple, si :func:`sys.exit` est "
"appelée ou lexécution du module principal se termine), toutes les fonctions "
"inscrites sont appelées, dans l'ordre de la dernière arrivée, première "
"servie. La supposition est que les modules les plus bas niveau vont "
"normalement être importés avant les modules haut niveau et ainsi être "
"nettoyés en dernier."
#: ../Doc/library/atexit.rst:37
msgid ""
@ -138,11 +144,11 @@ msgid ""
"be passed along to the registered function when it is called::"
msgstr ""
"Les arguments positionnels et par mot-clé peuvent aussi être passés à :func:"
"`register` afin d'être repassés à la fonction inscrite lors de son appel : ::"
"`register` afin d'être repassés à la fonction inscrite lors de son appel ::"
#: ../Doc/library/atexit.rst:101
msgid "Usage as a :term:`decorator`::"
msgstr "Utilisation en tant que :term:`décorateur <decorator>` : ::"
msgstr "Utilisation en tant que :term:`décorateur <decorator>` ::"
#: ../Doc/library/atexit.rst:109
msgid "This only works with functions that can be called without arguments."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/audioop.rst:2
msgid ":mod:`audioop` --- Manipulate raw audio data"
msgstr ":mod:`audioloop` --- Manipulation de données audio brutes"
msgstr ":mod:`audioloop` Manipulation de données audio brutes"
#: ../Doc/library/audioop.rst:9
msgid ""

View File

@ -19,11 +19,11 @@ msgstr ""
#: ../Doc/library/base64.rst:2
msgid ":mod:`base64` --- Base16, Base32, Base64, Base85 Data Encodings"
msgstr ""
msgstr ":mod:`base64` — Encodages base16, base32, base64 et base85"
#: ../Doc/library/base64.rst:8
msgid "**Source code:** :source:`Lib/base64.py`"
msgstr ""
msgstr "**Code source :** :source:`Lib/base64.py`"
#: ../Doc/library/base64.rst:16
msgid ""
@ -33,6 +33,12 @@ msgid ""
"which defines the Base16, Base32, and Base64 algorithms, and for the de-"
"facto standard Ascii85 and Base85 encodings."
msgstr ""
"Ce module fournit des fonctions permettant de coder des données binaires en "
"caractères ASCII affichables ainsi que de décoder ces caractères vers des "
"données binaires en retour. Il fournit des fonctions d'encodage et de "
"décodage pour les codages spécifiés par la :rfc:`3548` qui définit les "
"algorithmes base16, base32 et base64, ainsi que les encodages standards *de "
"facto* Ascii85 et base85."
#: ../Doc/library/base64.rst:22
msgid ""
@ -41,6 +47,10 @@ msgid ""
"HTTP POST request. The encoding algorithm is not the same as the :program:"
"`uuencode` program."
msgstr ""
"Les encodages définis par la :rfc:`3548` sont adaptés au codage des données "
"binaires pour leur transfert par courriel, comme éléments d'une URL ou d'une "
"requête HTTP POST. L'algorithme d'encodage ne doit pas être confondu avec le "
"programme :program:`uuencode`."
#: ../Doc/library/base64.rst:27
msgid ""
@ -50,6 +60,12 @@ msgid ""
"or strings containing ASCII to :class:`bytes`. Both base-64 alphabets "
"defined in :rfc:`3548` (normal, and URL- and filesystem-safe) are supported."
msgstr ""
"Ce module présente deux interfaces. L'interface moderne gère l'encodage d':"
"term:`objets octet-compatibles <bytes-like object>` en :class:`bytes` ASCII "
"ainsi que le décodage d':term:`objets octet-compatibles <bytes-like object>` "
"ou de chaînes de caractères contenant de l'ASCII en :class:`bytes`. Les deux "
"alphabets de l'algorithme base64 définis par la :rfc:`3548` (normal et sûr "
"pour les systèmes de fichiers ou URL) sont gérés."
#: ../Doc/library/base64.rst:33
msgid ""
@ -60,12 +76,22 @@ msgid ""
"looking for :rfc:`2045` support you probably want to be looking at the :mod:"
"`email` package instead."
msgstr ""
"L'interface historique ne permet pas le décodage des chaînes de caractères "
"mais fournit des fonctions permettant d'encoder et décoder depuis et vers "
"des :term:`objets fichiers <file object>`. Elle ne gère que l'alphabet "
"base64 standard et ajoute une nouvelle ligne tous les 76 caractères, comme "
"spécifié par la :rfc:`2045`. Notez que le paquet :mod:`email` est "
"probablement ce que vous cherchez si vous souhaitez une implémentation de "
"la :rfc:`2045`."
#: ../Doc/library/base64.rst:41
msgid ""
"ASCII-only Unicode strings are now accepted by the decoding functions of the "
"modern interface."
msgstr ""
"Les chaînes de caractères Unicode contenant uniquement des caractères ASCII "
"sont désormais acceptées par les fonctions de décodage de l'interface "
"moderne."
#: ../Doc/library/base64.rst:45
msgid ""
@ -73,6 +99,9 @@ msgid ""
"encoding and decoding functions in this module. Ascii85/Base85 support "
"added."
msgstr ""
"Tous les :term:`objets octet-compatibles <bytes-like object>` sont désormais "
"acceptés par l'ensemble des fonctions d'encodage et de décodage de ce "
"module. La gestion de Ascii85/base85 a été ajoutée."
#: ../Doc/library/base64.rst:49
msgid "The modern interface provides:"
@ -83,6 +112,8 @@ msgid ""
"Encode the :term:`bytes-like object` *s* using Base64 and return the "
"encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet octet-compatible <bytes-like object>` *s* en "
"utilisant l'algorithme base64 et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:56
msgid ""
@ -92,12 +123,21 @@ msgid ""
"generate URL or filesystem safe Base64 strings. The default is ``None``, "
"for which the standard Base64 alphabet is used."
msgstr ""
"L'option *altchars* doit être un :term:`bytes-like object` de longueur au "
"moins 2 (les caractères additionnels sont ignorés) qui spécifie un alphabet "
"alternatif pour les délimiteurs ``+`` et ``/``. Cela permet de générer des "
"chaînes de caractères base64 pouvant être utilisées pour une URL ou dans un "
"système de fichiers. La valeur par défaut est ``None``, auquel cas "
"l'alphabet standard base64 est utilisé."
#: ../Doc/library/base64.rst:65
msgid ""
"Decode the Base64 encoded :term:`bytes-like object` or ASCII string *s* and "
"return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* encodée en base64 et renvoie les :class:`bytes` "
"décodés."
#: ../Doc/library/base64.rst:68
msgid ""
@ -105,11 +145,16 @@ msgid ""
"at least length 2 (additional characters are ignored) which specifies the "
"alternative alphabet used instead of the ``+`` and ``/`` characters."
msgstr ""
"L'option *altchars* doit être un :term:`bytes-like object` de longueur au "
"moins égale à 2 (les caractères additionnels sont ignorés) qui spécifie un "
"alphabet alternatif pour les délimiteurs ``+`` et ``/``."
#: ../Doc/library/base64.rst:72
msgid ""
"A :exc:`binascii.Error` exception is raised if *s* is incorrectly padded."
msgstr ""
"Une exception :exc:`binascii.Error` est levée si *s* n'est pas remplie à une "
"longueur attendue."
#: ../Doc/library/base64.rst:75
msgid ""
@ -118,18 +163,28 @@ msgid ""
"the padding check. If *validate* is ``True``, these non-alphabet characters "
"in the input result in a :exc:`binascii.Error`."
msgstr ""
"Si *validate* est ``False`` (par défaut), les caractères qui ne sont ni dans "
"l'alphabet base64 normal, ni dans l'alphabet alternatif, sont ignorés avant "
"la vérification de la longueur du remplissage. Si *validate* est ``True``, "
"les caractères hors de l'alphabet de l'entrée produisent une :exc:`binascii."
"Error`."
#: ../Doc/library/base64.rst:84
msgid ""
"Encode :term:`bytes-like object` *s* using the standard Base64 alphabet and "
"return the encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet octet-compatible <bytes-like object>` *s* en "
"utilisant l'alphabet standard base64 et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:90
msgid ""
"Decode :term:`bytes-like object` or ASCII string *s* using the standard "
"Base64 alphabet and return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* utilisant l'alphabet base64 standard et renvoie les :"
"class:`bytes` décodés."
#: ../Doc/library/base64.rst:96
msgid ""
@ -138,6 +193,10 @@ msgid ""
"`` in the standard Base64 alphabet, and return the encoded :class:`bytes`. "
"The result can still contain ``=``."
msgstr ""
"Encode un :term:`objet byte-compatible <bytes-like object>` *s* en utilisant "
"un alphabet sûr pour les URL et systèmes de fichiers qui substitue ``-`` et "
"``_`` à ``+`` et ``/`` dans l'alphabet standard base64 et renvoie les :class:"
"`bytes` encodés."
#: ../Doc/library/base64.rst:105
msgid ""
@ -146,24 +205,36 @@ msgid ""
"instead of ``/`` in the standard Base64 alphabet, and return the decoded :"
"class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* utilisant un alphabet sûr pour les URL et systèmes "
"de fichiers qui substitue ``-`` et ``_`` à ``+`` et ``/`` dans l'alphabet "
"standard base64 et renvoie les :class:`bytes` décodés."
#: ../Doc/library/base64.rst:114
msgid ""
"Encode the :term:`bytes-like object` *s* using Base32 and return the "
"encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet byte-compatible <bytes-like object>` *s* en utilisant "
"l'algorithme base32 et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:120
msgid ""
"Decode the Base32 encoded :term:`bytes-like object` or ASCII string *s* and "
"return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* encodé en base32 et renvoie les :class:`bytes` "
"décodés."
#: ../Doc/library/base64.rst:123 ../Doc/library/base64.rst:150
msgid ""
"Optional *casefold* is a flag specifying whether a lowercase alphabet is "
"acceptable as input. For security purposes, the default is ``False``."
msgstr ""
"L'option *casefold* est un drapeau spécifiant si l'utilisation d'un alphabet "
"en minuscules est acceptable comme entrée. Pour des raisons de sécurité, "
"cette option est à ``False`` par défaut."
#: ../Doc/library/base64.rst:127
msgid ""
@ -175,30 +246,46 @@ msgid ""
"purposes the default is ``None``, so that 0 and 1 are not allowed in the "
"input."
msgstr ""
"La :rfc:`3548` autorise une correspondance optionnelle du chiffre 0 (zéro) "
"vers la lettre O (/o/) ainsi que du chiffre 1 (un) vers soit la lettre I (/"
"i/) ou la lettre L (/l/). L'argument optionnel *map01*, lorsqu'il diffère de "
"``None``, spécifie en quelle lettre le chiffre 1 doit être transformé "
"(lorsque *map01* n'est pas ``None``, le chiffre 0 est toujours transformé en "
"la lettre O). Pour des raisons de sécurité, le défaut est ``None``, de telle "
"sorte que 0 et 1 ne sont pas autorisés dans l'entrée."
#: ../Doc/library/base64.rst:134 ../Doc/library/base64.rst:154
msgid ""
"A :exc:`binascii.Error` is raised if *s* is incorrectly padded or if there "
"are non-alphabet characters present in the input."
msgstr ""
"Une exception :exc:`binascii.Error` est levée si *s* n'est pas remplie à une "
"longueur attendue ou si elle contient des caractères hors de l'alphabet."
#: ../Doc/library/base64.rst:141
msgid ""
"Encode the :term:`bytes-like object` *s* using Base16 and return the "
"encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet byte-compatible <bytes-like object>` *s* en utilisant "
"l'algorithme base16 et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:147
msgid ""
"Decode the Base16 encoded :term:`bytes-like object` or ASCII string *s* and "
"return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* encodé en base16 et renvoie les :class:`bytes` "
"décodés."
#: ../Doc/library/base64.rst:161
msgid ""
"Encode the :term:`bytes-like object` *b* using Ascii85 and return the "
"encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet byte-compatible <bytes-like object>` *s* en utilisant "
"l'algorithme Ascii85 et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:164
msgid ""
@ -206,6 +293,10 @@ msgid ""
"instead of 4 consecutive spaces (ASCII 0x20) as supported by 'btoa'. This "
"feature is not supported by the \"standard\" Ascii85 encoding."
msgstr ""
"L'option *foldspaces* permet d'utiliser la séquence spéciale 'y' à la place "
"de quatre espaces consécutives (ASCII ``0x20``) comme pris en charge par "
"*btoa*. Cette fonctionnalité n'est pas gérée par l'encodage « standard » "
"Ascii85."
#: ../Doc/library/base64.rst:168
msgid ""
@ -213,24 +304,35 @@ msgid ""
"characters added to it. If this is non-zero, each output line will be at "
"most this many characters long."
msgstr ""
"*wrapcol* contrôle l'ajout de caractères de saut de ligne (``b'\\n'``) à la "
"sortie. Chaque ligne de sortie contient au maximum *wrapcol* caractères si "
"cette option diffère de zéro."
#: ../Doc/library/base64.rst:172
msgid ""
"*pad* controls whether the input is padded to a multiple of 4 before "
"encoding. Note that the ``btoa`` implementation always pads."
msgstr ""
"*pad* spécifie l'ajout de caractères de remplissage (*padding* en anglais) à "
"l'entrée jusqu'à ce que sa longueur soit un multiple de 4 avant encodage. "
"Notez que l'implémentation ``btoa`` effectue systématiquement ce remplissage."
#: ../Doc/library/base64.rst:175
msgid ""
"*adobe* controls whether the encoded byte sequence is framed with ``<~`` and "
"``~>``, which is used by the Adobe implementation."
msgstr ""
"*adobe* contrôle si oui ou non la séquence encodée d'octets est encadrée par "
"``<~`` et ``~>`` comme utilisé dans l'implémentation Adobe."
#: ../Doc/library/base64.rst:183
msgid ""
"Decode the Ascii85 encoded :term:`bytes-like object` or ASCII string *b* and "
"return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *s* encodé en Ascii85 et renvoie les :class:`bytes` "
"décodés."
#: ../Doc/library/base64.rst:186
msgid ""
@ -238,12 +340,18 @@ msgid ""
"be accepted as shorthand for 4 consecutive spaces (ASCII 0x20). This feature "
"is not supported by the \"standard\" Ascii85 encoding."
msgstr ""
"L'option *foldspaces* permet d'utiliser la séquence spéciale 'y' à la place "
"de quatre espaces consécutives (ASCII `0x20`) comme pris en charge par "
"*btoa*. Cette fonctionnalité n'est pas gérée par l'encodage « standard » "
"Ascii85."
#: ../Doc/library/base64.rst:190
msgid ""
"*adobe* controls whether the input sequence is in Adobe Ascii85 format (i.e. "
"is framed with <~ and ~>)."
msgstr ""
"*adobe* indique si la séquence d'entrée utilise le format Adobe Ascii85 "
"(c'est-à-dire utilise l'encadrement par ``<~`` et ``~>``)."
#: ../Doc/library/base64.rst:193
msgid ""
@ -252,18 +360,28 @@ msgid ""
"whitespace characters, and by default contains all whitespace characters in "
"ASCII."
msgstr ""
"*ignorechars* doit être un :term:`bytes-like object` ou une chaîne ASCII "
"contenant des caractères à ignorer dans l'entrée. Il ne doit contenir que "
"des caractères d'espacement et contient par défaut l'ensemble des caractères "
"d'espacement de l'alphabet ASCII."
#: ../Doc/library/base64.rst:203
msgid ""
"Encode the :term:`bytes-like object` *b* using base85 (as used in e.g. git-"
"style binary diffs) and return the encoded :class:`bytes`."
msgstr ""
"Encode un :term:`objet byte-compatible <bytes-like object>` *s* en utilisant "
"l'algorithme base85 (tel qu'utilisé par exemple par le programme *git-diff* "
"sur des données binaires) et renvoie les :class:`bytes` encodés."
#: ../Doc/library/base64.rst:206
msgid ""
"If *pad* is true, the input is padded with ``b'\\0'`` so its length is a "
"multiple of 4 bytes before encoding."
msgstr ""
"Si *pad* est vrai, des caractères de remplissage ``b'``0'`` (*padding* en "
"anglais) sont ajoutés à l'entrée jusqu'à ce que sa longueur soit un multiple "
"de 4 octets avant encodage."
#: ../Doc/library/base64.rst:214
msgid ""
@ -271,6 +389,10 @@ msgid ""
"return the decoded :class:`bytes`. Padding is implicitly removed, if "
"necessary."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` ou une chaîne "
"de caractères ASCII *b* encodé en base85 et renvoie les :class:`bytes` "
"décodés. Les caractères de remplissage sont implicitement retirés si "
"nécessaire."
#: ../Doc/library/base64.rst:221
msgid "The legacy interface:"
@ -283,16 +405,23 @@ msgid ""
"objects <file object>`. *input* will be read until ``input.readline()`` "
"returns an empty bytes object."
msgstr ""
"Décode le contenu d'un fichier binaire *input* et écrit les données binaires "
"résultantes dans le fichier *output*. *input* et *output* doivent être des :"
"term:`objets fichiers <file object>`. *input* est lu jusqu'à ce que ``input."
"readline()`` renvoie un objet *bytes* vide."
#: ../Doc/library/base64.rst:233
msgid ""
"Decode the :term:`bytes-like object` *s*, which must contain one or more "
"lines of base64 encoded data, and return the decoded :class:`bytes`."
msgstr ""
"Décode un :term:`objet octet-compatible <bytes-like object>` *s* devant "
"contenir une ou plusieurs lignes de données encodées en base64 et renvoie "
"les :class:`bytes` décodés."
#: ../Doc/library/base64.rst:240
msgid "Deprecated alias of :func:`decodebytes`."
msgstr ""
msgstr "Alias obsolète de :func:`decodebytes`."
#: ../Doc/library/base64.rst:247
msgid ""
@ -303,6 +432,13 @@ msgid ""
"(``b'\\n'``) after every 76 bytes of the output, as well as ensuring that "
"the output always ends with a newline, as per :rfc:`2045` (MIME)."
msgstr ""
"Encode le contenu du fichier binaire *input* et écrit les données encodées "
"en base64 résultantes dans le fichier *output. *input* et *output* doivent "
"être des :term:`objets fichiers <file object>`. *input* est lu jusqu'à ce "
"que ``input.readline()`` renvoie un objet *bytes* vide. :func:`encode` "
"insère un caractère de saut de ligne (``b'\\n'``) tous les 76 octets de "
"sortie et assure que celle-ci se termine par une nouvelle ligne, comme "
"spécifié par la :rfc:`2045` (MIME)."
#: ../Doc/library/base64.rst:257
msgid ""
@ -311,10 +447,15 @@ msgid ""
"newlines (``b'\\n'``) inserted after every 76 bytes of output, and ensuring "
"that there is a trailing newline, as per :rfc:`2045` (MIME)."
msgstr ""
"Encode un :term:`objet octet-compatible <bytes-like object>` *s* pouvant "
"contenir des données binaires arbitraires et renvoie les :class:`bytes` "
"contenant les données encodées en base64. Un caractère de saut de ligne "
"(``b'\\n'``) est inséré tous les 76 octets de sortie et celle-ci se termine "
"par une nouvelle ligne, comme spécifié par la :rfc:`2045` (MIME)."
#: ../Doc/library/base64.rst:266
msgid "Deprecated alias of :func:`encodebytes`."
msgstr ""
msgstr "Alias obsolète de :func:`encodebytes`."
#: ../Doc/library/base64.rst:271
msgid "An example usage of the module:"
@ -337,12 +478,17 @@ msgid ""
"Mechanisms for Specifying and Describing the Format of Internet Message "
"Bodies"
msgstr ""
":rfc:`1521` — MIME (*Multipurpose Internet Mail Extensions*) *Part One: "
"Mechanisms for Specifying and Describing the Format of Internet Message "
"Bodies*"
#: ../Doc/library/base64.rst:288
msgid ""
"Section 5.2, \"Base64 Content-Transfer-Encoding,\" provides the definition "
"of the base64 encoding."
msgstr ""
"La Section 5.2, \"*Base64 Content-Transfer-Encoding*\", donne la définition "
"de l'encodage base64."
#~ msgid "``encodestring`` is a deprecated alias."
#~ msgstr "``encodestring`` est un alias obsolète."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/bdb.rst:2
msgid ":mod:`bdb` --- Debugger framework"
msgstr ":mod:`bdb` --- Framework de débogage"
msgstr ":mod:`bdb` Framework de débogage"
#: ../Doc/library/bdb.rst:7
msgid "**Source code:** :source:`Lib/bdb.py`"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/binascii.rst:2
msgid ":mod:`binascii` --- Convert between binary and ASCII"
msgstr ""
msgstr ":mod:`binascii` --- Conversion entre binaire et ASCII"
#: ../Doc/library/binascii.rst:15
msgid ""
@ -30,6 +30,12 @@ msgid ""
"low-level functions written in C for greater speed that are used by the "
"higher-level modules."
msgstr ""
"Le module :mod:`binascii` contient des méthodes pour convertir entre binaire "
"et diverses représentations binaires encodées en ASCII. Normalement, vous "
"nallez pas utiliser ces fonctions directement mais vous utiliserez des "
"modules dencapsulage comme :mod:`uu`, :mod:`base64`, or :mod:`binhex` à la "
"place. Le module :mod:`binascii` contient des fonctions bas-niveau écrites "
"en C plus rapides qui sont utilisées par des modules haut-niveau."
#: ../Doc/library/binascii.rst:24
msgid ""
@ -38,14 +44,20 @@ msgid ""
"(such as :class:`bytes`, :class:`bytearray` and other objects that support "
"the buffer protocol)."
msgstr ""
"La fonction ``a2b_*`` accepte des chaînes de caractères contenant seulement "
"des caractères ASCII. Dautres fonctions acceptent seulement des objets :"
"term:`bytes et similaire <bytes-like object>` (tel que :class:`bytes`, :"
"class:`bytearray` et autres objets qui supportent le protocole tampon)."
#: ../Doc/library/binascii.rst:29
msgid "ASCII-only unicode strings are now accepted by the ``a2b_*`` functions."
msgstr ""
"Les chaines de caractères *unicode* seulement composées de caractères ASCII "
"sont désormais acceptées par les fonctions ``a2b_*``."
#: ../Doc/library/binascii.rst:33
msgid "The :mod:`binascii` module defines the following functions:"
msgstr ""
msgstr "Le module :mod:`binascii` définit les fonctions suivantes :"
#: ../Doc/library/binascii.rst:38
msgid ""
@ -53,6 +65,10 @@ msgid ""
"data. Lines normally contain 45 (binary) bytes, except for the last line. "
"Line data may be followed by whitespace."
msgstr ""
"Convertit une seule ligne de donnée *uuencoded* en binaire et renvoie la "
"donnée binaire. Les lignes contiennent normalement 45 octets (binaire), sauf "
"pour la dernière ligne. Il se peut que la ligne de donnée soit suivie dun "
"espace blanc."
#: ../Doc/library/binascii.rst:45
msgid ""
@ -66,6 +82,8 @@ msgid ""
"Convert a block of base64 data back to binary and return the binary data. "
"More than one line may be passed at a time."
msgstr ""
"Convertit un bloc de donnée en *base64* en binaire et renvoie la donnée "
"binaire. Plus dune ligne peut être passé à la fois."
#: ../Doc/library/binascii.rst:58
msgid ""
@ -73,10 +91,14 @@ msgid ""
"return value is the converted line, including a newline char if *newline* is "
"true. The output of this function conforms to :rfc:`3548`."
msgstr ""
"Convertit les données binaires en une ligne de caractères ASCII en codage "
"base 64. La valeur de renvoyée et la ligne convertie, incluant un caractère "
"de nouvelle ligne si *newline* est vraie. La sortie de cette fonction se "
"conforme à :rfc:`3548`."
#: ../Doc/library/binascii.rst:62
msgid "Added the *newline* parameter."
msgstr ""
msgstr "Ajout du paramètre *newline*."
#: ../Doc/library/binascii.rst:68
msgid ""
@ -84,6 +106,10 @@ msgid ""
"binary data. More than one line may be passed at a time. If the optional "
"argument *header* is present and true, underscores will be decoded as spaces."
msgstr ""
"Convertit un bloc de données *quoted-printable* en binaire et renvoie les "
"données binaires. Plus dune ligne peut être passée à la fois. Si largument "
"optionnel *header* est présent et vrai, les traits soulignés seront décodés "
"en espaces."
#: ../Doc/library/binascii.rst:75
msgid ""
@ -97,6 +123,16 @@ msgid ""
"newline characters will be encoded as well; otherwise linefeed conversion "
"might corrupt the binary data stream."
msgstr ""
"Convertit les données binaires en ligne(s) de caractères ASCII en codage "
"imprimable entre guillemets. La valeur de retour est la\\les lignes(s) "
"convertie(s). Si largument optionnel *quotetabs* est présent et vrai, "
"toutes les tabulations et espaces seront encodés. Si largument optionnel "
"*istext* est présent et faux, les nouvelles lignes ne sont pas encodées mais "
"les espaces de fin de ligne le seront. Si largument optionnel *header* est "
"présent et vrai, les espaces vont être encodés comme de traits soulignés "
"selon :rfc:`1522`. Si largument optionnel *header* est présent et faux, les "
"caractères de nouvelle ligne seront également encodés ; sinon la conversion "
"de saut de ligne pourrait corrompre le flux de données binaire."
#: ../Doc/library/binascii.rst:88
msgid ""
@ -105,6 +141,10 @@ msgid ""
"or (in case of the last portion of the binhex4 data) have the remaining bits "
"zero."
msgstr ""
"Convertit un bloc de donnée ASCII au format *binhex4* en binaire, sans faire "
"de décompression RLE. La chaîne de caractères doit contenir un nombre "
"complet doctet binaires ou (au cas où la dernière portion de donnée est au "
"format *binhex4*) avoir les bits restants à 0."
#: ../Doc/library/binascii.rst:95
msgid ""
@ -114,14 +154,22 @@ msgid ""
"returns the decompressed data, unless data input data ends in an orphaned "
"repeat indicator, in which case the :exc:`Incomplete` exception is raised."
msgstr ""
"Réalise une décompression RLE sur la donnée, daprès la norme *binhex4*. "
"Lalgorithme utilise ``0x90`` après un octet comme un indicateur de "
"répétition, suivi dun décompte. Un décompte de ``0`` définit une valeur "
"doctet de ``0x90``. La routine renvoie la donnée décompressée, sauf si la "
"donnée entrante se finit sur un indicateur de répétition orphelin. Dans ce "
"cas lexception :exc:`Incomplete` est levée."
#: ../Doc/library/binascii.rst:101
msgid "Accept only bytestring or bytearray objects as input."
msgstr ""
msgstr "Accepte seulement des objets *bytestring* ou *bytearray* en entrée."
#: ../Doc/library/binascii.rst:107
msgid "Perform binhex4 style RLE-compression on *data* and return the result."
msgstr ""
"Réalise une compression RLE de type *binhex4* sur *data* et renvoie le "
"résultat."
#: ../Doc/library/binascii.rst:112
msgid ""
@ -129,6 +177,9 @@ msgid ""
"The argument should already be RLE-coded, and have a length divisible by 3 "
"(except possibly the last fragment)."
msgstr ""
"Réalise une traduction *hexbin4* de binaire à ASCII et renvoie la chaîne de "
"caractères résultante. Largument doit être *RLE-coded*, et avoir une "
"longueur divisible par 3 (sauf, éventuellement, le dernier fragment)."
#: ../Doc/library/binascii.rst:119
msgid ""
@ -137,6 +188,10 @@ msgid ""
"+ *x*:sup:`12` + *x*:sup:`5` + 1, often represented as 0x1021. This CRC is "
"used in the binhex4 format."
msgstr ""
"Calcule une valeur en CRC 16-bit de *data*, commençant par *value* comme CRC "
"initial et renvoie le résultat. Ceci utilise le CRC-CCITT polynomial *x*:sup:"
"`16` + *x*:sup:`12` + *x*:sup:`5` + 1, souvent représenté comme *0x1021*. Ce "
"CRC est utilisé dans le format *binhex4*."
#: ../Doc/library/binascii.rst:127
msgid ""
@ -146,12 +201,20 @@ msgid ""
"checksum algorithm, it is not suitable for use as a general hash algorithm. "
"Use as follows::"
msgstr ""
"Calcule CRC-32, la somme de contrôle 32-bit de *data*, commençant par un CRC "
"initial de *value*. Le CRC initial par défaut est zéro. Lalgorithme est "
"cohérent avec la somme de contrôle du fichier ZIP. Comme lalgorithme est "
"conçu pour être utilisé comme un algorithme de somme de contrôle, il ne "
"convient pas comme algorithme de hachage général. Utiliser comme suit ::"
#: ../Doc/library/binascii.rst:139
msgid ""
"The result is always unsigned. To generate the same numeric value across all "
"Python versions and platforms, use ``crc32(data) & 0xffffffff``."
msgstr ""
"Le résultat est toujours non signé. Pour générer la même valeur numérique "
"sur toutes les versions de Python et plateformes, utilisez ``crc32(data) & "
"0xffffffff``."
#: ../Doc/library/binascii.rst:148
msgid ""
@ -159,6 +222,9 @@ msgid ""
"*data* is converted into the corresponding 2-digit hex representation. The "
"returned bytes object is therefore twice as long as the length of *data*."
msgstr ""
"Renvoie la représentation hexadécimale du binaire *data*. Chaque octet de "
"*data* est converti en la représentation 2 chiffres correspondante. Lobjet "
"octets renvoyé est donc deux fois plus long que la longueur de *data*."
#: ../Doc/library/binascii.rst:156
msgid ""
@ -167,16 +233,25 @@ msgid ""
"number of hexadecimal digits (which can be upper or lower case), otherwise "
"an :exc:`Error` exception is raised."
msgstr ""
"Renvoie la donnée binaire représentée par la chaîne de caractères "
"hexadécimale *hexstr*. Cette fonction est linverse de :func:`b2a_hex`. "
"*hexstr* doit contenir un nombre pair de chiffres hexadécimaux (qui peuvent "
"être en majuscule ou minuscule), sinon une exception :exc:`Error` est levée."
#: ../Doc/library/binascii.rst:164
msgid "Exception raised on errors. These are usually programming errors."
msgstr ""
"Exception levée en cas d'erreurs. Ce sont typiquement des erreurs de "
"programmation."
#: ../Doc/library/binascii.rst:169
msgid ""
"Exception raised on incomplete data. These are usually not programming "
"errors, but may be handled by reading a little more data and trying again."
msgstr ""
"Exception levée par des données incomplète. Il ne sagit généralement pas "
"derreurs de programmation, mais elles peuvent être traitées en lisant un "
"peu plus de données et en réessayant."
#: ../Doc/library/binascii.rst:177
msgid "Module :mod:`base64`"
@ -186,6 +261,7 @@ msgstr "Module :mod:`base64`"
msgid ""
"Support for RFC compliant base64-style encoding in base 16, 32, 64, and 85."
msgstr ""
"Support de lencodage *base64-style* conforme RFC en base 16, 32, 64 et 85."
#: ../Doc/library/binascii.rst:180
msgid "Module :mod:`binhex`"
@ -193,7 +269,7 @@ msgstr "Module :mod:`binhex`"
#: ../Doc/library/binascii.rst:180
msgid "Support for the binhex format used on the Macintosh."
msgstr ""
msgstr "Support pour le format *binhex* utilisé sur Macintosh."
#: ../Doc/library/binascii.rst:183
msgid "Module :mod:`uu`"
@ -210,3 +286,5 @@ msgstr "Module :mod:`quopri`"
#: ../Doc/library/binascii.rst:186
msgid "Support for quoted-printable encoding used in MIME email messages."
msgstr ""
"Support de lencodage *quote-printable* utilisé par les messages *email* "
"MIME."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/binhex.rst:2
msgid ":mod:`binhex` --- Encode and decode binhex4 files"
msgstr ":mod:`binhex` --- Encode et décode les fichiers *binhex4*"
msgstr ":mod:`binhex` Encode et décode les fichiers *binhex4*"
#: ../Doc/library/binhex.rst:7
msgid "**Source code:** :source:`Lib/binhex.py`"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/bisect.rst:2
msgid ":mod:`bisect` --- Array bisection algorithm"
msgstr ":mod:`bisect` --- Algorithme de bissection de listes"
msgstr ":mod:`bisect` Algorithme de bissection de listes"
#: ../Doc/library/bisect.rst:10
msgid "**Source code:** :source:`Lib/bisect.py`"
@ -139,7 +139,7 @@ msgstr ""
"Les fonctions :func:`bisect` ci-dessus sont utiles pour insérer des "
"éléments, mais peuvent être étranges et peu naturelles à utiliser pour "
"rechercher des éléments. Les cinq fonctions suivantes montrent comment les "
"transformer en recherche plus classique pour les listes triées : ::"
"transformer en recherche plus classique pour les listes triées ::"
#: ../Doc/library/bisect.rst:114
msgid "Other Examples"
@ -156,7 +156,7 @@ msgstr ""
"tableaux de nombres. Cet exemple utilise :func:`bisect` pour rechercher la "
"note (sous forme de lettre) correspondant à un note sous forme de points, en "
"se basant sur une échelle prédéfinie : plus de 90 vaut 'A', de 80 à 89 vaut "
"'B', etc… : ::"
"'B', etc… ::"
#: ../Doc/library/bisect.rst:130
msgid ""
@ -177,4 +177,4 @@ msgid ""
"of the record in question::"
msgstr ""
"Il est préférable d'utiliser une liste de clefs pré-calculée pour chercher "
"l'index de l'enregistrement en question : ::"
"l'index de l'enregistrement en question ::"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/builtins.rst:2
msgid ":mod:`builtins` --- Built-in objects"
msgstr ":mod:`builtins` --- Objets natifs"
msgstr ":mod:`builtins` Objets natifs"
#: ../Doc/library/builtins.rst:9
msgid ""
@ -46,7 +46,7 @@ msgstr ""
"de même nom qu'une valeur native, mais pour qui le natif de même nom est "
"aussi nécessaire. Par exemple, dans un module qui voudrait implémenter une "
"fonction :func:`open` autour de la fonction native :func:`open`, ce module "
"peut être utilisé directement : ::"
"peut être utilisé directement ::"
#: ../Doc/library/builtins.rst:38
msgid ""

View File

@ -19,45 +19,55 @@ msgstr ""
#: ../Doc/library/bz2.rst:2
msgid ":mod:`bz2` --- Support for :program:`bzip2` compression"
msgstr ""
msgstr ":mod:`bz2` — Prise en charge de la compression :program:`bzip2`"
#: ../Doc/library/bz2.rst:12
msgid "**Source code:** :source:`Lib/bz2.py`"
msgstr ""
msgstr "**Code Source :** :source:`Lib/bz2.py`"
#: ../Doc/library/bz2.rst:16
msgid ""
"This module provides a comprehensive interface for compressing and "
"decompressing data using the bzip2 compression algorithm."
msgstr ""
"Ce module fournit une interface complète pour compresser et décompresser les "
"données en utilisant l'algorithme de compression *bzip2*."
#: ../Doc/library/bz2.rst:19
msgid "The :mod:`bz2` module contains:"
msgstr "Le module :mod:`bz2` contiens :"
msgstr "Le module :mod:`bz2` contient :"
#: ../Doc/library/bz2.rst:21
msgid ""
"The :func:`.open` function and :class:`BZ2File` class for reading and "
"writing compressed files."
msgstr ""
"La fonction :func:`.open` et la classe :class:`BZ2File` pour lire et écrire "
"des fichiers compressés."
#: ../Doc/library/bz2.rst:23
msgid ""
"The :class:`BZ2Compressor` and :class:`BZ2Decompressor` classes for "
"incremental (de)compression."
msgstr ""
"Les classes :class:`BZ2Compressor` et :class:`BZ2Decompressor` pour la "
"(dé)compression incrémentielle."
#: ../Doc/library/bz2.rst:25
msgid ""
"The :func:`compress` and :func:`decompress` functions for one-shot "
"(de)compression."
msgstr ""
"Les fonctions :func:`compress` et :func:`decompress` pour la (dé)compression "
"en une seule fois."
#: ../Doc/library/bz2.rst:28
msgid ""
"All of the classes in this module may safely be accessed from multiple "
"threads."
msgstr ""
"Toutes les classes de ce module peuvent en toute sécurité être accédées "
"depuis de multiples fils d'exécution."
#: ../Doc/library/bz2.rst:32
msgid "(De)compression of files"
@ -68,6 +78,8 @@ msgid ""
"Open a bzip2-compressed file in binary or text mode, returning a :term:`file "
"object`."
msgstr ""
"Ouvre un fichier compressé par *bzip2* en mode binaire ou texte, le "
"renvoyant en :term:`file object`."
#: ../Doc/library/bz2.rst:39
msgid ""
@ -75,6 +87,9 @@ msgid ""
"an actual filename (a :class:`str` or :class:`bytes` object), or an existing "
"file object to read from or write to."
msgstr ""
"Tout comme avec le constructeur pour la classe :class:`BZ2File`, l'argument "
"*filename* peut être un nom de fichier réel (un objet :class:`str` ou :class:"
"`bytes`), ou un objet fichier existant à lire ou à écrire."
#: ../Doc/library/bz2.rst:43
msgid ""
@ -82,12 +97,17 @@ msgid ""
"``'x'``, ``'xb'``, ``'a'`` or ``'ab'`` for binary mode, or ``'rt'``, "
"``'wt'``, ``'xt'``, or ``'at'`` for text mode. The default is ``'rb'``."
msgstr ""
"L'argument *mode* peut valoir ``'r'``, ``'rb'``, ``'w'``, ``'wb'``, ``'x'``, "
"``'xb'``, ``'a'`` ou ``'ab'`` pour le mode binaire, ou ``'rt'``, ``'wt'``, "
"``'xt'`` ou ``'at'`` pour le mode texte. Il vaut par défaut ``'rb'``."
#: ../Doc/library/bz2.rst:47
msgid ""
"The *compresslevel* argument is an integer from 1 to 9, as for the :class:"
"`BZ2File` constructor."
msgstr ""
"L'argument *compresslevel* est un entier de 1 à 9, comme pour le "
"constructeur :class:`BZ2File`."
#: ../Doc/library/bz2.rst:50
msgid ""
@ -96,6 +116,10 @@ msgid ""
"this case, the *encoding*, *errors* and *newline* arguments must not be "
"provided."
msgstr ""
"Pour le mode binaire, cette fonction est équivalente au constructeur :class:"
"`BZ2File` : ``BZ2File(filename, mode, compresslevel=compresslevel)``. Dans "
"ce cas, les arguments *encoding*, *errors* et *newline* arguments ne doivent "
"pas être fournis."
#: ../Doc/library/bz2.rst:55
msgid ""
@ -103,10 +127,13 @@ msgid ""
"class:`io.TextIOWrapper` instance with the specified encoding, error "
"handling behavior, and line ending(s)."
msgstr ""
"Pour le mode texte, un objet :class:`BZ2File` est créé et encapsulé dans une "
"instance :class:`io.TextIOWrapper` avec l'encodage spécifié, le comportement "
"de gestion des erreurs et les fins de ligne."
#: ../Doc/library/bz2.rst:61 ../Doc/library/bz2.rst:127
msgid "The ``'x'`` (exclusive creation) mode was added."
msgstr "Le mode ``'x'`` (création exclusive) est créé."
msgstr "Le mode ``'x'`` (création exclusive) est ajouté."
#: ../Doc/library/bz2.rst:64 ../Doc/library/bz2.rst:134
msgid "Accepts a :term:`path-like object`."
@ -122,6 +149,9 @@ msgid ""
"file directly. Otherwise, *filename* should be a :term:`file object`, which "
"will be used to read or write the compressed data."
msgstr ""
"Si *filename* est un objet :class:`str` ou :class:`bytes`, ouvre le nom de "
"fichier directement. Autrement, *filename* doit être un :term:`file object`, "
"qui est utilisé pour lire ou écrire les données compressées."
#: ../Doc/library/bz2.rst:76
msgid ""
@ -130,12 +160,18 @@ msgid ""
"can equivalently be given as ``'rb'``, ``'wb'``, ``'xb'`` and ``'ab'`` "
"respectively."
msgstr ""
"L'argument *mode* peut être soit ``'r'`` pour lire (par défaut), ``'w'`` "
"pour écraser, ``'x'`` pour créer exclusivement, ou ``'a'`` pour ajouter. Ils "
"peuvent également être écrits respectivement comme ``'rb'``, ``'wb'``, "
"``'xb'`` et ``'ab'``."
#: ../Doc/library/bz2.rst:81
msgid ""
"If *filename* is a file object (rather than an actual file name), a mode of "
"``'w'`` does not truncate the file, and is instead equivalent to ``'a'``."
msgstr ""
"Si *filename* est un objet fichier (plutôt que le nom de fichier réel), le "
"mode ``'w'`` ne tronque pas le fichier, mais équivaut à ``'a'``."
#: ../Doc/library/bz2.rst:84
msgid "The *buffering* argument is ignored. Its use is deprecated."
@ -153,6 +189,8 @@ msgid ""
"If *mode* is ``'r'``, the input file may be the concatenation of multiple "
"compressed streams."
msgstr ""
"Si *mode* est ``'r'``, le fichier d'entrée peut être la concaténation de "
"plusieurs flux compressés."
#: ../Doc/library/bz2.rst:93
msgid ""
@ -160,10 +198,13 @@ msgid ""
"BufferedIOBase`, except for :meth:`detach` and :meth:`truncate`. Iteration "
"and the :keyword:`with` statement are supported."
msgstr ""
":class:`BZ2File` fournit tous les membres spécifiés par la classe :class:`io."
"BufferedIOBase`, excepté les méthodes :meth:`detach` et :meth:`truncate`. "
"L'itération et l'instruction :keyword:`with` sont prises en charge."
#: ../Doc/library/bz2.rst:97
msgid ":class:`BZ2File` also provides the following method:"
msgstr ""
msgstr ":class:`BZ2File` fournit aussi la méthode suivante :"
#: ../Doc/library/bz2.rst:101
msgid ""
@ -171,6 +212,9 @@ msgid ""
"of data will be returned (unless at EOF). The exact number of bytes returned "
"is unspecified."
msgstr ""
"Renvoie des données en mémoire tampon sans avancer la position du fichier. "
"Au moins un octet de donnée (sauf l'EOF) est renvoyé. Le nombre exact "
"d'octets renvoyés n'est pas spécifié."
#: ../Doc/library/bz2.rst:105
msgid ""
@ -179,38 +223,50 @@ msgid ""
"the :class:`BZ2File` was constructed by passing a file object for "
"*filename*)."
msgstr ""
"Bien que l'appel à la méthode :meth:`peek` ne change pas la position du "
"fichier de la classe :class:`BZ2File`, il peut changer la position de "
"l'objet fichier sous-jacent (e.g. si la classe :class:`BZ2File` a été "
"construite en passant un objet fichier à *filename*)."
#: ../Doc/library/bz2.rst:112
msgid "Support for the :keyword:`with` statement was added."
msgstr ""
msgstr "La prise en charge de l'instruction :keyword:`with` a été ajoutée."
#: ../Doc/library/bz2.rst:115
msgid ""
"The :meth:`fileno`, :meth:`readable`, :meth:`seekable`, :meth:`writable`, :"
"meth:`read1` and :meth:`readinto` methods were added."
msgstr ""
"Les méthodes :meth:`fileno`, :meth:`readable`, :meth:`seekable`, :meth:"
"`writable`, :meth:`read1` et :meth:`readinto` ont été ajoutées."
#: ../Doc/library/bz2.rst:119
msgid ""
"Support was added for *filename* being a :term:`file object` instead of an "
"actual filename."
msgstr ""
"La gestion de *filename* comme :term:`file object` au lieu d'un nom de "
"fichier réel a été ajoutée."
#: ../Doc/library/bz2.rst:123
msgid ""
"The ``'a'`` (append) mode was added, along with support for reading multi-"
"stream files."
msgstr ""
"Le mode ``'a'`` (ajout) a été ajouté, avec la prise en charge de la lecture "
"des fichiers *multiflux*."
#: ../Doc/library/bz2.rst:130
msgid ""
"The :meth:`~io.BufferedIOBase.read` method now accepts an argument of "
"``None``."
msgstr ""
"La méthode :meth:`~io.BufferedIOBase.read` accepte maintenant un argument "
"``None``."
#: ../Doc/library/bz2.rst:139
msgid "Incremental (de)compression"
msgstr "(Dé)compression incrémentale"
msgstr "(Dé)compression incrémentielle"
#: ../Doc/library/bz2.rst:143
msgid ""
@ -218,6 +274,9 @@ msgid ""
"incrementally. For one-shot compression, use the :func:`compress` function "
"instead."
msgstr ""
"Crée un nouvel objet compresseur. Cet objet peut être utilisé pour "
"compresser les données de manière incrémentielle. Pour une compression en "
"une seule fois, utilisez à la place la fonction :func:`compress`."
#: ../Doc/library/bz2.rst:147 ../Doc/library/bz2.rst:235
msgid ""
@ -230,23 +289,31 @@ msgid ""
"Provide data to the compressor object. Returns a chunk of compressed data if "
"possible, or an empty byte string otherwise."
msgstr ""
"Fournit la donnée à l'objet compresseur. Renvoie un bloc de données "
"compressées si possible, ou autrement une chaîne d'octet vide."
#: ../Doc/library/bz2.rst:155
msgid ""
"When you have finished providing data to the compressor, call the :meth:"
"`flush` method to finish the compression process."
msgstr ""
"Quand vous avez fini de fournir des données au compresseur, appelez la "
"méthode :meth:`flush` pour finir le processus de compression."
#: ../Doc/library/bz2.rst:161
msgid ""
"Finish the compression process. Returns the compressed data left in internal "
"buffers."
msgstr ""
"Finit le processus de compression. Renvoie la donnée compressée restante "
"dans les tampons internes."
#: ../Doc/library/bz2.rst:164
msgid ""
"The compressor object may not be used after this method has been called."
msgstr ""
"L'objet compresseur ne peut pas être utilisé après que cette méthode a été "
"appelée."
#: ../Doc/library/bz2.rst:169
msgid ""
@ -254,6 +321,9 @@ msgid ""
"incrementally. For one-shot compression, use the :func:`decompress` function "
"instead."
msgstr ""
"Crée un nouvel objet décompresseur. Cet objet peut être utilisé pour "
"décompresser les données de manière incrémentielle. Pour une compression en "
"une seule fois, utilisez à la place la fonction :func:`decompress`."
#: ../Doc/library/bz2.rst:174
msgid ""
@ -262,6 +332,11 @@ msgid ""
"need to decompress a multi-stream input with :class:`BZ2Decompressor`, you "
"must use a new decompressor for each stream."
msgstr ""
"Cette classe ne gère pas de manière transparente les entrées contenant "
"plusieurs flux compressés, à la différence de :func:`decompress` et :class:"
"`BZ2File`. Si vous avez besoin de décompresser une entrée *multiflux* avec "
"la classe :class:`BZ2Decompressor`, vous devez utiliser un nouveau "
"décompresseur pour chaque flux."
#: ../Doc/library/bz2.rst:181
msgid ""
@ -270,6 +345,11 @@ msgid ""
"to :meth:`decompress`. The returned data should be concatenated with the "
"output of any previous calls to :meth:`decompress`."
msgstr ""
"Décompresse *data* (un :term:`bytes-like object`), renvoyant une donnée non "
"compressée en tant que chaîne d'octets. Certaines de ces *data* peuvent être "
"mises en interne en tampon, pour un usage lors d'appels ultérieurs par la "
"méthode :meth:`decompress`. La donnée renvoyée doit être concaténée avec la "
"sortie des appels précédents à la méthode :meth:`decompress`."
#: ../Doc/library/bz2.rst:187
msgid ""
@ -279,6 +359,11 @@ msgid ""
"this case, the next call to :meth:`~.decompress` may provide *data* as "
"``b''`` to obtain more of the output."
msgstr ""
"Si *max_length* est positif, renvoie au plus *max_length* octets de données "
"compressées. Si la limite est atteinte et que d'autres sorties peuvent être "
"produites, l'attribut :attr:`~.needs_input` est positionné sur ``False``. "
"Dans ce cas, lors de l'appel suivant à la méthode :meth:`~.decompress`, vous "
"pouvez fournir ``b''`` dans *data* afin d'obtenir la suite de la sortie."
#: ../Doc/library/bz2.rst:194
msgid ""
@ -286,6 +371,9 @@ msgid ""
"was less than *max_length* bytes, or because *max_length* was negative), "
"the :attr:`~.needs_input` attribute will be set to ``True``."
msgstr ""
"Si toutes les données entrées ont été décompressées et renvoyées (soit parce "
"qu'il y avait moins de *max_length* octets, ou parce que *max_length* était "
"négatif), l'attribut :attr:`~.needs_input` sera configuré sur ``True``."
#: ../Doc/library/bz2.rst:199
msgid ""
@ -293,6 +381,9 @@ msgid ""
"`EOFError`. Any data found after the end of the stream is ignored and saved "
"in the :attr:`~.unused_data` attribute."
msgstr ""
"Essayer de décompresser des données après que la fin du flux soit atteinte "
"lève une erreur `EOFError`. Toute donnée trouvée après la fin du flux est "
"ignorée et sauvegardée dans l'attribut :attr:`~.unused_data`."
#: ../Doc/library/bz2.rst:203
msgid "Added the *max_length* parameter."
@ -300,7 +391,7 @@ msgstr "Ajout du paramètre *max_length*."
#: ../Doc/library/bz2.rst:208
msgid "``True`` if the end-of-stream marker has been reached."
msgstr ""
msgstr "``True`` si le marqueur de fin de flux a été atteint."
#: ../Doc/library/bz2.rst:215
msgid "Data found after the end of the compressed stream."
@ -311,12 +402,16 @@ msgid ""
"If this attribute is accessed before the end of the stream has been reached, "
"its value will be ``b''``."
msgstr ""
"Si l'attribut est accédé avant que la fin du flux ait été atteint, sa valeur "
"sera ``b''``."
#: ../Doc/library/bz2.rst:222
msgid ""
"``False`` if the :meth:`.decompress` method can provide more decompressed "
"data before requiring new uncompressed input."
msgstr ""
"``False`` si la méthode :meth:`.decompress` peut fournir plus de données "
"décompressées avant l'acquisition d'une nouvelle entrée non compressée."
#: ../Doc/library/bz2.rst:229
msgid "One-shot (de)compression"
@ -329,6 +424,8 @@ msgstr "Compresse *data*."
#: ../Doc/library/bz2.rst:238
msgid "For incremental compression, use a :class:`BZ2Compressor` instead."
msgstr ""
"Pour la compression incrémentielle, utilisez à la place la classe :class:"
"`BZ2Compressor`."
#: ../Doc/library/bz2.rst:243
msgid "Decompress *data*."
@ -339,11 +436,15 @@ msgid ""
"If *data* is the concatenation of multiple compressed streams, decompress "
"all of the streams."
msgstr ""
"Si *data* est la concaténation de multiples flux compressés, décompresse "
"tous les flux."
#: ../Doc/library/bz2.rst:248
msgid "For incremental decompression, use a :class:`BZ2Decompressor` instead."
msgstr ""
"Pour une décompression incrémentielle, utilisez à la place la classe :class:"
"`BZ2Decompressor`."
#: ../Doc/library/bz2.rst:250
msgid "Support for multi-stream inputs was added."
msgstr ""
msgstr "Prise en charge des entrées *multiflux*."

View File

@ -19,11 +19,11 @@ msgstr ""
#: ../Doc/library/calendar.rst:2
msgid ":mod:`calendar` --- General calendar-related functions"
msgstr ""
msgstr ":mod:`calendar` — Fonctions calendaires générales"
#: ../Doc/library/calendar.rst:10
msgid "**Source code:** :source:`Lib/calendar.py`"
msgstr "**Code source :** :source:`Lib/calendar.py`"
msgstr "**Code source :** :source:`Lib/calendar.py`"
#: ../Doc/library/calendar.rst:14
msgid ""
@ -35,6 +35,13 @@ msgid ""
"Parameters that specify dates are given as integers. For related "
"functionality, see also the :mod:`datetime` and :mod:`time` modules."
msgstr ""
"Ce module permet d'afficher un calendrier comme le fait le programme Unix :"
"program:`cal`, et il fournit des fonctions utiles relatives au calendrier. "
"Par défaut, ces calendriers ont le lundi comme premier jour de la semaine et "
"le dimanche comme dernier jour. Utilisez :func:`setfirstweekday` pour "
"définir le premier jour de la semaine à dimanche (6) ou à tout autre jour de "
"la semaine. Les paramètres pour spécifier les dates sont donnés sous forme "
"de nombres entiers. Voir aussi les modules :mod:`datetime` et :mod:`time`."
#: ../Doc/library/calendar.rst:22
msgid ""
@ -50,6 +57,9 @@ msgid ""
"Creates a :class:`Calendar` object. *firstweekday* is an integer specifying "
"the first day of the week. ``0`` is Monday (the default), ``6`` is Sunday."
msgstr ""
"Crée un objet :class:`Calendar`. *firstweekday* est un entier spécifiant le "
"premier jour de la semaine, valant par défaut ``0`` (lundi), pouvant aller "
"jusqu'à ``6`` (dimanche)."
#: ../Doc/library/calendar.rst:34
msgid ""
@ -57,10 +67,13 @@ msgid ""
"preparing the calendar data for formatting. This class doesn't do any "
"formatting itself. This is the job of subclasses."
msgstr ""
"L'objet :class:`Calendar` fournit plusieurs méthodes pouvant être utilisées "
"pour préparer les données du calendrier pour le formatage. Cette classe ne "
"fait pas de formatage elle-même. Il s'agit du travail des sous-classes."
#: ../Doc/library/calendar.rst:39
msgid ":class:`Calendar` instances have the following methods:"
msgstr ""
msgstr "Les instances de :class:`Calendar` ont les méthodes suivantes :"
#: ../Doc/library/calendar.rst:43
msgid ""
@ -68,6 +81,8 @@ msgid ""
"The first value from the iterator will be the same as the value of the :attr:"
"`firstweekday` property."
msgstr ""
"Renvoie un itérateur sur les numéros des jours d'une semaine. La première "
"valeur est donc la même que la valeur de la propriété :attr:`firstweekday`."
#: ../Doc/library/calendar.rst:50
msgid ""
@ -76,6 +91,10 @@ msgid ""
"month and all days before the start of the month or after the end of the "
"month that are required to get a complete week."
msgstr ""
"Renvoie un itérateur sur les jours du mois *month* (1 à 12) de l'année "
"*year*. Cet itérateur renvoie tous les jours du mois (sous forme d'instances "
"de :class:`datetime.date`) ainsi que tous les jours avant le début du mois "
"et après la fin du mois nécessaires pour obtenir des semaines complètes."
#: ../Doc/library/calendar.rst:58
msgid ""
@ -95,18 +114,25 @@ msgid ""
"Return a list of the weeks in the month *month* of the *year* as full "
"weeks. Weeks are lists of seven :class:`datetime.date` objects."
msgstr ""
"Renvoie la liste des semaines complètes du mois *month* de l'année *year*. "
"Les semaines sont des listes de sept objets :class:`datetime.date`."
#: ../Doc/library/calendar.rst:77
msgid ""
"Return a list of the weeks in the month *month* of the *year* as full "
"weeks. Weeks are lists of seven tuples of day numbers and weekday numbers."
msgstr ""
"Renvoie la liste des semaines complètes du mois *month* de l'année *year*. "
"Les semaines sont des listes de sept paires contenant le numéro du jour dans "
"le mois et du numéro du jour dans la semaine."
#: ../Doc/library/calendar.rst:84
msgid ""
"Return a list of the weeks in the month *month* of the *year* as full "
"weeks. Weeks are lists of seven day numbers."
msgstr ""
"Renvoie la liste des semaines complètes du mois *month* de l'année *year*. "
"Les semaines sont une liste de sept numéros de jours."
#: ../Doc/library/calendar.rst:90
msgid ""
@ -115,6 +141,11 @@ msgid ""
"(defaulting to 3). Each month contains between 4 and 6 weeks and each week "
"contains 1--7 days. Days are :class:`datetime.date` objects."
msgstr ""
"Renvoie ce qu'il faut pour afficher correctement une année. La valeur "
"renvoyée est une liste de lignes de mois. Chaque ligne mensuelle contient "
"jusqu'à *width* mois (avec une valeur par défaut à 3). Chaque mois contient "
"de 4 à 6 semaines et chaque semaine 1 à 7 jours. Les jours sont des objets :"
"class:`datetime.date`."
#: ../Doc/library/calendar.rst:98
msgid ""
@ -122,6 +153,10 @@ msgid ""
"meth:`yeardatescalendar`). Entries in the week lists are tuples of day "
"numbers and weekday numbers. Day numbers outside this month are zero."
msgstr ""
"Renvoie ce qu'il faut pour afficher correctement une année, (similaire à :"
"meth:`yeardatescalendar`). Les listes des semaines contiennent des paires "
"contenant le numéro du jour du mois et le numéro du jour de la semaine. Les "
"numéro des jours en dehors de ce mois sont à zéro."
#: ../Doc/library/calendar.rst:105
msgid ""
@ -129,14 +164,18 @@ msgid ""
"meth:`yeardatescalendar`). Entries in the week lists are day numbers. Day "
"numbers outside this month are zero."
msgstr ""
"Renvoie ce qu'il faut pour afficher correctement une année, (similaire à :"
"meth:`yeardatescalendar`). Les listes de semaines contiennent des numéros de "
"jours. Les numéros de jours en dehors de ce mois sont de zéro."
#: ../Doc/library/calendar.rst:112
msgid "This class can be used to generate plain text calendars."
msgstr ""
"Cette classe peut être utilisée pour générer des calendriers en texte brut."
#: ../Doc/library/calendar.rst:114
msgid ":class:`TextCalendar` instances have the following methods:"
msgstr ""
msgstr "Les instances :class:`TextCalendar` exposent les méthodes suivantes :"
#: ../Doc/library/calendar.rst:118
msgid ""
@ -146,10 +185,16 @@ msgid ""
"the first weekday as specified in the constructor or set by the :meth:"
"`setfirstweekday` method."
msgstr ""
"Donne le calendrier d'un mois dans une chaîne multi-ligne. Si *w* est "
"fourni, il spécifie la largeur des colonnes de date, qui sont centrées. Si "
"*l* est donné, il spécifie le nombre de lignes que chaque semaine utilisera. "
"Le résultat varie en fonction du premier jour de la semaine spécifié dans le "
"constructeur ou défini par la méthode :meth:`setfirstweekday`."
#: ../Doc/library/calendar.rst:127
msgid "Print a month's calendar as returned by :meth:`formatmonth`."
msgstr ""
"Affiche le calendrier d'un mois tel que renvoyé par :meth:`formatmonth`."
#: ../Doc/library/calendar.rst:132
msgid ""
@ -160,11 +205,20 @@ msgid ""
"`setfirstweekday` method. The earliest year for which a calendar can be "
"generated is platform-dependent."
msgstr ""
"Renvoie un calendrier de *m* colonnes pour une année entière sous forme de "
"chaîne multi-ligne. Les paramètres facultatifs *w*, *l* et *c* correspondent "
"respectivement à la largeur de la colonne date, les lignes par semaines, le "
"nombre d'espace entre les colonnes de mois. Le résultat varie en fonction du "
"premier jour de la semaine spécifié dans le constructeur ou défini par la "
"méthode :meth:`setfirstweekday`. La première année pour laquelle un "
"calendrier peut être généré, dépend de la plateforme."
#: ../Doc/library/calendar.rst:142
msgid ""
"Print the calendar for an entire year as returned by :meth:`formatyear`."
msgstr ""
"Affiche le calendrier pour une année entière comme renvoyé par :meth:"
"`formatyear`."
#: ../Doc/library/calendar.rst:147
msgid "This class can be used to generate HTML calendars."
@ -179,12 +233,17 @@ msgid ""
"Return a month's calendar as an HTML table. If *withyear* is true the year "
"will be included in the header, otherwise just the month name will be used."
msgstr ""
"Renvoie le calendrier d'un mois sous la forme d'une table HTML. Si "
"*withyear* est vrai l'année sera inclue dans l'en-tête, sinon seul le nom du "
"mois sera utilisé."
#: ../Doc/library/calendar.rst:161
msgid ""
"Return a year's calendar as an HTML table. *width* (defaulting to 3) "
"specifies the number of months per row."
msgstr ""
"Renvoie le calendrier d'une année sous la forme d'une table HTML. *width* "
"(par défaut à 3) spécifie le nombre de mois par ligne."
#: ../Doc/library/calendar.rst:167
msgid ""
@ -194,6 +253,12 @@ msgid ""
"be used. *encoding* specifies the encoding to be used for the output "
"(defaulting to the system default encoding)."
msgstr ""
"Renvoie le calendrier d'une année sous la forme d'une page HTML complète. "
"*width* (par défaut à 3) spécifie le nombre de mois par ligne. *css* est le "
"nom de la feuille de style en cascade à utiliser. :const:`None` peut être "
"passé si aucune feuille de style ne doit être utilisée. *encoding* spécifie "
"l'encodage à utiliser pour les données de sortie (par défaut l'encodage par "
"défaut du système)."
#: ../Doc/library/calendar.rst:176
msgid ""
@ -202,6 +267,11 @@ msgid ""
"If this locale includes an encoding all strings containing month and weekday "
"names will be returned as unicode."
msgstr ""
"Le constructeur de cette sous-classe de :class:`TextCalendar` accepte un "
"paramètre régional *locale* : une langue au format ``\"fr_FR.UTF-8\"``, et "
"renvoie les noms de mois et de jours de la semaine traduits dans cette "
"langue. Si ce lieu possède un encodage, toutes les chaînes contenant des "
"noms de mois ou de jours de la semaine seront renvoyées en Unicode."
#: ../Doc/library/calendar.rst:184
msgid ""
@ -210,6 +280,11 @@ msgid ""
"If this locale includes an encoding all strings containing month and weekday "
"names will be returned as unicode."
msgstr ""
"Cette sous-classe de :class:`HTMLCalendar` peut recevoir un nom de lieu dans "
"le constructeur et renvoie les noms de mois et de jours de la semaine selon "
"le lieu spécifié. Si ce lieu possède un encodage, toutes les chaînes "
"contenant des noms de mois ou de jours de la semaine seront renvoyées en "
"Unicode."
#: ../Doc/library/calendar.rst:191
msgid ""
@ -218,10 +293,16 @@ msgid ""
"Because the current locale is a process-wide setting, they are not thread-"
"safe."
msgstr ""
"Les méthodes :meth:`formatweekday` et :meth:`formatmonthname` de ces deux "
"classes changent temporairement le paramètre régional courant pour le "
"paramètre donné via *locale* . Comme le paramètre régional est un réglage de "
"l'ensemble du processus, elles ne sont pas utilisables de manière sûre avec "
"les programmes à fils d'exécution multiples."
#: ../Doc/library/calendar.rst:196
msgid "For simple text calendars this module provides the following functions."
msgstr ""
"Pour les calendriers texte simples ce module fournit les fonctions suivantes."
#: ../Doc/library/calendar.rst:200
msgid ""
@ -230,43 +311,62 @@ msgid ""
"`THURSDAY`, :const:`FRIDAY`, :const:`SATURDAY`, and :const:`SUNDAY` are "
"provided for convenience. For example, to set the first weekday to Sunday::"
msgstr ""
"Fixe le jour de la semaine (``0`` pour lundi, ``6`` pour dimanche) qui "
"débute chaque semaine. Les valeurs :const:`MONDAY`, :const:`TUESDAY`, :const:"
"`WEDNESDAY`, :const:`THURSDAY`, :const:`FRIDAY`, :const:`SATURDAY`, et :"
"const:`SUNDAY` sont fournies par commodité. Par exemple, pour fixer le "
"premier jour de la semaine à dimanche ::"
#: ../Doc/library/calendar.rst:211
msgid "Returns the current setting for the weekday to start each week."
msgstr ""
"Renvoie le réglage courant pour le jour de la semaine débutant chaque "
"semaine."
#: ../Doc/library/calendar.rst:216
msgid ""
"Returns :const:`True` if *year* is a leap year, otherwise :const:`False`."
msgstr ""
"Renvoie :const:`True` si *year* est une année bissextile, sinon :const:"
"`False`."
#: ../Doc/library/calendar.rst:221
msgid ""
"Returns the number of leap years in the range from *y1* to *y2* (exclusive), "
"where *y1* and *y2* are years."
msgstr ""
"Renvoie le nombre d'années bissextiles dans la période de *y1* à *y2* (non "
"inclus), où *y1* et *y2* sont des années."
#: ../Doc/library/calendar.rst:224
msgid "This function works for ranges spanning a century change."
msgstr ""
"Cette fonction marche pour les périodes couvrant un changement de siècle."
#: ../Doc/library/calendar.rst:229
msgid ""
"Returns the day of the week (``0`` is Monday) for *year* (``1970``--...), "
"*month* (``1``--``12``), *day* (``1``--``31``)."
msgstr ""
"Renvoie le jour de la semaine (``0`` pour lundi) pour *year* (``1970``-- …), "
"*month* (``1``--``12``), *day* (``1``--``31``)."
#: ../Doc/library/calendar.rst:235
msgid ""
"Return a header containing abbreviated weekday names. *n* specifies the "
"width in characters for one weekday."
msgstr ""
"Renvoie un en-tête contenant les jours de la semaine en abrégé. *n* spécifie "
"la largeur en caractères pour un jour de la semaine."
#: ../Doc/library/calendar.rst:241
msgid ""
"Returns weekday of first day of the month and number of days in month, for "
"the specified *year* and *month*."
msgstr ""
"Renvoie le jour de la semaine correspondant au premier jour du mois et le "
"nombre de jours dans le mois, pour l'année *year* et le mois *month* "
"spécifiés."
#: ../Doc/library/calendar.rst:247
msgid ""
@ -277,24 +377,31 @@ msgstr ""
#: ../Doc/library/calendar.rst:254
msgid "Prints a month's calendar as returned by :func:`month`."
msgstr ""
msgstr "Affiche le calendrier d'un mois tel que renvoyé par :func:`month`."
#: ../Doc/library/calendar.rst:259
msgid ""
"Returns a month's calendar in a multi-line string using the :meth:"
"`formatmonth` of the :class:`TextCalendar` class."
msgstr ""
"Renvoie le calendrier d'un mois dans une chaîne multi-lignes en utilisant la "
"méthode :meth:`formatmonth` de la classe :class:`TextCalendar`."
#: ../Doc/library/calendar.rst:265
msgid ""
"Prints the calendar for an entire year as returned by :func:`calendar`."
msgstr ""
"Affiche le calendrier pour une année entière tel que renvoyé par :func:"
"`calendar`."
#: ../Doc/library/calendar.rst:270
msgid ""
"Returns a 3-column calendar for an entire year as a multi-line string using "
"the :meth:`formatyear` of the :class:`TextCalendar` class."
msgstr ""
"Renvoie un calendrier sur 3 colonnes pour une année entière dans une chaîne "
"multi-lignes en utilisant la méthode :meth:`formatyear` de la classe :class:"
"`TextCalendar`."
#: ../Doc/library/calendar.rst:276
msgid ""
@ -304,20 +411,29 @@ msgid ""
"encoding. In fact, :func:`time.gmtime` and :func:`timegm` are each others' "
"inverse."
msgstr ""
"Une fonction sans rapport mais pratique, qui prend un *n*-uplet temporel tel "
"que celui renvoyé par la fonction :func:`~time.gmtime` dans le module :mod:"
"`time`, et renvoie la valeur d'horodatage Unix (*timestamp* en anglais) "
"correspondante, en supposant une époque de 1970, et l'encodage POSIX. En "
"fait, :func:`time.gmtime` et :func:`timegm` sont l'inverse l'un de l'autre."
#: ../Doc/library/calendar.rst:283
msgid "The :mod:`calendar` module exports the following data attributes:"
msgstr ""
msgstr "Le module :mod:`calendar` exporte les attributs suivants :"
#: ../Doc/library/calendar.rst:287
msgid "An array that represents the days of the week in the current locale."
msgstr ""
"Un tableau qui représente les jours de la semaine pour les paramètres "
"régionaux actifs."
#: ../Doc/library/calendar.rst:292
msgid ""
"An array that represents the abbreviated days of the week in the current "
"locale."
msgstr ""
"Un tableau qui représente les jours de la semaine en abrégé pour les "
"paramètres régionaux actifs."
#: ../Doc/library/calendar.rst:297
msgid ""
@ -325,6 +441,10 @@ msgid ""
"follows normal convention of January being month number 1, so it has a "
"length of 13 and ``month_name[0]`` is the empty string."
msgstr ""
"Un tableau qui représente les mois de l'année pour les paramètres régionaux "
"actifs. Ceux-ci respectent la convention usuelle où janvier est le mois "
"numéro 1, donc il a une longueur de 13 et ``month_name[0]`` est la chaîne "
"vide."
#: ../Doc/library/calendar.rst:304
msgid ""
@ -332,6 +452,10 @@ msgid ""
"locale. This follows normal convention of January being month number 1, so "
"it has a length of 13 and ``month_abbr[0]`` is the empty string."
msgstr ""
"Un tableau qui représente les mois de l'année en abrégé pour les paramètres "
"régionaux actifs. Celui-ci respectent la convention usuelle où janvier est "
"le mois numéro 1, donc il a une longueur de 13 et ``month_name[0]`` est la "
"chaîne vide."
#: ../Doc/library/calendar.rst:313
msgid "Module :mod:`datetime`"
@ -342,6 +466,8 @@ msgid ""
"Object-oriented interface to dates and times with similar functionality to "
"the :mod:`time` module."
msgstr ""
"Interface orientée objet pour les dates et les heures avec des "
"fonctionnalités similaires au module :mod:`time`."
#: ../Doc/library/calendar.rst:315
msgid "Module :mod:`time`"
@ -349,4 +475,4 @@ msgstr "Module :mod:`time`"
#: ../Doc/library/calendar.rst:316
msgid "Low-level time related functions."
msgstr ""
msgstr "Fonctions bas niveau relatives au temps."

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/cgitb.rst:2
msgid ":mod:`cgitb` --- Traceback manager for CGI scripts"
msgstr ":mod:`cgitb` --- Gestionnaire d'exceptions pour les scripts CGI"
msgstr ":mod:`cgitb` Gestionnaire d'exceptions pour les scripts CGI"
#: ../Doc/library/cgitb.rst:10
msgid "**Source code:** :source:`Lib/cgitb.py`"
@ -53,7 +53,7 @@ msgstr ""
msgid "To enable this feature, simply add this to the top of your CGI script::"
msgstr ""
"Pour activer cette fonctionnalité, ajoutez simplement ceci au début de votre "
"script CGI : ::"
"script CGI ::"
#: ../Doc/library/cgitb.rst:35
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/cmath.rst:2
msgid ":mod:`cmath` --- Mathematical functions for complex numbers"
msgstr "Fonctions mathématiques pour nombres complexes --- :mod:`cmath`"
msgstr "Fonctions mathématiques pour nombres complexes :mod:`cmath`"
#: ../Doc/library/cmath.rst:9
msgid ""
@ -66,7 +66,7 @@ msgid ""
msgstr ""
"Un nombre complexe Python ``z`` est stocké de manière interne en coordonnées "
"*cartésiennes*. Il est entièrement défini par sa *partie réelle* ``z.real`` "
"et sa *partie complexe* ``z.imag``. En d'autres termes : ::"
"et sa *partie complexe* ``z.imag``. En d'autres termes ::"
#: ../Doc/library/cmath.rst:36
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/cmd.rst:2
msgid ":mod:`cmd` --- Support for line-oriented command interpreters"
msgstr ":mod:`cmd` --- Interpréteurs en ligne de commande."
msgstr ":mod:`cmd` Interpréteurs en ligne de commande."
#: ../Doc/library/cmd.rst:9
msgid "**Source code:** :source:`Lib/cmd.py`"

File diff suppressed because it is too large Load Diff

View File

@ -19,11 +19,11 @@ msgstr ""
#: ../Doc/library/codeop.rst:2
msgid ":mod:`codeop` --- Compile Python code"
msgstr ""
msgstr ":mod:`codeop` — Compilation de code Python"
#: ../Doc/library/codeop.rst:10
msgid "**Source code:** :source:`Lib/codeop.py`"
msgstr ""
msgstr "**Code source:** :source:`Lib/codeop.py`"
#: ../Doc/library/codeop.rst:14
msgid ""
@ -33,32 +33,44 @@ msgid ""
"include such a loop in your program you probably want to use the :mod:`code` "
"module instead."
msgstr ""
"Le module :mod:`codeop` fournit des outils permettant d'émuler une boucle de "
"lecture-évaluation-affichage (en anglais *read-eval-print-loop* ou REPL), "
"comme dans le module :mod:`code`. Par conséquent, ce module n'est pas "
"destiné à être utilisé directement; pour inclure un REPL dans un programme, "
"il est préférable d'utiliser le module :mod:`code`."
#: ../Doc/library/codeop.rst:20
msgid "There are two parts to this job:"
msgstr ""
msgstr "Cette tâche se divise en deux parties:"
#: ../Doc/library/codeop.rst:22
msgid ""
"Being able to tell if a line of input completes a Python statement: in "
"short, telling whether to print '``>>>``' or '``...``' next."
msgstr ""
"Pouvoir affirmer qu'une ligne d'entrée est une instruction complète, ou "
"achève une instruction: en bref, savoir s'il faut afficher « ``>>>`` » ou "
"« ``...`` » à sa suite."
#: ../Doc/library/codeop.rst:25
msgid ""
"Remembering which future statements the user has entered, so subsequent "
"input can be compiled with these in effect."
msgstr ""
"Conserver les instructions déjà entrées par l'utilisateur, afin que les "
"entrées suivantes puissent êtres compilées avec elles."
#: ../Doc/library/codeop.rst:28
msgid ""
"The :mod:`codeop` module provides a way of doing each of these things, and a "
"way of doing them both."
msgstr ""
"Le module :mod:`codeop` fournit un moyen d'effectuer ces deux parties, "
"individuellement ou simultanément."
#: ../Doc/library/codeop.rst:31
msgid "To do just the former:"
msgstr ""
msgstr "Pour ne faire que la première partie:"
#: ../Doc/library/codeop.rst:35
msgid ""
@ -68,6 +80,11 @@ msgid ""
"``'<input>'``. Returns ``None`` if *source* is *not* valid Python code, but "
"is a prefix of valid Python code."
msgstr ""
"Essaye de compiler *source*, qui doit être une chaîne de caractères "
"représentant du code Python valide et renvoie un objet code le cas échéant. "
"Dans ce cas, l'attribut de nom de fichier de l'objet code renvoyé sera "
"*filename* (``'<input>'`` par défaut). Renvoie ``None`` si *source* n'est "
"*pas* du code Python valide, mais un *début* de code Python valide."
#: ../Doc/library/codeop.rst:41
msgid ""
@ -75,6 +92,9 @@ msgid ""
"`SyntaxError` is raised if there is invalid Python syntax, and :exc:"
"`OverflowError` or :exc:`ValueError` if there is an invalid literal."
msgstr ""
"En cas de problème avec *source*, une exception est levée; :exc:"
"`SyntaxError` si la syntaxe Python est incorrecte, et :exc:`OverflowError` "
"ou :exc:`ValueError` si un littéral invalide est rencontré."
#: ../Doc/library/codeop.rst:45
msgid ""
@ -82,6 +102,9 @@ msgid ""
"(``'single'``, the default) or as an :term:`expression` (``'eval'``). Any "
"other value will cause :exc:`ValueError` to be raised."
msgstr ""
"L'argument *symbol* détermine si *source* est compilée comme une instruction "
"(``'single'``, par défaut) ou comme une :term:`expression` (``'eval'``). "
"Toute autre valeur lèvera :exc:`ValueError`."
#: ../Doc/library/codeop.rst:51
msgid ""
@ -91,6 +114,12 @@ msgid ""
"backslash followed by two newlines may be followed by arbitrary garbage. "
"This will be fixed once the API for the parser is better."
msgstr ""
"Il est possible (quoique improbable) que l'analyseur s'arrête avant "
"d'atteindre la fin du code source; dans ce cas, les symboles venant après "
"peuvent être ignorés au lieu de provoquer une erreur. Par exemple, une barre "
"oblique inverse suivie de deux retours à la ligne peut être suivie par de la "
"mémoire non-initialisée. Ceci sera corrigé quand l'interface de l'analyseur "
"aura été améliorée."
#: ../Doc/library/codeop.rst:60
msgid ""
@ -100,6 +129,11 @@ msgid ""
"the instance 'remembers' and compiles all subsequent program texts with the "
"statement in force."
msgstr ""
"Les instances de cette classe ont des méthodes :meth:`__call__` de signature "
"identique à la fonction native :func:`compile`, à la différence près que si "
"l'instance compile du code source contenant une instruction :mod:"
"`__future__`, l'instance s'en «souviendra» et compilera tous les codes "
"sources suivants avec cette instruction activée."
#: ../Doc/library/codeop.rst:69
msgid ""
@ -108,3 +142,8 @@ msgid ""
"program text containing a ``__future__`` statement, the instance 'remembers' "
"and compiles all subsequent program texts with the statement in force."
msgstr ""
"Les instances de cette classe ont des méthodes :meth:`__call__` de signature "
"identique à la fonction :func:`compile_command`, à la différence près que si "
"l'instance compile du code source contenant une instruction ``__future__``, "
"l'instance s'en «souviendra» et compilera tous les codes sources suivants "
"avec cette instruction activée."

View File

@ -524,7 +524,7 @@ msgid ""
"functionality, for example::"
msgstr ""
"Ces ABC permettent de demander à des classes ou à des instances si elles "
"fournissent des fonctionnalités particulières, par exemple ::"
"fournissent des fonctionnalités particulières, par exemple ::"
#: ../Doc/library/collections.abc.rst:246
msgid ""
@ -541,7 +541,7 @@ msgstr ""
"il est uniquement nécessaire de fournir les trois méthodes sous-jacentes "
"abstraites :meth:`__contains__`, :meth:`__iter__` et :meth:`__len__`. L'ABC "
"apporte les méthodes restantes, comme :meth:`__and__` et :meth:"
"`isdisjoint` ::"
"`isdisjoint` ::"
#: ../Doc/library/collections.abc.rst:275
msgid "Notes on using :class:`Set` and :class:`MutableSet` as a mixin:"

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/collections.rst:2
msgid ":mod:`collections` --- Container datatypes"
msgstr ":mod:`collections` --- Types de données de conteneurs"
msgstr ":mod:`collections` Types de données de conteneurs"
#: ../Doc/library/collections.rst:10
msgid "**Source code:** :source:`Lib/collections/__init__.py`"
@ -306,8 +306,7 @@ msgstr ""
#: ../Doc/library/collections.rst:134
msgid "Example of simulating Python's internal lookup chain::"
msgstr ""
"Exemple 1 : simulation de la chaîne de recherche interne de Python : ::"
msgstr "Exemple 1 : simulation de la chaîne de recherche interne de Python ::"
#: ../Doc/library/collections.rst:139
msgid ""
@ -316,7 +315,7 @@ msgid ""
"values::"
msgstr ""
"Exemple 2 : spécification d'une hiérarchie pour les options : ligne de "
"commande, variable d'environnement, valeurs par défaut : ::"
"commande, variable d'environnement, valeurs par défaut ::"
#: ../Doc/library/collections.rst:156
msgid ""
@ -324,7 +323,7 @@ msgid ""
"contexts::"
msgstr ""
"Exemple 3 : modèles pour simuler des contexte imbriqués avec la classe :"
"class:`ChainMap` ::"
"class:`ChainMap` ::"
#: ../Doc/library/collections.rst:175
msgid ""
@ -337,7 +336,7 @@ msgstr ""
"premier dictionnaire de la chaîne, alors qu'une recherche inspecte toute la "
"chaîne. Cependant, si l'on veut effectuer des écritures ou suppressions en "
"profondeur, on peut facilement faire une sous-classe qui met à jour les clés "
"trouvées de la chaîne en profondeur : ::"
"trouvées de la chaîne en profondeur ::"
#: ../Doc/library/collections.rst:205
msgid ":class:`Counter` objects"
@ -349,7 +348,7 @@ msgid ""
"example::"
msgstr ""
"Ce module fournit un outil pour effectuer rapidement et facilement des "
"dénombrements. Par exemple : ::"
"dénombrements. Par exemple ::"
#: ../Doc/library/collections.rst:226
msgid ""
@ -460,7 +459,7 @@ msgstr ""
#: ../Doc/library/collections.rst:307
msgid "Common patterns for working with :class:`Counter` objects::"
msgstr "Opérations usuelles sur les objets :class:`Counter` : ::"
msgstr "Opérations usuelles sur les objets :class:`Counter` ::"
#: ../Doc/library/collections.rst:319
msgid ""
@ -825,7 +824,7 @@ msgid ""
"in Unix::"
msgstr ""
"Les *deques* à taille limitée apportent une fonctionnalité similaire au "
"filtre ``tail`` d'Unix : ::"
"filtre ``tail`` d'Unix ::"
#: ../Doc/library/collections.rst:609
msgid ""
@ -834,7 +833,7 @@ msgid ""
msgstr ""
"Une autre approche d'utilisation des *deques* est de maintenir une séquence "
"d'éléments récemment ajoutés en les ajoutant à droite et en retirant les "
"anciens par la gauche : ::"
"anciens par la gauche ::"
#: ../Doc/library/collections.rst:624
msgid ""
@ -865,7 +864,7 @@ msgid ""
"the :class:`dict` class and is not documented here."
msgstr ""
"Renvoie un nouvel objet qui se comporte comme un dictionnaire. :class:"
"`defaultdic` est une sous-classe de la la classe native :class:`dict`. Elle "
"`defaultdict` est une sous-classe de la la classe native :class:`dict`. Elle "
"surcharge une méthode et ajoute une variable d'instance modifiable. Les "
"autres fonctionnalités sont les mêmes que celles des objets :class:`dict` et "
"ne sont pas documentées ici."
@ -1124,8 +1123,7 @@ msgid ""
"tuples returned by the :mod:`csv` or :mod:`sqlite3` modules::"
msgstr ""
"Les tuples nommés sont particulièrement utiles pour associer des noms de "
"champs à des tuples renvoyés par les modules :mod:`csv` ou :mod:"
"`sqlite3` : ::"
"champs à des tuples renvoyés par les modules :mod:`csv` ou :mod:`sqlite3` ::"
#: ../Doc/library/collections.rst:844
msgid ""
@ -1162,7 +1160,7 @@ msgid ""
"values::"
msgstr ""
"Renvoie une nouvelle instance du tuple nommé en remplaçant les champs "
"spécifiés par leurs nouvelles valeurs : ::"
"spécifiés par leurs nouvelles valeurs ::"
#: ../Doc/library/collections.rst:886
msgid ""
@ -1261,8 +1259,8 @@ msgid ""
"See :meth:`types.SimpleNamespace` for a mutable namespace based on an "
"underlying dictionary instead of a tuple."
msgstr ""
"Voir :meth:`types.SimpleNamespace` pour un espace de noms muable basé sur un "
"dictionnaire sous-jacent à la place d'un tuple."
"Voir :meth:`types.SimpleNamespace` pour un espace de nommage muable basé sur "
"un dictionnaire sous-jacent à la place d'un tuple."
#: ../Doc/library/collections.rst:981
msgid ""
@ -1323,7 +1321,7 @@ msgstr ""
"Déplace une clé *key* existante à l'une des deux extrémités du "
"dictionnaire : à droite si *last* vaut ``True`` (comportement par défaut) ou "
"à gauche sinon. Lève une exception :exc:`KeyError` si la clé *key* n'est pas "
"trouvée : ::"
"trouvée ::"
#: ../Doc/library/collections.rst:1025
msgid ""

View File

@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/library/colorsys.rst:2
msgid ":mod:`colorsys` --- Conversions between color systems"
msgstr ":mod:`colorsys` --- Conversions entre les systèmes de couleurs"
msgstr ":mod:`colorsys` Conversions entre les systèmes de couleurs"
#: ../Doc/library/colorsys.rst:9
msgid "**Source code:** :source:`Lib/colorsys.py`"

View File

@ -20,6 +20,7 @@ msgstr ""
#: ../Doc/library/compileall.rst:2
msgid ":mod:`compileall` --- Byte-compile Python libraries"
msgstr ""
":mod:`compileall` — Génération du code intermédiaire des bibliothèques Python"
#: ../Doc/library/compileall.rst:7
msgid "**Source code:** :source:`Lib/compileall.py`"
@ -33,16 +34,25 @@ msgid ""
"installation time, which makes them available for use even by users who "
"don't have write permission to the library directories."
msgstr ""
"Ce module contient des fonctions qui facilitent l'installation de "
"bibliothèques Python. Elles compilent, sous forme de code intermédiaire "
"(*bytecode*), les fichiers source situés dans un dossier de votre choix. Ce "
"module est particulièrement utile pour générer les fichiers de code "
"intermédiaire lors de l'installation d'une bibliothèque, les rendant "
"disponibles même pour les utilisateurs qui n'ont pas les privilèges "
"d'écriture dans l'emplacement d'installation."
#: ../Doc/library/compileall.rst:19
msgid "Command-line use"
msgstr ""
msgstr "Utilisation en ligne de commande"
#: ../Doc/library/compileall.rst:21
msgid ""
"This module can work as a script (using :program:`python -m compileall`) to "
"compile Python sources."
msgstr ""
"On peut se servir de ce module comme d'un script (avec :program:`python -m "
"compileall`) pour compiler les fichiers source Python."
#: ../Doc/library/compileall.rst:29
msgid ""
@ -50,22 +60,33 @@ msgid ""
"files, traversed recursively. If no argument is given, behave as if the "
"command line was ``-l <directories from sys.path>``."
msgstr ""
"Les arguments positionnels sont les fichiers à compiler. Ils peuvent aussi "
"être des dossiers, qui sont alors parcourus récursivement pour compiler tous "
"les fichiers de code :file:`.py` qu'ils contiennent. Lorsque le script ne "
"reçoit aucun argument, il fait comme s'il avait été appelé avec `-l <tous "
"les dossiers de sys.path>`."
#: ../Doc/library/compileall.rst:35
msgid ""
"Do not recurse into subdirectories, only compile source code files directly "
"contained in the named or implied directories."
msgstr ""
"Compiler uniquement les fichiers situés directement dans les dossiers passés "
"en argument ou implicites, sans descendre récursivement dans les sous-"
"dossiers."
#: ../Doc/library/compileall.rst:40
msgid "Force rebuild even if timestamps are up-to-date."
msgstr ""
msgstr "Forcer la recompilation même si les horodatages sont à jour."
#: ../Doc/library/compileall.rst:44
msgid ""
"Do not print the list of files compiled. If passed once, error messages will "
"still be printed. If passed twice (``-qq``), all output is suppressed."
msgstr ""
"Supprimer l'affichage des noms des fichiers compilés.Si cette option est "
"donnée une seule fois, les erreurs sont affichées malgré tout. Vous pouvez "
"les supprimer en passant l'option deux fois (c'est-à-dire avec ``-qq``)."
#: ../Doc/library/compileall.rst:49
msgid ""
@ -75,12 +96,19 @@ msgid ""
"where the source file does not exist at the time the byte-code file is "
"executed."
msgstr ""
"Ce nom de dossier est ajouté en tête du chemin de chaque fichier compilé. Il "
"aura une influence sur les traces d'appels pour les erreurs levées lors de "
"la compilation, et sera reflété dans les fichiers de code intermédiaire, "
"pour utilisation dans les traces d'appels et autres messages si le fichier "
"source n'existe pas au moment de l'exécution."
#: ../Doc/library/compileall.rst:57
msgid ""
"regex is used to search the full path to each file considered for "
"compilation, and if the regex produces a match, the file is skipped."
msgstr ""
"Exclut tous les fichiers dont les noms correspondent à l'expression "
"régulière *regex*."
#: ../Doc/library/compileall.rst:62
msgid ""
@ -88,6 +116,8 @@ msgid ""
"files and directories to compile. If ``list`` is ``-``, read lines from "
"``stdin``."
msgstr ""
"Ajoute chaque ligne du fichier *list* aux fichiers et dossiers à compiler. "
"*list* peut être ``-``, auquel cas le script lit l'entrée standard."
#: ../Doc/library/compileall.rst:68
msgid ""
@ -96,6 +126,11 @@ msgid ""
"is to write files to their :pep:`3147` locations and names, which allows "
"byte-code files from multiple versions of Python to coexist."
msgstr ""
"Utilise l'ancienne manière de nommer et placer les fichiers de code "
"intermédiaire, en écrasant éventuellement ceux générés par une autre version "
"de Python. Par défaut, les règles décrites dans la :pep:`3147` s'appliquent. "
"Elles permettent à différentes versions de l'interpréteur Python de "
"coexister en conservant chacune ses propres fichiers ``.pyc``."
#: ../Doc/library/compileall.rst:75
msgid ""
@ -104,16 +139,23 @@ msgid ""
"compileall <directory> -r 0` is equivalent to :program:`python -m compileall "
"<directory> -l`."
msgstr ""
"Règle le niveau de récursion maximal pour le parcours des sous-dossiers. "
"Lorsque cette option est fournie, ``-l`` est ignorée. :program:`python -m "
"compileall <dossier> -r 0` revient au même que :program:`python -m "
"compileall <dossier> -l`."
#: ../Doc/library/compileall.rst:82
msgid ""
"Use *N* workers to compile the files within the given directory. If ``0`` is "
"used, then the result of :func:`os.cpu_count()` will be used."
msgstr ""
"Effectue la compilation avec *N* processus parallèles. Si *N* vaut 0, autant "
"de processus sont créés que la machine dispose de processeurs (résultat de :"
"func:`os.cpu_count()`)."
#: ../Doc/library/compileall.rst:86
msgid "Added the ``-i``, ``-b`` and ``-h`` options."
msgstr ""
msgstr "ajout des options ``-i``, ``-b`` et ``-h``."
#: ../Doc/library/compileall.rst:89
msgid ""
@ -121,6 +163,9 @@ msgid ""
"to a multilevel value. ``-b`` will always produce a byte-code file ending "
"in ``.pyc``, never ``.pyo``."
msgstr ""
"ajout des options ``-j``, ``-r`` et ``-qq`` (l'option ``-q`` peut donc "
"prendre plusieurs niveaux). ``-b`` produit toujours un fichier de code "
"intermédiaire portant l'extension ``.pyc``, et jamais ``.pyo``."
#: ../Doc/library/compileall.rst:95
msgid ""
@ -128,10 +173,14 @@ msgid ""
"the :func:`compile` function, because the Python interpreter itself already "
"provides the option: :program:`python -O -m compileall`."
msgstr ""
"Il n'y a pas d'option en ligne de commande pour contrôler le niveau "
"d'optimisation utilisé par la fonction :func:`compile`. Il suffit en effet "
"d'utiliser l'option ``-O`` de l'interpréteur Python lui-même : :program:"
"`python -O -m compileall`."
#: ../Doc/library/compileall.rst:100
msgid "Public functions"
msgstr ""
msgstr "Fonctions publiques"
#: ../Doc/library/compileall.rst:104
msgid ""
@ -139,6 +188,9 @@ msgid ""
"py` files along the way. Return a true value if all the files compiled "
"successfully, and a false value otherwise."
msgstr ""
"Parcourt récursivement le dossier *dir*, en compilant tous les fichiers :"
"file:`.py`. Renvoie une valeur vraie si tous les fichiers ont été compilés "
"sans erreur, et une valeur fausse dans le cas contraire."
#: ../Doc/library/compileall.rst:108
msgid ""
@ -154,12 +206,19 @@ msgid ""
"where the source file does not exist at the time the byte-code file is "
"executed."
msgstr ""
"Si *ddir* est fourni, il est ajouté en tête du chemin de chaque fichier "
"compilé, ce qui modifie l'affichage des traces d'appels pour les erreurs qui "
"seraient levées lors de la compilation. De plus, il se retrouve dans les "
"fichiers de code intermédiaire, pour utilisation dans les traces et autres "
"messages si le fichier source n'existe pas au moment de l'exécution."
#: ../Doc/library/compileall.rst:117
msgid ""
"If *force* is true, modules are re-compiled even if the timestamps are up to "
"date."
msgstr ""
"Si *force* est vrai, les modules sont recompilés même si leurs horodatages "
"sont à jour."
#: ../Doc/library/compileall.rst:120
msgid ""
@ -174,6 +233,10 @@ msgid ""
"information are printed to standard out. Set to ``1``, only errors are "
"printed. Set to ``2``, all output is suppressed."
msgstr ""
"Si *quiet* est ``False`` ou bien ``0`` (la valeur par défaut), les noms de "
"fichiers et d'autres informations sont affichés sur la sortie standard. Avec "
"``1``, seules les erreurs sont affichées. Avec ``2``, aucune sortie n'est "
"émise."
#: ../Doc/library/compileall.rst:128 ../Doc/library/compileall.rst:178
msgid ""
@ -183,6 +246,12 @@ msgid ""
"names, which allows byte-code files from multiple versions of Python to "
"coexist."
msgstr ""
"Si *legacy* est vrai, les fichiers de code intermédiaire sont nommés et "
"placés selon l'ancienne méthode, en écrasant éventuellement ceux générés par "
"une autre version de Python. Par défaut, les règles décrites dans la :pep:"
"`3147` s'appliquent. Elles permettent à différentes versions de "
"l'interpréteur Python de coexister en conservant chacune ses propres "
"fichiers ``.pyc``."
#: ../Doc/library/compileall.rst:134 ../Doc/library/compileall.rst:184
msgid ""
@ -201,16 +270,16 @@ msgstr ""
#: ../Doc/library/compileall.rst:143 ../Doc/library/compileall.rst:206
msgid "Added the *legacy* and *optimize* parameter."
msgstr ""
msgstr "ajout des paramètres *legacy* et *optimize*."
#: ../Doc/library/compileall.rst:146
msgid "Added the *workers* parameter."
msgstr ""
msgstr "ajout du paramètre *workers*."
#: ../Doc/library/compileall.rst:149 ../Doc/library/compileall.rst:189
#: ../Doc/library/compileall.rst:209
msgid "*quiet* parameter was changed to a multilevel value."
msgstr ""
msgstr "le paramètre *quiet* peut prendre plusieurs niveaux."
#: ../Doc/library/compileall.rst:152 ../Doc/library/compileall.rst:192
#: ../Doc/library/compileall.rst:212
@ -218,6 +287,8 @@ msgid ""
"The *legacy* parameter only writes out ``.pyc`` files, not ``.pyo`` files no "
"matter what the value of *optimize* is."
msgstr ""
"Lorsque le paramètre *legacy* est vrai, des fichiers ``.pyc``, et jamais ``."
"pyo``, sont générés, quel que soit le niveau d'optimisation."
#: ../Doc/library/compileall.rst:156
msgid "Accepts a :term:`path-like object`."
@ -228,6 +299,8 @@ msgid ""
"Compile the file with path *fullname*. Return a true value if the file "
"compiled successfully, and a false value otherwise."
msgstr ""
"Compile le fichier dont le chemin est donné par *fullname*. Renvoie une "
"valeur vraie si et seulement si le fichier est compilé sans erreur."
#: ../Doc/library/compileall.rst:164
msgid ""
@ -237,6 +310,11 @@ msgid ""
"where the source file does not exist at the time the byte-code file is "
"executed."
msgstr ""
"Si *ddir* est fourni, il est ajouté en tête du chemin de chaque fichier "
"compilé, ce qui modifie l'affichage des traces pour les erreurs qui seraient "
"levées lors de la compilation. De plus, il se retrouve dans les fichiers de "
"code intermédiaire, pour utilisation dans les traces et autres messages si "
"le fichier source n'existe pas au moment de l'exécution."
#: ../Doc/library/compileall.rst:170
msgid ""
@ -251,6 +329,9 @@ msgid ""
"true value if all the files compiled successfully, and a false value "
"otherwise."
msgstr ""
"Compile tous les fichiers :file:`.py` contenus dans les dossiers de ``sys."
"path``. Renvoie une valeur vraie s'ils ont tous été compilés sans erreur, et "
"une valeur fausse dans le cas contraire."
#: ../Doc/library/compileall.rst:201
msgid ""
@ -259,17 +340,23 @@ msgid ""
"`compile_dir` function. Note that unlike the other compile functions, "
"``maxlevels`` defaults to ``0``."
msgstr ""
"Si *skip_curdir* est vrai (c'est le cas par défaut), le dossier courant est "
"exclu de la recherche. Les autres paramètres sont passés à :func:"
"`compile_dir`. Notez que contrairement aux autres fonctions de ce module, la "
"valeur par défaut de ``maxlevels`` est ``0``."
#: ../Doc/library/compileall.rst:216
msgid ""
"To force a recompile of all the :file:`.py` files in the :file:`Lib/` "
"subdirectory and all its subdirectories::"
msgstr ""
"Pour forcer la recompilation de tous les fichiers :file:`.py` dans le "
"dossier :file:`Lib/` et tous ses sous-dossiers ::"
#: ../Doc/library/compileall.rst:233
msgid "Module :mod:`py_compile`"
msgstr ""
msgstr "Module :mod:`py_compile`"
#: ../Doc/library/compileall.rst:234
msgid "Byte-compile a single source file."
msgstr ""
msgstr "Compiler un fichier source unique."

Some files were not shown because too many files have changed in this diff Show More