diff --git a/about.po b/about.po index be23e030..a6be5aed 100644 --- a/about.po +++ b/about.po @@ -60,13 +60,12 @@ msgstr "" "*reStructuredText* et la suite d'outils *Docutils* ;" #: about.rst:26 -#, fuzzy msgid "" "Fredrik Lundh for his Alternative Python Reference project from which Sphinx " "got many good ideas." msgstr "" -"Fredrik Lundh pour son projet `Alternative Python Reference `_, dont Sphinx a pris beaucoup de bonnes idées." +"Fredrik Lundh pour son projet *Alternative Python Reference*, dont Sphinx a " +"pris beaucoup de bonnes idées." #: about.rst:31 msgid "Contributors to the Python Documentation" diff --git a/bugs.po b/bugs.po index 3ba406ee..b1c4362c 100644 --- a/bugs.po +++ b/bugs.po @@ -110,39 +110,39 @@ msgid "" msgstr "Guide complet pour qui souhaite contribuer à la documentation Python." #: bugs.rst:38 -#, fuzzy msgid "" "`Documentation Translations `_" msgstr "" -"`Aider avec la documentation `_" +"`Aider avec la documentation `_" #: bugs.rst:39 msgid "" "A list of GitHub pages for documentation translation and their primary " "contacts." msgstr "" +"Liste de dépôts GitHub où la documentation est traduite, avec les personnes " +"à contacter." #: bugs.rst:45 msgid "Using the Python issue tracker" msgstr "Utilisation du gestionnaire de tickets Python" #: bugs.rst:47 -#, fuzzy msgid "" "Issue reports for Python itself should be submitted via the GitHub issues " "tracker (https://github.com/python/cpython/issues). The GitHub issues " "tracker offers a web form which allows pertinent information to be entered " "and submitted to the developers." msgstr "" -"Les rapports de bogues pour Python lui-même devraient être soumis via le " -"l'outil de suivi des bogues (*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." +"Les rapports concernant un problème relatif à Python lui-même doivent être " +"soumis *via* l'outil de suivi des problèmes de GitHub (https://github.com/" +"python/cpython/issues). Le gestionnaire de tickets propose un formulaire Web " +"permettant de saisir des informations pertinentes à soumettre aux " +"développeurs." #: bugs.rst:52 -#, fuzzy msgid "" "The first step in filing a report is to determine whether the problem has " "already been reported. The advantage in doing so, aside from saving the " @@ -154,46 +154,44 @@ msgid "" msgstr "" "La première étape pour remplir un rapport est de déterminer si le problème a " "déjà été rapporté. L'avantage de cette approche, en plus d'économiser du " -"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; " +"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; " "il se peut que le problème soit déjà résolu dans la prochaine version, ou " "que des informations complémentaires soient attendues (auquel cas votre " -"contribution est la bienvenue !). Pour ce faire, cherchez dans la base de " -"données de bogues grâce à la boîte de recherche en haut de la page." +"contribution est la bienvenue !). Pour ce faire, cherchez dans le " +"gestionnaire de tickets grâce à la boîte de recherche en haut de la page." #: bugs.rst:59 -#, fuzzy msgid "" "If the problem you're reporting is not already in the list, log in to " "GitHub. If you don't already have a GitHub account, create a new account " "using the \"Sign up\" link. It is not possible to submit a bug report " "anonymously." msgstr "" -"Si le problème que vous soumettez n'est pas déjà dans l'outil de suivi des " -"bogues, 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 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 " -"bogue de manière anonyme." +"Si le problème que vous soumettez n'est pas déjà dans la liste, connectez-" +"vous à GitHub. Si vous n'avez pas déjà un compte GitHub, créez un nouveau " +"compte en cliquant sur le lien « Sign Up ». Il n'est pas possible de " +"soumettre un rapport de bogue de manière anonyme." #: bugs.rst:64 -#, fuzzy msgid "" "Being now logged in, you can submit an issue. Click on the \"New issue\" " "button in the top bar to report a new issue." msgstr "" -"Une fois identifié, pour pouvez rapporter un bogue. Sélectionnez le lien " -"*Create New* dans la barre latérale pour ouvrir un nouveau formulaire de " -"rapport de bogue." +"Une fois connecté, vous pouvez rapporter un problème. Sélectionnez le bouton " +"*New issue* dans la barre en haut pour ouvrir un nouveau formulaire de " +"rapport." #: bugs.rst:67 msgid "The submission form has two fields, \"Title\" and \"Comment\"." -msgstr "" +msgstr "Le formulaire de rapport contient deux champs, *Title* et *Comment*." #: bugs.rst:69 msgid "" "For the \"Title\" field, enter a *very* short description of the problem; " "less than ten words is good." msgstr "" +"Dans le champ *Title*, entrez une *très* brève description du problème " +"rencontré ; tâchez de vous limiter à dix mots." #: bugs.rst:72 msgid "" @@ -209,15 +207,14 @@ msgstr "" "informations de versions)." #: bugs.rst:77 -#, fuzzy msgid "" "Each issue report will be reviewed by a developer who will determine what " "needs to be done to correct the problem. You will receive an update each " "time an action is taken on the issue." msgstr "" -"Chaque bogue sera attribué à un développeur qui déterminera ce qui est " +"Chaque rapport sera attribué à un développeur qui déterminera ce qui est " "nécessaire d'entreprendre pour corriger le problème. Vous recevrez une " -"notification à chaque action effectuée sur le bogue." +"notification à chaque action concernant le rapport." #: bugs.rst:86 msgid "" @@ -237,13 +234,12 @@ msgstr "" "est utile." #: bugs.rst:89 -#, fuzzy msgid "" "`Bug Writing Guidelines `_" msgstr "" -"`Guide pour la rédaction de rapports de bogues `_" +"`Guide pour la rédaction de rapports de bogues `_" #: bugs.rst:89 msgid "" diff --git a/c-api/bool.po b/c-api/bool.po index f5f5c1b8..58dae39f 100644 --- a/c-api/bool.po +++ b/c-api/bool.po @@ -32,11 +32,12 @@ msgstr "" "disponibles." #: c-api/bool.rst:16 -#, fuzzy msgid "" "Return true if *o* is of type :c:data:`PyBool_Type`. This function always " "succeeds." -msgstr "Renvoie vrai si *o* est de type :c:data:`PyBook_Type`." +msgstr "" +"Renvoie vrai si *o* est de type :c:data:`PyBook_Type`. Cette fonction " +"réussit systématiquement." #: c-api/bool.rst:22 msgid "" diff --git a/c-api/buffer.po b/c-api/buffer.po index d0d9ee46..ad16daf6 100644 --- a/c-api/buffer.po +++ b/c-api/buffer.po @@ -455,7 +455,7 @@ msgstr "oui" #: c-api/buffer.rst:323 c-api/buffer.rst:325 msgid "if needed" -msgstr "" +msgstr "si nécessaire" #: c-api/buffer.rst:278 c-api/buffer.rst:298 c-api/buffer.rst:302 #: c-api/buffer.rst:327 c-api/buffer.rst:331 c-api/buffer.rst:335 @@ -513,7 +513,7 @@ msgstr "" #: c-api/buffer.rst:321 msgid "readonly" -msgstr "" +msgstr "lecture seule" #: c-api/buffer.rst:321 msgid "format" @@ -529,7 +529,7 @@ msgstr "0" #: c-api/buffer.rst:329 c-api/buffer.rst:337 msgid "1 or 0" -msgstr "" +msgstr "0 ou 1" #: c-api/buffer.rst:342 msgid "Complex arrays" @@ -642,6 +642,8 @@ msgid "" "Return the implied :c:data:`~Py_buffer.itemsize` from :c:data:`~Py_buffer." "format`. On error, raise an exception and return -1." msgstr "" +"Retourne l'\\ :c:data:`~Py_buffer.itemsize` du :c:data:`~Py_buffer.format`. " +"En cas d'erreur, lève une exception et retourne -1." #: c-api/buffer.rst:475 msgid "" diff --git a/c-api/bytes.po b/c-api/bytes.po index bff9fb2e..d1898ad5 100644 --- a/c-api/bytes.po +++ b/c-api/bytes.po @@ -96,7 +96,7 @@ msgstr "Commentaires" #: c-api/bytes.rst:70 msgid ":attr:`%%`" -msgstr "" +msgstr ":attr:`%%`" #: c-api/bytes.rst:70 msgid "*n/a*" @@ -108,7 +108,7 @@ msgstr "" #: c-api/bytes.rst:72 msgid ":attr:`%c`" -msgstr "" +msgstr ":attr:`%c`" #: c-api/bytes.rst:75 c-api/bytes.rst:96 msgid "int" @@ -120,7 +120,7 @@ msgstr "" #: c-api/bytes.rst:75 msgid ":attr:`%d`" -msgstr "" +msgstr ":attr:`%d`" #: c-api/bytes.rst:75 msgid "Equivalent to ``printf(\"%d\")``. [1]_" @@ -128,7 +128,7 @@ msgstr "" #: c-api/bytes.rst:78 msgid ":attr:`%u`" -msgstr "" +msgstr ":attr:`%u`" #: c-api/bytes.rst:78 msgid "unsigned int" @@ -140,7 +140,7 @@ msgstr "" #: c-api/bytes.rst:81 msgid ":attr:`%ld`" -msgstr "" +msgstr ":attr:`%ld`" #: c-api/bytes.rst:81 msgid "long" @@ -152,7 +152,7 @@ msgstr "" #: c-api/bytes.rst:84 msgid ":attr:`%lu`" -msgstr "" +msgstr ":attr:`%lu`" #: c-api/bytes.rst:84 msgid "unsigned long" @@ -164,7 +164,7 @@ msgstr "" #: c-api/bytes.rst:87 msgid ":attr:`%zd`" -msgstr "" +msgstr ":attr:`%zd`" #: c-api/bytes.rst:87 msgid ":c:type:`\\ Py_ssize_t`" @@ -176,7 +176,7 @@ msgstr "" #: c-api/bytes.rst:90 msgid ":attr:`%zu`" -msgstr "" +msgstr ":attr:`%zu`" #: c-api/bytes.rst:90 msgid "size_t" @@ -188,7 +188,7 @@ msgstr "" #: c-api/bytes.rst:93 msgid ":attr:`%i`" -msgstr "" +msgstr ":attr:`%i`" #: c-api/bytes.rst:93 msgid "Equivalent to ``printf(\"%i\")``. [1]_" @@ -196,7 +196,7 @@ msgstr "" #: c-api/bytes.rst:96 msgid ":attr:`%x`" -msgstr "" +msgstr ":attr:`%x`" #: c-api/bytes.rst:96 msgid "Equivalent to ``printf(\"%x\")``. [1]_" @@ -204,7 +204,7 @@ msgstr "" #: c-api/bytes.rst:99 msgid ":attr:`%s`" -msgstr "" +msgstr ":attr:`%s`" #: c-api/bytes.rst:99 msgid "const char\\*" @@ -216,7 +216,7 @@ msgstr "" #: c-api/bytes.rst:102 msgid ":attr:`%p`" -msgstr "" +msgstr ":attr:`%p`" #: c-api/bytes.rst:102 msgid "const void\\*" diff --git a/c-api/call.po b/c-api/call.po index 2e0dcbe5..71157885 100644 --- a/c-api/call.po +++ b/c-api/call.po @@ -266,7 +266,7 @@ msgstr "Fonction" #: c-api/call.rst:195 msgid "callable" -msgstr "" +msgstr "appelable (*callable*)" #: c-api/call.rst:195 msgid "args" diff --git a/c-api/exceptions.po b/c-api/exceptions.po index 8f29d937..60dc1ebb 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -661,7 +661,7 @@ msgstr "" #: c-api/exceptions.rst:651 msgid "3.11" -msgstr "" +msgstr "3.11" #: c-api/exceptions.rst:643 msgid "" @@ -1067,7 +1067,7 @@ msgstr ":c:data:`PyExc_ModuleNotFoundError`." #: c-api/exceptions.rst:902 msgid ":exc:`ModuleNotFoundError`" -msgstr "" +msgstr ":exc:`ModuleNotFoundError`" #: c-api/exceptions.rst:904 msgid ":c:data:`PyExc_NameError`" @@ -1131,7 +1131,7 @@ msgstr ":c:data:`PyExc_ReferenceError`" #: c-api/exceptions.rst:918 msgid ":exc:`RecursionError`" -msgstr "" +msgstr ":exc:`RecursionError`" #: c-api/exceptions.rst:920 msgid ":c:data:`PyExc_ReferenceError`" diff --git a/c-api/function.po b/c-api/function.po index c60e6d04..21ba742b 100644 --- a/c-api/function.po +++ b/c-api/function.po @@ -20,11 +20,11 @@ msgstr "Objets fonctions" #: c-api/function.rst:10 msgid "There are a few functions specific to Python functions." -msgstr "" +msgstr "Certaines fonctions sont spécifiques aux fonctions Python." #: c-api/function.rst:15 msgid "The C structure used for functions." -msgstr "" +msgstr "La structure C utilisée pour les fonctions." #: c-api/function.rst:22 msgid "" @@ -32,6 +32,8 @@ msgid "" "function type. It is exposed to Python programmers as ``types." "FunctionType``." msgstr "" +"C'est une instance de :c:type:`PyTypeObject` et représente le type fonction " +"en Python. Il est exposé aux développeurs comme ``types.FunctionType``." #: c-api/function.rst:28 msgid "" @@ -39,6 +41,9 @@ msgid "" "`PyFunction_Type`). The parameter must not be ``NULL``. This function " "always succeeds." msgstr "" +"Renvoie vrai si *o* est un objet de type fonction (a comme type :c:data:" +"`PyFunction_Type`). Le paramètre ne doit pas être ``NULL``. Cette fonction " +"réussit toujours." #: c-api/function.rst:34 msgid "" @@ -46,6 +51,8 @@ msgid "" "*globals* must be a dictionary with the global variables accessible to the " "function." msgstr "" +"Renvoie une nouvelle fonction associée avec l'objet *code*. *globals* doit " +"être un dictionnaire avec les variables globales accessibles à la fonction." #: c-api/function.rst:37 msgid "" @@ -65,11 +72,12 @@ msgstr "" #: c-api/function.rst:54 msgid "Return the code object associated with the function object *op*." -msgstr "" +msgstr "Renvoie l'objet code associé avec l'objet de la fonction *op*." #: c-api/function.rst:59 msgid "Return the globals dictionary associated with the function object *op*." msgstr "" +"Renvoie le dictionnaire global associé avec l'objet de la fonction *op*." #: c-api/function.rst:64 msgid "" @@ -83,37 +91,49 @@ msgid "" "Return the argument default values of the function object *op*. This can be " "a tuple of arguments or ``NULL``." msgstr "" +"Renvoie les valeurs par défaut de l'argument de l'objet de la fonction *op*. " +"Cela peut être un tuple d'arguments ou ``NULL``." #: c-api/function.rst:77 msgid "" "Set the argument default values for the function object *op*. *defaults* " "must be ``Py_None`` or a tuple." msgstr "" +"Définir les valeurs par défaut de l'argument pour l'objet de la fonction " +"*op*. *defaults* doit être ``Py_None`` ou un tuple." #: c-api/function.rst:94 c-api/function.rst:108 msgid "Raises :exc:`SystemError` and returns ``-1`` on failure." -msgstr "" +msgstr "Lève :exc:`SystemError` et renvoie ``-1`` en cas de d'échec." #: c-api/function.rst:85 msgid "" "Return the closure associated with the function object *op*. This can be " "``NULL`` or a tuple of cell objects." msgstr "" +"Renvoie la fermeture associée avec l'objet de la fonction *op*. Cela peut " +"être ``NULL`` ou un tuple d'objets cellule." #: c-api/function.rst:91 msgid "" "Set the closure associated with the function object *op*. *closure* must be " "``Py_None`` or a tuple of cell objects." msgstr "" +"Définir la fermeture associée avec l'objet de la fonction *op*. *closure* " +"doit être ``Py_None`` ou un tuple d'objets cellule." #: c-api/function.rst:99 msgid "" "Return the annotations of the function object *op*. This can be a mutable " "dictionary or ``NULL``." msgstr "" +"Renvoie les annotations de l'objet de la fonction *op*. Cela peut être un " +"dictionnaire mutable ou ``NULL``." #: c-api/function.rst:105 msgid "" "Set the annotations for the function object *op*. *annotations* must be a " "dictionary or ``Py_None``." msgstr "" +"Définir les annotations pour l'objet de la fonction *op*. *annotations* doit " +"être un dictionnaire ou ``Py_None``." diff --git a/c-api/init.po b/c-api/init.po index 6f5850e5..b1f8a4e4 100644 --- a/c-api/init.po +++ b/c-api/init.po @@ -1690,7 +1690,7 @@ msgstr "" #: c-api/init.rst:1470 msgid ":const:`PyTrace_CALL`" -msgstr "" +msgstr ":const:`PyTrace_CALL`" #: c-api/init.rst:1475 c-api/init.rst:1486 msgid "Always :c:data:`Py_None`." @@ -1698,7 +1698,7 @@ msgstr "" #: c-api/init.rst:1472 msgid ":const:`PyTrace_EXCEPTION`" -msgstr "" +msgstr ":const:`PyTrace_EXCEPTION`" #: c-api/init.rst:1472 msgid "Exception information as returned by :func:`sys.exc_info`." @@ -1706,11 +1706,11 @@ msgstr "" #: c-api/init.rst:1475 msgid ":const:`PyTrace_LINE`" -msgstr "" +msgstr ":const:`PyTrace_LINE`" #: c-api/init.rst:1477 msgid ":const:`PyTrace_RETURN`" -msgstr "" +msgstr ":const:`PyTrace_RETURN`" #: c-api/init.rst:1477 msgid "" @@ -1719,7 +1719,7 @@ msgstr "" #: c-api/init.rst:1480 msgid ":const:`PyTrace_C_CALL`" -msgstr "" +msgstr ":const:`PyTrace_C_CALL`" #: c-api/init.rst:1482 c-api/init.rst:1484 msgid "Function object being called." @@ -1727,15 +1727,15 @@ msgstr "" #: c-api/init.rst:1482 msgid ":const:`PyTrace_C_EXCEPTION`" -msgstr "" +msgstr ":const:`PyTrace_C_EXCEPTION`" #: c-api/init.rst:1484 msgid ":const:`PyTrace_C_RETURN`" -msgstr "" +msgstr ":const:`PyTrace_C_RETURN`" #: c-api/init.rst:1486 msgid ":const:`PyTrace_OPCODE`" -msgstr "" +msgstr ":const:`PyTrace_OPCODE`" #: c-api/init.rst:1491 msgid "" diff --git a/c-api/refcounting.po b/c-api/refcounting.po index 405d98f2..0823e517 100644 --- a/c-api/refcounting.po +++ b/c-api/refcounting.po @@ -23,6 +23,8 @@ msgid "" "The macros in this section are used for managing reference counts of Python " "objects." msgstr "" +"Les macros dans cette section permettent de gérer le compteur de références " +"des objets Python." #: c-api/refcounting.rst:16 msgid "" @@ -36,6 +38,8 @@ msgid "" "Increment the reference count for object *o*. The object may be ``NULL``, " "in which case the macro has no effect." msgstr "" +"Incrémente le compteur de références de l'objet *o*. La macro n'a pas " +"d'effet si l'objet est ``NULL``." #: c-api/refcounting.rst:28 msgid "" @@ -57,6 +61,15 @@ msgid "" "update the list data structure, and then call :c:func:`Py_DECREF` for the " "temporary variable." msgstr "" +"La fonction de dés-allocation peut invoquer du code Python arbitraire (par " +"exemple quand une instance d'une classe avec une méthode :meth:`__del__` est " +"supprimée). Le code exécuté a accès à toutes les variables Python globales " +"mais les exceptions lors de l'exécution de ce code ne sont pas propagées. " +"Tous les objets qui peuvent être atteints à partir d'une variable globale " +"doivent être dans un état cohérent avant d'appeler :c:func:`Py_DECREF`. Par " +"exemple le code pour supprimer un élément d'une liste doit copier une " +"référence à l'objet dans une variable temporaire, mettre à jour la liste, et " +"enfin appeler :c:func:`Py_DECREF` avec la variable temporaire." #: c-api/refcounting.rst:47 msgid "" @@ -64,6 +77,10 @@ msgid "" "in which case the macro has no effect; otherwise the effect is the same as " "for :c:func:`Py_DECREF`, and the same warning applies." msgstr "" +"Décrémente le compteur de références de l'objet *o*. L'objet peut être " +"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le " +"comportement est identique à :c:func:`Py_DECREF` et les mêmes avertissements " +"sont de rigueur." #: c-api/refcounting.rst:54 msgid "" @@ -74,12 +91,20 @@ msgid "" "object passed because the macro carefully uses a temporary variable and sets " "the argument to ``NULL`` before decrementing its reference count." msgstr "" +"Décrémente le compteur de références de l'objet *o*. L'objet peut être " +"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le " +"comportement est identique à :c:func:`Py_DECREF`, puis l'argument est mis à " +"``NULL``. L'avertissement au sujet de l'objet passé en argument à :c:func:" +"`Py_DECREF` ne s'applique pas car la macro utilise une variable temporaire " +"et met l'objet à ``NULL`` avant de décrémenter le compteur de références." #: c-api/refcounting.rst:61 msgid "" "It is a good idea to use this macro whenever decrementing the reference " "count of an object that might be traversed during garbage collection." msgstr "" +"Il est recommandé d'utiliser cette macro lorsqu'on décrémente le compteur de " +"référence d'un objet qui peut être parcouru par le ramasse-miette." #: c-api/refcounting.rst:65 msgid "" @@ -95,3 +120,7 @@ msgid "" "core: :c:func:`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:" "`_Py_NewReference`, as well as the global variable :c:data:`_Py_RefTotal`." msgstr "" +"Les fonctions ou macros suivantes doivent être uniquement utilisées au sein " +"de l'interpréteur et ne font pas partie de l'API publique : :c:func:" +"`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:`_Py_NewReference`, " +"ainsi que la variable globale :c:data:`_Py_RefTotal`." diff --git a/c-api/reflection.po b/c-api/reflection.po index d21042c5..a53042a2 100644 --- a/c-api/reflection.po +++ b/c-api/reflection.po @@ -60,7 +60,7 @@ msgstr "" #: c-api/reflection.rst:36 msgid "Get the *frame* next outer frame." -msgstr "" +msgstr "Renvoie la *frame* encadrant immédiatement à *frame*." #: c-api/reflection.rst:38 msgid "Return a strong reference, or ``NULL`` if *frame* has no outer frame." @@ -72,7 +72,7 @@ msgstr "" #: c-api/reflection.rst:47 msgid "Get the *frame* code." -msgstr "" +msgstr "Obtenir le code *frame*." #: c-api/reflection.rst:49 msgid "Return a strong reference." diff --git a/c-api/structures.po b/c-api/structures.po index dde393d8..47af15dc 100644 --- a/c-api/structures.po +++ b/c-api/structures.po @@ -191,7 +191,7 @@ msgstr "Signification" #: c-api/structures.rst:210 msgid ":attr:`ml_name`" -msgstr "" +msgstr ":attr:`ml_name`" #: c-api/structures.rst:218 c-api/structures.rst:379 c-api/structures.rst:462 #: c-api/structures.rst:470 @@ -204,7 +204,7 @@ msgstr "" #: c-api/structures.rst:212 msgid ":attr:`ml_meth`" -msgstr "" +msgstr ":attr:`ml_meth`" #: c-api/structures.rst:212 msgid "PyCFunction" @@ -216,7 +216,7 @@ msgstr "" #: c-api/structures.rst:215 msgid ":attr:`ml_flags`" -msgstr "" +msgstr ":attr:`ml_flags`" #: c-api/structures.rst:368 c-api/structures.rst:391 msgid "int" @@ -228,7 +228,7 @@ msgstr "" #: c-api/structures.rst:218 msgid ":attr:`ml_doc`" -msgstr "" +msgstr ":attr:`ml_doc`" #: c-api/structures.rst:379 msgid "points to the contents of the docstring" @@ -384,7 +384,7 @@ msgstr "" #: c-api/structures.rst:366 msgid ":attr:`name`" -msgstr "" +msgstr ":attr:`name`" #: c-api/structures.rst:366 msgid "name of the member" @@ -392,7 +392,7 @@ msgstr "" #: c-api/structures.rst:368 msgid ":attr:`!type`" -msgstr "" +msgstr ":attr:`!type`" #: c-api/structures.rst:368 msgid "the type of the member in the C struct" @@ -400,7 +400,7 @@ msgstr "" #: c-api/structures.rst:371 msgid ":attr:`offset`" -msgstr "" +msgstr ":attr:`offset`" #: c-api/structures.rst:407 msgid "Py_ssize_t" @@ -413,7 +413,7 @@ msgstr "" #: c-api/structures.rst:375 msgid ":attr:`flags`" -msgstr "" +msgstr ":attr:`flags`" #: c-api/structures.rst:375 msgid "flag bits indicating if the field should be read-only or writable" @@ -421,7 +421,7 @@ msgstr "" #: c-api/structures.rst:379 msgid ":attr:`doc`" -msgstr "" +msgstr ":attr:`doc`" #: c-api/structures.rst:383 msgid "" @@ -609,7 +609,7 @@ msgstr "" #: c-api/structures.rst:462 msgid "name" -msgstr "" +msgstr "nom" #: c-api/structures.rst:462 msgid "attribute name" diff --git a/c-api/typeobj.po b/c-api/typeobj.po index 3b249c24..125d35be 100644 --- a/c-api/typeobj.po +++ b/c-api/typeobj.po @@ -171,7 +171,7 @@ msgstr "" #: c-api/typeobj.rst:64 c-api/typeobj.rst:68 msgid ":ref:`sub-slots`" -msgstr "" +msgstr ":ref:`sub-slots`" #: c-api/typeobj.rst:64 c-api/typeobj.rst:68 c-api/typeobj.rst:82 msgid "%" @@ -2054,7 +2054,7 @@ msgstr "Comparaison" #: c-api/typeobj.rst:1354 msgid ":const:`Py_LT`" -msgstr "" +msgstr ":const:`Py_LT`" #: c-api/typeobj.rst:1354 msgid "``<``" @@ -2062,7 +2062,7 @@ msgstr "``<``" #: c-api/typeobj.rst:1356 msgid ":const:`Py_LE`" -msgstr "" +msgstr ":const:`Py_LE`" #: c-api/typeobj.rst:1356 msgid "``<=``" @@ -2070,7 +2070,7 @@ msgstr "``<=``" #: c-api/typeobj.rst:1358 msgid ":const:`Py_EQ`" -msgstr "" +msgstr ":const:`Py_EQ`" #: c-api/typeobj.rst:1358 msgid "``==``" @@ -2078,7 +2078,7 @@ msgstr "``==``" #: c-api/typeobj.rst:1360 msgid ":const:`Py_NE`" -msgstr "" +msgstr ":const:`Py_NE`" #: c-api/typeobj.rst:1360 msgid "``!=``" @@ -2086,7 +2086,7 @@ msgstr "``!=``" #: c-api/typeobj.rst:1362 msgid ":const:`Py_GT`" -msgstr "" +msgstr ":const:`Py_GT`" #: c-api/typeobj.rst:1362 msgid "``>``" @@ -2094,7 +2094,7 @@ msgstr "``>``" #: c-api/typeobj.rst:1364 msgid ":const:`Py_GE`" -msgstr "" +msgstr ":const:`Py_GE`" #: c-api/typeobj.rst:1364 msgid "``>=``" diff --git a/c-api/unicode.po b/c-api/unicode.po index 89ec1947..a926f68c 100644 --- a/c-api/unicode.po +++ b/c-api/unicode.po @@ -16,11 +16,11 @@ msgstr "" #: c-api/unicode.rst:6 msgid "Unicode Objects and Codecs" -msgstr "" +msgstr "Objets Unicode et Codecs" #: c-api/unicode.rst:12 msgid "Unicode Objects" -msgstr "" +msgstr "Objets Unicode" #: c-api/unicode.rst:14 msgid "" @@ -31,6 +31,12 @@ msgid "" "65536; otherwise, code points must be below 1114112 (which is the full " "Unicode range)." msgstr "" +"Depuis l'implémentation de :pep:`393` dans Python 3.3, les objets Unicode " +"utilisent une variété de représentations internes, pour permettre de gérer " +"l'intervalle complet des caractères Unicode en restant efficace en termes de " +"mémoire. Il y a des cas spéciaux pour les chaînes où tous les points de code " +"sont inférieurs à 128, 256, ou 65536 ; sinon, les points de code doivent " +"être inférieurs à 1114112 (qui est l'intervalle Unicode complet)." #: c-api/unicode.rst:20 msgid "" @@ -44,6 +50,9 @@ msgid "" "Due to the transition between the old APIs and the new APIs, Unicode objects " "can internally be in two states depending on how they were created:" msgstr "" +"En raison de la transition des anciennes APIs vers les nouvelles APIs, les " +"objets Unicode peuvent être dans deux états internes selon comment ils ont " +"été créés :" #: c-api/unicode.rst:27 msgid "" @@ -51,6 +60,9 @@ msgid "" "Unicode API. They use the most efficient representation allowed by the " "implementation." msgstr "" +"Les objets Unicode « canoniques » sont tous les objets créés par une API " +"Unicode non-dépréciée. Ils utilisent la représentation la plus efficace " +"permise par l'implémentation." #: c-api/unicode.rst:31 msgid "" @@ -66,16 +78,21 @@ msgid "" "APIs. All Unicode objects will be \"canonical\" since then. See :pep:`623` " "for more information." msgstr "" +"Les objets Unicode « historiques » vont être supprimés de Python 3.12 avec " +"les APIs dépréciées. Tous les objets Unicode vont être « canoniques » à " +"partir de là. Voir :pep:`623` pour plus d'information." #: c-api/unicode.rst:43 msgid "Unicode Type" -msgstr "" +msgstr "Type Unicode" #: c-api/unicode.rst:45 msgid "" "These are the basic Unicode object types used for the Unicode implementation " "in Python:" msgstr "" +"Voici les types d'objets Unicode utilisés pour l'implémentation Unicode en " +"Python :" #: c-api/unicode.rst:52 msgid "" @@ -83,6 +100,9 @@ msgid "" "characters of 32 bits, 16 bits and 8 bits, respectively. When dealing with " "single Unicode characters, use :c:type:`Py_UCS4`." msgstr "" +"Voici les *typedefs* pour les types entiers non signés suffisamment large " +"pour contenir des caractères de 32 bits, 16 bits et 8 bits, respectivement. " +"Pour traiter des caractères uniques, utilisez :c:type:`Py_UCS4`." #: c-api/unicode.rst:61 msgid "" @@ -96,6 +116,9 @@ msgid "" "whether you selected a \"narrow\" or \"wide\" Unicode version of Python at " "build time." msgstr "" +"Dans les versions précédentes, ceci était un type 16-bit ou un type 32-bit " +"selon que vous choisissiez une version Unicode *narrow* ou *wide* de Python " +"à la compilation." #: c-api/unicode.rst:74 msgid "" @@ -472,7 +495,7 @@ msgstr "Commentaires" #: c-api/unicode.rst:464 msgid ":attr:`%%`" -msgstr "" +msgstr ":attr:`%%`" #: c-api/unicode.rst:464 msgid "*n/a*" @@ -484,7 +507,7 @@ msgstr "" #: c-api/unicode.rst:466 msgid ":attr:`%c`" -msgstr "" +msgstr ":attr:`%c`" #: c-api/unicode.rst:469 c-api/unicode.rst:505 msgid "int" @@ -496,7 +519,7 @@ msgstr "" #: c-api/unicode.rst:469 msgid ":attr:`%d`" -msgstr "" +msgstr ":attr:`%d`" #: c-api/unicode.rst:469 msgid "Equivalent to ``printf(\"%d\")``. [1]_" @@ -504,7 +527,7 @@ msgstr "" #: c-api/unicode.rst:472 msgid ":attr:`%u`" -msgstr "" +msgstr ":attr:`%u`" #: c-api/unicode.rst:472 msgid "unsigned int" @@ -516,7 +539,7 @@ msgstr "" #: c-api/unicode.rst:475 msgid ":attr:`%ld`" -msgstr "" +msgstr ":attr:`%ld`" #: c-api/unicode.rst:478 msgid "long" @@ -528,7 +551,7 @@ msgstr "" #: c-api/unicode.rst:478 msgid ":attr:`%li`" -msgstr "" +msgstr ":attr:`%li`" #: c-api/unicode.rst:478 msgid "Equivalent to ``printf(\"%li\")``. [1]_" @@ -536,7 +559,7 @@ msgstr "" #: c-api/unicode.rst:481 msgid ":attr:`%lu`" -msgstr "" +msgstr ":attr:`%lu`" #: c-api/unicode.rst:481 msgid "unsigned long" @@ -548,7 +571,7 @@ msgstr "" #: c-api/unicode.rst:484 msgid ":attr:`%lld`" -msgstr "" +msgstr ":attr:`%lld`" #: c-api/unicode.rst:487 msgid "long long" @@ -560,7 +583,7 @@ msgstr "" #: c-api/unicode.rst:487 msgid ":attr:`%lli`" -msgstr "" +msgstr ":attr:`%lli`" #: c-api/unicode.rst:487 msgid "Equivalent to ``printf(\"%lli\")``. [1]_" @@ -568,7 +591,7 @@ msgstr "" #: c-api/unicode.rst:490 msgid ":attr:`%llu`" -msgstr "" +msgstr ":attr:`%llu`" #: c-api/unicode.rst:490 msgid "unsigned long long" @@ -580,7 +603,7 @@ msgstr "" #: c-api/unicode.rst:493 msgid ":attr:`%zd`" -msgstr "" +msgstr ":attr:`%zd`" #: c-api/unicode.rst:496 msgid ":c:type:`\\ Py_ssize_t`" @@ -592,7 +615,7 @@ msgstr "" #: c-api/unicode.rst:496 msgid ":attr:`%zi`" -msgstr "" +msgstr ":attr:`%zi`" #: c-api/unicode.rst:496 msgid "Equivalent to ``printf(\"%zi\")``. [1]_" @@ -600,7 +623,7 @@ msgstr "" #: c-api/unicode.rst:499 msgid ":attr:`%zu`" -msgstr "" +msgstr ":attr:`%zu`" #: c-api/unicode.rst:499 msgid "size_t" @@ -612,7 +635,7 @@ msgstr "" #: c-api/unicode.rst:502 msgid ":attr:`%i`" -msgstr "" +msgstr ":attr:`%i`" #: c-api/unicode.rst:502 msgid "Equivalent to ``printf(\"%i\")``. [1]_" @@ -620,7 +643,7 @@ msgstr "" #: c-api/unicode.rst:505 msgid ":attr:`%x`" -msgstr "" +msgstr ":attr:`%x`" #: c-api/unicode.rst:505 msgid "Equivalent to ``printf(\"%x\")``. [1]_" @@ -628,7 +651,7 @@ msgstr "" #: c-api/unicode.rst:508 msgid ":attr:`%s`" -msgstr "" +msgstr ":attr:`%s`" #: c-api/unicode.rst:508 msgid "const char\\*" @@ -640,7 +663,7 @@ msgstr "" #: c-api/unicode.rst:511 msgid ":attr:`%p`" -msgstr "" +msgstr ":attr:`%p`" #: c-api/unicode.rst:511 msgid "const void\\*" @@ -655,7 +678,7 @@ msgstr "" #: c-api/unicode.rst:519 msgid ":attr:`%A`" -msgstr "" +msgstr ":attr:`%A`" #: c-api/unicode.rst:522 c-api/unicode.rst:534 msgid "PyObject\\*" @@ -667,7 +690,7 @@ msgstr "" #: c-api/unicode.rst:522 msgid ":attr:`%U`" -msgstr "" +msgstr ":attr:`%U`" #: c-api/unicode.rst:522 #, fuzzy @@ -676,7 +699,7 @@ msgstr "Un objet Unicode." #: c-api/unicode.rst:524 msgid ":attr:`%V`" -msgstr "" +msgstr ":attr:`%V`" #: c-api/unicode.rst:524 msgid "PyObject\\*, const char\\*" @@ -691,7 +714,7 @@ msgstr "" #: c-api/unicode.rst:531 msgid ":attr:`%S`" -msgstr "" +msgstr ":attr:`%S`" #: c-api/unicode.rst:531 msgid "The result of calling :c:func:`PyObject_Str`." @@ -699,7 +722,7 @@ msgstr "" #: c-api/unicode.rst:534 msgid ":attr:`%R`" -msgstr "" +msgstr ":attr:`%R`" #: c-api/unicode.rst:534 msgid "The result of calling :c:func:`PyObject_Repr`." diff --git a/distributing/index.po b/distributing/index.po index c8ea91fd..e8a297e6 100644 --- a/distributing/index.po +++ b/distributing/index.po @@ -77,14 +77,13 @@ msgid "Key terms" msgstr "Vocabulaire" #: distributing/index.rst:34 -#, fuzzy msgid "" "the `Python Package Index `__ is a public repository of " "open source licensed packages made available for use by other Python users" msgstr "" -"le `Python Packaging Index `__ est un dépôt public de " +"Le `Python Package Index `__ est un dépôt public de " "paquets sous licence libre rendus disponibles par d'autres utilisateurs " -"Python" +"Python." #: distributing/index.rst:37 msgid "" @@ -227,14 +226,13 @@ msgstr "" "invite de commande ::" #: distributing/index.rst:104 -#, fuzzy msgid "" "For POSIX users (including macOS and Linux users), these instructions assume " "the use of a :term:`virtual environment`." msgstr "" -"Pour les utilisateurs d'environnements POSIX (incluant Mac OS X et les " -"utilisateurs de Linux), ces instructions supposent l'utilisation d'un :term:" -"`environnement virtuel`." +"Pour les utilisateurs d'environnements POSIX (dont macOS et Linux), ces " +"instructions supposent l'utilisation d'un :term:`environnement virtuel " +"`." #: distributing/index.rst:107 msgid "" @@ -276,15 +274,14 @@ msgstr "" "project_>`_" #: distributing/index.rst:130 -#, fuzzy msgid "`Uploading the project to the Python Package Index`_" msgstr "" "`(en) Téléverser le projet sur le Python Packaging Index `_" +"project to the Python Packaging Index_>`_ ;" #: distributing/index.rst:131 msgid "`The .pypirc file`_" -msgstr "" +msgstr "`(en) Le fichier .pypirc `_." #: distributing/index.rst:144 msgid "How do I...?" @@ -304,9 +301,8 @@ msgid "This isn't an easy topic, but here are a few tips:" msgstr "Ce n'est pas un sujet facile, mais voici quelques conseils :" #: distributing/index.rst:153 -#, fuzzy msgid "check the Python Package Index to see if the name is already in use" -msgstr "vérifiez dans le *Python Packaging Index* si le nom est déjà utilisé" +msgstr "vérifiez dans le *Python Package Index* si le nom est déjà utilisé ;" #: distributing/index.rst:154 msgid "" diff --git a/distutils/sourcedist.po b/distutils/sourcedist.po index e5a6c5c2..6b9ffa56 100644 --- a/distutils/sourcedist.po +++ b/distutils/sourcedist.po @@ -112,7 +112,7 @@ msgstr "Fichier *tar* compressé par *bzip2* (:file:`.tar.bz2`)" #: distutils/sourcedist.rst:37 distutils/sourcedist.rst:43 msgid "\\(5)" -msgstr "" +msgstr "\\(5)" #: distutils/sourcedist.rst:37 msgid "``xztar``" diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po index b00f0602..fe680a9e 100644 --- a/extending/newtypes_tutorial.po +++ b/extending/newtypes_tutorial.po @@ -16,7 +16,7 @@ msgstr "" #: extending/newtypes_tutorial.rst:7 msgid "Defining Extension Types: Tutorial" -msgstr "" +msgstr "Tutoriel : définir des types dans des extensions" #: extending/newtypes_tutorial.rst:14 msgid "" @@ -26,10 +26,15 @@ msgid "" "pattern, but there are some details that you need to understand before you " "can get started. This document is a gentle introduction to the topic." msgstr "" +"Python permet à l'auteur d'un module d'extension C de définir de nouveaux " +"types qui peuvent être manipulés depuis du code Python, à la manière des " +"types natifs :class:`str` et :class:`list`. Les implémentations de tous les " +"types d'extension ont des similarités, mais quelques subtilités doivent être " +"abordées avant de commencer." #: extending/newtypes_tutorial.rst:24 msgid "The Basics" -msgstr "" +msgstr "Les bases" #: extending/newtypes_tutorial.rst:26 msgid "" @@ -48,6 +53,8 @@ msgid "" "So, if you want to define a new extension type, you need to create a new " "type object." msgstr "" +"Donc, pour définir un nouveau type dans une extension, vous devez créer un " +"nouvel objet type." #: extending/newtypes_tutorial.rst:38 msgid "" @@ -55,6 +62,9 @@ msgid "" "but complete, module that defines a new type named :class:`Custom` inside a " "C extension module :mod:`custom`:" msgstr "" +"Ce genre de chose ne s'explique correctement qu'avec des exemples, voici " +"donc un module minimaliste mais suffisant qui définit un nouveau type nommé :" +"class:`Custom` dans le module d'extension :mod:`custom` :" #: extending/newtypes_tutorial.rst:43 msgid "" @@ -63,18 +73,27 @@ msgid "" "allows defining heap-allocated extension types using the :c:func:" "`PyType_FromSpec` function, which isn't covered in this tutorial." msgstr "" +"Ce qui est montré ici est la manière traditionnelle de définir des types " +"d'extension *statiques*, et cela convient dans la majorité des cas. L'API C " +"permet aussi de définir des types alloués sur le tas, via la fonction :c:" +"func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel." #: extending/newtypes_tutorial.rst:50 msgid "" "Now that's quite a bit to take in at once, but hopefully bits will seem " "familiar from the previous chapter. This file defines three things:" msgstr "" +"C'est un peu long, mais vous devez déjà reconnaître quelques morceaux " +"expliqués au chapitre précédent. Ce fichier définit trois choses :" #: extending/newtypes_tutorial.rst:53 msgid "" "What a :class:`Custom` **object** contains: this is the ``CustomObject`` " "struct, which is allocated once for each :class:`Custom` instance." msgstr "" +"Ce qu'un **objet** :class:`Custom` contient : c'est la structure " +"``CustomObject``, qui est allouée une fois pour chaque instance de :class:" +"`Custom`." #: extending/newtypes_tutorial.rst:55 msgid "" @@ -82,16 +101,21 @@ msgid "" "which defines a set of flags and function pointers that the interpreter " "inspects when specific operations are requested." msgstr "" +"Comment le **type** :class:`Custom` se comporte : c'est la structure " +"``CustomType``, qui définit l'ensemble des options et pointeurs de fonction " +"utilisés par l'interpréteur." #: extending/newtypes_tutorial.rst:58 msgid "" "How to initialize the :mod:`custom` module: this is the ``PyInit_custom`` " "function and the associated ``custommodule`` struct." msgstr "" +"Comment initialiser le module :mod:`custom` : c'est la fonction " +"``PyInit_custom`` et la structure associée ``custommodule``." #: extending/newtypes_tutorial.rst:61 msgid "The first bit is::" -msgstr "" +msgstr "Commençons par ::" #: extending/newtypes_tutorial.rst:67 msgid "" @@ -108,6 +132,9 @@ msgid "" "There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be " "wary of adding one by accident: some compilers will complain." msgstr "" +"Il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. " +"Attention à ne pas l'ajouter par accident : certains compilateurs pourraient " +"s'en plaindre." #: extending/newtypes_tutorial.rst:78 msgid "" @@ -115,10 +142,13 @@ msgid "" "``PyObject_HEAD`` boilerplate; for example, here is the definition for " "standard Python floats::" msgstr "" +"Bien sûr, les objets ajoutent généralement des données supplémentaires après " +"l'entête standard ``PyObject_HEAD``. Par exemple voici la définition du type " +"standard Python ``float`` ::" #: extending/newtypes_tutorial.rst:87 msgid "The second bit is the definition of the type object. ::" -msgstr "" +msgstr "La deuxième partie est la définition de l'objet type ::" #: extending/newtypes_tutorial.rst:100 msgid "" @@ -126,6 +156,10 @@ msgid "" "listing all the :c:type:`PyTypeObject` fields that you don't care about and " "also to avoid caring about the fields' declaration order." msgstr "" +"Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour " +"remplir la structure, comme ci-dessus, afin d'éviter d'avoir à lister les " +"champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas " +"vous soucier de leur ordre." #: extending/newtypes_tutorial.rst:104 msgid "" @@ -134,22 +168,31 @@ msgid "" "fields will be filled with zeros by the C compiler, and it's common practice " "to not specify them explicitly unless you need them." msgstr "" +"La définition de :c:type:`PyTypeObject` dans :file:`object.h` contient en " +"fait bien plus de :ref:`champs ` que la définition ci-dessus. " +"Les champs restants sont mis à zéro par le compilateur C, et c'est une " +"pratique répandue de ne pas spécifier les champs dont vous n'avez pas besoin." #: extending/newtypes_tutorial.rst:109 msgid "We're going to pick it apart, one field at a time::" -msgstr "" +msgstr "Regardons les champs de cette structure, un par un ::" #: extending/newtypes_tutorial.rst:113 msgid "" "This line is mandatory boilerplate to initialize the ``ob_base`` field " "mentioned above. ::" msgstr "" +"Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné " +"précédemment." #: extending/newtypes_tutorial.rst:118 msgid "" "The name of our type. This will appear in the default textual " "representation of our objects and in some error messages, for example:" msgstr "" +"C'est le nom de notre type. Il apparaît dans la représentation textuelle par " +"défaut de nos objets, ainsi que dans quelques messages d'erreur, par " +"exemple :" #: extending/newtypes_tutorial.rst:128 msgid "" @@ -159,6 +202,11 @@ msgid "" "`custom.Custom`. Using the real dotted import path is important to make your " "type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::" msgstr "" +"Notez que le nom comporte un point : il inclut le nom du module et le nom du " +"type. Dans ce cas le module est :mod:`custom`, et le type est :class:" +"`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer " +"correctement son type, avec le point, est important pour le rendre " +"compatible avec :mod:`pydoc` et :mod:`pickle`. ::" #: extending/newtypes_tutorial.rst:137 msgid "" @@ -166,6 +214,10 @@ msgid "" "class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only " "used for variable-sized objects and should otherwise be zero." msgstr "" +"C'est pour que Python sache combien de mémoire allouer à la création d'une " +"nouvelle instance de :class:`Custom`. :c:member:`~PyTypeObject.tp_itemsize` " +"n'est utilisé que pour les objets de taille variable, sinon il doit rester à " +"zéro." #: extending/newtypes_tutorial.rst:143 msgid "" @@ -180,10 +232,22 @@ msgid "" "type will be :class:`object`, or else you will be adding data members to " "your base type, and therefore increasing its size." msgstr "" +"Si vous voulez qu'une classe en Python puisse hériter de votre type, et que " +"votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, " +"vous rencontrerez des problèmes avec l'héritage multiple. Une sous-classe " +"Python de votre type devra lister votre type en premier dans son :attr:" +"`~class.__bases__`, sans quoi elle ne sera pas capable d'appeler la méthode :" +"meth:`__new__` de votre type sans erreur. Vous pouvez éviter ce problème en " +"vous assurant que votre type a un :c:member:`~PyTypeObject.tp_basicsize` " +"plus grand que son parent. La plupart du temps ce sera vrai (soit son parent " +"sera :class:`object`, soit vous ajouterez des attributs à votre type, " +"augmentant ainsi sa taille)." #: extending/newtypes_tutorial.rst:153 msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::" msgstr "" +"On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de " +"type. ::" #: extending/newtypes_tutorial.rst:157 msgid "" @@ -191,11 +255,17 @@ msgid "" "the members defined until at least Python 3.3. If you need further members, " "you will need to OR the corresponding flags." msgstr "" +"Chaque type doit inclure cette constante dans ses options : elle active tous " +"les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de plus " +"de membres, vous pouvez la combiner à d'autres constantes avec un *ou* " +"binaire." #: extending/newtypes_tutorial.rst:161 msgid "" "We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::" msgstr "" +"On fournit une *docstring* pour ce type via le membre :c:member:" +"`~PyTypeObject.tp_doc`. ::" #: extending/newtypes_tutorial.rst:165 msgid "" @@ -205,12 +275,19 @@ msgid "" "use the default implementation provided by the API function :c:func:" "`PyType_GenericNew`. ::" msgstr "" +"Pour permettre la création d'une instance, nous devons fournir un *handler* :" +"c:member:`~PyTypeObject.tp_new`, qui est l'équivalent de la méthode Python :" +"meth:`__new__`, mais elle a besoin d'être spécifiée explicitement. Dans ce " +"cas, on se contente de l'implémentation par défaut fournie par la fonction :" +"c:func:`PyType_GenericNew` de l'API." #: extending/newtypes_tutorial.rst:172 msgid "" "Everything else in the file should be familiar, except for some code in :c:" "func:`PyInit_custom`::" msgstr "" +"Le reste du fichier doit vous être familier, en dehors du code de :c:func:" +"`PyInit_custom` ::" #: extending/newtypes_tutorial.rst:178 msgid "" @@ -218,18 +295,25 @@ msgid "" "the appropriate default values, including :attr:`ob_type` that we initially " "set to ``NULL``. ::" msgstr "" +"Il initialise le type :class:`Custom`, en assignant quelques membres à leurs " +"valeurs par défaut, tel que :attr:`ob_type` qui valait initialement " +"``NULL``. ::" #: extending/newtypes_tutorial.rst:189 msgid "" "This adds the type to the module dictionary. This allows us to create :" "class:`Custom` instances by calling the :class:`Custom` class:" msgstr "" +"Ici on ajoute le type au dictionnaire du module. Cela permet de créer une " +"instance de :class:`Custom` en appelant la classe :class:`Custom` :" #: extending/newtypes_tutorial.rst:197 msgid "" "That's it! All that remains is to build it; put the above code in a file " "called :file:`custom.c` and:" msgstr "" +"C'est tout ! Il ne reste plus qu'à compiler, placez le code ci-dessus dans " +"un fichier :file:`custom.c` et :" #: extending/newtypes_tutorial.rst:206 msgid "in a file called :file:`setup.py`; then typing" diff --git a/faq/design.po b/faq/design.po index d337f20e..fa16d2c8 100644 --- a/faq/design.po +++ b/faq/design.po @@ -1205,20 +1205,26 @@ msgid "" "expressions) and loop (with ``while`` and ``for`` statements, possibly " "containing ``continue`` and ``break``)." msgstr "" +"Dans les années 1970, les gens se sont aperçus que le foisonnement de *goto* " +"conduisait à du code « spaghetti » difficile à comprendre et à modifier. " +"Dans les langages de haut niveau, c'est d'autant moins nécessaire qu'il " +"existe différentes manières de créer des branches (en Python, les " +"instructions ``if`` et les expressions ``or``, ``and`` et ``if-else``) et de " +"boucler (avec les instructions ``while`` et ``for``, qui peuvent contenir " +"des ``continue`` et ``break``)." #: faq/design.rst:608 -#, fuzzy msgid "" "One can also use exceptions to provide a \"structured goto\" that works even " "across function calls. Many feel that exceptions can conveniently emulate " "all reasonable uses of the \"go\" or \"goto\" constructs of C, Fortran, and " "other languages. For example::" msgstr "" -"Vous pouvez utiliser les exceptions afin de mettre en place un \"``goto`` " -"structuré\" qui fonctionne même avec les appels de fonctions. Beaucoup de " -"personnes estiment que les exceptions peuvent émuler idéalement tout " -"utilisation raisonnable des constructions ``go`` ou ``goto`` en C, en " -"Fortran ou autres langages de programmation. Par exemple ::" +"Vous pouvez utiliser les exceptions afin de mettre en place un « *goto* " +"structuré » qui fonctionne même à travers les appels de fonctions. Beaucoup " +"de personnes estiment que les exceptions sont une façon commode d'émuler " +"l'utilisation raisonnable des constructions *go* ou *goto* du C, du Fortran " +"ou d'autres langages de programmation. Par exemple ::" #: faq/design.rst:624 msgid "" @@ -1371,6 +1377,7 @@ msgstr "" #: faq/design.rst:710 msgid "Why don't generators support the with statement?" msgstr "" +"Pourquoi l'instruction ``with`` ne prend-elle pas en charge les générateurs ?" #: faq/design.rst:712 msgid "" @@ -1379,6 +1386,11 @@ msgid "" "iterator run to completion, no closing is needed. When it is, wrap it as " "\"contextlib.closing(generator)\" in the 'with' statement." msgstr "" +"Pour des raisons d'ordre technique, un générateur utilisé directement comme " +"gestionnaire de contexte ne pourrait pas fonctionner. Dans le cas le plus " +"courant, où un générateur est utilisé jusqu'à épuisement, il n'y a pas " +"besoin de le fermer. Sinon, on peut toujours mettre ``contextlib." +"closing(générateur)`` dans la ligne du ``with``." #: faq/design.rst:719 msgid "Why are colons required for the if/while/def/class statements?" diff --git a/faq/gui.po b/faq/gui.po index 9c7f5240..d2f71a9f 100644 --- a/faq/gui.po +++ b/faq/gui.po @@ -28,14 +28,10 @@ msgid "General GUI Questions" msgstr "Questions générales sur l'interface graphique" #: faq/gui.rst:18 -#, fuzzy msgid "What GUI toolkits exist for Python?" -msgstr "" -"Quelles boîtes à outils IUG spécifiques à la plate-forme existent pour " -"Python ?" +msgstr "Quelles boîtes à outils IUG existent pour Python ?" #: faq/gui.rst:20 -#, fuzzy msgid "" "Standard builds of Python include an object-oriented interface to the Tcl/Tk " "widget set, called :ref:`tkinter `. This is probably the easiest " @@ -50,7 +46,7 @@ msgstr "" "la plupart des `distributions binaires `_ " "de Python) et à utiliser. Pour plus d'informations sur *Tk*, y compris les " "liens vers les sources, voir la page d'accueil `Tcl/Tk `_. *Tcl/Tk* est entièrement portable sur les plates-formes Mac OS X, " +"tk>`_. *Tcl/Tk* est entièrement portable sur les plates-formes macOS, " "Windows et Unix." #: faq/gui.rst:28 @@ -61,6 +57,11 @@ msgid "" "wiki.python.org/moin/GuiProgramming#Platform-specific_Frameworks>`_ GUI " "frameworks can be found on the python wiki." msgstr "" +"D'autres outils existent. Le choix doit dépendre notamment de la ou des " +"plateformes que vous visez. Sur le Wiki Python se trouvent des listes de " +"bibliothèques graphiques `multiplateformes `_ et `pour une seule plate-forme " +"`_." #: faq/gui.rst:36 msgid "Tkinter questions" @@ -293,7 +294,6 @@ msgstr "" #~ msgid "FLTK" #~ msgstr "*FLTK*" -#, fuzzy #~ msgid "" #~ "Python bindings for `the FLTK toolkit `_, a simple " #~ "yet powerful and mature cross-platform windowing system, are available " @@ -302,7 +302,7 @@ msgstr "" #~ "Les liaisons Python pour `the FLTK toolkit `_, un " #~ "système de fenêtrage multi-plateformes simple mais puissant et mûr, sont " #~ "disponibles auprès de `the PyFLTK project `_." +#~ "io>`_." #~ msgid "OpenGL" #~ msgstr "*OpenGL*" diff --git a/faq/installed.po b/faq/installed.po index 3fe309e9..f28a68a3 100644 --- a/faq/installed.po +++ b/faq/installed.po @@ -92,14 +92,13 @@ msgstr "" "d'administration de ces marques sont écrits en Python." #: faq/installed.rst:32 -#, fuzzy msgid "" "Many Unix-compatible operating systems, such as macOS and some Linux " "distributions, have Python installed by default; it's included in the base " "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." +"Python est installé par défaut sur de nombreux systèmes compatibles Unix, " +"comme macOS et certaines distributions Linux." #: faq/installed.rst:38 msgid "Can I delete Python?" diff --git a/faq/library.po b/faq/library.po index 20ea418d..726b1db8 100644 --- a/faq/library.po +++ b/faq/library.po @@ -811,13 +811,12 @@ msgid "How do I access the serial (RS232) port?" msgstr "Comment accéder au port de transmission en série (RS-232) ?" #: faq/library.rst:614 -#, fuzzy msgid "For Win32, OSX, Linux, BSD, Jython, IronPython:" -msgstr "Pour Win32, POSIX (Linux, BSD, etc.) et Jython :" +msgstr "Pour Win32, OSX, Linux, BSD, Jython et IronPython :" #: faq/library.rst:616 msgid "https://pypi.org/project/pyserial/" -msgstr "" +msgstr "https://pypi.org/project/pyserial/" #: faq/library.rst:618 msgid "For Unix, see a Usenet post by Mitch Chapman:" diff --git a/faq/programming.po b/faq/programming.po index 0cc9b7eb..4e74bbb2 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -70,7 +70,6 @@ msgstr "" "idle``) contient un débogueur graphique." #: faq/programming.rst:31 -#, fuzzy msgid "" "PythonWin is a Python IDE that includes a GUI debugger based on pdb. The " "PythonWin debugger colors breakpoints and has quite a few cool features such " @@ -83,10 +82,9 @@ msgstr "" "embarque un débogueur graphique basé sur ``pdb``. Le débogueur *PythonWin* " "colore les points d'arrêts et possède quelques fonctionnalités sympathiques, " "comme la possibilité de déboguer des programmes développés sans " -"*PythonWin*. *PythonWin* est disponible dans le projet `Extensions Python " -"pour Windows `__ et fait partie " -"de la distribution ActivePython (voir https://www.activestate.com/" -"activepython\\ )." +"*PythonWin*. *PythonWin* est disponible dans le projet `pywin32 `_ et fait partie de la distribution " +"`ActivePython `_." #: faq/programming.rst:38 msgid "" @@ -101,12 +99,17 @@ msgid "" "`trepan3k `_ is a gdb-like " "debugger." msgstr "" +"`trepan3k `_ est un débogueur " +"semblable à GDB." #: faq/programming.rst:43 msgid "" "`Visual Studio Code `_ is an IDE with " "debugging tools that integrates with version-control software." msgstr "" +"`Visual Studio Code `_ est un EDI qui " +"contient des outils de débogage. Il sait interagir avec les outils de " +"gestion de versions." #: faq/programming.rst:46 msgid "" @@ -122,12 +125,11 @@ msgstr "`Wing IDE `_" #: faq/programming.rst:50 msgid "`Komodo IDE `_" -msgstr "" +msgstr "`Komodo IDE `_ ;" #: faq/programming.rst:51 -#, fuzzy msgid "`PyCharm `_" -msgstr "PyCharm (https://www.jetbrains.com/pycharm/)" +msgstr "`PyCharm `_ ;" #: faq/programming.rst:55 msgid "Are there tools to help find bugs or perform static analysis?" @@ -216,10 +218,12 @@ msgid "" "The following packages can help with the creation of console and GUI " "executables:" msgstr "" +"Voici quelques paquets qui permettent de créer des exécutables en ligne de " +"commande comme graphiques :" #: faq/programming.rst:97 msgid "`Nuitka `_ (Cross-platform)" -msgstr "" +msgstr "`Nuitka `_ (multiplateformes) ;" #: faq/programming.rst:98 msgid "`PyInstaller `_ (Cross-platform)" @@ -229,15 +233,21 @@ msgstr "" msgid "" "`PyOxidizer `_ (Cross-platform)" msgstr "" +"`PyOxidizer `_ (multi-" +"plateforme) ;" #: faq/programming.rst:100 msgid "" "`cx_Freeze `_ (Cross-platform)" msgstr "" +"`cx_Freeze `_ (multi-" +"plateforme) ;" #: faq/programming.rst:101 msgid "`py2app `_ (macOS only)" msgstr "" +"`py2app `_ (uniquement pour " +"macOS) ;" #: faq/programming.rst:102 #, fuzzy @@ -1281,6 +1291,8 @@ msgstr "" #: faq/programming.rst:840 msgid "How do I get int literal attribute instead of SyntaxError?" msgstr "" +"Pourquoi ai-je une erreur de syntaxe en essayant de lire un attribut d'un " +"entier littéral ?" #: faq/programming.rst:842 msgid "" @@ -1293,6 +1305,8 @@ msgid "" "The solution is to separate the literal from the period with either a space " "or parentheses." msgstr "" +"Il faut séparer l'entier du point, soit avec une espace, soit avec des " +"parenthèses." #: faq/programming.rst:861 msgid "How do I convert a string to a number?" @@ -2226,6 +2240,12 @@ msgid "" "registered class even if hasn't directly or indirectly inherited from it. " "To test for \"true inheritance\", scan the :term:`MRO` of the class:" msgstr "" +"Notez que :func:`isinstance` prend aussi en compte l'héritage virtuel d'une :" +"term:`classe mère abstraite `, c'est à dire qu'elle " +"renvoie ``True`` pour une classe A enregistrée auprès d'une classe mère " +"abstraite B même si A n'est pas directement ou indirectement une classe " +"fille de B. Pour vérifier l'héritage dans le sens plus restreint, parcourez " +"l'\\ :term:`ordre de résolution des méthodes ` de la classe :" #: faq/programming.rst:1483 msgid "" @@ -2641,13 +2661,15 @@ msgstr "" #: faq/programming.rst:1766 msgid "When can I rely on identity tests with the *is* operator?" -msgstr "" +msgstr "Quand puis-je raisonnablement utiliser le test d'identité *is* ?" #: faq/programming.rst:1768 msgid "" "The ``is`` operator tests for object identity. The test ``a is b`` is " "equivalent to ``id(a) == id(b)``." msgstr "" +"L'opérateur ``is`` détermine si deux objets sont identiques, c'est-à-dire le " +"même objet. Le test ``a is b`` est équivalent à ``id(a) == id(b)``." #: faq/programming.rst:1771 msgid "" @@ -2656,6 +2678,11 @@ msgid "" "usually faster than equality tests. And unlike equality tests, identity " "tests are guaranteed to return a boolean ``True`` or ``False``." msgstr "" +"La propriété la plus importante du test d'identité est qu'un objet est " +"toujours identique à lui-même. Quelle que soit la valeur de *a*, ``a is a`` " +"vaut toujours ``True``. Un test d'identité est généralement plus rapide " +"qu'un test d'égalité. De plus, contrairement à l'opérateur ``==``, " +"l'opérateur ``is`` renvoie toujours un booléen, ``True`` ou ``False``." #: faq/programming.rst:1776 msgid "" @@ -2663,12 +2690,18 @@ msgid "" "object identity is assured. Generally, there are three circumstances where " "identity is guaranteed:" msgstr "" +"Cependant, les tests d'identité ne peuvent remplacer les tests d'égalité que " +"si l'identité est garantie. C'est le cas dans les trois situations " +"suivantes :" #: faq/programming.rst:1780 msgid "" "1) Assignments create new names but do not change object identity. After " "the assignment ``new = old``, it is guaranteed that ``new is old``." msgstr "" +"1) Les affectations créent de nouvelles variables, mais pas de nouveaux " +"objets. Après l'affectation ``nouveau = ancien``, ``nouveau is ancien`` vaut " +"toujours ``True``." #: faq/programming.rst:1783 msgid "" @@ -2676,6 +2709,10 @@ msgid "" "change object identity. After the list assignment ``s[0] = x``, it is " "guaranteed that ``s[0] is x``." msgstr "" +"Le stockage d'un objet dans un conteneur qui fonctionne avec des références " +"n'altère pas l'identité. Si ``s`` est une liste, alors après l'affectation " +"de *x* à l'indice 0, ``s[0] = x``, le test ``s[0] is x`` s'évalue forcément " +"à ``True``." #: faq/programming.rst:1787 msgid "" @@ -2683,6 +2720,9 @@ msgid "" "object can exist. After the assignments ``a = None`` and ``b = None``, it " "is guaranteed that ``a is b`` because ``None`` is a singleton." msgstr "" +"3) Les singletons sont des objets spéciaux qui ne sont jamais dupliqués. " +"Après les affectations ``a = None`` et ``b = None``, on a forcément ``a is " +"b``, puisque ``None`` est un singleton." #: faq/programming.rst:1791 msgid "" @@ -2691,16 +2731,26 @@ msgid "" "check constants such as :class:`int` and :class:`str` which aren't " "guaranteed to be singletons::" msgstr "" +"Dans la plupart des autres cas, un test d'identité n'est pas approprié par " +"rapport à un test d'égalité. En particulier, il ne faut pas utiliser ``is`` " +"pour comparer à des constantes comme les entiers (type :class:`int`) ou des " +"chaînes de caractères (type :class:`str`) car ces valeurs ne sont pas " +"nécessairement des singletons ::" #: faq/programming.rst:1808 msgid "Likewise, new instances of mutable containers are never identical::" msgstr "" +"De même, deux instances fraîchement créées d'un type de conteneurs muables " +"ne sont jamais identiques ::" #: faq/programming.rst:1815 msgid "" "In the standard library code, you will see several common patterns for " "correctly using identity tests:" msgstr "" +"Voici quelques exemples de la bibliothèque standard qui illustrent comment " +"utiliser correctement les tests d'identité dans certaines situations " +"particulières :" #: faq/programming.rst:1818 msgid "" @@ -2709,6 +2759,10 @@ msgid "" "confusion with other objects that may have boolean values that evaluate to " "false." msgstr "" +"1) Comme recommandé par la :pep:`8`, il est préférable de comparer avec " +"``None`` par identité. Le test se lit comme de la prose anglaise (``x is " +"None``, ``x is not None``), et cela évite des surprises avec les objets dont " +"la valeur booléenne est ``False``." #: faq/programming.rst:1822 msgid "" @@ -2717,6 +2771,11 @@ msgid "" "guaranteed to be distinct from other objects. For example, here is how to " "implement a method that behaves like :meth:`dict.pop`::" msgstr "" +"2) Savoir si un paramètre facultatif a été passé ou pas peut nécessiter un " +"peu de subtilité lorsque ``None`` est une valeur acceptable pour le " +"paramètre. Dans ces cas, il faut créer un objet singleton dit " +"« sentinelle », distinct de toute valeur acceptable. Voici par exemple " +"comment écrire une méthode qui émule :meth:`dict.pop` :" #: faq/programming.rst:1838 msgid "" @@ -2724,17 +2783,24 @@ msgid "" "identity tests. This prevents the code from being confused by objects such " "as ``float('NaN')`` that are not equal to themselves." msgstr "" +"3) Il arrive que l'implémentation d'un type de conteneurs doive ajouter des " +"tests d'identité aux tests d'égalité, ceci afin d'éviter un comportement non " +"souhaité avec les objets comme ``float('NaN')`` qui ne sont pas égaux à eux-" +"mêmes." #: faq/programming.rst:1842 msgid "" "For example, here is the implementation of :meth:`collections.abc.Sequence." "__contains__`::" msgstr "" +"Par exemple, l'implémentation de :meth:`collections.abc.Sequence." +"__contains__` est ::" #: faq/programming.rst:1853 msgid "" "How can a subclass control what data is stored in an immutable instance?" msgstr "" +"Comment définir dans une classe fille les attributs d'une instance immuable ?" #: faq/programming.rst:1855 msgid "" @@ -2749,10 +2815,12 @@ msgid "" "All of these immutable classes have a different signature than their parent " "class:" msgstr "" +"Toutes les classes d'objets immuables suivantes ont des signatures de " +"constructeur différentes de leur classe mère :" #: faq/programming.rst:1886 msgid "The classes can be used like this:" -msgstr "" +msgstr "Ces classes s'utilisent comme ceci :" #: faq/programming.rst:1901 msgid "Modules" diff --git a/faq/windows.po b/faq/windows.po index c0db2566..7244d0e8 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -38,7 +38,6 @@ msgstr "" "semblera évident ; sinon, vous pourriez avoir besoin d'être un peu guidé." #: faq/windows.rst:28 -#, fuzzy msgid "" "Unless you use some sort of integrated development environment, you will end " "up *typing* Windows commands into what is referred to as a \"Command prompt " @@ -48,12 +47,12 @@ msgid "" "which usually looks like this:" msgstr "" "À moins que vous n'utilisiez une sorte d'environnement de développement, " -"vous finirez par *taper* des commandes Windows dans ce qui est diversement " -"appelé une \"fenêtre DOS\" ou \"invite de commande Windows\". En général " -"vous pouvez ouvrir un telle fenêtre depuis votre barre de recherche en " -"cherchant ``cmd``. Vous devriez être capable de reconnaitre quand vous avez " -"lancé une telle fenêtre parce que vous verrez une invite de commande " -"Windows, qui en en général ressemble à ça :" +"vous finirez par *taper* des commandes Windows dans ce qui est appelé une " +"« invite de commande Windows ». En général vous pouvez ouvrir un telle " +"fenêtre depuis votre barre de recherche en cherchant ``cmd``. Vous devriez " +"être capable de reconnaître quand vous avez lancé une telle fenêtre parce " +"que vous verrez une « invite de commande » Windows, qui en en général " +"ressemble à ça :" #: faq/windows.rst:39 msgid "" @@ -234,6 +233,8 @@ msgid "" "See :ref:`faq-create-standalone-binary` for a list of tools that can be used " "to make executables." msgstr "" +"Voir :ref:`faq-create-standalone-binary` pour une liste d'outils qui créent " +"des exécutables." #: faq/windows.rst:148 msgid "Is a ``*.pyd`` file the same as a DLL?" diff --git a/glossary.po b/glossary.po index 4d82aa1f..ae7a718c 100644 --- a/glossary.po +++ b/glossary.po @@ -1039,6 +1039,15 @@ msgid "" "feature was first added to the language and when it will (or did) become the " "default::" msgstr "" +"Une :ref:`importation depuis le futur ` s'écrit ``from __future__ " +"import ``. Lorsqu'une importation du futur est active dans " +"un module, Python compile ce module avec une certaine modification de la " +"syntaxe ou du comportement qui est vouée à devenir standard dans une version " +"ultérieure. Le module :mod:`__future__` documente les possibilités pour " +"*fonctionnalité*. L'importation a aussi l'effet normal d'importer une " +"variable du module. Cette variable contient des informations utiles sur la " +"fonctionnalité en question, notamment la version de Python dans laquelle " +"elle a été ajoutée, et celle dans laquelle elle deviendra standard ::" #: glossary.rst:440 msgid "garbage collection" @@ -1148,21 +1157,24 @@ msgid "generic type" msgstr "type générique" #: glossary.rst:488 -#, fuzzy msgid "" "A :term:`type` that can be parameterized; typically a :ref:`container " "class` such as :class:`list` or :class:`dict`. Used for :" "term:`type hints ` and :term:`annotations `." msgstr "" -"Un :term:`type` qui peut être paramétré ; typiquement un conteneur comme " -"une :class:`list`. Utilisé pour les :term:`indications de type ` " -"et les :term:`annotations `." +"Un :term:`type` qui peut être paramétré ; généralement un :ref:`conteneur " +"` comme :class:`list` ou :class:`dict`. Utilisé pour les :" +"term:`indications de type ` et les :term:`annotations " +"`." #: glossary.rst:493 msgid "" "For more details, see :ref:`generic alias types`, :pep:" "`483`, :pep:`484`, :pep:`585`, and the :mod:`typing` module." msgstr "" +"Pour plus de détails, voir :ref:`types alias génériques ` et le module :mod:`typing`. On trouvera l'historique de " +"cette fonctionnalité dans les :pep:`483`, :pep:`484` et :pep:`585`." #: glossary.rst:495 msgid "GIL" @@ -2521,18 +2533,27 @@ msgid "" "``U+0000``--``U+10FFFF``). To store or transfer a string, it needs to be " "serialized as a sequence of bytes." msgstr "" +"Une chaîne de caractères en Python est une suite de points de code Unicode " +"(dans l'intervalle ``U+0000``--``U+10FFFF``). Pour stocker ou transmettre " +"une chaîne, il est nécessaire de la sérialiser en suite d'octets." #: glossary.rst:1079 msgid "" "Serializing a string into a sequence of bytes is known as \"encoding\", and " "recreating the string from the sequence of bytes is known as \"decoding\"." msgstr "" +"Sérialiser une chaîne de caractères en une suite d'octets s'appelle " +"« encoder » et recréer la chaîne à partir de la suite d'octets s'appelle " +"« décoder »." #: glossary.rst:1082 msgid "" "There are a variety of different text serialization :ref:`codecs `, which are collectively referred to as \"text encodings\"." msgstr "" +"Il existe de multiples :ref:`codecs ` pour la " +"sérialisation de texte, que l'on regroupe sous l'expression « encodages de " +"texte »." #: glossary.rst:1085 msgid "text file" diff --git a/howto/curses.po b/howto/curses.po index f83b9097..f71a97ce 100644 --- a/howto/curses.po +++ b/howto/curses.po @@ -141,6 +141,9 @@ msgid "" "ported version called `UniCurses `_ is " "available." msgstr "" +"La version Windows de Python n'inclut pas le module :mod:`curses`. Une " +"version portée appelée `UniCurses `_ est " +"disponible." #: howto/curses.rst:62 msgid "The Python curses module" diff --git a/howto/descriptor.po b/howto/descriptor.po index 26b10d45..ca0d5331 100644 --- a/howto/descriptor.po +++ b/howto/descriptor.po @@ -44,22 +44,29 @@ msgid "" ":term:`Descriptors ` let objects customize attribute lookup, " "storage, and deletion." msgstr "" +"Les :term:`descripteurs ` permettent de personnaliser la " +"recherche, le stockage et la suppression des attributs des objets." #: howto/descriptor.rst:16 msgid "This guide has four major sections:" -msgstr "" +msgstr "Ce guide comporte quatre parties principales :" #: howto/descriptor.rst:18 msgid "" "The \"primer\" gives a basic overview, moving gently from simple examples, " "adding one feature at a time. Start here if you're new to descriptors." msgstr "" +"l'« introduction » donne un premier aperçu, en partant d'exemples simples, " +"puis en ajoutant une fonctionnalité à la fois. Commencez par là si vous " +"débutez avec les descripteurs ;" #: howto/descriptor.rst:21 msgid "" "The second section shows a complete, practical descriptor example. If you " "already know the basics, start there." msgstr "" +"la deuxième partie montre un exemple de descripteur complet et pratique. Si " +"vous connaissez déjà les bases, commencez par là ;" #: howto/descriptor.rst:24 msgid "" @@ -67,6 +74,9 @@ msgid "" "detailed mechanics of how descriptors work. Most people don't need this " "level of detail." msgstr "" +"la troisième partie fournit un didacticiel plus technique qui décrit de " +"manière détaillée comment fonctionnent les descripteurs. La plupart des gens " +"n'ont pas besoin de ce niveau de détail ;" #: howto/descriptor.rst:28 msgid "" @@ -75,20 +85,27 @@ msgid "" "bound methods or about the implementation of common tools like :func:" "`classmethod`, :func:`staticmethod`, :func:`property`, and :term:`__slots__`." msgstr "" +"la dernière partie contient des équivalents en pur Python des descripteurs " +"natifs écrits en C. Lisez ceci si vous êtes curieux de savoir comment les " +"fonctions se transforment en méthodes liées ou si vous voulez connaître " +"l'implémentation d'outils courants comme :func:`classmethod`, :func:" +"`staticmethod`, :func:`property` et :term:`__slots__`." #: howto/descriptor.rst:36 msgid "Primer" -msgstr "" +msgstr "Introduction" #: howto/descriptor.rst:38 msgid "" "In this primer, we start with the most basic possible example and then we'll " "add new capabilities one by one." msgstr "" +"Dans cette introduction, nous commençons par l'exemple le plus simple " +"possible, puis nous ajoutons de nouvelles fonctionnalités une par une." #: howto/descriptor.rst:43 msgid "Simple example: A descriptor that returns a constant" -msgstr "" +msgstr "Un exemple simple : un descripteur qui renvoie une constante" #: howto/descriptor.rst:45 msgid "" @@ -101,12 +118,16 @@ msgid "" "To use the descriptor, it must be stored as a class variable in another " "class:" msgstr "" +"Pour utiliser le descripteur, il doit être stocké en tant que variable de " +"classe dans une autre classe :" #: howto/descriptor.rst:62 msgid "" "An interactive session shows the difference between normal attribute lookup " "and descriptor lookup:" msgstr "" +"Une session interactive montre la différence entre la recherche d'attribut " +"normale et la recherche *via* un descripteur :" #: howto/descriptor.rst:73 msgid "" @@ -121,33 +142,45 @@ msgid "" "Note that the value ``10`` is not stored in either the class dictionary or " "the instance dictionary. Instead, the value ``10`` is computed on demand." msgstr "" +"Notez que la valeur ``10`` n'est stockée ni dans le dictionnaire de classe " +"ni dans le dictionnaire d'instance. Non, la valeur ``10`` est calculée à la " +"demande." #: howto/descriptor.rst:81 msgid "" "This example shows how a simple descriptor works, but it isn't very useful. " "For retrieving constants, normal attribute lookup would be better." msgstr "" +"Cet exemple montre comment fonctionne un descripteur simple, mais il n'est " +"pas très utile. Pour récupérer des constantes, une recherche d'attribut " +"normale est préférable." #: howto/descriptor.rst:84 msgid "" "In the next section, we'll create something more useful, a dynamic lookup." msgstr "" +"Dans la section suivante, nous allons créer quelque chose de plus utile, une " +"recherche dynamique." #: howto/descriptor.rst:88 msgid "Dynamic lookups" -msgstr "" +msgstr "Recherches dynamiques" #: howto/descriptor.rst:90 msgid "" "Interesting descriptors typically run computations instead of returning " "constants:" msgstr "" +"Les descripteurs intéressants exécutent généralement des calculs au lieu de " +"renvoyer des constantes :" #: howto/descriptor.rst:109 msgid "" "An interactive session shows that the lookup is dynamic — it computes " "different, updated answers each time::" msgstr "" +"Une session interactive montre que la recherche est dynamique — elle calcule " +"des réponses différentes, mises à jour à chaque fois ::" #: howto/descriptor.rst:122 msgid "" @@ -158,10 +191,16 @@ msgid "" "that lets the :meth:`__get__` method learn the target directory. The " "*objtype* parameter is the class *Directory*." msgstr "" +"En plus de montrer comment les descripteurs peuvent exécuter des calculs, " +"cet exemple révèle également le but des paramètres de :meth:`__get__`. Le " +"paramètre *self* est *size*, une instance de *DirectorySize*. Le paramètre " +"*obj* est soit *g* soit *s*, une instance de *Directory*. C'est le paramètre " +"*obj* qui permet à la méthode :meth:`__get__` de connaître le répertoire " +"cible. Le paramètre *objtype* est la classe *Directory*." #: howto/descriptor.rst:131 msgid "Managed attributes" -msgstr "" +msgstr "Attributs gérés" #: howto/descriptor.rst:133 msgid "" @@ -171,6 +210,12 @@ msgid "" "dictionary. The descriptor's :meth:`__get__` and :meth:`__set__` methods " "are triggered when the public attribute is accessed." msgstr "" +"Une utilisation courante des descripteurs est la gestion de l'accès aux " +"données d'instances. Le descripteur est affecté à un attribut public dans le " +"dictionnaire de classe tandis que les données réelles sont stockées en tant " +"qu'attribut privé dans le dictionnaire d'instance. Les méthodes :meth:" +"`__get__` et :meth:`__set__` du descripteur sont déclenchées lors de l'accès " +"à l'attribut public." #: howto/descriptor.rst:139 msgid "" @@ -178,12 +223,18 @@ msgid "" "private attribute. When the public attribute is accessed, the descriptor " "logs the lookup or update:" msgstr "" +"Dans l'exemple qui suit, *age* est l'attribut public et *_age* est " +"l'attribut privé. Lors de l'accès à l'attribut public, le descripteur " +"journalise la recherche ou la mise à jour :" #: howto/descriptor.rst:172 msgid "" "An interactive session shows that all access to the managed attribute *age* " "is logged, but that the regular attribute *name* is not logged:" msgstr "" +"Une session interactive montre que tous les accès à l'attribut géré *age* " +"sont consignés, mais que rien n'est journalisé pour l'attribut normal " +"*name* :" #: howto/descriptor.rst:206 msgid "" @@ -192,16 +243,22 @@ msgid "" "only have one logged attribute and that its name is unchangeable. In the " "next example, we'll fix that problem." msgstr "" +"Un problème majeur avec cet exemple est que le nom privé *_age* est écrit en " +"dur dans la classe *LoggedAgeAccess*. Cela signifie que chaque instance ne " +"peut avoir qu'un seul attribut journalisé et que son nom est immuable. Dans " +"l'exemple suivant, nous allons résoudre ce problème." #: howto/descriptor.rst:213 msgid "Customized names" -msgstr "" +msgstr "Noms personnalisés" #: howto/descriptor.rst:215 msgid "" "When a class uses descriptors, it can inform each descriptor about which " "variable name was used." msgstr "" +"Lorsqu'une classe utilise des descripteurs, elle peut informer chaque " +"descripteur du nom de variable utilisé." #: howto/descriptor.rst:218 msgid "" @@ -211,6 +268,11 @@ msgid "" "can be recorded, giving each descriptor its own *public_name* and " "*private_name*:" msgstr "" +"Dans cet exemple, la classe :class:`Person` a deux instances de " +"descripteurs, *name* et *age*. Lorsque la classe :class:`Person` est " +"définie, :meth:`__set_name__` est appelée automatiquement dans " +"*LoggedAccess* afin que les noms de champs puissent être enregistrés, en " +"donnant à chaque descripteur ses propres *public_name* et *private_name* :" #: howto/descriptor.rst:256 msgid "" @@ -218,24 +280,30 @@ msgid "" "`__set_name__` so that the field names would be recorded. Here we call :" "func:`vars` to look up the descriptor without triggering it:" msgstr "" +"Une session interactive montre que la classe :class:`Person` a appelé :meth:" +"`__set_name__` pour que les noms des champs soient enregistrés. Ici, nous " +"appelons :func:`vars` pour rechercher le descripteur sans le déclencher :" #: howto/descriptor.rst:267 msgid "The new class now logs access to both *name* and *age*:" msgstr "" +"La nouvelle classe enregistre désormais l'accès à la fois à *name* et *age* :" #: howto/descriptor.rst:284 msgid "The two *Person* instances contain only the private names:" -msgstr "" +msgstr "Les deux instances de *Person* ne contiennent que les noms privés :" #: howto/descriptor.rst:295 msgid "Closing thoughts" -msgstr "" +msgstr "Réflexions finales" #: howto/descriptor.rst:297 msgid "" "A :term:`descriptor` is what we call any object that defines :meth:" "`__get__`, :meth:`__set__`, or :meth:`__delete__`." msgstr "" +"Nous appelons :term:`descripteur ` tout objet qui définit :meth:" +"`__get__`, :meth:`__set__` ou :meth:`__delete__`." #: howto/descriptor.rst:300 msgid "" @@ -244,6 +312,11 @@ msgid "" "it was created or the name of class variable it was assigned to. (This " "method, if present, is called even if the class is not a descriptor.)" msgstr "" +"Facultativement, les descripteurs peuvent avoir une méthode :meth:" +"`__set_name__`. Elle n'est utile que dans les cas où un descripteur doit " +"connaître soit la classe dans laquelle il a été créé, soit le nom de la " +"variable de classe à laquelle il a été affecté (cette méthode, si elle est " +"présente, est appelée même si la classe n'est pas un descripteur)." #: howto/descriptor.rst:305 msgid "" @@ -257,12 +330,18 @@ msgid "" "Descriptors only work when used as class variables. When put in instances, " "they have no effect." msgstr "" +"Les descripteurs ne fonctionnent que lorsqu'ils sont utilisés comme " +"variables de classe. Lorsqu'ils sont placés dans des instances, ils n'ont " +"aucun effet." #: howto/descriptor.rst:312 msgid "" "The main motivation for descriptors is to provide a hook allowing objects " "stored in class variables to control what happens during attribute lookup." msgstr "" +"La principale raison d'être des descripteurs est de fournir un point " +"d'entrée permettant aux objets stockés dans des variables de classe de " +"contrôler ce qui se passe lors de la recherche d'attributs." #: howto/descriptor.rst:315 msgid "" @@ -270,6 +349,9 @@ msgid "" "Descriptors invert that relationship and allow the data being looked-up to " "have a say in the matter." msgstr "" +"Traditionnellement, la classe appelante contrôle ce qui se passe pendant la " +"recherche. Les descripteurs inversent cette relation et permettent aux " +"données recherchées d'avoir leur mot à dire." #: howto/descriptor.rst:319 msgid "" @@ -278,20 +360,26 @@ msgid "" "`staticmethod`, :func:`property`, and :func:`functools.cached_property` are " "all implemented as descriptors." msgstr "" +"Les descripteurs sont utilisés partout dans le langage. C'est ainsi que les " +"fonctions se transforment en méthodes liées. Les outils courants tels que :" +"func:`classmethod`, :func:`staticmethod`, :func:`property` et :func:" +"`functools.cached_property` sont tous implémentés en tant que descripteurs." #: howto/descriptor.rst:326 msgid "Complete Practical Example" -msgstr "" +msgstr "Exemple complet pratique" #: howto/descriptor.rst:328 msgid "" "In this example, we create a practical and powerful tool for locating " "notoriously hard to find data corruption bugs." msgstr "" +"Dans cet exemple, nous créons un outil pratique et puissant pour localiser " +"les bogues de corruption de données notoirement difficiles à trouver." #: howto/descriptor.rst:333 msgid "Validator class" -msgstr "" +msgstr "Classe « validateur »" #: howto/descriptor.rst:335 msgid "" @@ -300,31 +388,43 @@ msgid "" "restrictions. If those restrictions aren't met, it raises an exception to " "prevent data corruption at its source." msgstr "" +"Un validateur est un descripteur pour l'accès aux attributs gérés. Avant de " +"stocker des données, il vérifie que la nouvelle valeur respecte différentes " +"restrictions de type et de plage. Si ces restrictions ne sont pas " +"respectées, il lève une exception pour empêcher la corruption des données à " +"la source." #: howto/descriptor.rst:340 msgid "" "This :class:`Validator` class is both an :term:`abstract base class` and a " "managed attribute descriptor:" msgstr "" +"Cette classe :class:`Validator` est à la fois une :term:`classe mère " +"abstraite ` et un descripteur d'attributs gérés :" #: howto/descriptor.rst:363 msgid "" "Custom validators need to inherit from :class:`Validator` and must supply a :" "meth:`validate` method to test various restrictions as needed." msgstr "" +"Les validateurs personnalisés doivent hériter de :class:`Validator` et " +"doivent fournir une méthode :meth:`validate` pour tester diverses " +"restrictions adaptées aux besoins." #: howto/descriptor.rst:368 msgid "Custom validators" -msgstr "" +msgstr "Validateurs personnalisés" #: howto/descriptor.rst:370 msgid "Here are three practical data validation utilities:" -msgstr "" +msgstr "Voici trois utilitaires concrets de validation de données :" #: howto/descriptor.rst:372 msgid "" ":class:`OneOf` verifies that a value is one of a restricted set of options." msgstr "" +":class:`OneOf` vérifie qu'une valeur fait partie d'un ensemble limité de " +"valeurs ;" #: howto/descriptor.rst:374 msgid "" @@ -332,6 +432,9 @@ msgid "" "`float`. Optionally, it verifies that a value is between a given minimum or " "maximum." msgstr "" +":class:`Number` vérifie qu'une valeur est soit un :class:`int` soit un :" +"class:`float`. Facultativement, il vérifie qu'une valeur se situe entre un " +"minimum ou un maximum donnés ;" #: howto/descriptor.rst:378 msgid "" @@ -340,28 +443,36 @@ msgid "" "`predicate `_ " "as well." msgstr "" +":class:`String` vérifie qu'une valeur est une :class:`chaîne de caractères " +"`. Éventuellement, il valide les longueurs minimale ou maximale " +"données. Il peut également valider un `prédicat `_ défini par l'utilisateur." #: howto/descriptor.rst:437 msgid "Practical application" -msgstr "" +msgstr "Application pratique" #: howto/descriptor.rst:439 msgid "Here's how the data validators can be used in a real class:" msgstr "" +"Voici comment les validateurs de données peuvent être utilisés par une " +"classe réelle :" #: howto/descriptor.rst:454 msgid "The descriptors prevent invalid instances from being created:" -msgstr "" +msgstr "Les descripteurs empêchent la création d'instances non valides :" #: howto/descriptor.rst:481 msgid "Technical Tutorial" -msgstr "" +msgstr "Tutoriel technique" #: howto/descriptor.rst:483 msgid "" "What follows is a more technical tutorial for the mechanics and details of " "how descriptors work." msgstr "" +"Ce qui suit est un tutoriel plus technique relatif aux mécanismes et détails " +"de fonctionnement des descripteurs." #: howto/descriptor.rst:488 msgid "Abstract" @@ -372,16 +483,18 @@ msgid "" "Defines descriptors, summarizes the protocol, and shows how descriptors are " "called. Provides an example showing how object relational mappings work." msgstr "" +"Ce tutoriel définit des descripteurs, résume le protocole et montre comment " +"les descripteurs sont appelés. Il fournit un exemple montrant comment " +"fonctionnent les correspondances relationnelles entre objets." #: howto/descriptor.rst:493 -#, fuzzy msgid "" "Learning about descriptors not only provides access to a larger toolset, it " "creates a deeper understanding of how Python works." msgstr "" "L'apprentissage des descripteurs permet non seulement d'accéder à un " "ensemble d'outils plus vaste, mais aussi de mieux comprendre le " -"fonctionnement de Python et d'apprécier l'élégance de sa conception." +"fonctionnement de Python." #: howto/descriptor.rst:498 #, fuzzy @@ -389,21 +502,19 @@ msgid "Definition and introduction" msgstr "Définition et introduction" #: howto/descriptor.rst:500 -#, fuzzy msgid "" "In general, a descriptor is an attribute value that has one of the methods " "in the descriptor protocol. Those methods are :meth:`__get__`, :meth:" "`__set__`, and :meth:`__delete__`. If any of those methods are defined for " "an attribute, it is said to be a :term:`descriptor`." msgstr "" -"En général, un descripteur est un attribut objet avec un \"comportement " -"contraignant\", dont l'accès à l'attribut a été remplacé par des méthodes " -"dans le protocole du descripteur. Ces méthodes sont : :meth:`__get__`, :" -"meth:`__set__`, et :meth:`__delete__`. Si l'une de ces méthodes est définie " -"pour un objet, il s'agit d'un descripteur." +"En général, un descripteur est la valeur d'un attribut qui possède une des " +"méthodes définies dans le « protocole descripteur ». Ces méthodes sont : :" +"meth:`__get__`, :meth:`__set__` et :meth:`__delete__`. Si l'une de ces " +"méthodes est définie pour un attribut, il s'agit d'un :term:`descripteur " +"`." #: howto/descriptor.rst:505 -#, fuzzy msgid "" "The default behavior for attribute access is to get, set, or delete the " "attribute from an object's dictionary. For instance, ``a.x`` has a lookup " @@ -415,17 +526,16 @@ msgid "" "methods were defined." msgstr "" "Le comportement par défaut pour l'accès aux attributs consiste à obtenir, " -"définir ou supprimer l'attribut du dictionnaire d'un objet. Par exemple, " -"``a. x`` a une chaîne de recherche commençant par ``a. __dict__ ['x']``, " -"puis ``type (a). __dict__ ['x']``, et continuant à travers les classes de " -"base de ``type (a)`` À l'exclusion des sous-classes. Si la valeur recherchée " -"est un objet définissant l'une des méthodes de descripteur, Python peut " -"substituer le comportement par défaut et appeler à la place la méthode " -"Descriptor. Lorsque cela se produit dans la chaîne de précédence dépend de " -"quelles méthodes descripteur ont été définies." +"définir ou supprimer l'attribut dans le dictionnaire d'un objet. Par " +"exemple, pour chercher ``a.x`` Python commence par chercher ``a." +"__dict__['x']``, puis ``type(a).__dict__['x']``, et continue la recherche en " +"utilisant la MRO (l'ordre de résolution des méthodes) de ``type(a)``. Si la " +"valeur recherchée est un objet définissant l'une des méthodes de " +"descripteur, Python remplace le comportement par défaut par un appel à la " +"méthode du descripteur. Le moment où cela se produit dans la chaîne de " +"recherche dépend des méthodes définies par le descripteur." #: howto/descriptor.rst:514 -#, fuzzy msgid "" "Descriptors are a powerful, general purpose protocol. They are the " "mechanism behind properties, methods, static methods, class methods, and :" @@ -433,13 +543,12 @@ msgid "" "simplify the underlying C code and offer a flexible set of new tools for " "everyday Python programs." msgstr "" -"Les descripteurs sont un protocole puissant et à usage général. Ils sont le " -"mécanisme derrière les propriétés, les méthodes, les méthodes statiques, les " -"méthodes de classes et :func:`super()`. Ils sont utilisés dans tout Python " -"lui-même pour implémenter les nouvelles classes de style introduites dans la " -"version 2.2. Les descripteurs simplifient le code C sous-jacent et offrent " -"un ensemble flexible de nouveaux outils pour les programmes Python " -"quotidiens." +"Les descripteurs sont un protocole puissant et à usage général. Ils " +"constituent le mécanisme qui met en œuvre les propriétés, les méthodes, les " +"méthodes statiques, les méthodes de classes et :func:`super()`. Ils sont " +"utilisés dans tout Python lui-même. Les descripteurs simplifient le code C " +"sous-jacent et offrent un ensemble flexible de nouveaux outils pour les " +"programmes Python quotidiens." #: howto/descriptor.rst:522 #, fuzzy @@ -469,7 +578,6 @@ msgstr "" "comportement par défaut lorsqu'il est recherché comme un attribut." #: howto/descriptor.rst:534 -#, fuzzy msgid "" "If an object defines :meth:`__set__` or :meth:`__delete__`, it is considered " "a data descriptor. Descriptors that only define :meth:`__get__` are called " @@ -477,8 +585,8 @@ msgid "" "possible)." msgstr "" "Si un objet définit :meth:`__set__` ou :meth:`__delete__`, il est considéré " -"comme un descripteur de données. Les descripteurs qui ne définissent que :" -"meth:`__get__` sont appelés descripteurs *non-data* (ils sont généralement " +"comme un descripteur de données. Les descripteurs qui ne définissent que :" +"meth:`__get__` sont appelés descripteurs hors-données (ils sont généralement " "utilisés pour des méthodes mais d'autres utilisations sont possibles)." #: howto/descriptor.rst:539 @@ -512,22 +620,23 @@ msgstr "" #: howto/descriptor.rst:552 msgid "Overview of descriptor invocation" -msgstr "" +msgstr "Présentation de l'appel de descripteur" #: howto/descriptor.rst:554 -#, fuzzy msgid "" "A descriptor can be called directly with ``desc.__get__(obj)`` or ``desc." "__get__(None, cls)``." msgstr "" -"Un descripteur peut être appelé directement par son nom de méthode. Par " -"exemple, ``d.__get__(obj)``." +"Un descripteur peut être appelé directement par ``desc.__get__(obj)`` ou " +"``desc.__get__(None, cls)``." #: howto/descriptor.rst:557 msgid "" "But it is more common for a descriptor to be invoked automatically from " "attribute access." msgstr "" +"Mais il est plus courant qu'un descripteur soit invoqué automatiquement à " +"partir d'un accès à un attribut." #: howto/descriptor.rst:560 msgid "" @@ -536,19 +645,22 @@ msgid "" "instance ``__dict__``, its :meth:`__get__` method is invoked according to " "the precedence rules listed below." msgstr "" +"L'expression ``obj.x`` recherche l'attribut ``x`` dans les espaces de noms " +"pour ``obj``. Si la recherche trouve un descripteur en dehors de l'instance " +"``__dict__``, sa méthode :meth:`__get__` est appelée selon les règles de " +"priorité listées ci-dessous." #: howto/descriptor.rst:565 -#, fuzzy msgid "" "The details of invocation depend on whether ``obj`` is an object, class, or " "instance of super." msgstr "" -"Les détails de l'invocation dépendent du fait que ``obj`` est un objet ou " -"une classe." +"Les détails de l'appel varient selon que ``obj`` est un objet, une classe ou " +"une instance de *super*." #: howto/descriptor.rst:570 msgid "Invocation from an instance" -msgstr "" +msgstr "Appel depuis une instance" #: howto/descriptor.rst:572 msgid "" @@ -557,18 +669,26 @@ msgid "" "descriptors, then class variables, and lastly :meth:`__getattr__` if it is " "provided." msgstr "" +"La recherche d'instance consiste à parcourir la liste d'espaces de noms en " +"donnant aux descripteurs de données la priorité la plus élevée, suivis des " +"variables d'instance, puis des descripteurs hors-données, puis des variables " +"de classe, et enfin :meth:`__getattr__` s'il est fourni." #: howto/descriptor.rst:577 msgid "" "If a descriptor is found for ``a.x``, then it is invoked with: ``desc." "__get__(a, type(a))``." msgstr "" +"Si un descripteur est trouvé pour ``a.x``, alors il est appelé par ``desc." +"__get__(a, type(a))``." #: howto/descriptor.rst:580 msgid "" "The logic for a dotted lookup is in :meth:`object.__getattribute__`. Here " "is a pure Python equivalent:" msgstr "" +"La logique d'une recherche « après un point » se trouve dans :meth:`object." +"__getattribute__`. Voici un équivalent en Python pur :" #: howto/descriptor.rst:699 msgid "" @@ -576,6 +696,10 @@ msgid "" "code. That is why calling :meth:`__getattribute__` directly or with " "``super().__getattribute__`` will bypass :meth:`__getattr__` entirely." msgstr "" +"Notez qu'il n'y a pas d'appel vers :meth:`__getattr__` dans le code de :meth:" +"`__getattribute__`. C'est pourquoi appeler :meth:`__getattribute__` " +"directement ou avec ``super().__getattribute__`` contourne entièrement :meth:" +"`__getattr__`." #: howto/descriptor.rst:703 msgid "" @@ -584,11 +708,14 @@ msgid "" "`__getattribute__` raises an :exc:`AttributeError`. Their logic is " "encapsulated in a helper function:" msgstr "" +"Au lieu, c'est l'opérateur « point » et la fonction :func:`getattr` qui sont " +"responsables de l'appel de :meth:`__getattr__` chaque fois que :meth:" +"`__getattribute__` déclenche une :exc:`AttributeError`. Cette logique est " +"présentée encapsulée dans une fonction utilitaire :" #: howto/descriptor.rst:753 -#, fuzzy msgid "Invocation from a class" -msgstr "Appelé depuis un Classe" +msgstr "Appel depuis une classe" #: howto/descriptor.rst:755 msgid "" @@ -597,91 +724,99 @@ msgid "" "__getattribute__` but the instance dictionary lookup is replaced by a search " "through the class's :term:`method resolution order`." msgstr "" +"La logique pour une recherche « après un point » telle que ``A.x`` se trouve " +"dans :meth:`type.__getattribute__`. Les étapes sont similaires à celles de :" +"meth:`object.__getattribute__` mais la recherche dans le dictionnaire " +"d'instance est remplacée par une recherche suivant l':term:`ordre de " +"résolution des méthodes ` de la classe." #: howto/descriptor.rst:760 msgid "If a descriptor is found, it is invoked with ``desc.__get__(None, A)``." msgstr "" +"Si un descripteur est trouvé, il est appelé par ``desc.__get__(None, A)``." #: howto/descriptor.rst:762 msgid "" "The full C implementation can be found in :c:func:`type_getattro()` and :c:" "func:`_PyType_Lookup()` in :source:`Objects/typeobject.c`." msgstr "" +"L'implémentation C complète peut être trouvée dans :c:func:`type_getattro()` " +"et :c:func:`_PyType_Lookup()` dans :source:`Objects/typeobject.c`." #: howto/descriptor.rst:767 msgid "Invocation from super" -msgstr "" +msgstr "Appel depuis super" #: howto/descriptor.rst:769 msgid "" "The logic for super's dotted lookup is in the :meth:`__getattribute__` " "method for object returned by :class:`super()`." msgstr "" +"La logique de la recherche « après un point » de super se trouve dans la " +"méthode :meth:`__getattribute__` de l'objet renvoyé par :class:`super()`." #: howto/descriptor.rst:772 -#, fuzzy msgid "" "A dotted lookup such as ``super(A, obj).m`` searches ``obj.__class__." "__mro__`` for the base class ``B`` immediately following ``A`` and then " "returns ``B.__dict__['m'].__get__(obj, A)``. If not a descriptor, ``m`` is " "returned unchanged." msgstr "" -"L'objet renvoyé par ``super()`` a également une méthode personnalisée :meth:" -"`__getattribute__` pour invoquer des descripteurs. La recherche d'attribut " -"``super(B, obj).m`` recherche dans ``obj.__class__.__mro__`` la classe qui " -"suit immédiatement B, appelons la A, et renvoie ``A.__dict__['m']." -"__get__(obj, B)``. Si ce n'est pas un descripteur, ``m`` est renvoyé " -"inchangé. S'il n'est pas dans le dictionnaire, la recherche de ``m`` revient " -"à une recherche utilisant :meth:`object.__getattribute__`." +"La recherche d'attribut ``super(A, obj).m`` recherche dans ``obj.__class__." +"__mro__`` la classe ``B`` qui suit immédiatement A, et renvoie ``B." +"__dict__['m'].__get__(obj, A)``. Si ce n'est pas un descripteur, ``m`` est " +"renvoyé inchangé." #: howto/descriptor.rst:777 -#, fuzzy msgid "" "The full C implementation can be found in :c:func:`super_getattro()` in :" "source:`Objects/typeobject.c`. A pure Python equivalent can be found in " "`Guido's Tutorial `_." msgstr "" -"Les détails d'implémentation sont dans :c:func:`super_getattro()` dans :" -"source:`Objects/typeobject.c` et un équivalent Python pur peut être trouvé " -"dans `Guido's Tutorial`_." +"L'implémentation C complète est dans :c:func:`super_getattro()` dans :source:" +"`Objects/typeobject.c`. Un équivalent Python pur peut être trouvé dans " +"`Guido's Tutorial `_ (page en anglais)." #: howto/descriptor.rst:784 msgid "Summary of invocation logic" -msgstr "" +msgstr "Résumé de la logique d'appel" #: howto/descriptor.rst:786 msgid "" "The mechanism for descriptors is embedded in the :meth:`__getattribute__()` " "methods for :class:`object`, :class:`type`, and :func:`super`." msgstr "" +"Le fonctionnement des descripteurs se trouve dans les méthodes :meth:" +"`__getattribute__()` de :class:`object`, :class:`type` et :func:`super`." #: howto/descriptor.rst:789 msgid "The important points to remember are:" msgstr "Les points importants à retenir sont :" #: howto/descriptor.rst:791 -#, fuzzy msgid "Descriptors are invoked by the :meth:`__getattribute__` method." -msgstr "les descripteurs sont appelés par la méthode :meth:`__getattribute__`" +msgstr "" +"les descripteurs sont appelés par la méthode :meth:`__getattribute__` ;" #: howto/descriptor.rst:793 msgid "" "Classes inherit this machinery from :class:`object`, :class:`type`, or :func:" "`super`." msgstr "" +"les classes héritent ce mécanisme de :class:`object`, :class:`type` ou :func:" +"`super` ;" #: howto/descriptor.rst:796 -#, fuzzy msgid "" "Overriding :meth:`__getattribute__` prevents automatic descriptor calls " "because all the descriptor logic is in that method." msgstr "" "redéfinir :meth:`__getattribute____` empêche les appels automatiques de " -"descripteurs" +"descripteur car toute la logique des descripteurs est dans cette méthode ;" #: howto/descriptor.rst:799 -#, fuzzy msgid "" ":meth:`object.__getattribute__` and :meth:`type.__getattribute__` make " "different calls to :meth:`__get__`. The first includes the instance and may " @@ -689,25 +824,25 @@ msgid "" "includes the class." msgstr "" ":meth:`objet.__getattribute__` et :meth:`type.__getattribute__` font " -"différents appels à :meth:`__get__`." +"différents appels à :meth:`__get__`. La première inclut l'instance et peut " +"inclure la classe. La seconde met ``None`` pour l'instance et inclut " +"toujours la classe ;" #: howto/descriptor.rst:804 -#, fuzzy msgid "Data descriptors always override instance dictionaries." msgstr "" -"les descripteurs de données remplacent toujours les dictionnaires " +"les descripteurs de données sont toujours prioritaires sur les dictionnaires " "d'instances." #: howto/descriptor.rst:806 -#, fuzzy msgid "Non-data descriptors may be overridden by instance dictionaries." msgstr "" -"les descripteurs *non-data* peuvent être remplacés par des dictionnaires " +"les descripteurs hors-données peuvent céder la priorité aux dictionnaires " "d'instance." #: howto/descriptor.rst:810 msgid "Automatic name notification" -msgstr "" +msgstr "Notification automatique des noms" #: howto/descriptor.rst:812 msgid "" @@ -718,16 +853,21 @@ msgid "" "with two arguments. The *owner* is the class where the descriptor is used, " "and the *name* is the class variable the descriptor was assigned to." msgstr "" +"Il est parfois souhaitable qu'un descripteur sache à quel nom de variable de " +"classe il a été affecté. Lorsqu'une nouvelle classe est créée, la " +"métaclasse :class:`type` parcourt le dictionnaire de la nouvelle classe. Si " +"l'une des entrées est un descripteur et si elle définit :meth:" +"`__set_name__`, cette méthode est appelée avec deux arguments : *owner* " +"(propriétaire) est la classe où le descripteur est utilisé, et *name* est la " +"variable de classe à laquelle le descripteur a été assigné." #: howto/descriptor.rst:819 -#, fuzzy msgid "" "The implementation details are in :c:func:`type_new()` and :c:func:" "`set_names()` in :source:`Objects/typeobject.c`." msgstr "" -"Les détails d'implémentation sont dans :c:func:`super_getattro()` dans :" -"source:`Objects/typeobject.c` et un équivalent Python pur peut être trouvé " -"dans `Guido's Tutorial`_." +"Les détails d'implémentation sont dans :c:func:`type_new()` et :c:func:" +"`set_names()` dans :source:`Objects/typeobject.c`." #: howto/descriptor.rst:822 msgid "" @@ -735,10 +875,14 @@ msgid "" "place at the time of class creation. If descriptors are added to the class " "afterwards, :meth:`__set_name__` will need to be called manually." msgstr "" +"Comme la logique de mise à jour est dans :meth:`type.__new__`, les " +"notifications n'ont lieu qu'au moment de la création de la classe. Si des " +"descripteurs sont ajoutés à la classe par la suite, :meth:`__set_name__` " +"doit être appelée manuellement." #: howto/descriptor.rst:828 msgid "ORM example" -msgstr "" +msgstr "Exemple d'ORM" #: howto/descriptor.rst:830 msgid "" @@ -753,6 +897,10 @@ msgid "" "Python instances only hold keys to the database's tables. Descriptors take " "care of lookups or updates:" msgstr "" +"L'idée essentielle est que les données sont stockées dans une base de " +"données externe. Les instances Python ne contiennent que les clés des tables " +"de la base de données. Les descripteurs s'occupent des recherches et des " +"mises à jour :" #: howto/descriptor.rst:853 msgid "" @@ -760,66 +908,68 @@ msgid "" "org/wiki/Database_model>`_ that describe the schema for each table in a " "database:" msgstr "" +"Nous pouvons utiliser la classe :class:`Field` pour définir des `modèles " +"`_ qui décrivent le schéma de " +"chaque table d'une base de données :" #: howto/descriptor.rst:878 msgid "To use the models, first connect to the database::" msgstr "" +"Pour utiliser les modèles, connectons-nous d'abord à la base de données ::" #: howto/descriptor.rst:883 msgid "" "An interactive session shows how data is retrieved from the database and how " "it can be updated:" msgstr "" +"Une session interactive montre comment les données sont extraites de la base " +"de données et comment elles peuvent être mises à jour :" #: howto/descriptor.rst:928 msgid "Pure Python Equivalents" -msgstr "" +msgstr "Équivalents en Python pur" #: howto/descriptor.rst:930 -#, fuzzy msgid "" "The descriptor protocol is simple and offers exciting possibilities. " "Several use cases are so common that they have been prepackaged into built-" "in tools. Properties, bound methods, static methods, class methods, and " "\\_\\_slots\\_\\_ are all based on the descriptor protocol." msgstr "" -"Le protocole est simple et offre des possibilités passionnantes. Plusieurs " -"cas d'utilisation sont si courants qu'ils ont été regroupés en appels de " -"fonction individuels. Les propriétés, les méthodes liées, les méthodes " -"statiques et les méthodes de classe sont toutes basées sur le protocole du " -"descripteur." +"Le protocole descripteur est simple et offre des possibilités très " +"intéressantes. Plusieurs cas d'utilisation sont si courants qu'ils ont été " +"regroupés dans des outils intégrés. Les propriétés, les méthodes liées, les " +"méthodes statiques et les méthodes de classe sont toutes basées sur le " +"protocole descripteur." #: howto/descriptor.rst:937 msgid "Properties" msgstr "Propriétés" #: howto/descriptor.rst:939 -#, fuzzy msgid "" "Calling :func:`property` is a succinct way of building a data descriptor " "that triggers a function call upon access to an attribute. Its signature " "is::" 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 ::" +"Appeler :func:`property` construit de façon succincte un descripteur de " +"données qui déclenche un appel de fonction lors de l'accès à un attribut. Sa " +"signature est ::" #: howto/descriptor.rst:944 -#, fuzzy 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`` ::" +"La documentation montre une utilisation caractéristique pour définir un " +"attribut géré ``x`` ::" #: howto/descriptor.rst:968 -#, fuzzy msgid "" "To see how :func:`property` is implemented in terms of the descriptor " "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 ::" +"Pour voir comment :func:`property` est implémentée dans le protocole du " +"descripteur, voici un équivalent en Python pur ::" #: howto/descriptor.rst:1061 msgid "" @@ -832,7 +982,6 @@ msgstr "" "ultérieures nécessitent l'intervention d'une méthode." #: howto/descriptor.rst:1065 -#, fuzzy msgid "" "For instance, a spreadsheet class may grant access to a cell value through " "``Cell('b10').value``. Subsequent improvements to the program require the " @@ -843,16 +992,18 @@ msgid "" msgstr "" "Par exemple, une classe de tableur peut donner accès à une valeur de cellule " "via ``Cell('b10').value``. Les améliorations ultérieures du programme " -"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é ::" +"exigent que la cellule soit recalculée à chaque accès ; cependant, le " +"programmeur ne veut pas impacter le code client existant accédant " +"directement à l'attribut. La solution consiste à envelopper l'accès à " +"l'attribut *value* dans un descripteur de données ::" #: howto/descriptor.rst:1082 msgid "" "Either the built-in :func:`property` or our :func:`Property` equivalent " "would work in this example." msgstr "" +"Soit la :func:`property` native, soit notre équivalent :func:`Property` " +"fonctionnent dans cet exemple." #: howto/descriptor.rst:1087 #, fuzzy @@ -869,89 +1020,100 @@ msgstr "" "les deux sont fusionnés de façon transparente." #: howto/descriptor.rst:1092 -#, fuzzy msgid "" "Functions stored in class dictionaries get turned into methods when invoked. " "Methods only differ from regular functions in that the object instance is " "prepended to the other arguments. By convention, the instance is called " "*self* but could be called *this* or any other variable name." msgstr "" -"Les dictionnaires de classes stockent les méthodes sous forme de fonctions. " -"Dans une définition de classe, les méthodes sont écrites en utilisant :" -"keyword:`def` ou :keyword:`lambda`, les outils habituels pour créer des " -"fonctions. Les méthodes ne diffèrent des fonctions régulières que par le " -"fait que le premier argument est réservé à l'instance de l'objet. Par " -"convention Python, la référence de l'instance est appelée *self* mais peut " -"être appelée *this* ou tout autre nom de variable." +"Les fonctions placées dans les dictionnaires des classes sont transformées " +"en méthodes au moment de l'appel. Les méthodes ne diffèrent des fonctions " +"ordinaires que par le fait que le premier argument est réservé à l'instance " +"de l'objet. Par convention Python, la référence de l'instance est appelée " +"*self*, bien qu'il soit possible de l'appeler *this* ou tout autre nom de " +"variable." #: howto/descriptor.rst:1097 msgid "" "Methods can be created manually with :class:`types.MethodType` which is " "roughly equivalent to:" msgstr "" +"Les méthodes peuvent être créées manuellement avec :class:`types." +"MethodType`, qui équivaut à peu près à :" #: howto/descriptor.rst:1114 -#, fuzzy msgid "" "To support automatic creation of methods, functions include the :meth:" "`__get__` method for binding methods during attribute access. This means " "that functions are non-data descriptors that return bound methods during " "dotted lookup from an instance. Here's how it works:" msgstr "" -"Pour prendre en charge les appels de méthodes, les fonctions incluent la " -"méthode :meth:`__get__` pour lier les méthodes pendant l'accès aux " -"attributs. Cela signifie que toutes les fonctions sont des descripteurs " -"*non-data* qui renvoient des méthodes liées lorsqu'elles sont appelées " -"depuis un objet. En Python pur, il fonctionne comme ceci ::" +"Pour prendre en charge la création automatique des méthodes, les fonctions " +"incluent la méthode :meth:`__get__` pour lier les méthodes pendant l'accès " +"aux attributs. Cela signifie que toutes les fonctions sont des descripteurs " +"hors-données qui renvoient des méthodes liées au cours d'une recherche " +"d'attribut d'une instance. Cela fonctionne ainsi ::" #: howto/descriptor.rst:1130 -#, fuzzy msgid "" "Running the following class in 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 ::" +"L'exécution de la classe suivante dans l'interpréteur montre comment le " +"descripteur de fonction se comporte en pratique ::" #: howto/descriptor.rst:1139 msgid "" "The function has a :term:`qualified name` attribute to support introspection:" msgstr "" +"La fonction possède un attribut ``__qualname__`` (:term:`nom " +"qualifié`) pour prendre en charge l'introspection :" #: howto/descriptor.rst:1146 msgid "" "Accessing the function through the class dictionary does not invoke :meth:" "`__get__`. Instead, it just returns the underlying function object::" msgstr "" +"L'accès à la fonction *via* le dictionnaire de classe n'invoque pas :meth:" +"`__get__`. À la place, il renvoie simplement l'objet de fonction sous-" +"jacent ::" #: howto/descriptor.rst:1152 msgid "" "Dotted access from a class calls :meth:`__get__` which just returns the " "underlying function unchanged::" msgstr "" +"La recherche d'attribut depuis une classe appelle :meth:`__get__`, qui " +"renvoie simplement la fonction sous-jacente inchangée ::" #: howto/descriptor.rst:1158 msgid "" "The interesting behavior occurs during dotted access from an instance. The " "dotted lookup calls :meth:`__get__` which returns a bound method object::" msgstr "" +"Le comportement intéressant se produit lors d'une recherche d'attribut à " +"partir d'une instance. La recherche d'attribut appelle :meth:`__get__` qui " +"renvoie un objet « méthode liée » ::" #: howto/descriptor.rst:1165 msgid "" "Internally, the bound method stores the underlying function and the bound " "instance::" msgstr "" +"En interne, la méthode liée stocke la fonction sous-jacente et l'instance " +"liée ::" #: howto/descriptor.rst:1174 msgid "" "If you have ever wondered where *self* comes from in regular methods or " "where *cls* comes from in class methods, this is it!" msgstr "" +"Si vous vous êtes déjà demandé d'où vient *self* dans les méthodes " +"ordinaires ou d'où vient *cls* dans les méthodes de classe, c'est ça !" #: howto/descriptor.rst:1179 -#, fuzzy msgid "Kinds of methods" -msgstr "Fonctions et méthodes" +msgstr "Types de méthodes" #: howto/descriptor.rst:1181 msgid "" @@ -962,7 +1124,6 @@ msgstr "" "variations des patrons habituels des fonctions de liaison dans les méthodes." #: howto/descriptor.rst:1184 -#, fuzzy msgid "" "To recap, functions have a :meth:`__get__` method so that they can be " "converted to a method when accessed as attributes. The non-data descriptor " @@ -970,9 +1131,9 @@ msgid "" "f(*args)`` becomes ``f(*args)``." msgstr "" "Pour résumer, les fonctions ont une méthode :meth:`__get__` pour qu'elles " -"puissent être converties en méthode lorsqu'on y accède comme attributs. Le " -"descripteur *non-data* transforme un appel ``obj.f(*args)``en ``f(obj, " -"*args)``. Appeler ``klass.f(*args)`` devient ``f(*args)``." +"puissent être converties en méthodes lorsqu'on y accède comme attributs. Le " +"descripteur hors-données transforme un appel ``obj.f(*args)`` en ``f(obj, " +"*args)``. L'appel ``cls.f(*args)`` devient ``f(*args)``." #: howto/descriptor.rst:1189 msgid "This chart summarizes the binding and its two most useful variants:" @@ -985,14 +1146,12 @@ msgid "Transformation" msgstr "Transformation" #: howto/descriptor.rst:1192 -#, fuzzy msgid "Called from an object" -msgstr "Appelé depuis un Objet" +msgstr "Appelée depuis un objet" #: howto/descriptor.rst:1192 -#, fuzzy msgid "Called from a class" -msgstr "Appelé depuis un Classe" +msgstr "Appelée depuis une classe" #: howto/descriptor.rst:1195 msgid "function" @@ -1023,9 +1182,8 @@ msgid "f(cls, \\*args)" msgstr "f(cls, \\*args)" #: howto/descriptor.rst:1204 -#, fuzzy msgid "Static methods" -msgstr "méthode statique" +msgstr "Méthodes statiques" #: howto/descriptor.rst:1206 msgid "" @@ -1072,41 +1230,36 @@ msgstr "" "``Sample.erf(1.5) --> .9332``." #: howto/descriptor.rst:1224 -#, fuzzy msgid "" "Since static methods return the underlying function with no changes, the " "example calls are unexciting:" msgstr "" -"Depuis que les méthodes statiques renvoient la fonction sous-jacente sans " -"changement, les exemples d’appels ne sont pas excitants ::" +"Puisque les méthodes statiques renvoient la fonction sous-jacente sans " +"changement, les exemples d’appels sont d'une grande banalité ::" #: howto/descriptor.rst:1241 -#, fuzzy msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`staticmethod` would look like this:" msgstr "" -"En utilisant le protocole de descripteur *non-data*, une version Python pure " -"de :func:`staticmethod` ressemblerait à ceci ::" +"En utilisant le protocole de descripteur hors-données, une version Python " +"pure de :func:`staticmethod` ressemblerait à ceci ::" #: howto/descriptor.rst:1273 -#, fuzzy msgid "Class methods" -msgstr "méthode de classe" +msgstr "Méthodes de classe" #: howto/descriptor.rst:1275 -#, fuzzy msgid "" "Unlike static methods, class methods prepend the class reference to the " "argument list before calling the function. This format is the same for " "whether the caller is an object or a class:" 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 ::" +"Contrairement aux méthodes statiques, les méthodes de classe ajoutent la " +"référence de classe en tête de la liste d'arguments, avant d'appeler la " +"fonction. C'est le même format que l'appelant soit un objet ou une classe ::" #: howto/descriptor.rst:1293 -#, fuzzy msgid "" "This behavior is useful whenever the method only needs to have a class " "reference and does not rely on data stored in a specific instance. One use " @@ -1115,27 +1268,25 @@ msgid "" "of keys. The pure Python equivalent is:" msgstr "" "Ce comportement est utile lorsque la fonction n'a besoin que d'une référence " -"de classe et ne se soucie pas des données sous-jacentes. Une des " -"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 ::" +"de classe et ne se soucie pas des données propres à une instance " +"particulière. Une des utilisations des méthodes de classe est de créer des " +"constructeurs de classe personnalisés. Par exemple, 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 ::" #: howto/descriptor.rst:1310 -#, fuzzy 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 :" #: howto/descriptor.rst:1320 -#, fuzzy msgid "" "Using the non-data descriptor protocol, a pure Python version of :func:" "`classmethod` would look like this:" msgstr "" -"En utilisant le protocole de descripteur *non-data*, une version Python pure " -"de :func:`classmethod` ressemblerait à ceci ::" +"En utilisant le protocole de descripteur hors-données, une version Python " +"pure de :func:`classmethod` ressemblerait à ceci :" #: howto/descriptor.rst:1369 msgid "" @@ -1147,7 +1298,7 @@ msgstr "" #: howto/descriptor.rst:1389 msgid "Member objects and __slots__" -msgstr "" +msgstr "Objets membres et *__slots__*" #: howto/descriptor.rst:1391 msgid "" @@ -1155,18 +1306,26 @@ msgid "" "fixed-length array of slot values. From a user point of view that has " "several effects:" msgstr "" +"Lorsqu'une classe définit ``__slots__``, Python remplace le dictionnaire " +"d'instance par un tableau de longueur fixe de créneaux prédéfinis. D'un " +"point de vue utilisateur, cela :" #: howto/descriptor.rst:1395 msgid "" "1. Provides immediate detection of bugs due to misspelled attribute " "assignments. Only attribute names specified in ``__slots__`` are allowed:" msgstr "" +"1/ permet une détection immédiate des bogues dus à des affectations " +"d'attributs mal orthographiés. Seuls les noms d'attribut spécifiés dans " +"``__slots__`` sont autorisés :" #: howto/descriptor.rst:1411 msgid "" "2. Helps create immutable objects where descriptors manage access to private " "attributes stored in ``__slots__``:" msgstr "" +"2/ aide à créer des objets immuables où les descripteurs gèrent l'accès aux " +"attributs privés stockés dans ``__slots__`` :" #: howto/descriptor.rst:1446 msgid "" @@ -1175,6 +1334,11 @@ msgid "" "design pattern `_ likely " "only matters when a large number of instances are going to be created." msgstr "" +"3/ économise de la mémoire. Sur une version Linux 64 bits, une instance avec " +"deux attributs prend 48 octets avec ``__slots__`` et 152 octets sans. Ce " +"patron de conception `poids mouche `_ n'a probablement d'importance que si un " +"grand nombre d'instances doivent être créées ;" #: howto/descriptor.rst:1451 msgid "" @@ -1191,12 +1355,21 @@ msgid "" "``_slotvalues`` list. Reads and writes to that private structure are " "managed by member descriptors:" msgstr "" +"Il n'est pas possible de créer une version Python pure exacte de " +"``__slots__`` car il faut un accès direct aux structures C et un contrôle " +"sur l'allocation de la mémoire des objets. Cependant, nous pouvons " +"construire une simulation presque fidèle où la structure C réelle pour les " +"*slots* est émulée par une liste privée ``_slotvalues``. Les lectures et " +"écritures dans cette structure privée sont gérées par des descripteurs de " +"membres :" #: howto/descriptor.rst:1516 msgid "" "The :meth:`type.__new__` method takes care of adding member objects to class " "variables:" msgstr "" +"La méthode :meth:`type.__new__` s'occupe d'ajouter des objets membres aux " +"variables de classe :" #: howto/descriptor.rst:1532 msgid "" @@ -1204,27 +1377,37 @@ msgid "" "slots instead of an instance dictionary. Here is a rough simulation in pure " "Python:" msgstr "" +"La méthode :meth:`object.__new__` s'occupe de créer des instances qui ont " +"des *slots* au lieu d'un dictionnaire d'instances. Voici une simulation " +"approximative en Python pur :" #: howto/descriptor.rst:1567 msgid "" "To use the simulation in a real class, just inherit from :class:`Object` and " "set the :term:`metaclass` to :class:`Type`:" msgstr "" +"Pour utiliser la simulation dans une classe réelle, héritez simplement de :" +"class:`Object` et définissez la :term:`métaclasse ` à :class:" +"`Type` :" #: howto/descriptor.rst:1581 msgid "" "At this point, the metaclass has loaded member objects for *x* and *y*::" msgstr "" +"À ce stade, la métaclasse a chargé des objets membres pour *x* et *y* ::" #: howto/descriptor.rst:1602 msgid "" "When instances are created, they have a ``slot_values`` list where the " "attributes are stored:" msgstr "" +"Lorsque les instances sont créées, elles ont une liste ``slot_values`` où " +"les attributs sont stockés :" #: howto/descriptor.rst:1614 msgid "Misspelled or unassigned attributes will raise an exception:" msgstr "" +"Les attributs mal orthographiés ou non attribués lèvent une exception :" #~ msgid "" #~ "Defines descriptors, summarizes the protocol, and shows how descriptors " diff --git a/howto/functional.po b/howto/functional.po index 96691686..75f99aa7 100644 --- a/howto/functional.po +++ b/howto/functional.po @@ -177,7 +177,6 @@ msgstr "" "programme ; chaque sortie d'une fonction ne dépend que de son entrée." #: howto/functional.rst:66 -#, fuzzy msgid "" "Some languages are very strict about purity and don't even have assignment " "statements such as ``a=3`` or ``c = a + b``, but it's difficult to avoid all " @@ -191,11 +190,11 @@ msgstr "" "fonctions et ne laissent même pas la possibilité d'assigner des variables " "avec des expressions telles que ``a = 3`` ou ``c = a + b``, cependant il est " "difficile d'éviter tous les effets de bord. Afficher un message sur l'écran " -"ou écrire un fichier sur le disque sont des effets de bord. Par exemple, un " -"appel aux fonctions :func:`print` ou :func:`time.sleep` en Python ne renvoie " -"aucune valeur utile ; ces fonctions ne sont appelées que pour leur effet de " -"bord (afficher du texte sur l'écran et mettre en pause l'exécution du " -"programme)." +"ou écrire un fichier sur le disque sont des effets de bord. Pour prendre un " +"autre exemple, un appel aux fonctions :func:`print` ou :func:`time.sleep` en " +"Python ne renvoie aucune valeur utile ; ces fonctions ne sont appelées que " +"pour leur effet de bord (afficher du texte sur l'écran ou mettre en pause " +"l'exécution du programme)." #: howto/functional.rst:73 msgid "" @@ -1017,15 +1016,14 @@ msgstr "" # Énumération #: howto/functional.rst:592 -#, fuzzy msgid "" ":meth:`throw(value) ` is used to raise an exception inside " "the generator; the exception is raised by the ``yield`` expression where the " "generator's execution is paused." msgstr "" -":meth:`throw(type, value=None, traceback=None) ` permet de " -"lever une exception dans le générateur ; celle-ci est levée par l'expression " -"``yield`` à l'endroit où l'exécution a été mise en pause ;" +":meth:`throw(value) ` permet de lever une exception dans le " +"générateur ; celle-ci est levée par l'expression ``yield`` à l'endroit où " +"l'exécution a été mise en pause." #: howto/functional.rst:596 msgid "" diff --git a/howto/logging-cookbook.po b/howto/logging-cookbook.po index d732b1a9..37824368 100644 --- a/howto/logging-cookbook.po +++ b/howto/logging-cookbook.po @@ -16,7 +16,7 @@ msgstr "" #: howto/logging-cookbook.rst:5 msgid "Logging Cookbook" -msgstr "" +msgstr "Recettes pour la journalisation" #: howto/logging-cookbook.rst:0 msgid "Author" @@ -34,7 +34,7 @@ msgstr "" #: howto/logging-cookbook.rst:15 msgid "Using logging in multiple modules" -msgstr "" +msgstr "Journalisation dans plusieurs modules" #: howto/logging-cookbook.rst:17 msgid "" @@ -47,10 +47,18 @@ msgid "" "logger calls to the child will pass up to the parent. Here is a main " "module::" msgstr "" +"Deux appels à ``logging.getLogger('unLogger')`` renvoient toujours une " +"référence vers le même objet de journalisation. C’est valable à l’intérieur " +"d’un module, mais aussi dans des modules différents pour autant que ce soit " +"le même processus de l’interpréteur Python. En plus, le code d’une " +"application peut définir et configurer une journalisation parente dans un " +"module et créer (mais pas configurer) une journalisation fille dans un " +"module séparé. Les appels à la journalisation fille passeront alors à la " +"journalisation parente. Voici un module principal ::" #: howto/logging-cookbook.rst:55 msgid "Here is the auxiliary module::" -msgstr "" +msgstr "Voici un module auxiliaire ::" #: howto/logging-cookbook.rst:75 msgid "The output looks like this:" @@ -58,27 +66,33 @@ msgstr "La sortie ressemble à ceci ::" #: howto/logging-cookbook.rst:101 msgid "Logging from multiple threads" -msgstr "" +msgstr "Journalisation avec des fils d’exécution multiples" #: howto/logging-cookbook.rst:103 msgid "" "Logging from multiple threads requires no special effort. The following " "example shows logging from the main (initial) thread and another thread::" msgstr "" +"La journalisation avec des fils d’exécution multiples ne requiert pas " +"d’effort particulier. L’exemple suivant montre comment journaliser depuis le " +"fil principal (c.-à-d. initial) et un autre fil ::" #: howto/logging-cookbook.rst:132 msgid "When run, the script should print something like the following:" -msgstr "" +msgstr "À l’exécution, le script doit afficher quelque chose comme ça ::" #: howto/logging-cookbook.rst:154 msgid "" "This shows the logging output interspersed as one might expect. This " "approach works for more threads than shown here, of course." msgstr "" +"Les entrées de journalisation sont entrelacées, comme on pouvait s’y " +"attendre. Cette approche fonctionne aussi avec plus de fils que dans " +"l’exemple, bien sûr." #: howto/logging-cookbook.rst:158 msgid "Multiple handlers and formatters" -msgstr "" +msgstr "Plusieurs gestionnaires et formateurs" #: howto/logging-cookbook.rst:160 msgid "" @@ -91,6 +105,15 @@ msgid "" "slight modification to the previous simple module-based configuration " "example::" msgstr "" +"Les gestionnaires de journalisation sont des objets Python ordinaires. La " +"méthode :meth:`~Logger.addHandler` n’est pas limitée, en nombre minimum ou " +"maximum, en gestionnaires que vous pouvez ajouter. Parfois, il peut être " +"utile pour une application de journaliser tous les messages quels que soient " +"leurs niveaux vers un fichier texte, tout en journalisant les erreurs (et " +"plus grave) dans la console. Pour ce faire, configurez simplement les " +"gestionnaires de manière adéquate. Les appels de journalisation dans le code " +"de l’application resteront les mêmes. Voici une légère modification de " +"l’exemple précédent dans une configuration au niveau du module ::" #: howto/logging-cookbook.rst:193 msgid "" @@ -98,6 +121,9 @@ msgid "" "All that changed was the addition and configuration of a new handler named " "*fh*." msgstr "" +"Notez que le code de « l’application » ignore la multiplicité des " +"gestionnaires. Les modifications consistent simplement en l’ajout et la " +"configuration d’un nouveau gestionnaire appelé *fh*." #: howto/logging-cookbook.rst:196 msgid "" @@ -110,10 +136,19 @@ msgid "" "to happen is to modify the severity level of the logger and/or handler to " "debug." msgstr "" +"La possibilité de créer de nouveaux gestionnaires avec des filtres sur un " +"niveau de gravité supérieur ou inférieur peut être très utile lors de " +"l’écriture ou du test d’une application. Au lieu d’utiliser de nombreuses " +"instructions ``print`` pour le débogage, utilisez ``logger.debug`` : " +"contrairement aux instructions ``print``, que vous devrez supprimer ou " +"commenter plus tard, les instructions ``logger.debug`` peuvent demeurer " +"telles quelles dans le code source et restent dormantes jusqu’à ce que vous " +"en ayez à nouveau besoin. À ce moment-là, il suffit de modifier le niveau de " +"gravité de la journalisation ou du gestionnaire pour déboguer." #: howto/logging-cookbook.rst:207 msgid "Logging to multiple destinations" -msgstr "" +msgstr "Journalisation vers plusieurs destinations" #: howto/logging-cookbook.rst:209 msgid "" @@ -123,34 +158,46 @@ msgid "" "console. Let's also assume that the file should contain timestamps, but the " "console messages should not. Here's how you can achieve this::" msgstr "" +"Supposons que vous souhaitiez journaliser dans la console et dans un fichier " +"avec différents formats de messages et avec différents critères. Supposons " +"que vous souhaitiez consigner les messages de niveau DEBUG et supérieur dans " +"le fichier, et les messages de niveau INFO et supérieur dans la console. " +"Supposons également que le fichier doive contenir des horodatages, mais pas " +"les messages de la console. Voici comment y parvenir ::" #: howto/logging-cookbook.rst:247 msgid "When you run this, on the console you will see" -msgstr "" +msgstr "Quand vous le lancez, vous devez voir" #: howto/logging-cookbook.rst:256 msgid "and in the file you will see something like" -msgstr "" +msgstr "et, dans le fichier, vous devez trouver" #: howto/logging-cookbook.rst:266 msgid "" "As you can see, the DEBUG message only shows up in the file. The other " "messages are sent to both destinations." msgstr "" +"Comme vous pouvez le constater, le message DEBUG n’apparaît que dans le " +"fichier. Les autres messages sont envoyés vers les deux destinations." #: howto/logging-cookbook.rst:269 msgid "" "This example uses console and file handlers, but you can use any number and " "combination of handlers you choose." msgstr "" +"Cet exemple utilise la console et des gestionnaires de fichier, mais vous " +"pouvez utiliser et combiner autant de gestionnaires que de besoin." #: howto/logging-cookbook.rst:274 msgid "Configuration server example" -msgstr "" +msgstr "Exemple d’un serveur de configuration" #: howto/logging-cookbook.rst:276 msgid "Here is an example of a module using the logging configuration server::" msgstr "" +"Voici un exemple de module mettant en œuvre la configuration de la " +"journalisation *via* un serveur ::" #: howto/logging-cookbook.rst:307 msgid "" @@ -158,10 +205,14 @@ msgid "" "server, properly preceded with the binary-encoded length, as the new logging " "configuration::" msgstr "" +"Et voici un script qui, à partir d’un nom de fichier, commence par envoyer " +"la taille du fichier encodée en binaire (comme il se doit), puis envoie ce " +"fichier au serveur pour définir la nouvelle configuration de " +"journalisation ::" #: howto/logging-cookbook.rst:330 msgid "Dealing with handlers that block" -msgstr "" +msgstr "Utilisation de gestionnaires bloquants" #: howto/logging-cookbook.rst:334 msgid "" @@ -180,6 +231,15 @@ msgid "" "which is too slow (and this query can be deep in the socket library code, " "below the Python layer, and outside your control)." msgstr "" +"Un gestionnaire classiquement lent est le :class:`SMTPHandler` : l’envoi d’e-" +"mails peut prendre beaucoup de temps, pour un certain nombre de raisons " +"indépendantes du développeur (par exemple, une infrastructure de messagerie " +"ou de réseau peu performante). Mais n’importe quel autre gestionnaire " +"utilisant le réseau ou presque peut aussi s’avérer bloquant : même une " +"simple opération :class:`SocketHandler` peut faire une requête DNS implicite " +"et être ainsi très lente (cette requête peut être enfouie profondément dans " +"le code de la bibliothèque d’accès réseau, sous la couche Python, et hors de " +"votre contrôle)." #: howto/logging-cookbook.rst:346 msgid "" @@ -194,6 +254,18 @@ msgid "" "to attach only ``QueueHandlers`` to your loggers) for the benefit of other " "developers who will use your code." msgstr "" +"Une solution consiste à utiliser une approche en deux parties. Pour la " +"première partie, affectez un seul :class:`QueueHandler` à la journalisation " +"des fils d’exécution critiques pour les performances. Ils écrivent " +"simplement dans leur file d’attente, qui peut être dimensionnée à une " +"capacité suffisamment grande ou initialisée sans limite supérieure en " +"taille. L’écriture dans la file d’attente est généralement acceptée " +"rapidement, mais nous vous conseillons quand même de prévoir d’intercepter " +"l’exception :exc:`queue.Full` par précaution dans votre code. Si vous " +"développez une bibliothèque avec des fils d’exécution critiques pour les " +"performances, documentez-le bien (avec une suggestion de n’affecter que des " +"``QueueHandlers`` à votre journalisation) pour faciliter le travail des " +"développeurs qui utilisent votre code." #: howto/logging-cookbook.rst:357 msgid "" @@ -205,6 +277,13 @@ msgid "" "matter). The ``LogRecords`` are removed from the queue and passed to the " "handlers for processing." msgstr "" +"La deuxième partie de la solution est la classe :class:`QueueListener`, " +"conçue comme l’homologue de :class:`QueueHandler`. Un :class:`QueueListener` " +"est très simple : vous lui passez une file d’attente et des gestionnaires, " +"et il lance un fil d’exécution interne qui scrute la file d’attente pour " +"récupérer les événements envoyés par les ``QueueHandlers`` (ou toute autre " +"source de ``LogRecords``, d’ailleurs). Les ``LogRecords`` sont supprimés de " +"la file d’attente et transmis aux gestionnaires pour traitement." #: howto/logging-cookbook.rst:365 msgid "" @@ -214,14 +293,20 @@ msgid "" "handler classes, which would eat up one thread per handler for no particular " "benefit." msgstr "" +"L’avantage d’avoir une classe :class:`QueueListener` séparée est que vous " +"pouvez utiliser la même instance pour servir plusieurs ``QueueHandlers``. " +"Cela consomme moins de ressources que des instances de gestionnaires " +"réparties chacune dans un fil d’exécution séparé." #: howto/logging-cookbook.rst:370 msgid "An example of using these two classes follows (imports omitted)::" msgstr "" +"Voici un exemple d’utilisation de ces deux classes (les importations sont " +"omises) ::" #: howto/logging-cookbook.rst:388 msgid "which, when run, will produce:" -msgstr "" +msgstr "ce qui produit ceci à l’exécution :" #: howto/logging-cookbook.rst:394 msgid "" @@ -234,10 +319,18 @@ msgid "" "of each message with the handler's level, and only passes a message to a " "handler if it's appropriate to do so." msgstr "" +"avant Python 3.5, la classe :class:`QueueListener` passait chaque message " +"reçu de la file d’attente à chaque gestionnaire avec lequel l’instance avait " +"été initialisée (on supposait que le filtrage de niveau était entièrement " +"effectué de l’autre côté, au niveau de l’alimentation de la file d’attente). " +"Depuis Python 3.5, le comportement peut être modifié en passant l’argument " +"par mot-clé ``respect_handler_level=True`` au constructeur. Dans ce cas, la " +"``QueueListener`` compare le niveau de chaque message avec le niveau défini " +"dans chaque gestionnaire et ne transmet le message que si c’est opportun." #: howto/logging-cookbook.rst:407 msgid "Sending and receiving logging events across a network" -msgstr "" +msgstr "Envoi et réception d’événements de journalisation à travers le réseau" #: howto/logging-cookbook.rst:409 msgid "" @@ -245,18 +338,26 @@ msgid "" "at the receiving end. A simple way of doing this is attaching a :class:" "`SocketHandler` instance to the root logger at the sending end::" msgstr "" +"Supposons que vous souhaitiez envoyer des événements de journalisation sur " +"un réseau et les traiter à la réception. Une façon simple de faire est " +"d’attacher une instance :class:`SocketHandler` à la journalisation racine de " +"l’émetteur ::" #: howto/logging-cookbook.rst:437 msgid "" "At the receiving end, you can set up a receiver using the :mod:" "`socketserver` module. Here is a basic working example::" msgstr "" +"Vous pouvez configurer le récepteur en utilisant le module :mod:" +"`socketserver`. Voici un exemple élémentaire ::" #: howto/logging-cookbook.rst:525 msgid "" "First run the server, and then the client. On the client side, nothing is " "printed on the console; on the server side, you should see something like:" msgstr "" +"Lancez d’abord le serveur, puis le client. Côté client, rien ne s’affiche " +"sur la console ; côté serveur, vous devez voir quelque chose comme ça :" #: howto/logging-cookbook.rst:537 msgid "" @@ -266,10 +367,16 @@ msgid "" "implementing your alternative there, as well as adapting the above script to " "use your alternative serialization." msgstr "" +"Notez que ``pickle`` introduit des problèmes de sécurité dans certains " +"scénarios. Si vous êtes concerné, vous pouvez utiliser une sérialisation " +"alternative en surchargeant la méthode :meth:`~handlers.SocketHandler." +"makePickle` par votre propre implémentation, ainsi qu’en adaptant le script " +"ci-dessus pour utiliser votre sérialisation." #: howto/logging-cookbook.rst:545 msgid "Running a logging socket listener in production" msgstr "" +"Journalisation en production à l’aide d’un connecteur en écoute sur le réseau" #: howto/logging-cookbook.rst:547 msgid "" @@ -283,7 +390,7 @@ msgstr "" #: howto/logging-cookbook.rst:558 msgid "Adding contextual information to your logging output" -msgstr "" +msgstr "Ajout d’informations contextuelles dans la journalisation" #: howto/logging-cookbook.rst:560 msgid "" @@ -300,10 +407,26 @@ msgid "" "logging an application, it could be hard to manage if the number of :class:" "`Logger` instances becomes effectively unbounded." msgstr "" +"Dans certains cas, vous pouvez souhaiter que la journalisation contienne des " +"informations contextuelles en plus des paramètres transmis à l’appel de " +"journalisation. Par exemple, dans une application réseau, il peut être " +"souhaitable de consigner des informations spécifiques au client dans le " +"journal (par exemple, le nom d’utilisateur ou l’adresse IP du client " +"distant). Bien que vous puissiez utiliser le paramètre *extra* pour y " +"parvenir, il n’est pas toujours pratique de transmettre les informations de " +"cette manière. Il peut être aussi tentant de créer des instances :class:" +"`Logger` connexion par connexion, mais ce n’est pas une bonne idée car ces " +"instances :class:`Logger` ne sont pas éliminées par le ramasse-miettes. Même " +"si ce point n’est pas problématique en soi si la journalisation est " +"configurée avec plusieurs niveaux de granularité, cela peut devenir " +"difficile de gérer un nombre potentiellement illimité d’instances de :class:" +"`Logger`." #: howto/logging-cookbook.rst:575 msgid "Using LoggerAdapters to impart contextual information" msgstr "" +"Utilisation d’adaptateurs de journalisation pour transmettre des " +"informations contextuelles" #: howto/logging-cookbook.rst:577 msgid "" @@ -315,6 +438,14 @@ msgid "" "signatures as their counterparts in :class:`Logger`, so you can use the two " "types of instances interchangeably." msgstr "" +"Un moyen simple de transmettre des informations contextuelles accompagnant " +"les informations de journalisation consiste à utiliser la classe :class:" +"`LoggerAdapter`. Cette classe est conçue pour ressembler à un :class:" +"`Logger`, de sorte que vous pouvez appeler :meth:`debug`, :meth:`info`, :" +"meth:`warning`, :meth:`error`, :meth:`exception`, :meth:`critical` et :meth:" +"`log`. Ces méthodes ont les mêmes signatures que leurs homologues dans :" +"class:`Logger`, vous pouvez donc utiliser les deux types d’instances de " +"manière interchangeable." #: howto/logging-cookbook.rst:585 msgid "" @@ -326,6 +457,13 @@ msgid "" "contextual information in the delegated call. Here's a snippet from the code " "of :class:`LoggerAdapter`::" msgstr "" +"Lorsque vous créez une instance de :class:`LoggerAdapter`, vous lui " +"transmettez une instance de :class:`Logger` et un objet dictionnaire qui " +"contient vos informations contextuelles. Lorsque vous appelez l’une des " +"méthodes de journalisation sur une instance de :class:`LoggerAdapter`, elle " +"délègue l’appel à l’instance sous-jacente de :class:`Logger` transmise à son " +"constructeur et s’arrange pour intégrer les informations contextuelles dans " +"l’appel délégué. Voici un extrait du code de :class:`LoggerAdapter` ::" #: howto/logging-cookbook.rst:601 msgid "" @@ -339,6 +477,15 @@ msgid "" "had passed an 'extra' keyword argument in the call to the adapter, it will " "be silently overwritten." msgstr "" +"Les informations contextuelles sont ajoutées dans la méthode :meth:" +"`~LoggerAdapter.process` de :class:`LoggerAdapter`. On lui passe le message " +"et les arguments par mot-clé de l’appel de journalisation, et elle en " +"renvoie des versions (potentiellement) modifiées à utiliser pour la " +"journalisation sous-jacente. L’implémentation par défaut de cette méthode " +"laisse le message seul, mais insère une clé ``extra`` dans l’argument par " +"mot-clé dont la valeur est l’objet dictionnaire passé au constructeur. Bien " +"sûr, si vous avez passé un argument par mot-clé ``extra`` dans l’appel à " +"l’adaptateur, il est écrasé silencieusement." #: howto/logging-cookbook.rst:610 msgid "" @@ -350,20 +497,33 @@ msgid "" "string, you just need to subclass :class:`LoggerAdapter` and override :meth:" "`~LoggerAdapter.process` to do what you need. Here is a simple example::" msgstr "" +"L’avantage d’utiliser ``extra`` est que les valeurs de l’objet dictionnaire " +"sont fusionnées dans le ``__dict__`` de l’instance :class:`LogRecord`, ce " +"qui vous permet d’utiliser des chaînes personnalisées avec vos instances :" +"class:`Formatter` qui connaissent les clés de l’objet dictionnaire. Si vous " +"avez besoin d’une méthode différente, par exemple si vous souhaitez ajouter " +"des informations contextuelles avant ou après la chaîne de message, il vous " +"suffit de surcharger :class:`LoggerAdapter` et de remplacer :meth:" +"`~LoggerAdapter.process` pour faire ce dont vous avez besoin. Voici un " +"exemple simple ::" #: howto/logging-cookbook.rst:626 msgid "which you can use like this::" -msgstr "" +msgstr "que vous pouvez utiliser comme ceci ::" #: howto/logging-cookbook.rst:631 msgid "" "Then any events that you log to the adapter will have the value of " "``some_conn_id`` prepended to the log messages." msgstr "" +"Ainsi, tout événement journalisé aura la valeur de ``some_conn_id`` insérée " +"en début de message de journalisation." #: howto/logging-cookbook.rst:635 msgid "Using objects other than dicts to pass contextual information" msgstr "" +"Utilisation d’objets autres que les dictionnaires pour passer des " +"informations contextuelles" #: howto/logging-cookbook.rst:637 msgid "" @@ -373,10 +533,16 @@ msgid "" "if you want to generate values dynamically (whereas the values in a dict " "would be constant)." msgstr "" +"Il n’est pas obligatoire de passer un dictionnaire réel à un :class:" +"`LoggerAdapter`, vous pouvez passer une instance d’une classe qui implémente " +"``__getitem__`` et ``__iter__`` pour qu’il ressemble à un dictionnaire du " +"point de vue de la journalisation. C’est utile si vous souhaitez générer des " +"valeurs de manière dynamique (alors que les valeurs d’un dictionnaire " +"seraient constantes)." #: howto/logging-cookbook.rst:646 msgid "Using Filters to impart contextual information" -msgstr "" +msgstr "Utilisation de filtres pour transmettre des informations contextuelles" #: howto/logging-cookbook.rst:648 msgid "" @@ -386,6 +552,12 @@ msgid "" "can then be output using a suitable format string, or if needed a custom :" "class:`Formatter`." msgstr "" +"Un :class:`Filter` défini par l’utilisateur peut aussi ajouter des " +"informations contextuelles à la journalisation. Les instances de ``Filter`` " +"sont autorisées à modifier les ``LogRecords`` qui leur sont transmis, y " +"compris par l’ajout d’attributs supplémentaires qui peuvent ensuite être " +"intégrés à la journalisation en utilisant une chaîne de formatage appropriée " +"ou, si nécessaire, un :class:`Formatter` personnalisé." #: howto/logging-cookbook.rst:653 msgid "" @@ -398,14 +570,23 @@ msgid "" "format string can be used to get similar output to that shown above. Here's " "an example script::" msgstr "" +"Par exemple, dans une application Web, la requête en cours de traitement (ou " +"du moins ce qu’elle contient d’intéressant) peut être stockée dans une " +"variable locale au fil d’exécution (:class:`threading.local`), puis utilisée " +"dans un ``Filter`` pour ajouter, par exemple, des informations relatives à " +"la requête (par exemple, l’adresse IP distante et le nom de l’utilisateur) " +"au ``LogRecord``, en utilisant les noms d’attribut ``ip`` et ``user`` comme " +"dans l’exemple ``LoggerAdapter`` ci-dessus. Dans ce cas, la même chaîne de " +"formatage peut être utilisée pour obtenir une sortie similaire à celle " +"indiquée ci-dessus. Voici un exemple de script ::" #: howto/logging-cookbook.rst:699 msgid "which, when run, produces something like:" -msgstr "" +msgstr "qui, à l’exécution, produit quelque chose comme ça ::" #: howto/logging-cookbook.rst:720 msgid "Logging to a single file from multiple processes" -msgstr "" +msgstr "Journalisation vers un fichier unique à partir de plusieurs processus" #: howto/logging-cookbook.rst:722 msgid "" @@ -422,6 +603,20 @@ msgid "" "includes a working socket receiver which can be used as a starting point for " "you to adapt in your own applications." msgstr "" +"La journalisation est fiable avec les programmes à fils d’exécution " +"multiples (*thread-safe*) : rien n’empêche plusieurs fils d’exécution de " +"journaliser dans le même fichier, du moment que ces fils d’exécution font " +"partie du même processus. En revanche, il n’existe aucun moyen standard de " +"sérialiser l’accès à un seul fichier sur plusieurs processus en Python. Si " +"vous avez besoin de vous connecter à un seul fichier à partir de plusieurs " +"processus, une façon de le faire est de faire en sorte que tous les " +"processus se connectent à un :class:`~handlers.SocketHandler`, et d’avoir un " +"processus séparé qui implémente un serveur qui lit à partir de ce connecteur " +"et écrit les journaux dans le fichier (si vous préférez, vous pouvez dédier " +"un fil d’exécution dans l’un des processus existants pour exécuter cette " +"tâche). :ref:`Cette section ` documente cette approche plus " +"en détail et inclut un connecteur en écoute réseau fonctionnel qui peut être " +"utilisé comme point de départ pour l’adapter à vos propres applications." #: howto/logging-cookbook.rst:735 msgid "" @@ -433,6 +628,14 @@ msgid "" "`multiprocessing` module does not provide working lock functionality on all " "platforms (see https://bugs.python.org/issue3770)." msgstr "" +"Vous pouvez également écrire votre propre gestionnaire en utilisant la " +"classe :class:`~multiprocessing.Lock` du module :mod:`multiprocessing` pour " +"sérialiser l’accès au fichier depuis vos processus. Les actuels :class:" +"`FileHandler` et sous-classes n’utilisent pas :mod:`multiprocessing` pour le " +"moment, même s’ils pourraient le faire à l’avenir. Notez qu’à l’heure " +"actuelle, le module :mod:`multiprocessing` ne fournit pas un verrouillage " +"fonctionnel pour toutes les plates-formes (voir https://bugs.python.org/" +"issue3770)." #: howto/logging-cookbook.rst:745 msgid "" @@ -448,12 +651,26 @@ msgid "" "application, and can be used as the basis for code meeting your own specific " "requirements::" msgstr "" +"Autrement, vous pouvez utiliser une ``Queue`` et un :class:`QueueHandler` " +"pour envoyer tous les événements de journalisation à l’un des processus de " +"votre application multi-processus. L’exemple de script suivant montre " +"comment procéder ; dans l’exemple, un processus d’écoute distinct écoute les " +"événements envoyés par les autres processus et les journalise en fonction de " +"sa propre configuration de journalisation. Bien que l’exemple ne montre " +"qu’une seule façon de faire (par exemple, vous pouvez utiliser un fil " +"d’exécution d’écoute plutôt qu’un processus d’écoute séparé – " +"l’implémentation serait analogue), il permet des configurations de " +"journalisation complètement différentes pour celui qui écoute ainsi que pour " +"les autres processus de votre application, et peut être utilisé comme base " +"pour répondre à vos propres exigences ::" #: howto/logging-cookbook.rst:861 msgid "" "A variant of the above script keeps the logging in the main process, in a " "separate thread::" msgstr "" +"Une variante du script ci-dessus conserve la journalisation dans le " +"processus principal, dans un fil séparé ::" #: howto/logging-cookbook.rst:956 msgid "" @@ -464,10 +681,17 @@ msgid "" "events are generated in the worker processes) to direct the messages to the " "appropriate destinations." msgstr "" +"Cette variante montre comment appliquer la configuration pour des " +"enregistreurs particuliers – par exemple l’enregistreur ``foo`` a un " +"gestionnaire spécial qui stocke tous les événements du sous-système ``foo`` " +"dans un fichier ``mplog-foo.log``. C’est utilisé par le mécanisme de " +"journalisation dans le processus principal (même si les événements de " +"journalisation sont générés dans les processus de travail) pour diriger les " +"messages vers les destinations appropriées." #: howto/logging-cookbook.rst:963 msgid "Using concurrent.futures.ProcessPoolExecutor" -msgstr "" +msgstr "Utilisation de concurrent.futures.ProcessPoolExecutor" #: howto/logging-cookbook.rst:965 msgid "" @@ -475,22 +699,29 @@ msgid "" "your worker processes, you need to create the queue slightly differently. " "Instead of" msgstr "" +"Si vous souhaitez utiliser :class:`concurrent.futures.ProcessPoolExecutor` " +"pour démarrer vos processus de travail, vous devez créer la file d’attente " +"légèrement différemment. À la place de" #: howto/logging-cookbook.rst:973 msgid "you should use" -msgstr "" +msgstr "vous devez écrire" #: howto/logging-cookbook.rst:979 msgid "and you can then replace the worker creation from this::" msgstr "" +"et vous pouvez alors remplacer la création du processus de travail telle " +"que ::" #: howto/logging-cookbook.rst:990 msgid "to this (remembering to first import :mod:`concurrent.futures`)::" msgstr "" +"par celle-ci (souvenez-vous d’importer au préalable :mod:`concurrent." +"futures`) ::" #: howto/logging-cookbook.rst:997 msgid "Deploying Web applications using Gunicorn and uWSGI" -msgstr "" +msgstr "Déploiement d’applications Web avec *Gunicorn* et *uWSGI*" #: howto/logging-cookbook.rst:999 msgid "" @@ -503,10 +734,20 @@ msgid "" "process management tool such as Supervisor - see `Running a logging socket " "listener in production`_ for more details." msgstr "" +"Lors du déploiement d’applications Web qui utilisent `Gunicorn `_ ou `uWSGI `_ " +"(ou équivalent), plusieurs processus de travail sont créés pour traiter les " +"requêtes des clients. Dans de tels environnements, évitez de créer des " +"gestionnaires à fichiers directement dans votre application Web. Au lieu de " +"cela, utilisez un :class:`SocketHandler` pour journaliser depuis " +"l’application Web vers gestionnaire réseau à l’écoute dans un processus " +"séparé. Cela peut être configuré à l’aide d’un outil de gestion de processus " +"tel que *Supervisor* (voir `Journalisation en production à l’aide d’un " +"connecteur en écoute sur le réseau`_ pour plus de détails)." #: howto/logging-cookbook.rst:1009 msgid "Using file rotation" -msgstr "" +msgstr "Utilisation du roulement de fichiers" #: howto/logging-cookbook.rst:1014 msgid "" @@ -517,12 +758,21 @@ msgid "" "usage pattern, the logging package provides a :class:`~handlers." "RotatingFileHandler`::" msgstr "" +"Parfois, vous souhaitez laisser un fichier de journalisation grossir jusqu’à " +"une certaine taille, puis ouvrir un nouveau fichier et vous y enregistrer " +"les nouveaux événements. Vous souhaitez peut-être conserver un certain " +"nombre de ces fichiers et, lorsque ce nombre de fichiers aura été créé, " +"faire rouler les fichiers afin que le nombre de fichiers et la taille des " +"fichiers restent tous deux limités. Pour ce cas d’usage, :class:`~handlers." +"RotatingFileHandler` est inclus dans le paquet de journalisation ::" #: howto/logging-cookbook.rst:1046 msgid "" "The result should be 6 separate files, each with part of the log history for " "the application:" msgstr "" +"Vous devez obtenir 6 fichiers séparés, chacun contenant une partie de " +"l’historique de journalisation de l’application :" #: howto/logging-cookbook.rst:1058 msgid "" @@ -531,16 +781,23 @@ msgid "" "``.1``. Each of the existing backup files is renamed to increment the suffix " "(``.1`` becomes ``.2``, etc.) and the ``.6`` file is erased." msgstr "" +"Le fichier de journalisation actuel est toujours :file:" +"`logging_rotatingfile_example.out`, et chaque fois qu’il atteint la taille " +"limite, il est renommé avec le suffixe ``.1``. Chacun des fichiers de " +"sauvegarde existants est renommé pour incrémenter le suffixe (``.1`` devient " +"``.2``, etc.) et le fichier ``.6`` est effacé." #: howto/logging-cookbook.rst:1063 msgid "" "Obviously this example sets the log length much too small as an extreme " "example. You would want to set *maxBytes* to an appropriate value." msgstr "" +"De toute évidence, la longueur du journal définie dans cet exemple est " +"beaucoup trop petite. À vous de définir *maxBytes* à une valeur appropriée." #: howto/logging-cookbook.rst:1069 msgid "Use of alternative formatting styles" -msgstr "" +msgstr "Utilisation d’autres styles de formatage" #: howto/logging-cookbook.rst:1071 msgid "" @@ -550,6 +807,11 @@ msgid "" "`string.Template` (added in Python 2.4) and :meth:`str.format` (added in " "Python 2.6)." msgstr "" +"Lorsque la journalisation a été ajoutée à la bibliothèque standard Python, " +"la seule façon de formater les messages avec un contenu variable était " +"d’utiliser la méthode de formatage avec « % ». Depuis, Python s’est enrichi " +"de deux nouvelles méthode de formatage : :class:`string.Template` (ajouté " +"dans Python 2.4) et :meth:`str.format` (ajouté dans Python 2.6)." #: howto/logging-cookbook.rst:1077 msgid "" @@ -563,6 +825,17 @@ msgid "" "meth:`str.format` or :class:`string.Template`. Here's an example console " "session to show the possibilities:" msgstr "" +"La journalisation (à partir de la version 3.2) offre une meilleure prise en " +"charge de ces deux styles de formatage supplémentaires. La classe :class:" +"`Formatter` a été améliorée pour accepter un paramètre par mot-clé " +"facultatif supplémentaire nommé ``style``. La valeur par défaut est ``'%'``, " +"les autres valeurs possibles étant ``'{'`` et ``'$'``, qui correspondent aux " +"deux autres styles de formatage. La rétrocompatibilité est maintenue par " +"défaut (comme vous vous en doutez) mais, en spécifiant explicitement un " +"paramètre de style, vous avez la possibilité de spécifier des chaînes de " +"format qui fonctionnent avec :meth:`str.format` ou :class:`string.Template`. " +"Voici un exemple de session interactive en console pour montrer les " +"possibilités :" #: howto/logging-cookbook.rst:1111 msgid "" @@ -570,6 +843,10 @@ msgid "" "completely independent of how an individual logging message is constructed. " "That can still use %-formatting, as shown here::" msgstr "" +"Notez que le formatage des messages de journalisation est, au final, " +"complètement indépendant de la façon dont un message de journalisation " +"individuel est construit. Vous pouvez toujours utiliser formatage *via* " +"« % », comme ici ::" #: howto/logging-cookbook.rst:1119 msgid "" @@ -586,6 +863,19 @@ msgid "" "logging calls which are out there in existing code will be using %-format " "strings." msgstr "" +"Les appels de journalisation (``logger.debug()``, ``logger.info()`` etc.) ne " +"prennent que des paramètres positionnels pour le message de journalisation " +"lui-même, les paramètres par mots-clés étant utilisés uniquement pour " +"déterminer comment gérer le message réel (par exemple, le paramètre par mot-" +"clé ``exc_info`` indique que les informations de trace doivent être " +"enregistrées, ou le paramètre par mot-clé ``extra`` indique des informations " +"contextuelles supplémentaires à ajouter au journal). Vous ne pouvez donc pas " +"inclure dans les appels de journalisation à l’aide de la syntaxe :meth:`str." +"format` ou :class:`string.Template`, car le paquet de journalisation utilise " +"le formatage via « % » en interne pour fusionner la chaîne de format et les " +"arguments de variables. Il n’est pas possible de changer ça tout en " +"préservant la rétrocompatibilité puisque tous les appels de journalisation " +"dans le code pré-existant utilisent des chaînes au format « % »." #: howto/logging-cookbook.rst:1132 msgid "" @@ -595,6 +885,11 @@ msgid "" "will call ``str()`` on that object to get the actual format string. Consider " "the following two classes::" msgstr "" +"Il existe cependant un moyen d’utiliser le formatage *via* « {} » et « $ » " +"pour vos messages de journalisation. Rappelez-vous que, pour un message, " +"vous pouvez utiliser un objet arbitraire comme chaîne de format de message, " +"et que le package de journalisation appelle ``str()`` sur cet objet pour " +"fabriquer la chaîne finale. Considérez les deux classes suivantes ::" #: howto/logging-cookbook.rst:1156 msgid "" @@ -606,6 +901,14 @@ msgid "" "__ (double underscore --- not to be confused with _, the single underscore " "used as a synonym/alias for :func:`gettext.gettext` or its brethren)." msgstr "" +"L’une ou l’autre peut être utilisée à la place d’une chaîne de format " +"\"%(message)s\" ou \"{message}\" ou \"$message\", afin de mettre en forme " +"*via* « { } » ou « $ » la partie « message réel » qui apparaît dans la " +"sortie de journal formatée. Il est un peu lourd d’utiliser les noms de " +"classe chaque fois que vous voulez journaliser quelque chose, mais ça " +"devient acceptable si vous utilisez un alias tel que __ (double trait de " +"soulignement — à ne pas confondre avec _, le trait de soulignement unique " +"utilisé comme alias pour :func:`gettext.gettext` ou ses homologues)." #: howto/logging-cookbook.rst:1164 msgid "" @@ -613,6 +916,10 @@ msgid "" "copy and paste into your own code. They can be used as follows (assuming " "that they're declared in a module called ``wherever``):" msgstr "" +"Les classes ci-dessus ne sont pas incluses dans Python, bien qu’elles soient " +"assez faciles à copier et coller dans votre propre code. Elles peuvent être " +"utilisées comme suit (en supposant qu’elles soient déclarées dans un module " +"appelé ``wherever``) :" #: howto/logging-cookbook.rst:1186 msgid "" @@ -620,6 +927,9 @@ msgid "" "you would of course use ``logger.debug()`` or similar to actually log using " "this approach." msgstr "" +"Alors que les exemples ci-dessus utilisent ``print()`` pour montrer comment " +"fonctionne le formatage, utilisez bien sûr ``logger.debug()`` ou similaire " +"pour journaliser avec cette approche." #: howto/logging-cookbook.rst:1190 msgid "" @@ -631,22 +941,35 @@ msgid "" "not just the format string. That's because the __ notation is just syntax " "sugar for a constructor call to one of the XXXMessage classes." msgstr "" +"Une chose à noter est qu’il n’y a pas de perte de performance significative " +"avec cette approche : le formatage réel ne se produit pas lorsque vous " +"effectuez l’appel de journalisation, mais lorsque (et si) le message " +"journalisé est réellement sur le point d’être écrit dans un journal par un " +"gestionnaire. Ainsi, la seule chose légèrement inhabituelle qui pourrait " +"vous perturber est que les parenthèses entourent la chaîne de format et les " +"arguments, pas seulement la chaîne de format. C’est parce que la notation __ " +"n’est que du sucre syntaxique pour un appel de constructeur à l’une des " +"classes ``XXXMessage``." #: howto/logging-cookbook.rst:1198 msgid "" "If you prefer, you can use a :class:`LoggerAdapter` to achieve a similar " "effect to the above, as in the following example::" msgstr "" +"Si vous préférez, vous pouvez utiliser un :class:`LoggerAdapter` pour " +"obtenir un effet similaire à ce qui précède, comme dans l’exemple suivant ::" #: howto/logging-cookbook.rst:1229 msgid "" "The above script should log the message ``Hello, world!`` when run with " "Python 3.2 or later." msgstr "" +"Le script ci-dessus journalise le message ``Hello, world!`` quand il est " +"lancé avec Python 3.2 ou ultérieur." #: howto/logging-cookbook.rst:1238 msgid "Customizing ``LogRecord``" -msgstr "" +msgstr "Personnalisation de ``LogRecord``" #: howto/logging-cookbook.rst:1240 msgid "" @@ -658,12 +981,22 @@ msgid "" "disabled). Before Python 3.2, there were only two places where this creation " "was done:" msgstr "" +"Chaque événement de journalisation est représenté par une instance :class:" +"`LogRecord`. Lorsqu’un événement est enregistré et non filtré en raison du " +"niveau d’un enregistreur, un :class:`LogRecord` est créé, rempli avec les " +"informations de l’événement, puis transmis aux gestionnaires de cet " +"enregistreur (et ses ancêtres, jusqu’à et y compris l’enregistreur où la " +"propagation vers le haut de la hiérarchie est désactivée). Avant Python 3.2, " +"il n’y avait que deux endroits où cette création était effectuée :" #: howto/logging-cookbook.rst:1247 msgid "" ":meth:`Logger.makeRecord`, which is called in the normal process of logging " "an event. This invoked :class:`LogRecord` directly to create an instance." msgstr "" +":meth:`Logger.makeRecord`, qui est appelée dans le processus normal de " +"journalisation d’un événement. Elle appelait :class:`LogRecord` directement " +"pour créer une instance." #: howto/logging-cookbook.rst:1250 msgid "" @@ -673,12 +1006,20 @@ msgid "" "via a :class:`~handlers.SocketHandler`, or in JSON form via an :class:" "`~handlers.HTTPHandler`)." msgstr "" +":func:`makeLogRecord`, qui est appelée avec un dictionnaire contenant des " +"attributs à ajouter au *LogRecord*. Elle est généralement invoquée lorsqu’un " +"dictionnaire approprié a été reçu par le réseau (par exemple, sous forme de " +"*pickle* *via* un :class:`~handlers.SocketHandler`, ou sous format JSON " +"*via* un :class:`~handlers.HTTPHandler`)." #: howto/logging-cookbook.rst:1256 msgid "" "This has usually meant that if you need to do anything special with a :class:" "`LogRecord`, you've had to do one of the following." msgstr "" +"Cela signifiait généralement que, si vous deviez faire quelque chose de " +"spécial avec un :class:`LogRecord`, vous deviez faire l’une des choses " +"suivantes." #: howto/logging-cookbook.rst:1259 msgid "" @@ -686,6 +1027,9 @@ msgid "" "makeRecord`, and set it using :func:`~logging.setLoggerClass` before any " "loggers that you care about are instantiated." msgstr "" +"Créer votre propre sous-classe :class:`Logger`, surchargeant :meth:`Logger." +"makeRecord`, et la personnaliser à l’aide de :func:`~logging.setLoggerClass` " +"avant que les enregistreurs qui vous intéressaient ne soient instanciés." #: howto/logging-cookbook.rst:1262 msgid "" @@ -693,6 +1037,9 @@ msgid "" "special manipulation you need when its :meth:`~Filter.filter` method is " "called." msgstr "" +"Ajouter un :class:`Filter` à un enregistreur ou un gestionnaire, qui " +"effectuait la manipulation spéciale nécessaire dont vous aviez besoin " +"lorsque sa méthode :meth:`~Filter.filter` était appelée." #: howto/logging-cookbook.rst:1266 msgid "" @@ -701,6 +1048,10 @@ msgid "" "attempt to set its own :class:`Logger` subclass, and the one which did this " "last would win." msgstr "" +"La première approche est un peu lourde dans le scénario où (disons) " +"plusieurs bibliothèques différentes veulent faire des choses différentes. " +"Chacun essaie de définir sa propre sous-classe :class:`Logger`, et celui qui " +"l’a fait en dernier gagne." #: howto/logging-cookbook.rst:1271 msgid "" @@ -710,6 +1061,12 @@ msgid "" "to remember to do this every time they introduced a new logger (which they " "would do simply by adding new packages or modules and doing ::" msgstr "" +"La seconde approche fonctionne raisonnablement bien dans de nombreux cas, " +"mais ne vous permet pas, par exemple, d’utiliser une sous-classe spécialisée " +"de :class:`LogRecord`. Les développeurs de bibliothèques peuvent définir un " +"filtre approprié sur leurs enregistreurs, mais ils doivent se rappeler de le " +"faire chaque fois qu’ils introduisent un nouvel enregistreur (ce qu’ils font " +"simplement en ajoutant de nouveaux paquets ou modules et en écrivant ::" #: howto/logging-cookbook.rst:1279 msgid "" @@ -720,6 +1077,13 @@ msgid "" "so output from that handler would not reflect the intentions of the library " "developer." msgstr "" +"au niveau des modules). C’est probablement trop de choses auxquelles penser. " +"Les développeurs pourraient également ajouter le filtre à un :class:" +"`~logging.NullHandler` attaché à leur enregistreur de niveau supérieur, mais " +"cela ne serait pas invoqué si un développeur d’application attachait un " +"gestionnaire à un enregistreur de bibliothèque de niveau inférieur — donc la " +"sortie de ce gestionnaire ne refléterait pas les intentions du développeur " +"de la bibliothèque." #: howto/logging-cookbook.rst:1285 msgid "" @@ -730,6 +1094,13 @@ msgid "" "signature as the :class:`~logging.LogRecord` constructor, as :class:" "`LogRecord` is the default setting for the factory." msgstr "" +"Dans Python 3.2 et ultérieurs, la création de :class:`~logging.LogRecord` " +"est effectuée via une fabrique, que vous pouvez spécifier. La fabrique est " +"juste un appelable que vous pouvez définir avec :func:`~logging." +"setLogRecordFactory`, et interroger avec :func:`~logging." +"getLogRecordFactory`. La fabrique est invoquée avec la même signature que le " +"constructeur :class:`~logging.LogRecord`, car :class:`LogRecord` est le " +"paramètre par défaut de la fabrique." #: howto/logging-cookbook.rst:1292 msgid "" @@ -738,6 +1109,10 @@ msgid "" "additional attributes to the record once created, using a pattern similar to " "this::" msgstr "" +"Cette approche permet à une fabrique personnalisée de contrôler tous les " +"aspects de la création d’un *LogRecord*. Par exemple, vous pouvez renvoyer " +"une sous-classe ou simplement ajouter des attributs supplémentaires à " +"l’enregistrement une fois créé, en utilisant un modèle similaire à celui-ci :" #: howto/logging-cookbook.rst:1305 msgid "" @@ -748,10 +1123,18 @@ msgid "" "time overhead to all logging operations, and the technique should only be " "used when the use of a :class:`Filter` does not provide the desired result." msgstr "" +"Ce modèle permet à différentes bibliothèques d’enchaîner des fabriques, et " +"tant qu’elles n’écrasent pas les attributs des autres ou n’écrasent pas " +"involontairement les attributs fournis en standard, il ne devrait pas y " +"avoir de surprise. Cependant, il faut garder à l’esprit que chaque maillon " +"de la chaîne ajoute une surcharge d’exécution à toutes les opérations de " +"journalisation, et la technique ne doit être utilisée que lorsque " +"l’utilisation d’un :class:`Filter` ne permet pas d’obtenir le résultat " +"souhaité." #: howto/logging-cookbook.rst:1316 msgid "Subclassing QueueHandler - a ZeroMQ example" -msgstr "" +msgstr "Dérivation de *QueueHandler* – un exemple de *ZeroMQ*" #: howto/logging-cookbook.rst:1318 msgid "" @@ -759,22 +1142,31 @@ msgid "" "of queues, for example a ZeroMQ 'publish' socket. In the example below,the " "socket is created separately and passed to the handler (as its 'queue')::" msgstr "" +"Vous pouvez utiliser une sous-classe :class:`QueueHandler` pour envoyer des " +"messages à d’autres types de files d’attente, par exemple un connecteur " +"*ZeroMQ publish*. Dans l’exemple ci-dessous, le connecteur est créé " +"séparément et transmis au gestionnaire (en tant que file d’attente) ::" #: howto/logging-cookbook.rst:1337 msgid "" "Of course there are other ways of organizing this, for example passing in " "the data needed by the handler to create the socket::" msgstr "" +"Bien sûr, il existe d’autres manières de faire, par exemple en transmettant " +"les données nécessaires au gestionnaire pour créer le connecteur ::" #: howto/logging-cookbook.rst:1355 msgid "Subclassing QueueListener - a ZeroMQ example" -msgstr "" +msgstr "Dérivation de *QueueListener* – un exemple de *ZeroMQ*" #: howto/logging-cookbook.rst:1357 msgid "" "You can also subclass :class:`QueueListener` to get messages from other " "kinds of queues, for example a ZeroMQ 'subscribe' socket. Here's an example::" msgstr "" +"Vous pouvez également dériver :class:`QueueListener` pour obtenir des " +"messages d’autres types de files d’attente, par exemple un connecteur " +"*ZeroMQ subscribe*. Voici un exemple ::" #: howto/logging-cookbook.rst:1376 msgid "Module :mod:`logging`" @@ -803,14 +1195,18 @@ msgstr "Gestionnaires utiles inclus avec le module de journalisation." #: howto/logging-cookbook.rst:1384 msgid ":ref:`A basic logging tutorial `" msgstr "" +":ref:`Les bases de l’utilisation du module de journalisation `" #: howto/logging-cookbook.rst:1386 msgid ":ref:`A more advanced logging tutorial `" msgstr "" +":ref:`Utilisation avancée du module de journalisation `" #: howto/logging-cookbook.rst:1390 msgid "An example dictionary-based configuration" -msgstr "" +msgstr "Exemple de configuration basée sur un dictionnaire" #: howto/logging-cookbook.rst:1392 msgid "" @@ -819,6 +1215,11 @@ msgid "" "stable/topics/logging/#configuring-logging>`_. This dictionary is passed to :" "func:`~config.dictConfig` to put the configuration into effect::" msgstr "" +"Vous trouverez ci-dessous un exemple de dictionnaire de configuration de " +"journalisation ­– il est tiré de la `documentation du projet Django `_. Ce " +"dictionnaire est passé à :func:`~config.dictConfig` pour activer la " +"configuration ::" #: howto/logging-cookbook.rst:1448 msgid "" @@ -826,10 +1227,15 @@ msgid "" "section `_ of the Django documentation." msgstr "" +"Pour plus d’informations sur cette configuration, vous pouvez consulter la " +"`section correspondante `_ de la documentation de *Django*." #: howto/logging-cookbook.rst:1455 msgid "Using a rotator and namer to customize log rotation processing" msgstr "" +"Utilisation d’un rotateur et d’un nom pour personnaliser la rotation des " +"journaux" #: howto/logging-cookbook.rst:1457 msgid "" @@ -846,7 +1252,7 @@ msgstr "" #: howto/logging-cookbook.rst:1480 msgid "A more elaborate multiprocessing example" -msgstr "" +msgstr "Exemple plus élaboré avec traitement en parallèle" #: howto/logging-cookbook.rst:1482 msgid "" @@ -855,6 +1261,11 @@ msgid "" "simple, but serve to illustrate how more complex ones could be implemented " "in a real multiprocessing scenario." msgstr "" +"L’exemple suivant que nous allons étudier montre comment la journalisation " +"peut être utilisée, à l’aide de fichiers de configuration, pour un programme " +"effectuant des traitements parallèles. Les configurations sont assez " +"simples, mais servent à illustrer comment des configurations plus complexes " +"pourraient être implémentées dans un scénario multi-processus réel." #: howto/logging-cookbook.rst:1487 msgid "" @@ -868,16 +1279,30 @@ msgid "" "purely illustrative, but you should be able to adapt this example to your " "own scenario." msgstr "" +"Dans l’exemple, le processus principal génère un processus d’écoute et des " +"processus de travail. Chacun des processus, le principal, l’auditeur " +"(*listener_process* dans l’exemple) et les processus de travail " +"(*worker_process* dans l’exemple) ont trois configurations distinctes (les " +"processus de travail partagent tous la même configuration). Nous pouvons " +"voir la journalisation dans le processus principal, comment les processus de " +"travail se connectent à un *QueueHandler* et comment l’auditeur implémente " +"un *QueueListener* avec une configuration de journalisation plus complexe, " +"et s’arrange pour envoyer les événements reçus *via* la file d’attente aux " +"gestionnaires spécifiés dans la configuration. Notez que ces configurations " +"sont purement illustratives, mais vous devriez pouvoir adapter cet exemple à " +"votre propre scénario." #: howto/logging-cookbook.rst:1497 msgid "" "Here's the script - the docstrings and the comments hopefully explain how it " "works::" msgstr "" +"Voici le script – les chaines de documentation et les commentaires " +"expliquent (en anglais), le principe de fonctionnement ::" #: howto/logging-cookbook.rst:1709 msgid "Inserting a BOM into messages sent to a SysLogHandler" -msgstr "" +msgstr "Insertion d’une *BOM* dans les messages envoyés à un *SysLogHandler*" #: howto/logging-cookbook.rst:1711 msgid "" @@ -887,6 +1312,11 @@ msgid "" "encoded using UTF-8. (See the :rfc:`relevant section of the specification " "<5424#section-6>`.)" msgstr "" +"La :rfc:`5424` requiert qu’un message Unicode soit envoyé à un démon " +"*syslog* sous la forme d’un ensemble d’octets ayant la structure suivante : " +"un composant ASCII pur facultatif, suivi d’une marque d’ordre d’octet (*BOM* " +"pour *Byte Order Mark* en anglais) UTF-8, suivie de contenu Unicode UTF-8 " +"(voir la :rfc:`la spécification correspondante <5424#section-6>`)." #: howto/logging-cookbook.rst:1717 msgid "" @@ -895,6 +1325,10 @@ msgid "" "incorrectly, with the BOM appearing at the beginning of the message and " "hence not allowing any pure-ASCII component to appear before it." msgstr "" +"Dans Python 3.1, du code a été ajouté à :class:`~logging.handlers." +"SysLogHandler` pour insérer une *BOM* dans le message mais, malheureusement, " +"il a été implémenté de manière incorrecte, la *BOM* apparaissant au début du " +"message et n’autorisant donc aucun composant ASCII pur à être placé devant." #: howto/logging-cookbook.rst:1723 msgid "" @@ -904,18 +1338,28 @@ msgid "" "an optional pure-ASCII sequence before it and arbitrary Unicode after it, " "encoded using UTF-8, then you need to do the following:" msgstr "" +"Comme ce comportement est inadéquat, le code incorrect d’insertion de la " +"*BOM* a été supprimé de Python 3.2.4 et ultérieurs. Cependant, il n’est pas " +"remplacé et, si vous voulez produire des messages conformes :rfc:`5424` qui " +"incluent une *BOM*, une séquence facultative en ASCII pur avant et un " +"Unicode arbitraire après, encodé en UTF-8, alors vous devez appliquer ce qui " +"suit :" #: howto/logging-cookbook.rst:1729 msgid "" "Attach a :class:`~logging.Formatter` instance to your :class:`~logging." "handlers.SysLogHandler` instance, with a format string such as::" msgstr "" +"Adjoignez une instance :class:`~logging.Formatter` à votre instance :class:" +"`~logging.handlers.SysLogHandler`, avec une chaîne de format telle que ::" #: howto/logging-cookbook.rst:1735 msgid "" "The Unicode code point U+FEFF, when encoded using UTF-8, will be encoded as " "a UTF-8 BOM -- the byte-string ``b'\\xef\\xbb\\xbf'``." msgstr "" +"Le point de code Unicode U+FEFF, lorsqu’il est encodé en UTF-8, est encodé " +"comme une *BOM* UTF-8 – la chaîne d’octets ``b'\\xef\\xbb\\xbf'``." #: howto/logging-cookbook.rst:1738 msgid "" @@ -923,6 +1367,9 @@ msgid "" "that the data that appears in there after substitution is always ASCII (that " "way, it will remain unchanged after UTF-8 encoding)." msgstr "" +"Remplacez la section ASCII par les caractères de votre choix, mais assurez-" +"vous que les données qui y apparaissent après la substitution sont toujours " +"ASCII (ainsi elles resteront inchangées après l’encodage UTF-8)." #: howto/logging-cookbook.rst:1742 msgid "" @@ -930,6 +1377,10 @@ msgid "" "which appears there after substitution contains characters outside the ASCII " "range, that's fine -- it will be encoded using UTF-8." msgstr "" +"Remplacez la section Unicode par le contenu de votre choix ; si les données " +"qui y apparaissent après la substitution contiennent des caractères en " +"dehors de la plage ASCII, c’est pris en charge – elles seront encodées en " +"UTF-8." #: howto/logging-cookbook.rst:1746 msgid "" @@ -939,10 +1390,15 @@ msgid "" "complain, but your messages will not be RFC 5424-compliant, and your syslog " "daemon may complain." msgstr "" +"Le message formaté *sera* encodé en UTF-8 par ``SysLogHandler``. Si vous " +"suivez les règles ci-dessus, vous devriez pouvoir produire des messages " +"conformes à la :rfc:`5424`. Si vous ne le faites pas, la journalisation ne " +"se plaindra peut-être pas, mais vos messages ne seront pas conformes à la " +"RFC 5424 et votre démon *syslog* est susceptible de se plaindre." #: howto/logging-cookbook.rst:1753 msgid "Implementing structured logging" -msgstr "" +msgstr "Journalisation structurée" #: howto/logging-cookbook.rst:1755 msgid "" @@ -955,30 +1411,42 @@ msgid "" "following is a simple approach which uses JSON to serialise the event in a " "machine-parseable manner::" msgstr "" +"Bien que la plupart des messages de journalisation soient destinés à être " +"lus par des humains, et donc difficilement analysables par la machine, il " +"peut arriver que vous souhaitiez produire des messages dans un format " +"structuré dans le but d’être analysé par un programme (sans avoir besoin " +"d’expressions régulières complexes pour analyser le message du journal). " +"C’est simple à réaliser en utilisant le paquet de journalisation. Il existe " +"plusieurs façons d’y parvenir et voici une approche simple qui utilise JSON " +"pour sérialiser l’événement de manière à être analysable par une machine ::" #: howto/logging-cookbook.rst:1779 msgid "If the above script is run, it prints:" -msgstr "" +msgstr "Si vous lancez le script ci-dessus, il imprime :" #: howto/logging-cookbook.rst:1785 howto/logging-cookbook.rst:1834 msgid "" "Note that the order of items might be different according to the version of " "Python used." msgstr "" +"Notez que l’ordre des éléments peut être différent en fonction de la version " +"de Python utilisée." #: howto/logging-cookbook.rst:1788 msgid "" "If you need more specialised processing, you can use a custom JSON encoder, " "as in the following complete example::" msgstr "" +"Si vous avez besoin d’un traitement plus spécifique, vous pouvez utiliser un " +"encodeur JSON personnalisé, comme dans l’exemple complet suivant :" #: howto/logging-cookbook.rst:1828 msgid "When the above script is run, it prints:" -msgstr "" +msgstr "Quand vous exécutez le script ci-dessus, il imprime :" #: howto/logging-cookbook.rst:1843 msgid "Customizing handlers with :func:`dictConfig`" -msgstr "" +msgstr "Personnalisation des gestionnaires avec :func:`dictConfig`" #: howto/logging-cookbook.rst:1845 msgid "" @@ -989,12 +1457,23 @@ msgid "" "the file handlers in the stdlib don't offer built-in support. You can " "customize handler creation using a plain function such as::" msgstr "" +"Il arrive de souhaiter personnaliser les gestionnaires de journalisation " +"d’une manière particulière et, en utilisant :func:`dictConfig`, vous pourrez " +"peut-être le faire sans avoir à dériver les classes mères. Par exemple, " +"supposons que vous souhaitiez définir le propriétaire d’un fichier journal. " +"Dans un environnement POSIX, cela se fait facilement en utilisant :func:" +"`shutil.chown`, mais les gestionnaires de fichiers de la bibliothèque " +"standard n’offrent pas cette gestion nativement. Vous pouvez personnaliser " +"la création du gestionnaire à l’aide d’une fonction simple telle que ::" #: howto/logging-cookbook.rst:1859 msgid "" "You can then specify, in a logging configuration passed to :func:" "`dictConfig`, that a logging handler be created by calling this function::" msgstr "" +"Vous pouvez ensuite spécifier, dans une configuration de journalisation " +"transmise à :func:`dictConfig`, qu’un gestionnaire de journalisation soit " +"créé en appelant cette fonction ::" #: howto/logging-cookbook.rst:1892 msgid "" @@ -1002,10 +1481,14 @@ msgid "" "group, just for the purposes of illustration. Putting it together into a " "working script, ``chowntest.py``::" msgstr "" +"Dans cet exemple, nous définissons le propriétaire à l’utilisateur et au " +"groupe ``pulse``, uniquement à des fins d’illustration. Rassemblons le tout " +"dans un script ``chowntest.py`` ::" #: howto/logging-cookbook.rst:1939 msgid "To run this, you will probably need to run as ``root``:" msgstr "" +"Pour l’exécuter, vous devrez probablement le faire en tant que ``root`` :" #: howto/logging-cookbook.rst:1949 msgid "" @@ -1015,16 +1498,25 @@ msgid "" "With pre-3.3 versions, you would need to implement the actual ownership " "change using e.g. :func:`os.chown`." msgstr "" +"Notez que cet exemple utilise Python 3.3 car c’est là que :func:`shutil." +"chown` fait son apparition. Cette approche devrait fonctionner avec " +"n’importe quelle version de Python prenant en charge :func:`dictConfig` – à " +"savoir, Python 2.7, 3.2 ou version ultérieure. Avec les versions antérieures " +"à la 3.3, vous devrez implémenter le changement de propriétaire réel en " +"utilisant par exemple :func:`os.chown`." #: howto/logging-cookbook.rst:1955 msgid "" "In practice, the handler-creating function may be in a utility module " "somewhere in your project. Instead of the line in the configuration::" msgstr "" +"En pratique, la fonction de création de gestionnaire peut être située dans " +"un module utilitaire ailleurs dans votre projet. Au lieu de cette ligne dans " +"la configuration ::" #: howto/logging-cookbook.rst:1960 msgid "you could use e.g.::" -msgstr "" +msgstr "vous pouvez écrire par exemple ::" #: howto/logging-cookbook.rst:1964 msgid "" @@ -1033,6 +1525,11 @@ msgid "" "__main__.owned_file_handler'`` should work. Here, the actual callable is " "resolved by :func:`dictConfig` from the ``ext://`` specification." msgstr "" +"où ``project.util`` peut être remplacé par le nom réel du paquet où réside " +"la fonction. Dans le script étudié ci-dessus, l’utilisation de ``'ext://" +"__main__.owned_file_handler'`` devrait fonctionner. Dans le cas présent, " +"l’appelable réel est résolu par :func:`dictConfig` à partir de la " +"spécification ``ext://``." #: howto/logging-cookbook.rst:1969 msgid "" @@ -1040,6 +1537,9 @@ msgid "" "types of file change - e.g. setting specific POSIX permission bits - in the " "same way, using :func:`os.chmod`." msgstr "" +"Nous espérons qu'à partir de cet exemple vous saurez implémenter d’autres " +"types de modification de fichier – par ex. définir des bits d’autorisation " +"POSIX spécifiques – de la même manière, en utilisant :func:`os.chmod`." #: howto/logging-cookbook.rst:1973 msgid "" @@ -1047,6 +1547,10 @@ msgid "" "than a :class:`~logging.FileHandler` - for example, one of the rotating file " "handlers, or a different type of handler altogether." msgstr "" +"Bien sûr, l’approche pourrait également être étendue à des types de " +"gestionnaires autres qu’un :class:`~logging.FileHandler` – par exemple, l’un " +"des gestionnaires à roulement de fichiers ou un autre type de gestionnaire " +"complètement différent." #: howto/logging-cookbook.rst:1983 msgid "Using particular formatting styles throughout your application" diff --git a/howto/pyporting.po b/howto/pyporting.po index 27ff47fa..372f61d9 100644 --- a/howto/pyporting.po +++ b/howto/pyporting.po @@ -62,13 +62,12 @@ msgstr "" "de Nick Coghlan ou bien `Why Python 3 exists`_ de Brett Cannon." #: howto/pyporting.rst:24 -#, fuzzy msgid "" "For help with porting, you can view the archived python-porting_ mailing " "list." msgstr "" -"Vous pouvez solliciter par courriel l'aide de la liste de diffusion python-" -"porting_ pour vos questions liées au portage." +"Vous pouvez lire les archives de la liste diffusion python-porting_ dans vos " +"recherches sur les questions liées au portage." #: howto/pyporting.rst:27 msgid "The Short Explanation" diff --git a/howto/regex.po b/howto/regex.po index 40d627c4..402f183d 100644 --- a/howto/regex.po +++ b/howto/regex.po @@ -198,17 +198,17 @@ msgstr "" "contient que des lettres en minuscules, la RE est ``[a-z]``." #: howto/regex.rst:92 -#, fuzzy msgid "" "Metacharacters (except ``\\``) are not active inside classes. For example, " "``[akm$]`` will match any of the characters ``'a'``, ``'k'``, ``'m'``, or " "``'$'``; ``'$'`` is usually a metacharacter, but inside a character class " "it's stripped of its special nature." msgstr "" -"Les métacaractères ne sont pas actifs dans les classes. Par exemple, " -"``[akm$]`` correspond à n'importe quel caractère parmi ``'a'``, ``'k'``, " -"``'m'`` ou ``'$'`` ; ``'$'`` est habituellement un métacaractère mais dans " -"une classe de caractères, il est dépourvu de sa signification spéciale." +"Les métacaractères (à l’exception de ``\\``) ne sont pas actifs dans les " +"classes. Par exemple, ``[akm$]`` correspond à n'importe quel caractère parmi " +"``'a'``, ``'k'``, ``'m'`` ou ``'$'`` ; ``'$'`` est habituellement un " +"métacaractère mais dans une classe de caractères, il est dépourvu de sa " +"signification spéciale." #: howto/regex.rst:97 msgid "" diff --git a/howto/sorting.po b/howto/sorting.po index 495746f4..59b97a71 100644 --- a/howto/sorting.po +++ b/howto/sorting.po @@ -433,6 +433,9 @@ msgid "" "However, note that ``<`` can fall back to using :meth:`__gt__` if :meth:" "`__lt__` is not implemented (see :func:`object.__lt__`)." msgstr "" +"Notez toutefois que l'opérateur ``<`` peut utiliser la méthode :meth:" +"`__gt__` si :meth:`__lt__` n'est pas implémentée ; voir :func:`object." +"__lt__`." #: howto/sorting.rst:301 msgid "" diff --git a/install/index.po b/install/index.po index fa421f86..d13a33ba 100644 --- a/install/index.po +++ b/install/index.po @@ -1282,7 +1282,7 @@ msgstr "" #: install/index.rst:737 msgid ":file:`{prefix}/lib/python{ver}/distutils/distutils.cfg`" -msgstr "" +msgstr ":file:`{prefix}/lib/python{ver}/distutils/distutils.cfg`" #: install/index.rst:751 msgid "personal" @@ -1290,7 +1290,7 @@ msgstr "" #: install/index.rst:739 msgid ":file:`$HOME/.pydistutils.cfg`" -msgstr "" +msgstr ":file:`$HOME/.pydistutils.cfg`" #: install/index.rst:753 msgid "local" @@ -1298,7 +1298,7 @@ msgstr "" #: install/index.rst:753 msgid ":file:`setup.cfg`" -msgstr "" +msgstr ":file:`setup.cfg`" #: install/index.rst:753 msgid "\\(3)" @@ -1310,7 +1310,7 @@ msgstr "" #: install/index.rst:749 msgid ":file:`{prefix}\\\\Lib\\\\distutils\\\\distutils.cfg`" -msgstr "" +msgstr ":file:`{prefix}\\\\Lib\\\\distutils\\\\distutils.cfg`" #: install/index.rst:749 msgid "\\(4)" @@ -1318,7 +1318,7 @@ msgstr "\\(4)" #: install/index.rst:751 msgid ":file:`%HOME%\\\\pydistutils.cfg`" -msgstr "" +msgstr ":file:`%HOME%\\\\pydistutils.cfg`" #: install/index.rst:751 msgid "\\(5)" diff --git a/library/ast.po b/library/ast.po index 67daa2c7..c6003148 100644 --- a/library/ast.po +++ b/library/ast.po @@ -154,6 +154,10 @@ msgid "" "one can get the source segment of a one-line expression node using " "``source_line[node.col_offset : node.end_col_offset]``." msgstr "" +"Les décalages *end…* ne sont pas obligatoires ni nécessaires au compilateur. " +"*end_col_offset* pointe *après* le dernier lexème. On peut donc obtenir la " +"partie du code source ayant donné lieu à une expression avec " +"``ligne_source[nœud.col_offset : nœud.end_col_offset]``." #: library/ast.rst:96 msgid "" @@ -193,6 +197,8 @@ msgstr "ou, plus compact ::" #: library/ast.rst:122 msgid "Class :class:`ast.Constant` is now used for all constants." msgstr "" +"toutes les constantes sont désormais représentées par des instances de :" +"class:`ast.Constant`." #: library/ast.rst:126 msgid "" @@ -207,6 +213,10 @@ msgid "" "will be removed in future Python releases. In the meantime, instantiating " "them will return an instance of a different class." msgstr "" +"les classes :class:`ast.Num`, :class:`ast.Str`, :class:`ast.Bytes`, :class:" +"`ast.NameConstant` et :class:`ast.Ellipsis` sont toujours présentes, mais " +"seront supprimées dans une version future. Pour l'instant, leurs " +"constructeurs renvoient des instances de classes différentes." #: library/ast.rst:138 msgid "" @@ -214,6 +224,9 @@ msgid "" "available, but they will be removed in future Python releases. In the " "meantime, instantiating them will return an instance of a different class." msgstr "" +"les classes :class:`ast.Index` et :class:`ast.ExtSlice` seront retirées à " +"l'avenir. Pour l'instant, elles sont toujours disponibles mais leurs " +"constructeurs renvoient des instances de classes différentes." #: library/ast.rst:144 msgid "" @@ -221,6 +234,10 @@ msgid "" "adapted from the fantastic `Green Tree Snakes `__ project and all its contributors." msgstr "" +"Les descriptions individuelles des classes de nœuds dans la prochaine " +"section sont au départ adaptées du merveilleux projet `Green Tree Snakes " +"`_, porté par de nombreux " +"contributeurs." #: library/ast.rst:150 msgid "Literals" @@ -234,6 +251,10 @@ msgid "" "container types (tuples and frozensets) if all of their elements are " "constant." msgstr "" +"Valeur constante, contenue dans le champ *value*. Les valeurs possibles sont " +"celles de types simples comme les nombres, les chaînes de caractères, ou " +"encore ``None``, mais aussi certains conteneurs immuables (*n*-uplets et " +"ensembles figés) lorsque tous leurs éléments sont constants." #: library/ast.rst:168 msgid "" @@ -241,32 +262,37 @@ msgid "" "contains a single formatting field and nothing else the node can be isolated " "otherwise it appears in :class:`JoinedStr`." msgstr "" +"Champ de formatage dans une chaîne littérale formatée (*f-string*). Ce nœud " +"peut être isolé si la chaîne contient un unique champ et rien d'autre. " +"Sinon, il apparaît dans :class:`JoinedStr`." #: library/ast.rst:172 msgid "" "``value`` is any expression node (such as a literal, a variable, or a " "function call)." msgstr "" +"*value* est un nœud d'expression quelconque (comme un littéral, une " +"variable, ou encore un appel de fonction)." #: library/ast.rst:174 msgid "``conversion`` is an integer:" -msgstr "" +msgstr "*conversion* est un entier parmi les valeurs suivantes :" #: library/ast.rst:176 msgid "-1: no formatting" -msgstr "" +msgstr "-1, aucun formatage ;" #: library/ast.rst:177 msgid "115: ``!s`` string formatting" -msgstr "" +msgstr "115, pour le formatage par ``str()`` correspondant à ``!s`` ;" #: library/ast.rst:178 msgid "114: ``!r`` repr formatting" -msgstr "" +msgstr "114, pour le formatage par ``repr()`` correspondant à ``!r`` ;" #: library/ast.rst:179 msgid "97: ``!a`` ascii formatting" -msgstr "" +msgstr "97, pour le formatage par ``ascii()`` correspondant à ``!a``." #: library/ast.rst:181 msgid "" @@ -274,12 +300,18 @@ msgid "" "the value, or ``None`` if no format was specified. Both ``conversion`` and " "``format_spec`` can be set at the same time." msgstr "" +"*format_spec* est un nœud :class:`JoinedStr` qui précise la manière de " +"formater la valeur. Si aucun formatage particulier n'a été donné, " +"*format_spec* vaut ``None``. *conversion* et *format_spec* peuvent tout à " +"fait coexister." #: library/ast.rst:188 msgid "" "An f-string, comprising a series of :class:`FormattedValue` and :class:" "`Constant` nodes." msgstr "" +"Chaîne littérale formatée (*f-string*), qui contient une liste de nœuds :" +"class:`FormattedValue` et :class:`Constant`." #: library/ast.rst:217 msgid "" @@ -287,10 +319,14 @@ msgid "" "``ctx`` is :class:`Store` if the container is an assignment target (i.e. " "``(x,y)=something``), and :class:`Load` otherwise." msgstr "" +"Liste ou *n*-uplet, dont les éléments sont rassemblés dans la liste *elts*. " +"*ctx* est une instance de :class:`Store` si la liste ou le *n*-uplet est la " +"cible d'une affectation (par exemple ``(x, y) = quelque_chose``). Sinon, " +"c'est une instance de :class:`Load`." #: library/ast.rst:243 msgid "A set. ``elts`` holds a list of nodes representing the set's elements." -msgstr "" +msgstr "Ensemble. *elts* est la liste de ses éléments." #: library/ast.rst:258 msgid "" @@ -298,6 +334,11 @@ msgid "" "keys and the values respectively, in matching order (what would be returned " "when calling :code:`dictionary.keys()` and :code:`dictionary.values()`)." msgstr "" +"Dictionnaire. Les listes *keys* et *values* contiennent respectivement les " +"clés et les valeurs. Leurs ordres se correspondent, c'est-à-dire que la " +"valeur associée à l'élément d'indice *i* dans *keys* est à chercher à " +"l'indice *i* de *values*. *keys* et *values* sont donc des équivalents à " +"``dictionnaire.keys()`` et ``dictionnaire.values()``." #: library/ast.rst:262 msgid "" @@ -305,16 +346,21 @@ msgid "" "be expanded goes in the ``values`` list, with a ``None`` at the " "corresponding position in ``keys``." msgstr "" +"Si un dictionnaire littéral contient une expression doublement étoilée à " +"déballer, elle est intégrée dans *values*, et ``None`` est mis à la place " +"correspondante dans *keys*." #: library/ast.rst:280 msgid "Variables" -msgstr "" +msgstr "Variables" #: library/ast.rst:284 msgid "" "A variable name. ``id`` holds the name as a string, and ``ctx`` is one of " "the following types." msgstr "" +"Variable, dont le nom est *id* (une chaîne de caractères). *ctx* est de l'un " +"des trois types :" #: library/ast.rst:292 msgid "" @@ -322,6 +368,9 @@ msgid "" "new value to it, or to delete it. Variable references are given a context to " "distinguish these cases." msgstr "" +"Ces types de contexte distinguent les variables selon qu'elles sont " +"utilisées pour lire la valeur, mettre la variable à une nouvelle valeur, ou " +"supprimer la variable." #: library/ast.rst:325 msgid "" @@ -329,6 +378,10 @@ msgid "" "class:`Name` node. This type must be used when building a :class:`Call` node " "with ``*args``." msgstr "" +"Élément étoilé. *value* est le nœud auquel s'applique l'étoile. Le plus " +"souvent, *value* est une instance de :class:`Name`. Ce type est notamment " +"nécessaire pour les appels de fonction avec déballage d'arguments (par " +"exemple ``fonction(*args)`` ; voir aussi :class:`Call`)." #: library/ast.rst:348 msgid "Expressions" @@ -342,28 +395,40 @@ msgid "" "`Constant`, a :class:`Name`, a :class:`Lambda`, a :class:`Yield` or :class:" "`YieldFrom` node." msgstr "" +"Lorsque une expression, comme l'appel d'une fonction, apparaît comme une " +"instruction à elle seule, sans que la valeur ne soit utilisée ou " +"sauvegardée, l'expression est insérée dans ce conteneur. Le type de *value* " +"peut être l'un des autres nœuds décrits dans cette section, ou bien parmi :" +"class:`Constant`, :class:`Name`, :class:`Lambda`, :class:`Yield` et :class:" +"`YieldFrom`." #: library/ast.rst:371 msgid "" "A unary operation. ``op`` is the operator, and ``operand`` any expression " "node." msgstr "" +"Unité lexicale désignant une opération unaire. L'opérateur est *op*, " +"l'opérande *operand* est un nœud d'expression quelconque." #: library/ast.rst:380 msgid "" "Unary operator tokens. :class:`Not` is the ``not`` keyword, :class:`Invert` " "is the ``~`` operator." msgstr "" +"Unités lexicales désignant des opérations unaires. :class:`Not` correspond " +"au mot-clé ``not``, :class:`Invert` à l'opérateur ``~``." #: library/ast.rst:394 msgid "" "A binary operation (like addition or division). ``op`` is the operator, and " "``left`` and ``right`` are any expression nodes." msgstr "" +"Opération binaire (comme l'addition ou la division). L'opérateur est *op*, " +"les opérandes *left* et *right* sont des nœuds d'expression quelconques." #: library/ast.rst:421 msgid "Binary operator tokens." -msgstr "" +msgstr "Unités lexicales pour les opérations binaires." #: library/ast.rst:426 msgid "" @@ -372,14 +437,21 @@ msgid "" "operator, such as ``a or b or c``, are collapsed into one node with several " "values." msgstr "" +"Opération booléenne, c'est-à-dire ``and`` ou ``or``, entre *op* et les " +"éléments de *values*. Les deux opérateurs sont distingués par le type de " +"*op*, à savoir :class:`And` ou :class:`Or`. Les applications successives du " +"même opérateur (comme ``a or b or c``) sont regroupées dans un nœud unique " +"avec plusieurs éléments dans la liste *values*." #: library/ast.rst:431 msgid "This doesn't include ``not``, which is a :class:`UnaryOp`." msgstr "" +"L'opérateur ``not`` n'est pas implémenté ici, mais bien dans :class:" +"`UnaryOp`." #: library/ast.rst:447 msgid "Boolean operator tokens." -msgstr "" +msgstr "Unités lexicales pour les opérations booléennes." #: library/ast.rst:452 msgid "" @@ -387,32 +459,45 @@ msgid "" "comparison, ``ops`` the list of operators, and ``comparators`` the list of " "values after the first element in the comparison." msgstr "" +"Comparaison de deux valeurs ou plus. *left* est le premier élément de la " +"comparaison, *ops* la liste des opérateurs, et *comparators* la liste des " +"éléments restants de la comparaison." #: library/ast.rst:481 msgid "Comparison operator tokens." -msgstr "" +msgstr "Unités lexicales pour les comparaisons." #: library/ast.rst:486 msgid "" "A function call. ``func`` is the function, which will often be a :class:" "`Name` or :class:`Attribute` object. Of the arguments:" msgstr "" +"Appel d'une fonction. Le nœud *func*, représentant la fonction appelée, est " +"habituellement de type :class:`Name` ou :class:`Attribute`. Les arguments " +"sont contenus dans :" #: library/ast.rst:489 msgid "``args`` holds a list of the arguments passed by position." msgstr "" +"*args*, la liste des arguments passés sans les nommer (arguments " +"positionnels) ;" #: library/ast.rst:490 msgid "" "``keywords`` holds a list of :class:`keyword` objects representing arguments " "passed by keyword." msgstr "" +"*keywords*, la liste des arguments nommés sous forme de nœuds :class:" +"`keyword`." #: library/ast.rst:493 msgid "" "When creating a ``Call`` node, ``args`` and ``keywords`` are required, but " "they can be empty lists. ``starargs`` and ``kwargs`` are optional." msgstr "" +"Les arguments *args* et *keywords* du constructeur de ``Call`` sont " +"obligatoires (mais peuvent être des listes vides). *starargs* (arguments " +"étoilés) et *kwargs* (arguments nommés) sont facultatifs." #: library/ast.rst:517 msgid "" @@ -425,6 +510,8 @@ msgid "" "An expression such as ``a if b else c``. Each field holds a single node, so " "in the following example, all three are :class:`Name` nodes." msgstr "" +"Expression ternaire (``a if b else c``). Chaque champ contient un unique " +"nœud. Dans l'exemple suivant, les trois sont de la classe :class:`Name`." #: library/ast.rst:538 msgid "" @@ -433,6 +520,10 @@ msgid "" "``ctx`` is :class:`Load`, :class:`Store` or :class:`Del` according to how " "the attribute is acted on." msgstr "" +"Accès à un attribut (comme ``d.keys``). *value* est un nœud, souvent de la " +"classe :class:`Name`. *attr* est le nom de l'attribut, sous forme de chaîne " +"de caractères. *ctx* est de classe :class:`Load`, :class:`Store` ou :class:" +"`Del` selon le type de l'action effectuée sur l'attribut." #: library/ast.rst:555 msgid "" @@ -441,10 +532,14 @@ msgid "" "`Assign` node in which the first argument can be multiple nodes, in this " "case both ``target`` and ``value`` must be single nodes." msgstr "" +"Expression d'affectation. Ces nœuds proviennent de l'opérateur « morse » ``:" +"=``. Contrairement à :class:`Assign`, dont le premier argument est une liste " +"qui peut contenir plusieurs cibles, les arguments *target* et *value* sont " +"ici des nœuds simples." #: library/ast.rst:570 msgid "Subscripting" -msgstr "" +msgstr "Indiçage" #: library/ast.rst:574 msgid "" @@ -453,6 +548,12 @@ msgid "" "class:`Tuple` and contain a :class:`Slice`. ``ctx`` is :class:`Load`, :class:" "`Store` or :class:`Del` according to the action performed with the subscript." msgstr "" +"Accès à un indice, par exemple ``liste[1]``. *value* est l'objet où l'indice " +"est pris, donc la plupart du temps une séquence ou une table associative. " +"*slice* est soit un indice, soit une tranche, soit une clé. Les instances " +"de :class:`Tuple` pour *slice* peuvent contenir des objets :class:`Slice`. " +"*ctx* est de type :class:`Load`, :class:`Store` ou :class:`Del` selon " +"l'action appliquée à l'indice." #: library/ast.rst:598 msgid "" @@ -460,10 +561,14 @@ msgid "" "occur only inside the *slice* field of :class:`Subscript`, either directly " "or as an element of :class:`Tuple`." msgstr "" +"Tranches normales (de la forme ``début:fin`` ou ``début:fin:pas``). Les " +"instances de cette classe ne peuvent apparaître que dans le champ *slice* " +"d'un :class:`Subscript`, que ce soit directement ou en tant qu'élément d'un :" +"class:`Tuple`." #: library/ast.rst:615 msgid "Comprehensions" -msgstr "" +msgstr "Compréhensions" #: library/ast.rst:622 msgid "" @@ -471,10 +576,14 @@ msgid "" "comprehensions. ``elt`` (or ``key`` and ``value``) is a single node " "representing the part that will be evaluated for each item." msgstr "" +"Liste, ensemble ou dictionnaire en compréhension, ou expression génératrice. " +"*elt* est l'expression avant le premier ``for``, évaluée à chaque itération. " +"Il est remplacé par *key* (expression pour la clé) et *value* (expression " +"pour la valeur) dans le cas des dictionnaires." #: library/ast.rst:626 msgid "``generators`` is a list of :class:`comprehension` nodes." -msgstr "" +msgstr "*generators* est une liste de nœuds :class:`comprehension`." #: library/ast.rst:668 msgid "" @@ -483,22 +592,32 @@ msgid "" "``iter`` is the object to iterate over. ``ifs`` is a list of test " "expressions: each ``for`` clause can have multiple ``ifs``." msgstr "" +"Une clause ``for`` à l'intérieur d'une compréhension. *iter* est l'objet à " +"parcourir, *target* est la cible de l'affectation qui se produit à chaque " +"itération (la plupart du temps un nœud :class:`Name` ou :class:`Tuple`). " +"*ifs* contient les tests qui décident si l'élément doit être inséré. C'est " +"une liste, car chaque ``for`` peut être suivi de plusieurs ``if``." #: library/ast.rst:673 msgid "" "``is_async`` indicates a comprehension is asynchronous (using an ``async " "for`` instead of ``for``). The value is an integer (0 or 1)." msgstr "" +"*is_async* est une valeur booléenne sous forme d'entier, 0 ou 1, qui indique " +"si la compréhension est asynchrone, c'est-à-dire qu'elle a été écrite avec " +"``async for`` au lieu de ``for``." #: library/ast.rst:739 msgid "Statements" -msgstr "" +msgstr "Instructions" #: library/ast.rst:743 msgid "" "An assignment. ``targets`` is a list of nodes, and ``value`` is a single " "node." msgstr "" +"Affectation. *targets* est une liste de nœuds, *value* est simplement un " +"nœud." #: library/ast.rst:745 msgid "" @@ -506,11 +625,17 @@ msgid "" "Unpacking is represented by putting a :class:`Tuple` or :class:`List` within " "``targets``." msgstr "" +"S'il y a plusieurs nœuds dans *targets*, ils sont tous pris comme des cibles " +"auxquelles est affectée la même expression. Le déballage de séquences est " +"représenté par des nœuds :class:`Tuple` ou :class:`List` comme éléments de " +"*targets*." #: library/ast.rst:1038 library/ast.rst:1264 msgid "" "``type_comment`` is an optional string with the type annotation as a comment." msgstr "" +"Le champ facultatif *type_comment* contient une annotation de type fournie " +"par un commentaire, et ce sous la forme d'une chaîne de caractères." #: library/ast.rst:781 msgid "" @@ -521,6 +646,14 @@ msgid "" "integer set to True for a :class:`Name` node in ``target`` that do not " "appear in between parenthesis and are hence pure names and not expressions." msgstr "" +"Affectation accompagnée d'une annotation de type. La cible *target* est un " +"nœud de type :class:`Name`, :class:`Attribute` ou :class:`Subscript`. " +"*annotation* est le contenu de l'annotation, par exemple un nœud :class:" +"`Constant` ou :class:`Name`. Le champ *value* est facultatif et peut " +"contenir un nœud, la valeur affectée à la cible. *simple* est une valeur " +"booléenne sous forme d'entier, 0 ou 1, qui vaut 1 si et seulement si " +"*target* est de type :class:`Name` et provient d'un nom sans parenthèses, " +"donc un nom simple plutôt qu'une expression." #: library/ast.rst:836 msgid "" @@ -529,6 +662,10 @@ msgid "" "context), ``op`` is :class:`Add`, and ``value`` is a :class:`Constant` with " "value for 1." msgstr "" +"Affectation incrémentale, par exemple ``a += 1``. Dans l'exemple qui suit, " +"*target* est un nœud de type :class:`Name` avec le nom ``'x'`` (de contexte :" +"class:`Store`), *op* est une instance de :class:`Add`, et *value* est un " +"nœud :class:`Constant` contenant la valeur 1." #: library/ast.rst:841 msgid "" @@ -542,36 +679,50 @@ msgid "" "normally a :class:`Call` or :class:`Name`, or ``None`` for a standalone " "``raise``. ``cause`` is the optional part for ``y`` in ``raise x from y``." msgstr "" +"Instruction ``raise``. *exc* est l'exception à lever, la plupart du temps un " +"nœud de type :class:`Call` ou :class:`Name`. Ce champ vaut ``None`` dans le " +"cas d'un ``raise`` sans rien d'autre. Le champ facultatif *cause* correspond " +"à la partie après le ``from`` dans ``raise ... from ...``." #: library/ast.rst:875 msgid "" "An assertion. ``test`` holds the condition, such as a :class:`Compare` node. " "``msg`` holds the failure message." msgstr "" +"Assertion. *test* est la condition, par exemple un nœud :class:`Compare`. " +"*msg* est le message d'erreur affiché si le test s'évalue comme faux." #: library/ast.rst:891 msgid "" "Represents a ``del`` statement. ``targets`` is a list of nodes, such as :" "class:`Name`, :class:`Attribute` or :class:`Subscript` nodes." msgstr "" +"Instruction ``del``. Les éléments à supprimer sont rassemblés dans la liste " +"*target*. Ce sont généralement des nœuds de type :class:`Name`, :class:" +"`Attribute` ou :class:`Subscript`." #: library/ast.rst:909 msgid "A ``pass`` statement." -msgstr "" +msgstr "Instruction ``pass``." #: library/ast.rst:920 msgid "" "Other statements which are only applicable inside functions or loops are " "described in other sections." msgstr "" +"Il existe d'autres instructions, qui ne peuvent apparaître que dans certains " +"contextes spécifiques comme l'intérieur d'une fonction ou d'une boucle. " +"Elles sont décrites dans d'autres sections de ce document." #: library/ast.rst:924 msgid "Imports" -msgstr "" +msgstr "Importations" #: library/ast.rst:928 msgid "An import statement. ``names`` is a list of :class:`alias` nodes." msgstr "" +"Instruction ``import``. *names* prend la forme d'une liste de nœuds :class:" +"`alias`." #: library/ast.rst:945 msgid "" @@ -580,28 +731,44 @@ msgid "" "import foo``. ``level`` is an integer holding the level of the relative " "import (0 means absolute import)." msgstr "" +"Instruction ``from ... import ...``. La partie après ``from`` est mise dans " +"*module* comme une simple chaîne de caractères. Dans le cas des importations " +"relatives, comme ``from ..module import quelque_chose``, *module* ne " +"contient pas les points au début. Dans les instructions de la forme ``from . " +"import toto``, *module* vaut ``None``. *level* est le niveau d'importation " +"relative sous forme d'entier (0 pour les importations absolues)." #: library/ast.rst:967 msgid "" "Both parameters are raw strings of the names. ``asname`` can be ``None`` if " "the regular name is to be used." msgstr "" +"Correspond à ``... as ...`` dans une importation. *name* et *asname* sont de " +"simples chaînes de caractères, qui correspondent aux deux parties de ``... " +"as ...``. Dans les instructions sans ``as`` (où le module n'est pas " +"renommé), *asname* vaut ``None``." #: library/ast.rst:984 msgid "Control flow" -msgstr "" +msgstr "Contrôle de l'exécution" #: library/ast.rst:987 msgid "" "Optional clauses such as ``else`` are stored as an empty list if they're not " "present." msgstr "" +"Si une clause facultative comme ``else`` est absente, le champ correspondant " +"dans l'arbre est une liste vide." #: library/ast.rst:992 msgid "" "An ``if`` statement. ``test`` holds a single node, such as a :class:" "`Compare` node. ``body`` and ``orelse`` each hold a list of nodes." msgstr "" +"Instruction ``if``. La condition, *test*, est un nœud, par exemple une " +"instance de :class:`Compare`. *body* est la liste des instructions du bloc. " +"*orelse* contient les instructions dans le ``else`` (liste vide s'il n'y a " +"pas de ``else``)." #: library/ast.rst:995 msgid "" @@ -609,6 +776,9 @@ msgid "" "appear as extra :class:`If` nodes within the ``orelse`` section of the " "previous one." msgstr "" +"Les clauses ``elif`` ne possèdent pas de représentation particulière. Elles " +"sont simplement mises dans le *orelse* du ``if`` ou ``elif`` précédent, " +"comme nœuds de type :class:`If`." #: library/ast.rst:1030 msgid "" @@ -618,22 +788,38 @@ msgid "" "contain lists of nodes to execute. Those in ``orelse`` are executed if the " "loop finishes normally, rather than via a ``break`` statement." msgstr "" +"Boucle ``for``. Elle porte sur l'itérable donné par le nœud *iter*. La cible " +"des affectations successives est *target*, qui est un nœud de type :class:" +"`Name`, :class:`Tuple` ou :class:`List`. Les instructions du bloc ``for`` " +"forment la liste *body*. Celles de la liste *orelse* proviennent d'une " +"éventuelle clause ``else`` et sont exécutées si la boucle se termine par " +"épuisement de l'itérable, et non pas par un ``break``." #: library/ast.rst:1064 msgid "" "A ``while`` loop. ``test`` holds the condition, such as a :class:`Compare` " "node." msgstr "" +"Boucle ``while``. *test* est la condition évaluée à chaque itération, par " +"exemple un nœud :class:`Compare`. *body* contient les instructions du bloc, " +"et *orelse* celles d'un éventuel bloc ``else``, exécuté lorsque la boucle " +"termine parce que la condition devient fausse et non pas à cause d'une " +"instruction ``break``." #: library/ast.rst:1091 msgid "The ``break`` and ``continue`` statements." -msgstr "" +msgstr "Instructions ``break`` et ``continue``." #: library/ast.rst:1126 msgid "" "``try`` blocks. All attributes are list of nodes to execute, except for " "``handlers``, which is a list of :class:`ExceptHandler` nodes." msgstr "" +"Bloc ``try``. Les nœuds de la liste *body* sont les instructions à exécuter " +"sous contrôle des exceptions. La liste *handlers* contient des nœuds :class:" +"`ExceptHandler`, un par ``except``. Les listes *orelse* et *finalbody* " +"contiennent respectivement les instructions se trouvant dans d'éventuels " +"blocs ``else`` et ``finally``." #: library/ast.rst:1172 msgid "" @@ -642,6 +828,12 @@ msgid "" "clause). ``name`` is a raw string for the name to hold the exception, or " "``None`` if the clause doesn't have ``as foo``. ``body`` is a list of nodes." msgstr "" +"Une clause ``except``. Elle intercepte les exceptions de types donnés par " +"*type*, qui est le plus souvent un nœud :class:`Name` ou bien ``None`` " +"(cette dernière valeur pour les clauses fourre-tout ``except:``). Le nom " +"éventuel de la variable à laquelle affecter l'exception est dans la chaîne " +"de caractères *name* (``None`` s'il n'y a pas de ``as``). Les instructions " +"sous le ``except`` sont dans la liste *body*." #: library/ast.rst:1206 msgid "" @@ -649,6 +841,9 @@ msgid "" "representing the context managers, and ``body`` is the indented block inside " "the context." msgstr "" +"Bloc ``with``. Les gestionnaires de contexte sont stockés dans *items* comme " +"instances de :class:`withitem`. Les instructions sous le ``with`` forment la " +"liste *body*." #: library/ast.rst:1216 msgid "" @@ -657,18 +852,24 @@ msgid "" "`Name`, :class:`Tuple` or :class:`List` for the ``as foo`` part, or ``None`` " "if that isn't used." msgstr "" +"Gestionnaire de contexte dans un bloc ``with``. Le gestionnaire est donné " +"par le nœud *context_expr*, souvent une instance de :class:`Call`. S'il y a " +"affectation avec ``as``, *optional_vars* contient sa cible, qui est un nœud " +"de type :class:`Name`, :class:`Tuple` ou :class:`List`. Sinon, " +"*optional_vars* vaut ``None``." #: library/ast.rst:1249 msgid "Function and class definitions" -msgstr "" +msgstr "Définition de fonctions et de classes" #: library/ast.rst:1253 msgid "A function definition." -msgstr "" +msgstr "Définition d'une fonction." #: library/ast.rst:1255 msgid "``name`` is a raw string of the function name." msgstr "" +"*name* donne le nom de la fonction sous forme d'une chaîne de caractères." #: library/ast.rst:1256 msgid "``args`` is an :class:`arguments` node." @@ -676,44 +877,62 @@ msgstr "" #: library/ast.rst:1257 msgid "``body`` is the list of nodes inside the function." -msgstr "" +msgstr "*body* est la liste des instructions dans le corps de la fonction." #: library/ast.rst:1258 msgid "" "``decorator_list`` is the list of decorators to be applied, stored outermost " "first (i.e. the first in the list will be applied last)." msgstr "" +"*decorators_list* est une liste de décorateurs appliqués à la fonction. Ils " +"sont rangés dans leur ordre d'apparition, c'est-à-dire que le premier de la " +"liste est appliqué en dernier." #: library/ast.rst:1260 msgid "``returns`` is the return annotation." -msgstr "" +msgstr "*returns* est l'annotation de renvoi éventuelle." #: library/ast.rst:1269 msgid "" "``lambda`` is a minimal function definition that can be used inside an " "expression. Unlike :class:`FunctionDef`, ``body`` holds a single node." msgstr "" +"Fonction anonyme. Elle est créée avec le mot-clé ``lambda``, limitée à " +"renvoyer une simple expression, et peut être intégrée à une expression plus " +"large. Contrairement à :class:`FunctionDef`, *body* est ici un nœud unique. " +"*args* est une instance de ``arguments`` qui contient les arguments de la " +"signature." #: library/ast.rst:1293 msgid "The arguments for a function." -msgstr "" +msgstr "Arguments d'une fonction." #: library/ast.rst:1295 msgid "" "``posonlyargs``, ``args`` and ``kwonlyargs`` are lists of :class:`arg` nodes." msgstr "" +"*posonlyargs*, *args* et *kwonlyargs* sont des listes de nœuds :class:`arg` " +"qui correspondent respectivement aux arguments obligatoirement positionnels, " +"positionnels ou nommés et obligatoirement nommés." #: library/ast.rst:1296 msgid "" "``vararg`` and ``kwarg`` are single :class:`arg` nodes, referring to the " "``*args, **kwargs`` parameters." msgstr "" +"*varargs* et *kwargs* sont des nœuds :class:`arg` qui apparaissent avec la " +"capture des arguments restants, positionnels (``*arguments_positionnels``) " +"et nommés (``**arguments_nommés``)." #: library/ast.rst:1298 msgid "" "``kw_defaults`` is a list of default values for keyword-only arguments. If " "one is ``None``, the corresponding argument is required." msgstr "" +"*kw_defaults* est la liste des valeurs par défaut pour les arguments " +"obligatoirement nommés. Si l'un des éléments n'est pas un nœud mais " +"``None``, il n'y a pas de valeur par défaut et l'argument correspondant doit " +"être passé obligatoirement à la fonction." #: library/ast.rst:1300 msgid "" @@ -721,6 +940,11 @@ msgid "" "positionally. If there are fewer defaults, they correspond to the last n " "arguments." msgstr "" +"*defaults* est, quant à elle, la liste des valeurs par défauts pour les " +"arguments qui peuvent être passés de manière positionnelle (obligatoirement " +"ou non). S'il y a moins d'éléments dans la liste que d'arguments " +"positionnels, ces éléments donnent les valeurs par défaut des *n* derniers " +"arguments positionnels (avec *n* la longueur de *defaults*)." #: library/ast.rst:1307 msgid "" @@ -733,10 +957,12 @@ msgstr "" msgid "" "``type_comment`` is an optional string with the type annotation as a comment" msgstr "" +"Le champ facultatif *type_comment* est, sous forme de chaîne, une annotation " +"de type fournie par un commentaire." #: library/ast.rst:1357 msgid "A ``return`` statement." -msgstr "" +msgstr "Instruction ``return``, qui renvoie *value*." #: library/ast.rst:1372 msgid "" @@ -744,23 +970,29 @@ msgid "" "they must be wrapped in a :class:`Expr` node if the value sent back is not " "used." msgstr "" +"Expression ``yield`` ou ``yield from``. Ce sont bien des expressions, non " +"pas des instructions. Il faut donc les placer dans un nœud :class:`Expr` si " +"la valeur qu'elles renvoient n'est pas utilisée dans une expression plus " +"large." #: library/ast.rst:1397 msgid "" "``global`` and ``nonlocal`` statements. ``names`` is a list of raw strings." msgstr "" +"Instruction ``global`` ou ``nonlocal``. Elle s'applique aux noms de " +"variables donnés dans *names*, une liste de chaînes de caractères." #: library/ast.rst:1424 msgid "A class definition." -msgstr "" +msgstr "Définition d'une classe." #: library/ast.rst:1426 msgid "``name`` is a raw string for the class name" -msgstr "" +msgstr "*name* est le nom de la classe sous forme de chaîne de caractères ;" #: library/ast.rst:1427 msgid "``bases`` is a list of nodes for explicitly specified base classes." -msgstr "" +msgstr "*bases* est la liste des classes mères données explicitement ;" #: library/ast.rst:1428 msgid "" @@ -781,26 +1013,32 @@ msgid "" "``body`` is a list of nodes representing the code within the class " "definition." msgstr "" +"*body* est la liste des instructions contenues dans la définition de classe ;" #: library/ast.rst:1436 msgid "``decorator_list`` is a list of nodes, as in :class:`FunctionDef`." msgstr "" +"*decorators_list* est une liste de nœuds, comme pour :class:`FunctionDef`." #: library/ast.rst:1465 msgid "Async and await" -msgstr "" +msgstr "``async`` et ``await``" #: library/ast.rst:1469 msgid "" "An ``async def`` function definition. Has the same fields as :class:" "`FunctionDef`." msgstr "" +"Fonction déclarée avec ``async def``. Les champs sont les mêmes que dans :" +"class:`FunctionDef`." #: library/ast.rst:1475 msgid "" "An ``await`` expression. ``value`` is what it waits for. Only valid in the " "body of an :class:`AsyncFunctionDef`." msgstr "" +"Expression ``await``, qui attend *value*. Ces nœuds ne peuvent apparaître " +"qu'à l'intérieur de :class:`AsyncFunctionDef`." #: library/ast.rst:1508 msgid "" @@ -808,6 +1046,9 @@ msgid "" "fields as :class:`For` and :class:`With`, respectively. Only valid in the " "body of an :class:`AsyncFunctionDef`." msgstr "" +"Instruction ``async for`` ou ``async with``. Les champs sont les mêmes que " +"ceux de :class:`For` et :class:`With`. Ces nœuds ne peuvent apparaître qu'à " +"l'intérieur de :class:`AsyncFunctionDef`." #: library/ast.rst:1513 msgid "" @@ -817,6 +1058,13 @@ msgid "" "singletons. Changes to one will be reflected in all other occurrences of the " "same value (e.g. :class:`ast.Add`)." msgstr "" +"Lorsqu'une chaîne contenant du code est transformée en arbre syntaxique par :" +"func:`ast.parse`, les nœuds représentants les opérateurs (classes filles de :" +"class:`ast.operator`, :class:`ast.unaryop`, :class:`ast.cmpop`, :class:`ast." +"boolop` et :class:`ast.expr_context`) sont des singletons à l'intérieur de " +"l'arbre renvoyé. Si l'un, par exemple une instance de :class:`ast.Add`, est " +"muté, la modification sera visible sur toutes les autres apparitions de " +"l'opérateur." #: library/ast.rst:1521 msgid ":mod:`ast` Helpers" @@ -850,6 +1098,16 @@ msgid "" "the ``type_ignores`` attribute of :class:`Module` (otherwise it is always an " "empty list)." msgstr "" +"Si *type_comments* est mis à ``True``, l'analyseur syntaxique reconnaît les " +"commentaires de type et les ajoute à l'arbre, comme décrit dans la :pep:" +"`484` et la :pep:`526`. Ceci revient à ajouter :data:`ast." +"PyCF_TYPE_COMMENTS` à l'argument *flags* de :func:`compile`. Une erreur de " +"syntaxe est levée si un commentaire de type est placé au mauvais endroit. " +"Les commentaires ``# type: ignore`` sont également détectés et leurs " +"positions dans la source sont placées dans l'attribut *type_ignores* du " +"nœud :class:`Module`. Sans cette option, les commentaires de type sont " +"ignorés tout comme les commentaires ordinaires, et l'attribut *type_comment* " +"des nœuds dont le type possède ce champ sera toujours mis à ``None``." #: library/ast.rst:1541 msgid "" @@ -866,6 +1124,12 @@ msgid "" "use of ``async`` and ``await`` as variable names. The lowest supported " "version is ``(3, 4)``; the highest is ``sys.version_info[0:2]``." msgstr "" +"Si *feature_version* est défini à une version de Python, sous la forme d'un " +"couple ``(version_majeure, version_mineure)``, l'analyseur tentera de lire " +"la source en se conformant à la syntaxe de cette version. Ainsi, avec " +"``feature_version=(3, 4)``, les noms ``async`` et ``await`` peuvent nommer " +"des variables. La version la plus ancienne prise en charge est actuellement " +"``(3, 4)`` ; la plus récente est ``sys.version_info[0:2]``." #: library/ast.rst:1552 msgid "" @@ -900,6 +1164,8 @@ msgstr "" #: library/ast.rst:1570 msgid "Added ``type_comments``, ``mode='func_type'`` and ``feature_version``." msgstr "" +"ajout des paramètres *type_comments* et *feature_version* ainsi que de la " +"valeur ``'func_type'`` pour *mode*." #: library/ast.rst:1576 msgid "" @@ -907,6 +1173,9 @@ msgid "" "would produce an equivalent :class:`ast.AST` object if parsed back with :" "func:`ast.parse`." msgstr "" +"À partir d'un arbre syntaxique :class:`ast.AST`, reconstruit un code sous " +"forme de chaîne de caractères. S'il est passé à :func:`ast.parse`, le " +"résultat produit un arbre :class:`ast.AST` équivalent à l'original." #: library/ast.rst:1581 msgid "" @@ -920,6 +1189,8 @@ msgid "" "Trying to unparse a highly complex expression would result with :exc:" "`RecursionError`." msgstr "" +"Une :exc:`RecursionError` est levée si l'expression comporte de très " +"nombreux niveaux d'imbrication." #: library/ast.rst:1594 msgid "" @@ -953,7 +1224,7 @@ msgstr "Accepte maintenant les littéraux suivants *bytes* et *sets*." #: library/ast.rst:1612 msgid "Now supports creating empty sets with ``'set()'``." -msgstr "" +msgstr "accepte ``set()`` pour les ensembles vides." #: library/ast.rst:1618 msgid "" @@ -978,6 +1249,10 @@ msgid "" "location information (:attr:`lineno`, :attr:`end_lineno`, :attr:" "`col_offset`, or :attr:`end_col_offset`) is missing, return ``None``." msgstr "" +"Donne la partie de *source* (le code source) qui a donné lieu à *node*. Si " +"l'un des attributs de localisation du nœud (:attr:`lineno`, :attr:" +"`end_lineno`, :attr:`col_offset` et :attr:`end_col_offset`) n'est pas " +"rempli, cette fonction renvoie ``None``." #: library/ast.rst:1634 msgid "" @@ -1001,25 +1276,24 @@ msgstr "" "parent. Elle fonctionne récursivement en démarrant de *node*." #: library/ast.rst:1651 -#, fuzzy msgid "" "Increment the line number and end line number of each node in the tree " "starting at *node* by *n*. This is useful to \"move code\" to a different " "location in a file." msgstr "" -"Incrémente de *n* le numéro de ligne de chaque nœud dans l'arbre en " -"commençant par le nœud *node*. C'est utile pour \"déplacer du code\" à un " -"endroit différent dans un fichier." +"Incrémente de *n* les numéros des lignes de début et ligne de fin de chaque " +"nœud dans l'arbre, en commençant par le nœud *node*. C'est utile pour " +"« déplacer du code » à un endroit différent dans un fichier." #: library/ast.rst:1658 -#, fuzzy msgid "" "Copy source location (:attr:`lineno`, :attr:`col_offset`, :attr:" "`end_lineno`, and :attr:`end_col_offset`) from *old_node* to *new_node* if " "possible, and return *new_node*." msgstr "" -"Copie le code source (:attr:`lineno` et :attr:`col_offset`) de l'ancien nœud " -"*old_node* vers le nouveau nœud *new_node* si possible, et renvoie " +"Copie la position dans la source (attributs :attr:`lineno`, :attr:" +"`col_offset`, :attr:`end_lineno` et :attr:`end_col_offset`) de l'ancien nœud " +"*old_node* vers le nouveau nœud *new_node*, si possible, et renvoie " "*new_node*." #: library/ast.rst:1665 @@ -1110,6 +1384,11 @@ msgid "" "not be called in future Python versions. Add the :meth:`visit_Constant` " "method to handle all constant nodes." msgstr "" +"les méthodes :meth:`visit_Num`, :meth:`visit_Str`, :meth:`visit_Bytes`, :" +"meth:`visit_NameConstant` et :meth:`visit_Ellipsis` sont devenues obsolètes " +"et cesseront d'être appelées dans une version ultérieure de Python. Écrivez " +"une méthode :meth:`visit_Constant` pour traiter tous les nœuds qui " +"représentent des valeurs constantes." #: library/ast.rst:1719 msgid "" @@ -1169,13 +1448,16 @@ msgid "" "`lineno`), :func:`fix_missing_locations` should be called with the new sub-" "tree to recalculate the location information::" msgstr "" +"Si :class:`NodeTransformer` ajoute de nouveaux nœuds à l'original sans leur " +"donner les attributs de position dans la source (:attr:`lineno` et " +"consorts), il faut passer le nouvel arbre (ou la nouvelle partie de l'arbre) " +"à :func:`fix_missing_locations` pour calculer les positions manquantes :" #: library/ast.rst:1756 msgid "Usually you use the transformer like this::" msgstr "Utilisation typique du *transformer* ::" #: library/ast.rst:1763 -#, fuzzy msgid "" "Return a formatted dump of the tree in *node*. This is mainly useful for " "debugging purposes. If *annotate_fields* is true (by default), the returned " @@ -1185,13 +1467,15 @@ msgid "" "dumped by default. If this is wanted, *include_attributes* can be set to " "true." msgstr "" -"Renvoie un *dump* formaté de l'arbre dans *node*. C'est principalement utile " -"à des fins de débogage. La chaîne de caractères renvoyée présente les noms " -"et valeurs des champs. Cela rend le code impossible à évaluer, si l'on " -"souhaite évaluer ce code, l'option *annotate_fields* doit être définie comme " -"``False``. Les attributs comme les numéros de ligne et les décalages de " -"colonne ne sont pas récupérés par défaut. Si l'on souhaite les récupérer, " -"l'option *include_attributes* peut être définie comme ``True``." +"Renvoie une représentation sous forme de chaîne de caractères de l'arbre " +"contenu dans *node*. Ceci est principalement utile à des fins de débogage. " +"Par défaut, les champs sont passés comme paramètres nommés aux constructeurs " +"des classes d'arbre syntaxiques. Cependant, si *annotate_fields* est mis à " +"``False``, les valeurs sont passées, lorsque cela est possible, comme " +"arguments positionnels, rendant la représentation plus compacte. Les " +"attributs comme les numéros de lignes et positions sur les lignes sont " +"masqués par défaut, mais on peut les inclure en mettant *include_attributes* " +"à ``True``." #: library/ast.rst:1771 msgid "" @@ -1202,38 +1486,52 @@ msgid "" "many spaces per level. If *indent* is a string (such as ``\"\\t\"``), that " "string is used to indent each level." msgstr "" +"La représentation peut comprendre une indentation afin d'être plus lisible. " +"Si *indent* est une chaîne de caractères (par exemple une tabulation " +"``\"\\t\"``), elle est insérée au début des lignes en la répétant autant de " +"fois que le niveau d'indentation. Un entier positif équivaut à un certain " +"nombre d'espaces. Un entier strictement négatif produit un effet identique à " +"0 ou la chaîne vide, c'est-à-dire des retours à la ligne sans indentation. " +"Avec la valeur par défaut de ``None``, la sortie tient sur une seule ligne." #: library/ast.rst:1778 msgid "Added the *indent* option." -msgstr "" +msgstr "ajout du paramètre *indent*." #: library/ast.rst:1785 msgid "Compiler Flags" -msgstr "" +msgstr "Options du compilateur" #: library/ast.rst:1787 msgid "" "The following flags may be passed to :func:`compile` in order to change " "effects on the compilation of a program:" msgstr "" +"Les options suivantes sont prises en charge par la fonction :func:`compile`. " +"Elles permettent de modifier le comportement de la compilation." #: library/ast.rst:1792 msgid "" "Enables support for top-level ``await``, ``async for``, ``async with`` and " "async comprehensions." msgstr "" +"Active la reconnaissance de ``await``, ``async for``, ``async with`` et des " +"compréhensions asynchrones au niveau le plus haut." #: library/ast.rst:1799 msgid "" "Generates and returns an abstract syntax tree instead of returning a " "compiled code object." msgstr "" +"Génère et renvoie un arbre syntaxique au lieu d'un objet de code compilé." #: library/ast.rst:1804 msgid "" "Enables support for :pep:`484` and :pep:`526` style type comments (``# type: " "``, ``# type: ignore ``)." msgstr "" +"Ajoute la prise en charge des commentaires de types tels que définis dans " +"la :pep:`484` et la :pep:`526` (``# type: un_type`` et ``# type: ignore``)." #: library/ast.rst:1813 msgid "Command-Line Usage" @@ -1244,6 +1542,8 @@ msgid "" "The :mod:`ast` module can be executed as a script from the command line. It " "is as simple as:" msgstr "" +"Le module :mod:`ast` peut être exécuté en tant que script en ligne de " +"commande. C'est aussi simple que ceci :" #: library/ast.rst:1824 msgid "The following options are accepted:" @@ -1251,31 +1551,38 @@ msgstr "Les options suivantes sont acceptées :" #: library/ast.rst:1830 msgid "Show the help message and exit." -msgstr "" +msgstr "Affiche un message d'aide et quitte." #: library/ast.rst:1835 msgid "" "Specify what kind of code must be compiled, like the *mode* argument in :" "func:`parse`." msgstr "" +"Précise le type de code à compiler, comme l'argument *mode* de la fonction :" +"func:`parse`." #: library/ast.rst:1840 msgid "Don't parse type comments." -msgstr "" +msgstr "Désactive la reconnaissance des commentaires de type." #: library/ast.rst:1844 msgid "Include attributes such as line numbers and column offsets." msgstr "" +"Affiche les attributs comme les numéros de lignes et les décalages par " +"rapport aux débuts des lignes." #: library/ast.rst:1849 msgid "Indentation of nodes in AST (number of spaces)." -msgstr "" +msgstr "Nombre d'espaces pour chaque niveau d'indentation dans la sortie." #: library/ast.rst:1851 msgid "" "If :file:`infile` is specified its contents are parsed to AST and dumped to " "stdout. Otherwise, the content is read from stdin." msgstr "" +"L'entrée est lue dans le fichier :file:`infile`, s'il est donné, ou l'entrée " +"standard sinon. Le code source est transformé en un arbre syntaxique, qui " +"est affiché sur la sortie standard." #: library/ast.rst:1857 msgid "" @@ -1293,6 +1600,10 @@ msgid "" "code that generated them. This is helpful for tools that make source code " "transformations." msgstr "" +"`ASTTokens `_ " +"annote les arbres syntaxiques Python avec les positions des lexèmes et les " +"extraits de code source à partir desquels ils sont produits. Ceci est utile " +"pour les outils qui transforment du code source." #: library/ast.rst:1865 msgid "" @@ -1307,6 +1618,10 @@ msgid "" "Tree that looks like an ast tree and keeps all formatting details. It's " "useful for building automated refactoring (codemod) applications and linters." msgstr "" +"`LibCST `_ produit à partir du code source " +"des arbres syntaxiques concrets, qui ressemblent à leurs homologues " +"abstraits et conservent tous les détails du formatage. Cette bibliothèque " +"est utile aux outils de réusinage et d'analyse de code." #: library/ast.rst:1874 msgid "" @@ -1315,3 +1630,8 @@ msgid "" "multiple Python versions). Parso is also able to list multiple syntax errors " "in your python file." msgstr "" +"`Parso `_ est un analyseur syntaxique de code " +"Python qui gère la récupération d'erreurs et la génération de code (de " +"l'arbre syntaxique vers le code source), le tout pour les grammaires de " +"différentes versions de Python et en utilisant différentes versions. Il sait " +"également donner plusieurs erreurs de syntaxe en une seule fois." diff --git a/library/asyncio-api-index.po b/library/asyncio-api-index.po index 0a5d13a1..37f2a802 100644 --- a/library/asyncio-api-index.po +++ b/library/asyncio-api-index.po @@ -43,7 +43,7 @@ msgstr "" #: library/asyncio-api-index.rst:24 msgid ":func:`create_task`" -msgstr "" +msgstr ":func:`create_task`" #: library/asyncio-api-index.rst:25 msgid "Start an asyncio Task." @@ -91,7 +91,7 @@ msgstr "" #: library/asyncio-api-index.rst:42 msgid ":func:`current_task`" -msgstr "" +msgstr ":func:`current_task`" #: library/asyncio-api-index.rst:43 msgid "Return the current Task." @@ -99,7 +99,7 @@ msgstr "" #: library/asyncio-api-index.rst:45 msgid ":func:`all_tasks`" -msgstr "" +msgstr ":func:`all_tasks`" #: library/asyncio-api-index.rst:46 msgid "Return all tasks for an event loop." @@ -107,7 +107,7 @@ msgstr "" #: library/asyncio-api-index.rst:48 msgid ":class:`Task`" -msgstr "" +msgstr ":class:`Task`" #: library/asyncio-api-index.rst:49 msgid "Task object." @@ -124,7 +124,7 @@ msgstr "" #: library/asyncio-api-index.rst:54 msgid ":func:`run_coroutine_threadsafe`" -msgstr "" +msgstr ":func:`run_coroutine_threadsafe`" #: library/asyncio-api-index.rst:55 msgid "Schedule a coroutine from another OS thread." @@ -226,7 +226,7 @@ msgstr "" #: library/asyncio-api-index.rst:115 msgid "Create a subprocess." -msgstr "" +msgstr "Crée un sous-processus." #: library/asyncio-api-index.rst:117 msgid "``await`` :func:`create_subprocess_shell`" @@ -286,7 +286,7 @@ msgstr "" #: library/asyncio-api-index.rst:150 msgid ":class:`StreamReader`" -msgstr "" +msgstr ":class:`StreamReader`" #: library/asyncio-api-index.rst:151 msgid "High-level async/await object to receive network data." @@ -294,7 +294,7 @@ msgstr "" #: library/asyncio-api-index.rst:153 msgid ":class:`StreamWriter`" -msgstr "" +msgstr ":class:`StreamWriter`" #: library/asyncio-api-index.rst:154 msgid "High-level async/await object to send network data." @@ -383,7 +383,7 @@ msgstr "" #: library/asyncio-api-index.rst:211 msgid ":exc:`asyncio.CancelledError`" -msgstr "" +msgstr ":exc:`asyncio.CancelledError`" #: library/asyncio-api-index.rst:212 msgid "Raised when a Task is cancelled. See also :meth:`Task.cancel`." diff --git a/library/asyncio-dev.po b/library/asyncio-dev.po index 4787e5fd..d41e0f04 100644 --- a/library/asyncio-dev.po +++ b/library/asyncio-dev.po @@ -23,45 +23,54 @@ msgid "" "Asynchronous programming is different from classic \"sequential\" " "programming." msgstr "" +"La programmation asynchrone est différente de la programmation " +"« séquentielle » classique." #: library/asyncio-dev.rst:12 msgid "" "This page lists common mistakes and traps and explains how to avoid them." msgstr "" +"Cette page liste les pièges et erreurs communs que le développeur pourrait " +"rencontrer et décrit comment les éviter." #: library/asyncio-dev.rst:19 msgid "Debug Mode" -msgstr "" +msgstr "Mode débogage" #: library/asyncio-dev.rst:21 msgid "" "By default asyncio runs in production mode. In order to ease the " "development asyncio has a *debug mode*." msgstr "" +"Par défaut, *asyncio* s'exécute en mode production. Pour faciliter le " +"développement, *asyncio* possède un « mode débogage »." #: library/asyncio-dev.rst:24 msgid "There are several ways to enable asyncio debug mode:" -msgstr "" +msgstr "Il existe plusieurs façons d'activer le mode débogage de *asyncio* :" #: library/asyncio-dev.rst:26 msgid "Setting the :envvar:`PYTHONASYNCIODEBUG` environment variable to ``1``." msgstr "" +"en réglant la variable d’environnement :envvar:`PYTHONASYNCIODEBUG` à ``1`` ;" #: library/asyncio-dev.rst:28 msgid "Using the :ref:`Python Development Mode `." msgstr "" +"en utilisant le mode développement de Python (:ref:`Python Development Mode " +"`) ;" #: library/asyncio-dev.rst:30 msgid "Passing ``debug=True`` to :func:`asyncio.run`." -msgstr "" +msgstr "en passant ``debug=True`` à la fonction :func:`asyncio.run` ;" #: library/asyncio-dev.rst:32 msgid "Calling :meth:`loop.set_debug`." -msgstr "" +msgstr "en appelant la méthode :meth:`loop.set_debug`." #: library/asyncio-dev.rst:34 msgid "In addition to enabling the debug mode, consider also:" -msgstr "" +msgstr "En plus d'activer le mode débogage, vous pouvez également :" #: library/asyncio-dev.rst:36 msgid "" @@ -69,6 +78,10 @@ msgid "" "data:`logging.DEBUG`, for example the following snippet of code can be run " "at startup of the application::" msgstr "" +"régler le niveau de journalisation pour l'enregistreur d'*asyncio* (:ref:" +"`asyncio logger `) à :py:data:`logging.DEBUG` ; par exemple, " +"le fragment de code suivant peut être exécuté au démarrage de " +"l'application ::" #: library/asyncio-dev.rst:42 msgid "" @@ -76,10 +89,13 @@ msgid "" "warnings. One way of doing that is by using the :option:`-W` ``default`` " "command line option." msgstr "" +"configurer le module :mod:`warnings` afin d'afficher les avertissements de " +"type :exc:`ResourceWarning` ; vous pouvez faire cela en utilisant l'option :" +"option:`-W` ``default`` sur la ligne de commande." #: library/asyncio-dev.rst:47 msgid "When the debug mode is enabled:" -msgstr "" +msgstr "Lorsque le mode débogage est activé :" #: library/asyncio-dev.rst:49 msgid "" @@ -87,6 +103,9 @@ msgid "" "not-scheduled>` and logs them; this mitigates the \"forgotten await\" " "pitfall." msgstr "" +"*asyncio* surveille les :ref:`coroutines qui ne sont jamais attendues " +"` et les journalise ; cela atténue le " +"problème des « *await* oubliés » ;" #: library/asyncio-dev.rst:53 msgid "" @@ -94,12 +113,18 @@ msgid "" "`loop.call_at` methods) raise an exception if they are called from a wrong " "thread." msgstr "" +"beaucoup d'*API* *asyncio* ne prenant pas en charge les fils d'exécution " +"multiples (comme les méthodes :meth:`loop.call_soon` et :meth:`loop." +"call_at`) lèvent une exception si elles sont appelées par le mauvais fil " +"d’exécution ;" #: library/asyncio-dev.rst:57 msgid "" "The execution time of the I/O selector is logged if it takes too long to " "perform an I/O operation." msgstr "" +"le temps d'exécution du sélecteur d'entrée-sortie est journalisé si une " +"opération prend trop de temps à s'effectuer ;" #: library/asyncio-dev.rst:60 msgid "" @@ -120,12 +145,21 @@ msgid "" "``await`` expression, the running Task gets suspended, and the event loop " "executes the next Task." msgstr "" +"Une boucle d'évènements s'exécute dans un fil d’exécution (typiquement dans " +"le fil principal) et traite toutes les fonctions de rappel (*callbacks*) " +"ainsi que toutes les tâches dans ce même fil. Lorsqu'une tâche est en cours " +"d'exécution dans la boucle d'évènements, aucune autre tâche ne peut " +"s'exécuter dans ce fil. Quand une tâche traite une expression ``await``, " +"elle se suspend et laisse la boucle d’évènements traiter la tâche suivante." #: library/asyncio-dev.rst:76 msgid "" "To schedule a :term:`callback` from another OS thread, the :meth:`loop." "call_soon_threadsafe` method should be used. Example::" msgstr "" +"Pour planifier un :term:`rappel ` depuis un autre fil d'exécution " +"système, utilisez la méthode :meth:`loop.call_soon_threadsafe`. Par " +"exemple ::" #: library/asyncio-dev.rst:81 msgid "" @@ -134,6 +168,12 @@ msgid "" "a callback. If there's a need for such code to call a low-level asyncio " "API, the :meth:`loop.call_soon_threadsafe` method should be used, e.g.::" msgstr "" +"La plupart des objets *asyncio* ne sont pas conçus pour être exécutés dans " +"un contexte multi-fils (*thread-safe*) mais cela n'est en général pas un " +"problème à moins que l'objet ne fasse appel à du code se trouvant en dehors " +"d'une tâche ou d'une fonction de rappel. Dans ce dernier cas, si le code " +"appelle les *API* bas niveau de *asyncio*, utilisez la méthode :meth:`loop." +"call_soon_threadsafe`. Par exemple ::" #: library/asyncio-dev.rst:89 msgid "" @@ -141,12 +181,17 @@ msgid "" "`run_coroutine_threadsafe` function should be used. It returns a :class:" "`concurrent.futures.Future` to access the result::" msgstr "" +"Pour planifier un objet concurrent depuis un autre fil d'exécution système, " +"utilisez :func:`run_coroutine_threadsafe`. Cette fonction renvoie un objet :" +"class:`concurrent.futures.Future` pour accéder au résultat ::" #: library/asyncio-dev.rst:102 msgid "" "To handle signals and to execute subprocesses, the event loop must be run in " "the main thread." msgstr "" +"Pour pouvoir traiter les signaux et démarrer des processus enfants, la " +"boucle d'évènements doit être exécutée dans le fil principal." #: library/asyncio-dev.rst:105 msgid "" @@ -155,6 +200,10 @@ msgid "" "different OS thread without blocking the OS thread that the event loop runs " "in." msgstr "" +"La méthode :meth:`loop.run_in_executor` peut être utilisée avec :class:" +"`concurrent.futures.ThreadPoolExecutor` pour exécuter du code bloquant dans " +"un autre fil d'exécution, afin de ne pas bloquer le fil où la boucle " +"d'évènements se trouve." #: library/asyncio-dev.rst:110 msgid "" @@ -171,7 +220,7 @@ msgstr "" #: library/asyncio-dev.rst:124 msgid "Running Blocking Code" -msgstr "" +msgstr "Exécution de code bloquant" #: library/asyncio-dev.rst:126 msgid "" @@ -179,6 +228,11 @@ msgid "" "function performs a CPU-intensive calculation for 1 second, all concurrent " "asyncio Tasks and IO operations would be delayed by 1 second." msgstr "" +"Du code bloquant sur des opérations de calcul (*CPU-bound*) ne devrait pas " +"être appelé directement. Par exemple, si une fonction effectue des calculs " +"utilisant le CPU intensivement pendant une seconde, toutes les tâches " +"*asyncio* concurrentes et les opérations d'entrées-sorties seront bloquées " +"pour une seconde." #: library/asyncio-dev.rst:131 msgid "" @@ -186,6 +240,10 @@ msgid "" "different process to avoid blocking the OS thread with the event loop. See " "the :meth:`loop.run_in_executor` method for more details." msgstr "" +"Un exécuteur peut être utilisé pour traiter une tâche dans un fil " +"d'exécution ou un processus différent, afin d'éviter de bloquer le fil " +"d'exécution système dans lequel se trouve la boucle d’évènements. Voir :meth:" +"`loop.run_in_executor` pour plus de détails." #: library/asyncio-dev.rst:140 msgid "Logging" @@ -196,16 +254,20 @@ msgid "" "asyncio uses the :mod:`logging` module and all logging is performed via the " "``\"asyncio\"`` logger." msgstr "" +"*Asyncio* utilise le module :mod:`logging`. Toutes les opérations de " +"journalisation sont effectuées via l'enregistreur (*logger*) ``\"asyncio\"``." #: library/asyncio-dev.rst:145 msgid "" "The default log level is :py:data:`logging.INFO`, which can be easily " "adjusted::" msgstr "" +"Le niveau de journalisation par défaut est :py:data:`logging.INFO` mais peut " +"être ajusté facilement ::" #: library/asyncio-dev.rst:154 msgid "Detect never-awaited coroutines" -msgstr "" +msgstr "Détection des coroutines jamais attendues" #: library/asyncio-dev.rst:156 msgid "" @@ -213,6 +275,10 @@ msgid "" "instead of ``await coro()``) or the coroutine is not scheduled with :meth:" "`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::" msgstr "" +"Lorsqu'une fonction coroutine est appelée mais qu'elle n'est pas attendue " +"(p. ex. ``coro()`` au lieu de ``await coro()``) ou si la coroutine n'est " +"pas planifiée avec :meth:`asyncio.create_task`, *asyncio* émet un :exc:" +"`RuntimeWarning` ::" #: library/asyncio-dev.rst:216 msgid "Output::" @@ -227,10 +293,12 @@ msgid "" "The usual fix is to either await the coroutine or call the :meth:`asyncio." "create_task` function::" msgstr "" +"La façon habituelle de régler ce problème est d'attendre (*await*) la " +"coroutine ou bien d'appeler la fonction :meth:`asyncio.create_task` ::" #: library/asyncio-dev.rst:197 msgid "Detect never-retrieved exceptions" -msgstr "" +msgstr "Détection des exceptions jamais récupérées" #: library/asyncio-dev.rst:199 msgid "" @@ -239,13 +307,19 @@ msgid "" "this case, asyncio would emit a log message when the Future object is " "garbage collected." msgstr "" +"Si la méthode :meth:`Future.set_exception` est appelée mais que l'objet " +"*Future* n'est pas attendu, l'exception n'est pas propagée au code " +"utilisateur. Dans ce cas, *asyncio* écrit un message dans le journal lorsque " +"l'objet *Future* est récupéré par le ramasse-miette." #: library/asyncio-dev.rst:204 msgid "Example of an unhandled exception::" -msgstr "" +msgstr "Exemple d'une exception non-gérée ::" #: library/asyncio-dev.rst:227 msgid "" ":ref:`Enable the debug mode ` to get the traceback where " "the task was created::" msgstr "" +":ref:`Activez le mode débogage ` pour récupérer la trace " +"d'appels indiquant où la tâche a été créée ::" diff --git a/library/asyncio-eventloop.po b/library/asyncio-eventloop.po index b07631a7..1396383b 100644 --- a/library/asyncio-eventloop.po +++ b/library/asyncio-eventloop.po @@ -96,7 +96,7 @@ msgstr "" #: library/asyncio-eventloop.rst:62 msgid "Create and return a new event loop object." -msgstr "" +msgstr "Crée et renvoie un nouvel objet de boucle d'événements." #: library/asyncio-eventloop.rst:64 msgid "" @@ -275,6 +275,9 @@ msgid "" "class:`contextvars.Context` for the *callback* to run in. The current " "context is used when no *context* is provided." msgstr "" +"L'argument nommé optionnel *context* permet de spécifier une classe :class:" +"`contextvars.Context` personnalisée dans laquelle la fonction de rappel " +"s’exécutera. Le contexte actuel est utilisé si *context* n'est pas fourni." #: library/asyncio-eventloop.rst:204 msgid "" @@ -312,6 +315,7 @@ msgid "" "The *context* keyword-only parameter was added. See :pep:`567` for more " "details." msgstr "" +"Ajout de l'argument nommé *context*. Voir :pep:`567` pour plus de détails." #: library/asyncio-eventloop.rst:229 msgid "" diff --git a/library/asyncio-future.po b/library/asyncio-future.po index 92b9e472..77cdf651 100644 --- a/library/asyncio-future.po +++ b/library/asyncio-future.po @@ -23,42 +23,51 @@ msgid "" "**Source code:** :source:`Lib/asyncio/futures.py`, :source:`Lib/asyncio/" "base_futures.py`" msgstr "" +"**Code source :** :source:`Lib/asyncio/futures.py`, :source:`Lib/asyncio/" +"base_futures.py`" #: library/asyncio-future.rst:15 msgid "" "*Future* objects are used to bridge **low-level callback-based code** with " "high-level async/await code." msgstr "" +"Les objets *Future* sont utilisés comme passerelles entre du **code bas " +"niveau basé sur des fonctions de rappel** et du code haut niveau utilisant " +"*async* et *await*." #: library/asyncio-future.rst:20 msgid "Future Functions" -msgstr "" +msgstr "Fonctions pour *Future*" #: library/asyncio-future.rst:24 msgid "Return ``True`` if *obj* is either of:" -msgstr "" +msgstr "Renvoie ``True`` si *obj* est soit :" #: library/asyncio-future.rst:26 msgid "an instance of :class:`asyncio.Future`," -msgstr "" +msgstr "une instance de :class:`asyncio.Future` ;" #: library/asyncio-future.rst:27 msgid "an instance of :class:`asyncio.Task`," -msgstr "" +msgstr "une instance de :class:`asyncio.Task` ;" #: library/asyncio-future.rst:28 msgid "a Future-like object with a ``_asyncio_future_blocking`` attribute." msgstr "" +"un objet se comportant comme *Future* et possédant un attribut " +"``_asyncio_future_blocking``." #: library/asyncio-future.rst:36 msgid "Return:" -msgstr "" +msgstr "Renvoie :" #: library/asyncio-future.rst:38 msgid "" "*obj* argument as is, if *obj* is a :class:`Future`, a :class:`Task`, or a " "Future-like object (:func:`isfuture` is used for the test.)" msgstr "" +"l'objet *obj* tel quel si c'est un objet :class:`Future`, :class:`Task` ou " +"se comportant comme un *Future*. :func:`isfuture` est utilisée pour le test ;" #: library/asyncio-future.rst:42 msgid "" @@ -66,22 +75,31 @@ msgid "" "`iscoroutine` is used for the test); in this case the coroutine will be " "scheduled by ``ensure_future()``." msgstr "" +"un objet :class:`Task` encapsulant *obj* si ce dernier est une coroutine (:" +"func:`iscoroutine` est utilisée pour le test). Dans ce cas, l’exécution de " +"la coroutine sera planifiée par ``ensure_future()`` ;" #: library/asyncio-future.rst:47 msgid "" "a :class:`Task` object that would await on *obj*, if *obj* is an awaitable (:" "func:`inspect.isawaitable` is used for the test.)" msgstr "" +"un objet :class:`Task` qui attendra (*await*) *obj* si ce dernier peut être " +"attendu (*awaitable*). :func:`iscoroutine` est utilisée pour le test." #: library/asyncio-future.rst:50 msgid "If *obj* is neither of the above a :exc:`TypeError` is raised." msgstr "" +"Si *obj* ne correspond à aucun des critères ci-dessus, une exception :exc:" +"`TypeError` est levée." #: library/asyncio-future.rst:54 msgid "" "See also the :func:`create_task` function which is the preferred way for " "creating new Tasks." msgstr "" +"Voir aussi la fonction :func:`create_task` qui est la manière privilégiée " +"pour créer des nouvelles tâches." #: library/asyncio-future.rst:57 msgid "" @@ -98,16 +116,20 @@ msgid "" "Wrap a :class:`concurrent.futures.Future` object in a :class:`asyncio." "Future` object." msgstr "" +"Encapsule un objet :class:`concurrent.futures.Future` dans un objet :class:" +"`asyncio.Future`." #: library/asyncio-future.rst:71 msgid "Future Object" -msgstr "" +msgstr "Objet *Future*" #: library/asyncio-future.rst:75 msgid "" "A Future represents an eventual result of an asynchronous operation. Not " "thread-safe." msgstr "" +"Un *Future* représente le résultat final d'une opération asynchrone. Il " +"n'est pas conçu pour pouvoir être utilisé par plusieurs fils d'exécution." #: library/asyncio-future.rst:78 msgid "" @@ -122,6 +144,10 @@ msgid "" "protocols implemented using asyncio :ref:`transports `) to interoperate with high-level async/await code." msgstr "" +"Les *Futures* sont habituellement utilisés pour permettre à du code bas " +"niveau basé sur des fonctions de rappel (par exemple : les protocoles " +"utilisant *asyncio* :ref:`transports `) " +"d'interagir avec du code haut niveau utilisant *async* et *await*." #: library/asyncio-future.rst:87 msgid "" @@ -130,6 +156,11 @@ msgid "" "create_future`. This way alternative event loop implementations can inject " "their own optimized implementations of a Future object." msgstr "" +"Une bonne règle empirique est de ne jamais exposer des objets *Future* dans " +"des *API* destinées à l'utilisateur. La façon privilégiée de créer des " +"objets *Future* est d'appeler la méthode :meth:`loop.create_future`. Cela " +"permet aux implémentations alternatives de la boucle d'évènements d'utiliser " +"leur propre implémentation de l'objet *Future*." #: library/asyncio-future.rst:93 msgid "Added support for the :mod:`contextvars` module." @@ -137,27 +168,30 @@ msgstr "Ajout du support du module :mod:`contextvars`." #: library/asyncio-future.rst:98 msgid "Return the result of the Future." -msgstr "" +msgstr "Renvoie le résultat du *Future*." #: library/asyncio-future.rst:100 msgid "" "If the Future is *done* and has a result set by the :meth:`set_result` " "method, the result value is returned." msgstr "" +"Si le *Future* est « terminé » et a un résultat défini par la méthode :meth:" +"`set_result`, ce résultat est renvoyé." #: library/asyncio-future.rst:103 msgid "" "If the Future is *done* and has an exception set by the :meth:" "`set_exception` method, this method raises the exception." msgstr "" +"Si le *Future* est « terminé » et a une exception définie par la méthode :" +"meth:`set_exception`, cette méthode lève l'exception." #: library/asyncio-future.rst:194 -#, fuzzy msgid "" "If the Future has been *cancelled*, this method raises a :exc:" "`CancelledError` exception." msgstr "" -"Si la tâche a été *annulée*, cette méthode lève une exception :exc:" +"Si le *Future* a été *annulé*, cette méthode lève une exception :exc:" "`CancelledError`." #: library/asyncio-future.rst:109 @@ -170,53 +204,62 @@ msgstr "" "une exception :exc:`InvalidStateError`." #: library/asyncio-future.rst:114 -#, fuzzy msgid "Mark the Future as *done* and set its result." -msgstr "Marque le futur comme terminé et définit son résultat." +msgstr "Marque le *Future* comme « terminé » et définit son résultat." #: library/asyncio-future.rst:123 msgid "" "Raises a :exc:`InvalidStateError` error if the Future is already *done*." msgstr "" +"Lève une erreur :exc:`InvalidStateError` si le *Future* est déjà « terminé »." #: library/asyncio-future.rst:121 -#, fuzzy msgid "Mark the Future as *done* and set an exception." -msgstr "Marque le futur comme terminé et définit une exception." +msgstr "Marque le *Future* comme « terminé » et définit une exception." #: library/asyncio-future.rst:128 msgid "Return ``True`` if the Future is *done*." -msgstr "" +msgstr "Renvoie ``True`` si le *Future* est « terminé »." #: library/asyncio-future.rst:130 msgid "" "A Future is *done* if it was *cancelled* or if it has a result or an " "exception set with :meth:`set_result` or :meth:`set_exception` calls." msgstr "" +"Un *Future* est « terminé » s'il a été « annulé » ou si un résultat ou une " +"exception a été définie par les méthodes :meth:`set_result` ou :meth:" +"`set_exception`." #: library/asyncio-future.rst:136 msgid "Return ``True`` if the Future was *cancelled*." -msgstr "" +msgstr "Renvoie ``True`` si le *Future* a été « annulé »." #: library/asyncio-future.rst:138 msgid "" "The method is usually used to check if a Future is not *cancelled* before " "setting a result or an exception for it::" msgstr "" +"Cette méthode est habituellement utilisée pour vérifier qu'un *Future* n'est " +"pas « annulé » avant de définir un résultat ou une exception pour celui-ci ::" #: library/asyncio-future.rst:146 msgid "Add a callback to be run when the Future is *done*." msgstr "" +"Ajoute une fonction de rappel à exécuter lorsque le *Future* est « terminé »." #: library/asyncio-future.rst:148 msgid "The *callback* is called with the Future object as its only argument." msgstr "" +"L'argument *callback* est appelé avec l'objet *Future* comme seul argument." #: library/asyncio-future.rst:151 msgid "" "If the Future is already *done* when this method is called, the callback is " "scheduled with :meth:`loop.call_soon`." msgstr "" +"Si le *Future* est déjà « terminé » lorsque la méthode est appelée, " +"l'exécution de la fonction de rappel est planifiée avec :meth:`loop." +"call_soon`." #: library/asyncio-future.rst:154 msgid "" @@ -224,18 +267,24 @@ msgid "" "class:`contextvars.Context` for the *callback* to run in. The current " "context is used when no *context* is provided." msgstr "" +"L'argument nommé optionnel *context* permet de spécifier une classe :class:" +"`contextvars.Context` personnalisée dans laquelle la fonction de rappel " +"s’exécutera. Le contexte actuel est utilisé si *context* n'est pas fourni." #: library/asyncio-future.rst:158 msgid "" ":func:`functools.partial` can be used to pass parameters to the callback, e." "g.::" msgstr "" +":func:`functools.partial` peut être utilisée pour passer des paramètres à la " +"fonction de rappel ::" #: library/asyncio-future.rst:165 msgid "" "The *context* keyword-only parameter was added. See :pep:`567` for more " "details." msgstr "" +"Ajout de l'argument nommé *context*. Voir :pep:`567` pour plus de détails." #: library/asyncio-future.rst:171 msgid "Remove *callback* from the callbacks list." @@ -246,10 +295,12 @@ msgid "" "Returns the number of callbacks removed, which is typically 1, unless a " "callback was added more than once." msgstr "" +"Renvoie le nombre de fonctions de rappel retiré. La méthode renvoie " +"généralement 1, à moins que la fonction ait été ajoutée plus d'une fois." #: library/asyncio-future.rst:178 msgid "Cancel the Future and schedule callbacks." -msgstr "" +msgstr "Annule le *Future* et planifie l'exécution des fonctions de rappel." #: library/asyncio-future.rst:180 msgid "" @@ -257,6 +308,9 @@ msgid "" "change the Future's state to *cancelled*, schedule the callbacks, and return " "``True``." msgstr "" +"Si le *Future* est déjà « terminé » ou « annulé », renvoie ``False``. " +"Autrement, change l'état du *Future* à « annulé », planifie l'exécution des " +"fonctions de rappel et renvoie ``True``." #: library/asyncio-future.rst:184 msgid "Added the ``msg`` parameter." @@ -264,71 +318,91 @@ msgstr "" #: library/asyncio-future.rst:189 msgid "Return the exception that was set on this Future." -msgstr "" +msgstr "Renvoie l'exception définie pour ce *Future*." #: library/asyncio-future.rst:191 msgid "" "The exception (or ``None`` if no exception was set) is returned only if the " "Future is *done*." msgstr "" +"L'exception, ou ``None`` si aucune exception n'a été définie, est renvoyé " +"seulement si le *Future* est « terminé »." #: library/asyncio-future.rst:197 -#, fuzzy msgid "" "If the Future isn't *done* yet, this method raises an :exc:" "`InvalidStateError` exception." msgstr "" -"Si la tâche n'est pas encore *achevée*, cette méthode lève une exception :" -"exc:`InvalidStateError`." +"Si le *Future* n'est pas encore « terminé », cette méthode lève une " +"exception :exc:`InvalidStateError`." #: library/asyncio-future.rst:202 msgid "Return the event loop the Future object is bound to." -msgstr "" +msgstr "Renvoie la boucle d'évènements à laquelle le *Future* est attaché." #: library/asyncio-future.rst:209 msgid "" "This example creates a Future object, creates and schedules an asynchronous " "Task to set result for the Future, and waits until the Future has a result::" msgstr "" +"Cet exemple crée un objet *Future*, puis crée et planifie l’exécution d'une " +"tâche asynchrone qui définira le résultat du *Future* et attend jusqu'à ce " +"que le *Future* ait un résultat ::" #: library/asyncio-future.rst:244 msgid "" "The Future object was designed to mimic :class:`concurrent.futures.Future`. " "Key differences include:" msgstr "" +"L'objet *Future* est conçu pour imiter la classe :class:`concurrent.futures." +"Future`. Les principales différences sont :" #: library/asyncio-future.rst:247 msgid "" "unlike asyncio Futures, :class:`concurrent.futures.Future` instances cannot " "be awaited." msgstr "" +"contrairement au *Future asyncio*, les instances de :class:`concurrent." +"futures.Future` ne peuvent pas être attendues ;" #: library/asyncio-future.rst:250 msgid "" ":meth:`asyncio.Future.result` and :meth:`asyncio.Future.exception` do not " "accept the *timeout* argument." msgstr "" +":meth:`asyncio.Future.result` et :meth:`asyncio.Future.exception` " +"n'acceptent pas d'argument *timeout* ;" #: library/asyncio-future.rst:253 msgid "" ":meth:`asyncio.Future.result` and :meth:`asyncio.Future.exception` raise an :" "exc:`InvalidStateError` exception when the Future is not *done*." msgstr "" +":meth:`asyncio.Future.result` et :meth:`asyncio.Future.exception` lèvent une " +"exception :exc:`InvalidStateError` lorsque le *Future* n'est pas " +"« terminé » ;" #: library/asyncio-future.rst:257 msgid "" "Callbacks registered with :meth:`asyncio.Future.add_done_callback` are not " "called immediately. They are scheduled with :meth:`loop.call_soon` instead." msgstr "" +"les fonctions de rappel enregistrées à l'aide de :meth:`asyncio.Future." +"add_done_callback` ne sont pas exécutées immédiatement mais planifiées avec :" +"meth:`loop.call_soon` ;" #: library/asyncio-future.rst:261 msgid "" "asyncio Future is not compatible with the :func:`concurrent.futures.wait` " "and :func:`concurrent.futures.as_completed` functions." msgstr "" +"les *Future asyncio* ne sont pas compatibles avec les fonctions :func:" +"`concurrent.futures.wait` et :func:`concurrent.futures.as_completed` ;" #: library/asyncio-future.rst:265 msgid "" ":meth:`asyncio.Future.cancel` accepts an optional ``msg`` argument, but :" "func:`concurrent.futures.cancel` does not." msgstr "" +":meth:`asyncio.Future.cancel` accepte un argument optionnel ``msg`` mais " +"pas :func:`concurrent.futures.cancel`." diff --git a/library/asyncio-llapi-index.po b/library/asyncio-llapi-index.po index 0f66c5e7..5aaf3967 100644 --- a/library/asyncio-llapi-index.po +++ b/library/asyncio-llapi-index.po @@ -28,7 +28,7 @@ msgstr "Obtenir une boucle d'évènements" #: library/asyncio-llapi-index.rst:18 msgid ":func:`asyncio.get_running_loop`" -msgstr "" +msgstr ":func:`asyncio.get_running_loop`" #: library/asyncio-llapi-index.rst:19 msgid "The **preferred** function to get the running event loop." @@ -36,7 +36,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:21 msgid ":func:`asyncio.get_event_loop`" -msgstr "" +msgstr ":func:`asyncio.get_event_loop`" #: library/asyncio-llapi-index.rst:22 msgid "Get an event loop instance (current or via the policy)." @@ -44,7 +44,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:24 msgid ":func:`asyncio.set_event_loop`" -msgstr "" +msgstr ":func:`asyncio.set_event_loop`" #: library/asyncio-llapi-index.rst:25 msgid "Set the event loop as current via the current policy." @@ -52,7 +52,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:27 msgid ":func:`asyncio.new_event_loop`" -msgstr "" +msgstr ":func:`asyncio.new_event_loop`" #: library/asyncio-llapi-index.rst:28 msgid "Create a new event loop." @@ -82,7 +82,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:47 msgid ":meth:`loop.run_until_complete`" -msgstr "" +msgstr ":meth:`loop.run_until_complete`" #: library/asyncio-llapi-index.rst:48 msgid "Run a Future/Task/awaitable until complete." @@ -90,7 +90,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:50 msgid ":meth:`loop.run_forever`" -msgstr "" +msgstr ":meth:`loop.run_forever`" #: library/asyncio-llapi-index.rst:51 msgid "Run the event loop forever." @@ -98,7 +98,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:53 msgid ":meth:`loop.stop`" -msgstr "" +msgstr ":meth:`loop.stop`" #: library/asyncio-llapi-index.rst:54 msgid "Stop the event loop." @@ -106,7 +106,7 @@ msgstr "Arrête l'exécution de la boucle d'évènements." #: library/asyncio-llapi-index.rst:56 msgid ":meth:`loop.close`" -msgstr "" +msgstr ":meth:`loop.close`" #: library/asyncio-llapi-index.rst:57 msgid "Close the event loop." @@ -114,7 +114,7 @@ msgstr "Arrête la boucle d'évènements." #: library/asyncio-llapi-index.rst:59 msgid ":meth:`loop.is_running()`" -msgstr "" +msgstr ":meth:`loop.is_running()`" #: library/asyncio-llapi-index.rst:60 msgid "Return ``True`` if the event loop is running." @@ -122,7 +122,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:62 msgid ":meth:`loop.is_closed()`" -msgstr "" +msgstr ":meth:`loop.is_closed()`" #: library/asyncio-llapi-index.rst:63 #, fuzzy @@ -139,11 +139,11 @@ msgstr "" #: library/asyncio-llapi-index.rst:69 msgid "Debugging" -msgstr "" +msgstr "Débogage" #: library/asyncio-llapi-index.rst:74 msgid ":meth:`loop.set_debug`" -msgstr "" +msgstr ":meth:`loop.set_debug`" #: library/asyncio-llapi-index.rst:75 msgid "Enable or disable the debug mode." @@ -151,7 +151,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:77 msgid ":meth:`loop.get_debug`" -msgstr "" +msgstr ":meth:`loop.get_debug`" #: library/asyncio-llapi-index.rst:78 msgid "Get the current debug mode." @@ -163,7 +163,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:86 msgid ":meth:`loop.call_soon`" -msgstr "" +msgstr ":meth:`loop.call_soon`" #: library/asyncio-llapi-index.rst:87 msgid "Invoke a callback soon." @@ -171,7 +171,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:89 msgid ":meth:`loop.call_soon_threadsafe`" -msgstr "" +msgstr ":meth:`loop.call_soon_threadsafe`" #: library/asyncio-llapi-index.rst:90 msgid "A thread-safe variant of :meth:`loop.call_soon`." @@ -179,7 +179,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:92 msgid ":meth:`loop.call_later`" -msgstr "" +msgstr ":meth:`loop.call_later`" #: library/asyncio-llapi-index.rst:93 msgid "Invoke a callback *after* the given time." @@ -187,7 +187,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:95 msgid ":meth:`loop.call_at`" -msgstr "" +msgstr ":meth:`loop.call_at`" #: library/asyncio-llapi-index.rst:96 msgid "Invoke a callback *at* the given time." @@ -209,7 +209,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:108 msgid ":meth:`loop.set_default_executor`" -msgstr "" +msgstr ":meth:`loop.set_default_executor`" #: library/asyncio-llapi-index.rst:109 msgid "Set the default executor for :meth:`loop.run_in_executor`." @@ -221,7 +221,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:117 msgid ":meth:`loop.create_future`" -msgstr "" +msgstr ":meth:`loop.create_future`" #: library/asyncio-llapi-index.rst:118 msgid "Create a :class:`Future` object." @@ -229,7 +229,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:120 msgid ":meth:`loop.create_task`" -msgstr "" +msgstr ":meth:`loop.create_task`" #: library/asyncio-llapi-index.rst:121 msgid "Schedule coroutine as a :class:`Task`." @@ -237,7 +237,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:123 msgid ":meth:`loop.set_task_factory`" -msgstr "" +msgstr ":meth:`loop.set_task_factory`" #: library/asyncio-llapi-index.rst:124 msgid "" @@ -247,7 +247,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:127 msgid ":meth:`loop.get_task_factory`" -msgstr "" +msgstr ":meth:`loop.get_task_factory`" #: library/asyncio-llapi-index.rst:128 msgid "" @@ -413,7 +413,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:204 msgid ":meth:`loop.add_reader`" -msgstr "" +msgstr ":meth:`loop.add_reader`" #: library/asyncio-llapi-index.rst:205 msgid "Start watching a file descriptor for read availability." @@ -421,7 +421,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:207 msgid ":meth:`loop.remove_reader`" -msgstr "" +msgstr ":meth:`loop.remove_reader`" #: library/asyncio-llapi-index.rst:208 msgid "Stop watching a file descriptor for read availability." @@ -429,7 +429,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:210 msgid ":meth:`loop.add_writer`" -msgstr "" +msgstr ":meth:`loop.add_writer`" #: library/asyncio-llapi-index.rst:211 msgid "Start watching a file descriptor for write availability." @@ -437,7 +437,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:213 msgid ":meth:`loop.remove_writer`" -msgstr "" +msgstr ":meth:`loop.remove_writer`" #: library/asyncio-llapi-index.rst:214 msgid "Stop watching a file descriptor for write availability." @@ -450,7 +450,7 @@ msgstr "Signaux Unix" #: library/asyncio-llapi-index.rst:222 msgid ":meth:`loop.add_signal_handler`" -msgstr "" +msgstr ":meth:`loop.add_signal_handler`" #: library/asyncio-llapi-index.rst:223 msgid "Add a handler for a :mod:`signal`." @@ -458,7 +458,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:225 msgid ":meth:`loop.remove_signal_handler`" -msgstr "" +msgstr ":meth:`loop.remove_signal_handler`" #: library/asyncio-llapi-index.rst:226 msgid "Remove a handler for a :mod:`signal`." @@ -470,7 +470,7 @@ msgstr "Sous-processus" #: library/asyncio-llapi-index.rst:234 msgid ":meth:`loop.subprocess_exec`" -msgstr "" +msgstr ":meth:`loop.subprocess_exec`" #: library/asyncio-llapi-index.rst:235 msgid "Spawn a subprocess." @@ -478,7 +478,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:237 msgid ":meth:`loop.subprocess_shell`" -msgstr "" +msgstr ":meth:`loop.subprocess_shell`" #: library/asyncio-llapi-index.rst:238 msgid "Spawn a subprocess from a shell command." @@ -490,7 +490,7 @@ msgstr "Gestion des erreurs" #: library/asyncio-llapi-index.rst:246 msgid ":meth:`loop.call_exception_handler`" -msgstr "" +msgstr ":meth:`loop.call_exception_handler`" #: library/asyncio-llapi-index.rst:247 msgid "Call the exception handler." @@ -498,7 +498,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:249 msgid ":meth:`loop.set_exception_handler`" -msgstr "" +msgstr ":meth:`loop.set_exception_handler`" #: library/asyncio-llapi-index.rst:250 msgid "Set a new exception handler." @@ -506,7 +506,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:252 msgid ":meth:`loop.get_exception_handler`" -msgstr "" +msgstr ":meth:`loop.get_exception_handler`" #: library/asyncio-llapi-index.rst:253 msgid "Get the current exception handler." @@ -514,7 +514,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:255 msgid ":meth:`loop.default_exception_handler`" -msgstr "" +msgstr ":meth:`loop.default_exception_handler`" #: library/asyncio-llapi-index.rst:256 msgid "The default exception handler implementation." @@ -802,7 +802,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:407 msgid "Protocols" -msgstr "" +msgstr "Protocoles" #: library/asyncio-llapi-index.rst:409 msgid "Protocol classes can implement the following **callback methods**:" @@ -963,7 +963,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:503 msgid ":meth:`asyncio.get_event_loop_policy`" -msgstr "" +msgstr ":meth:`asyncio.get_event_loop_policy`" #: library/asyncio-llapi-index.rst:504 msgid "Return the current process-wide policy." @@ -971,7 +971,7 @@ msgstr "Renvoie la stratégie actuelle à l'échelle du processus." #: library/asyncio-llapi-index.rst:506 msgid ":meth:`asyncio.set_event_loop_policy`" -msgstr "" +msgstr ":meth:`asyncio.set_event_loop_policy`" #: library/asyncio-llapi-index.rst:507 msgid "Set a new process-wide policy." @@ -979,7 +979,7 @@ msgstr "" #: library/asyncio-llapi-index.rst:509 msgid ":class:`AbstractEventLoopPolicy`" -msgstr "" +msgstr ":class:`AbstractEventLoopPolicy`" #: library/asyncio-llapi-index.rst:510 msgid "Base class for policy objects." diff --git a/library/asyncio-policy.po b/library/asyncio-policy.po index 2d380dad..d7647af0 100644 --- a/library/asyncio-policy.po +++ b/library/asyncio-policy.po @@ -323,6 +323,8 @@ msgid "" "Spawning a subprocess with *inactive* current child watcher raises :exc:" "`RuntimeError`." msgstr "" +"Instancier un sous-processus avec un observateur enfant actuel *inactif* " +"lève l'exception :exc:`RuntimeError`." #: library/asyncio-policy.rst:200 msgid "Close the watcher." diff --git a/library/asyncio-protocol.po b/library/asyncio-protocol.po index 0385cf04..e4e372df 100644 --- a/library/asyncio-protocol.po +++ b/library/asyncio-protocol.po @@ -585,7 +585,7 @@ msgstr "" #: library/asyncio-protocol.rst:436 msgid "Protocols" -msgstr "" +msgstr "Protocoles" #: library/asyncio-protocol.rst:438 msgid "**Source code:** :source:`Lib/asyncio/protocols.py`" diff --git a/library/asyncio-queue.po b/library/asyncio-queue.po index 3f9e4472..37298f7e 100644 --- a/library/asyncio-queue.po +++ b/library/asyncio-queue.po @@ -68,6 +68,8 @@ msgstr "Le paramètre *loop*." #: library/asyncio-queue.rst:43 msgid "This class is :ref:`not thread safe `." msgstr "" +"Cette classe n'est :ref:`pas conçue pour un contexte multi-fils `." #: library/asyncio-queue.rst:47 msgid "Number of items allowed in the queue." diff --git a/library/asyncio-subprocess.po b/library/asyncio-subprocess.po index 5972f365..6d2278e3 100644 --- a/library/asyncio-subprocess.po +++ b/library/asyncio-subprocess.po @@ -29,12 +29,16 @@ msgid "" "This section describes high-level async/await asyncio APIs to create and " "manage subprocesses." msgstr "" +"Cette section décrit des API de haut niveau de *asyncio* pour créer et gérer " +"des sous-processus via ``async``/``await``." #: library/asyncio-subprocess.rst:19 msgid "" "Here's an example of how asyncio can run a shell command and obtain its " "result::" msgstr "" +"Voici un exemple de comment *asyncio* peut lancer une commande shell et " +"obtenir son résultat ::" #: library/asyncio-subprocess.rst:40 #, fuzzy @@ -51,15 +55,15 @@ msgstr "" #: library/asyncio-subprocess.rst:58 msgid "See also the `Examples`_ subsection." -msgstr "" +msgstr "Voir également la section `Exemples`_." #: library/asyncio-subprocess.rst:62 msgid "Creating Subprocesses" -msgstr "" +msgstr "Créer des sous-processus" #: library/asyncio-subprocess.rst:68 msgid "Create a subprocess." -msgstr "" +msgstr "Crée un sous-processus." #: library/asyncio-subprocess.rst:70 library/asyncio-subprocess.rst:89 msgid "" @@ -67,15 +71,21 @@ msgid "" "wrappers for :attr:`Process.stdout` and :attr:`Process.stderr` (if :attr:" "`subprocess.PIPE` is passed to *stdout* and *stderr* arguments)." msgstr "" +"Le paramètre *limit* définit la taille maximale du tampon pour les instances " +"de :class:`StreamReader` encapsulant :attr:`Process.stdout` et :attr:" +"`Process.stderr` (Si :attr:`subprocess.PIPE` est passé aux paramètres " +"*stdout* et *stderr*)." #: library/asyncio-subprocess.rst:74 library/asyncio-subprocess.rst:93 msgid "Return a :class:`~asyncio.subprocess.Process` instance." -msgstr "" +msgstr "Renvoie une instance de :class:`~asyncio.subprocess.Process`." #: library/asyncio-subprocess.rst:76 msgid "" "See the documentation of :meth:`loop.subprocess_exec` for other parameters." msgstr "" +"Voir la documentation de :meth:`loop.subprocess_exec` pour d'autres " +"paramètres." #: library/asyncio-subprocess.rst:81 library/asyncio-subprocess.rst:109 #, fuzzy @@ -90,6 +100,8 @@ msgstr "Exécute la commande *cmd* dans un *shell*." msgid "" "See the documentation of :meth:`loop.subprocess_shell` for other parameters." msgstr "" +"Voir la documentation de :meth:`loop.subprocess_shell` pour d'autres " +"paramètres." #: library/asyncio-subprocess.rst:100 msgid "" @@ -100,6 +112,13 @@ msgid "" "escape whitespace and special shell characters in strings that are going to " "be used to construct shell commands." msgstr "" +"Il est de la responsabilité de l'application de s'assurer que tous les " +"espaces et les caractères spéciaux sont correctement mis entre guillemets " +"pour éviter les vulnérabilités de type `injection de code `_. La fonction :func:" +"`shlex.quote` peut être utilisée pour l’échappement des espaces et " +"caractères spéciaux dans les chaînes utilisées pour construire des commandes " +"shell." #: library/asyncio-subprocess.rst:113 msgid "" @@ -107,6 +126,9 @@ msgid "" "used. See :ref:`Subprocess Support on Windows ` " "for details." msgstr "" +"Les sous-processus sont disponibles pour Windows si un :class:" +"`ProactorEventLoop` est utilisé. Voir :ref:`Support des sous-processus sous " +"Windows ` pour plus de précisions." #: library/asyncio-subprocess.rst:119 msgid "" @@ -123,7 +145,7 @@ msgstr "Constantes" #: library/asyncio-subprocess.rst:132 msgid "Can be passed to the *stdin*, *stdout* or *stderr* parameters." -msgstr "" +msgstr "Peut être passé aux paramètres *stdin*, *stdout* ou *stderr*." #: library/asyncio-subprocess.rst:134 msgid "" @@ -131,6 +153,9 @@ msgid "" "subprocess.Process.stdin>` attribute will point to a :class:`StreamWriter` " "instance." msgstr "" +"Si *PIPE* est passé au paramètre *stdin*, l'attribut :attr:`Process.stdin " +"` ne pointera pas vers une instance de :" +"class:`StreamWriter`." #: library/asyncio-subprocess.rst:138 msgid "" @@ -139,12 +164,18 @@ msgid "" "` attributes will point to :class:" "`StreamReader` instances." msgstr "" +"Si *PIPE* est passé au paramètre *stdout* ou *stderr* , l'attribut :attr:" +"`Process.stdout ` et :attr:`Process." +"stderr ` pointeront vers des instances " +"de :class:`StreamReader`." #: library/asyncio-subprocess.rst:146 msgid "" "Special value that can be used as the *stderr* argument and indicates that " "standard error should be redirected into standard output." msgstr "" +"Une valeur spéciale qui peut être passée au paramètre *stderr* et qui " +"indique que la sortie d'erreur doit être redirigée vers la sortie standard." #: library/asyncio-subprocess.rst:152 msgid "" @@ -152,10 +183,13 @@ msgid "" "to process creation functions. It indicates that the special file :data:`os." "devnull` will be used for the corresponding subprocess stream." msgstr "" +"Une valeur spéciale qui peut être passée à l'argument *stdin*, *stdout* ou " +"*stderr* des fonctions créant des processus. Elle implique l'utilisation du " +"fichier :data:`os.devnull` pour le flux correspondant du processus." #: library/asyncio-subprocess.rst:158 msgid "Interacting with Subprocesses" -msgstr "" +msgstr "Interagir avec les sous-processus" #: library/asyncio-subprocess.rst:160 msgid "" @@ -199,11 +233,13 @@ msgstr "" #: library/asyncio-subprocess.rst:187 msgid "the *universal_newlines* parameter is not supported." -msgstr "" +msgstr "le paramètre *universal_newlines* n'est pas pris en charge." #: library/asyncio-subprocess.rst:189 msgid "This class is :ref:`not thread safe `." msgstr "" +"Cette classe n'est :ref:`pas conçue pour un contexte multi-fils `." #: library/asyncio-subprocess.rst:191 msgid "" @@ -215,11 +251,11 @@ msgstr "" #: library/asyncio-subprocess.rst:196 msgid "Wait for the child process to terminate." -msgstr "" +msgstr "Attend que le sous processus s'arrête." #: library/asyncio-subprocess.rst:198 msgid "Set and return the :attr:`returncode` attribute." -msgstr "" +msgstr "Définit et renvoie l'attribut :attr:`returncode`." #: library/asyncio-subprocess.rst:202 msgid "" @@ -228,32 +264,41 @@ msgid "" "pipe buffer to accept more data. Use the :meth:`communicate` method when " "using pipes to avoid this condition." msgstr "" +"Cette méthode peut générer un interblocage quand ``stdout=PIPE`` ou " +"``stderr=PIPE`` est utilisé et que le sous-processus génère tellement de " +"sorties qu'il se bloque, dans l'attente que le tampon du tube côté OS " +"accepte des données supplémentaires. Pour éviter cette situation, choisissez " +"la méthode :meth:`communicate` quand vous utilisez des tubes." #: library/asyncio-subprocess.rst:210 msgid "Interact with process:" -msgstr "" +msgstr "Interagit avec le processus :" #: library/asyncio-subprocess.rst:212 msgid "send data to *stdin* (if *input* is not ``None``);" -msgstr "" +msgstr "envoie des données sur le *stdin* (si *input* n'est pas ``None``);" #: library/asyncio-subprocess.rst:213 msgid "read data from *stdout* and *stderr*, until EOF is reached;" msgstr "" +"lit les données sur *stdout* et *stderr*, jusqu'à ce que le EOF soit " +"atteint ;" #: library/asyncio-subprocess.rst:214 msgid "wait for process to terminate." -msgstr "" +msgstr "attend que le processus s'arrête." #: library/asyncio-subprocess.rst:216 msgid "" "The optional *input* argument is the data (:class:`bytes` object) that will " "be sent to the child process." msgstr "" +"Le paramètre optionnel *input* (objet de type :class:`bytes`) représente les " +"données transmises au sous-processus." #: library/asyncio-subprocess.rst:219 msgid "Return a tuple ``(stdout_data, stderr_data)``." -msgstr "" +msgstr "Renvoie un tuple ``(stdout_data, stderr_data)``." #: library/asyncio-subprocess.rst:221 msgid "" @@ -284,15 +329,15 @@ msgid "Sends the signal *signal* to the child process." msgstr "Envoie le signal *signal* au sous-processus." #: library/asyncio-subprocess.rst:241 -#, fuzzy msgid "" "On Windows, :py:data:`SIGTERM` is an alias for :meth:`terminate`. " "``CTRL_C_EVENT`` and ``CTRL_BREAK_EVENT`` can be sent to processes started " "with a *creationflags* parameter which includes ``CREATE_NEW_PROCESS_GROUP``." msgstr "" -"Sous Windows, *SIGTERM* est un alias pour :meth:`terminate`. *CTRL_C_EVENT* " -"et *CTRL_BREAK_EVENT* peuvent être envoyés aux processus démarrés avec un " -"paramètre *creationflags* incluant `CREATE_NEW_PROCESS_GROUP`." +"Sous Windows, :py:data:`SIGTERM` est un alias pour :meth:`terminate`. " +"*CTRL_C_EVENT* et *CTRL_BREAK_EVENT* peuvent être envoyés aux processus " +"démarrés avec un paramètre *creationflags* incluant " +"``CREATE_NEW_PROCESS_GROUP``." #: library/asyncio-subprocess.rst:248 msgid "Stop the child process." @@ -318,16 +363,15 @@ msgid "Kill the child process." msgstr "Arrête le sous-processus." #: library/asyncio-subprocess.rst:260 -#, fuzzy msgid "" "On POSIX systems this method sends :py:data:`SIGKILL` to the child process." msgstr "" -"Sur les systèmes POSIX, cette méthode envoie un :py:data:`signal.SIGTERM` au " +"Sur les systèmes POSIX, cette méthode envoie :py:data:`signal.SIGTERM` au " "sous-processus." #: library/asyncio-subprocess.rst:263 msgid "On Windows this method is an alias for :meth:`terminate`." -msgstr "" +msgstr "Sous Windows, cette méthode est un alias pour :meth:`terminate`." #: library/asyncio-subprocess.rst:267 msgid "" @@ -358,6 +402,8 @@ msgstr "" #: library/asyncio-subprocess.rst:291 msgid "Process identification number (PID)." msgstr "" +"Numéro d'identification du processus (PID, pour *Process Identification " +"Number* en anglais)." #: library/asyncio-subprocess.rst:293 msgid "" @@ -367,7 +413,7 @@ msgstr "" #: library/asyncio-subprocess.rst:298 msgid "Return code of the process when it exits." -msgstr "" +msgstr "Code de retour du processus quand il se termine." #: library/asyncio-subprocess.rst:300 msgid "A ``None`` value indicates that the process has not terminated yet." @@ -414,18 +460,25 @@ msgid "" "Spawning a subprocess with *inactive* current child watcher raises :exc:" "`RuntimeError`." msgstr "" +"Instancier un sous-processus avec un observateur enfant actuel *inactif* " +"lève l'exception :exc:`RuntimeError`." #: library/asyncio-subprocess.rst:329 msgid "" "Note that alternative event loop implementations might have own limitations; " "please refer to their documentation." msgstr "" +"Notez que ces implémentations alternatives de la boucle d'événements peuvent " +"comporter leurs propres limitations. Veuillez vous référer à leur " +"documentation." #: library/asyncio-subprocess.rst:334 msgid "" "The :ref:`Concurrency and multithreading in asyncio ` section." msgstr "" +"La section :ref:`Exécution concurrente et multi-fils d'exécution `." #: library/asyncio-subprocess.rst:339 msgid "Examples" @@ -437,14 +490,20 @@ msgid "" "subprocess and the :class:`StreamReader` class to read from its standard " "output." msgstr "" +"Un exemple utilisant la classe :class:`~asyncio.subprocess.Process` pour " +"contrôler un sous-processus et la classe :class:`StreamReader` pour lire sa " +"sortie standard." #: library/asyncio-subprocess.rst:347 msgid "" "The subprocess is created by the :func:`create_subprocess_exec` function::" msgstr "" +"Le sous-processus est créé par la fonction :func:`create_subprocess_exec` ::" #: library/asyncio-subprocess.rst:374 msgid "" "See also the :ref:`same example ` written " "using low-level APIs." msgstr "" +"Voir également :ref:`le même exemple `, " +"écrit en utilisant des API de bas niveau." diff --git a/library/atexit.po b/library/atexit.po index 2434895b..3184472d 100644 --- a/library/atexit.po +++ b/library/atexit.po @@ -113,6 +113,13 @@ msgid "" "comparisons (``==``) are used internally during unregistration, so function " "references do not need to have matching identities." msgstr "" +"Retire *func* de la liste des fonctions à exécuter au moment de l'arrêt de " +"l'interpréteur. :func:`unregister` ne fait rien et reste silencieux si " +"*func* n'a pas été préalablement inscrite. Si *func* a été inscrite plus " +"d'une fois, toutes les occurrences de cette fonction sont retirées de la " +"pile d'appels de :mod:`atexit`. La comparaison d'égalité (``==``) est " +"utilisée dans l'implémentation interne de la désinscription. Les références " +"des fonctions n'ont donc pas besoin d'avoir la même identité." #: library/atexit.rst:62 msgid "Module :mod:`readline`" diff --git a/library/audioop.po b/library/audioop.po index 9137ec3f..84454308 100644 --- a/library/audioop.po +++ b/library/audioop.po @@ -32,33 +32,49 @@ msgid "" "`. All scalar items are integers, unless specified " "otherwise." msgstr "" +"Le module :mod:`audioop` permet d'effectuer des opérations utiles sur des " +"fragments sonores. Ceux-ci sont constitués d'échantillons audio, suite " +"d'entiers signés de taille 8, 16, 24 ou 32 bits. Ils sont sauvegardés dans " +"des :term:`objets octet-compatibles `. Tous les nombres " +"sont des entiers, sauf mention particulière." #: library/audioop.rst:19 msgid "" "Support for 24-bit samples was added. All functions now accept any :term:" "`bytes-like object`. String input now results in an immediate error." msgstr "" +"Ajout de la prise en charge d'échantillons 24 bits. Toutes les fonctions " +"acceptent maintenant les :term:`objets octet-compatibles `. Une chaîne de caractères reçue en entrée lève immédiatement une " +"erreur." #: library/audioop.rst:30 msgid "" "This module provides support for a-LAW, u-LAW and Intel/DVI ADPCM encodings." msgstr "" +"Ce module prend en charge les encodages de la loi A, de la loi u et les " +"encodages Intel/DVI ADPCM." #: library/audioop.rst:34 msgid "" "A few of the more complicated operations only take 16-bit samples, otherwise " "the sample size (in bytes) is always a parameter of the operation." msgstr "" +"Mis à part quelques opérations plus complexes ne prenant que des " +"échantillons de 16 bits, la taille de l'échantillon (en octets) est toujours " +"un paramètre de l'opération." #: library/audioop.rst:37 msgid "The module defines the following variables and functions:" -msgstr "" +msgstr "Le module définit les fonctions et variables suivantes :" #: library/audioop.rst:42 msgid "" "This exception is raised on all errors, such as unknown number of bytes per " "sample, etc." msgstr "" +"Cette exception est levée pour toutes les erreurs, comme un nombre inconnu " +"d'octets par échantillon, etc." #: library/audioop.rst:48 msgid "" @@ -67,6 +83,10 @@ msgid "" "or ``4``. Both fragments should have the same length. Samples are " "truncated in case of overflow." msgstr "" +"Renvoie un fragment constitué de l'addition des deux échantillons fournis " +"comme paramètres. *width* est la largeur de l'échantillon en octets, soit " +"``1``, ``2``, ``3`` ou ``4``. Les deux fragments doivent avoir la même " +"longueur. Les échantillons sont tronqués en cas de débordement." #: library/audioop.rst:55 msgid "" @@ -84,7 +104,7 @@ msgstr "" #: library/audioop.rst:69 msgid "Return the average over all samples in the fragment." -msgstr "" +msgstr "Renvoie la moyenne prise sur l'ensemble des échantillons du fragment." #: library/audioop.rst:74 msgid "" @@ -119,7 +139,7 @@ msgstr "" #: library/audioop.rst:104 msgid "The time taken by this routine is proportional to ``len(fragment)``." -msgstr "" +msgstr "Le temps pris par cette routine est proportionnel à ``len(fragment)``." #: library/audioop.rst:109 msgid "" @@ -142,11 +162,12 @@ msgstr "" #: library/audioop.rst:124 msgid "The routine takes time proportional to ``len(fragment)``." -msgstr "" +msgstr "La routine s'exécute en un temps proportionnel à ``len(fragment)``." #: library/audioop.rst:129 msgid "Return the value of sample *index* from the fragment." msgstr "" +"Renvoie la valeur de l'échantillon à l'indice *index* dans le fragment." #: library/audioop.rst:134 msgid "" @@ -176,7 +197,7 @@ msgstr "" #: library/audioop.rst:155 msgid "Convert samples between 1-, 2-, 3- and 4-byte formats." -msgstr "" +msgstr "Convertit des échantillons pour les formats à 1, 2, 3, et 4 octets." #: library/audioop.rst:159 msgid "" @@ -190,6 +211,8 @@ msgid "" "The same, in reverse, has to be applied when converting from 8 to 16, 24 or " "32 bit width samples." msgstr "" +"Le même procédé, mais inversé, doit être suivi lorsqu'on exécute une " +"conversion d'échantillons de 8 bits à 16, 24 ou 32 bits." #: library/audioop.rst:172 msgid "" @@ -203,6 +226,7 @@ msgstr "" msgid "" "Return the maximum of the *absolute value* of all samples in a fragment." msgstr "" +"Renvoie la *valeur absolue* maximale de tous les échantillons du fragment." #: library/audioop.rst:185 msgid "Return the maximum peak-peak value in the sound fragment." @@ -213,6 +237,8 @@ msgid "" "Return a tuple consisting of the minimum and maximum values of all samples " "in the sound fragment." msgstr "" +"Renvoie un *n*-uplet contenant les valeurs maximale et minimale de tous les " +"échantillons du fragment sonore." #: library/audioop.rst:196 msgid "" @@ -220,10 +246,13 @@ msgid "" "by the floating-point value *factor*. Samples are truncated in case of " "overflow." msgstr "" +"Renvoie un fragment contenant tous les échantillons du fragment original " +"multipliés par la valeur à décimale *factor*. Les échantillons sont tronqués " +"en cas de débordement." #: library/audioop.rst:202 msgid "Convert the frame rate of the input fragment." -msgstr "" +msgstr "Transforme la fréquence d'échantillonnage du fragment d'entrée." #: library/audioop.rst:204 msgid "" @@ -238,15 +267,21 @@ msgid "" "The *weightA* and *weightB* arguments are parameters for a simple digital " "filter and default to ``1`` and ``0`` respectively." msgstr "" +"Les arguments *weightA* et *weightB* sont les paramètres d'un filtre " +"numérique simple et ont comme valeur par défaut ``1`` et ``0``, " +"respectivement." #: library/audioop.rst:214 msgid "Reverse the samples in a fragment and returns the modified fragment." msgstr "" +"Inverse les échantillons dans un fragment et renvoie le fragment modifié." #: library/audioop.rst:219 msgid "" "Return the root-mean-square of the fragment, i.e. ``sqrt(sum(S_i^2)/n)``." msgstr "" +"Renvoie la moyenne quadratique du fragment, c'est-à-dire ``sqrt(sum(S_i^2)/" +"n)``." #: library/audioop.rst:221 msgid "This is a measure of the power in an audio signal." @@ -258,6 +293,9 @@ msgid "" "multiplied by *lfactor* and the right channel by *rfactor* before adding the " "two channels to give a mono signal." msgstr "" +"Transforme un fragment stéréo en fragment mono. Le canal de gauche est " +"multiplié par *lfactor* et le canal de droite par *rfactor* avant " +"d'additionner les deux canaux afin d'obtenir un signal mono." #: library/audioop.rst:233 msgid "" @@ -265,6 +303,11 @@ msgid "" "the stereo fragment are computed from the mono sample, whereby left channel " "samples are multiplied by *lfactor* and right channel samples by *rfactor*." msgstr "" +"Génère un fragment stéréo à partir d'un fragment mono. Chaque paire " +"d'échantillons dans le fragment stéréo est obtenue à partir de l'échantillon " +"mono de la façon suivante : les échantillons du canal de gauche sont " +"multipliés par *lfactor* et les échantillons du canal de droite, par " +"*rfactor*." #: library/audioop.rst:240 msgid "" diff --git a/library/audit_events.po b/library/audit_events.po index 7fae9950..202a1431 100644 --- a/library/audit_events.po +++ b/library/audit_events.po @@ -55,6 +55,8 @@ msgid "" "The following events are raised internally and do not correspond to any " "public API of CPython:" msgstr "" +"Les évènements suivants sont levés en interne et ne correspondent à aucune " +"API publique de CPython:" #: library/audit_events.rst:27 #, fuzzy @@ -67,61 +69,63 @@ msgstr "Arguments" #: library/audit_events.rst:29 msgid "_winapi.CreateFile" -msgstr "" +msgstr "_winapi.CreateFile" #: library/audit_events.rst:29 msgid "" "``file_name``, ``desired_access``, ``share_mode``, ``creation_disposition``, " "``flags_and_attributes``" msgstr "" +"``file_name``, ``desired_access``, ``share_mode``, ``creation_disposition``, " +"``flags_and_attributes``" #: library/audit_events.rst:33 msgid "_winapi.CreateJunction" -msgstr "" +msgstr "_winapi.CreateJunction" #: library/audit_events.rst:33 msgid "``src_path``, ``dst_path``" -msgstr "" +msgstr "``src_path``, ``dst_path``" #: library/audit_events.rst:35 msgid "_winapi.CreateNamedPipe" -msgstr "" +msgstr "_winapi.CreateNamedPipe" #: library/audit_events.rst:35 msgid "``name``, ``open_mode``, ``pipe_mode``" -msgstr "" +msgstr "``name``, ``open_mode``, ``pipe_mode``" #: library/audit_events.rst:37 msgid "_winapi.CreatePipe" -msgstr "" +msgstr "_winapi.CreatePipe" #: library/audit_events.rst:39 msgid "_winapi.CreateProcess" -msgstr "" +msgstr "_winapi.CreateProcess" #: library/audit_events.rst:39 msgid "``application_name``, ``command_line``, ``current_directory``" -msgstr "" +msgstr "``application_name``, ``command_line``, ``current_directory``" #: library/audit_events.rst:42 msgid "_winapi.OpenProcess" -msgstr "" +msgstr "_winapi.OpenProcess" #: library/audit_events.rst:42 msgid "``process_id``, ``desired_access``" -msgstr "" +msgstr "``process_id``, ``desired_access``" #: library/audit_events.rst:44 msgid "_winapi.TerminateProcess" -msgstr "" +msgstr "_winapi.TerminateProcess" #: library/audit_events.rst:44 msgid "``handle``, ``exit_code``" -msgstr "" +msgstr "``handle``, ``exit_code``" #: library/audit_events.rst:46 msgid "ctypes.PyObj_FromPtr" -msgstr "" +msgstr "ctypes.PyObj_FromPtr" #: library/audit_events.rst:46 msgid "``obj``" diff --git a/library/codeop.po b/library/codeop.po index 3b3d75d7..d9a55a84 100644 --- a/library/codeop.po +++ b/library/codeop.po @@ -94,7 +94,6 @@ msgstr "" "ou :exc:`ValueError` si un littéral invalide est rencontré." #: library/codeop.rst:45 -#, fuzzy msgid "" "The *symbol* argument determines whether *source* is compiled as a statement " "(``'single'``, the default), as a sequence of statements (``'exec'``) or as " @@ -102,8 +101,9 @@ msgid "" "`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`." +"(``'single'``, par défaut), comme une suite d'instructions (``'exec'``), ou " +"comme une :term:`expression` (``'eval'``). Toute autre valeur lèvera :exc:" +"`ValueError`." #: library/codeop.rst:52 msgid "" diff --git a/library/collections.po b/library/collections.po index 1f0bf26b..013c151a 100644 --- a/library/collections.po +++ b/library/collections.po @@ -1589,13 +1589,12 @@ msgstr "" "et déplacée à la fin ::" #: library/collections.rst:1151 -#, fuzzy msgid "" "An :class:`OrderedDict` would also be useful for implementing variants of :" "func:`functools.lru_cache`:" msgstr "" "Un :class:`OrderedDict` peut aussi être utile pour implémenter des variantes " -"de :func:`functools.lru_cache` ::" +"de :func:`functools.lru_cache` :" #: library/collections.rst:1192 msgid ":class:`UserDict` objects" diff --git a/library/compileall.po b/library/compileall.po index 16cde840..3c8088a6 100644 --- a/library/compileall.po +++ b/library/compileall.po @@ -303,7 +303,6 @@ msgstr "" "sont à jour." #: library/compileall.rst:169 -#, fuzzy msgid "" "If *rx* is given, its ``search`` method is called on the complete path to " "each file considered for compilation, and if it returns a true value, the " @@ -312,8 +311,8 @@ msgid "" msgstr "" "Si *rx* est donné, sa méthode ``search`` est appelée sur le chemin complet " "de chaque fichier source, et si elle renvoie une valeur vraie, le fichier " -"est sauté. *rx* sera habituellement une expression régulière (objet ``re." -"Pattern``)." +"est sauté. *rx* sera habituellement une expression régulière (objet :ref:`re." +"Pattern `)." #: library/compileall.rst:251 msgid "" @@ -471,7 +470,6 @@ msgstr "" "le fichier source n'existe pas au moment de l'exécution." #: library/compileall.rst:246 -#, fuzzy msgid "" "If *rx* is given, its ``search`` method is passed the full path name to the " "file being compiled, and if it returns a true value, the file is not " @@ -481,8 +479,8 @@ msgid "" msgstr "" "Si *rx* est donné, sa méthode ``search`` est appelée sur le chemin complet " "de chaque fichier source, et si elle renvoie une valeur vraie, le fichier " -"est sauté. *rx* sera habituellement une expression régulière (objet ``re." -"Pattern``)." +"est sauté. *rx* sera habituellement une expression régulière (objet :ref:`re." +"Pattern `)." #: library/compileall.rst:291 msgid "" diff --git a/library/csv.po b/library/csv.po index 716652ac..25a1cb69 100644 --- a/library/csv.po +++ b/library/csv.po @@ -141,7 +141,6 @@ msgid "A short usage example::" msgstr "Un court exemple d'utilisation ::" #: library/csv.rst:88 -#, fuzzy msgid "" "Return a writer object responsible for converting the user's data into " "delimited strings on the given file-like object. *csvfile* can be any " @@ -160,28 +159,27 @@ msgid "" "returned from a ``cursor.fetch*`` call. All other non-string data are " "stringified with :func:`str` before being written." msgstr "" -"Renvoie un objet transcripteur responsable de convertir les données de " -"l'utilisateur en chaînes délimitées sur l'objet fichier-compatible donné. " -"*csvfile* peut être n'importe quel objet avec une méthode :func:`write`. Si " -"*csvfile* est un fichier, il doit être ouvert avec ``newline=''``. [1]_ Un " -"paramètre *dialect* optionnel peut être fourni pour définir un ensemble de " -"paramètres spécifiques à un dialecte CSV particulier. Il peut s'agir d'une " -"instance de sous-classe de :class:`Dialect` ou de l'une des chaînes " -"renvoyées par la fonction :func:`list_dialects`. Les autres arguments " -"nommés optionnels (*fmtparams*) peuvent être spécifiés pour redéfinir des " -"paramètres de formatage particuliers dans le dialecte courant. Pour des " -"détails complets sur les dialectes et paramètres de formatage, voir la " -"section :ref:`csv-fmt-params`. Pour faciliter au mieux l'interfaçage avec " -"d'autres modules implémentant l'interface *DB*, la valeur :const:`None` est " -"écrite comme une chaîne vide. Bien que ce ne soit pas une transformation " -"réversible, cela simplifie l'exportation de données SQL *NULL* vers des " -"fichiers CSV sans pré-traiter les données renvoyées par un appel à ``cursor." -"fetch*``. Toutes les autres données qui ne sont pas des chaînes de " -"caractères sont transformées en chaînes par un appel à :func:`str` avant " -"d'être écrites." +"Renvoie un transcripteur (objet *writer*) responsable de convertir les " +"données de l'utilisateur en chaînes délimitées sur l'objet fichier-" +"compatible donné. *csvfile* peut être n'importe quel objet avec une " +"méthode :func:`write`. Si *csvfile* est un objet fichier, il doit être " +"ouvert avec ``newline=''``. [1]_ Un paramètre *dialect* optionnel peut être " +"fourni pour définir un ensemble de paramètres spécifiques à un dialecte CSV " +"particulier. Il peut s'agir d'une instance d’une sous-classe de :class:" +"`Dialect` ou de l'une des chaînes renvoyées par la fonction :func:" +"`list_dialects`. Les autres arguments nommés optionnels (*fmtparams*) " +"peuvent être spécifiés pour redéfinir des paramètres de formatage " +"particuliers dans le dialecte utilisé. Pour tous les détails sur les " +"dialectes et paramètres de formatage, voir la section :ref:`csv-fmt-params`. " +"Pour faciliter au mieux l'interfaçage avec d'autres modules implémentant " +"l'interface *DB*, la valeur :const:`None` est convertie en une chaîne vide. " +"Bien que ce ne soit pas une transformation réversible, cela simplifie " +"l'exportation de données SQL *NULL* vers des fichiers CSV sans pré-traiter " +"les données renvoyées par un appel à ``cursor.fetch*``. Toutes les autres " +"données qui ne sont pas des chaînes de caractères sont transformées en " +"chaînes par un appel à :func:`str` avant d'être écrites." #: library/csv.rst:117 -#, fuzzy msgid "" "Associate *dialect* with *name*. *name* must be a string. The dialect can " "be specified either by passing a sub-class of :class:`Dialect`, or by " @@ -192,8 +190,8 @@ msgstr "" "Associe *dialect* avec *name*. *name* doit être une chaîne de caractères. " "Le dialecte peut être spécifié en passant une instance d'une sous-classe de :" "class:`Dialect`, des arguments nommés *fmtparams*, ou les deux, avec les " -"arguments nommés redéfinissant les paramètres du dialecte. Pour des détails " -"complets sur les dialectes et paramètres de formatage, voir la section :ref:" +"arguments nommés redéfinissant les paramètres du dialecte. Pour tous les " +"détails sur les dialectes et paramètres de formatage, voir la section :ref:" "`csv-fmt-params`." #: library/csv.rst:126 @@ -326,6 +324,12 @@ msgid "" "subtly different CSV data. :class:`Dialect` instances define how :class:" "`reader` and :class:`writer` instances behave." msgstr "" +"La classe :class:`Dialect` est une classe dont les attributs contiennent des " +"informations sur la façon de gérer les guillemets, les espaces, les " +"délimiteurs, etc. En raison de l’absence d’une spécification CSV stricte, " +"différentes applications produisent des données CSV subtilement différentes. " +"Les instances :class:`Dialect` définissent le comportement des instances :" +"class:`reader` et :class:`writer`." #: library/csv.rst:234 msgid "" @@ -333,6 +337,10 @@ msgid "" "and they can be registered with specific :class:`reader` and :class:`writer` " "classes through their initializer (``__init__``) functions like this::" msgstr "" +"Tous les noms disponibles de :class:`Dialect` sont renvoyés par :func:" +"`list_dialects`, et ils peuvent être enregistrés avec des classes :class:" +"`reader` et :class:`writer` spécifiques en passant par leur fonction " +"d’initialisation (``__init__``) comme ici :" #: library/csv.rst:247 msgid "" @@ -597,7 +605,6 @@ msgstr "" "la fonction :func:`reader`) ont les méthodes publiques suivantes :" #: library/csv.rst:418 -#, fuzzy msgid "" "Return the next row of the reader's iterable object as a list (if the object " "was returned from :func:`reader`) or a dict (if it is a :class:`DictReader` " @@ -606,8 +613,9 @@ msgid "" msgstr "" "Renvoie la ligne suivante de l'objet itérable du lecteur en tant que liste " "(si l'objet est renvoyé depuis :func:`reader`) ou dictionnaire (si l'objet " -"est un :class:`DictReader`), analysé suivant le dialecte courant. " -"Généralement, vous devez appeler la méthode à l'aide de ``next(reader)``." +"est un :class:`DictReader`), analysé suivant la classe :class:`Dialect` " +"utilisée. Généralement, vous devez appeler la méthode à l'aide de " +"``next(reader)``." #: library/csv.rst:424 msgid "Reader objects have the following public attributes:" @@ -665,15 +673,14 @@ msgstr "" "(en supposant qu'ils supportent les nombres complexes)." #: library/csv.rst:461 -#, fuzzy msgid "" "Write the *row* parameter to the writer's file object, formatted according " "to the current :class:`Dialect`. Return the return value of the call to the " "*write* method of the underlying file object." msgstr "" -"Écrit le paramètre *row* vers le fichier associé au transcripteur, formaté " -"selon le dialecte courant. Renvoie la valeur de retour de l'appel à la " -"méthode *write* de l'objet fichier sous-jacent." +"Écrit le paramètre *row* vers l’objet fichier du transcripteur, formaté " +"selon la classe :class:`Dialect` utilisée. Renvoie la valeur de retour de " +"l'appel à la méthode *write* de l'objet fichier sous-jacent." #: library/csv.rst:465 msgid "Added support of arbitrary iterables." diff --git a/library/ctypes.po b/library/ctypes.po index af3eef70..7b29ddb2 100644 --- a/library/ctypes.po +++ b/library/ctypes.po @@ -36,15 +36,14 @@ msgid "ctypes tutorial" msgstr "Didacticiel de *ctypes*" #: library/ctypes.rst:21 -#, fuzzy msgid "" "Note: The code samples in this tutorial use :mod:`doctest` to make sure that " "they actually work. Since some code samples behave differently under Linux, " "Windows, or macOS, they contain doctest directives in comments." msgstr "" -"Remarque : Les exemples de code de ce didacticiel utilisent :mod:`doctest` " +"Remarque : les exemples de code de ce didacticiel utilisent :mod:`doctest` " "pour s'assurer de leur propre bon fonctionnement. Vu que certains de ces " -"exemples ont un comportement différent en Linux, Windows ou Mac OS X, ils " +"exemples ont un comportement différent en Linux, Windows ou macOS, ils " "contiennent des directives *doctest* dans les commentaires." #: library/ctypes.rst:25 @@ -1613,12 +1612,11 @@ msgid "Here are some examples::" msgstr "Voici quelques exemples :" #: library/ctypes.rst:1291 -#, fuzzy msgid "" "On macOS, :func:`find_library` tries several predefined naming schemes and " "paths to locate the library, and returns a full pathname if successful::" msgstr "" -"Sous OS X, :func:`find_library` regarde dans des chemins et conventions de " +"Sous macOS, :func:`find_library` regarde dans des chemins et conventions de " "chemins prédéfinies pour trouver la bibliothèque et en renvoie le chemin " "complet si elle la trouve :" @@ -1680,12 +1678,22 @@ msgid "" "which DLL is not found, you need to find the list of dependent DLLs and " "determine which one is not found using Windows debugging and tracing tools." msgstr "" +"En Windows, créer une instance de :class:`CDLL` peut échouer, même si une " +"DLL du bon nom existe. Quand une des dépendances de la DLL à charger ne peut " +"pas être trouvée, une :exc:`OSError` est levée avec le message *\"[WinError " +"126] The specified module could not be found\".* Ce message d'erreur ne " +"contient pas le nom de la DLL manquante car l'API Windows ne fournit pas " +"cette information. Cela rend l'erreur délicate à analyser ; pour la " +"résoudre, il faut lister toutes les dépendances de la DLL et trouver celle " +"qui manque en utilisant des outils de débogage et de traçage Windows." #: library/ctypes.rst:1341 msgid "" "`Microsoft DUMPBIN tool `_ -- A tool to find DLL dependents." msgstr "" +"`DUMPBIN `_ — un " +"utilitaire Microsoft pour lister les dépendances d'une DLL." #: library/ctypes.rst:1347 msgid "" @@ -1884,7 +1892,7 @@ msgstr "" #: library/ctypes.rst:1456 msgid "The system handle used to access the library." -msgstr "" +msgstr "Le lien système d'accès à la bibliothèque." #: library/ctypes.rst:1461 msgid "The name of the library passed in the constructor." @@ -1969,14 +1977,12 @@ msgstr "" "utiliser." #: library/ctypes.rst:1521 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``ctypes.dlopen`` with argument " "``name``." msgstr "" -"Charger une bibliothèque à l'aide d'un de ces objets avec en argument " -"``name``, le nom de la bibliothèque (une chaîne de caractères), lève un :ref:" -"`évènement d'audit ` ``ctypes.dlopen``." +"Lève un :ref:`évènement d'audit ` ``ctypes.dlopen``, avec en " +"argument ``name``." #: library/ctypes.rst:1523 msgid "" @@ -2247,6 +2253,15 @@ msgid "" "decorator factories, and as such, be applied to functions through the " "``@wrapper`` syntax. See :ref:`ctypes-callback-functions` for examples." msgstr "" +"Il est aussi possible de créer des fonctions externes en instanciant des " +"prototypes de fonction. Les prototypes de fonction ressemblent beaucoup aux " +"prototypes de fonctions en C ; ils décrivent une fonction (type de retour, " +"type des arguments, convention d'appel) sans préciser son implémentation. " +"Les fabriques de fonctions prennent en entrée le type de retour et le type " +"des arguments de la fonction, et peuvent être utilisées comme des " +"décorateurs-fabrique et ainsi s'appliquer à des fonctions avec la syntaxe " +"``@décorateur``. Ceci est illustré dans la section :ref:`ctypes-callback-" +"functions`." #: library/ctypes.rst:1653 msgid "" @@ -2256,6 +2271,11 @@ msgid "" "`errno` variable is exchanged with the real :data:`errno` value before and " "after the call; *use_last_error* does the same for the Windows error code." msgstr "" +"Renvoie un prototype de fonction qui crée des fonctions qui suivent la " +"convention d'appel standard C. Les fonctions libèreront le GIL lors de leur " +"exécution. Si *use_errno* est vrai, la copie privée *ctypes* de la variable " +"système :data:`errno` est échangée avec la vraie valeur de :data:`errno` " +"avant et après l'appel ; *use_last_error* a le même effet sous Windows." #: library/ctypes.rst:1663 msgid "" @@ -2269,6 +2289,9 @@ msgid "" "The returned function prototype creates functions that use the Python " "calling convention. The function will *not* release the GIL during the call." msgstr "" +"Renvoie un prototype de fonction qui crée des fonctions qui suivent la " +"convention d'appel Python. Les fonctions ne libèreront *pas* le GIL lors de " +"leur exécution." #: library/ctypes.rst:1674 msgid "" @@ -2276,16 +2299,21 @@ msgid "" "in different ways, depending on the type and number of the parameters in the " "call:" msgstr "" +"Il y a plusieurs façons d'instancier les prototypes de fonction créés par " +"ces fabriques, selon le type et le nombre de paramètres de l'appel :" #: library/ctypes.rst:1682 msgid "" "Returns a foreign function at the specified address which must be an integer." msgstr "" +"Renvoie une fonction externe sur l'adresse donnée sous la forme d'un entier." #: library/ctypes.rst:1689 msgid "" "Create a C callable function (a callback function) from a Python *callable*." msgstr "" +"Crée une fonction appelable depuis du code C (une fonction de rappel) d'un " +"appelable Python donné en paramètre." #: library/ctypes.rst:1696 msgid "" @@ -2294,6 +2322,11 @@ msgid "" "exported function as string, or the ordinal of the exported function as " "small integer. The second item is the shared library instance." msgstr "" +"Renvoie une fonction externe exposée par une bibliothèque partagée. " +"*func_spec* est un couple ``(nom_ou_indice, bibliothèque)``. Le premier " +"élément est le nom de la fonction à passer comme une chaîne ou bien son " +"indice (dans la table des symboles) à passer comme un entier. Le second " +"élément est l'instance de la bibliothèque partagée." #: library/ctypes.rst:1706 msgid "" @@ -2302,6 +2335,11 @@ msgid "" "is name of the COM method. *iid* is an optional pointer to the interface " "identifier which is used in extended error reporting." msgstr "" +"Renvoie une fonction qui appelle une méthode COM. *vtbl_index* est l'indice " +"de la fonction dans la table virtuelle, un petit entier positif. *name* est " +"le nom de la méthode COM. *iid* est un pointeur optionnel vers " +"l'identificateur de plateforme, qui est utilisé dans la remontée d'erreurs " +"étendue." #: library/ctypes.rst:1711 msgid "" @@ -2309,28 +2347,39 @@ msgid "" "COM interface as first argument, in addition to those parameters that are " "specified in the :attr:`argtypes` tuple." msgstr "" +"Les méthodes COM ont une convention d'appel particulière : elles requièrent " +"de passer un pointeur vers l'interface COM en premier argument, en sus des " +"arguments passés dans le *n*-uplet :attr:`argtypes`." #: library/ctypes.rst:1715 msgid "" "The optional *paramflags* parameter creates foreign function wrappers with " "much more functionality than the features described above." msgstr "" +"Le paramètre optionnel *paramflags* crée une fabrique de fonction externes " +"avec des fonctionnalités supplémentaires par rapport à celles décrites ci-" +"dessus." #: library/ctypes.rst:1718 msgid "*paramflags* must be a tuple of the same length as :attr:`argtypes`." -msgstr "" +msgstr "*paramflags* est un *n*-uplet de la même taille que :attr:`argtypes`." #: library/ctypes.rst:1720 msgid "" "Each item in this tuple contains further information about a parameter, it " "must be a tuple containing one, two, or three items." msgstr "" +"Chaque élément de ce *n*-uplet contient des informations supplémentaires sur " +"le paramètre correspondant. Ce doit être aussi un *n*-uplet, avec un, deux " +"ou trois éléments." #: library/ctypes.rst:1723 msgid "" "The first item is an integer containing a combination of direction flags for " "the parameter:" msgstr "" +"Le premier élément est un entier qui contient une combinaison de drapeaux " +"qui précisent le sens des paramètres (entrée ou sortie) :" #: library/ctypes.rst:1727 msgid "1" @@ -2338,7 +2387,7 @@ msgstr "1" #: library/ctypes.rst:1727 msgid "Specifies an input parameter to the function." -msgstr "" +msgstr "Paramètre d'entrée." #: library/ctypes.rst:1730 msgid "2" @@ -2346,7 +2395,7 @@ msgstr "2" #: library/ctypes.rst:1730 msgid "Output parameter. The foreign function fills in a value." -msgstr "" +msgstr "Paramètre de sortie. La fonction externe va modifier cette valeur." #: library/ctypes.rst:1733 msgid "4" @@ -2354,17 +2403,21 @@ msgstr "4" #: library/ctypes.rst:1733 msgid "Input parameter which defaults to the integer zero." -msgstr "" +msgstr "Paramètre d'entrée, valant 0 par défaut." #: library/ctypes.rst:1735 msgid "" "The optional second item is the parameter name as string. If this is " "specified, the foreign function can be called with named parameters." msgstr "" +"Le deuxième élément (optionnel) est une chaîne de caractères représentant le " +"nom du paramètre. Si cet élément est donné, la fonction externe pourra être " +"appelée avec des paramètres nommés." #: library/ctypes.rst:1738 msgid "The optional third item is the default value for this parameter." msgstr "" +"Le troisième élément (optionnel) est la valeur par défaut du paramètre." #: library/ctypes.rst:1740 msgid "" @@ -2372,14 +2425,20 @@ msgid "" "so that it supports default parameters and named arguments. The C " "declaration from the windows header file is this::" msgstr "" +"L'exemple suivant montre comment encapsuler la fonction Windows " +"``MessageBoxW`` afin que celle-ci prenne en charge des paramètres par défaut " +"et des arguments nommés. Sa déclaration C dans le fichier d'en-tête des " +"fenêtres est ::" #: library/ctypes.rst:1774 msgid "Here is the wrapping with :mod:`ctypes`::" -msgstr "" +msgstr "L'encapsulation :mod:`ctypes` correspondante est alors ::" #: library/ctypes.rst:1759 msgid "The ``MessageBox`` foreign function can now be called in these ways::" msgstr "" +"La fonction ``MessageBox`` peut désormais être appelée des manières " +"suivantes ::" #: library/ctypes.rst:1765 msgid "" @@ -2388,6 +2447,9 @@ msgid "" "copying them into ``RECT`` structure that the caller has to supply. Here is " "the C declaration::" msgstr "" +"L'exemple qui suit traite des paramètres en sortie. La fonction win32 " +"``GetWindowRect`` donne les dimensions d'une fenêtre en les copiant dans une " +"structure ``RECT`` que l'appelant doit fournir. Sa déclaration en C est ::" #: library/ctypes.rst:1783 msgid "" @@ -2396,6 +2458,11 @@ msgid "" "parameter values when there are more than one, so the GetWindowRect function " "now returns a RECT instance, when called." msgstr "" +"Les fonctions avec des paramètres en sortie renvoient automatiquement la " +"valeur du paramètre de sortie s'il n'y en a qu'un seul, ou un *n*-uplet avec " +"les valeurs de sortie de chaque paramètre s'il y en a plusieurs. Ici, la " +"fonction *GetWindowRect* renvoie donc une instance de *RECT* quand elle est " +"appelée." #: library/ctypes.rst:1788 msgid "" @@ -2405,6 +2472,11 @@ msgid "" "function could do the error checking, and raises an exception when the api " "call failed::" msgstr "" +"Il est possible de combiner des paramètres en sortie avec le protocole :attr:" +"`errcheck` pour post-traiter les sorties et faire de la vérification " +"d'erreur. La fonction de l'API win32 ``GetWindowRect`` renvoie un ``BOOL`` " +"pour indiquer le succès ou l'échec de l'exécution, donc cette fonction peut " +"vérifier le résultat et lever une exception quand l'appel à l'API a échoué ::" #: library/ctypes.rst:1801 msgid "" @@ -2414,6 +2486,12 @@ msgid "" "instead of a ``RECT`` instance, you can retrieve the fields in the function " "and return them instead, the normal processing will no longer take place::" msgstr "" +"Si la fonction :attr:`errcheck` renvoie le *n*-uplet passé en paramètre sans " +"rien y changer, :mod:`ctypes` continue l'exécution habituelle des paramètres " +"en sortie. Si on préfère renvoyer un *n*-uplet de coordonnées au lieu de " +"renvoyer une instance de ``RECT``, il faut récupérer les champs " +"correspondants et les renvoyer en retour. Dans ce cas, l'exécution " +"habituelle n'a plus lieu ::" #: library/ctypes.rst:1820 msgid "Utility functions" diff --git a/library/dataclasses.po b/library/dataclasses.po index ec8a3853..296a83d7 100644 --- a/library/dataclasses.po +++ b/library/dataclasses.po @@ -36,19 +36,18 @@ msgstr "" "l’utilisateur. Ces classes ont été décrites dans la :pep:`557`." #: library/dataclasses.rst:19 -#, fuzzy msgid "" "The member variables to use in these generated methods are defined using :" "pep:`526` type annotations. For example, this code::" msgstr "" "Les variables membres à utiliser dans ces méthodes générées sont définies en " -"utilisant les annotations de type :pep:`526`. Par exemple, ce code ::" +"utilisant les annotations de type :pep:`526`. Par exemple ::" #: library/dataclasses.rst:34 -#, fuzzy msgid "will add, among other things, a :meth:`__init__` that looks like::" msgstr "" -"Ajoute, entre autres choses, une méthode :meth:`__init__` qui ressemble à ::" +"ce code ajoute à la classe, entre autres choses, une méthode :meth:" +"`__init__` qui ressemble à ::" #: library/dataclasses.rst:41 msgid "" @@ -73,18 +72,17 @@ msgstr "" "décrit ci-dessous." #: library/dataclasses.rst:54 -#, fuzzy msgid "" "The :func:`dataclass` decorator examines the class to find ``field``\\s. A " "``field`` is defined as a class variable that has a :term:`type annotation " "`. With two exceptions described below, nothing in :" "func:`dataclass` examines the type specified in the variable annotation." msgstr "" -"Le décorateur :func:`dataclass` examine la classe pour trouver des " -"``champs``\\s. Un ``champ`` est défini comme une variable de classe qui " -"possède une :term:`annotation de type `. À deux " -"exceptions près décrites plus bas, il n’y a rien dans :func:`dataclass` qui " -"examine le type spécifié dans l’annotation de variable." +"Le décorateur :func:`dataclass` examine la classe pour trouver des champs. " +"Un champ est défini comme une variable de classe qui possède une :term:" +"`annotation de type `. À deux exceptions près décrites " +"plus bas, :func:`dataclass` ne prend pas en considération le type donné dans " +"l'annotation." #: library/dataclasses.rst:60 msgid "" @@ -95,7 +93,6 @@ msgstr "" "champs dans la définition de la classe." #: library/dataclasses.rst:63 -#, fuzzy msgid "" "The :func:`dataclass` decorator will add various \"dunder\" methods to the " "class, described below. If any of the added methods already exist in the " @@ -103,11 +100,10 @@ msgid "" "decorator returns the same class that it is called on; no new class is " "created." msgstr "" -"Le décorateur :func:`dataclass` ajoute diverses méthodes « spéciales » à la " +"Le décorateur :func:`dataclass` ajoute diverses méthodes spéciales à la " "classe, décrites ci-après. Si l’une des méthodes ajoutées existe déjà dans " -"la classe, le comportement dépend des paramètres, comme documenté ci-" -"dessous. Le décorateur renvoie la classe sur laquelle il est appelé ; il n’y " -"a pas de nouvelle classe créée." +"la classe, le comportement dépend des paramètres. Le décorateur renvoie la " +"classe sur laquelle il est appelé ; aucune nouvelle classe n'est créée." #: library/dataclasses.rst:69 msgid "" @@ -243,7 +239,6 @@ msgstr "" "de :meth:`__hash__`." #: library/dataclasses.rst:139 -#, fuzzy msgid "" "If :meth:`__hash__` is not explicitly defined, or if it is set to ``None``, " "then :func:`dataclass` *may* add an implicit :meth:`__hash__` method. " @@ -254,11 +249,12 @@ msgid "" msgstr "" "Si :meth:`__hash__` n’est pas défini explicitement, ou s’il a pour valeur " "``None``, alors :func:`dataclass` *peut* ajouter une méthode :meth:" -"`__hash__` implicite. Bien que ce ne soit pas recommandé,, vous pouvez " +"`__hash__` implicite. Bien que ce ne soit pas recommandé, vous pouvez " "forcer :func:`dataclass` à créer une méthode :meth:`__hash__` en utilisant " "``unsafe_hash=True``. Cela pourrait être nécessaire si votre classe est " -"logiquement immuable mais qu’une mutation est tout de même possible. C’est " -"un cas très particulier qui doit être considéré avec la plus grande prudence." +"logiquement immuable mais qu’une mutation est tout de même possible. Il " +"s'agit là d'un cas particulier qui doit être considéré avec la plus grande " +"prudence." #: library/dataclasses.rst:146 msgid "" @@ -292,14 +288,13 @@ msgstr "" "basé sur les id)." #: library/dataclasses.rst:159 -#, fuzzy msgid "" "``frozen``: If true (the default is ``False``), assigning to fields will " "generate an exception. This emulates read-only frozen instances. If :meth:" "`__setattr__` or :meth:`__delattr__` is defined in the class, then :exc:" "`TypeError` is raised. See the discussion below." msgstr "" -"``frozen``: Si vrai (faux par défaut), assigner une valeur à un champ lèvera " +"*frozen* : si vrai (faux par défaut), assigner une valeur à un champ lève " "une exception. Cela simule le comportement des instances figées en lecture " "seule. Si la méthode :meth:`__setattr__` ou :meth:`__delattr__` est définie " "sur la classe, alors une :exc:`TypeError` est levée. Voir la discussion ci-" @@ -322,7 +317,6 @@ msgstr "" "la méthode générée :meth:`__init__`, qui est définie comme suit ::" #: library/dataclasses.rst:177 -#, fuzzy msgid "" ":exc:`TypeError` will be raised if a field without a default value follows a " "field with a default value. This is true whether this occurs in a single " @@ -330,8 +324,7 @@ msgid "" msgstr "" "Une :exc:`TypeError` est levée si un champ sans valeur par défaut est défini " "après un champ avec une valeur par défaut. C’est le cas que ce soit dans " -"une seule classe, mais également si c’est le résultat d’un héritage de " -"classes." +"une seule classe ou si c’est le résultat d’un héritage de classes." #: library/dataclasses.rst:183 msgid "" @@ -341,6 +334,11 @@ msgid "" "replace the default field value with a call to the provided :func:`field` " "function. For example::" msgstr "" +"Dans les cas les plus simples et courants, ce qui a été décrit jusqu'ici " +"suffit. Cependant, les classes de données possèdent des fonctionnalités " +"supplémentaires fondées sur des métadonnées propres à chaque champ. Pour " +"remplir ces métadonnées, il suffit de mettre un appel à la fonction :func:" +"`field` à la place de la valeur par défaut, comme dans cet exemple :" #: library/dataclasses.rst:196 msgid "" @@ -352,7 +350,7 @@ msgstr "" #: library/dataclasses.rst:202 msgid "The parameters to :func:`field` are:" -msgstr "" +msgstr "Les paramètres de :func:`field` sont :" #: library/dataclasses.rst:204 msgid "" @@ -360,6 +358,9 @@ msgid "" "This is needed because the :meth:`field` call itself replaces the normal " "position of the default value." msgstr "" +"*default* : s'il est fourni, il devient la valeur par défaut du champ. " +"L'appel à :meth:`field` est mis à la place normale de la valeur par défaut, " +"d'où la nécessité de ce paramètre." #: library/dataclasses.rst:208 msgid "" @@ -369,24 +370,36 @@ msgid "" "discussed below. It is an error to specify both ``default`` and " "``default_factory``." msgstr "" +"*default_factory* : s'il est fourni, ce doit être un objet appelable sans " +"argument. Il est alors appelé à chaque fois qu'il faut une valeur par défaut " +"pour le champ. Ceci permet, entre autres choses, de définir des champs dont " +"les valeurs par défaut sont muables. Une erreur se produit si *default* et " +"*default_factory* sont donnés tous les deux." #: library/dataclasses.rst:214 msgid "" "``init``: If true (the default), this field is included as a parameter to " "the generated :meth:`__init__` method." msgstr "" +"*init* : si vrai (par défaut), la méthode :meth:`__init__` générée possède " +"un paramètre correspondant à ce champ." #: library/dataclasses.rst:217 msgid "" "``repr``: If true (the default), this field is included in the string " "returned by the generated :meth:`__repr__` method." msgstr "" +"*repr* : si vrai (par défaut), le champ est inclus dans les chaînes " +"construites par la méthode :meth:`__repr__` générée." #: library/dataclasses.rst:220 msgid "" "``compare``: If true (the default), this field is included in the generated " "equality and comparison methods (:meth:`__eq__`, :meth:`__gt__`, et al.)." msgstr "" +"*compare* : si vrai (par défaut), le champ est considéré dans les " +"comparaisons d'égalité et d'inégalité dans les méthodes générées :meth:" +"`__eq__`, :meth:`__gt__`, etc." #: library/dataclasses.rst:224 msgid "" @@ -396,6 +409,12 @@ msgid "" "field should be considered in the hash if it's used for comparisons. " "Setting this value to anything other than ``None`` is discouraged." msgstr "" +"*hash* : ce paramètre est un booléen ou ``None``. La valeur ``False`` force " +"la prise en compte du champ dans la méthode :meth:`__hash__` générée, alors " +"que ``False`` force son exclusion. ``None`` revient à mettre la même valeur " +"que *compare*, ce qui est en général correct : il faut inclure dans le " +"hachage les champs employés pour les comparaisons. Il est déconseillé de " +"mettre ce paramètre à autre chose que ``None``." #: library/dataclasses.rst:231 msgid "" @@ -405,6 +424,12 @@ msgid "" "hash value. Even if a field is excluded from the hash, it will still be " "used for comparisons." msgstr "" +"Cependant, une raison légitime de mettre *hash* à ``False`` alors que " +"*compare* est à ``True`` est la concourance de trois facteurs : le champ est " +"coûteux à hacher ; il est nécessaire pour les comparaisons d'égalité ; et il " +"y a déjà d'autres champs qui participent au hachage des instances. À ce " +"moment, on peut alors se passer du champ dans le hachage tout en le faisant " +"participer aux comparaisons." #: library/dataclasses.rst:237 msgid "" @@ -415,6 +440,10 @@ msgid "" "Multiple third-parties can each have their own key, to use as a namespace in " "the metadata." msgstr "" +"*metadata* : ce paramètre est un tableau associatif (*mapping* en anglais). " +"La valeur par défaut de ``None`` est prise comme un dictionnaire vide. Le " +"tableau associatif devient accessible sur l'objet :class:`Field`, sous la " +"forme d'un :func:`~types.MappingProxyType` afin qu'il soit en lecture seule." #: library/dataclasses.rst:245 msgid "" @@ -426,12 +455,22 @@ msgid "" "fields, just as if the default value itself were specified. For example, " "after::" msgstr "" +"Si la valeur par défaut d'un champ est donnée dans un appel à :func:`field` " +"(et pas directement), l'attribut correspondant de la classe est remplacé par " +"cette valeur. Si le paramètre *default* n'est pas passé, l'attribut est " +"simplement supprimé. De cette manière, après le passage du décorateur :func:" +"`dataclass`, les attributs de la classe contiennent les valeurs par défaut " +"des champs exactement comme si elles avaient été définies directement. Par " +"exemple :" #: library/dataclasses.rst:261 msgid "" "The class attribute ``C.z`` will be ``10``, the class attribute ``C.t`` will " "be ``20``, and the class attributes ``C.x`` and ``C.y`` will not be set." msgstr "" +"Après l'exécution de ce code, l'attribut de classe ``C.z`` vaut ``10`` et " +"l'attribut ``C.t`` vaut ``20``, alors que les attributs ``C.x`` et ``C.y`` " +"n'existent pas." #: library/dataclasses.rst:267 msgid "" @@ -440,14 +479,19 @@ msgid "" "method (see below). Users should never instantiate a :class:`Field` object " "directly. Its documented attributes are:" msgstr "" +"Les objets :class:`Field` contiennent des informations sur les champs. Ils " +"sont créés en interne, et on y accède à l'aide de la méthode au niveau du " +"module :func:`fields` (voir plus bas). Les utilisateurs ne doivent jamais " +"instancier un objet :class:`Field` eux-mêmes. Les attributs documentés sont " +"les suivants :" #: library/dataclasses.rst:272 msgid "``name``: The name of the field." -msgstr "" +msgstr "*name* : le nom du champ ;" #: library/dataclasses.rst:274 msgid "``type``: The type of the field." -msgstr "" +msgstr "*type* : le type associé au champ par l'annotation ;" #: library/dataclasses.rst:276 msgid "" @@ -461,6 +505,8 @@ msgid "" "Other attributes may exist, but they are private and must not be inspected " "or relied on." msgstr "" +"D'autres attributs peuvent exister, mais ils sont privés et ne sont pas " +"censés être inspectés. Le code ne doit jamais reposer sur eux." #: library/dataclasses.rst:285 msgid "" @@ -469,6 +515,11 @@ msgid "" "Raises :exc:`TypeError` if not passed a dataclass or instance of one. Does " "not return pseudo-fields which are ``ClassVar`` or ``InitVar``." msgstr "" +"Renvoie un *n*-uplet d'objets :class:`Field` correspondant aux champs de " +"l'argument, à l'exclusion des pseudo-champs ``ClassVar`` ou ``InitVar``. " +"L'argument peut être soit une classe de données, soit une instance d'une " +"telle classe ; si ce n'est pas le cas, une exception :exc:`TypeError` est " +"levée." #: library/dataclasses.rst:292 msgid "" @@ -477,20 +528,31 @@ msgid "" "``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed " "into. Other objects are copied with :func:`copy.deepcopy`." msgstr "" +"Convertit la classe de données ``obj`` en un dictionnaire (en utilisant la " +"fonction ``dict_factory``). Les clés et valeurs proviennent directement des " +"champs. Les dictionnaires, listes, *n*-uplets et instances de classes de " +"données sont parcourus récursivement. Les autres objets sont copiés avec :" +"func:`copy.deepcopy`." #: library/dataclasses.rst:298 msgid "Example of using :func:`asdict` on nested dataclasses::" msgstr "" +"Exemple d'utilisation de :func:`asdict` sur des classes de données " +"imbriquées ::" #: library/dataclasses.rst:335 msgid "To create a shallow copy, the following workaround may be used::" msgstr "" +"Pour créer une copie superficielle, la solution de contournement suivante " +"peut être utilisée ::" #: library/dataclasses.rst:319 msgid "" ":func:`asdict` raises :exc:`TypeError` if ``obj`` is not a dataclass " "instance." msgstr "" +":func:`asdict` lève :exc:`TypeError` si ``obj`` n'est pas une instance d'une " +"classe de données." #: library/dataclasses.rst:324 msgid "" @@ -499,16 +561,23 @@ msgid "" "values. dataclasses, dicts, lists, and tuples are recursed into. Other " "objects are copied with :func:`copy.deepcopy`." msgstr "" +"Convertit l'instance d'une classe de données ``obj`` en un *n*-uplet (en " +"utilisant la fonction ``tuple_factory``). Chaque classe de données est " +"convertie vers un *n*-uplet des valeurs de ses champs. Cette fonction agit " +"récursivement sur les dictionnaires, listes et *n*-uplets. Les autres objets " +"sont copiés avec :func:`copy.deepcopy`." #: library/dataclasses.rst:330 msgid "Continuing from the previous example::" -msgstr "" +msgstr "Pour continuer l'exemple précédent :" #: library/dataclasses.rst:339 msgid "" ":func:`astuple` raises :exc:`TypeError` if ``obj`` is not a dataclass " "instance." msgstr "" +":func:`astuple` lève :exc:`TypeError` si ``obj`` n'est pas une instance " +"d'une classe de données." #: library/dataclasses.rst:344 msgid "" @@ -529,10 +598,14 @@ msgid "" "`dataclass` function to convert that class to a dataclass. This function is " "provided as a convenience. For example::" msgstr "" +"Cette fonction est pratique mais pas absolument nécessaire, puisqu'il suffit " +"de créer par un moyen quelconque une classe avec l'attribut " +"``__annotation__`` et de lui appliquer la fonction :func:`dataclass`, qui la " +"convertit en une classe de données. Par exemple, ceci :" #: library/dataclasses.rst:365 msgid "Is equivalent to::" -msgstr "" +msgstr "est équivalent à ::" #: library/dataclasses.rst:378 msgid "" @@ -541,6 +614,10 @@ msgid "" "`TypeError`. If values in ``changes`` do not specify fields, raises :exc:" "`TypeError`." msgstr "" +"Crée un nouvel objet du même type que ``obj`` en affectant aux champs les " +"valeurs données par ``changes``. Si ``obj`` n'est pas une classe de " +"données, :exc:`TypeError` est levée. Si une clé dans ``changes`` ne " +"correspond à aucun champ de l'instance, :exc:`TypeError` est levée." #: library/dataclasses.rst:383 msgid "" @@ -548,6 +625,9 @@ msgid "" "of the dataclass. This ensures that :meth:`__post_init__`, if present, is " "also called." msgstr "" +"L'objet renvoyé est créé à l'aide de la méthode :meth:`__init__` de la " +"classe de données, ce qui garantit que :meth:`__post_init__` est appelée (si " +"elle existe)." #: library/dataclasses.rst:387 msgid "" @@ -555,12 +635,17 @@ msgid "" "on the call to :func:`replace` so that they can be passed to :meth:" "`__init__` and :meth:`__post_init__`." msgstr "" +"Si un champ d'initialisation (voir plus bas) n'a pas de valeur par défaut, " +"il faut l'inclure dans l'appel à :func:`replace` afin qu'il soit passé à :" +"meth:`__init__` et :meth:`__post_init__`." #: library/dataclasses.rst:391 msgid "" "It is an error for ``changes`` to contain any fields that are defined as " "having ``init=False``. A :exc:`ValueError` will be raised in this case." msgstr "" +"Si une clé de *changes* correspond à un champ défini avec ``init=False``, :" +"exc:`ValueError` est levée." #: library/dataclasses.rst:395 msgid "" @@ -572,12 +657,21 @@ msgid "" "perhaps a custom ``replace()`` (or similarly named) method which handles " "instance copying." msgstr "" +"Prenez garde aux champs définis avec ``init=False`` dans un appel à :func:" +"`replace`. Ils ne sont pas copiés automatiquement de l'instance source. " +"C'est le rôle de :meth:`__post_init__` de les initialiser — ou pas. Les " +"champs avec ``init=False`` doivent rarement être utilisés et seulement à bon " +"escient. Si vous en avez, il peut être sage de traiter la copie des " +"instances par des constructeurs de classe alternatifs, ou bien une méthode " +"personnalisée ``replace()`` (ou un nom similaire)." #: library/dataclasses.rst:406 msgid "" "Return ``True`` if its parameter is a dataclass or an instance of one, " "otherwise return ``False``." msgstr "" +"Renvoie ``True`` si l'argument est soit une classe de données, soit une " +"instance d'une telle classe. Sinon, renvoie ``False``." #: library/dataclasses.rst:409 msgid "" @@ -585,10 +679,13 @@ msgid "" "dataclass itself), then add a further check for ``not isinstance(obj, " "type)``::" msgstr "" +"Pour vérifier qu'un objet *obj* est une instance d'une classe de données, et " +"non pas lui-même une classe de données, ajoutez le test ``not " +"isinstance(obj, type)`` ::" #: library/dataclasses.rst:417 msgid "Post-init processing" -msgstr "" +msgstr "Post-initialisation" #: library/dataclasses.rst:419 msgid "" @@ -599,12 +696,21 @@ msgid "" "order they were defined in the class. If no :meth:`__init__` method is " "generated, then :meth:`__post_init__` will not automatically be called." msgstr "" +"Après avoir initialisé l'objet, la méthode :meth:`__init__` générée appelle " +"la méthode :meth:`__post_init__`, si elle est définie. :meth:`__post_init__` " +"est habituellement appelée avec un simple ``self.__post_init__()``. " +"Cependant, si la classe comporte des champs d'initialisation (voir plus " +"bas), leurs valeurs sont aussi passées à :meth:`__post_init__` telles " +"qu'elles ont été fournies à :meth:`__init__`. Si la classe est créée avec " +"``init=False``, :meth:`__post_init__` n'est jamais appelée automatiquement." #: library/dataclasses.rst:427 msgid "" "Among other uses, this allows for initializing field values that depend on " "one or more other fields. For example::" msgstr "" +"Cette méthode permet, entre autres, d'initialiser des champs qui dépendent " +"d'autres champs. Par exemple :" #: library/dataclasses.rst:439 msgid "" @@ -613,6 +719,10 @@ msgid "" "`__init__` method that has to be called, it is common to call this method in " "a :meth:`__post_init__` method::" msgstr "" +"Les méthodes :meth:`__init__` des classes mères ne sont pas appelées " +"automatiquement par la méthode :meth:`__init__` que génère :func:" +"`dataclass`. S'il faut appeler ces méthodes :meth:`__init__`, il est courant " +"de le faire dans :meth:`__post_init__` :" #: library/dataclasses.rst:456 msgid "" @@ -620,6 +730,10 @@ msgid "" "methods don't need to be called, since the derived dataclass will take care " "of initializing all fields of any base class that is a dataclass itself." msgstr "" +"Notez toutefois qu'il n'est généralement pas nécessaire d'appeler une " +"méthode :meth:`__init__` si elle a été générée automatiquement dans une " +"classe de données, car la classe fille initialise elle-même les champs " +"apportés par toute classe mère qui est aussi une classe de données." #: library/dataclasses.rst:460 msgid "" @@ -627,10 +741,14 @@ msgid "" "meth:`__post_init__`. Also see the warning about how :func:`replace` " "handles ``init=False`` fields." msgstr "" +"Voir la section plus bas à propos des variables d'initialisation pour les " +"moyens de passer des paramètres à :meth:`__post_init__`. Voir également " +"l'avertissement sur le traitement par :func:`replace` des champs définis " +"avec ``init=False``." #: library/dataclasses.rst:465 msgid "Class variables" -msgstr "" +msgstr "Variables de classe" #: library/dataclasses.rst:467 msgid "" @@ -644,7 +762,7 @@ msgstr "" #: library/dataclasses.rst:476 msgid "Init-only variables" -msgstr "" +msgstr "Variables d'initialisation" #: library/dataclasses.rst:478 msgid "" @@ -663,16 +781,20 @@ msgid "" "For example, suppose a field will be initialized from a database, if a value " "is not provided when creating the class::" msgstr "" +"On peut par exemple imaginer un champ initialisé à partir d'une base de " +"données s'il n'a pas reçu de valeur explicite :" #: library/dataclasses.rst:503 msgid "" "In this case, :func:`fields` will return :class:`Field` objects for ``i`` " "and ``j``, but not for ``database``." msgstr "" +"Ici, :func:`fields` renvoie des objets :class:`Field` correspondant à ``i`` " +"et à ``j``, mais pas à ``database``." #: library/dataclasses.rst:507 msgid "Frozen instances" -msgstr "" +msgstr "Instances figées" #: library/dataclasses.rst:509 msgid "" @@ -682,6 +804,11 @@ msgid "" "meth:`__delattr__` methods to the class. These methods will raise a :exc:" "`FrozenInstanceError` when invoked." msgstr "" +"Bien qu'il ne soit pas possible de créer des objets Python strictement " +"immuables, on peut rendre les instances d'une classe de données quasi " +"immuables en passant ``frozen=True`` au décorateur :meth:`dataclass`, ce qui " +"lui fait générer des méthodes :meth:`__setattr__` et :meth:`__delattr__`. " +"Celles-ci lèvent systématiquement l'exception :exc:`FrozenInstanceError`." #: library/dataclasses.rst:515 msgid "" @@ -689,6 +816,9 @@ msgid "" "`__init__` cannot use simple assignment to initialize fields, and must use :" "meth:`object.__setattr__`." msgstr "" +"Les performances sont légèrement moins bonnes avec ``frozen=True`` car :meth:" +"`__init__` doit passer par :meth:`object.__setattr__` au lieu de simples " +"affectations pour initialiser les champs." #: library/dataclasses.rst:520 msgid "Inheritance" @@ -705,20 +835,30 @@ msgid "" "ordered mapping of fields. Because the fields are in insertion order, " "derived classes override base classes. An example::" msgstr "" +"Au moment de la création d'une classe de données, le décorateur :meth:" +"`dataclass` parcourt toutes les classes mères dans l'ordre inverse de " +"résolution des méthodes (donc en commençant par :class:`object`). À chaque " +"fois qu'une classe de données est rencontrée, ses champs sont insérés dans " +"un tableau associatif ordonné. Pour finir, les champs de la classe elle-même " +"sont rajoutés. Toutes les méthodes générées utilisent en interne ce même " +"tableau associatif. Puisqu'il est ordonné, les champs des classes filles " +"écrasent ceux des classes mères. Voici un exemple :" #: library/dataclasses.rst:542 msgid "" "The final list of fields is, in order, ``x``, ``y``, ``z``. The final type " "of ``x`` is ``int``, as specified in class ``C``." msgstr "" +"La liste finale des champs contient, dans l'ordre, ``x``, ``y``, ``z``. Le " +"type de ``x`` est ``int``, comme déclaré dans ``C``." #: library/dataclasses.rst:545 msgid "The generated :meth:`__init__` method for ``C`` will look like::" -msgstr "" +msgstr "La méthode :meth:`__init__` générée pour ``C`` ressemble à :" #: library/dataclasses.rst:550 msgid "Default factory functions" -msgstr "" +msgstr "Fabriques de valeurs par défaut" #: library/dataclasses.rst:552 msgid "" @@ -726,6 +866,9 @@ msgid "" "arguments when a default value for the field is needed. For example, to " "create a new instance of a list, use::" msgstr "" +"Le paramètre facultatif *default_factory* de :func:`field` est une fonction " +"qui est appelée sans argument pour fournir des valeurs par défaut. Par " +"exemple, voici comment donner la valeur par défaut d'une liste vide :" #: library/dataclasses.rst:558 msgid "" @@ -734,30 +877,38 @@ msgid "" "will always be called from the generated :meth:`__init__` function. This " "happens because there is no other way to give the field an initial value." msgstr "" +"Si un champ avec fabrique est exclu de :meth:`__init__` (par " +"``init=False``), alors la fabrique est appelée par :meth:`__init__` pour " +"chaque nouvelle instance, puisque c'est le seul moyen d'obtenir une valeur à " +"laquelle initialiser le champ." #: library/dataclasses.rst:565 msgid "Mutable default values" -msgstr "" +msgstr "Valeurs par défaut muables" #: library/dataclasses.rst:567 msgid "" "Python stores default member variable values in class attributes. Consider " "this example, not using dataclasses::" msgstr "" +"En Python, les valeurs par défaut des attributs sont stockées dans des " +"attributs de la classe. Observez cet exemple, sans classe de données :" #: library/dataclasses.rst:582 msgid "" "Note that the two instances of class ``C`` share the same class variable " "``x``, as expected." msgstr "" +"Comme attendu, les deux instances de ``C`` partagent le même objet pour " +"l'attribut ``x``." #: library/dataclasses.rst:585 msgid "Using dataclasses, *if* this code was valid::" -msgstr "" +msgstr "Avec les classes de données, si ce code était valide :" #: library/dataclasses.rst:593 msgid "it would generate code similar to::" -msgstr "" +msgstr "il générerait un code équivalent à :" #: library/dataclasses.rst:604 msgid "" @@ -776,6 +927,8 @@ msgid "" "Using default factory functions is a way to create new instances of mutable " "types as default values for fields::" msgstr "" +"Pour qu'un champ d'un type muable soit par défaut initialisé à un nouvel " +"objet pour chaque instance, utilisez une fonction de fabrique :" #: library/dataclasses.rst:624 msgid "Exceptions" @@ -787,3 +940,6 @@ msgid "" "is called on a dataclass which was defined with ``frozen=True``. It is a " "subclass of :exc:`AttributeError`." msgstr "" +"Sous-classe de :exc:`AttributeError`, levée lorsqu'une méthode :meth:" +"`__setattr__` ou :meth:`__delattr__` définie implicitement est appelée dans " +"une classe de données définie avec ``frozen=True``." diff --git a/library/datetime.po b/library/datetime.po index 675e188d..951951a5 100644 --- a/library/datetime.po +++ b/library/datetime.po @@ -3131,7 +3131,7 @@ msgstr "" #: library/datetime.rst:2186 msgid ":mod:`zoneinfo`" -msgstr "" +msgstr ":mod:`zoneinfo`" #: library/datetime.rst:2181 #, fuzzy diff --git a/library/dbm.po b/library/dbm.po index eaacdea1..3f5fca73 100644 --- a/library/dbm.po +++ b/library/dbm.po @@ -162,7 +162,7 @@ msgstr "" #: library/dbm.rst:121 msgid "Module :mod:`shelve`" -msgstr "" +msgstr "Module :mod:`shelve`" #: library/dbm.rst:122 msgid "Persistence module which stores non-string data." diff --git a/library/decimal.po b/library/decimal.po index 72352545..667532f2 100644 --- a/library/decimal.po +++ b/library/decimal.po @@ -708,24 +708,33 @@ msgid "" "otherwise. Currently, a :class:`Decimal` instance is always canonical, so " "this operation always returns :const:`True`." msgstr "" +"Renvoie :const:`True` si l'argument est sous forme canonique et :const:" +"`False` sinon. Actuellement, une instance :class:`Decimal` est toujours " +"canonique, donc cette opération renvoie toujours :const:`True`." #: library/decimal.rst:616 msgid "" "Return :const:`True` if the argument is a finite number, and :const:`False` " "if the argument is an infinity or a NaN." msgstr "" +"Renvoie :const:`True` si l'argument est un nombre fini et :const:`False` si " +"l'argument est un infini ou NaN." #: library/decimal.rst:621 msgid "" "Return :const:`True` if the argument is either positive or negative infinity " "and :const:`False` otherwise." msgstr "" +"Renvoie :const:`True` si l'argument est un infini positif ou négatif et :" +"const:`False` sinon." #: library/decimal.rst:626 msgid "" "Return :const:`True` if the argument is a (quiet or signaling) NaN and :" "const:`False` otherwise." msgstr "" +"Renvoie :const:`True` si l'argument est un NaN (signalétique ou silencieux) " +"et :const:`False` sinon." #: library/decimal.rst:631 msgid "" @@ -738,18 +747,24 @@ msgid "" "Return :const:`True` if the argument is a quiet NaN, and :const:`False` " "otherwise." msgstr "" +"Renvoie :const:`True` si l'argument est un NaN silencieux et :const:`False` " +"sinon." #: library/decimal.rst:641 msgid "" "Return :const:`True` if the argument has a negative sign and :const:`False` " "otherwise. Note that zeros and NaNs can both carry signs." msgstr "" +"Renvoie :const:`True` si l'argument est négatif et :const:`False` sinon. " +"Notez que les zéros et les NaNs peuvent être signés." #: library/decimal.rst:646 msgid "" "Return :const:`True` if the argument is a signaling NaN and :const:`False` " "otherwise." msgstr "" +"Renvoie :const:`True` si l'argument est un NaN signalétique et :const:" +"`False` sinon." #: library/decimal.rst:651 msgid "" @@ -762,18 +777,24 @@ msgid "" "Return :const:`True` if the argument is a (positive or negative) zero and :" "const:`False` otherwise." msgstr "" +"Renvoie :const:`True` si l'argument est un zéro (positif ou négatif) et :" +"const:`False` sinon." #: library/decimal.rst:661 msgid "" "Return the natural (base e) logarithm of the operand. The result is " "correctly rounded using the :const:`ROUND_HALF_EVEN` rounding mode." msgstr "" +"Renvoie le logarithme naturel (base e) de l'opérande. Le résultat est " +"arrondi avec le mode :const:`ROUND_HALF_EVEN`." #: library/decimal.rst:666 msgid "" "Return the base ten logarithm of the operand. The result is correctly " "rounded using the :const:`ROUND_HALF_EVEN` rounding mode." msgstr "" +"Renvoie le logarithme en base 10 de l'opérande. Le résultat est arrondi avec " +"le mode :const:`ROUND_HALF_EVEN`." #: library/decimal.rst:671 msgid "" @@ -876,7 +897,7 @@ msgstr "" #: library/decimal.rst:757 msgid "``\"-Infinity\"``, indicating that the operand is negative infinity." -msgstr "" +msgstr "``\"-Infinity\"``, indiquant que l'opérande est l'infini négatif ;" #: library/decimal.rst:758 msgid "" @@ -890,11 +911,11 @@ msgstr "" #: library/decimal.rst:760 msgid "``\"-Zero\"``, indicating that the operand is a negative zero." -msgstr "" +msgstr "``\"-Zero\"``, indiquant que l'opérande est un zéro négatif ;" #: library/decimal.rst:761 msgid "``\"+Zero\"``, indicating that the operand is a positive zero." -msgstr "" +msgstr "``\"+Zero\"``, indiquant que l'opérande est un zéro positif ;" #: library/decimal.rst:762 msgid "" @@ -908,15 +929,19 @@ msgstr "" #: library/decimal.rst:764 msgid "``\"+Infinity\"``, indicating that the operand is positive infinity." -msgstr "" +msgstr "``\"+Infinity\"``, indiquant que l'opérande est l'infini positif ;" #: library/decimal.rst:765 msgid "``\"NaN\"``, indicating that the operand is a quiet NaN (Not a Number)." msgstr "" +"``\"NaN\"``, indiquant que l'opérande est un NaN (*Not a Number*, pas un " +"nombre) silencieux ;" #: library/decimal.rst:766 msgid "``\"sNaN\"``, indicating that the operand is a signaling NaN." msgstr "" +"``\"sNaN\"``, indiquant que l'opérande est un NaN (*Not a Number*, pas un " +"nombre) signalétique." #: library/decimal.rst:770 msgid "" @@ -1325,7 +1350,7 @@ msgstr "Renvoie la valeur absolue de *x*." #: library/decimal.rst:1135 msgid "Return the sum of *x* and *y*." -msgstr "" +msgstr "Renvoie la somme de *x* et *y*." #: library/decimal.rst:1140 msgid "Returns the same Decimal object *x*." @@ -1354,23 +1379,23 @@ msgstr "" #: library/decimal.rst:1170 msgid "Returns a copy of *x* with the sign inverted." -msgstr "" +msgstr "Renvoie une copie de *x* mais de signe opposé." #: library/decimal.rst:1175 msgid "Copies the sign from *y* to *x*." -msgstr "" +msgstr "Copie le signe de *y* vers *x*." #: library/decimal.rst:1180 msgid "Return *x* divided by *y*." -msgstr "" +msgstr "Renvoie *x* divisé par *y*." #: library/decimal.rst:1185 msgid "Return *x* divided by *y*, truncated to an integer." -msgstr "" +msgstr "Renvoie *x* divisé par *y*, tronqué comme entier." #: library/decimal.rst:1190 msgid "Divides two numbers and returns the integer part of the result." -msgstr "" +msgstr "Renvoie la partie entière de la division entre deux nombres." #: library/decimal.rst:1195 msgid "Returns `e ** x`." @@ -1378,7 +1403,7 @@ msgstr "" #: library/decimal.rst:1200 msgid "Returns *x* multiplied by *y*, plus *z*." -msgstr "" +msgstr "Renvoie *x* multiplié par *y*, plus *z*." #: library/decimal.rst:1205 msgid "Returns ``True`` if *x* is canonical; otherwise returns ``False``." @@ -1390,11 +1415,13 @@ msgstr "" #: library/decimal.rst:1215 msgid "Returns ``True`` if *x* is infinite; otherwise returns ``False``." -msgstr "" +msgstr "Renvoie ``True`` si *x* est infini et ``False`` sinon." #: library/decimal.rst:1220 msgid "Returns ``True`` if *x* is a qNaN or sNaN; otherwise returns ``False``." msgstr "" +"Renvoie ``True`` si *x* est un NaN (silencieux ou signalétique) et ``False`` " +"sinon." #: library/decimal.rst:1225 msgid "" @@ -1403,16 +1430,16 @@ msgstr "" #: library/decimal.rst:1230 msgid "Returns ``True`` if *x* is a quiet NaN; otherwise returns ``False``." -msgstr "" +msgstr "Renvoie ``True`` si *x* est un NaN silencieux et ``False`` sinon." #: library/decimal.rst:1235 msgid "Returns ``True`` if *x* is negative; otherwise returns ``False``." -msgstr "" +msgstr "Renvoie ``True`` si *x* est négatif et ``False`` sinon." #: library/decimal.rst:1240 msgid "" "Returns ``True`` if *x* is a signaling NaN; otherwise returns ``False``." -msgstr "" +msgstr "Renvoie ``True`` si *x* est un NaN signalétique et ``False`` sinon." #: library/decimal.rst:1245 msgid "Returns ``True`` if *x* is subnormal; otherwise returns ``False``." @@ -1420,15 +1447,15 @@ msgstr "" #: library/decimal.rst:1250 msgid "Returns ``True`` if *x* is a zero; otherwise returns ``False``." -msgstr "" +msgstr "Renvoie ``True`` si *x* est un zéro et ``False`` sinon." #: library/decimal.rst:1255 msgid "Returns the natural (base e) logarithm of *x*." -msgstr "" +msgstr "Renvoie le logarithme naturel (en base e) de *x*." #: library/decimal.rst:1260 msgid "Returns the base 10 logarithm of *x*." -msgstr "" +msgstr "Renvoie le logarithme en base 10 de *x*." #: library/decimal.rst:1265 msgid "Returns the exponent of the magnitude of the operand's MSD." @@ -1452,7 +1479,7 @@ msgstr "" #: library/decimal.rst:1290 msgid "Compares two values numerically and returns the maximum." -msgstr "" +msgstr "Renvoie le maximum entre les deux valeurs numériques." #: library/decimal.rst:1305 msgid "Compares the values numerically with their sign ignored." @@ -1468,7 +1495,7 @@ msgstr "" #: library/decimal.rst:1315 msgid "Return the product of *x* and *y*." -msgstr "" +msgstr "Renvoie la multiplication de *x* avec *y*." #: library/decimal.rst:1320 msgid "Returns the largest representable number smaller than *x*." @@ -1484,7 +1511,7 @@ msgstr "" #: library/decimal.rst:1335 msgid "Reduces *x* to its simplest form." -msgstr "" +msgstr "Réduit *x* à sa forme la plus simple." #: library/decimal.rst:1340 msgid "Returns an indication of the class of *x*." @@ -1535,11 +1562,11 @@ msgstr "" #: library/decimal.rst:1372 msgid "``y`` must be nonnegative" -msgstr "" +msgstr "``y`` ne doit pas être négatif ;" #: library/decimal.rst:1373 msgid "at least one of ``x`` or ``y`` must be nonzero" -msgstr "" +msgstr "au moins l'un de ``x`` ou ``y`` doit être différent de zéro ;" #: library/decimal.rst:1374 msgid "``modulo`` must be nonzero and have at most 'precision' digits" @@ -1560,11 +1587,11 @@ msgstr "" #: library/decimal.rst:1391 msgid "Just returns 10, as this is Decimal, :)" -msgstr "" +msgstr "Renvoie 10 car c'est Decimal, :)" #: library/decimal.rst:1396 msgid "Returns the remainder from integer division." -msgstr "" +msgstr "Donne le reste de la division entière." #: library/decimal.rst:1398 msgid "" @@ -1584,7 +1611,7 @@ msgstr "" #: library/decimal.rst:1415 msgid "Returns ``True`` if the two operands have the same exponent." -msgstr "" +msgstr "Renvoie ``True`` si les deux opérandes ont le même exposant." #: library/decimal.rst:1420 msgid "Returns the first operand after adding the second value its exp." @@ -1619,6 +1646,9 @@ msgid "" "The constants in this section are only relevant for the C module. They are " "also included in the pure Python version for compatibility." msgstr "" +"Les constantes de cette section ne sont pertinentes que pour le module C. " +"Elles sont aussi incluses pour le compatibilité dans la version en Python " +"pur." #: library/decimal.rst:1467 msgid "32-bit" @@ -1656,6 +1686,8 @@ msgstr ":const:`-1999999999999999997`" msgid "" "The value is ``True``. Deprecated, because Python now always has threads." msgstr "" +"La valeur est ``True``. Déprécié, parce que maintenant Python possède " +"toujours des fils d'exécution." #: library/decimal.rst:1487 msgid "" @@ -1671,7 +1703,7 @@ msgstr "" #: library/decimal.rst:1495 msgid "Rounding modes" -msgstr "" +msgstr "Modes d'arrondi" #: library/decimal.rst:1499 msgid "Round towards :const:`Infinity`." @@ -1709,7 +1741,7 @@ msgstr "" #: library/decimal.rst:1534 msgid "Signals" -msgstr "" +msgstr "Signaux" #: library/decimal.rst:1536 msgid "" @@ -1783,7 +1815,7 @@ msgstr "" #: library/decimal.rst:1602 msgid "Numerical overflow." -msgstr "" +msgstr "Débordement numérique." #: library/decimal.rst:1604 msgid "" @@ -2041,6 +2073,8 @@ msgid "" "Q. Once I have valid two place inputs, how do I maintain that invariant " "throughout an application?" msgstr "" +"Q. Une fois que mes entrées sont à deux décimales valides, comment maintenir " +"cet invariant dans l'application ?" #: library/decimal.rst:2019 msgid "" @@ -2049,12 +2083,20 @@ msgid "" "division and non-integer multiplication, will change the number of decimal " "places and need to be followed-up with a :meth:`quantize` step:" msgstr "" +"R. Certaines opérations comme l'addition, la soustraction et la " +"multiplication par un entier préservent automatiquement la virgule fixe. " +"D'autres opérations, comme la division et la multiplication par des non-" +"entiers, changent le nombre de décimales et doivent être suivies d'une " +"étape :meth:`quantize` :" #: library/decimal.rst:2037 msgid "" "In developing fixed-point applications, it is convenient to define functions " "to handle the :meth:`quantize` step:" msgstr "" +"Lors du développement d'applications en virgule fixe, il est pratique de " +"définir des fonctions pour gérer cette étape de quantification par :meth:" +"`quantize` :" #: library/decimal.rst:2050 msgid "" diff --git a/library/email.encoders.po b/library/email.encoders.po index 46fd9480..57395c4f 100644 --- a/library/email.encoders.po +++ b/library/email.encoders.po @@ -40,6 +40,10 @@ msgid "" "sets the content type and CTE header using the *_subtype* and *_charset* " "values passed during the instantiation of that class." msgstr "" +"Ce module est obsolète en Python 3. Il n'est pas de besoin d'appeler " +"explicitement les fonctions définies ici puisque la classe :class:`~email." +"mime.text.MIMEText` ajuste le type de contenu et l'entête CTE à l'aide des " +"paramètres *_subtype* et *_charset* de son constructeur." #: library/email.encoders.rst:20 msgid "" diff --git a/library/email.po b/library/email.po index bd8059f1..0ae75b2f 100644 --- a/library/email.po +++ b/library/email.po @@ -23,7 +23,6 @@ msgid "**Source code:** :source:`Lib/email/__init__.py`" msgstr "**Code source:** :source:`Lib/email/__init__.py`" #: library/email.rst:15 -#, fuzzy msgid "" "The :mod:`email` package is a library for managing email messages. It is " "specifically *not* designed to do any sending of email messages to SMTP (:" @@ -37,7 +36,7 @@ msgstr "" "spécifiquement conçu pour ne pas gérer les envois d'e-mails vers SMTP (:rfc:" "`2821`), NNTP, ou autres serveurs ; ces fonctions sont du ressort " "des modules comme :mod:`smtplib` et :mod:`nntplib`. Le paquet :mod:`email` " -"tente de respecter les RFC autant que possible, il gère :rfc:`5233` et :rfc:" +"tente de respecter les RFC autant que possible, il gère :rfc:`5322` et :rfc:" "`6532`, ainsi que les RFCs en rapport avec les MIME comme :rfc:`2045`, :rfc:" "`2046`, :rfc:`2047`, :rfc:`2183`, et :rfc:`2231`." diff --git a/library/ensurepip.po b/library/ensurepip.po index f68d024b..9314c62a 100644 --- a/library/ensurepip.po +++ b/library/ensurepip.po @@ -17,7 +17,7 @@ msgstr "" #: library/ensurepip.rst:2 msgid ":mod:`ensurepip` --- Bootstrapping the ``pip`` installer" -msgstr "" +msgstr ":mod:`ensurepip` — Amorçage de l'installateur ``pip``" #: library/ensurepip.rst:12 msgid "" @@ -28,6 +28,12 @@ msgid "" "is bundled with maintenance and feature releases of the CPython reference " "interpreter." msgstr "" +"Le module :mod:`ensurepip` met en place l'installateur ``pip`` dans un " +"environnement Python, classique ou virtuel. Ce principe d'amorçage a été " +"choisi car ``pip`` est un projet séparé de Python avec son propre cycle de " +"versions. Il permet en particulier d'embarquer la version la plus récente de " +"``pip`` dans les mises à jour de maintenance de l'interpréteur CPython comme " +"dans les nouvelles versions principales." #: library/ensurepip.rst:19 msgid "" @@ -36,12 +42,19 @@ msgid "" "needed if installing ``pip`` was skipped when installing Python (or when " "creating a virtual environment) or after explicitly uninstalling ``pip``." msgstr "" +"Dans la plupart des cas, il n'est pas nécessaire de recourir à ce module. " +"``pip`` est le plus souvent déjà installé pour vous. Cependant, " +"``ensurepip`` peut s'avérer utile si l'installation de ``pip`` a été sautée " +"au moment de l'installation de Python (ou en créant un environnement " +"virtuel), ou bien si ``pip`` a été désinstallé par l'utilisateur." #: library/ensurepip.rst:27 msgid "" "This module *does not* access the internet. All of the components needed to " "bootstrap ``pip`` are included as internal parts of the package." msgstr "" +"Ce module n'accède *pas* au réseau. Tout ce qu'il faut pour amorcer ``pip`` " +"est compris dans le paquet." #: library/ensurepip.rst:34 msgid ":ref:`installing-index`" @@ -49,15 +62,17 @@ msgstr ":ref:`installing-index`" #: library/ensurepip.rst:34 msgid "The end user guide for installing Python packages" -msgstr "" +msgstr "Guide de l'utilisateur final pour installer des paquets Python" #: library/ensurepip.rst:36 msgid ":pep:`453`: Explicit bootstrapping of pip in Python installations" msgstr "" +":pep:`453` : Amorçage explicite de pip dans les installations de Python" #: library/ensurepip.rst:37 msgid "The original rationale and specification for this module." msgstr "" +"Les motivations pour l'ajout de ce module et sa spécification d'origine" #: library/ensurepip.rst:41 #, fuzzy @@ -68,10 +83,12 @@ msgstr "Interface en ligne de commande" msgid "" "The command line interface is invoked using the interpreter's ``-m`` switch." msgstr "" +"On fait appel à l'interface en ligne de commande à l'aide de l'option ``-m`` " +"de l'interpréteur." #: library/ensurepip.rst:45 msgid "The simplest possible invocation is::" -msgstr "" +msgstr "L'invocation la plus simple est ::" #: library/ensurepip.rst:49 msgid "" @@ -88,6 +105,9 @@ msgid "" "virtual environment). The installation location can be controlled through " "two additional command line options:" msgstr "" +"``pip`` est installé par défaut dans l'environnement virtuel courant, s'il y " +"en a un, ou bien dans le dossier ``site-packages`` du système. L'emplacement " +"d'installation se règle à travers deux options :" #: library/ensurepip.rst:61 msgid "" @@ -95,6 +115,9 @@ msgid "" "rather than the root of the currently active virtual environment (if any) or " "the default root for the current Python installation." msgstr "" +"``--root `` : installe ``pip`` sur un chemin relatif à la racine " +"*dossier* au lieu de la racine de l'environnement virtuel ou la racine par " +"défaut de l'installation de Python." #: library/ensurepip.rst:64 msgid "" @@ -102,6 +125,9 @@ msgid "" "than globally for the current Python installation (this option is not " "permitted inside an active virtual environment)." msgstr "" +"``--user`` : installe ``pip`` dans le dossier ``site-packages`` propre à " +"l'utilisateur au lieu du dossier global de l'installation de Python. Cette " +"option n'est pas valide dans un environnement virtuel." #: library/ensurepip.rst:68 msgid "" @@ -109,31 +135,40 @@ msgid "" "stands for the version of Python used to invoke ``ensurepip``). The scripts " "installed can be controlled through two additional command line options:" msgstr "" +"Par défaut, les commandes ``pipX`` et ``pipX.Y`` sont créées (où X.Y est la " +"version de Python avec laquelle ``ensurepip`` est utilisé). Cela se contrôle " +"par deux options supplémentaires :" #: library/ensurepip.rst:73 msgid "" "``--altinstall``: if an alternate installation is requested, the ``pipX`` " "script will *not* be installed." msgstr "" +"``--altinstall`` : dans ce mode d'« installation parallèle », seule la " +"commande ``pipX.Y`` est ajoutée, et pas la commande ``pipX``." #: library/ensurepip.rst:76 msgid "" "``--default-pip``: if a \"default pip\" installation is requested, the " "``pip`` script will be installed in addition to the two regular scripts." msgstr "" +"``--default-pip`` : ce mode d'« installation de la version par défaut » crée " +"la commande ``pip`` en plus de ``pipX`` et ``pipX.Y``." #: library/ensurepip.rst:79 msgid "" "Providing both of the script selection options will trigger an exception." -msgstr "" +msgstr "Combiner ces deux options conduit à une exception." #: library/ensurepip.rst:83 msgid "Module API" -msgstr "" +msgstr "API du module" #: library/ensurepip.rst:85 msgid ":mod:`ensurepip` exposes two functions for programmatic use:" msgstr "" +"Le module :mod:`ensurepip` définit deux fonctions pour utilisation dans les " +"programmes :" #: library/ensurepip.rst:89 msgid "" @@ -144,6 +179,7 @@ msgstr "" #: library/ensurepip.rst:96 msgid "Bootstraps ``pip`` into the current or designated environment." msgstr "" +"Amorce ``pip`` dans l'environnement courant ou un environnement spécifique." #: library/ensurepip.rst:98 msgid "" @@ -151,6 +187,9 @@ msgid "" "*root* is ``None``, then installation uses the default install location for " "the current environment." msgstr "" +"Passer *root* permet de changer la racine du chemin d'installation. Si " +"*root* vaut ``None`` (la valeur par défaut), l'installation se fait dans la " +"racine par défaut pour l'environnement courant." #: library/ensurepip.rst:102 msgid "" @@ -163,39 +202,52 @@ msgid "" "*user* indicates whether to use the user scheme rather than installing " "globally." msgstr "" +"Si *user* vaut vrai, ``pip`` est mis dans des chemins qui le rendent " +"disponible pour cet utilisateur uniquement, et non pour tous les " +"utilisateurs de l'installation de Python." #: library/ensurepip.rst:108 msgid "" "By default, the scripts ``pipX`` and ``pipX.Y`` will be installed (where X.Y " "stands for the current version of Python)." msgstr "" +"Par défaut, les commandes créées sont ``pipX`` et ``pipX.Y`` (où X.Y est la " +"version de Python)." #: library/ensurepip.rst:111 msgid "If *altinstall* is set, then ``pipX`` will *not* be installed." -msgstr "" +msgstr "Si *altinstall* vaut vrai, ``pipX`` n'est pas créée." #: library/ensurepip.rst:113 msgid "" "If *default_pip* is set, then ``pip`` will be installed in addition to the " "two regular scripts." msgstr "" +"Si *default_pip* vaut vrai, la commande ``pip`` est créée en plus des deux " +"autres." #: library/ensurepip.rst:116 msgid "" "Setting both *altinstall* and *default_pip* will trigger :exc:`ValueError`." msgstr "" +"Le fait de combiner *altinstall* et *default_pip* lève l'exception :exc:" +"`ValueError`." #: library/ensurepip.rst:119 msgid "" "*verbosity* controls the level of output to :data:`sys.stdout` from the " "bootstrapping operation." msgstr "" +"*verbosity* règle le niveau de verbosité des messages émis sur :data:`sys." +"stdout` pendant l'amorçage." #: library/ensurepip.rst:122 msgid "" "Raises an :ref:`auditing event ` ``ensurepip.bootstrap`` with " "argument ``root``." msgstr "" +"Cette fonction lève un :ref:`événement d'audit ` ``ensurepip." +"bootstrap`` avec l'argument ``root``." #: library/ensurepip.rst:126 msgid "" @@ -203,6 +255,9 @@ msgid "" "environ``. Invoking the command line interface in a subprocess instead " "allows these side effects to be avoided." msgstr "" +"Le processus d'amorçage a des effets de bord sur ``sys.path`` et ``os." +"environ``. Pour les éviter, on peut appeler l'interface en ligne de commande " +"dans un sous-processus." #: library/ensurepip.rst:132 msgid "" @@ -211,3 +266,7 @@ msgid "" "be present by default (as the dependencies may be removed in a future " "version of ``pip``)." msgstr "" +"L'amorçage peut installer des modules supplémentaires qui sont requis pour " +"``pip``. Les autres programmes ne doivent pas prendre pour acquise la " +"présence de ces modules, car ``pip`` pourrait dans une version future se " +"passer de ces dépendances." diff --git a/library/enum.po b/library/enum.po index fc72532b..d2e36f73 100644 --- a/library/enum.po +++ b/library/enum.po @@ -36,13 +36,17 @@ msgstr "" #: library/enum.rst:22 msgid "Case of Enum Members" -msgstr "" +msgstr "Convention de nommage pour les membres d'une **Enum**" #: library/enum.rst:24 msgid "" "Because Enums are used to represent constants we recommend using UPPER_CASE " "names for enum members, and will be using that style in our examples." msgstr "" +"Puisque les **Enums** sont utilisées pour représenter des constantes, il est " +"recommandé d'utiliser des majuscules (format ``MAJUSCULE_AVEC_SOULIGNÉS``) " +"pour leurs membres. Cette convention de style sera utilisée dans les " +"exemples." #: library/enum.rst:30 msgid "Module Contents" @@ -313,20 +317,20 @@ msgstr "" "être redéfinie ::" #: library/enum.rst:279 -#, fuzzy msgid "" "The goal of the default :meth:`_generate_next_value_` method is to provide " "the next :class:`int` in sequence with the last :class:`int` provided, but " "the way it does this is an implementation detail and may change." msgstr "" -"La méthode par défaut :meth:`_generate_next_value_` doit fournir le :class:" -"`int` suivant de la séquence en fonction du dernier :class:`int` fourni, " -"mais la séquence générée dépend de l'implémentation Python." +"La méthode :meth:`_generate_next_value_` doit renvoyer le prochain :class:" +"`int` de la séquence à partir du dernier :class:`int` fourni, mais " +"l'implémentation de cette fonction peut changer." #: library/enum.rst:285 msgid "" "The :meth:`_generate_next_value_` method must be defined before any members." msgstr "" +"La méthode :meth:`_generate_next_value_` doit être définie avant tout membre." #: library/enum.rst:288 msgid "Iteration" @@ -434,15 +438,14 @@ msgstr "" "attr:`_ignore_`." #: library/enum.rst:396 -#, fuzzy msgid "" "Note: if your enumeration defines :meth:`__new__` and/or :meth:`__init__` " "then any value(s) given to the enum member will be passed into those " "methods. See `Planet`_ for an example." msgstr "" -"Remarque : si l'énumération définit :meth:`__new__` ou :meth:`__init__`, " -"alors la (ou les) valeur affectée au membre sera passée à ces méthodes. Voir " -"l'exemple de `Planet`_." +"Remarque : si votre énumération définit :meth:`__new__` ou :meth:`__init__`, " +"alors les valeurs affectées aux membres seront passées à ces méthodes. Voir " +"`Planet`_ pour exemple." #: library/enum.rst:402 msgid "Restricted Enum subclassing" @@ -867,7 +870,6 @@ msgstr "" "comme dans l'exemple de :class:`IntEnum` ci-dessus." #: library/enum.rst:741 -#, fuzzy msgid "" "While :class:`Enum` can have members of any type, once you mix in an " "additional type, all the members must have values of that type, e.g. :class:" @@ -875,10 +877,10 @@ msgid "" "methods and don't specify another type." msgstr "" "Même si une classe :class:`Enum` peut avoir des membres de n'importe quel " -"type, dès lors qu'un type de mélange est ajouté, tous les membres doivent " -"être de ce type, p. ex. :class:`int` ci-dessus. Cette restriction ne " -"s'applique pas aux types de mélange qui ne font qu'ajouter des méthodes et " -"ne définissent pas de type de données, tels :class:`int` ou :class:`str`. " +"type, dès qu'un type est spécifié à la déclaration de la classe, alors tous " +"les membres doivent être de ce type, p. ex. :class:`int` ci-dessus. Cette " +"restriction ne s'applique pas aux classes dérivées qui n'ajoutent que des " +"méthodes supplémentaires sans spécifier un type de données." #: library/enum.rst:745 msgid "" @@ -902,7 +904,6 @@ msgstr "" "celui-ci était converti en son type de mélange." #: library/enum.rst:751 -#, fuzzy msgid "" ":ref:`Formatted string literals `, :meth:`str.format`, and :func:" "`format` will use the mixed-in type's :meth:`__format__` unless :meth:" @@ -911,10 +912,13 @@ msgid "" "and !r format codes to force usage of the :class:`Enum` class's :meth:" "`__str__` and :meth:`__repr__` methods." msgstr "" -":ref:`Chaînes de caractères formatées littérales ` : :meth:`str." -"format` et :func:`format` appellent la méthode :meth:`__format__` du type de " -"mélange. Pour appeler les fonctions :func:`str` ou :func:`repr` de la " -"classe :class:`Enum`, il faut utiliser les codes de formatage `!s` ou `!r`." +"Les :ref:`chaînes littérales formatées ` : :meth:`str.format` et :" +"func:`format` appellent la méthode :meth:`__format__` du type dérivé à moins " +"que :meth:`__str__` ou :meth:`__format__` soit surchargée dans la sous-" +"classe, auquel cas les méthodes surchargées ou celles de la classe :class:" +"`Enum` seront utilisées. Pour appeler les méthodes :meth:`__str__` ou :meth:" +"`__repr__` de la classe :class:`Enum`, il faut utiliser les codes de " +"formatage ``!s`` ou ``!r``." #: library/enum.rst:759 msgid "When to use :meth:`__new__` vs. :meth:`__init__`" @@ -926,6 +930,10 @@ msgid "" "of the :class:`Enum` member. Any other modifications may go in either :meth:" "`__new__` or :meth:`__init__`, with :meth:`__init__` being preferred." msgstr "" +":meth:`__new__` doit être utilisé dès que vous souhaitez personnaliser la " +"valeur effective des membres d'un :class:`Enum`. Tout autre modification " +"peut autant aller dans :meth:`__new__` que dans :meth:`__init__`, mais " +"l'usage de :meth:`__init__` est recommandé." #: library/enum.rst:765 msgid "" @@ -1042,12 +1050,16 @@ msgid "" "To make a more general purpose ``AutoNumber``, add ``*args`` to the " "signature::" msgstr "" +"Pour définir un ``AutoNumber`` plus générique, ajoutez ``*args`` à la " +"signature ::" #: library/enum.rst:900 msgid "" "Then when you inherit from ``AutoNumber`` you can write your own " "``__init__`` to handle any extra arguments::" msgstr "" +"Ainsi, quand vous héritez d'``AutoNumber``, vous pouvez définir ``__init__`` " +"pour gérer tout argument supplémentaire ::" #: library/enum.rst:919 msgid "" @@ -1220,14 +1232,13 @@ msgstr "" "n'est pas trouvée ; elle peut être redéfinie" #: library/enum.rst:1093 -#, fuzzy msgid "" "``_ignore_`` -- a list of names, either as a :class:`list` or a :class:" "`str`, that will not be transformed into members, and will be removed from " "the final class" msgstr "" -"``_ignore_`` -- une liste de noms, sous la forme de :func:`list` ou de :func:" -"`str`, qui ne seront pas transformés en membres, et seront supprimés de la " +"``_ignore_`` — liste de noms, sous la forme d'une :func:`list` ou d'une :" +"func:`str`, qui ne sont pas convertis en membres et sont supprimés de la " "classe résultante" #: library/enum.rst:1096 @@ -1276,7 +1287,7 @@ msgstr "" #: library/enum.rst:1126 msgid "_Private__names" -msgstr "" +msgstr "_Noms__privés" #: library/enum.rst:1128 msgid "" @@ -1309,7 +1320,7 @@ msgstr "" #: library/enum.rst:1155 msgid "This behavior is deprecated and will be removed in 3.11." -msgstr "" +msgstr "Ce comportement est obsolète et sera retiré en 3.11." #: library/enum.rst:1161 msgid "Boolean value of ``Enum`` classes and members" diff --git a/library/exceptions.po b/library/exceptions.po index 1e0a7543..d965968f 100644 --- a/library/exceptions.po +++ b/library/exceptions.po @@ -81,9 +81,8 @@ msgstr "" "chapitre :ref:`tut-userexceptions`." #: library/exceptions.rst:39 -#, fuzzy msgid "Exception context" -msgstr "Hiérarchie des exceptions" +msgstr "Contexte des exceptions" #: library/exceptions.rst:41 msgid "" @@ -93,20 +92,21 @@ msgid "" "`except` or :keyword:`finally` clause, or a :keyword:`with` statement, is " "used." msgstr "" +"Quand une exception est levée pendant qu'une autre exception est déjà en " +"traitement, l'attribut :attr:`__context__` de la nouvelle exception est " +"automatiquement affecté à l'exception qui est en cours de traitement. Une " +"exception peut être traitée quand une clause :keyword:`except` ou :keyword:" +"`finally`, ou une instruction :keyword:`with` est utilisée." #: library/exceptions.rst:47 -#, fuzzy msgid "" "This implicit exception context can be supplemented with an explicit cause " "by using :keyword:`!from` with :keyword:`raise`::" msgstr "" -"En levant une nouvelle exception (plutôt que d'utiliser un simple ``raise`` " -"pour lever à nouveau l'exception en cours de traitement), le contexte " -"implicite d'exception peut être complété par une cause explicite en " -"utilisant :keyword:`from` avec :keyword:`raise` ::" +"Ce contexte implicite d'exception peut être complété par une cause explicite " +"en utilisant :keyword:`!from` avec :keyword:`raise` ::" #: library/exceptions.rst:53 -#, fuzzy msgid "" "The expression following :keyword:`from` must be an exception or " "``None``. It will be set as :attr:`__cause__` on the raised exception. " @@ -117,12 +117,12 @@ msgid "" "while leaving the old exception available in :attr:`__context__` for " "introspection when debugging." msgstr "" -"L'expression suivant :keyword:`from` doit être une exception ou ``None``. " -"Elle sera assignée en tant que :attr:`__cause__` dans l'exception levée. " -"Changer :attr:`__cause__` change aussi implicitement l'attribut :attr:" +"L'expression suivant :keyword:`from` doit être une exception ou " +"``None``. Elle sera assignée en tant que :attr:`__cause__` dans l'exception " +"levée. Changer :attr:`__cause__` change aussi implicitement l'attribut :attr:" "`__suppress_context__` à ``True``, de sorte que l'utilisation de ``raise " "new_exc from None`` remplace bien l'ancienne exception avec la nouvelle à " -"des fins d'affichage (e.g., convertir :exc:`KeyError` en :exc:" +"des fins d'affichage (par exemple, convertir :exc:`KeyError` en :exc:" "`AttributeError`), tout en laissant l'ancienne exception disponible dans :" "attr:`__context__` pour introspection lors du débogage." @@ -152,9 +152,8 @@ msgstr "" "d'appels montre toujours la dernière exception qui a été levée." #: library/exceptions.rst:74 -#, fuzzy msgid "Inheriting from built-in exceptions" -msgstr "La hiérarchie de classes pour les exceptions natives est la suivante :" +msgstr "Hériter des exceptions natives" #: library/exceptions.rst:76 msgid "" @@ -163,6 +162,11 @@ msgid "" "possible conflicts between how the bases handle the ``args`` attribute, as " "well as due to possible memory layout incompatibilities." msgstr "" +"Le code de l'utilisateur peut créer des sous-classes qui dérivent d'un type " +"d'exception. Il est recommandé de ne dériver que d'un seul type d'exception " +"à la fois pour éviter des conflits possibles dans la façon dont les classes " +"mères traitent l'argument ``args`` ainsi que des incompatibilités " +"potentielles avec l'utilisation de la mémoire." #: library/exceptions.rst:83 msgid "" @@ -173,6 +177,13 @@ msgid "" "between Python versions, leading to new conflicts in the future. Therefore, " "it's recommended to avoid subclassing multiple exception types altogether." msgstr "" +"La majorité des exceptions natives sont implémentées en C pour des raisons " +"d'efficacité, voir :source:`Objects/exceptions.c`. L'architecture interne de " +"certaines est telle que cela rend impossible la création de sous-classes qui " +"dérivent de plusieurs types d'exceptions. L'agencement de la mémoire est un " +"détail d'implémentation qui est sujet à changement d'une version de Python à " +"l'autre, ce qui peut poser conflit dans le futur. Il est donc déconseillé de " +"dériver de plusieurs types d'exceptions." #: library/exceptions.rst:93 msgid "Base classes" @@ -386,6 +397,12 @@ msgid "" "allow :exc:`KeyboardInterrupt` to end the program as quickly as possible or " "avoid raising it entirely. (See :ref:`handlers-and-exceptions`.)" msgstr "" +"Attraper une :exc:`KeyboardInterrupt` demande une considération " +"particulière. Comme elle peut être levée à des moments imprévisibles, elle " +"peut dans certains cas laisser le programme en cours d'exécution dans un " +"état incohérent. Il est généralement préférable de laisser :exc:" +"`KeyboardInterrupt` arrêter le programme aussi rapidement que possible ou " +"d'éviter catégoriquement de la lever (voir :ref:`handlers-and-exceptions`)." #: library/exceptions.rst:249 msgid "" @@ -689,7 +706,6 @@ msgstr "" "`asynchronous iterator` pour arrêter l'itération." #: library/exceptions.rst:426 -#, fuzzy msgid "" "Raised when the parser encounters a syntax error. This may occur in an :" "keyword:`import` statement, in a call to the built-in functions :func:" @@ -698,36 +714,42 @@ msgid "" msgstr "" "Levée lorsque l'analyseur syntaxique rencontre une erreur de syntaxe. Cela " "peut se produire dans une instruction :keyword:`import`, dans un appel aux " -"fonctions natives :func:`exec` ou :func:`eval`, ou lors de la lecture du " -"script initial ou de l'entrée standard (également de manière interactive)." +"fonctions natives :func:`compile`, :func:`exec` ou :func:`eval`, ou lors de " +"la lecture du script initial ou de l'entrée standard (également de manière " +"interactive)." #: library/exceptions.rst:432 msgid "" "The :func:`str` of the exception instance returns only the error message. " "Details is a tuple whose members are also available as separate attributes." msgstr "" +"La conversion en chaîne avec :func:`str` de l'instance de l'exception ne " +"renvoie que le message d'erreur. L'argument ``details`` est un *n*-uplet " +"dont les membres sont disponibles en tant qu'attributs séparés." #: library/exceptions.rst:437 -#, fuzzy msgid "The name of the file the syntax error occurred in." -msgstr "Le nom de l'encodage qui a provoqué l'erreur." +msgstr "Le nom du fichier dans lequel l'erreur de syntaxe a été rencontrée." #: library/exceptions.rst:441 msgid "" "Which line number in the file the error occurred in. This is 1-indexed: the " "first line in the file has a ``lineno`` of 1." msgstr "" +"Le numéro de la ligne dans le fichier où l'erreur s'est produite. L'indiçage " +"commence à 1 : ``lineno`` vaut 1 pour la première ligne du fichier." #: library/exceptions.rst:446 msgid "" "The column in the line where the error occurred. This is 1-indexed: the " "first character in the line has an ``offset`` of 1." msgstr "" +"La colonne dans la ligne où l'erreur s'est produite. L'indiçage commence à " +"1 : ``offset`` vaut 1 pour le premier caractère de la ligne." #: library/exceptions.rst:451 -#, fuzzy msgid "The source code text involved in the error." -msgstr "Le nom de l'encodage qui a provoqué l'erreur." +msgstr "Le texte du code source impliqué dans l'erreur." #: library/exceptions.rst:453 msgid "" @@ -980,7 +1002,6 @@ msgstr "" "levées en fonction du code d'erreur système." #: library/exceptions.rst:614 -#, fuzzy msgid "" "Raised when an operation would block on an object (e.g. socket) set for non-" "blocking operation. Corresponds to :c:data:`errno` :py:data:`~errno." @@ -988,8 +1009,9 @@ msgid "" "data:`~errno.EINPROGRESS`." msgstr "" "Levée lorsqu'une opération bloque sur un objet (par exemple un connecteur) " -"configuré pour une opération non-bloquante. Correspond à :c:data:`errno` " -"``EAGAIN``, ``EALREADY``, ``EWOULDBLOCK`` et ``EINPROGRESS``." +"configuré pour une opération non-bloquante. Correspond à :c:data:`errno` :py:" +"data:`~errno.EAGAIN`, :py:data:`~errno.EALREADY`, :py:data:`~errno." +"EWOULDBLOCK` et :py:data:`~errno.EINPROGRESS`." #: library/exceptions.rst:619 msgid "" @@ -1010,13 +1032,12 @@ msgstr "" "classes tampon entrées-sorties du module :mod:`io`." #: library/exceptions.rst:630 -#, fuzzy msgid "" "Raised when an operation on a child process failed. Corresponds to :c:data:" "`errno` :py:data:`~errno.ECHILD`." msgstr "" "Levée lorsqu'une opération sur un processus enfant a échoué. Correspond à :c:" -"data:`errno` ``ECHILD``." +"data:`errno` :py:data:`~errno.ECHILD`." #: library/exceptions.rst:635 msgid "A base class for connection-related issues." @@ -1032,7 +1053,6 @@ msgstr "" "`ConnectionResetError`." #: library/exceptions.rst:642 -#, fuzzy msgid "" "A subclass of :exc:`ConnectionError`, raised when trying to write on a pipe " "while the other end has been closed, or trying to write on a socket which " @@ -1042,56 +1062,53 @@ msgstr "" "Une sous-classe de :exc:`ConnectionError`, levé en essayant d'écrire sur un " "*pipe* alors que l'autre extrémité a été fermée, ou en essayant d'écrire sur " "un connecteur (*socket* en anglais) qui a été fermé pour l'écriture. " -"Correspond à :c:data:`errno` ``EPIPE`` et ``ESHUTDOWN``." +"Correspond à :c:data:`errno` :py:data:`~errno.EPIPE` et :py:data:`~errno." +"ESHUTDOWN`." #: library/exceptions.rst:649 -#, fuzzy msgid "" "A subclass of :exc:`ConnectionError`, raised when a connection attempt is " "aborted by the peer. Corresponds to :c:data:`errno` :py:data:`~errno." "ECONNABORTED`." msgstr "" "Une sous-classe de :exc:`ConnectionError`, levée lorsqu'une tentative de " -"connexion est interrompue par le pair. Correspond à :c:data:`errno` " -"``ECONNABORTED``." +"connexion est interrompue par le pair. Correspond à :c:data:`errno` :py:data:" +"`~errno.ECONNABORTED`." #: library/exceptions.rst:655 -#, fuzzy msgid "" "A subclass of :exc:`ConnectionError`, raised when a connection attempt is " "refused by the peer. Corresponds to :c:data:`errno` :py:data:`~errno." "ECONNREFUSED`." msgstr "" "Une sous-classe de :exc:`ConnectionError`, levée lorsqu'une tentative de " -"connexion est refusée par le pair. Correspond à :c:data:`errno` " -"``ECONNREFUSED``." +"connexion est refusée par le pair. Correspond à :c:data:`errno` :py:data:" +"`~errno.ECONNREFUSED`." #: library/exceptions.rst:661 -#, fuzzy msgid "" "A subclass of :exc:`ConnectionError`, raised when a connection is reset by " "the peer. Corresponds to :c:data:`errno` :py:data:`~errno.ECONNRESET`." msgstr "" "Une sous-classe de :exc:`ConnectionError`, levée lorsqu'une connexion est " -"réinitialisée par le pair. Correspond à :c:data:`errno` ``ECONNRESET``." +"réinitialisée par le pair. Correspond à :c:data:`errno` :py:data:`~errno." +"ECONNRESET`." #: library/exceptions.rst:667 -#, fuzzy msgid "" "Raised when trying to create a file or directory which already exists. " "Corresponds to :c:data:`errno` :py:data:`~errno.EEXIST`." msgstr "" -"Levée en essayant de créer un fichier ou un répertoire qui existe déjà. " -"Correspond à :c:data:`errno` ``EEXIST``." +"Levée pendant la tentative de création d'un fichier ou d'un répertoire qui " +"existe déjà. Correspond à :c:data:`errno` :py:data:`~errno.EEXIST`." #: library/exceptions.rst:672 -#, fuzzy msgid "" "Raised when a file or directory is requested but doesn't exist. Corresponds " "to :c:data:`errno` :py:data:`~errno.ENOENT`." msgstr "" "Levée lorsqu'un fichier ou répertoire est demandé mais n'existe pas. " -"Correspond à :c:data:`errno` ``ENOENT``." +"Correspond à :c:data:`errno` :py:data:`~errno.ENOENT`." #: library/exceptions.rst:677 msgid "" @@ -1112,16 +1129,15 @@ msgstr "" "`475` pour les raisons), au lieu de lever :exc:`InterruptedError`." #: library/exceptions.rst:687 -#, fuzzy msgid "" "Raised when a file operation (such as :func:`os.remove`) is requested on a " "directory. Corresponds to :c:data:`errno` :py:data:`~errno.EISDIR`." msgstr "" "Levée lorsqu'une opération sur un fichier (comme :func:`os.remove`) est " -"demandée sur un répertoire. Correspond à :c:data:`errno` ``EISDIR``." +"demandée sur un répertoire. Correspond à :c:data:`errno` :py:data:`~errno." +"EISDIR`." #: library/exceptions.rst:693 -#, fuzzy msgid "" "Raised when a directory operation (such as :func:`os.listdir`) is requested " "on something which is not a directory. On most POSIX platforms, it may also " @@ -1130,8 +1146,10 @@ msgid "" "ENOTDIR`." msgstr "" "Levée lorsqu'une opération sur un répertoire (comme :func:`os.listdir`) est " -"demandée sur autre chose qu'un répertoire. Correspond à :c:data:`errno` " -"``ENOTDIR``." +"demandée sur autre chose qu'un répertoire. Sur la majorité des plateformes " +"*POSIX*, elle est aussi levée quand une opération tente d'ouvrir ou de " +"traverser un fichier qui n'est pas un répertoire comme s'il en était un. " +"Correspond à :c:data:`errno` :py:data:`~errno.ENOTDIR`." #: library/exceptions.rst:701 #, fuzzy @@ -1145,22 +1163,20 @@ msgstr "" "c:data:`errno` ``EACCES`` et ``EPERM``." #: library/exceptions.rst:707 -#, fuzzy msgid "" "Raised when a given process doesn't exist. Corresponds to :c:data:`errno` :" "py:data:`~errno.ESRCH`." msgstr "" -"Levée lorsqu'un processus donné n'existe pas. Correspond à :c:data:`errno` " -"``ESRCH``." +"Levée lorsqu'un processus donné n'existe pas. Correspond à :c:data:`errno` :" +"py:data:`~errno.ESRCH`." #: library/exceptions.rst:712 -#, fuzzy msgid "" "Raised when a system function timed out at the system level. Corresponds to :" "c:data:`errno` :py:data:`~errno.ETIMEDOUT`." msgstr "" "Levée lorsqu'une fonction système a expiré au niveau système. Correspond à :" -"c:data:`errno` ``ETIMEDOUT``." +"c:data:`errno` :py:data:`~errno.ETIMEDOUT`." #: library/exceptions.rst:715 msgid "All the above :exc:`OSError` subclasses were added." @@ -1205,10 +1221,13 @@ msgid "" "pep:`565`). Enabling the :ref:`Python Development Mode ` shows this " "warning." msgstr "" +"Ignoré par les filtres d'avertissements par défaut, sauf dans le module " +"``__main__`` (:pep:`565`). Activer le :ref:`mode de développement de Python " +"` affiche cet avertissement." #: library/exceptions.rst:767 msgid "The deprecation policy is described in :pep:`387`." -msgstr "" +msgstr "La politique relative à l'obsolescence est décrite dans la :pep:`387`." #: library/exceptions.rst:756 msgid "" @@ -1234,6 +1253,8 @@ msgid "" "Ignored by the default warning filters. Enabling the :ref:`Python " "Development Mode ` shows this warning." msgstr "" +"Ignoré par les filtres d'avertissements par défaut. Activer le :ref:`mode de " +"développement de Python ` affiche cet avertissement." #: library/exceptions.rst:772 msgid "Base class for warnings about dubious syntax." @@ -1272,9 +1293,9 @@ msgstr "" "`bytearray`." #: library/exceptions.rst:806 -#, fuzzy msgid "Base class for warnings related to resource usage." -msgstr "Classe de base pour les avertissements liés à l'Unicode." +msgstr "" +"Classe mère pour les avertissements liés à l'utilisation des ressources." #: library/exceptions.rst:816 msgid "Exception hierarchy" diff --git a/library/fileinput.po b/library/fileinput.po index 8456c7ad..12536501 100644 --- a/library/fileinput.po +++ b/library/fileinput.po @@ -16,7 +16,7 @@ msgstr "" #: library/fileinput.rst:2 msgid ":mod:`fileinput` --- Iterate over lines from multiple input streams" -msgstr "" +msgstr ":mod:`fileinput` — Parcourt les lignes provenant de plusieurs entrées" #: library/fileinput.rst:10 msgid "**Source code:** :source:`Lib/fileinput.py`" @@ -28,10 +28,13 @@ msgid "" "over standard input or a list of files. If you just want to read or write " "one file see :func:`open`." msgstr "" +"Ce module offre une classe auxiliaire et des fonctions pour lire facilement " +"l'entrée standard ou bien les fichiers d'une liste. Si vous n'avez besoin de " +"lire ou écrire qu'un seul fichier, il suffit de :func:`open`." #: library/fileinput.rst:18 msgid "The typical use is::" -msgstr "" +msgstr "Ce module s'utilise le plus couramment comme ceci :" #: library/fileinput.rst:24 msgid "" @@ -42,6 +45,12 @@ msgid "" "it as the first argument to :func:`.input`. A single file name is also " "allowed." msgstr "" +"Ce code traite une à une les lignes des fichiers de ``sys.argv[1:]``. Si " +"cette liste est vide (pas d'argument en ligne de commande), il lit l'entrée " +"standard. Le nom de fichier ``'-'`` est équivalent à l'entrée standard (les " +"arguments facultatifs *mode* et *openhook* sont ignorés dans ce cas). On " +"peut aussi passer la liste des fichiers comme argument à :func:`.input`, " +"voire un nom de fichier unique." #: library/fileinput.rst:30 msgid "" @@ -50,12 +59,16 @@ msgid "" "`FileInput`. If an I/O error occurs during opening or reading a file, :exc:" "`OSError` is raised." msgstr "" +"Par défaut, tous les fichiers sont ouverts en mode texte. On peut changer ce " +"comportement à l'aide du paramètre *mode* de la fonction :func:`.input` ou " +"du constructeur de :class:`FileInput`. Si une erreur d'entrée-sortie se " +"produit durant l'ouverture ou la lecture d'un fichier, l'exception :exc:" +"`OSError` est levée." #: library/fileinput.rst:35 -#, fuzzy msgid ":exc:`IOError` used to be raised; it is now an alias of :exc:`OSError`." msgstr "" -":exc:`IOError` était normalement levée, elle est maintenant un alias de :exc:" +":exc:`IOError` était levée auparavant, elle est devenue un alias de :exc:" "`OSError`." #: library/fileinput.rst:38 @@ -64,6 +77,10 @@ msgid "" "return no lines, except perhaps for interactive use, or if it has been " "explicitly reset (e.g. using ``sys.stdin.seek(0)``)." msgstr "" +"Si ``sys.stdin`` apparaît plus d'une fois dans la liste, toutes les lignes " +"sont consommées dès la première fois, sauf éventuellement en cas d'usage " +"interactif ou si le flux d'entrée standard a été modifié dans l'intervalle " +"(par exemple avec ``sys.stdin.seek(0)``)." #: library/fileinput.rst:42 msgid "" @@ -71,12 +88,18 @@ msgid "" "in the list of filenames is noticeable at all is when the last file opened " "is empty." msgstr "" +"Les fichiers vides sont ouverts et refermés immédiatement. Ils ne sont pas " +"détectables dans la liste des fichiers, sauf éventuellement dans le cas où " +"le dernier fichier est vide." #: library/fileinput.rst:46 msgid "" "Lines are returned with any newlines intact, which means that the last line " "in a file may not have one." msgstr "" +"Les caractères de saut de ligne sont préservés, donc toutes les lignes se " +"terminent par un saut de ligne, sauf éventuellement la dernière ligne d'un " +"fichier." #: library/fileinput.rst:49 msgid "" @@ -89,7 +112,7 @@ msgstr "" #: library/fileinput.rst:55 msgid "The following function is the primary interface of this module:" -msgstr "" +msgstr "La fonction suivante constitue l'interface principale du module :" #: library/fileinput.rst:60 msgid "" @@ -98,6 +121,11 @@ msgid "" "to use during iteration. The parameters to this function will be passed " "along to the constructor of the :class:`FileInput` class." msgstr "" +"Crée une instance de :class:`FileInput`, qui devient l'état global pour " +"toutes les fonctions du module. Elle est également renvoyée afin que " +"l'utilisateur puisse la parcourir comme un objet itérable. Tous les " +"paramètres de cette fonction sont transmis au constructeur de :class:" +"`FileInput`." #: library/fileinput.rst:65 msgid "" @@ -105,32 +133,44 @@ msgid "" "keyword:`with` statement. In this example, *input* is closed after the :" "keyword:`!with` statement is exited, even if an exception occurs::" msgstr "" +"Les instances de :class:`FileInput` peuvent s'utiliser comme gestionnaires " +"de contexte, avec l'instruction :keyword:`with`. Dans le code suivant, " +"*input* est fermé lorsque le bloc :keyword:`!with` se termine, y compris si " +"une exception l'a interrompu." #: library/fileinput.rst:166 msgid "Can be used as a context manager." -msgstr "" +msgstr "prise en charge du protocole de gestionnaire de contexte." #: library/fileinput.rst:76 msgid "The keyword parameters *mode* and *openhook* are now keyword-only." -msgstr "" +msgstr "les paramètres *mode* et *openhook* doivent être nommés." #: library/fileinput.rst:80 msgid "" "The following functions use the global state created by :func:`fileinput." "input`; if there is no active state, :exc:`RuntimeError` is raised." msgstr "" +"Toutes les fonctions suivantes font appel à l'état global du module mis en " +"place par :func:`fileinput.input`. L'absence de cet état déclenche " +"l'exception :exc:`RuntimeError`." #: library/fileinput.rst:86 msgid "" "Return the name of the file currently being read. Before the first line has " "been read, returns ``None``." msgstr "" +"Renvoie le nom du fichier en train d'être lu, ou ``None`` avant la lecture " +"de la toute première ligne." #: library/fileinput.rst:92 msgid "" "Return the integer \"file descriptor\" for the current file. When no file is " "opened (before the first line and between files), returns ``-1``." msgstr "" +"Renvoie le descripteur de fichier (sous forme d'entier) utilisé pour lire le " +"fichier courant. Si aucun fichier n'est ouvert (avant la première ligne et " +"entre les fichiers), le résultat est ``-1``." #: library/fileinput.rst:98 msgid "" @@ -138,6 +178,10 @@ msgid "" "Before the first line has been read, returns ``0``. After the last line of " "the last file has been read, returns the line number of that line." msgstr "" +"Renvoie le numéro de la ligne qui vient d'être lue, en commençant par la " +"première ligne du premier fichier. Avant cette toute première ligne, renvoie " +"``0``. Après la dernière ligne du dernier fichier, renvoie le numéro de " +"cette ligne." #: library/fileinput.rst:105 msgid "" @@ -145,18 +189,25 @@ msgid "" "read, returns ``0``. After the last line of the last file has been read, " "returns the line number of that line within the file." msgstr "" +"Renvoie le numéro de ligne relatif au fichier courant. Avant la toute " +"première ligne, renvoie ``0``. Après la toute dernière ligne, renvoie le " +"numéro de cette ligne par rapport à son fichier source." #: library/fileinput.rst:112 msgid "" "Return ``True`` if the line just read is the first line of its file, " "otherwise return ``False``." msgstr "" +"Renvoie ``True`` ou ``False`` selon que la ligne qui vient d'être lue est la " +"première du fichier." #: library/fileinput.rst:118 msgid "" "Return ``True`` if the last line was read from ``sys.stdin``, otherwise " "return ``False``." msgstr "" +"``True`` ou ``False`` selon que la dernière ligne lue provenait de ``sys." +"stdin`` ou non." #: library/fileinput.rst:124 msgid "" @@ -168,16 +219,27 @@ msgid "" "file. After the last line of the last file has been read, this function has " "no effect." msgstr "" +"Ferme le fichier courant et laisse la lecture se poursuivre au début du " +"suivant (ou se terminer si c'était le dernier fichier ; dans ce cas cette " +"fonction ne fait rien). Les lignes court-circuitées ne comptent pas dans les " +"numéros des lignes des fichiers suivants. Le nom du fichier courant n'est " +"pas modifié immédiatement, mais seulement après que la première ligne du " +"fichier suivant a été lue. Cette fonction n'a pas d'effet avant la lecture " +"de la première ligne (elle ne peut pas sauter le premier fichier)." #: library/fileinput.rst:134 msgid "Close the sequence." msgstr "" +"Ferme le fichier courant et termine la lecture en sautant les fichiers " +"suivants." #: library/fileinput.rst:136 msgid "" "The class which implements the sequence behavior provided by the module is " "available for subclassing as well:" msgstr "" +"La classe qui implémente ce comportement du module est publique. On peut en " +"créer des classes filles." #: library/fileinput.rst:142 msgid "" @@ -203,6 +265,10 @@ msgid "" "*filename* and *mode*, and returns an accordingly opened file-like object. " "You cannot use *inplace* and *openhook* together." msgstr "" +"S'il est fourni, l'argument *openhook* est une fonction. Elle est appelée " +"avec les paramètres *filename* et *mode*, et renvoie un objet fichier-" +"compatible ouvert selon *mode*. Notez que *openhook* et *inplace* sont " +"mutuellement exclusifs." #: library/fileinput.rst:158 msgid "" @@ -210,18 +276,22 @@ msgid "" "keyword:`with` statement. In this example, *input* is closed after the :" "keyword:`!with` statement is exited, even if an exception occurs::" msgstr "" +"Les objets :class:`FileInput` peuvent aussi fonctionner comme gestionnaires " +"de contexte dans un bloc :keyword:`with`. Dans l'exemple suivant, *input* " +"est fermé à la fin du bloc :keyword:`!with`, même arrêté par une exception." #: library/fileinput.rst:169 msgid "The ``'rU'`` and ``'U'`` modes." -msgstr "" +msgstr "modes ``'rU'`` et ``'U'``." #: library/fileinput.rst:172 msgid "Support for :meth:`__getitem__` method is deprecated." -msgstr "" +msgstr "accès à un indice avec :meth:`__getitem__`." #: library/fileinput.rst:175 msgid "The keyword parameter *mode* and *openhook* are now keyword-only." msgstr "" +"les paramètres *mode* et *openhook* doivent impérativement être nommés." #: library/fileinput.rst:180 msgid "" @@ -236,10 +306,22 @@ msgid "" "extension is ``'.bak'`` and it is deleted when the output file is closed. " "In-place filtering is disabled when standard input is read." msgstr "" +"**Filtrage sur place optionnel :** si ``inplace=True`` est passé à :func:" +"`fileinput.input` ou au constructeur de :class:`FileInput`, chaque fichier " +"d'entrée est déplacé vers une sauvegarde et la sortie standard est redirigée " +"vers le fichier lui-même, ce qui permet d'écrire des filtres qui modifient " +"directement les fichiers existants. Si le paramètre *backup* est fourni, il " +"donne l'extension des fichiers de sauvegarde. Dans ce cas, la sauvegarde est " +"conservée après l'opération. Par défaut, les fichiers de sauvegarde ont " +"l'extension ``'.bak'`` et sont supprimés dès que le fichier de sortie est " +"fermé. Si un fichier existe avec le même nom que la sauvegarde, il est " +"écrasé. Le filtrage sur place ne fait rien pour l'entrée standard." #: library/fileinput.rst:192 msgid "The two following opening hooks are provided by this module:" msgstr "" +"Les deux fonctions suivantes fournissent des valeurs prédéfinies pour " +"*openhook*." #: library/fileinput.rst:196 msgid "" @@ -248,6 +330,11 @@ msgid "" "modules. If the filename extension is not ``'.gz'`` or ``'.bz2'``, the file " "is opened normally (ie, using :func:`open` without any decompression)." msgstr "" +"Ouvre de façon transparente les fichiers compressés avec gzip ou bzip2, à " +"l'aide des modules :mod:`gzip` et :mod:`bz2`. Les fichiers compressés sont " +"reconnus aux extensions ``'.gz'`` et ``'.bz2'``. Tous les fichiers qui n'ont " +"pas l'une de ces deux extensions sont ouverts normalement (avec :func:" +"`open`, sans décompression)." #: library/fileinput.rst:201 msgid "" @@ -260,13 +347,18 @@ msgid "" "Returns a hook which opens each file with :func:`open`, using the given " "*encoding* and *errors* to read the file." msgstr "" +"Renvoie une fonction qui ouvre les fichiers en passant à :func:`open` les " +"arguments *encoding* et *errors*. Le résultat peut être exploité à travers " +"le point d'entrée automatique *openhook*." #: library/fileinput.rst:209 msgid "" "Usage example: ``fi = fileinput.FileInput(openhook=fileinput." "hook_encoded(\"utf-8\", \"surrogateescape\"))``" msgstr "" +"Exemple d'utilisation : ``fi = fileinput.FileInput(openhook=fileinput." +"hook_encoded(\"utf-8\", \"surrogateescape\"))``." #: library/fileinput.rst:213 msgid "Added the optional *errors* parameter." -msgstr "" +msgstr "ajout du paramètre facultatif *errors*." diff --git a/library/ftplib.po b/library/ftplib.po index b010659c..baba6a9b 100644 --- a/library/ftplib.po +++ b/library/ftplib.po @@ -16,7 +16,7 @@ msgstr "" #: library/ftplib.rst:2 msgid ":mod:`ftplib` --- FTP protocol client" -msgstr "" +msgstr ":mod:`ftplib` — Le protocole client FTP" #: library/ftplib.rst:7 msgid "**Source code:** :source:`Lib/ftplib.py`" @@ -34,11 +34,11 @@ msgstr "" #: library/ftplib.rst:22 msgid "The default encoding is UTF-8, following :rfc:`2640`." -msgstr "" +msgstr "L'encodage par défaut est UTF-8, voir la :rfc:`2640`." #: library/ftplib.rst:24 msgid "Here's a sample session using the :mod:`ftplib` module::" -msgstr "" +msgstr "Voici un exemple de session utilisant le module :mod:`ftplib` ::" #: library/ftplib.rst:46 msgid "The module defines the following items:" @@ -60,6 +60,8 @@ msgstr "" #: library/ftplib.rst:60 msgid "The :class:`FTP` class supports the :keyword:`with` statement, e.g.:" msgstr "" +"La classe :class:`FTP` peut s'utiliser avec l'instruction :keyword:`with`, " +"p. ex.:" #: library/ftplib.rst:74 msgid "Support for the :keyword:`with` statement was added." @@ -111,23 +113,27 @@ msgstr "" #: library/ftplib.rst:124 msgid "Here's a sample session using the :class:`FTP_TLS` class::" -msgstr "" +msgstr "Voici un exemple de session utilisant la classe :class:`FTP_TLS` ::" #: library/ftplib.rst:137 msgid "Exception raised when an unexpected reply is received from the server." -msgstr "" +msgstr "Exception levée lorsqu'une réponse inattendue est reçue du serveur." #: library/ftplib.rst:142 msgid "" "Exception raised when an error code signifying a temporary error (response " "codes in the range 400--499) is received." msgstr "" +"Exception levée lorsqu'un code d'erreur signifiant une erreur temporaire " +"(code de réponse dans l'intervalle 400-499) est reçu." #: library/ftplib.rst:148 msgid "" "Exception raised when an error code signifying a permanent error (response " "codes in the range 500--599) is received." msgstr "" +"Exception levée lorsqu'un code d'erreur signifiant une erreur permanente " +"(code de réponse dans l'intervalle 500-599) est reçu." #: library/ftplib.rst:154 msgid "" @@ -135,6 +141,9 @@ msgid "" "the response specifications of the File Transfer Protocol, i.e. begin with a " "digit in the range 1--5." msgstr "" +"Exception levée lorsqu'une réponse reçue du serveur ne correspond pas aux à " +"la spécification de File Transfer Protocol, c.-à-d. qu'elle doit commencer " +"par un chiffre dans l'intervalle 1-5." #: library/ftplib.rst:161 msgid "" @@ -168,9 +177,9 @@ msgid "" msgstr "" #: library/ftplib.rst:184 -#, fuzzy msgid ":class:`FTP` instances have the following methods:" -msgstr "Les instances :class:`Mailbox` contiennent les méthodes suivantes :" +msgstr "" +"Les instances de la classe :class:`FTP` possèdent les méthodes suivantes :" #: library/ftplib.rst:189 msgid "" @@ -347,10 +356,17 @@ msgid "" "directory). Multiple arguments can be used to pass non-standard options to " "the ``NLST`` command." msgstr "" +"Renvoie une liste de noms de fichiers comme celle que renvoie la commande " +"``NLST``. Le paramètre optionnel *argument* est une liste de dossiers (la " +"valeur par défaut est le répertoire courant du serveur). Plusieurs " +"paramètres peuvent être utilisés pour passer des paramètres non standards à " +"la commande ``NLST``." #: library/ftplib.rst:371 msgid "If your server supports the command, :meth:`mlsd` offers a better API." msgstr "" +"La commande :meth:`mlsd` offre une meilleure API si votre serveur sait la " +"gérer." #: library/ftplib.rst:364 msgid "" @@ -365,6 +381,7 @@ msgstr "" #: library/ftplib.rst:376 msgid "Rename file *fromname* on the server to *toname*." msgstr "" +"Renomme le fichier portant le nom *fromname* en *toname* sur le serveur." #: library/ftplib.rst:381 msgid "" @@ -379,15 +396,15 @@ msgstr "" #: library/ftplib.rst:393 msgid "Create a new directory on the server." -msgstr "" +msgstr "Crée un nouveau dossier sur le serveur." #: library/ftplib.rst:398 msgid "Return the pathname of the current directory on the server." -msgstr "" +msgstr "Renvoie le chemin d'accès au répertoire courant sur le serveur." #: library/ftplib.rst:403 msgid "Remove the directory named *dirname* on the server." -msgstr "" +msgstr "Supprime le dossier portant le nom *dirname* sur le serveur." #: library/ftplib.rst:408 msgid "" @@ -450,8 +467,8 @@ msgstr "" #: library/ftplib.rst:461 msgid "Set up secure data connection." -msgstr "" +msgstr "Établit une connexion de données sécurisée." #: library/ftplib.rst:465 msgid "Set up clear text data connection." -msgstr "" +msgstr "Établit une connexion de données non sécurisées." diff --git a/library/functions.po b/library/functions.po index 370c9e89..d8e77626 100644 --- a/library/functions.po +++ b/library/functions.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2023-03-22 22:16+0100\n" -"PO-Revision-Date: 2020-08-30 23:21+0200\n" +"PO-Revision-Date: 2023-03-22 22:49+0100\n" "Last-Translator: Antoine Wecxsteen\n" "Language-Team: French \n" "Language: fr\n" @@ -456,14 +456,13 @@ msgstr "" "*null* ;" #: library/functions.rst:153 -#, fuzzy msgid "" "If it is an object conforming to the :ref:`buffer interface " "`, a read-only buffer of the object will be used to " "initialize the bytes array." msgstr "" -"si c'est un objet conforme au protocole tampon, un tampon en lecture seule " -"de l'objet est utilisé pour initialiser le tableau ;" +"si c'est un objet conforme à :ref:`l'interface tampon `, un " +"tampon en lecture seule de l'objet est utilisé pour initialiser le tableau ;" #: library/functions.rst:156 msgid "" @@ -644,7 +643,6 @@ msgstr "" "``None`` sont affichés)." #: library/functions.rst:248 -#, fuzzy msgid "" "The optional arguments *flags* and *dont_inherit* control which :ref:" "`compiler options ` should be activated and which :ref:" @@ -658,17 +656,18 @@ msgid "" "in the surrounding code are ignored." msgstr "" "Les arguments optionnels *flags* et *dont_inherit* contrôlent quelles :ref:" -"`instructions future ` affectent la compilation de *source*. Si " -"aucun des deux n'est présent (ou que les deux sont à 0), le code est compilé " -"avec les mêmes instructions *future* que le code appelant :func:`compile`. " -"Si l'argument *flags* est fourni mais que *dont_inherit* ne l'est pas (ou " -"vaut 0), alors les instructions *futures* utilisées sont celles définies par " +"`options de compilation ` seront activées et quelles :" +"ref:`instructions future ` seront autorisées. Si aucun des deux " +"n'est présent (ou que les deux sont à 0), le code est compilé avec les mêmes " +"paramètres que le code appelant :func:`compile`. Si l'argument *flags* est " +"fourni alors que *dont_inherit* ne l'est pas (ou vaut 0), les options de " +"compilation et les instructions *futures* utilisées sont celles définies par " "*flags* en plus de celles qui auraient été utilisées. Si *dont_inherit* est " -"un entier différent de zéro, *flags* est utilisé seul — les instructions " -"futures déclarées autour de l'appel à *compile* sont ignorées." +"un entier différent de zéro, *flags* est utilisé tel quel — les *flags* " +"(instructions futures et options de compilation) valables pour le code " +"encadrant *compile* sont ignorés." #: library/functions.rst:259 -#, fuzzy msgid "" "Compiler options and future statements are specified by bits which can be " "bitwise ORed together to specify multiple options. The bitfield required to " @@ -678,10 +677,12 @@ msgid "" "flags>` can be found in :mod:`ast` module, with ``PyCF_`` prefix." msgstr "" "Les instructions *future* sont contrôlées par des bits, il est ainsi " -"possible d'en activer plusieurs en les combinant avec un *ou* binaire. Les " +"possible d'en activer plusieurs en les combinant avec un *OU* binaire. Les " "bits requis pour demander une certaine fonctionnalité se trouvent dans " "l'attribut :attr:`~__future__._Feature.compiler_flag` de la classe :class:" -"`~__future__.Feature` du module :mod:`__future__`." +"`~__future__.Feature` du module :mod:`__future__`. Les :ref:`options du " +"compilateur ` se trouvent dans le module :mod:`ast`, " +"avec le préfixe ``PyCF_``." #: library/functions.rst:267 msgid "" @@ -715,13 +716,12 @@ msgstr "" "func:`ast.parse`." #: library/functions.rst:279 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``compile`` with arguments " "``source``, ``filename``." msgstr "" -"Lève un :ref:`auditing event ` ``open`` avec les arguments " -"``file``, ``mode``, ``flags``." +"Lève un :ref:`évènement d'audit ` ``compile`` avec les arguments " +"``source`` et ``filename``." #: library/functions.rst:281 msgid "" @@ -1082,13 +1082,12 @@ msgstr "" "que des valeurs littérales." #: library/functions.rst:532 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``exec`` with argument " "``code_object``." msgstr "" -"Lève un :ref:`auditing event ` ``open`` avec les arguments " -"``file``, ``mode``, ``flags``." +"Lève un :ref:`évènement d'audit ` ``exec`` avec l'argument " +"``code_object``." #: library/functions.rst:534 msgid "" @@ -1100,7 +1099,6 @@ msgstr "" "levés." #: library/functions.rst:505 -#, fuzzy msgid "" "This function supports dynamic execution of Python code. *object* must be " "either a string or a code object. If it is a string, the string is parsed " @@ -1117,11 +1115,12 @@ msgstr "" "d'abord analysée en une suite d'instructions Python qui sont ensuite " "exécutés (sauf erreur de syntaxe). [#]_ Si c'est un objet code, il est " "simplement exécuté. Dans tous les cas, le code fourni doit être valide selon " -"les mêmes critères que s'il était un script dans un fichier (voir la section " -"« Fichier d'entrée » dans le manuel de référence du langage). Gardez en tête " -"que les mots clés :keyword:`return` et :keyword:`yield` ne peuvent pas être " -"utilisés en dehors d'une fonction, même dans du code passé à :func:`exec`. " -"La fonction renvoie ``None``." +"les mêmes critères que s'il était un script dans un fichier (voir la " +"section :ref:`Fichier d'entrée ` dans le manuel de référence du " +"langage). Gardez en tête que les mots clés :keyword:`nonlocal`, :keyword:" +"`yield` et :keyword:`return` ne peuvent pas être utilisés en dehors d'une " +"fonction, même dans du code passé à :func:`exec`. La fonction renvoie " +"``None``." #: library/functions.rst:516 msgid "" @@ -1377,18 +1376,20 @@ msgid "" "with two leading underscores) name in order to retrieve it with :func:" "`getattr`." msgstr "" +"étant donné que la :ref:`transformation des noms privés ` se produit au moment de la compilation, il faut modifier " +"manuellement le nom d'un attribut privé (attributs avec deux traits de " +"soulignement en tête) afin de le récupérer avec :func:`getattr`." #: library/functions.rst:689 -#, fuzzy msgid "" "Return the dictionary implementing the current module namespace. For code " "within functions, this is set when the function is defined and remains the " "same regardless of where the function is called." msgstr "" -"Renvoie une représentation de la table de symboles globaux sous forme d'un " -"dictionnaire. C'est toujours le dictionnaire du module courant (dans une " -"fonction ou méthode, c'est le module où elle est définie, et non le module " -"d'où elle est appelée)." +"Renvoie le dictionnaire implémentant l'espace de nommage du module actuel. " +"Pour le code dans les fonctions, il est défini lorsque la fonction est " +"définie et reste le même quel que soit le moment où la fonction est appelée." #: library/functions.rst:696 msgid "" @@ -1518,13 +1519,12 @@ msgstr "" "de vie ne se chevauchent pas peuvent partager le même :func:`id`." #: library/functions.rst:777 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``builtins.id`` with argument " "``id``." msgstr "" -"Lève un :ref:`auditing event ` ``builtins.breakpoint`` avec " -"l'argument ``breakpointhook``." +"Lève un :ref:`évènement d'audit ` ``builtins.id`` avec l'argument " +"``id``." #: library/functions.rst:782 msgid "" @@ -1547,13 +1547,12 @@ msgstr "" "fournir des fonctionnalités d'édition et d'historique élaborées." #: library/functions.rst:795 -#, fuzzy msgid "" "Raises an :ref:`auditing event ` ``builtins.input`` with argument " "``prompt``." msgstr "" -"Lève un :ref:`auditing event ` ``builtins.input`` avec l'argument " -"``prompt`` avant de lire l'entrée." +"Lève un :ref:`évènement d'audit ` ``builtins.input`` avec " +"l'argument ``prompt``." #: library/functions.rst:797 msgid "" @@ -1569,8 +1568,8 @@ msgid "" "Raises an :ref:`auditing event ` ``builtins.input/result`` with " "argument ``result``." msgstr "" -"Lève un :ref:`auditing event ` ``builtins.breakpoint`` avec " -"l'argument ``breakpointhook``." +"Lève un :ref:`évènement d'audit ` ``builtins.input/result`` avec " +"l'argument ``result``." #: library/functions.rst:802 msgid "" diff --git a/library/gc.po b/library/gc.po index 6d62e2a7..c66095df 100644 --- a/library/gc.po +++ b/library/gc.po @@ -16,7 +16,7 @@ msgstr "" #: library/gc.rst:2 msgid ":mod:`gc` --- Garbage Collector interface" -msgstr "" +msgstr ":mod:`gc` — Interface du ramasse-miettes" #: library/gc.rst:12 msgid "" @@ -31,23 +31,34 @@ msgid "" "this includes ``gc.DEBUG_SAVEALL``, causing garbage-collected objects to be " "saved in gc.garbage for inspection." msgstr "" +"Ce module constitue une interface au ramasse-miettes facultatif. Il permet " +"de désactiver le ramasse-miettes ou de régler la fréquence des passages. Il " +"fournit des options de débogage, et donne aussi accès aux objets qui ne " +"peuvent pas être détruits bien qu'ils aient été détectés comme non " +"référencés. Le ramasse-miettes vient en complément du système de comptage de " +"références, et peut donc être désactivé pour du code qui ne crée aucun cycle " +"de références. On le désactive avec ``gc.disable()``. Pour remonter à la " +"source d'une fuite de mémoire, utilisez ``gc.set_debug(gc.DEBUG_LEAK)``. " +"Notez que ``gc.DEBUG_LEAK`` inclut ``gc.DEBUG_SAVEALL``. Cette dernière " +"option fait que les objets inatteignables, au lieu d'être détruits, sont " +"placés dans la liste ``gc.garbage`` pour pouvoir y être examinés." #: library/gc.rst:23 -#, fuzzy msgid "The :mod:`gc` module provides the following functions:" -msgstr "Le module :mod:`abc` fournit également la fonction suivante :" +msgstr "Le module :mod:`gc` contient les fonctions suivantes :" #: library/gc.rst:28 msgid "Enable automatic garbage collection." -msgstr "" +msgstr "Active le ramasse-miettes." #: library/gc.rst:33 msgid "Disable automatic garbage collection." -msgstr "" +msgstr "Désactive le ramasse-miettes." #: library/gc.rst:38 msgid "Return ``True`` if automatic collection is enabled." msgstr "" +"Renvoie ``True`` ou ``False`` selon que le ramasse-miettes est activé ou non." #: library/gc.rst:43 msgid "" @@ -56,6 +67,11 @@ msgid "" "0 to 2). A :exc:`ValueError` is raised if the generation number is " "invalid. The number of unreachable objects found is returned." msgstr "" +"Déclenche un passage du ramasse-miettes. En l'absence d'argument, un passage " +"complet est effectué. Le paramètre *generation* permet de le limiter à une " +"génération entre 0 et 2. Une exception :exc:`ValueError` est levée si le " +"numéro de la génération n'est pas valide. Cette fonction renvoie le nombre " +"d'objets inatteignables qui ont été détectés." #: library/gc.rst:48 msgid "" @@ -71,10 +87,13 @@ msgid "" "written to ``sys.stderr``. See below for a list of debugging flags which " "can be combined using bit operations to control debugging." msgstr "" +"Change les options de débogage du ramasse-miettes, qui activent l'écriture " +"d'informations sur ``sys.stderr``. Une liste d'options se trouve plus bas. " +"Les options peuvent se combiner par les opérateurs bit à bit." #: library/gc.rst:63 msgid "Return the debugging flags currently set." -msgstr "" +msgstr "Renvoie les options de débogage actives." #: library/gc.rst:68 msgid "" @@ -82,16 +101,21 @@ msgid "" "returned. If *generation* is not None, return only the objects tracked by " "the collector that are in that generation." msgstr "" +"Renvoie la liste des objets suivis par le ramasse-miettes, à l'exclusion de " +"cette liste elle-même. Le paramètre facultatif *generation* restreint la " +"liste aux objets d'une génération particulière." #: library/gc.rst:72 msgid "New *generation* parameter." -msgstr "" +msgstr "ajout du paramètre *generation*." #: library/gc.rst:75 msgid "" "Raises an :ref:`auditing event ` ``gc.get_objects`` with argument " "``generation``." msgstr "" +"Lève un :ref:`événement d'audit ` ``gc.get_objects`` avec " +"l'argument ``generation``." #: library/gc.rst:79 msgid "" @@ -99,16 +123,24 @@ msgid "" "statistics since interpreter start. The number of keys may change in the " "future, but currently each dictionary will contain the following items:" msgstr "" +"Renvoie une liste de trois dictionnaires, un par génération. Ils contiennent " +"des statistiques sur l'action du ramasse-miettes depuis le lancement de " +"l'interpréteur. Les clés actuellement présentes sont les suivantes (d'autres " +"pourraient être ajoutées dans des versions ultérieures) :" #: library/gc.rst:84 msgid "``collections`` is the number of times this generation was collected;" msgstr "" +"``collections``, le nombre de fois où cette génération a été examinée par le " +"ramasse-miettes ;" #: library/gc.rst:86 msgid "" "``collected`` is the total number of objects collected inside this " "generation;" msgstr "" +"``collected``, le nombre total d'objets qui ont été détruits alors qu'ils " +"étaient dans cette génération ;" #: library/gc.rst:89 msgid "" @@ -116,12 +148,18 @@ msgid "" "uncollectable (and were therefore moved to the :data:`garbage` list) inside " "this generation." msgstr "" +"``uncollectable``, le nombre total d'objets qui ont été identifiés comme " +"indestructibles (et donc ajoutés à la liste :data:`garbage`) au sein de " +"cette génération." #: library/gc.rst:98 msgid "" "Set the garbage collection thresholds (the collection frequency). Setting " "*threshold0* to zero disables collection." msgstr "" +"Règle les seuils de déclenchement du ramasse-miettes, qui déterminent sa " +"fréquence de passage. Si *threshold0* est mis à zéro, le ramasse-miettes ne " +"passe jamais." #: library/gc.rst:101 msgid "" @@ -141,18 +179,36 @@ msgid "" "org/garbage_collector/#collecting-the-oldest-generation>`_ for more " "information." msgstr "" +"Les objets sont répartis en trois générations en fonction du nombre de " +"passages du ramasse-miettes qui les ont laissés intacts. Les objets " +"fraîchement créés sont placés dans la génération la plus jeune, numéro 0. À " +"chaque fois qu'un objet persiste à la suite d'un passage du ramasse-miettes, " +"il monte d'une génération, ceci jusqu'à la génération 2, la plus âgée. Le " +"ramasse-miettes se déclenche en fonction du nombre d'allocations et de " +"destructions depuis le passage précédent : lorsque les allocations moins les " +"destructions font plus que *threshold0*, un passage est initié. Lors des " +"premiers passages, seule la génération 0 est inspectée. La génération 1 est " +"examinée périodiquement, lorsque le nombre de passages sur la génération 0 " +"depuis le dernier passage ayant aussi examiné la génération 1 vient à " +"excéder *threshold1*. Les règles pour la génération 2 sont plus complexes. " +"Pour avoir des détails, voir `Collecting the oldest generation `_ " +"(dans le guide du développeur, en anglais)." #: library/gc.rst:118 msgid "" "Return the current collection counts as a tuple of ``(count0, count1, " "count2)``." msgstr "" +"Renvoie un triplet des nombres totaux de passages effectués par génération." #: library/gc.rst:124 msgid "" "Return the current collection thresholds as a tuple of ``(threshold0, " "threshold1, threshold2)``." msgstr "" +"Renvoie les seuils de passage sous la forme du triplet ``(threshold0, " +"threshold1, threshold2)``." #: library/gc.rst:130 msgid "" @@ -161,6 +217,11 @@ msgid "" "extension types which do refer to other objects but do not support garbage " "collection will not be found." msgstr "" +"Renvoie la liste des objets qui contiennent directement une référence à l'un " +"quelconque des arguments. Il est à noter que cette fonction prend uniquement " +"en compte les objets suivis par le ramasse-miettes, ce qui exclut les " +"instances de certains types d'extension qui contiennent bien des références " +"sans pour autant prendre en charge le ramassage des miettes." #: library/gc.rst:135 msgid "" @@ -169,6 +230,9 @@ msgid "" "listed among the resulting referrers. To get only currently live objects, " "call :func:`collect` before calling :func:`get_referrers`." msgstr "" +"La liste renvoyée peut contenir des objets déjà isolés, mais maintenus en " +"mémoire à cause d'un cycle. Pour les exclure, appelez :func:`collect` juste " +"avant :func:`get_referrers`." #: library/gc.rst:141 msgid "" @@ -177,12 +241,18 @@ msgid "" "temporarily invalid state. Avoid using :func:`get_referrers` for any purpose " "other than debugging." msgstr "" +"La manipulation des objets renvoyés par :func:`get_referrers` est hasardeuse " +"car ils risquent d'être encore en cours d'initialisation, donc dans un état " +"temporairement instable. Mieux vaut réserver :func:`get_referrers` au " +"débogage." #: library/gc.rst:146 msgid "" "Raises an :ref:`auditing event ` ``gc.get_referrers`` with " "argument ``objs``." msgstr "" +"Lève un :ref:`événement d'audit ` ``gc.get_referrers`` avec " +"l'argument ``objs``." #: library/gc.rst:151 msgid "" @@ -195,12 +265,25 @@ msgid "" "example, if an integer is directly reachable from an argument, that integer " "object may or may not appear in the result list." msgstr "" +"Renvoie une liste des objets pointés par les références que contiennent les " +"arguments. Ils sont déterminés en appelant, si présente, la méthode C :c:" +"member:`~PyTypeObject.tp_traverse` de chaque argument, qui visite les objets " +"auxquels cet argument fait référence. Il est à noter que :c:member:" +"`~PyTypeObject.tp_traverse` n'est définie que par les objets qui gèrent le " +"ramassage des miettes, et n'a l'obligation de visiter que les objets qui " +"peuvent potentiellement faire partie d'un cycle. Ainsi, la liste renvoyée " +"par cette fonction ne contient par forcément tous les objets qu'il est " +"possible d'atteindre à partir des arguments. Par exemple, si l'un des " +"arguments contient un entier, ce dernier objet peut être présent ou non dans " +"la liste." #: library/gc.rst:159 msgid "" "Raises an :ref:`auditing event ` ``gc.get_referents`` with " "argument ``objs``." msgstr "" +"Lève un :ref:`événement d'audit ` ``gc.get_referents`` avec " +"l'argument ``objs``." #: library/gc.rst:163 msgid "" @@ -211,12 +294,21 @@ msgid "" "present in order to suppress the garbage collector footprint of simple " "instances (e.g. dicts containing only atomic keys and values)::" msgstr "" +"Renvoie ``True`` ou ``False`` selon que l'argument est suivi ou non par le " +"ramasse-miettes. En règle générale, les objets atomiques ne sont pas suivis, " +"tandis que les objets non-atomiques, tels que les conteneurs et instances de " +"classes définies par l'utilisateur, le sont. Cependant, certains types " +"présentent des optimisations qui permettent de se passer avantageusement du " +"ramasse-miettes dans les cas simples, comme les dictionnaires dont toutes " +"les clés et valeurs sont atomiques :" #: library/gc.rst:188 msgid "" "Returns ``True`` if the given object has been finalized by the garbage " "collector, ``False`` otherwise. ::" msgstr "" +"Renvoie ``True`` ou ``False`` selon que l'argument a été finalisé par le " +"ramasse-miettes." #: library/gc.rst:209 msgid "" @@ -243,6 +335,8 @@ msgid "" "The following variables are provided for read-only access (you can mutate " "the values but should not rebind them):" msgstr "" +"Les variables suivantes sont publiques, mais elles ne sont pas censées être " +"modifiées (vous pouvez les muter, mais pas les redéfinir)." #: library/gc.rst:239 msgid "" @@ -251,12 +345,19 @@ msgid "" "should be empty most of the time, except when using instances of C extension " "types with a non-``NULL`` ``tp_del`` slot." msgstr "" +"Liste des objets indestructibles, que le ramasse-miettes n'a pas pu éliminer " +"bien qu'ils soient inatteignables. Depuis Python 3.4, cette liste demeure la " +"plupart du temps vide. Elle peut se remplir si le programme fait appel à des " +"types d'extension définis en C avec un champ ``tp_del`` différent de " +"``NULL``." #: library/gc.rst:244 msgid "" "If :const:`DEBUG_SAVEALL` is set, then all unreachable objects will be added " "to this list rather than freed." msgstr "" +"Si :const:`DEBUG_SAVEALL` est actif, tous les objets inatteignables sont " +"ajoutés à cette liste au lieu d'être détruits." #: library/gc.rst:247 msgid "" @@ -265,12 +366,19 @@ msgid "" "`DEBUG_UNCOLLECTABLE` is set, in addition all uncollectable objects are " "printed." msgstr "" +"Si cette liste n'est pas vide lors de l':term:`arrêt de l'interpréteur " +"`, un :exc:`ResourceWarning` est émis (les " +"avertissements de ce type sont silencieux par défaut). De plus, si :const:" +"`DEBUG_UNCOLLECTABLE` est actif, tous les objets indestructibles sont " +"affichés." #: library/gc.rst:253 msgid "" "Following :pep:`442`, objects with a :meth:`__del__` method don't end up in :" "attr:`gc.garbage` anymore." msgstr "" +"en application de la :pep:`442`, les objets qui définissent une méthode :" +"meth:`__del__` ne finissent plus dans :attr:`gc.garbage`." #: library/gc.rst:259 msgid "" @@ -278,72 +386,92 @@ msgid "" "after collection. The callbacks will be called with two arguments, *phase* " "and *info*." msgstr "" +"Liste de fonctions de rappel lancées par le ramasse-miettes avant et après " +"un passage. Elles prennent deux arguments, *phase* et *info*." #: library/gc.rst:263 msgid "*phase* can be one of two values:" -msgstr "" +msgstr "*phase* peut prendre deux valeurs :" #: library/gc.rst:265 msgid "\"start\": The garbage collection is about to start." -msgstr "" +msgstr "``\"start\"`` lorsque le passage du ramasse-miettes est imminent." #: library/gc.rst:267 msgid "\"stop\": The garbage collection has finished." msgstr "" +"``\"stop\"`` lorsque le passage du ramasse-miettes vient de se terminer." #: library/gc.rst:269 msgid "" "*info* is a dict providing more information for the callback. The following " "keys are currently defined:" msgstr "" +"*info* est un dictionnaire qui donne plus d'informations à la fonction de " +"rappel. Les clés suivantes sont actuellement présentes :" #: library/gc.rst:272 msgid "\"generation\": The oldest generation being collected." -msgstr "" +msgstr "``\"generation\"``, la génération la plus âgée intégrée à ce passage ;" #: library/gc.rst:274 msgid "" "\"collected\": When *phase* is \"stop\", the number of objects successfully " "collected." msgstr "" +"``\"collected\"`` : si *phase* vaut ``\"stop\"``, le nombre d'objets " +"détruits avec succès ;" #: library/gc.rst:277 msgid "" "\"uncollectable\": When *phase* is \"stop\", the number of objects that " "could not be collected and were put in :data:`garbage`." msgstr "" +"``\"uncollectable\"`` : si *phase* vaut ``\"stop\"``, le nombre d'objets " +"indestructibles ajoutés à :data:`garbage`." #: library/gc.rst:280 msgid "" "Applications can add their own callbacks to this list. The primary use " "cases are:" msgstr "" +"Toute application peut ajouter ses propres fonctions de rappel à cette " +"liste. Voici les principales applications :" #: library/gc.rst:283 msgid "" "Gathering statistics about garbage collection, such as how often various " "generations are collected, and how long the collection takes." msgstr "" +"Faire des statistiques sur le passage du ramasse-miettes, par exemple la " +"fréquence à laquelle chaque génération est examinée, ou bien le temps d'un " +"passage ;" #: library/gc.rst:287 msgid "" "Allowing applications to identify and clear their own uncollectable types " "when they appear in :data:`garbage`." msgstr "" +"Identifier les types définis par une application dont les instances " +"s'ajoutent à :data:`garbage` car elles sont indestructibles." #: library/gc.rst:293 msgid "The following constants are provided for use with :func:`set_debug`:" msgstr "" +"Les constantes suivantes définissent les options de débogage que l'on peut " +"passer à :func:`set_debug` :" #: library/gc.rst:298 msgid "" "Print statistics during collection. This information can be useful when " "tuning the collection frequency." msgstr "" +"Affiche des statistiques durant les passages du ramasse-miettes. Utile pour " +"pouvoir régler la fréquence des passages." #: library/gc.rst:304 msgid "Print information on collectable objects found." -msgstr "" +msgstr "Affiche des informations sur les objets détruits." #: library/gc.rst:309 msgid "" @@ -351,18 +479,27 @@ msgid "" "reachable but cannot be freed by the collector). These objects will be " "added to the ``garbage`` list." msgstr "" +"Affiche des informations sur les objets indestructibles (ceux qui sont " +"ajoutés à la liste ``garbage``, qui sont inatteignables mais dont la mémoire " +"ne peut pas être libérée)." #: library/gc.rst:313 msgid "" "Also print the contents of the :data:`garbage` list at :term:`interpreter " "shutdown`, if it isn't empty." msgstr "" +"Affiche également le contenu de :data:`garbage` à l':term:`arrêt de " +"l'interpréteur `, pour peu que cette liste ne soit pas " +"vide." #: library/gc.rst:319 msgid "" "When set, all unreachable objects found will be appended to *garbage* rather " "than being freed. This can be useful for debugging a leaking program." msgstr "" +"Lorsque cette option est active, les objets inatteignables sont ajoutés à la " +"liste *garbage* au lieu d'être supprimés. Ceci est utile pour déboguer une " +"fuite de mémoire." #: library/gc.rst:325 msgid "" @@ -370,3 +507,5 @@ msgid "" "leaking program (equal to ``DEBUG_COLLECTABLE | DEBUG_UNCOLLECTABLE | " "DEBUG_SAVEALL``)." msgstr "" +"Combinaison des options utiles au débogage d'une fuite de mémoire. Il s'agit " +"d'un raccourci pour ``DEBUG_COLLECTABLE|DEBUG_UNCOLLECTABLE|DEBUG_SAVEALL``." diff --git a/library/glob.po b/library/glob.po index 3d495fb5..20ea1d5a 100644 --- a/library/glob.po +++ b/library/glob.po @@ -89,23 +89,24 @@ msgstr "" "shell)." #: library/glob.rst:56 -#, fuzzy msgid "" "If *recursive* is true, the pattern \"``**``\" will match any files and zero " "or more directories, subdirectories and symbolic links to directories. If " "the pattern is followed by an :data:`os.sep` or :data:`os.altsep` then files " "will not match." msgstr "" -"Si *recursive* est vrai, le motif \"``**``\" reconnaît tous les fichiers et, " -"zéro ou plus répertoires et sous-répertoires. Si le motif est suivi par un " -"caractère de séparation ``os.sep``, seuls les répertoires et sous-" -"répertoires sont reconnus." +"Si *recursive* est vrai, le motif \"``**``\" reconnaît tous les fichiers, " +"aucun ou plusieurs répertoires, sous-répertoires et liens symboliques aux " +"répertoires. Si le motif est suivi par :data:`os.sep` ou :data:`os.altsep` " +"alors les fichiers ne sont pas inclus dans le résultat." #: library/glob.rst:76 msgid "" "Raises an :ref:`auditing event ` ``glob.glob`` with arguments " "``pathname``, ``recursive``." msgstr "" +"Lève un :ref:`évènement d'audit ` ``glob.glob`` avec les arguments " +"``pathname``, ``recursive``." #: library/glob.rst:64 msgid "" diff --git a/library/graphlib.po b/library/graphlib.po index 10f64ff5..c6a76154 100644 --- a/library/graphlib.po +++ b/library/graphlib.po @@ -17,14 +17,18 @@ msgstr "" #: library/graphlib.rst:2 msgid ":mod:`graphlib` --- Functionality to operate with graph-like structures" msgstr "" +":mod:`graphlib` — Fonctionnalités pour travailler avec des structures de " +"type graphe" #: library/graphlib.rst:8 msgid "**Source code:** :source:`Lib/graphlib.py`" -msgstr "" +msgstr "**Code source:** :source:`Lib/graphlib.py`" #: library/graphlib.rst:20 msgid "Provides functionality to topologically sort a graph of hashable nodes." msgstr "" +"Fournit les fonctionnalités pour trier topologiquement un graphe de nœuds " +"hachables." #: library/graphlib.rst:22 msgid "" @@ -37,6 +41,14 @@ msgid "" "topological ordering is possible if and only if the graph has no directed " "cycles, that is, if it is a directed acyclic graph." msgstr "" +"L'ordre topologique est un ordre linéaire des sommets d'un graphe afin que " +"pour chaque arête u → v d'un sommet u à un sommet v, cet ordre va placer le " +"sommet u avant le sommet v. Par exemple, les sommets d'un graphe peuvent " +"représenter une tâche à faire et une arête peut représenter la contrainte " +"comme quoi telle tâche doit être réalisée avant telle autre. Dans cet " +"exemple, un ordre topologique est simplement une séquence valide pour ces " +"tâches. Cet ordre n'est possible que si le graphe n'a pas de circuit, c'est-" +"à-dire si c'est un graphe orienté acyclique." #: library/graphlib.rst:31 msgid "" @@ -46,26 +58,35 @@ msgid "" "nodes that have edges that point to the value in the key). Additional nodes " "can be added to the graph using the :meth:`~TopologicalSorter.add` method." msgstr "" +"Si l'argument optionnel *graph* est fourni, cela doit être un dictionnaire " +"représentant un graphe acyclique avec comme clés les nœuds et comme valeurs " +"des itérables sur les prédécesseurs de ces nœuds dans le graphe (les nœuds " +"qui ont des arêtes qui pointent vers la valeur de la clé). Les nœuds " +"s'ajoutent en utilisant la méthode :meth:`~TopologicalSorter.add`" #: library/graphlib.rst:37 msgid "" "In the general case, the steps required to perform the sorting of a given " "graph are as follows:" msgstr "" +"De manière générale, les étapes nécessaires pour trier un graphe donné sont " +"les suivantes :" #: library/graphlib.rst:40 msgid "" "Create an instance of the :class:`TopologicalSorter` with an optional " "initial graph." msgstr "" +"créer une instance de la classe :class:`TopologicalSorter` avec " +"éventuellement un graphe initial ;" #: library/graphlib.rst:42 msgid "Add additional nodes to the graph." -msgstr "" +msgstr "ajouter d'autres nœuds au graphe ;" #: library/graphlib.rst:43 msgid "Call :meth:`~TopologicalSorter.prepare` on the graph." -msgstr "" +msgstr "appeler :meth:`~TopologicalSorter.prepare` sur le graphe ;" #: library/graphlib.rst:44 msgid "" @@ -73,6 +94,10 @@ msgid "" "nodes returned by :meth:`~TopologicalSorter.get_ready` and process them. " "Call :meth:`~TopologicalSorter.done` on each node as it finishes processing." msgstr "" +"tant que :meth:`~TopologicalSorter.is_active` est à ``True``, itérer sur les " +"nœuds renvoyés par :meth:`~TopologicalSorter.get_ready` pour les traiter. " +"Appeler :meth:`~TopologicalSorter.done` sur chaque nœud une fois le " +"traitement terminé." #: library/graphlib.rst:49 msgid "" @@ -80,24 +105,34 @@ msgid "" "no parallelism is involved, the convenience method :meth:`TopologicalSorter." "static_order` can be used directly:" msgstr "" +"Si vous souhaitez simplement trier des nœuds du graphe sans parallélisme, la " +"méthode :meth:`TopologicalSorter.static_order` peut être utilisée " +"directement :" #: library/graphlib.rst:60 msgid "" "The class is designed to easily support parallel processing of the nodes as " "they become ready. For instance::" msgstr "" +"La classe est conçue pour prendre facilement en charge le traitement en " +"parallèle des nœuds quand ils deviennent disponibles. Par exemple ::" #: library/graphlib.rst:87 msgid "" "Add a new node and its predecessors to the graph. Both the *node* and all " "elements in *predecessors* must be hashable." msgstr "" +"Ajoute un nouveau nœud et son prédécesseur dans le graphe. Le *node* ainsi " +"que tous les éléments dans *predecessors* doivent être hachables." #: library/graphlib.rst:90 msgid "" "If called multiple times with the same node argument, the set of " "dependencies will be the union of all dependencies passed in." msgstr "" +"S'il est appelé plusieurs fois avec le même nœud en tant qu'argument, " +"l'ensemble des dépendances sera l'union de toutes les dépendances qui auront " +"été transmises." #: library/graphlib.rst:93 msgid "" @@ -106,11 +141,17 @@ msgid "" "provided before is included among *predecessors* it will be automatically " "added to the graph with no predecessors of its own." msgstr "" +"Il est possible d'ajouter un nœud sans dépendance (*predecessors* n'est pas " +"fourni) ou de fournir une dépendance deux fois. Si un nœud qui n'a jamais " +"été fourni auparavant est inclus dans *predecessors* il sera automatiquement " +"ajouté au graphe sans prédécesseur lui-même." #: library/graphlib.rst:98 msgid "" "Raises :exc:`ValueError` if called after :meth:`~TopologicalSorter.prepare`." msgstr "" +"Lève une :exc:`ValueError` si appelée après :meth:`~TopologicalSorter." +"prepare`." #: library/graphlib.rst:102 msgid "" @@ -121,6 +162,12 @@ msgid "" "be modified, and therefore no more nodes can be added using :meth:" "`~TopologicalSorter.add`." msgstr "" +"Indique que le graphe est terminé et vérifie les circuits du graphe. Si un " +"circuit est détecté, une :exc:`CycleError` est levée mais :meth:" +"`~TopologicalSorter.get_ready` peut encore être utilisée pour obtenir autant " +"de nœuds que possible avant que les circuits ne bloquent la progression. " +"Après un appel de cette fonction, le graphe ne peut pas être modifié, et " +"donc aucun nœud ne peut être ajouté avec :meth:`~TopologicalSorter.add`." #: library/graphlib.rst:111 msgid "" @@ -131,22 +178,32 @@ msgid "" "`TopologicalSorter.done` is less than the number that have been returned by :" "meth:`TopologicalSorter.get_ready`." msgstr "" +"Renvoie ``True`` si une progression peut être faite et ``False`` dans le cas " +"contraire. La progression est possible si des circuits ne bloquent pas la " +"résolution ou qu'il reste des nœuds prêts qui n'ont pas encore été renvoyés " +"par :meth:`TopologicalSorter.get_ready` ou que le nombre de nœuds marqués :" +"meth:`TopologicalSorter.done` est inférieur au nombre qui a été renvoyé par :" +"meth:`TopologicalSorter.get_ready`." #: library/graphlib.rst:118 msgid "" "The :meth:`~TopologicalSorter.__bool__` method of this class defers to this " "function, so instead of::" msgstr "" +"La méthode :meth:`~TopologicalSorter.__bool__` de cette classe renvoie à " +"cette fonction donc au lieu de ::" #: library/graphlib.rst:124 msgid "it is possible to simply do::" -msgstr "" +msgstr "il est plus simple de faire ::" #: library/graphlib.rst:152 msgid "" "Raises :exc:`ValueError` if called without calling :meth:`~TopologicalSorter." "prepare` previously." msgstr "" +"Lève une :exc:`ValueError` si l'appel à :meth:`~TopologicalSorter.prepare` " +"n'a pas été fait au préalable." #: library/graphlib.rst:134 msgid "" @@ -154,6 +211,9 @@ msgid "" "processed, unblocking any successor of each node in *nodes* for being " "returned in the future by a call to :meth:`TopologicalSorter.get_ready`." msgstr "" +"Marque un ensemble de nœuds renvoyé par :meth:`TopologicalSorter.get_ready` " +"comme traités, permettant aux successeurs de chaque nœud de *nodes* d'être " +"renvoyés lors d'un prochain appel à :meth:`~TopologicalSorter.get_ready`." #: library/graphlib.rst:138 msgid "" @@ -163,6 +223,11 @@ msgid "" "meth:`~TopologicalSorter.prepare` or if node has not yet been returned by :" "meth:`~TopologicalSorter.get_ready`." msgstr "" +"Lève une :exc:`ValueError` si n'importe quel nœud dans *nodes* a déjà été " +"marqué comme traité par un précédent appel à cette méthode ou si un nœud n'a " +"pas été ajouté au graphe en utilisant :meth:`TopologicalSorter.add`, si " +"l'appel est fait sans appel à :meth:`~TopologicalSorter.prepare` ou si le " +"nœud n'a pas encore été renvoyé par :meth:`~TopologicalSorter.get_ready`." #: library/graphlib.rst:146 msgid "" @@ -172,6 +237,11 @@ msgid "" "nodes that have all their predecessors already processed. Once no more " "progress can be made, empty tuples are returned." msgstr "" +"Renvoie un *n*-uplet avec tous les nœuds prêts. Renvoie d'abord tous les " +"nœuds sans prédécesseurs, et une fois marqués comme traités avec un appel " +"de :meth:`TopologicalSorter.done`, les autres appels renvoient tous les " +"nouveaux nœuds dont tous les prédécesseurs sont traités. Une fois que la " +"progression n'est plus possible, des tuples vides sont renvoyés." #: library/graphlib.rst:157 msgid "" @@ -186,6 +256,8 @@ msgid "" "The particular order that is returned may depend on the specific order in " "which the items were inserted in the graph. For example:" msgstr "" +"Le tri obtenu peut dépendre de l'ordre dans lequel les éléments ont été " +"ajoutés dans le graphe. Par exemple :" #: library/graphlib.rst:186 msgid "" @@ -194,10 +266,14 @@ msgid "" "`~TopologicalSorter.get_ready`) and the order between them is determined by " "the order of insertion." msgstr "" +"Ceci est dû au fait que \"0\" et \"2\" sont au même niveau dans le graphe " +"(ils auraient été renvoyés dans le même appel à :meth:`~TopologicalSorter." +"get_ready`) et l'ordre entre eux est déterminé par l'ordre lors de " +"l'insertion." #: library/graphlib.rst:192 msgid "If any cycle is detected, :exc:`CycleError` will be raised." -msgstr "" +msgstr "Si un circuit est détecté alors une :exc:`CycleError` est levée." #: library/graphlib.rst:198 msgid "Exceptions" @@ -205,7 +281,7 @@ msgstr "Exceptions" #: library/graphlib.rst:199 msgid "The :mod:`graphlib` module defines the following exception classes:" -msgstr "" +msgstr "Le module :mod:`graphlib` définit les classes d'exceptions suivantes :" #: library/graphlib.rst:203 msgid "" @@ -213,6 +289,9 @@ msgid "" "cycles exist in the working graph. If multiple cycles exist, only one " "undefined choice among them will be reported and included in the exception." msgstr "" +"Une classe héritant de :exc:`ValueError` levée par :meth:`TopologicalSorter." +"prepare` si un circuit existe dans le graphe courant. Si plusieurs circuits " +"existent, un seul est inclus dans l'exception." #: library/graphlib.rst:207 msgid "" @@ -222,3 +301,8 @@ msgid "" "predecessor of the next node in the list. In the reported list, the first " "and the last node will be the same, to make it clear that it is cyclic." msgstr "" +"On accède au circuit détecté via le second élément de l'attribut :attr:" +"`~CycleError.args` de l'instance de l'exception. Cet attribut est une liste " +"de nœuds où chaque nœud est, dans le graphe, un prédécesseur immédiat du " +"nœud suivant de la liste. Dans la liste renvoyée, le premier et le dernier " +"nœud sont les mêmes afin de bien indiquer que c'est un circuit." diff --git a/library/html.parser.po b/library/html.parser.po index 28b7ae9b..fe488300 100644 --- a/library/html.parser.po +++ b/library/html.parser.po @@ -16,12 +16,11 @@ msgstr "" #: library/html.parser.rst:2 msgid ":mod:`html.parser` --- Simple HTML and XHTML parser" -msgstr "" +msgstr ":mod:`html.parser`— Un analyseur syntaxique simple pour HTML et XHTML" #: library/html.parser.rst:7 -#, fuzzy msgid "**Source code:** :source:`Lib/html/parser.py`" -msgstr "**Code source :** :source:`Lib/email/parser.py`" +msgstr "**Code source :** :source:`Lib/html/parser.py`" #: library/html.parser.rst:15 msgid "" @@ -29,10 +28,17 @@ msgid "" "for parsing text files formatted in HTML (HyperText Mark-up Language) and " "XHTML." msgstr "" +"Ce module définit une classe :class:`HTMLParser` qui sert de base pour " +"l'analyse syntaxique de fichiers texte formatés HTML (*HyperText Mark-up " +"Language*, le « langage de balisage hypertexte ») et XHTML (*EXtensible " +"HyperText Markup Language*, le « langage extensible de balisage " +"hypertexte »)." #: library/html.parser.rst:20 msgid "Create a parser instance able to parse invalid markup." msgstr "" +"Crée une instance d'analyseur capable de traiter tout balisage, même " +"invalide." #: library/html.parser.rst:22 msgid "" @@ -40,6 +46,9 @@ msgid "" "(except the ones in ``script``/``style`` elements) are automatically " "converted to the corresponding Unicode characters." msgstr "" +"Si *convert_charrefs* est ``True`` (valeur par défaut), toute référence de " +"caractère (sauf ceux enchâssés dans des éléments ``script``/``style``) est " +"automatiquement convertie en son caractère Unicode." #: library/html.parser.rst:26 msgid "" @@ -48,6 +57,11 @@ msgid "" "encountered. The user should subclass :class:`.HTMLParser` and override its " "methods to implement the desired behavior." msgstr "" +"Une instance de :class:`.HTMLParser` est alimentée par des données HTML. " +"Elle fait appel à des méthodes offrant un traitement spécifique quand est " +"rencontré un élément de balisage : balise ouvrante ou fermante, textes, " +"commentaires… Pour implémenter le comportement désiré, l'utilisateur crée " +"une sous-classe de :class:`.HTMLParser` en surchargeant ses méthodes." #: library/html.parser.rst:31 msgid "" @@ -55,18 +69,22 @@ msgid "" "tag handler for elements which are closed implicitly by closing an outer " "element." msgstr "" +"Cet analyseur ne vérifie ni que les balises fermantes correspondent aux " +"balises ouvrantes, ni n'invoque le gestionnaire de balises fermantes pour " +"les éléments implicitement fermés par un élément extérieur." #: library/html.parser.rst:34 msgid "*convert_charrefs* keyword argument added." -msgstr "" +msgstr "L'argument *convert_charrefs* a été ajouté." #: library/html.parser.rst:37 msgid "The default value for argument *convert_charrefs* is now ``True``." msgstr "" +"La valeur par défaut de l'argument *convert_charrefs* est désormais ``True``." #: library/html.parser.rst:42 msgid "Example HTML Parser Application" -msgstr "" +msgstr "Exemple d'application de l'analyseur HTML" #: library/html.parser.rst:44 msgid "" @@ -74,20 +92,22 @@ msgid "" "`HTMLParser` class to print out start tags, end tags, and data as they are " "encountered::" msgstr "" +"Comme exemple simple, un analyseur HTML minimal qui utilise la classe :class:" +"`HTMLParser` pour afficher les balises ouvrantes, les balises fermantes " +"ainsi que les données quand elles apparaissent ::" #: library/html.parser.rst:64 msgid "The output will then be:" -msgstr "" +msgstr "La sortie est alors :" #: library/html.parser.rst:83 msgid ":class:`.HTMLParser` Methods" -msgstr "" +msgstr "Méthodes de la classe :class:`.HTMLParser`" #: library/html.parser.rst:85 -#, fuzzy msgid ":class:`HTMLParser` instances have the following methods:" msgstr "" -"Les instances de :class:`!HTMLCalendar` utilisent les méthodes suivantes :" +"Les instances de :class:`HTMLParser` disposent des méthodes suivantes :" #: library/html.parser.rst:90 msgid "" @@ -95,6 +115,11 @@ msgid "" "complete elements; incomplete data is buffered until more data is fed or :" "meth:`close` is called. *data* must be :class:`str`." msgstr "" +"Alimente l'analyseur avec du texte. Ce texte est traité dans la mesure où il " +"constitue des éléments complets ; les données incomplètes sont mises dans un " +"tampon jusqu'à ce que d'autres données soient fournies ou que la méthode :" +"meth:`close` soit appelée. L'argument *data* doit être de classe :class:" +"`str`." #: library/html.parser.rst:97 msgid "" @@ -103,16 +128,25 @@ msgid "" "additional processing at the end of the input, but the redefined version " "should always call the :class:`HTMLParser` base class method :meth:`close`." msgstr "" +"Force le traitement de toutes les données du tampon comme si elles étaient " +"suivies par un caractère *fin de fichier*. Cette méthode peut-être redéfinie " +"par une classe dérivée pour ajouter des traitements supplémentaires à la fin " +"de l'entrée, mais la version redéfinie devra impérativement appeler la " +"méthode :meth:`close` de la classe de base :class:`HTMLParser`." #: library/html.parser.rst:105 msgid "" "Reset the instance. Loses all unprocessed data. This is called implicitly " "at instantiation time." msgstr "" +"Réinitialise l'instance. Toutes les données non traitées sont perdues. Cette " +"méthode est appelée implicitement lors de l'instanciation." #: library/html.parser.rst:111 msgid "Return current line number and offset." msgstr "" +"Renvoie le numéro de ligne et le numéro du caractère dans la ligne où le " +"curseur est positionné." #: library/html.parser.rst:116 msgid "" @@ -129,12 +163,18 @@ msgid "" "class implementations do nothing (except for :meth:`~HTMLParser." "handle_startendtag`):" msgstr "" +"Les méthodes suivantes sont appelées lors de la rencontre de données ou " +"d'éléments de balisage ; elles sont destinées à être surchargées par la sous-" +"classe. L'implémentation de la classe de base ne fait rien (sauf pour ce qui " +"est de :meth:`~HTMLParser.handle_startendtag`) :" #: library/html.parser.rst:129 msgid "" "This method is called to handle the start tag of an element (e.g. ``
``)." msgstr "" +"Cette méthode est appelée pour traiter une balise ouvrante (p. ex. ``
``)." #: library/html.parser.rst:131 msgid "" @@ -144,6 +184,12 @@ msgid "" "translated to lower case, and quotes in the *value* have been removed, and " "character and entity references have been replaced." msgstr "" +"L'argument *tag* contient le nom de la balise en minuscules. L'argument " +"*attrs* contient une liste de *n-uplets* ``(name, value)`` regroupant les " +"attributs présents entre les symboles ``<`` et ``>`` de la balise. Le " +"paramètre *name* est converti en minuscule ; les guillemets sont supprimés " +"du paramètre *value* et toute entité de référence ou de caractère est " +"remplacée." #: library/html.parser.rst:137 msgid "" @@ -151,21 +197,28 @@ msgid "" "would be called as ``handle_starttag('a', [('href', 'https://www.cwi." "nl/')])``." msgstr "" +"Par exemple, pour la balise ````, cette " +"méthode est appelée par ``handle_starttag('a', [('href', 'https://www.cwi." +"nl/')])``." #: library/html.parser.rst:140 msgid "" "All entity references from :mod:`html.entities` are replaced in the " "attribute values." msgstr "" +"Toute référence d'entité présente dans :mod:`html.entities` est remplacée " +"dans la valeur des attributs." #: library/html.parser.rst:146 msgid "" "This method is called to handle the end tag of an element (e.g. ``
``)." msgstr "" +"Cette méthode est appelée pour traiter les balises fermantes (p. ex. ````)." #: library/html.parser.rst:148 msgid "The *tag* argument is the name of the tag converted to lower case." -msgstr "" +msgstr "L'argument *tag* est le nom de la balise en minuscules." #: library/html.parser.rst:153 msgid "" @@ -175,12 +228,20 @@ msgid "" "implementation simply calls :meth:`handle_starttag` and :meth:" "`handle_endtag`." msgstr "" +"Traitée de façon similaire à :meth:`handle_starttag`, mais appelée quand " +"l'analyseur rencontre une balise vide de type *XHTML* (p. ex. ````). Cette méthode peut-être surchargée par les sous-classes demandant " +"cette information lexicale ; l'implémentation par défaut appelle simplement :" +"meth:`handle_starttag` et :meth:`handle_endtag`." #: library/html.parser.rst:161 msgid "" "This method is called to process arbitrary data (e.g. text nodes and the " "content of ```` and ````)." msgstr "" +"Cette méthode est appelée pour traiter toute donnée arbitraire (p. ex. les " +"nœuds textuels ou les contenus de ```` et ``