From 926f6894c5acf4a94cb6df71d6d6de22bd883603 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Thu, 1 Oct 2020 16:28:17 +0200 Subject: [PATCH 01/37] Traduction de extending/extending.po 10011628 --- extending/extending.po | 179 +++++++++++++++++++++++------------------ 1 file changed, 100 insertions(+), 79 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 331cc54c4..6f8e9fae5 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2019-10-30 00:03+0100\n" +"PO-Revision-Date: 2020-10-01 16:26+0200\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.0.6\n" #: extending/extending.rst:8 msgid "Extending Python with C or C++" @@ -28,9 +28,9 @@ msgid "" msgstr "" "Il est relativement facile d'ajouter de nouveaux modules à Python, si vous " "savez programmer en C. Ces :dfn:` extension modules` " -"permettent deux choses qui ne sont pas possible directement en Python: Elles " -"peuvent définir de nouveaux types natifs, et peuvent appeler des fonctions " -"de bibliothèques C ou appels systèmes." +"permettent deux choses qui ne sont pas possibles directement en Python : " +"Elles peuvent définir de nouveaux types natifs, et peuvent appeler des " +"fonctions de bibliothèques C ou faire des appels systèmes." #: extending/extending.rst:15 msgid "" @@ -54,6 +54,7 @@ msgstr "" "chapitres suivants." #: extending/extending.rst:25 +#, fuzzy msgid "" "The C extension interface is specific to CPython, and extension modules do " "not work on other Python implementations. In many cases, it is possible to " @@ -65,15 +66,15 @@ msgid "" "with C code and are more portable between implementations of Python than " "writing and compiling a C extension module." msgstr "" -"L'interface d'extension C est spécifique à CPython, et les modules " +"L'interface d'extension C est spécifique à *CPython*, et les modules " "d'extension ne fonctionne pas sur les autres implémentations de Python. Dans " "de nombreux cas, il est possible d'éviter la rédaction des extensions en C " "et ainsi préserver la portabilité vers d'autres implémentations. Par " "exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un " "appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " -"d'utiliser la bibliothèque `cffi `_ plutôt que " -"d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code " -"Python s'interfaçant avec le code C et sont plus portables entre les " +"d'utiliser la bibliothèque *cffi* ``_ plutôt " +"que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du " +"code Python s'interfaçant avec le code C et sont plus portables entre les " "implémentations de Python que l'écriture et la compilation d'une d'extension " "C." @@ -82,6 +83,7 @@ msgid "A Simple Example" msgstr "Un exemple simple" #: extending/extending.rst:42 +#, fuzzy msgid "" "Let's create an extension module called ``spam`` (the favorite food of Monty " "Python fans...) and let's say we want to create a Python interface to the C " @@ -90,11 +92,11 @@ msgid "" "this function to be callable from Python as follows:" msgstr "" "Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans " -"des Monty Python ...) et disons que nous voulons créer une interface Python " -"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction " -"prend une chaîne de caractères terminée par NULL comme argument et renvoie " -"un entier. Nous voulons que cette fonction soit appelable à partir de Python " -"comme suit :" +"des *Monty Python* ...) et disons que nous voulons créer une interface " +"Python à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette " +"fonction prend une chaîne de caractères à terminaison nulle comme argument " +"et renvoie un entier. Nous voulons que cette fonction soit appelable à " +"partir de Python comme suit :" #: extending/extending.rst:53 msgid "" @@ -152,7 +154,7 @@ msgstr "" "Tous les symboles exposés par :file:`Python.h` sont préfixés de ``Py`` ou " "``PY``, sauf ceux qui sont définis dans les en-têtes standard. Pour le " "confort, et comme ils sont largement utilisés par l'interpréteur Python, ``" -"\"Python.h\"`` inclut lui même quelques d'en-têtes standard : ````, " +"\"Python.h\"`` inclut lui-même quelques d'en-têtes standard : ````, " "````, ```` et ````. Si ce dernier n'existe pas " "sur votre système, il déclare les fonctions :c:func:`malloc`, :c:func:`free` " "et :c:func:`realloc` directement." @@ -210,7 +212,6 @@ msgstr "" "converties. Nous en verront plus, plus tard." #: extending/extending.rst:116 -#, fuzzy msgid "" ":c:func:`PyArg_ParseTuple` returns true (nonzero) if all arguments have the " "right type and its components have been stored in the variables whose " @@ -221,17 +222,16 @@ msgid "" msgstr "" ":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont " "le bon type et que ses composants ont été stockés dans les variables dont " -"les adresses données. Il renvoie faux (zéro) si une liste d'arguments " -"invalide a été passée. Dans ce dernier cas, elle lève également une " -"exception appropriée de sorte que la fonction d'appel puisse renvoyer *NULL* " -"immédiatement (comme nous l'avons vu dans l'exemple)." +"les adresses ont été données en entrée. Il renvoie faux (zéro) si une liste " +"d'arguments invalide a été passée. Dans ce dernier cas, elle lève également " +"une exception appropriée de sorte que la fonction d'appel puisse renvoyer " +"``NULL`` immédiatement (comme nous l'avons vu dans l'exemple)." #: extending/extending.rst:126 msgid "Intermezzo: Errors and Exceptions" -msgstr "Intermezzo: Les erreurs et exceptions" +msgstr "Intermezzo : Les erreurs et les exceptions" #: extending/extending.rst:128 -#, fuzzy msgid "" "An important convention throughout the Python interpreter is the following: " "when a function fails, it should set an exception condition and return an " @@ -245,11 +245,11 @@ msgid "" "Library Reference). It is important to know about them to understand how " "errors are passed around." msgstr "" -"Une convention primordiale imprégnant tout l'interpréteur Python est: quand " +"Une convention primordiale imprégnant tout l'interpréteur Python est : quand " "une fonction échoue, elle devrait laisser une exception et renvoyer une " -"valeur d'erreur (typiquement un pointeur *NULL*). Dans l'interpréteur, les " -"exceptions sont stockés dans une variable globale statique, si cette " -"variable est *NULL*, aucune exception n'a eu lieu. Une seconde variable " +"valeur d'erreur (typiquement un pointeur ``NULL``). Dans l'interpréteur, les " +"exceptions sont stockées dans une variable globale statique, si cette " +"variable est ``NULL``, aucune exception n'a eu lieu. Une seconde variable " "globale stocke la \"valeur associée\" à l'exception (le deuxième argument " "de :keyword:`raise`). Une troisième variable contient la trace de la pile " "dans le cas où l'erreur soit survenue dans du code Python. Ces trois " @@ -292,8 +292,8 @@ msgstr "" "Une autre fonction utile est :c:func:`PyErr_SetFromErrno`, qui construit une " "exception à partir de la valeur de la variable globale :c:data:`errno`. La " "fonction la plus générale est :c:func:`PyErr_SetObject`, qui prend deux " -"arguments: l'exception et sa valeur associée. Vous ne devez pas appliquer :c:" -"func:`Py_INCREF` aux objets transmis à ces fonctions." +"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :" +"c:func:`Py_INCREF` aux objets transmis à ces fonctions." #: extending/extending.rst:154 #, fuzzy @@ -327,15 +327,15 @@ msgid "" msgstr "" "Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que " "cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour " -"(habituellement *NULL* ou ``-1``). *f* ne devrait *pas* appeler l'une des " -"fonctions :c:func:`PyErr_\\*`, l'une d'elles ayant déjà été appelée par *g*. " -"La fonction appelant *f* est alors censée renvoyer aussi un code d'erreur à " -"celle qui l'a appelée, toujours sans utiliser :c:func:`PyErr_\\*`, et ainsi " -"de suite. La cause la plus détaillée de l'erreur a déjà été signalée par la " -"fonction l'ayant détectée en premier. Une fois l'erreur remontée à la boucle " -"principale de l'interpréteur Python, il interrompt le code en cours " -"d'exécution et essaie de trouver un gestionnaire d'exception spécifié par le " -"développeur Python." +"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* " +"appeler l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant " +"déjà été appelée par *g*. La fonction appelant *f* est alors censée renvoyer " +"aussi un code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:" +"func:`PyErr_\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur " +"a déjà été signalée par la fonction l'ayant détecté en premier. Une fois " +"l'erreur remontée à la boucle principale de l'interpréteur Python, il " +"interrompt le code en cours d'exécution et essaie de trouver un gestionnaire " +"d'exception spécifié par le développeur Python." #: extending/extending.rst:170 msgid "" @@ -349,8 +349,8 @@ msgstr "" "d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\*`, " "dans de tels cas, il est tout à fait possible de le faire. Cependant, ce " "n'est généralement pas nécessaire, et peut amener à perdre des informations " -"sur la cause de l'erreur: la plupart des opérations peuvent échouer pour " -"tout un tas de raisons)." +"sur la cause de l'erreur : la plupart des opérations peuvent échouer pour " +"tout un tas de raisons.)" #: extending/extending.rst:176 msgid "" @@ -402,7 +402,7 @@ msgid "" msgstr "" "Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin " "de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec " -"les objets que vous auriez déjà créés) !" +"les objets que vous auriez déjà créés) !" #: extending/extending.rst:196 msgid "" @@ -445,17 +445,16 @@ msgstr "" "`PyInit_spam`) avec un objet exception ::" #: extending/extending.rst:235 -#, fuzzy msgid "" "Note that the Python name for the exception object is :exc:`spam.error`. " "The :c:func:`PyErr_NewException` function may create a class with the base " "class being :exc:`Exception` (unless another class is passed in instead of " "``NULL``), described in :ref:`bltin-exceptions`." msgstr "" -"Notez que le nom de exception, côté Python, est :exc:`spam.error`. La " +"Notez que le nom de l'exception en Python est :exc:`spam.error`. La " "fonction :c:func:`PyErr_NewException` peut créer une classe héritant de :exc:" "`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de " -"*NULL*), voir :ref:`bltin-exceptions`." +"``NULL``), voir :ref:`bltin-exceptions`." #: extending/extending.rst:240 msgid "" @@ -468,8 +467,8 @@ msgid "" "unintended side effects." msgstr "" "Notez également que la variable :c:data:`SpamError` contient une référence à " -"la nouvelle classe créée; ceci est intentionnel! Comme l'exception peut être " -"retirée du module par un code externe, une référence à la classe est " +"la nouvelle classe créée ; ceci est intentionnel ! Comme l'exception peut " +"être retirée du module par un code externe, une référence à la classe est " "nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:" "`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur " "défaillant, le C code qui lève l'exception peut engendrer un rejet central " @@ -504,7 +503,6 @@ msgstr "" "capable de comprendre cette affirmation ::" #: extending/extending.rst:281 -#, fuzzy msgid "" "It returns ``NULL`` (the error indicator for functions returning object " "pointers) if an error is detected in the argument list, relying on the " @@ -514,14 +512,14 @@ msgid "" "which it points (so in Standard C, the variable :c:data:`command` should " "properly be declared as ``const char *command``)." msgstr "" -"Elle renvoie *NULL* (l'indicateur d'erreur pour les fonctions renvoyant des " -"pointeurs d'objet) si une erreur est détectée dans la liste des arguments,se " -"fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. Autrement,la " -"valeur chaîne de l'argument a été copiée dans la variable locale :c:data:" -"`command`. Il s'agit d'une attribution de pointeur et vous n'êtes pas " -"supposés modifier la chaîne qui vers laquelle il pointe (donc en C Standard, " -"la variable :c:data:`command` doit être clairement déclarée comme ``const " -"char *command``)." +"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant " +"des pointeurs d'objet) si une erreur est détectée dans la liste des " +"arguments, se fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. " +"Autrement, la valeur chaîne de l'argument a été copiée dans la variable " +"locale :c:data:`command`. Il s'agit d'une attribution de pointeur et vous " +"n'êtes pas supposés modifier la chaîne vers laquelle il pointe (donc en C " +"Standard, la variable :c:data:`command` doit être clairement déclarée comme " +"``const char *command``)." #: extending/extending.rst:289 msgid "" @@ -547,7 +545,7 @@ msgid "" "objects on the heap in Python!)" msgstr "" "Dans ce cas, elle renverra un objet entier. (Oui, même les entiers sont des " -"objets dans le tas en Python!)" +"objets dans le tas en Python !)" #: extending/extending.rst:302 msgid "" @@ -562,16 +560,15 @@ msgstr "" "implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::" #: extending/extending.rst:310 -#, fuzzy msgid "" ":c:data:`Py_None` is the C name for the special Python object ``None``. It " "is a genuine Python object rather than a ``NULL`` pointer, which means " "\"error\" in most contexts, as we have seen." msgstr "" -":c:data:`Py_None` est le nom C pour l'objet spécial Python ``None``. C'est " -"un authentique objet Python plutôt qu'un pointeur *NULL*, qui signifie " -"qu'une erreur est survenue, dans la plupart des situations, comme nous " -"l'avons vu." +":c:data:`Py_None` est la dénomination en C pour l'objet spécial Python " +"``None``. C'est un authentique objet Python plutôt qu'un pointeur ``NULL``, " +"qui signifie qu'une erreur est survenue, dans la plupart des situations, " +"comme nous l'avons vu." #: extending/extending.rst:318 msgid "The Module's Method Table and Initialization Function" @@ -639,6 +636,10 @@ msgid "" "`PyInit_name`, where *name* is the name of the module, and should be the " "only non-\\ ``static`` item defined in the module file::" msgstr "" +"Cette structure, à son tour, doit être transmise à l'interprète dans la " +"fonction d'initialisation du module. La fonction d'initialisation doit être " +"nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le " +"seul élément non ``static`` défini dans le fichier du module ::" #: extending/extending.rst:368 msgid "" @@ -646,6 +647,10 @@ msgid "" "type, declares any special linkage declarations required by the platform, " "and for C++ declares the function as ``extern \"C\"``." msgstr "" +"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyer un objet de " +"type ``PyObject *``, et déclare également toute déclaration de liaison " +"spéciale requise par la plate-forme, et pour le C++ déclare la fonction " +"comme un C ``extern``." #: extending/extending.rst:372 msgid "" @@ -684,6 +689,9 @@ msgid "" "distribution as :file:`Modules/xxmodule.c`. This file may be used as a " "template or simply read as an example." msgstr "" +"Un exemple de module plus substantiel est inclus dans la distribution des " +"sources Python sous le nom :file:`Modules/xxmodule.c`. Ce fichier peut être " +"utilisé comme modèle ou simplement lu comme exemple." #: extending/extending.rst:439 msgid "" @@ -695,7 +703,7 @@ msgstr "" #: extending/extending.rst:448 msgid "Compilation and Linkage" -msgstr "" +msgstr "Compilation et ralliement" #: extending/extending.rst:450 msgid "" @@ -734,7 +742,7 @@ msgstr "" #: extending/extending.rst:485 msgid "Calling Python Functions from C" -msgstr "" +msgstr "Appeler des fonctions Python en C" #: extending/extending.rst:487 msgid "" @@ -852,11 +860,11 @@ msgstr "" #: extending/extending.rst:630 msgid "Extracting Parameters in Extension Functions" -msgstr "" +msgstr "Extraire des paramètres dans des fonctions d'extension" #: extending/extending.rst:634 msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::" -msgstr "" +msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::" #: extending/extending.rst:638 msgid "" @@ -881,21 +889,22 @@ msgid "" "*borrowed* references; do not decrement their reference count!" msgstr "" "Notez que n'importe quelles références sur un objet Python qui sont données " -"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur " -"compteur de références !" +"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur " +"compteur de références !" #: extending/extending.rst:652 msgid "Some example calls::" -msgstr "" +msgstr "Quelques exemples d'appels ::" #: extending/extending.rst:722 msgid "Keyword Parameters for Extension Functions" -msgstr "" +msgstr "Paramètres / mots-clés pour des fonctions d'extension" #: extending/extending.rst:726 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" msgstr "" +"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::" #: extending/extending.rst:731 msgid "" @@ -924,13 +933,15 @@ msgstr "" #: extending/extending.rst:802 msgid "Building Arbitrary Values" -msgstr "" +msgstr "Créer des valeurs arbitraires" #: extending/extending.rst:804 msgid "" "This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is " "declared as follows::" msgstr "" +"Cette fonction est le complément de :c:func:`PyArg_ParseTuple`. Elle est " +"déclarée comme suit ::" #: extending/extending.rst:809 msgid "" @@ -956,10 +967,11 @@ msgstr "" msgid "" "Examples (to the left the call, to the right the resulting Python value):" msgstr "" +"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :" #: extending/extending.rst:848 msgid "Reference Counts" -msgstr "" +msgstr "Compteurs de références" #: extending/extending.rst:850 msgid "" @@ -1057,7 +1069,7 @@ msgstr "" #: extending/extending.rst:925 msgid "Reference Counting in Python" -msgstr "" +msgstr "Comptage de références en Python" #: extending/extending.rst:927 msgid "" @@ -1114,7 +1126,7 @@ msgstr "" #: extending/extending.rst:967 msgid "Ownership Rules" -msgstr "" +msgstr "Règles propriétaires" #: extending/extending.rst:969 msgid "" @@ -1122,6 +1134,10 @@ msgid "" "of the function's interface specification whether ownership is transferred " "with the reference or not." msgstr "" +"Chaque fois qu'une référence d'objet est passée à l'intérieur ou à " +"l'extérieur d'une fonction, elle fait partie de la spécification de " +"l'interface de la fonction, peu importe que la propriété soit transférée " +"avec la référence ou non." #: extending/extending.rst:973 msgid "" @@ -1181,7 +1197,7 @@ msgstr "" #: extending/extending.rst:1014 msgid "Thin Ice" -msgstr "" +msgstr "Terrain dangereux" #: extending/extending.rst:1016 msgid "" @@ -1254,7 +1270,7 @@ msgstr "" #: extending/extending.rst:1092 msgid "NULL Pointers" -msgstr "" +msgstr "Pointeurs ``NULL``" #: extending/extending.rst:1094 msgid "" @@ -1306,7 +1322,7 @@ msgstr "" #: extending/extending.rst:1131 msgid "Writing Extensions in C++" -msgstr "" +msgstr "Écrire des extensions en C++" #: extending/extending.rst:1133 msgid "" @@ -1323,7 +1339,7 @@ msgstr "" #: extending/extending.rst:1147 msgid "Providing a C API for an Extension Module" -msgstr "" +msgstr "Fournir une API en langage C pour un module d'extension" #: extending/extending.rst:1152 msgid "" @@ -1437,15 +1453,15 @@ msgstr "" #: extending/extending.rst:1234 msgid "The function :c:func:`spam_system` is modified in a trivial way::" -msgstr "" +msgstr "La fonction :c:func:`spam_system` est modifiée de manière simple ::" #: extending/extending.rst:1248 msgid "In the beginning of the module, right after the line ::" -msgstr "" +msgstr "Au début du module, immédiatement après la ligne ::" #: extending/extending.rst:1252 msgid "two more lines must be added::" -msgstr "" +msgstr "on doit ajouter deux lignes supplémentaires ::" #: extending/extending.rst:1257 msgid "" @@ -1466,6 +1482,8 @@ msgid "" "The bulk of the work is in the header file :file:`spammodule.h`, which looks " "like this::" msgstr "" +"L'essentiel du travail se trouve dans le fichier d'en-tête :file:`spammodule." +"h`, qui ressemble à ceci ::" #: extending/extending.rst:1341 msgid "" @@ -1519,3 +1537,6 @@ msgid "" "These guarantees don't hold when you use the \"old\" style calling " "convention --- this is still found in much existing code." msgstr "" +"Ces garanties ne sont pas valables lorsqu'on emploie les conventions de " +"nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code " +"existant." From d28e3058715cb0ead57723cbd8b25181756c35c8 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Thu, 1 Oct 2020 20:21:59 +0200 Subject: [PATCH 02/37] Traduction de extending/extending.po 10012021 --- extending/extending.po | 166 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 149 insertions(+), 17 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 6f8e9fae5..046598200 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2020-10-01 16:26+0200\n" +"PO-Revision-Date: 2020-10-01 20:20+0200\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -54,7 +54,6 @@ msgstr "" "chapitres suivants." #: extending/extending.rst:25 -#, fuzzy msgid "" "The C extension interface is specific to CPython, and extension modules do " "not work on other Python implementations. In many cases, it is possible to " @@ -72,9 +71,9 @@ msgstr "" "et ainsi préserver la portabilité vers d'autres implémentations. Par " "exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un " "appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " -"d'utiliser la bibliothèque *cffi* ``_ plutôt " -"que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du " -"code Python s'interfaçant avec le code C et sont plus portables entre les " +"d'utiliser la bibliothèque `cffi `_ plutôt que " +"d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code " +"Python s'interfaçant avec le code C et sont plus portables entre les " "implémentations de Python que l'écriture et la compilation d'une d'extension " "C." @@ -83,7 +82,6 @@ msgid "A Simple Example" msgstr "Un exemple simple" #: extending/extending.rst:42 -#, fuzzy msgid "" "Let's create an extension module called ``spam`` (the favorite food of Monty " "Python fans...) and let's say we want to create a Python interface to the C " @@ -92,11 +90,11 @@ msgid "" "this function to be callable from Python as follows:" msgstr "" "Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans " -"des *Monty Python* ...) et disons que nous voulons créer une interface " -"Python à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette " -"fonction prend une chaîne de caractères à terminaison nulle comme argument " -"et renvoie un entier. Nous voulons que cette fonction soit appelable à " -"partir de Python comme suit :" +"des *Monty Python* …) et disons que nous voulons créer une interface Python " +"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction " +"prend une chaîne de caractères à terminaison nulle comme argument et renvoie " +"un entier. Nous voulons que cette fonction soit appelable à partir de Python " +"comme suit :" #: extending/extending.rst:53 msgid "" @@ -296,7 +294,6 @@ msgstr "" "c:func:`Py_INCREF` aux objets transmis à ces fonctions." #: extending/extending.rst:154 -#, fuzzy msgid "" "You can test non-destructively whether an exception has been set with :c:" "func:`PyErr_Occurred`. This returns the current exception object, or " @@ -306,10 +303,10 @@ msgid "" msgstr "" "Vous pouvez tester de manière non destructive si une exception a été levée " "avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou " -"*NULL* si aucune exception n'a eu lieu. Cependant, vous ne devriez pas avoir " -"besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est " +"``NULL`` si aucune exception n'a eu lieu. Cependant, vous ne devriez pas " +"avoir besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est " "survenue durant l'appel d'une fonction, puisque vous devriez être en mesure " -"de le déterminer à partir de la valeur de retour." +"de le déterminer à partir de la valeur renvoyée." #: extending/extending.rst:160 #, fuzzy @@ -480,7 +477,7 @@ msgid "" "this sample." msgstr "" "Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de " -"retour de fonction plus tard dans cette section." +"renvoi de fonction plus tard dans cette section." #: extending/extending.rst:250 msgid "" @@ -636,7 +633,7 @@ msgid "" "`PyInit_name`, where *name* is the name of the module, and should be the " "only non-\\ ``static`` item defined in the module file::" msgstr "" -"Cette structure, à son tour, doit être transmise à l'interprète dans la " +"Cette structure, à son tour, doit être transmise à l'interpréteur dans la " "fonction d'initialisation du module. La fonction d'initialisation doit être " "nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le " "seul élément non ``static`` défini dans le fichier du module ::" @@ -700,6 +697,11 @@ msgid "" "``PyInit_spam``, and creation of the module is left to the import machinery. " "For details on multi-phase initialization, see :PEP:`489`." msgstr "" +"Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une " +"*initialisation multi-phase* (nouveau en Python 3.5), où une structure " +"*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du " +"module est laissée à la machine d'importation. Pour plus de détails sur " +"l'initialisation multi-phase, voir :PEP:`489`." #: extending/extending.rst:448 msgid "Compilation and Linkage" @@ -781,6 +783,10 @@ msgid "" "c:func:`PyArg_ParseTuple` function and its arguments are documented in " "section :ref:`parsetuple`." msgstr "" +"Cette fonction doit être enregistrée avec l'interpréteur en utilisant le " +"drapeau :const:`METH_VARARGS` ; ceci est décrit dans la section :ref:" +"`methodtable`. La fonction :c:func:`PyArg_ParseTuple` et ses arguments sont " +"documentés dans la section :ref:`parsetuple`." #: extending/extending.rst:536 msgid "" @@ -789,6 +795,11 @@ msgid "" "pointers (but note that *temp* will not be ``NULL`` in this context). More " "info on them in section :ref:`refcounts`." msgstr "" +"Les macros :c:func:`Py_XINCREF` et :c:func:`Py_XDECREF` incrémentent/" +"décrémentent le comptage des références d'un objet et sont sûres quant à la " +"présence de pointeurs ``NULL`` (mais notez que *temp* ne sera pas ``NULL`` " +"dans ce contexte). Plus d'informations à ce sujet dans la section :ref:" +"`refcounts`." #: extending/extending.rst:543 msgid "" @@ -830,6 +841,15 @@ msgid "" "handle the exception. If this is not possible or desirable, the exception " "should be cleared by calling :c:func:`PyErr_Clear`. For example::" msgstr "" +"Mais avant de le faire, il est important de vérifier que la valeur renvoyée " +"n'est pas ``NULL``. Si c'est le cas, la fonction Python s'est terminée par " +"la levée d'une exception. Si le code C qui a appelé :c:func:" +"`PyObject_CallObject` est appelé depuis Python, il devrait maintenant " +"renvoyer une indication d'erreur à son appelant Python, afin que " +"l'interpréteur puisse imprimer un tracé de pile, ou que le code Python " +"appelant puisse gérer l'exception. Si cela n'est pas possible ou " +"souhaitable, l'exception doit être effacée en appelant :c:func:" +"`PyErr_Clear`. Par exemple ::" #: extending/extending.rst:589 msgid "" @@ -857,6 +877,10 @@ msgid "" "`PyObject_Call`, which supports arguments and keyword arguments. As in the " "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" +"Vous pouvez également appeler une fonction avec des arguments de mots-clés " +"en utilisant :c:func:`PyObject_Call`, qui supporte les arguments et les " +"arguments de mots-clés. Comme dans l'exemple ci-dessus, nous utilisons :c:" +"func:`Py_BuildValue` pour construire le dictionnaire. ::" #: extending/extending.rst:630 msgid "Extracting Parameters in Extension Functions" @@ -917,6 +941,14 @@ msgid "" "`PyArg_ParseTupleAndKeywords` returns true, otherwise it returns false and " "raises an appropriate exception." msgstr "" +"Les paramètres *arg* et *format* sont identiques à ceux de la fonction :c:" +"func:`PyArg_ParseTuple`. Le paramètre *kwdict* est le dictionnaire de mots-" +"clés reçu comme troisième paramètre du *runtime* Python. Le paramètre " +"*kwlist* est une liste de chaînes de caractères terminée par ``NULL`` qui " +"identifie les paramètres ; les noms sont mis en correspondance, de gauche à " +"droite, avec les informations de type de *format*. En cas de succès du " +"processus, :c:func:`PyArg_ParseTupleAndKeywords` renvoie vrai, sinon il " +"renvoie faux et lève une exception appropriée." #: extending/extending.rst:741 msgid "" @@ -930,6 +962,8 @@ msgid "" "Here is an example module which uses keywords, based on an example by Geoff " "Philbrick (philbrick@hks.com)::" msgstr "" +"Voici un exemple de module qui utilise des mots-clés, basé sur un exemple de " +"*Geoff Philbrick* (philbrick@hks.com) ::" #: extending/extending.rst:802 msgid "Building Arbitrary Values" @@ -962,6 +996,15 @@ msgid "" "that format unit. To force it to return a tuple of size 0 or one, " "parenthesize the format string." msgstr "" +"Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " +"dernier nécessite que son premier argument soit un n-uplet (puisque les " +"listes d'arguments Python sont toujours représentées par des n-uplets en " +"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " +"n'en construit un que si sa chaîne formatée contient deux unités formatées " +"ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " +"exactement une unité formatée, il renvoie tout objet décrit par cette unité " +"formatée. Pour le forcer à renvoyer un n-uplet de taille 0 ou 1, mettez la " +"chaîne formatée entre parenthèses." #: extending/extending.rst:822 msgid "" @@ -1054,6 +1097,18 @@ msgid "" "in a reference cycle, or referenced from the objects in the cycle, even " "though there are no further references to the cycle itself." msgstr "" +"Bien que Python utilise l'implémentation traditionnelle de comptage de " +"référence, il propose également un détecteur de cycles qui fonctionne pour " +"détecter les cycles de référence. Cela permet aux applications de ne pas se " +"soucier de la création de références circulaires directes ou indirectes ; ce " +"sont les faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement " +"le comptage de référence. Les cycles de référence sont constitués d'objets " +"qui contiennent des références (éventuellement indirectes) à eux-mêmes, de " +"sorte que chaque objet du cycle a un comptage de référence qui n'est pas " +"nul. Les implémentations typiques de comptage de référence ne sont pas " +"capables de récupérer la mémoire appartenant à des objets dans un cycle de " +"référence, ou référencés à partir des objets dans le cycle, même s'il n'y a " +"pas d'autres références au cycle lui-même." #: extending/extending.rst:911 msgid "" @@ -1081,8 +1136,16 @@ msgid "" "this purpose (and others), every object also contains a pointer to its type " "object." msgstr "" +"Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent " +"l'incrémentation et la décrémentation du comptage de référence. :c:func:" +"`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour " +"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, " +"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type " +"objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient " +"également un pointeur vers son objet type." #: extending/extending.rst:934 +#, fuzzy msgid "" "The big question now remains: when to use ``Py_INCREF(x)`` and " "``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an " @@ -1094,6 +1157,17 @@ msgid "" "on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned " "reference creates a memory leak." msgstr "" +"La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et " +"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " +"\"possède\" un objet ; cependant, vous pouvez vous approprier une référence " +"à un objet par :dfn:`own . Le comptage de références d'un objet est " +"maintenant défini comme le étant le nombre de références à cet objet dont on " +"est propriétaire . Le propriétaire d'une référence est responsable " +"d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus nécessaire. La " +"propriété d'une référence peut être transférée. Il y a trois façons de " +"disposer d'une référence propriétaire : la transmettre, la stocker, ou " +"appeler :c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence " +"propriétaire crée une fuite de mémoire." #: extending/extending.rst:943 msgid "" @@ -1114,6 +1188,14 @@ msgid "" "code a borrowed reference can be used after the owner from which it was " "borrowed has in fact disposed of it." msgstr "" +"L'avantage d'emprunter, plutôt qu'être propriétaire d'une référence est que " +"vous n'avez pas à vous soucier de disposer de la référence sur tous les " +"chemins possibles dans le code — en d'autres termes, avec une référence " +"empruntée, vous ne courez pas le risque de fuites lors d'une sortie " +"prématurée. L'inconvénient de l'emprunt par rapport à la possession est " +"qu'il existe certaines situations subtiles où, dans un code apparemment " +"correct, une référence empruntée peut être utilisée après que le " +"propriétaire auquel elle a été empruntée l'a en fait éliminée." #: extending/extending.rst:957 msgid "" @@ -1206,6 +1288,10 @@ msgid "" "invocations of the interpreter, which can cause the owner of a reference to " "dispose of it." msgstr "" +"Il existe quelques situations où l'utilisation apparemment inoffensive d'une " +"référence empruntée peut entraîner des problèmes. Tous ces problèmes sont en " +"lien avec des invocations implicites de l’interpréteur, et peuvent amener le " +"propriétaire d'une référence à s'en défaire." #: extending/extending.rst:1020 msgid "" @@ -1232,6 +1318,7 @@ msgid "" msgstr "" #: extending/extending.rst:1043 +#, fuzzy msgid "" "Since it is written in Python, the :meth:`__del__` method can execute " "arbitrary Python code. Could it perhaps do something to invalidate the " @@ -1241,6 +1328,13 @@ msgid "" "this was the last reference to that object, it would free the memory " "associated with it, thereby invalidating ``item``." msgstr "" +"Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du " +"code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la " +"référence à ``item`` dans :c:func:`bug' ? Bien sûr ! En supposant que la " +"liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, " +"elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en " +"supposant que ce soit la dernière référence à cet objet, elle libérerait la " +"mémoire qui lui est associée, invalidant ainsi ``item``." #: extending/extending.rst:1051 msgid "" @@ -1283,6 +1377,16 @@ msgid "" "``NULL``, there would be a lot of redundant tests and the code would run " "more slowly." msgstr "" +"En général, les fonctions qui prennent des références d'objets comme " +"arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si " +"vous en donnez comme arguments, elles videront la mémoire vive (ou " +"provoqueront des vidages ultérieurs de mémoire). Les fonctions qui " +"renvoient des références d'objets renvoient généralement ``NULL`` uniquement " +"pour indiquer qu'une exception s'est produite. La raison pour laquelle les " +"arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent " +"les objets qu'elles reçoivent à d'autres fonctions --- si chaque fonction " +"devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le " +"code s'exécuterait plus lentement." #: extending/extending.rst:1102 msgid "" @@ -1367,6 +1471,20 @@ msgid "" "if symbols are globally visible, the module whose functions one wishes to " "call might not have been loaded yet!" msgstr "" +"À première vue, cela semble facile : il suffit d'écrire les fonctions (sans " +"les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête " +"approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous " +"les modules d'extension étaient toujours liés statiquement avec " +"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme " +"des bibliothèques partagées, les symboles définis dans un module peuvent ne " +"pas être visibles par un autre module. Les détails de la visibilité " +"dépendent du système d'exploitation ; certains systèmes utilisent un espace " +"de noms global pour l'interpréteur Python et tous les modules d'extension " +"(Windows, par exemple), tandis que d'autres exigent une liste explicite des " +"symboles importés au moment de la liaison des modules (AIX en est un " +"exemple), ou offrent un choix de stratégies différentes (la plupart des " +"*Unices*). Et même si les symboles sont globalement visibles, le module dont " +"on souhaite appeler les fonctions n'est peut-être pas encore chargé !" #: extending/extending.rst:1172 msgid "" @@ -1444,6 +1562,13 @@ msgid "" "complicated in reality (such as adding \"spam\" to every command). This " "function :c:func:`PySpam_System` is also exported to other extension modules." msgstr "" +"Le module d'exportation est une modification du module :mod:`spam` de la " +"section :ref:`extending-simpleexample`. La fonction :func:`spam.system` " +"n'appelle pas directement la fonction de la bibliothèque C :c:func:`system`, " +"mais une fonction :c:func:`PySpam_System`, qui ferait bien sûr quelque chose " +"de plus compliqué en réalité (comme ajouter du *spam* à chaque commande). " +"Cette fonction :c:func:`PySpam_System` est également exportée vers d'autres " +"modules d'extension." #: extending/extending.rst:1225 msgid "" @@ -1476,6 +1601,8 @@ msgid "" "Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array " "would disappear when :func:`PyInit_spam` terminates!" msgstr "" +"Notez que ``PySpam_API`` est déclaré ``statique`` ; sinon le tableau de " +"pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !" #: extending/extending.rst:1290 msgid "" @@ -1524,6 +1651,8 @@ msgid "" "The metaphor of \"borrowing\" a reference is not completely correct: the " "owner still has a copy of the reference." msgstr "" +"L'expression \"emprunter une référence\" n'est pas tout à fait correcte, car " +"le propriétaire a toujours une copie de la référence." #: extending/extending.rst:1378 msgid "" @@ -1531,6 +1660,9 @@ msgid "" "reference count itself could be in freed memory and may thus be reused for " "another object!" msgstr "" +"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne pas** " +"--- le compte de référence lui-même pourrait être en mémoire libérée et peut " +"donc être réutilisé pour un autre objet !" #: extending/extending.rst:1382 msgid "" From 9c167dc0931b50c7ea46f2d26d17728553beb08d Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:09:40 +0200 Subject: [PATCH 03/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 046598200..e462ea090 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1651,7 +1651,7 @@ msgid "" "The metaphor of \"borrowing\" a reference is not completely correct: the " "owner still has a copy of the reference." msgstr "" -"L'expression \"emprunter une référence\" n'est pas tout à fait correcte, car " +"L'expression « emprunter une référence » n'est pas tout à fait correcte, car " "le propriétaire a toujours une copie de la référence." #: extending/extending.rst:1378 From 751aa936534248ded75ec44c64b290a867ba2554 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:10:00 +0200 Subject: [PATCH 04/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index e462ea090..92d1dbc5d 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1483,7 +1483,7 @@ msgstr "" "(Windows, par exemple), tandis que d'autres exigent une liste explicite des " "symboles importés au moment de la liaison des modules (AIX en est un " "exemple), ou offrent un choix de stratégies différentes (la plupart des " -"*Unices*). Et même si les symboles sont globalement visibles, le module dont " +"*Unix*). Et même si les symboles sont globalement visibles, le module dont " "on souhaite appeler les fonctions n'est peut-être pas encore chargé !" #: extending/extending.rst:1172 From 75c66835295b5c07a5509ba61eaacb1dc0920f97 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:10:44 +0200 Subject: [PATCH 05/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 92d1dbc5d..4485205ee 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -999,7 +999,7 @@ msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " "dernier nécessite que son premier argument soit un n-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des n-uplets en " -"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " +"interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " "ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " "exactement une unité formatée, il renvoie tout objet décrit par cette unité " From db9bc47b6a254da486a72a5cbc99abc637d6568b Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:11:20 +0200 Subject: [PATCH 06/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 4485205ee..796ed0c41 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -700,7 +700,7 @@ msgstr "" "Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une " "*initialisation multi-phase* (nouveau en Python 3.5), où une structure " "*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du " -"module est laissée à la machine d'importation. Pour plus de détails sur " +"module est laissée au mécanisme d'importation. Pour plus de détails sur " "l'initialisation multi-phase, voir :PEP:`489`." #: extending/extending.rst:448 From c1784b58cb0f14a9a698c34e93398fdf8cd77c52 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:11:46 +0200 Subject: [PATCH 07/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 796ed0c41..a5a465155 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -705,7 +705,7 @@ msgstr "" #: extending/extending.rst:448 msgid "Compilation and Linkage" -msgstr "Compilation et ralliement" +msgstr "Compilation et liaison" #: extending/extending.rst:450 msgid "" From b76d521ba917fd8171f0e684e3ac2c243efeca91 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:11:56 +0200 Subject: [PATCH 08/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index a5a465155..e2f086c8d 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -783,7 +783,7 @@ msgid "" "c:func:`PyArg_ParseTuple` function and its arguments are documented in " "section :ref:`parsetuple`." msgstr "" -"Cette fonction doit être enregistrée avec l'interpréteur en utilisant le " +"Cette fonction doit être déclarée en utilisant le " "drapeau :const:`METH_VARARGS` ; ceci est décrit dans la section :ref:" "`methodtable`. La fonction :c:func:`PyArg_ParseTuple` et ses arguments sont " "documentés dans la section :ref:`parsetuple`." From 25b92277a6ecf5145e04d4880151861257650718 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:12:21 +0200 Subject: [PATCH 09/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index e2f086c8d..92cf6d121 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -796,7 +796,7 @@ msgid "" "info on them in section :ref:`refcounts`." msgstr "" "Les macros :c:func:`Py_XINCREF` et :c:func:`Py_XDECREF` incrémentent/" -"décrémentent le comptage des références d'un objet et sont sûres quant à la " +"décrémentent le compteur des références d'un objet et sont sûres quant à la " "présence de pointeurs ``NULL`` (mais notez que *temp* ne sera pas ``NULL`` " "dans ce contexte). Plus d'informations à ce sujet dans la section :ref:" "`refcounts`." From d0c3bd85c660b1eb6ec24e4b9d3ca4a69b4f4846 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:12:34 +0200 Subject: [PATCH 10/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 92cf6d121..2f95bb30a 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -846,7 +846,7 @@ msgstr "" "la levée d'une exception. Si le code C qui a appelé :c:func:" "`PyObject_CallObject` est appelé depuis Python, il devrait maintenant " "renvoyer une indication d'erreur à son appelant Python, afin que " -"l'interpréteur puisse imprimer un tracé de pile, ou que le code Python " +"l'interpréteur puisse afficher un tracé de pile, ou que le code Python " "appelant puisse gérer l'exception. Si cela n'est pas possible ou " "souhaitable, l'exception doit être effacée en appelant :c:func:" "`PyErr_Clear`. Par exemple ::" From df209243a97a11014f8ceb68fb653ee3d7e7d541 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:12:49 +0200 Subject: [PATCH 11/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 2f95bb30a..b4ba0137a 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -877,7 +877,7 @@ msgid "" "`PyObject_Call`, which supports arguments and keyword arguments. As in the " "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" -"Vous pouvez également appeler une fonction avec des arguments de mots-clés " +"Vous pouvez également appeler une fonction avec des arguments nommés " "en utilisant :c:func:`PyObject_Call`, qui supporte les arguments et les " "arguments de mots-clés. Comme dans l'exemple ci-dessus, nous utilisons :c:" "func:`Py_BuildValue` pour construire le dictionnaire. ::" From 7f36e685457ef5f2b37a81bfd4ed50f6263f234d Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:13:01 +0200 Subject: [PATCH 12/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index b4ba0137a..b1c398786 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -879,7 +879,7 @@ msgid "" msgstr "" "Vous pouvez également appeler une fonction avec des arguments nommés " "en utilisant :c:func:`PyObject_Call`, qui supporte les arguments et les " -"arguments de mots-clés. Comme dans l'exemple ci-dessus, nous utilisons :c:" +"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:" "func:`Py_BuildValue` pour construire le dictionnaire. ::" #: extending/extending.rst:630 From 9386096d0174c9f13309fee6d99b0da3c85c49ad Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:13:13 +0200 Subject: [PATCH 13/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index b1c398786..f623d8444 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -878,7 +878,7 @@ msgid "" "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" "Vous pouvez également appeler une fonction avec des arguments nommés " -"en utilisant :c:func:`PyObject_Call`, qui supporte les arguments et les " +"en utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les " "arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:" "func:`Py_BuildValue` pour construire le dictionnaire. ::" From e8e96ecd55fee40015301c16f769cd5f6dfdface Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:13:27 +0200 Subject: [PATCH 14/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index f623d8444..5edb4d5c8 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -922,7 +922,7 @@ msgstr "Quelques exemples d'appels ::" #: extending/extending.rst:722 msgid "Keyword Parameters for Extension Functions" -msgstr "Paramètres / mots-clés pour des fonctions d'extension" +msgstr "Paramètres nommés pour des fonctions d'extension" #: extending/extending.rst:726 msgid "" From 71f237acd8d66600d96441f498e78b580e074536 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:13:40 +0200 Subject: [PATCH 15/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 5edb4d5c8..9d4b34d47 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -997,7 +997,7 @@ msgid "" "parenthesize the format string." msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " -"dernier nécessite que son premier argument soit un n-uplet (puisque les " +"dernier nécessite que son premier argument soit un *n*-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des n-uplets en " "interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " From 5285926d4fd160dc1dc468a878bb2956a7f827aa Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:13:54 +0200 Subject: [PATCH 16/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 9d4b34d47..8cb33c356 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -998,7 +998,7 @@ msgid "" msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " "dernier nécessite que son premier argument soit un *n*-uplet (puisque les " -"listes d'arguments Python sont toujours représentées par des n-uplets en " +"listes d'arguments Python sont toujours représentées par des *n*-uplets en " "interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " "ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " From 3f9a660c9e7ee003b2eccbc399225fdee6d81ef2 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Fri, 2 Oct 2020 14:21:48 +0200 Subject: [PATCH 17/37] prise en compte des remarques --- extending/extending.po | 56 ++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 8cb33c356..8e8f9eb1e 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2020-10-01 20:20+0200\n" +"PO-Revision-Date: 2020-10-02 14:21+0200\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -201,7 +201,7 @@ msgid "" msgstr "" "L'argument *args* sera un pointeur vers un *tuple* Python contenant les " "arguments. Chaque élément du *tuple* correspond à un argument dans la liste " -"des arguments de l'appel. Les arguments sont des objets Python --- afin d'en " +"des arguments de l'appel. Les arguments sont des objets Python, afin d'en " "faire quelque chose dans notre fonction C, nous devons les convertir en " "valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie " "les types des arguments et les convertit en valeurs C. Elle utilise un " @@ -372,7 +372,7 @@ msgid "" "creating functions (for example, :c:func:`PyLong_FromLong`) already do this, " "so this note is only relevant to those who call :c:func:`malloc` directly." msgstr "" -"Chaque échec de :c:func:`malloc` doit être transformé en une exception --- " +"Chaque échec de :c:func:`malloc` doit être transformé en une exception, " "l'appelant direct de :c:func:`malloc` (ou :c:func:`realloc`) doit appeler :c:" "func:`PyErr_NoMemory` et prendre l'initiative de renvoyer une valeur " "d'erreur. Toutes les fonctions construisant des objets (tels que :c:func:" @@ -644,7 +644,7 @@ msgid "" "type, declares any special linkage declarations required by the platform, " "and for C++ declares the function as ``extern \"C\"``." msgstr "" -"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyer un objet de " +"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de " "type ``PyObject *``, et déclare également toute déclaration de liaison " "spéciale requise par la plate-forme, et pour le C++ déclare la fonction " "comme un C ``extern``." @@ -783,10 +783,10 @@ msgid "" "c:func:`PyArg_ParseTuple` function and its arguments are documented in " "section :ref:`parsetuple`." msgstr "" -"Cette fonction doit être déclarée en utilisant le " -"drapeau :const:`METH_VARARGS` ; ceci est décrit dans la section :ref:" -"`methodtable`. La fonction :c:func:`PyArg_ParseTuple` et ses arguments sont " -"documentés dans la section :ref:`parsetuple`." +"Cette fonction doit être déclarée en utilisant le drapeau :const:" +"`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La " +"fonction :c:func:`PyArg_ParseTuple` et ses arguments sont documentés dans la " +"section :ref:`parsetuple`." #: extending/extending.rst:536 msgid "" @@ -877,10 +877,10 @@ msgid "" "`PyObject_Call`, which supports arguments and keyword arguments. As in the " "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" -"Vous pouvez également appeler une fonction avec des arguments nommés " -"en utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les " -"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:" -"func:`Py_BuildValue` pour construire le dictionnaire. ::" +"Vous pouvez également appeler une fonction avec des arguments nommés en " +"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les " +"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:" +"`Py_BuildValue` pour construire le dictionnaire. ::" #: extending/extending.rst:630 msgid "Extracting Parameters in Extension Functions" @@ -1145,7 +1145,6 @@ msgstr "" "également un pointeur vers son objet type." #: extending/extending.rst:934 -#, fuzzy msgid "" "The big question now remains: when to use ``Py_INCREF(x)`` and " "``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an " @@ -1159,15 +1158,14 @@ msgid "" msgstr "" "La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et " "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " -"\"possède\" un objet ; cependant, vous pouvez vous approprier une référence " -"à un objet par :dfn:`own . Le comptage de références d'un objet est " -"maintenant défini comme le étant le nombre de références à cet objet dont on " -"est propriétaire . Le propriétaire d'une référence est responsable " -"d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus nécessaire. La " -"propriété d'une référence peut être transférée. Il y a trois façons de " -"disposer d'une référence propriétaire : la transmettre, la stocker, ou " -"appeler :c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence " -"propriétaire crée une fuite de mémoire." +"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " +"comptage de références d'un objet est maintenant défini comme le étant le " +"nombre de références à cet objet dont on est propriétaire . Le propriétaire " +"d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la " +"référence n'est plus nécessaire. La propriété d'une référence peut être " +"transférée. Il y a trois façons de disposer d'une référence propriétaire : " +"la transmettre, la stocker, ou appeler :c:func:`Py_DECREF`. Oublier de se " +"débarrasser d'une référence propriétaire crée une fuite de mémoire." #: extending/extending.rst:943 msgid "" @@ -1380,11 +1378,11 @@ msgstr "" "En général, les fonctions qui prennent des références d'objets comme " "arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si " "vous en donnez comme arguments, elles videront la mémoire vive (ou " -"provoqueront des vidages ultérieurs de mémoire). Les fonctions qui " -"renvoient des références d'objets renvoient généralement ``NULL`` uniquement " -"pour indiquer qu'une exception s'est produite. La raison pour laquelle les " +"provoqueront des vidages ultérieurs de mémoire). Les fonctions qui renvoient " +"des références d'objets renvoient généralement ``NULL`` uniquement pour " +"indiquer qu'une exception s'est produite. La raison pour laquelle les " "arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent " -"les objets qu'elles reçoivent à d'autres fonctions --- si chaque fonction " +"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction " "devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le " "code s'exécuterait plus lentement." @@ -1660,9 +1658,9 @@ msgid "" "reference count itself could be in freed memory and may thus be reused for " "another object!" msgstr "" -"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne pas** " -"--- le compte de référence lui-même pourrait être en mémoire libérée et peut " -"donc être réutilisé pour un autre objet !" +"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne " +"pas**, le compte de référence lui-même pourrait être en mémoire libérée et " +"peut donc être réutilisé pour un autre objet !" #: extending/extending.rst:1382 msgid "" From 7928ba08098fb266a8e0e8f98fb75e11c40f1ef2 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Fri, 2 Oct 2020 15:07:03 +0200 Subject: [PATCH 18/37] Traduction de extending/extending.po 10021506 --- extending/extending.po | 136 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 129 insertions(+), 7 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 8e8f9eb1e..923abf7c8 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2020-10-02 14:21+0200\n" +"PO-Revision-Date: 2020-10-02 15:06+0200\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -309,7 +309,6 @@ msgstr "" "de le déterminer à partir de la valeur renvoyée." #: extending/extending.rst:160 -#, fuzzy msgid "" "When a function *f* that calls another function *g* detects that the latter " "fails, *f* should itself return an error value (usually ``NULL`` or " @@ -662,6 +661,18 @@ msgid "" "The init function must return the module object to its caller, so that it " "then gets inserted into ``sys.modules``." msgstr "" +"Lorsque le programme Python importe le module :mod:`spam` pour la première " +"fois, :c:func:`PyInit_spam` est appelé. (Voir ci-dessous pour les " +"commentaires sur l'intégration en Python.) Il appelle :c:func:" +"`PyModule_Create`, qui renvoie un objet module, et insère des objets " +"fonction intégrés dans le module nouvellement créé en se basant sur la table " +"(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition " +"du module. :c:func:`PyModule_Create` et renvoie un pointeur vers l'objet " +"module qu'il crée. Il peut s'interrompre avec une erreur fatale pour " +"certaines erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être " +"initialisé de manière satisfaisante. La fonction `init` doit renvoyer " +"l'objet module à son appelant, afin qu'il soit ensuite inséré dans ``sys." +"modules`` ." #: extending/extending.rst:383 msgid "" @@ -670,6 +681,11 @@ msgid "" "table. To add the module to the initialization table, use :c:func:" "`PyImport_AppendInittab`, optionally followed by an import of the module::" msgstr "" +"Lors de l'intégration de Python, la fonction :c:func:`PyInit_spam` n'est pas " +"appelée automatiquement, sauf s'il y a une entrée dans la table :c:data:" +"`PyImport_Inittab`. Pour ajouter le module à la table d'initialisation, " +"utilisez :c:func:`PyImport_AppendInittab`, suivi éventuellement d'une " +"importation du module ::" #: extending/extending.rst:427 msgid "" @@ -679,6 +695,12 @@ msgid "" "extension modules. Extension module authors should exercise caution when " "initializing internal data structures." msgstr "" +"Supprimer des entrées de ``sys.modules`` ou importer des modules compilés " +"dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:" +"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes " +"pour certains modules d'extension. Les auteurs de modules d'extension " +"doivent faire preuve de prudence lorsqu'ils initialisent des structures de " +"données internes." #: extending/extending.rst:433 msgid "" @@ -984,6 +1006,11 @@ msgid "" "not output) must not be pointers, just values. It returns a new Python " "object, suitable for returning from a C function called from Python." msgstr "" +"Il reconnaît un ensemble d'unités de format similaires à celles reconnues " +"par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en " +"entrée de fonction, et non de la sortie) ne doivent pas être des pointeurs, " +"mais juste des valeurs. Il renvoie un nouvel objet Python, adapté pour être " +"renvoyé par une fonction C appelée depuis Python." #: extending/extending.rst:814 msgid "" @@ -997,7 +1024,7 @@ msgid "" "parenthesize the format string." msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " -"dernier nécessite que son premier argument soit un *n*-uplet (puisque les " +"dernier nécessite que son premier argument soit un n-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " "interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " @@ -1024,6 +1051,12 @@ msgid "" "``new`` and ``delete`` are used with essentially the same meaning and we'll " "restrict the following discussion to the C case." msgstr "" +"Dans les langages comme le C ou le C++, le développeur est responsable de " +"l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En " +"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. " +"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec " +"essentiellement la même signification et nous limiterons la discussion " +"suivante au cas du C." #: extending/extending.rst:856 msgid "" @@ -1159,8 +1192,8 @@ msgstr "" "La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et " "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " "possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " -"comptage de références d'un objet est maintenant défini comme le étant le " -"nombre de références à cet objet dont on est propriétaire . Le propriétaire " +"comptage de références d'un objet est maintenant défini comme étant le " +"nombre de références à cet objet dont on est propriétaire. Le propriétaire " "d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la " "référence n'est plus nécessaire. La propriété d'une référence peut être " "transférée. Il y a trois façons de disposer d'une référence propriétaire : " @@ -1297,6 +1330,9 @@ msgid "" "on an unrelated object while borrowing a reference to a list item. For " "instance::" msgstr "" +"Le premier cas, et le plus important à connaître, est celui de l'application " +"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une " +"référence à un élément de liste. Par exemple ::" #: extending/extending.rst:1032 msgid "" @@ -1304,6 +1340,9 @@ msgid "" "``list[1]`` with the value ``0``, and finally prints the borrowed reference. " "Looks harmless, right? But it's not!" msgstr "" +"Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace " +"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. " +"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !" #: extending/extending.rst:1036 msgid "" @@ -1316,7 +1355,6 @@ msgid "" msgstr "" #: extending/extending.rst:1043 -#, fuzzy msgid "" "Since it is written in Python, the :meth:`__del__` method can execute " "arbitrary Python code. Could it perhaps do something to invalidate the " @@ -1328,7 +1366,7 @@ msgid "" msgstr "" "Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du " "code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la " -"référence à ``item`` dans :c:func:`bug' ? Bien sûr ! En supposant que la " +"référence à ``item`` dans :c:func:`bug` ? Bien sûr ! En supposant que la " "liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, " "elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en " "supposant que ce soit la dernière référence à cet objet, elle libérerait la " @@ -1359,6 +1397,16 @@ msgid "" "complete. Obviously, the following function has the same problem as the " "previous one::" msgstr "" +"Le deuxième cas de problèmes liés à une référence empruntée est une variante " +"impliquant des fils de discussion. Normalement, plusieurs threads dans " +"l'interpréteur Python ne peuvent pas se gêner mutuellement, car il existe un " +"verrou global protégeant tout l'espace objet de Python. Cependant, il est " +"possible de libérer temporairement ce verrou en utilisant la macro :c:macro:" +"`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:" +"`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels " +"d'E/S, afin de permettre aux autres threads d'utiliser le processeur en " +"attendant que les E/S soient terminées. Évidemment, la fonction suivante a " +"le même problème que la précédente ::" #: extending/extending.rst:1092 msgid "NULL Pointers" @@ -1415,6 +1463,9 @@ msgid "" "C functions (``args`` in the examples) is never ``NULL`` --- in fact it " "guarantees that it is always a tuple [#]_." msgstr "" +"Le mécanisme d'appel de fonctions C garantit que la liste d'arguments passée " +"aux fonctions C (``args`` dans les exemples) n'est jamais ``NULL``. En fait, " +"il garantit qu'il s'agit toujours d'un n-uplet [#]_." #: extending/extending.rst:1120 msgid "" @@ -1427,6 +1478,7 @@ msgid "Writing Extensions in C++" msgstr "Écrire des extensions en C++" #: extending/extending.rst:1133 +#, fuzzy msgid "" "It is possible to write extension modules in C++. Some restrictions apply. " "If the main program (the Python interpreter) is compiled and linked by the C " @@ -1438,6 +1490,17 @@ msgid "" "`` --- they use this form already if the symbol ``__cplusplus`` is defined " "(all recent C++ compilers define this symbol)." msgstr "" +"Il est possible d'écrire des modules d'extension en C++, mais avec un nombre " +"de restrictions. Si le programme principal (l'interpréteur Python) est " +"compilé et lié par le compilateur C, les objets globaux ou statiques avec " +"les constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si " +"le programme principal est lié par le compilateur C++. Les fonctions qui " +"seront appelées par l'interpréteur Python (en particulier, les fonctions " +"d'initialisation des modules) doivent être déclarées en utilisant le \"C\" " +"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " +"dans le ``extern \"C\" {...}``, car ils utilisent déjà ce format si le " +"symbole ``__cplusplus`` est défini (tous les compilateurs C++ récents " +"définissent ce symbole)." #: extending/extending.rst:1147 msgid "Providing a C API for an Extension Module" @@ -1453,6 +1516,15 @@ msgid "" "create and manipulate lists, this new collection type should have a set of C " "functions for direct manipulation from other extension modules." msgstr "" +"De nombreux modules d'extension fournissent simplement de nouvelles " +"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois " +"le code d'un module d'extension peut être utile pour d'autres modules " +"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type " +"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le " +"type de liste Python standard possède une API C qui permet aux modules " +"d'extension de créer et de manipuler des listes, ce nouveau type de " +"collection devrait posséder un ensemble de fonctions C pour une manipulation " +"directe à partir d'autres modules d'extension." #: extending/extending.rst:1160 msgid "" @@ -1493,6 +1565,14 @@ msgid "" "section :ref:`methodtable`). And it means that symbols that *should* be " "accessible from other extension modules must be exported in a different way." msgstr "" +"La portabilité exige donc de ne faire aucune supposition sur la visibilité " +"des symboles. Cela signifie que tous les symboles des modules d'extension " +"doivent être déclarés ``static``, à l'exception de la fonction " +"d'initialisation du module, afin d'éviter les conflits de noms avec les " +"autres modules d'extension (comme discuté dans la section :ref:" +"`methodtable`). Et cela signifie que les symboles qui *devraient* être " +"accessibles à partir d'autres modules d'extension doivent être exportés " +"d'une manière différente." #: extending/extending.rst:1179 msgid "" @@ -1515,6 +1595,13 @@ msgid "" "distributed in different ways between the module providing the code and the " "client modules." msgstr "" +"Il existe de nombreuses façons d'utiliser les Capsules pour exporter l'API C " +"d'un module d'extension. Chaque fonction peut obtenir sa propre Capsule, ou " +"tous les pointeurs de l'API C peuvent être stockés dans un tableau dont " +"l'adresse est inscrite dans une Capsule. Et les différentes tâches de " +"stockage et de récupération des pointeurs peuvent être réparties de " +"différentes manières entre le module fournissant le code et les modules " +"clients." #: extending/extending.rst:1193 msgid "" @@ -1525,6 +1612,13 @@ msgid "" "of runtime type-safety; there is no feasible way to tell one unnamed Capsule " "from another." msgstr "" +"Quelle que soit la méthode que vous choisissez, il est important de bien " +"nommer vos Capsules. La fonction :c:func:`PyCapsule_New` prend un paramètre " +"nommé (:c:type:`const char \\*`). Vous êtes autorisé à passer un nom " +"``NULL``, mais nous vous encourageons vivement à spécifier un nom. Des " +"Capsules correctement nommées offrent un certain degré de sécurité quant au " +"type d'exécution. Il n'y a pas de moyen de distinguer une Capsule non nommée " +"d'une autre." #: extending/extending.rst:1200 msgid "" @@ -1550,6 +1644,14 @@ msgid "" "takes care of importing the module and retrieving its C API pointers; client " "modules only have to call this macro before accessing the C API." msgstr "" +"L'exemple suivant montre une approche qui fait peser la plus grande partie " +"de la charge sur le rédacteur du module d'exportation, ce qui est approprié " +"pour les modules de bibliothèque couramment utilisés. Il stocke tous les " +"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de " +"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier " +"d'en-tête correspondant au module fournit une macro qui se charge d'importer " +"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont " +"qu'à appeler cette macro avant d'accéder à l'API C." #: extending/extending.rst:1218 msgid "" @@ -1593,6 +1695,10 @@ msgid "" "initialization function must take care of initializing the C API pointer " "array::" msgstr "" +"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête " +"qu'il est inclus dans le module d'exportation, et non dans un module client. " +"Enfin, la fonction d'initialisation du module doit prendre en charge " +"l'initialisation du tableau de pointeurs de l'API C ::" #: extending/extending.rst:1287 msgid "" @@ -1616,6 +1722,9 @@ msgid "" "func:`PySpam_System` is to call the function (or rather macro) :c:func:" "`import_spam` in its initialization function::" msgstr "" +"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:" +"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:" +"`import_spam` dans sa fonction d'initialisation ::" #: extending/extending.rst:1359 msgid "" @@ -1623,6 +1732,10 @@ msgid "" "is rather complicated. However, the basic structure is the same for each " "function that is exported, so it has to be learned only once." msgstr "" +"Le principal inconvénient de cette approche est que le fichier :file:" +"`spammodule.h` est assez compliqué. Cependant, la structure de base est la " +"même pour chaque fonction exportée, ce qui fait qu'elle ne doit être apprise " +"qu'une seule fois." #: extending/extending.rst:1363 msgid "" @@ -1633,6 +1746,13 @@ msgid "" "Capsules (files :file:`Include/pycapsule.h` and :file:`Objects/pycapsule.c` " "in the Python source code distribution)." msgstr "" +"Enfin, il convient de mentionner que Capsules offrent des fonctionnalités " +"supplémentaires, qui sont particulièrement utiles pour l'allocation de la " +"mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les " +"détails sont décrits dans le manuel de référence de l'API Python/C dans la " +"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :" +"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la " +"distribution du code source Python)." #: extending/extending.rst:1371 msgid "Footnotes" @@ -1643,6 +1763,8 @@ msgid "" "An interface for this function already exists in the standard module :mod:" "`os` --- it was chosen as a simple and straightforward example." msgstr "" +"Une interface pour cette fonction existe déjà dans le module standard :mod:" +"`os`, elle a été choisie comme un exemple simple et direct." #: extending/extending.rst:1375 msgid "" From 11d743794be65fdcff5343f44b6f5991289061e7 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:52:08 +0200 Subject: [PATCH 19/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 923abf7c8..7e736cfe2 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -672,7 +672,7 @@ msgstr "" "certaines erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être " "initialisé de manière satisfaisante. La fonction `init` doit renvoyer " "l'objet module à son appelant, afin qu'il soit ensuite inséré dans ``sys." -"modules`` ." +"modules``." #: extending/extending.rst:383 msgid "" From 0e1498ea928edc0f29935f61fc56348ebca453cd Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:52:39 +0200 Subject: [PATCH 20/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 7e736cfe2..78f94e06d 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -667,7 +667,7 @@ msgstr "" "`PyModule_Create`, qui renvoie un objet module, et insère des objets " "fonction intégrés dans le module nouvellement créé en se basant sur la table " "(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition " -"du module. :c:func:`PyModule_Create` et renvoie un pointeur vers l'objet " +"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet " "module qu'il crée. Il peut s'interrompre avec une erreur fatale pour " "certaines erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être " "initialisé de manière satisfaisante. La fonction `init` doit renvoyer " From 90af00269a26e17459b3222125cce611709704b2 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:53:43 +0200 Subject: [PATCH 21/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 78f94e06d..01bbf406b 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1196,7 +1196,7 @@ msgstr "" "nombre de références à cet objet dont on est propriétaire. Le propriétaire " "d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la " "référence n'est plus nécessaire. La propriété d'une référence peut être " -"transférée. Il y a trois façons de disposer d'une référence propriétaire : " +"transférée. Il y a trois façons de disposer d'une référence : " "la transmettre, la stocker, ou appeler :c:func:`Py_DECREF`. Oublier de se " "débarrasser d'une référence propriétaire crée une fuite de mémoire." From f258dabd2a8c7a9acc99ac88da160ecedb44d1c3 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:55:56 +0200 Subject: [PATCH 22/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 01bbf406b..a563c9003 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1705,7 +1705,7 @@ msgid "" "Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array " "would disappear when :func:`PyInit_spam` terminates!" msgstr "" -"Notez que ``PySpam_API`` est déclaré ``statique`` ; sinon le tableau de " +"Notez que ``PySpam_API`` est déclaré ``static`` ; sinon le tableau de " "pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !" #: extending/extending.rst:1290 From 9cf8d834fc6c8214836dad59f345a5c67cd0be4d Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:56:30 +0200 Subject: [PATCH 23/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index a563c9003..9bd81a827 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1198,7 +1198,7 @@ msgstr "" "référence n'est plus nécessaire. La propriété d'une référence peut être " "transférée. Il y a trois façons de disposer d'une référence : " "la transmettre, la stocker, ou appeler :c:func:`Py_DECREF`. Oublier de se " -"débarrasser d'une référence propriétaire crée une fuite de mémoire." +"débarrasser d'une référence crée une fuite de mémoire." #: extending/extending.rst:943 msgid "" From 26a57318de4154bbf53b8bfb0f192c885ab33bb9 Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:56:47 +0200 Subject: [PATCH 24/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 9bd81a827..f57434358 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1193,7 +1193,7 @@ msgstr "" "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " "possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " "comptage de références d'un objet est maintenant défini comme étant le " -"nombre de références à cet objet dont on est propriétaire. Le propriétaire " +"nombre de références à cet objet. Le propriétaire " "d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la " "référence n'est plus nécessaire. La propriété d'une référence peut être " "transférée. Il y a trois façons de disposer d'une référence : " From f49c840d416993444b16c6ca20c1e5604278b9ec Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Fri, 2 Oct 2020 18:56:56 +0200 Subject: [PATCH 25/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index f57434358..18b3c31cf 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -868,7 +868,7 @@ msgstr "" "la levée d'une exception. Si le code C qui a appelé :c:func:" "`PyObject_CallObject` est appelé depuis Python, il devrait maintenant " "renvoyer une indication d'erreur à son appelant Python, afin que " -"l'interpréteur puisse afficher un tracé de pile, ou que le code Python " +"l'interpréteur puisse afficher la pile d'appels, ou que le code Python " "appelant puisse gérer l'exception. Si cela n'est pas possible ou " "souhaitable, l'exception doit être effacée en appelant :c:func:" "`PyErr_Clear`. Par exemple ::" From 0f231c4c3814d63a5e59c5faf49892e5e3a84a60 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Wed, 21 Oct 2020 14:41:33 +0200 Subject: [PATCH 26/37] Contribution 10211441 --- extending/extending.po | 95 ++++++++++++++++++++++++++++++++---------- 1 file changed, 74 insertions(+), 21 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 18b3c31cf..d79e54676 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2020-10-02 15:06+0200\n" +"PO-Revision-Date: 2020-10-21 14:39+0200\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -71,9 +71,9 @@ msgstr "" "et ainsi préserver la portabilité vers d'autres implémentations. Par " "exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un " "appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " -"d'utiliser la bibliothèque `cffi `_ plutôt que " -"d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code " -"Python s'interfaçant avec le code C et sont plus portables entre les " +"d'utiliser la bibliothèque `*cffi* `_ plutôt " +"que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du " +"code Python s'interfaçant avec le code C et sont plus portables entre les " "implémentations de Python que l'écriture et la compilation d'une d'extension " "C." @@ -309,6 +309,7 @@ msgstr "" "de le déterminer à partir de la valeur renvoyée." #: extending/extending.rst:160 +#, fuzzy msgid "" "When a function *f* that calls another function *g* detects that the latter " "fails, *f* should itself return an error value (usually ``NULL`` or " @@ -667,12 +668,11 @@ msgstr "" "`PyModule_Create`, qui renvoie un objet module, et insère des objets " "fonction intégrés dans le module nouvellement créé en se basant sur la table " "(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition " -"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet " -"module qu'il crée. Il peut s'interrompre avec une erreur fatale pour " -"certaines erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être " -"initialisé de manière satisfaisante. La fonction `init` doit renvoyer " -"l'objet module à son appelant, afin qu'il soit ensuite inséré dans ``sys." -"modules``." +"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module " +"qu'il crée. Il peut s'interrompre avec une erreur fatale pour certaines " +"erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être initialisé de " +"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à " +"son appelant, afin qu'il soit ensuite inséré dans ``sys.modules``." #: extending/extending.rst:383 msgid "" @@ -884,6 +884,16 @@ msgid "" "simplest way to do this is to call :c:func:`Py_BuildValue`. For example, if " "you want to pass an integral event code, you might use the following code::" msgstr "" +"Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez " +"peut-être aussi fournir une liste d'arguments à :c:func:" +"`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également " +"fournie par le programme Python, par l'intermédiaire de la même interface " +"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et " +"utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous " +"pouvez avoir à construire un nouveau n-uplet à passer comme liste " +"d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:" +"`Py_BuildValue`. Par exemple, si vous voulez passer un code d'événement " +"intégral, vous pouvez utiliser le code suivant ::" #: extending/extending.rst:608 msgid "" @@ -1026,7 +1036,7 @@ msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " "dernier nécessite que son premier argument soit un n-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " -"interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " +"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " "ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " "exactement une unité formatée, il renvoie tout objet décrit par cette unité " @@ -1100,6 +1110,14 @@ msgid "" "reference to it is deleted. When the counter reaches zero, the last " "reference to the object has been deleted and the object is freed." msgstr "" +"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:" +"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi " +"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:" +"`reference counting`. Le principe est simple : chaque objet contient un " +"compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée " +"quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est " +"supprimée. Lorsque le compteur atteint zéro, la dernière référence à l'objet " +"a été supprimée et l'objet est libéré." #: extending/extending.rst:888 msgid "" @@ -1116,6 +1134,20 @@ msgid "" "garbage collector will be available for C. Until then, we'll have to live " "with reference counts." msgstr "" +"Une stratégie alternative est appelée :dfn:`automatic garbage collection` " +"(collecte automatique des déchets). Parfois, le comptage des références est " +"également appelé stratégie de collecte des déchets, d'où l'utilisation du " +"terme \"automatique\" pour distinguer les deux. Le grand avantage de la " +"collecte automatique des déchets est que l'utilisateur n'a pas besoin " +"d'appeler :c:func:`free` explicitement. (Un autre avantage important est " +"l'amélioration de la vitesse ou de l'utilisation de la mémoire --- ce n'est " +"cependant pas un fait avéré). L'inconvénient est que pour C, il n'y a pas de " +"collecte automatique des déchets vraiment portable, alors que le comptage " +"des références peut être implémenté de façon portable (tant que les " +"fonctions :c:func:`malloc` et :c:func:`free` soient disponibles --- ce que " +"la norme C garantit). Peut-être qu'un jour un collecteur automatique de " +"déchets suffisamment portable sera disponible pour C. D'ici là, nous devrons " +"utiliser les compteurs des références." #: extending/extending.rst:900 msgid "" @@ -1193,12 +1225,12 @@ msgstr "" "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " "possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " "comptage de références d'un objet est maintenant défini comme étant le " -"nombre de références à cet objet. Le propriétaire " -"d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la " -"référence n'est plus nécessaire. La propriété d'une référence peut être " -"transférée. Il y a trois façons de disposer d'une référence : " -"la transmettre, la stocker, ou appeler :c:func:`Py_DECREF`. Oublier de se " -"débarrasser d'une référence crée une fuite de mémoire." +"nombre de références à cet objet. Le propriétaire d'une référence est " +"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus " +"nécessaire. La propriété d'une référence peut être transférée. Il y a trois " +"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :" +"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite " +"de mémoire." #: extending/extending.rst:943 msgid "" @@ -1353,6 +1385,13 @@ msgid "" "defined a :meth:`__del__` method. If this class instance has a reference " "count of 1, disposing of it will call its :meth:`__del__` method." msgstr "" +"Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède " +"des références à tous ses éléments, donc quand l'élément 1 est remplacé, " +"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que " +"l'élément 1 original était une instance d'une classe définie par " +"l'utilisateur, et supposons en outre que la classe définisse une méthode :" +"meth:`__del__`. Si l'instance de cette classe a un nombre des références de " +"1, sa destruction appellera sa méthode :meth:`__del__`." #: extending/extending.rst:1043 msgid "" @@ -1440,6 +1479,9 @@ msgid "" "that may be ``NULL`` is received, for example, from :c:func:`malloc` or from " "a function that may raise an exception." msgstr "" +"Il est préférable de tester la présence de ``NULL`` uniquement au début : " +"lorsqu'un pointeur qui peut être ``NULL`` est reçu, par exemple, de :c:func:" +"`malloc` ou d'une fonction qui peut lever une exception." #: extending/extending.rst:1106 msgid "" @@ -1447,6 +1489,9 @@ msgid "" "``NULL`` pointers --- however, their variants :c:func:`Py_XINCREF` and :c:" "func:`Py_XDECREF` do." msgstr "" +"Les macros :c:func:`Py_INCREF` et :c:func:`Py_DECREF` ne vérifient pas les " +"pointeurs ``NULL``. Cependant, leurs variantes :c:func:`Py_XINCREF` et :c:" +"func:`Py_XDECREF` le font." #: extending/extending.rst:1110 msgid "" @@ -1468,17 +1513,19 @@ msgstr "" "il garantit qu'il s'agit toujours d'un n-uplet [#]_." #: extending/extending.rst:1120 +#, fuzzy msgid "" "It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python " "user." msgstr "" +"C'est une grave erreur de laisser un pointeur ``NULL`` \"échapper\" vers " +"l'utilisateur Python." #: extending/extending.rst:1131 msgid "Writing Extensions in C++" msgstr "Écrire des extensions en C++" #: extending/extending.rst:1133 -#, fuzzy msgid "" "It is possible to write extension modules in C++. Some restrictions apply. " "If the main program (the Python interpreter) is compiled and linked by the C " @@ -1498,9 +1545,9 @@ msgstr "" "seront appelées par l'interpréteur Python (en particulier, les fonctions " "d'initialisation des modules) doivent être déclarées en utilisant le \"C\" " "externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " -"dans le ``extern \"C\" {...}``, car ils utilisent déjà ce format si le " -"symbole ``__cplusplus`` est défini (tous les compilateurs C++ récents " -"définissent ce symbole)." +"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " +"``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce " +"symbole)." #: extending/extending.rst:1147 msgid "Providing a C API for an Extension Module" @@ -1627,12 +1674,18 @@ msgid "" msgstr "" #: extending/extending.rst:1205 +#, fuzzy msgid "" "The convenience function :c:func:`PyCapsule_Import` makes it easy to load a " "C API provided via a Capsule, but only if the Capsule's name matches this " "convention. This behavior gives C API users a high degree of certainty that " "the Capsule they load contains the correct C API." msgstr "" +"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de " +"charger facilement une API C fournie via une Capsule, mais seulement si le " +"nom de la Capsule correspond à cette convention. Ce comportement donne aux " +"utilisateurs d'API C un degré élevé de certitude que la Capsule qu'ils " +"chargent contient l'API C correcte." #: extending/extending.rst:1210 msgid "" From 296a6dd0fc0465b8053353a28372085cb807ff7c Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 20:10:38 +0100 Subject: [PATCH 27/37] prise en compte des remarques --- extending/newtypes.po | 109 +++++++++++++++++++++++++++++++----------- 1 file changed, 81 insertions(+), 28 deletions(-) diff --git a/extending/newtypes.po b/extending/newtypes.po index dc42466e8..53822d2fd 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -6,17 +6,18 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2021-02-07 20:03+0100\n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Last-Translator: \n" +"X-Generator: Poedit 2.3\n" #: extending/newtypes.rst:7 msgid "Defining Extension Types: Assorted Topics" -msgstr "" +msgstr "Définir les types d'extension : divers sujets" #: extending/newtypes.rst:11 msgid "" @@ -68,16 +69,21 @@ msgid "" "Here you can put a string (or its address) that you want returned when the " "Python script references ``obj.__doc__`` to retrieve the doc string." msgstr "" +"Ici vous pouvez mettre une chaîne (ou son adresse) que vous voulez renvoyer " +"lorsque le script Python référence ``obj.__doc__`` pour récupérer le " +"*docstring." #: extending/newtypes.rst:49 msgid "" "Now we come to the basic type methods -- the ones most extension types will " "implement." msgstr "" +"Nous en arrivons maintenant aux méthodes de type basiques -- celles que la " +"plupart des types d'extension mettront en œuvre." #: extending/newtypes.rst:54 msgid "Finalization and De-allocation" -msgstr "" +msgstr "Finalisation et de-allocation" #: extending/newtypes.rst:66 msgid "" @@ -125,11 +131,11 @@ msgstr "" #: extending/newtypes.rst:136 msgid ":pep:`442` explains the new finalization scheme." -msgstr "" +msgstr ":pep:`442` explique le nouveau schéma de finalisation." #: extending/newtypes.rst:143 msgid "Object Presentation" -msgstr "" +msgstr "Présentation de l'objet" #: extending/newtypes.rst:145 msgid "" @@ -165,11 +171,11 @@ msgstr "" #: extending/newtypes.rst:176 msgid "Here is a simple example::" -msgstr "" +msgstr "Voici un exemple simple ::" #: extending/newtypes.rst:188 msgid "Attribute Management" -msgstr "" +msgstr "Gestion des attributs" #: extending/newtypes.rst:190 msgid "" @@ -203,7 +209,7 @@ msgstr "" #: extending/newtypes.rst:219 msgid "Generic Attribute Management" -msgstr "" +msgstr "Gestion des attributs génériques" #: extending/newtypes.rst:221 msgid "" @@ -216,6 +222,8 @@ msgid "" "The name of the attributes must be known when :c:func:`PyType_Ready` is " "called." msgstr "" +"Le nom des attributs doivent être déjà connus lorsqu'on lance :c:func:" +"`PyType_Ready`." #: extending/newtypes.rst:227 msgid "" @@ -244,6 +252,7 @@ msgstr "" #: extending/newtypes.rst:241 msgid "The tables are declared as three fields of the type object::" msgstr "" +"Les tables sont déclarées sous la forme de trois champs de type objet ::" #: extending/newtypes.rst:247 msgid "" @@ -295,35 +304,35 @@ msgstr "Signification" #: extending/newtypes.rst:288 msgid ":const:`READONLY`" -msgstr "" +msgstr ":const:`READONLY`" #: extending/newtypes.rst:288 msgid "Never writable." -msgstr "" +msgstr "Jamais disponible en écriture." #: extending/newtypes.rst:290 msgid ":const:`READ_RESTRICTED`" -msgstr "" +msgstr ":const:`READ_RESTRICTED`" #: extending/newtypes.rst:290 msgid "Not readable in restricted mode." -msgstr "" +msgstr "Non disponible en lecture, dans le mode restreint." #: extending/newtypes.rst:292 msgid ":const:`WRITE_RESTRICTED`" -msgstr "" +msgstr ":const:`WRITE_RESTRICTED`" #: extending/newtypes.rst:292 msgid "Not writable in restricted mode." -msgstr "" +msgstr "Non disponible en écriture dans le mode restreint." #: extending/newtypes.rst:294 msgid ":const:`RESTRICTED`" -msgstr "" +msgstr ":const:`RESTRICTED`" #: extending/newtypes.rst:294 msgid "Not readable or writable in restricted mode." -msgstr "" +msgstr "Non disponible en lecture ou écriture, en mode restreint." #: extending/newtypes.rst:303 msgid "" @@ -334,6 +343,13 @@ msgid "" "the descriptor from the class object, and get the doc string using its :attr:" "`__doc__` attribute." msgstr "" +"Un avantage intéressant de l'utilisation de la table :c:member:" +"`~PyTypeObject.tp_members` pour construire les descripteurs qui sont " +"utilisés à l'exécution, est que à tout attribut défini de cette façon on " +"peut associer un *docstring, en écrivant simplement le texte dans la table. " +"Une application peut utiliser l'API d'introspection pour récupérer le " +"descripteur de l'objet de classe, et utiliser son attribut :attr:`__doc__` " +"pour renvoyer le *docstring." #: extending/newtypes.rst:309 msgid "" @@ -343,7 +359,7 @@ msgstr "" #: extending/newtypes.rst:323 msgid "Type-specific Attribute Management" -msgstr "" +msgstr "Gestion des attributs de type spécifiques" #: extending/newtypes.rst:325 msgid "" @@ -379,7 +395,7 @@ msgstr "" #: extending/newtypes.rst:367 msgid "Object Comparison" -msgstr "" +msgstr "Comparaison des objets" #: extending/newtypes.rst:373 msgid "" @@ -408,7 +424,7 @@ msgstr "" #: extending/newtypes.rst:416 msgid "Abstract Protocol Support" -msgstr "" +msgstr "Support pour le protocole abstrait" #: extending/newtypes.rst:418 msgid "" @@ -466,7 +482,7 @@ msgstr "" #: extending/newtypes.rst:472 msgid "This function takes three arguments:" -msgstr "" +msgstr "Cette fonction prend trois arguments :" #: extending/newtypes.rst:474 msgid "" @@ -491,7 +507,7 @@ msgstr "" #: extending/newtypes.rst:486 msgid "Here is a toy ``tp_call`` implementation::" -msgstr "" +msgstr "Ceci est une implémentation ``tp_call`` très simple ::" #: extending/newtypes.rst:512 msgid "" @@ -510,6 +526,10 @@ msgid "" "tp_iter` handler, which must return an :term:`iterator` object. Here the " "same guidelines apply as for Python classes:" msgstr "" +"Tout objet :term:`iterable` doit implémenter le gestionnaire :c:member:" +"`~PyTypeObject.tp_iter`, qui doit renvoyer un objet de type :term:" +"`iterator`. Ici, les mêmes directives s'appliquent de la même façon que " +"pour les classes *Python* :" #: extending/newtypes.rst:523 msgid "" @@ -517,6 +537,9 @@ msgid "" "independent iterators, a new iterator should be created and returned by each " "call to :c:member:`~PyTypeObject.tp_iter`." msgstr "" +"Pour les collections (telles que les listes et les n-uplets) qui peuvent " +"implémenter plusieurs itérateurs indépendants, un nouvel itérateur doit être " +"créé et renvoyé par chaque appel de type :c:member:`~PyTypeObject.tp_iter`." #: extending/newtypes.rst:526 msgid "" @@ -543,7 +566,7 @@ msgstr "" #: extending/newtypes.rst:547 msgid "Weak Reference Support" -msgstr "" +msgstr "Prise en charge de la référence faible" #: extending/newtypes.rst:549 msgid "" @@ -551,16 +574,22 @@ msgid "" "type to participate in the weak reference mechanism without incurring the " "overhead on performance-critical objects (such as numbers)." msgstr "" +"L'un des objectifs de l'implémentation de la référence faible de *Python* " +"est de permettre à tout type d'objet de participer au mécanisme de référence " +"faible sans avoir à supporter le surcoût de la performance critique des " +"certains objets, tels que les nombres." #: extending/newtypes.rst:554 msgid "Documentation for the :mod:`weakref` module." -msgstr "" +msgstr "Documentation pour le module :mod:`weakref`." #: extending/newtypes.rst:556 msgid "" "For an object to be weakly referencable, the extension type must do two " "things:" msgstr "" +"Pour qu'un objet soit faiblement référençable, le type d'extension doit " +"faire deux choses :" #: extending/newtypes.rst:558 msgid "" @@ -569,6 +598,10 @@ msgid "" "``NULL`` (which is automatic when using the default :c:member:`~PyTypeObject." "tp_alloc`)." msgstr "" +"Inclure un champ :c:type:`PyObject\\*` dans la structure d'objet C dédiée au " +"mécanisme de référence faible. Le constructeur de l'objet doit le laisser à " +"la valeur ``NULL`` (ce qui est automatique lorsque l'on utilise le champ par " +"défaut :c:member:`~PyTypeObject.tp_alloc`)." #: extending/newtypes.rst:563 msgid "" @@ -576,16 +609,23 @@ msgid "" "offset of the aforementioned field in the C object structure, so that the " "interpreter knows how to access and modify that field." msgstr "" +"Définissez le membre de type :c:member:`~PyTypeObject.tp_weaklistoffset` à " +"la valeur de décalage (*offset*) du champ susmentionné dans la structure de " +"l'objet *C*, afin que l'interpréteur sache comment accéder à ce champ et le " +"modifier." #: extending/newtypes.rst:567 msgid "" "Concretely, here is how a trivial object structure would be augmented with " "the required field::" msgstr "" +"Concrètement, voici comment une structure d'objet simple serait complétée " +"par le champ requis ::" #: extending/newtypes.rst:575 msgid "And the corresponding member in the statically-declared type object::" msgstr "" +"Et le membre correspondant dans l'objet de type déclaré statiquement ::" #: extending/newtypes.rst:583 msgid "" @@ -593,10 +633,13 @@ msgid "" "references (by calling :c:func:`PyObject_ClearWeakRefs`) if the field is non-" "``NULL``::" msgstr "" +"Le seul ajout supplémentaire est que ``tp_dealloc`` doit effacer toute " +"référence faible (en appelant :c:func:`PyObject_ClearWeakRefs`) si le champ " +"est non ``NULL`` ::" #: extending/newtypes.rst:599 msgid "More Suggestions" -msgstr "" +msgstr "Plus de suggestions" #: extending/newtypes.rst:601 msgid "" @@ -606,6 +649,12 @@ msgid "" "want (for example, ``tp_richcompare``). You will find examples of the " "function you want to implement." msgstr "" +"Pour savoir comment mettre en œuvre une méthode spécifique pour votre " +"nouveau type de données, téléchargez le code source :term:`CPython`. Allez " +"dans le répertoire :file:`Objects`, puis cherchez dans les fichiers sources " +"*C* la fonction ``tp_`` plus la fonction que vous voulez (par exemple, " +"``tp_richcompare``). Vous trouverez des exemples de la fonction que vous " +"voulez implémenter." #: extending/newtypes.rst:607 msgid "" @@ -613,20 +662,24 @@ msgid "" "you are implementing, use the :c:func:`PyObject_TypeCheck` function. A " "sample of its use might be something like the following::" msgstr "" +"Lorsque vous avez besoin de vérifier qu'un objet est une instance concrète " +"du type que vous implémentez, utilisez la fonction :c:func:" +"`PyObject_TypeCheck`. Voici un exemple de son utilisation ::" #: extending/newtypes.rst:618 msgid "Download CPython source releases." -msgstr "" +msgstr "Télécharger les versions sources de *CPython*." #: extending/newtypes.rst:618 msgid "https://www.python.org/downloads/source/" -msgstr "" +msgstr "https://www.python.org/downloads/source/" #: extending/newtypes.rst:620 msgid "" "The CPython project on GitHub, where the CPython source code is developed." msgstr "" +"Le projet *CPython* sur *GitHub*, où se trouve le code source *CPython*." #: extending/newtypes.rst:621 msgid "https://github.com/python/cpython" -msgstr "" +msgstr "https://github.com/python/cpython" From 415965930ac2556dd2a69f71c134f8fb53689f3d Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Sun, 7 Feb 2021 20:36:26 +0100 Subject: [PATCH 28/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index ed0f167e2..8fbdbd8ce 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1034,7 +1034,7 @@ msgid "" "parenthesize the format string." msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " -"dernier nécessite que son premier argument soit un n-uplet (puisque les " +"dernier nécessite que son premier argument soit un *n*-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " "interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " From a8e37f96c21cd2c7b24a2af9b6f2aab1d82bb5db Mon Sep 17 00:00:00 2001 From: Catalina Chircu <35842763+Catadanna@users.noreply.github.com> Date: Sun, 7 Feb 2021 20:36:34 +0100 Subject: [PATCH 29/37] Update extending/extending.po Co-authored-by: Julien Palard --- extending/extending.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/extending.po b/extending/extending.po index 8fbdbd8ce..8c68bd290 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -1036,7 +1036,7 @@ msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " "dernier nécessite que son premier argument soit un *n*-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " -"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " +"interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " "n'en construit un que si sa chaîne formatée contient deux unités formatées " "ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " "exactement une unité formatée, il renvoie tout objet décrit par cette unité " From cf22866d04e0134f3327f55b838ac48244c83d07 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 20:44:26 +0100 Subject: [PATCH 30/37] Corrections --- extending/extending.po | 852 ++++++++++++++++++++--------------------- 1 file changed, 422 insertions(+), 430 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index ed0f167e2..ac8b94e11 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,14 +6,14 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2020-10-21 14:39+0200\n" +"PO-Revision-Date: 2021-02-07 20:43+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.3\n" #: extending/extending.rst:8 msgid "Extending Python with C or C++" @@ -36,8 +36,8 @@ msgstr "" msgid "" "To support extensions, the Python API (Application Programmers Interface) " "defines a set of functions, macros and variables that provide access to most " -"aspects of the Python run-time system. The Python API is incorporated in a " -"C source file by including the header ``\"Python.h\"``." +"aspects of the Python run-time system. The Python API is incorporated in a C " +"source file by including the header ``\"Python.h\"``." msgstr "" "Pour gérer les extensions, l'API Python (*Application Programmer Interface*) " "définit un ensemble de fonctions, macros et variables qui donnent accès à la " @@ -46,8 +46,8 @@ msgstr "" #: extending/extending.rst:20 msgid "" -"The compilation of an extension module depends on its intended use as well " -"as on your system setup; details are given in later chapters." +"The compilation of an extension module depends on its intended use as well as " +"on your system setup; details are given in later chapters." msgstr "" "La compilation d'un module d'extension dépend de l'usage prévu et de la " "configuration du système, plus de détails peuvent être trouvés dans les " @@ -57,20 +57,20 @@ msgstr "" msgid "" "The C extension interface is specific to CPython, and extension modules do " "not work on other Python implementations. In many cases, it is possible to " -"avoid writing C extensions and preserve portability to other " -"implementations. For example, if your use case is calling C library " -"functions or system calls, you should consider using the :mod:`ctypes` " -"module or the `cffi `_ library rather than " -"writing custom C code. These modules let you write Python code to interface " -"with C code and are more portable between implementations of Python than " -"writing and compiling a C extension module." +"avoid writing C extensions and preserve portability to other implementations. " +"For example, if your use case is calling C library functions or system calls, " +"you should consider using the :mod:`ctypes` module or the `cffi `_ library rather than writing custom C code. These modules " +"let you write Python code to interface with C code and are more portable " +"between implementations of Python than writing and compiling a C extension " +"module." msgstr "" "L'interface d'extension C est spécifique à *CPython*, et les modules " "d'extension ne fonctionne pas sur les autres implémentations de Python. Dans " -"de nombreux cas, il est possible d'éviter la rédaction des extensions en C " -"et ainsi préserver la portabilité vers d'autres implémentations. Par " -"exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un " -"appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " +"de nombreux cas, il est possible d'éviter la rédaction des extensions en C et " +"ainsi préserver la portabilité vers d'autres implémentations. Par exemple, si " +"vous devez appeler une fonction de la bibliothèque C ou faire un appel " +"système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " "d'utiliser la bibliothèque `*cffi* `_ plutôt " "que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du " "code Python s'interfaçant avec le code C et sont plus portables entre les " @@ -85,21 +85,21 @@ msgstr "Un exemple simple" msgid "" "Let's create an extension module called ``spam`` (the favorite food of Monty " "Python fans...) and let's say we want to create a Python interface to the C " -"library function :c:func:`system` [#]_. This function takes a null-" -"terminated character string as argument and returns an integer. We want " -"this function to be callable from Python as follows:" +"library function :c:func:`system` [#]_. This function takes a null-terminated " +"character string as argument and returns an integer. We want this function " +"to be callable from Python as follows:" msgstr "" "Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans " -"des *Monty Python* …) et disons que nous voulons créer une interface Python " -"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction " -"prend une chaîne de caractères à terminaison nulle comme argument et renvoie " -"un entier. Nous voulons que cette fonction soit appelable à partir de Python " +"des *Monty Python* …) et disons que nous voulons créer une interface Python à " +"la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction prend " +"une chaîne de caractères à terminaison nulle comme argument et renvoie un " +"entier. Nous voulons que cette fonction soit appelable à partir de Python " "comme suit :" #: extending/extending.rst:53 msgid "" -"Begin by creating a file :file:`spammodule.c`. (Historically, if a module " -"is called ``spam``, the C file containing its implementation is called :file:" +"Begin by creating a file :file:`spammodule.c`. (Historically, if a module is " +"called ``spam``, the C file containing its implementation is called :file:" "`spammodule.c`; if the module name is very long, like ``spammify``, the " "module name can be just :file:`spammify.c`.)" msgstr "" @@ -126,9 +126,9 @@ msgid "" "standard headers on some systems, you *must* include :file:`Python.h` before " "any standard headers are included." msgstr "" -"Python pouvant définir certaines définitions pré-processeur qui affectent " -"les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python." -"h` avant les en-têtes standards." +"Python pouvant définir certaines définitions pré-processeur qui affectent les " +"têtes standard sur certains systèmes, vous *devez* inclure :file:`Python.h` " +"avant les en-têtes standards." #: extending/extending.rst:72 msgid "" @@ -160,8 +160,8 @@ msgstr "" #: extending/extending.rst:83 msgid "" "The next thing we add to our module file is the C function that will be " -"called when the Python expression ``spam.system(string)`` is evaluated " -"(we'll see shortly how it ends up being called)::" +"called when the Python expression ``spam.system(string)`` is evaluated (we'll " +"see shortly how it ends up being called)::" msgstr "" "La prochaine chose que nous ajoutons à notre fichier de module est la " "fonction C qui sera appelée lorsque l'expression Python ``spam." @@ -176,9 +176,8 @@ msgid "" "*self* and *args*." msgstr "" "Il y a une correspondance directe de la liste des arguments en Python (par " -"exemple, l'expression ``\"ls -l\"``) aux arguments passés à la fonction C. " -"La fonction C a toujours deux arguments, appelés par convention *self* et " -"*args*." +"exemple, l'expression ``\"ls -l\"``) aux arguments passés à la fonction C. La " +"fonction C a toujours deux arguments, appelés par convention *self* et *args*." #: extending/extending.rst:104 msgid "" @@ -190,24 +189,24 @@ msgstr "" #: extending/extending.rst:107 msgid "" -"The *args* argument will be a pointer to a Python tuple object containing " -"the arguments. Each item of the tuple corresponds to an argument in the " -"call's argument list. The arguments are Python objects --- in order to do " -"anything with them in our C function we have to convert them to C values. " -"The function :c:func:`PyArg_ParseTuple` in the Python API checks the " -"argument types and converts them to C values. It uses a template string to " -"determine the required types of the arguments as well as the types of the C " -"variables into which to store the converted values. More about this later." +"The *args* argument will be a pointer to a Python tuple object containing the " +"arguments. Each item of the tuple corresponds to an argument in the call's " +"argument list. The arguments are Python objects --- in order to do anything " +"with them in our C function we have to convert them to C values. The " +"function :c:func:`PyArg_ParseTuple` in the Python API checks the argument " +"types and converts them to C values. It uses a template string to determine " +"the required types of the arguments as well as the types of the C variables " +"into which to store the converted values. More about this later." msgstr "" "L'argument *args* sera un pointeur vers un *n*-uplet Python contenant les " "arguments. Chaque élément du *n*-uplet correspond à un argument dans la liste " "des arguments de l'appel. Les arguments sont des objets Python, afin d'en " "faire quelque chose dans notre fonction C, nous devons les convertir en " -"valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie " -"les types des arguments et les convertit en valeurs C. Elle utilise un " -"modèle sous forme de chaîne pour déterminer les types requis des arguments " -"ainsi que les types de variables C dans lequel stocker les valeurs " -"converties. Nous en verront plus, plus tard." +"valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie les " +"types des arguments et les convertit en valeurs C. Elle utilise un modèle " +"sous forme de chaîne pour déterminer les types requis des arguments ainsi que " +"les types de variables C dans lequel stocker les valeurs converties. Nous en " +"verront plus, plus tard." #: extending/extending.rst:116 msgid "" @@ -219,8 +218,8 @@ msgid "" "example)." msgstr "" ":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont " -"le bon type et que ses composants ont été stockés dans les variables dont " -"les adresses ont été données en entrée. Il renvoie faux (zéro) si une liste " +"le bon type et que ses composants ont été stockés dans les variables dont les " +"adresses ont été données en entrée. Il renvoie faux (zéro) si une liste " "d'arguments invalide a été passée. Dans ce dernier cas, elle lève également " "une exception appropriée de sorte que la fonction d'appel puisse renvoyer " "``NULL`` immédiatement (comme nous l'avons vu dans l'exemple)." @@ -248,13 +247,12 @@ msgstr "" "valeur d'erreur (typiquement un pointeur ``NULL``). Dans l'interpréteur, les " "exceptions sont stockées dans une variable globale statique, si cette " "variable est ``NULL``, aucune exception n'a eu lieu. Une seconde variable " -"globale stocke la \"valeur associée\" à l'exception (le deuxième argument " -"de :keyword:`raise`). Une troisième variable contient la trace de la pile " -"dans le cas où l'erreur soit survenue dans du code Python. Ces trois " -"variables sont les équivalents C du résultat de :meth:`sys.exc_info` en " -"Python (voir la section sur le module :mod:`sys` dans *The Python Library " -"Reference*). Il est important de les connaître pour comprendre comment les " -"erreurs sont propagées." +"globale stocke la \"valeur associée\" à l'exception (le deuxième argument de :" +"keyword:`raise`). Une troisième variable contient la trace de la pile dans le " +"cas où l'erreur soit survenue dans du code Python. Ces trois variables sont " +"les équivalents C du résultat de :meth:`sys.exc_info` en Python (voir la " +"section sur le module :mod:`sys` dans *The Python Library Reference*). Il est " +"important de les connaître pour comprendre comment les erreurs sont propagées." #: extending/extending.rst:139 msgid "" @@ -290,16 +288,16 @@ msgstr "" "Une autre fonction utile est :c:func:`PyErr_SetFromErrno`, qui construit une " "exception à partir de la valeur de la variable globale :c:data:`errno`. La " "fonction la plus générale est :c:func:`PyErr_SetObject`, qui prend deux " -"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :" -"c:func:`Py_INCREF` aux objets transmis à ces fonctions." +"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :c:" +"func:`Py_INCREF` aux objets transmis à ces fonctions." #: extending/extending.rst:154 msgid "" -"You can test non-destructively whether an exception has been set with :c:" -"func:`PyErr_Occurred`. This returns the current exception object, or " -"``NULL`` if no exception has occurred. You normally don't need to call :c:" -"func:`PyErr_Occurred` to see whether an error occurred in a function call, " -"since you should be able to tell from the return value." +"You can test non-destructively whether an exception has been set with :c:func:" +"`PyErr_Occurred`. This returns the current exception object, or ``NULL`` if " +"no exception has occurred. You normally don't need to call :c:func:" +"`PyErr_Occurred` to see whether an error occurred in a function call, since " +"you should be able to tell from the return value." msgstr "" "Vous pouvez tester de manière non destructive si une exception a été levée " "avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou " @@ -312,35 +310,34 @@ msgstr "" #, fuzzy msgid "" "When a function *f* that calls another function *g* detects that the latter " -"fails, *f* should itself return an error value (usually ``NULL`` or " -"``-1``). It should *not* call one of the :c:func:`PyErr_\\*` functions --- " -"one has already been called by *g*. *f*'s caller is then supposed to also " -"return an error indication to *its* caller, again *without* calling :c:func:" -"`PyErr_\\*`, and so on --- the most detailed cause of the error was already " -"reported by the function that first detected it. Once the error reaches the " -"Python interpreter's main loop, this aborts the currently executing Python " -"code and tries to find an exception handler specified by the Python " -"programmer." -msgstr "" -"Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que " -"cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour " -"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* " -"appeler l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant " -"déjà été appelée par *g*. La fonction appelant *f* est alors censée renvoyer " -"aussi un code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:" -"func:`PyErr_\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur " -"a déjà été signalée par la fonction l'ayant détecté en premier. Une fois " -"l'erreur remontée à la boucle principale de l'interpréteur Python, il " -"interrompt le code en cours d'exécution et essaie de trouver un gestionnaire " -"d'exception spécifié par le développeur Python." +"fails, *f* should itself return an error value (usually ``NULL`` or ``-1``). " +"It should *not* call one of the :c:func:`PyErr_\\*` functions --- one has " +"already been called by *g*. *f*'s caller is then supposed to also return an " +"error indication to *its* caller, again *without* calling :c:func:`PyErr_" +"\\*`, and so on --- the most detailed cause of the error was already reported " +"by the function that first detected it. Once the error reaches the Python " +"interpreter's main loop, this aborts the currently executing Python code and " +"tries to find an exception handler specified by the Python programmer." +msgstr "" +"Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que cette " +"dernière a échoué, *f* devrait donner une valeur d'erreur à son tour " +"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* appeler " +"l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant déjà été " +"appelée par *g*. La fonction appelant *f* est alors censée renvoyer aussi un " +"code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:func:`PyErr_" +"\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur a déjà été " +"signalée par la fonction l'ayant détecté en premier. Une fois l'erreur " +"remontée à la boucle principale de l'interpréteur Python, il interrompt le " +"code en cours d'exécution et essaie de trouver un gestionnaire d'exception " +"spécifié par le développeur Python." #: extending/extending.rst:170 msgid "" "(There are situations where a module can actually give a more detailed error " -"message by calling another :c:func:`PyErr_\\*` function, and in such cases " -"it is fine to do so. As a general rule, however, this is not necessary, and " -"can cause information about the cause of the error to be lost: most " -"operations can fail for a variety of reasons.)" +"message by calling another :c:func:`PyErr_\\*` function, and in such cases it " +"is fine to do so. As a general rule, however, this is not necessary, and can " +"cause information about the cause of the error to be lost: most operations " +"can fail for a variety of reasons.)" msgstr "" "(Il y a des situations où un module peut effectivement donner un message " "d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\*`, " @@ -358,11 +355,11 @@ msgid "" "itself (possibly by trying something else, or pretending nothing went wrong)." msgstr "" "Pour ignorer une exception qui aurait été émise lors d'un appel de fonction " -"qui aurait échoué, l'exception doit être retirée explicitement en appelant :" -"c:func:`PyErr_Clear`. Le seul cas pour lequel du code C devrait appeler :c:" -"func:`PyErr_Clear` est lorsqu'il ne veut pas passer l'erreur à " -"l'interpréteur, mais souhaite la gérer lui-même (peut-être en essayant " -"quelque chose d'autre, ou en prétendant que rien n'a mal tourné)." +"qui aurait échoué, l'exception doit être retirée explicitement en appelant :c:" +"func:`PyErr_Clear`. Le seul cas pour lequel du code C devrait appeler :c:func:" +"`PyErr_Clear` est lorsqu'il ne veut pas passer l'erreur à l'interpréteur, " +"mais souhaite la gérer lui-même (peut-être en essayant quelque chose d'autre, " +"ou en prétendant que rien n'a mal tourné)." #: extending/extending.rst:182 msgid "" @@ -393,13 +390,13 @@ msgstr "" #: extending/extending.rst:192 msgid "" -"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :" -"c:func:`Py_DECREF` calls for objects you have already created) when you " -"return an error indicator!" +"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :c:" +"func:`Py_DECREF` calls for objects you have already created) when you return " +"an error indicator!" msgstr "" -"Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin " -"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec " -"les objets que vous auriez déjà créés) !" +"Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin de " +"nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec les " +"objets que vous auriez déjà créés) !" #: extending/extending.rst:196 msgid "" @@ -409,9 +406,9 @@ msgid "" "you should choose exceptions wisely --- don't use :c:data:`PyExc_TypeError` " "to mean that a file couldn't be opened (that should probably be :c:data:" "`PyExc_IOError`). If something's wrong with the argument list, the :c:func:" -"`PyArg_ParseTuple` function usually raises :c:data:`PyExc_TypeError`. If " -"you have an argument whose value must be in a particular range or must " -"satisfy other conditions, :c:data:`PyExc_ValueError` is appropriate." +"`PyArg_ParseTuple` function usually raises :c:data:`PyExc_TypeError`. If you " +"have an argument whose value must be in a particular range or must satisfy " +"other conditions, :c:data:`PyExc_ValueError` is appropriate." msgstr "" "Le choix de l'exception à lever vous incombe. Il existe des objets C " "correspondant à chaque exception Python, tel que :c:data:" @@ -448,8 +445,8 @@ msgid "" "class being :exc:`Exception` (unless another class is passed in instead of " "``NULL``), described in :ref:`bltin-exceptions`." msgstr "" -"Notez que le nom de l'exception en Python est :exc:`spam.error`. La " -"fonction :c:func:`PyErr_NewException` peut créer une classe héritant de :exc:" +"Notez que le nom de l'exception en Python est :exc:`spam.error`. La fonction :" +"c:func:`PyErr_NewException` peut créer une classe héritant de :exc:" "`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de " "``NULL``), voir :ref:`bltin-exceptions`." @@ -466,10 +463,10 @@ msgstr "" "Notez également que la variable :c:data:`SpamError` contient une référence à " "la nouvelle classe créée ; ceci est intentionnel ! Comme l'exception peut " "être retirée du module par un code externe, une référence à la classe est " -"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:" -"`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur " -"défaillant, le C code qui lève l'exception peut engendrer un rejet central " -"ou des effets secondaires inattendus." +"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:`SpamError` " +"à devenir un pointeur défaillant. S'il devenait un pointeur défaillant, le C " +"code qui lève l'exception peut engendrer un rejet central ou des effets " +"secondaires inattendus." #: extending/extending.rst:247 msgid "" @@ -493,11 +490,11 @@ msgstr "Retour vers l'exemple" #: extending/extending.rst:275 msgid "" -"Going back to our example function, you should now be able to understand " -"this statement::" +"Going back to our example function, you should now be able to understand this " +"statement::" msgstr "" -"En revenant vers notre fonction exemple, vous devriez maintenant être " -"capable de comprendre cette affirmation ::" +"En revenant vers notre fonction exemple, vous devriez maintenant être capable " +"de comprendre cette affirmation ::" #: extending/extending.rst:281 msgid "" @@ -509,22 +506,22 @@ msgid "" "which it points (so in Standard C, the variable :c:data:`command` should " "properly be declared as ``const char *command``)." msgstr "" -"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant " -"des pointeurs d'objet) si une erreur est détectée dans la liste des " -"arguments, se fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. " -"Autrement, la valeur chaîne de l'argument a été copiée dans la variable " -"locale :c:data:`command`. Il s'agit d'une attribution de pointeur et vous " -"n'êtes pas supposés modifier la chaîne vers laquelle il pointe (donc en C " -"Standard, la variable :c:data:`command` doit être clairement déclarée comme " -"``const char *command``)." +"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant des " +"pointeurs d'objet) si une erreur est détectée dans la liste des arguments, se " +"fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. Autrement, la " +"valeur chaîne de l'argument a été copiée dans la variable locale :c:data:" +"`command`. Il s'agit d'une attribution de pointeur et vous n'êtes pas " +"supposés modifier la chaîne vers laquelle il pointe (donc en C Standard, la " +"variable :c:data:`command` doit être clairement déclarée comme ``const char " +"*command``)." #: extending/extending.rst:289 msgid "" "The next statement is a call to the Unix function :c:func:`system`, passing " "it the string we just got from :c:func:`PyArg_ParseTuple`::" msgstr "" -"La prochaine instruction est un appel à la fonction Unix :c:func:`system`, " -"en lui passant la chaîne que nous venons d'obtenir à partir de :c:func:" +"La prochaine instruction est un appel à la fonction Unix :c:func:`system`, en " +"lui passant la chaîne que nous venons d'obtenir à partir de :c:func:" "`PyArg_ParseTuple` ::" #: extending/extending.rst:294 @@ -551,16 +548,16 @@ msgid "" "``None``. You need this idiom to do so (which is implemented by the :c:" "macro:`Py_RETURN_NONE` macro)::" msgstr "" -"Si vous avez une fonction C qui ne renvoie aucun argument utile (une " -"fonction renvoyant :c:type:`void`), la fonction Python correspondante doit " -"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est " -"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::" +"Si vous avez une fonction C qui ne renvoie aucun argument utile (une fonction " +"renvoyant :c:type:`void`), la fonction Python correspondante doit renvoyer " +"``None``. Vous aurez besoin de cette locution pour cela (qui est implémentée " +"par la macro :c:macro:`Py_RETURN_NONE`) ::" #: extending/extending.rst:310 msgid "" ":c:data:`Py_None` is the C name for the special Python object ``None``. It " -"is a genuine Python object rather than a ``NULL`` pointer, which means " -"\"error\" in most contexts, as we have seen." +"is a genuine Python object rather than a ``NULL`` pointer, which means \"error" +"\" in most contexts, as we have seen." msgstr "" ":c:data:`Py_None` est la dénomination en C pour l'objet spécial Python " "``None``. C'est un authentique objet Python plutôt qu'un pointeur ``NULL``, " @@ -576,9 +573,9 @@ msgid "" "I promised to show how :c:func:`spam_system` is called from Python programs. " "First, we need to list its name and address in a \"method table\"::" msgstr "" -"Nous avons promis de montrer comment :c:func:`spam_system` est appelée " -"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et " -"son adresse dans un « tableau des méthodes » ::" +"Nous avons promis de montrer comment :c:func:`spam_system` est appelée depuis " +"les programmes Python. D'abord, nous avons besoin d'avoir son nom et son " +"adresse dans un « tableau des méthodes » ::" #: extending/extending.rst:331 msgid "" @@ -589,16 +586,16 @@ msgid "" "is used." msgstr "" "Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de " -"convention à utiliser pour la fonction C, à destination de l'interpréteur. " -"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | " -"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:" -"func:`PyArg_ParseTuple` est utilisée." +"convention à utiliser pour la fonction C, à destination de l'interpréteur. Il " +"doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | " +"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:func:" +"`PyArg_ParseTuple` est utilisée." #: extending/extending.rst:336 msgid "" -"When using only ``METH_VARARGS``, the function should expect the Python-" -"level parameters to be passed in as a tuple acceptable for parsing via :c:" -"func:`PyArg_ParseTuple`; more information on this function is provided below." +"When using only ``METH_VARARGS``, the function should expect the Python-level " +"parameters to be passed in as a tuple acceptable for parsing via :c:func:" +"`PyArg_ParseTuple`; more information on this function is provided below." msgstr "" "Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les " "paramètres Python soient passés comme un *n*-uplet que l'on peut analyser " @@ -610,18 +607,17 @@ msgid "" "The :const:`METH_KEYWORDS` bit may be set in the third field if keyword " "arguments should be passed to the function. In this case, the C function " "should accept a third ``PyObject *`` parameter which will be a dictionary of " -"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments " -"to such a function." +"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments to " +"such a function." msgstr "" "Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si " -"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, " -"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un " +"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, la " +"fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un " "dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` " "pour analyser les arguments d'une telle fonction." #: extending/extending.rst:346 -msgid "" -"The method table must be referenced in the module definition structure::" +msgid "The method table must be referenced in the module definition structure::" msgstr "" "Le tableau des méthodes doit être référencé dans la structure de définition " "du module ::" @@ -630,8 +626,8 @@ msgstr "" msgid "" "This structure, in turn, must be passed to the interpreter in the module's " "initialization function. The initialization function must be named :c:func:" -"`PyInit_name`, where *name* is the name of the module, and should be the " -"only non-\\ ``static`` item defined in the module file::" +"`PyInit_name`, where *name* is the name of the module, and should be the only " +"non-\\ ``static`` item defined in the module file::" msgstr "" "Cette structure, à son tour, doit être transmise à l'interpréteur dans la " "fonction d'initialisation du module. La fonction d'initialisation doit être " @@ -640,14 +636,14 @@ msgstr "" #: extending/extending.rst:368 msgid "" -"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return " -"type, declares any special linkage declarations required by the platform, " -"and for C++ declares the function as ``extern \"C\"``." +"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return type, " +"declares any special linkage declarations required by the platform, and for C+" +"+ declares the function as ``extern \"C\"``." msgstr "" "Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de " "type ``PyObject *``, et déclare également toute déclaration de liaison " -"spéciale requise par la plate-forme, et pour le C++ déclare la fonction " -"comme un C ``extern``." +"spéciale requise par la plate-forme, et pour le C++ déclare la fonction comme " +"un C ``extern``." #: extending/extending.rst:372 msgid "" @@ -658,21 +654,21 @@ msgid "" "upon the table (an array of :c:type:`PyMethodDef` structures) found in the " "module definition. :c:func:`PyModule_Create` returns a pointer to the module " "object that it creates. It may abort with a fatal error for certain errors, " -"or return ``NULL`` if the module could not be initialized satisfactorily. " -"The init function must return the module object to its caller, so that it " -"then gets inserted into ``sys.modules``." +"or return ``NULL`` if the module could not be initialized satisfactorily. The " +"init function must return the module object to its caller, so that it then " +"gets inserted into ``sys.modules``." msgstr "" "Lorsque le programme Python importe le module :mod:`spam` pour la première " "fois, :c:func:`PyInit_spam` est appelé. (Voir ci-dessous pour les " "commentaires sur l'intégration en Python.) Il appelle :c:func:" -"`PyModule_Create`, qui renvoie un objet module, et insère des objets " -"fonction intégrés dans le module nouvellement créé en se basant sur la table " -"(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition " -"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module " +"`PyModule_Create`, qui renvoie un objet module, et insère des objets fonction " +"intégrés dans le module nouvellement créé en se basant sur la table (un " +"tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition du " +"module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module " "qu'il crée. Il peut s'interrompre avec une erreur fatale pour certaines " "erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être initialisé de " -"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à " -"son appelant, afin qu'il soit ensuite inséré dans ``sys.modules``." +"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à son " +"appelant, afin qu'il soit ensuite inséré dans ``sys.modules``." #: extending/extending.rst:383 msgid "" @@ -690,17 +686,17 @@ msgstr "" #: extending/extending.rst:427 msgid "" "Removing entries from ``sys.modules`` or importing compiled modules into " -"multiple interpreters within a process (or following a :c:func:`fork` " -"without an intervening :c:func:`exec`) can create problems for some " -"extension modules. Extension module authors should exercise caution when " -"initializing internal data structures." +"multiple interpreters within a process (or following a :c:func:`fork` without " +"an intervening :c:func:`exec`) can create problems for some extension " +"modules. Extension module authors should exercise caution when initializing " +"internal data structures." msgstr "" "Supprimer des entrées de ``sys.modules`` ou importer des modules compilés " "dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:" -"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes " -"pour certains modules d'extension. Les auteurs de modules d'extension " -"doivent faire preuve de prudence lorsqu'ils initialisent des structures de " -"données internes." +"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes pour " +"certains modules d'extension. Les auteurs de modules d'extension doivent " +"faire preuve de prudence lorsqu'ils initialisent des structures de données " +"internes." #: extending/extending.rst:433 msgid "" @@ -732,11 +728,11 @@ msgstr "Compilation et liaison" #: extending/extending.rst:450 msgid "" "There are two more things to do before you can use your new extension: " -"compiling and linking it with the Python system. If you use dynamic " -"loading, the details may depend on the style of dynamic loading your system " -"uses; see the chapters about building extension modules (chapter :ref:" -"`building`) and additional information that pertains only to building on " -"Windows (chapter :ref:`building-on-windows`) for more information about this." +"compiling and linking it with the Python system. If you use dynamic loading, " +"the details may depend on the style of dynamic loading your system uses; see " +"the chapters about building extension modules (chapter :ref:`building`) and " +"additional information that pertains only to building on Windows (chapter :" +"ref:`building-on-windows`) for more information about this." msgstr "" #: extending/extending.rst:457 @@ -745,8 +741,8 @@ msgid "" "permanent part of the Python interpreter, you will have to change the " "configuration setup and rebuild the interpreter. Luckily, this is very " "simple on Unix: just place your file (:file:`spammodule.c` for example) in " -"the :file:`Modules/` directory of an unpacked source distribution, add a " -"line to the file :file:`Modules/Setup.local` describing your file:" +"the :file:`Modules/` directory of an unpacked source distribution, add a line " +"to the file :file:`Modules/Setup.local` describing your file:" msgstr "" #: extending/extending.rst:468 @@ -772,8 +768,8 @@ msgstr "Appeler des fonctions Python en C" msgid "" "So far we have concentrated on making C functions callable from Python. The " "reverse is also useful: calling Python functions from C. This is especially " -"the case for libraries that support so-called \"callback\" functions. If a " -"C interface makes use of callbacks, the equivalent Python often needs to " +"the case for libraries that support so-called \"callback\" functions. If a C " +"interface makes use of callbacks, the equivalent Python often needs to " "provide a callback mechanism to the Python programmer; the implementation " "will require calling the Python callback functions from a C callback. Other " "uses are also imaginable." @@ -792,8 +788,8 @@ msgstr "" msgid "" "Calling a Python function is easy. First, the Python program must somehow " "pass you the Python function object. You should provide a function (or some " -"other interface) to do this. When this function is called, save a pointer " -"to the Python function object (be careful to :c:func:`Py_INCREF` it!) in a " +"other interface) to do this. When this function is called, save a pointer to " +"the Python function object (be careful to :c:func:`Py_INCREF` it!) in a " "global variable --- or wherever you see fit. For example, the following " "function might be part of a module definition::" msgstr "" @@ -801,9 +797,9 @@ msgstr "" #: extending/extending.rst:531 msgid "" "This function must be registered with the interpreter using the :const:" -"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :" -"c:func:`PyArg_ParseTuple` function and its arguments are documented in " -"section :ref:`parsetuple`." +"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :c:" +"func:`PyArg_ParseTuple` function and its arguments are documented in section :" +"ref:`parsetuple`." msgstr "" "Cette fonction doit être déclarée en utilisant le drapeau :const:" "`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La " @@ -848,9 +844,9 @@ msgstr "" msgid "" "The return value of :c:func:`PyObject_CallObject` is \"new\": either it is a " "brand new object, or it is an existing object whose reference count has been " -"incremented. So, unless you want to save it in a global variable, you " -"should somehow :c:func:`Py_DECREF` the result, even (especially!) if you are " -"not interested in its value." +"incremented. So, unless you want to save it in a global variable, you should " +"somehow :c:func:`Py_DECREF` the result, even (especially!) if you are not " +"interested in its value." msgstr "" #: extending/extending.rst:576 @@ -869,9 +865,9 @@ msgstr "" "`PyObject_CallObject` est appelé depuis Python, il devrait maintenant " "renvoyer une indication d'erreur à son appelant Python, afin que " "l'interpréteur puisse afficher la pile d'appels, ou que le code Python " -"appelant puisse gérer l'exception. Si cela n'est pas possible ou " -"souhaitable, l'exception doit être effacée en appelant :c:func:" -"`PyErr_Clear`. Par exemple ::" +"appelant puisse gérer l'exception. Si cela n'est pas possible ou souhaitable, " +"l'exception doit être effacée en appelant :c:func:`PyErr_Clear`. Par " +"exemple ::" #: extending/extending.rst:589 msgid "" @@ -887,8 +883,8 @@ msgstr "" "Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez " "peut-être aussi fournir une liste d'arguments à :c:func:" "`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également " -"fournie par le programme Python, par l'intermédiaire de la même interface " -"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et " +"fournie par le programme Python, par l'intermédiaire de la même interface qui " +"a spécifié la fonction de rappel. Elle peut alors être sauvegardée et " "utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous " "pouvez avoir à construire un nouveau n-uplet à passer comme liste " "d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:" @@ -910,8 +906,8 @@ msgid "" "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" "Vous pouvez également appeler une fonction avec des arguments nommés en " -"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les " -"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:" +"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les arguments " +"nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:" "`Py_BuildValue` pour construire le dictionnaire. ::" #: extending/extending.rst:630 @@ -926,9 +922,9 @@ msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::" msgid "" "The *arg* argument must be a tuple object containing an argument list passed " "from Python to a C function. The *format* argument must be a format string, " -"whose syntax is explained in :ref:`arg-parsing` in the Python/C API " -"Reference Manual. The remaining arguments must be addresses of variables " -"whose type is determined by the format string." +"whose syntax is explained in :ref:`arg-parsing` in the Python/C API Reference " +"Manual. The remaining arguments must be addresses of variables whose type is " +"determined by the format string." msgstr "" #: extending/extending.rst:644 @@ -944,8 +940,8 @@ msgid "" "Note that any Python object references which are provided to the caller are " "*borrowed* references; do not decrement their reference count!" msgstr "" -"Notez que n'importe quelles références sur un objet Python qui sont données " -"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur " +"Notez que n'importe quelles références sur un objet Python qui sont données à " +"l'appelant sont des références *empruntées* ; ne décrémentez pas leur " "compteur de références !" #: extending/extending.rst:652 @@ -959,8 +955,7 @@ msgstr "Paramètres nommés pour des fonctions d'extension" #: extending/extending.rst:726 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" -msgstr "" -"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::" +msgstr "La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::" #: extending/extending.rst:731 msgid "" @@ -968,10 +963,9 @@ msgid "" "`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of " "keywords received as the third parameter from the Python runtime. The " "*kwlist* parameter is a ``NULL``-terminated list of strings which identify " -"the parameters; the names are matched with the type information from " -"*format* from left to right. On success, :c:func:" -"`PyArg_ParseTupleAndKeywords` returns true, otherwise it returns false and " -"raises an appropriate exception." +"the parameters; the names are matched with the type information from *format* " +"from left to right. On success, :c:func:`PyArg_ParseTupleAndKeywords` " +"returns true, otherwise it returns false and raises an appropriate exception." msgstr "" "Les paramètres *arg* et *format* sont identiques à ceux de la fonction :c:" "func:`PyArg_ParseTuple`. Le paramètre *kwdict* est le dictionnaire de mots-" @@ -988,6 +982,9 @@ msgid "" "parameters passed in which are not present in the *kwlist* will cause :exc:" "`TypeError` to be raised." msgstr "" +"Les n-uplets imbriqués ne peuvent pas être traités lorsqu'on utilise des " +"arguments de type mot-clé ! Ceux-ci doivent apparaître dans dans *kwlist*, " +"dans le cas contraire une exception :exc:`TypeError` est levée." #: extending/extending.rst:747 msgid "" @@ -1011,10 +1008,10 @@ msgstr "" #: extending/extending.rst:809 msgid "" -"It recognizes a set of format units similar to the ones recognized by :c:" -"func:`PyArg_ParseTuple`, but the arguments (which are input to the function, " -"not output) must not be pointers, just values. It returns a new Python " -"object, suitable for returning from a C function called from Python." +"It recognizes a set of format units similar to the ones recognized by :c:func:" +"`PyArg_ParseTuple`, but the arguments (which are input to the function, not " +"output) must not be pointers, just values. It returns a new Python object, " +"suitable for returning from a C function called from Python." msgstr "" "Il reconnaît un ensemble d'unités de format similaires à celles reconnues " "par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en " @@ -1024,8 +1021,8 @@ msgstr "" #: extending/extending.rst:814 msgid "" -"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires " -"its first argument to be a tuple (since Python argument lists are always " +"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires its " +"first argument to be a tuple (since Python argument lists are always " "represented as tuples internally), :c:func:`Py_BuildValue` does not always " "build a tuple. It builds a tuple only if its format string contains two or " "more format units. If the format string is empty, it returns ``None``; if it " @@ -1037,8 +1034,8 @@ msgstr "" "dernier nécessite que son premier argument soit un n-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " "interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " -"n'en construit un que si sa chaîne formatée contient deux unités formatées " -"ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " +"n'en construit un que si sa chaîne formatée contient deux unités formatées ou " +"plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " "exactement une unité formatée, il renvoie tout objet décrit par cette unité " "formatée. Pour le forcer à renvoyer un n-uplet de taille 0 ou 1, mettez la " "chaîne formatée entre parenthèses." @@ -1046,8 +1043,7 @@ msgstr "" #: extending/extending.rst:822 msgid "" "Examples (to the left the call, to the right the resulting Python value):" -msgstr "" -"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :" +msgstr "Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :" #: extending/extending.rst:848 msgid "Reference Counts" @@ -1063,8 +1059,8 @@ msgid "" msgstr "" "Dans les langages comme le C ou le C++, le développeur est responsable de " "l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En " -"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. " -"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec " +"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. En " +"C++, les opérateurs ``new`` et ``delete`` sont utilisés avec " "essentiellement la même signification et nous limiterons la discussion " "suivante au cas du C." @@ -1076,25 +1072,25 @@ msgid "" "block's address is forgotten but :c:func:`free` is not called for it, the " "memory it occupies cannot be reused until the program terminates. This is " "called a :dfn:`memory leak`. On the other hand, if a program calls :c:func:" -"`free` for a block and then continues to use the block, it creates a " -"conflict with re-use of the block through another :c:func:`malloc` call. " -"This is called :dfn:`using freed memory`. It has the same bad consequences " -"as referencing uninitialized data --- core dumps, wrong results, mysterious " +"`free` for a block and then continues to use the block, it creates a conflict " +"with re-use of the block through another :c:func:`malloc` call. This is " +"called :dfn:`using freed memory`. It has the same bad consequences as " +"referencing uninitialized data --- core dumps, wrong results, mysterious " "crashes." msgstr "" #: extending/extending.rst:867 msgid "" "Common causes of memory leaks are unusual paths through the code. For " -"instance, a function may allocate a block of memory, do some calculation, " -"and then free the block again. Now a change in the requirements for the " -"function may add a test to the calculation that detects an error condition " -"and can return prematurely from the function. It's easy to forget to free " -"the allocated memory block when taking this premature exit, especially when " -"it is added later to the code. Such leaks, once introduced, often go " -"undetected for a long time: the error exit is taken only in a small fraction " -"of all calls, and most modern machines have plenty of virtual memory, so the " -"leak only becomes apparent in a long-running process that uses the leaking " +"instance, a function may allocate a block of memory, do some calculation, and " +"then free the block again. Now a change in the requirements for the function " +"may add a test to the calculation that detects an error condition and can " +"return prematurely from the function. It's easy to forget to free the " +"allocated memory block when taking this premature exit, especially when it is " +"added later to the code. Such leaks, once introduced, often go undetected " +"for a long time: the error exit is taken only in a small fraction of all " +"calls, and most modern machines have plenty of virtual memory, so the leak " +"only becomes apparent in a long-running process that uses the leaking " "function frequently. Therefore, it's important to prevent leaks from " "happening by having a coding convention or strategy that minimizes this kind " "of errors." @@ -1102,17 +1098,17 @@ msgstr "" #: extending/extending.rst:880 msgid "" -"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it " -"needs a strategy to avoid memory leaks as well as the use of freed memory. " -"The chosen method is called :dfn:`reference counting`. The principle is " -"simple: every object contains a counter, which is incremented when a " -"reference to the object is stored somewhere, and which is decremented when a " -"reference to it is deleted. When the counter reaches zero, the last " -"reference to the object has been deleted and the object is freed." -msgstr "" -"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:" -"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi " -"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:" +"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it needs " +"a strategy to avoid memory leaks as well as the use of freed memory. The " +"chosen method is called :dfn:`reference counting`. The principle is simple: " +"every object contains a counter, which is incremented when a reference to the " +"object is stored somewhere, and which is decremented when a reference to it " +"is deleted. When the counter reaches zero, the last reference to the object " +"has been deleted and the object is freed." +msgstr "" +"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:`free`, " +"il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi que " +"l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:" "`reference counting`. Le principe est simple : chaque objet contient un " "compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée " "quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est " @@ -1125,14 +1121,14 @@ msgid "" "(Sometimes, reference counting is also referred to as a garbage collection " "strategy, hence my use of \"automatic\" to distinguish the two.) The big " "advantage of automatic garbage collection is that the user doesn't need to " -"call :c:func:`free` explicitly. (Another claimed advantage is an " -"improvement in speed or memory usage --- this is no hard fact however.) The " -"disadvantage is that for C, there is no truly portable automatic garbage " -"collector, while reference counting can be implemented portably (as long as " -"the functions :c:func:`malloc` and :c:func:`free` are available --- which " -"the C Standard guarantees). Maybe some day a sufficiently portable automatic " -"garbage collector will be available for C. Until then, we'll have to live " -"with reference counts." +"call :c:func:`free` explicitly. (Another claimed advantage is an improvement " +"in speed or memory usage --- this is no hard fact however.) The disadvantage " +"is that for C, there is no truly portable automatic garbage collector, while " +"reference counting can be implemented portably (as long as the functions :c:" +"func:`malloc` and :c:func:`free` are available --- which the C Standard " +"guarantees). Maybe some day a sufficiently portable automatic garbage " +"collector will be available for C. Until then, we'll have to live with " +"reference counts." msgstr "" "Une stratégie alternative est appelée :dfn:`automatic garbage collection` " "(collecte automatique des déchets). Parfois, le comptage des références est " @@ -1142,12 +1138,12 @@ msgstr "" "d'appeler :c:func:`free` explicitement. (Un autre avantage important est " "l'amélioration de la vitesse ou de l'utilisation de la mémoire --- ce n'est " "cependant pas un fait avéré). L'inconvénient est que pour C, il n'y a pas de " -"collecte automatique des déchets vraiment portable, alors que le comptage " -"des références peut être implémenté de façon portable (tant que les " -"fonctions :c:func:`malloc` et :c:func:`free` soient disponibles --- ce que " -"la norme C garantit). Peut-être qu'un jour un collecteur automatique de " -"déchets suffisamment portable sera disponible pour C. D'ici là, nous devrons " -"utiliser les compteurs des références." +"collecte automatique des déchets vraiment portable, alors que le comptage des " +"références peut être implémenté de façon portable (tant que les fonctions :c:" +"func:`malloc` et :c:func:`free` soient disponibles --- ce que la norme C " +"garantit). Peut-être qu'un jour un collecteur automatique de déchets " +"suffisamment portable sera disponible pour C. D'ici là, nous devrons utiliser " +"les compteurs des références." #: extending/extending.rst:900 msgid "" @@ -1169,11 +1165,11 @@ msgstr "" "sont les faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement " "le comptage de référence. Les cycles de référence sont constitués d'objets " "qui contiennent des références (éventuellement indirectes) à eux-mêmes, de " -"sorte que chaque objet du cycle a un comptage de référence qui n'est pas " -"nul. Les implémentations typiques de comptage de référence ne sont pas " -"capables de récupérer la mémoire appartenant à des objets dans un cycle de " -"référence, ou référencés à partir des objets dans le cycle, même s'il n'y a " -"pas d'autres références au cycle lui-même." +"sorte que chaque objet du cycle a un comptage de référence qui n'est pas nul. " +"Les implémentations typiques de comptage de référence ne sont pas capables de " +"récupérer la mémoire appartenant à des objets dans un cycle de référence, ou " +"référencés à partir des objets dans le cycle, même s'il n'y a pas d'autres " +"références au cycle lui-même." #: extending/extending.rst:911 msgid "" @@ -1193,19 +1189,18 @@ msgstr "Comptage de références en Python" #: extending/extending.rst:927 msgid "" -"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle " -"the incrementing and decrementing of the reference count. :c:func:" -"`Py_DECREF` also frees the object when the count reaches zero. For " -"flexibility, it doesn't call :c:func:`free` directly --- rather, it makes a " -"call through a function pointer in the object's :dfn:`type object`. For " -"this purpose (and others), every object also contains a pointer to its type " -"object." +"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle the " +"incrementing and decrementing of the reference count. :c:func:`Py_DECREF` " +"also frees the object when the count reaches zero. For flexibility, it " +"doesn't call :c:func:`free` directly --- rather, it makes a call through a " +"function pointer in the object's :dfn:`type object`. For this purpose (and " +"others), every object also contains a pointer to its type object." msgstr "" "Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent " "l'incrémentation et la décrémentation du comptage de référence. :c:func:" "`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour " -"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, " -"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type " +"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, il " +"fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type " "objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient " "également un pointeur vers son objet type." @@ -1216,29 +1211,29 @@ msgid "" "object; however, you can :dfn:`own a reference` to an object. An object's " "reference count is now defined as the number of owned references to it. The " "owner of a reference is responsible for calling :c:func:`Py_DECREF` when the " -"reference is no longer needed. Ownership of a reference can be " -"transferred. There are three ways to dispose of an owned reference: pass it " -"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned " -"reference creates a memory leak." +"reference is no longer needed. Ownership of a reference can be transferred. " +"There are three ways to dispose of an owned reference: pass it on, store it, " +"or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned reference " +"creates a memory leak." msgstr "" "La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et " "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " -"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " -"comptage de références d'un objet est maintenant défini comme étant le " -"nombre de références à cet objet. Le propriétaire d'une référence est " -"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus " -"nécessaire. La propriété d'une référence peut être transférée. Il y a trois " -"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :" -"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite " -"de mémoire." +"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le comptage " +"de références d'un objet est maintenant défini comme étant le nombre de " +"références à cet objet. Le propriétaire d'une référence est responsable " +"d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus nécessaire. La " +"propriété d'une référence peut être transférée. Il y a trois façons de " +"disposer d'une référence : la transmettre, la stocker, ou appeler :c:func:" +"`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite de " +"mémoire." #: extending/extending.rst:943 msgid "" "It is also possible to :dfn:`borrow` [#]_ a reference to an object. The " "borrower of a reference should not call :c:func:`Py_DECREF`. The borrower " "must not hold on to the object longer than the owner from which it was " -"borrowed. Using a borrowed reference after the owner has disposed of it " -"risks using freed memory and should be avoided completely [#]_." +"borrowed. Using a borrowed reference after the owner has disposed of it risks " +"using freed memory and should be avoided completely [#]_." msgstr "" #: extending/extending.rst:949 @@ -1255,10 +1250,10 @@ msgstr "" "vous n'avez pas à vous soucier de disposer de la référence sur tous les " "chemins possibles dans le code — en d'autres termes, avec une référence " "empruntée, vous ne courez pas le risque de fuites lors d'une sortie " -"prématurée. L'inconvénient de l'emprunt par rapport à la possession est " -"qu'il existe certaines situations subtiles où, dans un code apparemment " -"correct, une référence empruntée peut être utilisée après que le " -"propriétaire auquel elle a été empruntée l'a en fait éliminée." +"prématurée. L'inconvénient de l'emprunt par rapport à la possession est qu'il " +"existe certaines situations subtiles où, dans un code apparemment correct, " +"une référence empruntée peut être utilisée après que le propriétaire auquel " +"elle a été empruntée l'a en fait éliminée." #: extending/extending.rst:957 msgid "" @@ -1271,7 +1266,7 @@ msgstr "" #: extending/extending.rst:967 msgid "Ownership Rules" -msgstr "Règles propriétaires" +msgstr "Règles concernant la propriété de références" #: extending/extending.rst:969 msgid "" @@ -1281,14 +1276,14 @@ msgid "" msgstr "" "Chaque fois qu'une référence d'objet est passée à l'intérieur ou à " "l'extérieur d'une fonction, elle fait partie de la spécification de " -"l'interface de la fonction, peu importe que la propriété soit transférée " -"avec la référence ou non." +"l'interface de la fonction, peu importe que la propriété soit transférée avec " +"la référence ou non." #: extending/extending.rst:973 msgid "" "Most functions that return a reference to an object pass on ownership with " -"the reference. In particular, all functions whose function it is to create " -"a new object, such as :c:func:`PyLong_FromLong` and :c:func:`Py_BuildValue`, " +"the reference. In particular, all functions whose function it is to create a " +"new object, such as :c:func:`PyLong_FromLong` and :c:func:`Py_BuildValue`, " "pass ownership to the receiver. Even if the object is not actually new, you " "still receive ownership of a new reference to that object. For instance, :c:" "func:`PyLong_FromLong` maintains a cache of popular values and can return a " @@ -1298,12 +1293,11 @@ msgstr "" #: extending/extending.rst:981 msgid "" "Many functions that extract objects from other objects also transfer " -"ownership with the reference, for instance :c:func:" -"`PyObject_GetAttrString`. The picture is less clear, here, however, since a " -"few common routines are exceptions: :c:func:`PyTuple_GetItem`, :c:func:" -"`PyList_GetItem`, :c:func:`PyDict_GetItem`, and :c:func:" -"`PyDict_GetItemString` all return references that you borrow from the tuple, " -"list or dictionary." +"ownership with the reference, for instance :c:func:`PyObject_GetAttrString`. " +"The picture is less clear, here, however, since a few common routines are " +"exceptions: :c:func:`PyTuple_GetItem`, :c:func:`PyList_GetItem`, :c:func:" +"`PyDict_GetItem`, and :c:func:`PyDict_GetItemString` all return references " +"that you borrow from the tuple, list or dictionary." msgstr "" #: extending/extending.rst:988 @@ -1327,10 +1321,10 @@ msgstr "" #: extending/extending.rst:1000 msgid "" "When a C function is called from Python, it borrows references to its " -"arguments from the caller. The caller owns a reference to the object, so " -"the borrowed reference's lifetime is guaranteed until the function returns. " -"Only when such a borrowed reference must be stored or passed on, it must be " -"turned into an owned reference by calling :c:func:`Py_INCREF`." +"arguments from the caller. The caller owns a reference to the object, so the " +"borrowed reference's lifetime is guaranteed until the function returns. Only " +"when such a borrowed reference must be stored or passed on, it must be turned " +"into an owned reference by calling :c:func:`Py_INCREF`." msgstr "" #: extending/extending.rst:1006 @@ -1363,8 +1357,8 @@ msgid "" "instance::" msgstr "" "Le premier cas, et le plus important à connaître, est celui de l'application " -"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une " -"référence à un élément de liste. Par exemple ::" +"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une référence " +"à un élément de liste. Par exemple ::" #: extending/extending.rst:1032 msgid "" @@ -1373,21 +1367,21 @@ msgid "" "Looks harmless, right? But it's not!" msgstr "" "Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace " -"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. " -"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !" +"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. Ça " +"a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !" #: extending/extending.rst:1036 msgid "" "Let's follow the control flow into :c:func:`PyList_SetItem`. The list owns " -"references to all its items, so when item 1 is replaced, it has to dispose " -"of the original item 1. Now let's suppose the original item 1 was an " -"instance of a user-defined class, and let's further suppose that the class " -"defined a :meth:`__del__` method. If this class instance has a reference " -"count of 1, disposing of it will call its :meth:`__del__` method." +"references to all its items, so when item 1 is replaced, it has to dispose of " +"the original item 1. Now let's suppose the original item 1 was an instance " +"of a user-defined class, and let's further suppose that the class defined a :" +"meth:`__del__` method. If this class instance has a reference count of 1, " +"disposing of it will call its :meth:`__del__` method." msgstr "" "Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède " -"des références à tous ses éléments, donc quand l'élément 1 est remplacé, " -"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que " +"des références à tous ses éléments, donc quand l'élément 1 est remplacé, elle " +"doit se débarrasser de l'élément 1 original. Supposons maintenant que " "l'élément 1 original était une instance d'une classe définie par " "l'utilisateur, et supposons en outre que la classe définisse une méthode :" "meth:`__del__`. Si l'instance de cette classe a un nombre des références de " @@ -1399,9 +1393,9 @@ msgid "" "arbitrary Python code. Could it perhaps do something to invalidate the " "reference to ``item`` in :c:func:`bug`? You bet! Assuming that the list " "passed into :c:func:`bug` is accessible to the :meth:`__del__` method, it " -"could execute a statement to the effect of ``del list[0]``, and assuming " -"this was the last reference to that object, it would free the memory " -"associated with it, thereby invalidating ``item``." +"could execute a statement to the effect of ``del list[0]``, and assuming this " +"was the last reference to that object, it would free the memory associated " +"with it, thereby invalidating ``item``." msgstr "" "Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du " "code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la " @@ -1420,8 +1414,8 @@ msgstr "" #: extending/extending.rst:1065 msgid "" "This is a true story. An older version of Python contained variants of this " -"bug and someone spent a considerable amount of time in a C debugger to " -"figure out why his :meth:`__del__` methods would fail..." +"bug and someone spent a considerable amount of time in a C debugger to figure " +"out why his :meth:`__del__` methods would fail..." msgstr "" #: extending/extending.rst:1069 @@ -1429,12 +1423,11 @@ msgid "" "The second case of problems with a borrowed reference is a variant involving " "threads. Normally, multiple threads in the Python interpreter can't get in " "each other's way, because there is a global lock protecting Python's entire " -"object space. However, it is possible to temporarily release this lock " -"using the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it " -"using :c:macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O " -"calls, to let other threads use the processor while waiting for the I/O to " -"complete. Obviously, the following function has the same problem as the " -"previous one::" +"object space. However, it is possible to temporarily release this lock using " +"the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it using :c:" +"macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O calls, to " +"let other threads use the processor while waiting for the I/O to complete. " +"Obviously, the following function has the same problem as the previous one::" msgstr "" "Le deuxième cas de problèmes liés à une référence empruntée est une variante " "impliquant des fils de discussion. Normalement, plusieurs threads dans " @@ -1444,8 +1437,8 @@ msgstr "" "`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:" "`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels " "d'E/S, afin de permettre aux autres threads d'utiliser le processeur en " -"attendant que les E/S soient terminées. Évidemment, la fonction suivante a " -"le même problème que la précédente ::" +"attendant que les E/S soient terminées. Évidemment, la fonction suivante a le " +"même problème que la précédente ::" #: extending/extending.rst:1092 msgid "NULL Pointers" @@ -1459,8 +1452,8 @@ msgid "" "return ``NULL`` only to indicate that an exception occurred. The reason for " "not testing for ``NULL`` arguments is that functions often pass the objects " "they receive on to other function --- if each function were to test for " -"``NULL``, there would be a lot of redundant tests and the code would run " -"more slowly." +"``NULL``, there would be a lot of redundant tests and the code would run more " +"slowly." msgstr "" "En général, les fonctions qui prennent des références d'objets comme " "arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si " @@ -1469,15 +1462,15 @@ msgstr "" "des références d'objets renvoient généralement ``NULL`` uniquement pour " "indiquer qu'une exception s'est produite. La raison pour laquelle les " "arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent " -"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction " -"devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le " -"code s'exécuterait plus lentement." +"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction devait " +"tester pour ``NULL``, il y aurait beaucoup de tests redondants et le code " +"s'exécuterait plus lentement." #: extending/extending.rst:1102 msgid "" -"It is better to test for ``NULL`` only at the \"source:\" when a pointer " -"that may be ``NULL`` is received, for example, from :c:func:`malloc` or from " -"a function that may raise an exception." +"It is better to test for ``NULL`` only at the \"source:\" when a pointer that " +"may be ``NULL`` is received, for example, from :c:func:`malloc` or from a " +"function that may raise an exception." msgstr "" "Il est préférable de tester la présence de ``NULL`` uniquement au début : " "lorsqu'un pointeur qui peut être ``NULL`` est reçu, par exemple, de :c:func:" @@ -1513,12 +1506,11 @@ msgstr "" "il garantit qu'il s'agit toujours d'un n-uplet [#]_." #: extending/extending.rst:1120 -#, fuzzy msgid "" "It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python " "user." msgstr "" -"C'est une grave erreur de laisser un pointeur ``NULL`` \"échapper\" vers " +"C'est une grave erreur de laisser un pointeur ``NULL`` \"échapper\" à " "l'utilisateur Python." #: extending/extending.rst:1131 @@ -1529,23 +1521,23 @@ msgstr "Écrire des extensions en C++" msgid "" "It is possible to write extension modules in C++. Some restrictions apply. " "If the main program (the Python interpreter) is compiled and linked by the C " -"compiler, global or static objects with constructors cannot be used. This " -"is not a problem if the main program is linked by the C++ compiler. " -"Functions that will be called by the Python interpreter (in particular, " -"module initialization functions) have to be declared using ``extern \"C\"``. " -"It is unnecessary to enclose the Python header files in ``extern \"C\" {...}" -"`` --- they use this form already if the symbol ``__cplusplus`` is defined " -"(all recent C++ compilers define this symbol)." +"compiler, global or static objects with constructors cannot be used. This is " +"not a problem if the main program is linked by the C++ compiler. Functions " +"that will be called by the Python interpreter (in particular, module " +"initialization functions) have to be declared using ``extern \"C\"``. It is " +"unnecessary to enclose the Python header files in ``extern \"C\" {...}`` --- " +"they use this form already if the symbol ``__cplusplus`` is defined (all " +"recent C++ compilers define this symbol)." msgstr "" "Il est possible d'écrire des modules d'extension en C++, mais avec un nombre " "de restrictions. Si le programme principal (l'interpréteur Python) est " -"compilé et lié par le compilateur C, les objets globaux ou statiques avec " -"les constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si " -"le programme principal est lié par le compilateur C++. Les fonctions qui " -"seront appelées par l'interpréteur Python (en particulier, les fonctions " +"compilé et lié par le compilateur C, les objets globaux ou statiques avec les " +"constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si le " +"programme principal est lié par le compilateur C++. Les fonctions qui seront " +"appelées par l'interpréteur Python (en particulier, les fonctions " "d'initialisation des modules) doivent être déclarées en utilisant le \"C\" " -"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " -"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " +"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python dans " +"le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " "``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce " "symbole)." @@ -1556,52 +1548,52 @@ msgstr "Fournir une API en langage C pour un module d'extension" #: extending/extending.rst:1152 msgid "" "Many extension modules just provide new functions and types to be used from " -"Python, but sometimes the code in an extension module can be useful for " -"other extension modules. For example, an extension module could implement a " -"type \"collection\" which works like lists without order. Just like the " -"standard Python list type has a C API which permits extension modules to " -"create and manipulate lists, this new collection type should have a set of C " -"functions for direct manipulation from other extension modules." -msgstr "" -"De nombreux modules d'extension fournissent simplement de nouvelles " -"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois " -"le code d'un module d'extension peut être utile pour d'autres modules " -"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type " -"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le " -"type de liste Python standard possède une API C qui permet aux modules " -"d'extension de créer et de manipuler des listes, ce nouveau type de " -"collection devrait posséder un ensemble de fonctions C pour une manipulation " -"directe à partir d'autres modules d'extension." +"Python, but sometimes the code in an extension module can be useful for other " +"extension modules. For example, an extension module could implement a type " +"\"collection\" which works like lists without order. Just like the standard " +"Python list type has a C API which permits extension modules to create and " +"manipulate lists, this new collection type should have a set of C functions " +"for direct manipulation from other extension modules." +msgstr "" +"De nombreux modules d'extension fournissent simplement de nouvelles fonctions " +"et de nouveaux types à utiliser à partir de Python, mais parfois le code d'un " +"module d'extension peut être utile pour d'autres modules d'extension. Par " +"exemple, un module d'extension peut mettre en œuvre un type \"collection\" " +"qui fonctionne comme des listes sans ordre. Tout comme le type de liste " +"Python standard possède une API C qui permet aux modules d'extension de créer " +"et de manipuler des listes, ce nouveau type de collection devrait posséder un " +"ensemble de fonctions C pour une manipulation directe à partir d'autres " +"modules d'extension." #: extending/extending.rst:1160 msgid "" "At first sight this seems easy: just write the functions (without declaring " -"them ``static``, of course), provide an appropriate header file, and " -"document the C API. And in fact this would work if all extension modules " -"were always linked statically with the Python interpreter. When modules are " -"used as shared libraries, however, the symbols defined in one module may not " -"be visible to another module. The details of visibility depend on the " -"operating system; some systems use one global namespace for the Python " -"interpreter and all extension modules (Windows, for example), whereas others " -"require an explicit list of imported symbols at module link time (AIX is one " -"example), or offer a choice of different strategies (most Unices). And even " -"if symbols are globally visible, the module whose functions one wishes to " -"call might not have been loaded yet!" +"them ``static``, of course), provide an appropriate header file, and document " +"the C API. And in fact this would work if all extension modules were always " +"linked statically with the Python interpreter. When modules are used as " +"shared libraries, however, the symbols defined in one module may not be " +"visible to another module. The details of visibility depend on the operating " +"system; some systems use one global namespace for the Python interpreter and " +"all extension modules (Windows, for example), whereas others require an " +"explicit list of imported symbols at module link time (AIX is one example), " +"or offer a choice of different strategies (most Unices). And even if symbols " +"are globally visible, the module whose functions one wishes to call might not " +"have been loaded yet!" msgstr "" "À première vue, cela semble facile : il suffit d'écrire les fonctions (sans " "les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête " "approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous " "les modules d'extension étaient toujours liés statiquement avec " -"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme " -"des bibliothèques partagées, les symboles définis dans un module peuvent ne " -"pas être visibles par un autre module. Les détails de la visibilité " -"dépendent du système d'exploitation ; certains systèmes utilisent un espace " -"de noms global pour l'interpréteur Python et tous les modules d'extension " -"(Windows, par exemple), tandis que d'autres exigent une liste explicite des " -"symboles importés au moment de la liaison des modules (AIX en est un " -"exemple), ou offrent un choix de stratégies différentes (la plupart des " -"*Unix*). Et même si les symboles sont globalement visibles, le module dont " -"on souhaite appeler les fonctions n'est peut-être pas encore chargé !" +"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme des " +"bibliothèques partagées, les symboles définis dans un module peuvent ne pas " +"être visibles par un autre module. Les détails de la visibilité dépendent du " +"système d'exploitation ; certains systèmes utilisent un espace de noms global " +"pour l'interpréteur Python et tous les modules d'extension (Windows, par " +"exemple), tandis que d'autres exigent une liste explicite des symboles " +"importés au moment de la liaison des modules (AIX en est un exemple), ou " +"offrent un choix de stratégies différentes (la plupart des *Unix*). Et même " +"si les symboles sont globalement visibles, le module dont on souhaite appeler " +"les fonctions n'est peut-être pas encore chargé !" #: extending/extending.rst:1172 msgid "" @@ -1618,8 +1610,8 @@ msgstr "" "d'initialisation du module, afin d'éviter les conflits de noms avec les " "autres modules d'extension (comme discuté dans la section :ref:" "`methodtable`). Et cela signifie que les symboles qui *devraient* être " -"accessibles à partir d'autres modules d'extension doivent être exportés " -"d'une manière différente." +"accessibles à partir d'autres modules d'extension doivent être exportés d'une " +"manière différente." #: extending/extending.rst:1179 msgid "" @@ -1637,8 +1629,8 @@ msgstr "" msgid "" "There are many ways in which Capsules can be used to export the C API of an " "extension module. Each function could get its own Capsule, or all C API " -"pointers could be stored in an array whose address is published in a " -"Capsule. And the various tasks of storing and retrieving the pointers can be " +"pointers could be stored in an array whose address is published in a Capsule. " +"And the various tasks of storing and retrieving the pointers can be " "distributed in different ways between the module providing the code and the " "client modules." msgstr "" @@ -1655,8 +1647,8 @@ msgid "" "Whichever method you choose, it's important to name your Capsules properly. " "The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const " "char \\*`); you're permitted to pass in a ``NULL`` name, but we strongly " -"encourage you to specify a name. Properly named Capsules provide a degree " -"of runtime type-safety; there is no feasible way to tell one unnamed Capsule " +"encourage you to specify a name. Properly named Capsules provide a degree of " +"runtime type-safety; there is no feasible way to tell one unnamed Capsule " "from another." msgstr "" "Quelle que soit la méthode que vous choisissez, il est important de bien " @@ -1676,44 +1668,44 @@ msgstr "" #: extending/extending.rst:1205 #, fuzzy msgid "" -"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a " -"C API provided via a Capsule, but only if the Capsule's name matches this " +"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a C " +"API provided via a Capsule, but only if the Capsule's name matches this " "convention. This behavior gives C API users a high degree of certainty that " "the Capsule they load contains the correct C API." msgstr "" -"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de " -"charger facilement une API C fournie via une Capsule, mais seulement si le " -"nom de la Capsule correspond à cette convention. Ce comportement donne aux " -"utilisateurs d'API C un degré élevé de certitude que la Capsule qu'ils " -"chargent contient l'API C correcte." +"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de charger " +"facilement une API C fournie via une Capsule, mais seulement si le nom de la " +"Capsule correspond à cette convention. Ce comportement donne aux utilisateurs " +"d'API C un degré élevé de certitude que la Capsule qu'ils chargent contient " +"l'API C correcte." #: extending/extending.rst:1210 msgid "" "The following example demonstrates an approach that puts most of the burden " -"on the writer of the exporting module, which is appropriate for commonly " -"used library modules. It stores all C API pointers (just one in the " -"example!) in an array of :c:type:`void` pointers which becomes the value of " -"a Capsule. The header file corresponding to the module provides a macro that " -"takes care of importing the module and retrieving its C API pointers; client " -"modules only have to call this macro before accessing the C API." -msgstr "" -"L'exemple suivant montre une approche qui fait peser la plus grande partie " -"de la charge sur le rédacteur du module d'exportation, ce qui est approprié " -"pour les modules de bibliothèque couramment utilisés. Il stocke tous les " -"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de " -"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier " -"d'en-tête correspondant au module fournit une macro qui se charge d'importer " -"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont " -"qu'à appeler cette macro avant d'accéder à l'API C." +"on the writer of the exporting module, which is appropriate for commonly used " +"library modules. It stores all C API pointers (just one in the example!) in " +"an array of :c:type:`void` pointers which becomes the value of a Capsule. The " +"header file corresponding to the module provides a macro that takes care of " +"importing the module and retrieving its C API pointers; client modules only " +"have to call this macro before accessing the C API." +msgstr "" +"L'exemple suivant montre une approche qui fait peser la plus grande partie de " +"la charge sur le rédacteur du module d'exportation, ce qui est approprié pour " +"les modules de bibliothèque couramment utilisés. Il stocke tous les pointeurs " +"de l'API C (un seul dans l'exemple !) dans un tableau de pointeurs :c:type:" +"`void` qui devient la valeur d'une Capsule. Le fichier d'en-tête " +"correspondant au module fournit une macro qui se charge d'importer le module " +"et de récupérer ses pointeurs d'API C. Les modules clients n'ont qu'à appeler " +"cette macro avant d'accéder à l'API C." #: extending/extending.rst:1218 msgid "" "The exporting module is a modification of the :mod:`spam` module from " -"section :ref:`extending-simpleexample`. The function :func:`spam.system` " -"does not call the C library function :c:func:`system` directly, but a " -"function :c:func:`PySpam_System`, which would of course do something more " -"complicated in reality (such as adding \"spam\" to every command). This " -"function :c:func:`PySpam_System` is also exported to other extension modules." +"section :ref:`extending-simpleexample`. The function :func:`spam.system` does " +"not call the C library function :c:func:`system` directly, but a function :c:" +"func:`PySpam_System`, which would of course do something more complicated in " +"reality (such as adding \"spam\" to every command). This function :c:func:" +"`PySpam_System` is also exported to other extension modules." msgstr "" "Le module d'exportation est une modification du module :mod:`spam` de la " "section :ref:`extending-simpleexample`. La fonction :func:`spam.system` " @@ -1748,9 +1740,9 @@ msgid "" "initialization function must take care of initializing the C API pointer " "array::" msgstr "" -"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête " -"qu'il est inclus dans le module d'exportation, et non dans un module client. " -"Enfin, la fonction d'initialisation du module doit prendre en charge " +"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête qu'il " +"est inclus dans le module d'exportation, et non dans un module client. Enfin, " +"la fonction d'initialisation du module doit prendre en charge " "l'initialisation du tableau de pointeurs de l'API C ::" #: extending/extending.rst:1287 @@ -1775,8 +1767,8 @@ msgid "" "func:`PySpam_System` is to call the function (or rather macro) :c:func:" "`import_spam` in its initialization function::" msgstr "" -"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:" -"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:" +"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:func:" +"`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:" "`import_spam` dans sa fonction d'initialisation ::" #: extending/extending.rst:1359 @@ -1803,9 +1795,9 @@ msgstr "" "supplémentaires, qui sont particulièrement utiles pour l'allocation de la " "mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les " "détails sont décrits dans le manuel de référence de l'API Python/C dans la " -"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :" -"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la " -"distribution du code source Python)." +"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :file:" +"`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la distribution du " +"code source Python)." #: extending/extending.rst:1371 msgid "Footnotes" @@ -1833,14 +1825,14 @@ msgid "" "reference count itself could be in freed memory and may thus be reused for " "another object!" msgstr "" -"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne " -"pas**, le compte de référence lui-même pourrait être en mémoire libérée et " -"peut donc être réutilisé pour un autre objet !" +"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne pas**, " +"le compte de référence lui-même pourrait être en mémoire libérée et peut donc " +"être réutilisé pour un autre objet !" #: extending/extending.rst:1382 msgid "" -"These guarantees don't hold when you use the \"old\" style calling " -"convention --- this is still found in much existing code." +"These guarantees don't hold when you use the \"old\" style calling convention " +"--- this is still found in much existing code." msgstr "" "Ces garanties ne sont pas valables lorsqu'on emploie les conventions de " "nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code " From 0851c98c81496e8e6f3b8324f57a348a3baa6173 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 21:22:45 +0100 Subject: [PATCH 31/37] Corrections 20210207 21:22 --- extending/extending.po | 58 +++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index a18723e3d..3a1638a41 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2021-02-07 20:43+0100\n" +"PO-Revision-Date: 2021-02-07 21:21+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -1020,6 +1020,7 @@ msgstr "" "renvoyé par une fonction C appelée depuis Python." #: extending/extending.rst:814 +#, fuzzy msgid "" "One difference with :c:func:`PyArg_ParseTuple`: while the latter requires its " "first argument to be a tuple (since Python argument lists are always " @@ -1033,18 +1034,6 @@ msgstr "" "Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce " "dernier nécessite que son premier argument soit un *n*-uplet (puisque les " "listes d'arguments Python sont toujours représentées par des *n*-uplets en " -<<<<<<< HEAD -"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il " -"n'en construit un que si sa chaîne formatée contient deux unités formatées ou " -"plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " -======= -"interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n*-uplet. Il " -"n'en construit un que si sa chaîne formatée contient deux unités formatées " -"ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient " ->>>>>>> a8e37f96c21cd2c7b24a2af9b6f2aab1d82bb5db -"exactement une unité formatée, il renvoie tout objet décrit par cette unité " -"formatée. Pour le forcer à renvoyer un n-uplet de taille 0 ou 1, mettez la " -"chaîne formatée entre parenthèses." #: extending/extending.rst:822 msgid "" @@ -1137,17 +1126,16 @@ msgid "" "reference counts." msgstr "" "Une stratégie alternative est appelée :dfn:`automatic garbage collection` " -"(collecte automatique des déchets). Parfois, le comptage des références est " -"également appelé stratégie de collecte des déchets, d'où l'utilisation du " -"terme \"automatique\" pour distinguer les deux. Le grand avantage de la " -"collecte automatique des déchets est que l'utilisateur n'a pas besoin " -"d'appeler :c:func:`free` explicitement. (Un autre avantage important est " -"l'amélioration de la vitesse ou de l'utilisation de la mémoire --- ce n'est " -"cependant pas un fait avéré). L'inconvénient est que pour C, il n'y a pas de " -"collecte automatique des déchets vraiment portable, alors que le comptage des " -"références peut être implémenté de façon portable (tant que les fonctions :c:" -"func:`malloc` et :c:func:`free` soient disponibles --- ce que la norme C " -"garantit). Peut-être qu'un jour un collecteur automatique de déchets " +"(ramasse-miettes). Parfois, le comptage des références est également appelé " +"stratégie de ramasse-miettes, d'où l'utilisation du terme \"automatique\" " +"pour distinguer les deux. Le grand avantage du ramasse-miettes est que " +"l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un " +"autre avantage important est l'amélioration de la vitesse ou de l'utilisation " +"de la mémoire --- ce n'est cependant pas un fait avéré). L'inconvénient est " +"que pour C, il n'y a pas de ramasse-miettes portable proprement-dit, alors " +"que le comptage des références peut être implémenté de façon portable (tant " +"que les fonctions :c:func:`malloc` et :c:func:`free` soient disponibles --- " +"ce que la norme C garantit). Peut-être qu'un jour un ramasse-miettes " "suffisamment portable sera disponible pour C. D'ici là, nous devrons utiliser " "les compteurs des références." @@ -1165,14 +1153,14 @@ msgid "" "though there are no further references to the cycle itself." msgstr "" "Bien que Python utilise l'implémentation traditionnelle de comptage de " -"référence, il propose également un détecteur de cycles qui fonctionne pour " -"détecter les cycles de référence. Cela permet aux applications de ne pas se " -"soucier de la création de références circulaires directes ou indirectes ; ce " -"sont les faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement " -"le comptage de référence. Les cycles de référence sont constitués d'objets " -"qui contiennent des références (éventuellement indirectes) à eux-mêmes, de " -"sorte que chaque objet du cycle a un comptage de référence qui n'est pas nul. " -"Les implémentations typiques de comptage de référence ne sont pas capables de " +"référence, il contient également un détecteur de cycles qui fonctionne pour " +"détecter les cycles de référence. Cela permet aux applications d'empêcher la " +"création de références circulaires directes ou indirectes ; ceci sont les " +"faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement le " +"comptage de référence. Les cycles de référence sont constitués d'objets qui " +"contiennent des références (éventuellement indirectes) à eux-mêmes, de sorte " +"que chaque objet du cycle a un comptage de référence qui n'est pas nul. Les " +"implémentations typiques de comptage de référence ne sont pas capables de " "récupérer la mémoire appartenant à des objets dans un cycle de référence, ou " "référencés à partir des objets dans le cycle, même s'il n'y a pas d'autres " "références au cycle lui-même." @@ -1442,9 +1430,9 @@ msgstr "" "possible de libérer temporairement ce verrou en utilisant la macro :c:macro:" "`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:" "`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels " -"d'E/S, afin de permettre aux autres threads d'utiliser le processeur en " -"attendant que les E/S soient terminées. Évidemment, la fonction suivante a le " -"même problème que la précédente ::" +"d'entrées/sorties, afin de permettre aux autres threads d'utiliser le " +"processeur en attendant que les E/S soient terminées. Évidemment, la fonction " +"suivante a le même problème que la précédente ::" #: extending/extending.rst:1092 msgid "NULL Pointers" From 73ad5b6048db816c100a6d0554aa2f29615615c9 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 21:43:05 +0100 Subject: [PATCH 32/37] Corrections 20210207 21:43 --- extending/extending.po | 838 +++++++++++++++++++++-------------------- 1 file changed, 424 insertions(+), 414 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 3a1638a41..f39ad7b4b 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2021-02-07 21:21+0100\n" +"PO-Revision-Date: 2021-02-07 21:41+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -36,8 +36,8 @@ msgstr "" msgid "" "To support extensions, the Python API (Application Programmers Interface) " "defines a set of functions, macros and variables that provide access to most " -"aspects of the Python run-time system. The Python API is incorporated in a C " -"source file by including the header ``\"Python.h\"``." +"aspects of the Python run-time system. The Python API is incorporated in a " +"C source file by including the header ``\"Python.h\"``." msgstr "" "Pour gérer les extensions, l'API Python (*Application Programmer Interface*) " "définit un ensemble de fonctions, macros et variables qui donnent accès à la " @@ -46,8 +46,8 @@ msgstr "" #: extending/extending.rst:20 msgid "" -"The compilation of an extension module depends on its intended use as well as " -"on your system setup; details are given in later chapters." +"The compilation of an extension module depends on its intended use as well " +"as on your system setup; details are given in later chapters." msgstr "" "La compilation d'un module d'extension dépend de l'usage prévu et de la " "configuration du système, plus de détails peuvent être trouvés dans les " @@ -57,20 +57,20 @@ msgstr "" msgid "" "The C extension interface is specific to CPython, and extension modules do " "not work on other Python implementations. In many cases, it is possible to " -"avoid writing C extensions and preserve portability to other implementations. " -"For example, if your use case is calling C library functions or system calls, " -"you should consider using the :mod:`ctypes` module or the `cffi `_ library rather than writing custom C code. These modules " -"let you write Python code to interface with C code and are more portable " -"between implementations of Python than writing and compiling a C extension " -"module." +"avoid writing C extensions and preserve portability to other " +"implementations. For example, if your use case is calling C library " +"functions or system calls, you should consider using the :mod:`ctypes` " +"module or the `cffi `_ library rather than " +"writing custom C code. These modules let you write Python code to interface " +"with C code and are more portable between implementations of Python than " +"writing and compiling a C extension module." msgstr "" "L'interface d'extension C est spécifique à *CPython*, et les modules " "d'extension ne fonctionne pas sur les autres implémentations de Python. Dans " -"de nombreux cas, il est possible d'éviter la rédaction des extensions en C et " -"ainsi préserver la portabilité vers d'autres implémentations. Par exemple, si " -"vous devez appeler une fonction de la bibliothèque C ou faire un appel " -"système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " +"de nombreux cas, il est possible d'éviter la rédaction des extensions en C " +"et ainsi préserver la portabilité vers d'autres implémentations. Par " +"exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un " +"appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou " "d'utiliser la bibliothèque `*cffi* `_ plutôt " "que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du " "code Python s'interfaçant avec le code C et sont plus portables entre les " @@ -85,21 +85,21 @@ msgstr "Un exemple simple" msgid "" "Let's create an extension module called ``spam`` (the favorite food of Monty " "Python fans...) and let's say we want to create a Python interface to the C " -"library function :c:func:`system` [#]_. This function takes a null-terminated " -"character string as argument and returns an integer. We want this function " -"to be callable from Python as follows:" +"library function :c:func:`system` [#]_. This function takes a null-" +"terminated character string as argument and returns an integer. We want " +"this function to be callable from Python as follows:" msgstr "" "Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans " -"des *Monty Python* …) et disons que nous voulons créer une interface Python à " -"la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction prend " -"une chaîne de caractères à terminaison nulle comme argument et renvoie un " -"entier. Nous voulons que cette fonction soit appelable à partir de Python " +"des *Monty Python* …) et disons que nous voulons créer une interface Python " +"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction " +"prend une chaîne de caractères à terminaison nulle comme argument et renvoie " +"un entier. Nous voulons que cette fonction soit appelable à partir de Python " "comme suit :" #: extending/extending.rst:53 msgid "" -"Begin by creating a file :file:`spammodule.c`. (Historically, if a module is " -"called ``spam``, the C file containing its implementation is called :file:" +"Begin by creating a file :file:`spammodule.c`. (Historically, if a module " +"is called ``spam``, the C file containing its implementation is called :file:" "`spammodule.c`; if the module name is very long, like ``spammify``, the " "module name can be just :file:`spammify.c`.)" msgstr "" @@ -126,9 +126,9 @@ msgid "" "standard headers on some systems, you *must* include :file:`Python.h` before " "any standard headers are included." msgstr "" -"Python pouvant définir certaines définitions pré-processeur qui affectent les " -"têtes standard sur certains systèmes, vous *devez* inclure :file:`Python.h` " -"avant les en-têtes standards." +"Python pouvant définir certaines définitions pré-processeur qui affectent " +"les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python." +"h` avant les en-têtes standards." #: extending/extending.rst:72 msgid "" @@ -160,8 +160,8 @@ msgstr "" #: extending/extending.rst:83 msgid "" "The next thing we add to our module file is the C function that will be " -"called when the Python expression ``spam.system(string)`` is evaluated (we'll " -"see shortly how it ends up being called)::" +"called when the Python expression ``spam.system(string)`` is evaluated " +"(we'll see shortly how it ends up being called)::" msgstr "" "La prochaine chose que nous ajoutons à notre fichier de module est la " "fonction C qui sera appelée lorsque l'expression Python ``spam." @@ -176,8 +176,9 @@ msgid "" "*self* and *args*." msgstr "" "Il y a une correspondance directe de la liste des arguments en Python (par " -"exemple, l'expression ``\"ls -l\"``) aux arguments passés à la fonction C. La " -"fonction C a toujours deux arguments, appelés par convention *self* et *args*." +"exemple, l'expression ``\"ls -l\"``) aux arguments passés à la fonction C. " +"La fonction C a toujours deux arguments, appelés par convention *self* et " +"*args*." #: extending/extending.rst:104 msgid "" @@ -189,24 +190,24 @@ msgstr "" #: extending/extending.rst:107 msgid "" -"The *args* argument will be a pointer to a Python tuple object containing the " -"arguments. Each item of the tuple corresponds to an argument in the call's " -"argument list. The arguments are Python objects --- in order to do anything " -"with them in our C function we have to convert them to C values. The " -"function :c:func:`PyArg_ParseTuple` in the Python API checks the argument " -"types and converts them to C values. It uses a template string to determine " -"the required types of the arguments as well as the types of the C variables " -"into which to store the converted values. More about this later." +"The *args* argument will be a pointer to a Python tuple object containing " +"the arguments. Each item of the tuple corresponds to an argument in the " +"call's argument list. The arguments are Python objects --- in order to do " +"anything with them in our C function we have to convert them to C values. " +"The function :c:func:`PyArg_ParseTuple` in the Python API checks the " +"argument types and converts them to C values. It uses a template string to " +"determine the required types of the arguments as well as the types of the C " +"variables into which to store the converted values. More about this later." msgstr "" "L'argument *args* sera un pointeur vers un *n*-uplet Python contenant les " -"arguments. Chaque élément du *n*-uplet correspond à un argument dans la liste " -"des arguments de l'appel. Les arguments sont des objets Python, afin d'en " -"faire quelque chose dans notre fonction C, nous devons les convertir en " -"valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie les " -"types des arguments et les convertit en valeurs C. Elle utilise un modèle " -"sous forme de chaîne pour déterminer les types requis des arguments ainsi que " -"les types de variables C dans lequel stocker les valeurs converties. Nous en " -"verront plus, plus tard." +"arguments. Chaque élément du *n*-uplet correspond à un argument dans la " +"liste des arguments de l'appel. Les arguments sont des objets Python, afin " +"d'en faire quelque chose dans notre fonction C, nous devons les convertir en " +"valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie " +"les types des arguments et les convertit en valeurs C. Elle utilise un " +"modèle sous forme de chaîne pour déterminer les types requis des arguments " +"ainsi que les types de variables C dans lequel stocker les valeurs " +"converties. Nous en verront plus, plus tard." #: extending/extending.rst:116 msgid "" @@ -218,8 +219,8 @@ msgid "" "example)." msgstr "" ":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont " -"le bon type et que ses composants ont été stockés dans les variables dont les " -"adresses ont été données en entrée. Il renvoie faux (zéro) si une liste " +"le bon type et que ses composants ont été stockés dans les variables dont " +"les adresses ont été données en entrée. Il renvoie faux (zéro) si une liste " "d'arguments invalide a été passée. Dans ce dernier cas, elle lève également " "une exception appropriée de sorte que la fonction d'appel puisse renvoyer " "``NULL`` immédiatement (comme nous l'avons vu dans l'exemple)." @@ -247,12 +248,13 @@ msgstr "" "valeur d'erreur (typiquement un pointeur ``NULL``). Dans l'interpréteur, les " "exceptions sont stockées dans une variable globale statique, si cette " "variable est ``NULL``, aucune exception n'a eu lieu. Une seconde variable " -"globale stocke la \"valeur associée\" à l'exception (le deuxième argument de :" -"keyword:`raise`). Une troisième variable contient la trace de la pile dans le " -"cas où l'erreur soit survenue dans du code Python. Ces trois variables sont " -"les équivalents C du résultat de :meth:`sys.exc_info` en Python (voir la " -"section sur le module :mod:`sys` dans *The Python Library Reference*). Il est " -"important de les connaître pour comprendre comment les erreurs sont propagées." +"globale stocke la \"valeur associée\" à l'exception (le deuxième argument " +"de :keyword:`raise`). Une troisième variable contient la trace de la pile " +"dans le cas où l'erreur soit survenue dans du code Python. Ces trois " +"variables sont les équivalents C du résultat de :meth:`sys.exc_info` en " +"Python (voir la section sur le module :mod:`sys` dans *The Python Library " +"Reference*). Il est important de les connaître pour comprendre comment les " +"erreurs sont propagées." #: extending/extending.rst:139 msgid "" @@ -288,16 +290,16 @@ msgstr "" "Une autre fonction utile est :c:func:`PyErr_SetFromErrno`, qui construit une " "exception à partir de la valeur de la variable globale :c:data:`errno`. La " "fonction la plus générale est :c:func:`PyErr_SetObject`, qui prend deux " -"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :c:" -"func:`Py_INCREF` aux objets transmis à ces fonctions." +"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :" +"c:func:`Py_INCREF` aux objets transmis à ces fonctions." #: extending/extending.rst:154 msgid "" -"You can test non-destructively whether an exception has been set with :c:func:" -"`PyErr_Occurred`. This returns the current exception object, or ``NULL`` if " -"no exception has occurred. You normally don't need to call :c:func:" -"`PyErr_Occurred` to see whether an error occurred in a function call, since " -"you should be able to tell from the return value." +"You can test non-destructively whether an exception has been set with :c:" +"func:`PyErr_Occurred`. This returns the current exception object, or " +"``NULL`` if no exception has occurred. You normally don't need to call :c:" +"func:`PyErr_Occurred` to see whether an error occurred in a function call, " +"since you should be able to tell from the return value." msgstr "" "Vous pouvez tester de manière non destructive si une exception a été levée " "avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou " @@ -310,34 +312,35 @@ msgstr "" #, fuzzy msgid "" "When a function *f* that calls another function *g* detects that the latter " -"fails, *f* should itself return an error value (usually ``NULL`` or ``-1``). " -"It should *not* call one of the :c:func:`PyErr_\\*` functions --- one has " -"already been called by *g*. *f*'s caller is then supposed to also return an " -"error indication to *its* caller, again *without* calling :c:func:`PyErr_" -"\\*`, and so on --- the most detailed cause of the error was already reported " -"by the function that first detected it. Once the error reaches the Python " -"interpreter's main loop, this aborts the currently executing Python code and " -"tries to find an exception handler specified by the Python programmer." -msgstr "" -"Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que cette " -"dernière a échoué, *f* devrait donner une valeur d'erreur à son tour " -"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* appeler " -"l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant déjà été " -"appelée par *g*. La fonction appelant *f* est alors censée renvoyer aussi un " -"code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:func:`PyErr_" -"\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur a déjà été " -"signalée par la fonction l'ayant détecté en premier. Une fois l'erreur " -"remontée à la boucle principale de l'interpréteur Python, il interrompt le " -"code en cours d'exécution et essaie de trouver un gestionnaire d'exception " -"spécifié par le développeur Python." +"fails, *f* should itself return an error value (usually ``NULL`` or " +"``-1``). It should *not* call one of the :c:func:`PyErr_\\*` functions --- " +"one has already been called by *g*. *f*'s caller is then supposed to also " +"return an error indication to *its* caller, again *without* calling :c:func:" +"`PyErr_\\*`, and so on --- the most detailed cause of the error was already " +"reported by the function that first detected it. Once the error reaches the " +"Python interpreter's main loop, this aborts the currently executing Python " +"code and tries to find an exception handler specified by the Python " +"programmer." +msgstr "" +"Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que " +"cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour " +"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* " +"appeler l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant " +"déjà été appelée par *g*. La fonction appelant *f* est alors censée renvoyer " +"aussi un code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:" +"func:`PyErr_\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur " +"a déjà été signalée par la fonction l'ayant détecté en premier. Une fois " +"l'erreur remontée à la boucle principale de l'interpréteur Python, il " +"interrompt le code en cours d'exécution et essaie de trouver un gestionnaire " +"d'exception spécifié par le développeur Python." #: extending/extending.rst:170 msgid "" "(There are situations where a module can actually give a more detailed error " -"message by calling another :c:func:`PyErr_\\*` function, and in such cases it " -"is fine to do so. As a general rule, however, this is not necessary, and can " -"cause information about the cause of the error to be lost: most operations " -"can fail for a variety of reasons.)" +"message by calling another :c:func:`PyErr_\\*` function, and in such cases " +"it is fine to do so. As a general rule, however, this is not necessary, and " +"can cause information about the cause of the error to be lost: most " +"operations can fail for a variety of reasons.)" msgstr "" "(Il y a des situations où un module peut effectivement donner un message " "d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\*`, " @@ -355,11 +358,11 @@ msgid "" "itself (possibly by trying something else, or pretending nothing went wrong)." msgstr "" "Pour ignorer une exception qui aurait été émise lors d'un appel de fonction " -"qui aurait échoué, l'exception doit être retirée explicitement en appelant :c:" -"func:`PyErr_Clear`. Le seul cas pour lequel du code C devrait appeler :c:func:" -"`PyErr_Clear` est lorsqu'il ne veut pas passer l'erreur à l'interpréteur, " -"mais souhaite la gérer lui-même (peut-être en essayant quelque chose d'autre, " -"ou en prétendant que rien n'a mal tourné)." +"qui aurait échoué, l'exception doit être retirée explicitement en appelant :" +"c:func:`PyErr_Clear`. Le seul cas pour lequel du code C devrait appeler :c:" +"func:`PyErr_Clear` est lorsqu'il ne veut pas passer l'erreur à " +"l'interpréteur, mais souhaite la gérer lui-même (peut-être en essayant " +"quelque chose d'autre, ou en prétendant que rien n'a mal tourné)." #: extending/extending.rst:182 msgid "" @@ -390,13 +393,13 @@ msgstr "" #: extending/extending.rst:192 msgid "" -"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :c:" -"func:`Py_DECREF` calls for objects you have already created) when you return " -"an error indicator!" +"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :" +"c:func:`Py_DECREF` calls for objects you have already created) when you " +"return an error indicator!" msgstr "" -"Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin de " -"nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec les " -"objets que vous auriez déjà créés) !" +"Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin " +"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec " +"les objets que vous auriez déjà créés) !" #: extending/extending.rst:196 msgid "" @@ -406,9 +409,9 @@ msgid "" "you should choose exceptions wisely --- don't use :c:data:`PyExc_TypeError` " "to mean that a file couldn't be opened (that should probably be :c:data:" "`PyExc_IOError`). If something's wrong with the argument list, the :c:func:" -"`PyArg_ParseTuple` function usually raises :c:data:`PyExc_TypeError`. If you " -"have an argument whose value must be in a particular range or must satisfy " -"other conditions, :c:data:`PyExc_ValueError` is appropriate." +"`PyArg_ParseTuple` function usually raises :c:data:`PyExc_TypeError`. If " +"you have an argument whose value must be in a particular range or must " +"satisfy other conditions, :c:data:`PyExc_ValueError` is appropriate." msgstr "" "Le choix de l'exception à lever vous incombe. Il existe des objets C " "correspondant à chaque exception Python, tel que :c:data:" @@ -445,8 +448,8 @@ msgid "" "class being :exc:`Exception` (unless another class is passed in instead of " "``NULL``), described in :ref:`bltin-exceptions`." msgstr "" -"Notez que le nom de l'exception en Python est :exc:`spam.error`. La fonction :" -"c:func:`PyErr_NewException` peut créer une classe héritant de :exc:" +"Notez que le nom de l'exception en Python est :exc:`spam.error`. La " +"fonction :c:func:`PyErr_NewException` peut créer une classe héritant de :exc:" "`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de " "``NULL``), voir :ref:`bltin-exceptions`." @@ -463,10 +466,10 @@ msgstr "" "Notez également que la variable :c:data:`SpamError` contient une référence à " "la nouvelle classe créée ; ceci est intentionnel ! Comme l'exception peut " "être retirée du module par un code externe, une référence à la classe est " -"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:`SpamError` " -"à devenir un pointeur défaillant. S'il devenait un pointeur défaillant, le C " -"code qui lève l'exception peut engendrer un rejet central ou des effets " -"secondaires inattendus." +"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:" +"`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur " +"défaillant, le C code qui lève l'exception peut engendrer un rejet central " +"ou des effets secondaires inattendus." #: extending/extending.rst:247 msgid "" @@ -490,11 +493,11 @@ msgstr "Retour vers l'exemple" #: extending/extending.rst:275 msgid "" -"Going back to our example function, you should now be able to understand this " -"statement::" +"Going back to our example function, you should now be able to understand " +"this statement::" msgstr "" -"En revenant vers notre fonction exemple, vous devriez maintenant être capable " -"de comprendre cette affirmation ::" +"En revenant vers notre fonction exemple, vous devriez maintenant être " +"capable de comprendre cette affirmation ::" #: extending/extending.rst:281 msgid "" @@ -506,22 +509,22 @@ msgid "" "which it points (so in Standard C, the variable :c:data:`command` should " "properly be declared as ``const char *command``)." msgstr "" -"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant des " -"pointeurs d'objet) si une erreur est détectée dans la liste des arguments, se " -"fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. Autrement, la " -"valeur chaîne de l'argument a été copiée dans la variable locale :c:data:" -"`command`. Il s'agit d'une attribution de pointeur et vous n'êtes pas " -"supposés modifier la chaîne vers laquelle il pointe (donc en C Standard, la " -"variable :c:data:`command` doit être clairement déclarée comme ``const char " -"*command``)." +"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant " +"des pointeurs d'objet) si une erreur est détectée dans la liste des " +"arguments, se fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. " +"Autrement, la valeur chaîne de l'argument a été copiée dans la variable " +"locale :c:data:`command`. Il s'agit d'une attribution de pointeur et vous " +"n'êtes pas supposés modifier la chaîne vers laquelle il pointe (donc en C " +"Standard, la variable :c:data:`command` doit être clairement déclarée comme " +"``const char *command``)." #: extending/extending.rst:289 msgid "" "The next statement is a call to the Unix function :c:func:`system`, passing " "it the string we just got from :c:func:`PyArg_ParseTuple`::" msgstr "" -"La prochaine instruction est un appel à la fonction Unix :c:func:`system`, en " -"lui passant la chaîne que nous venons d'obtenir à partir de :c:func:" +"La prochaine instruction est un appel à la fonction Unix :c:func:`system`, " +"en lui passant la chaîne que nous venons d'obtenir à partir de :c:func:" "`PyArg_ParseTuple` ::" #: extending/extending.rst:294 @@ -548,16 +551,16 @@ msgid "" "``None``. You need this idiom to do so (which is implemented by the :c:" "macro:`Py_RETURN_NONE` macro)::" msgstr "" -"Si vous avez une fonction C qui ne renvoie aucun argument utile (une fonction " -"renvoyant :c:type:`void`), la fonction Python correspondante doit renvoyer " -"``None``. Vous aurez besoin de cette locution pour cela (qui est implémentée " -"par la macro :c:macro:`Py_RETURN_NONE`) ::" +"Si vous avez une fonction C qui ne renvoie aucun argument utile (une " +"fonction renvoyant :c:type:`void`), la fonction Python correspondante doit " +"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est " +"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::" #: extending/extending.rst:310 msgid "" ":c:data:`Py_None` is the C name for the special Python object ``None``. It " -"is a genuine Python object rather than a ``NULL`` pointer, which means \"error" -"\" in most contexts, as we have seen." +"is a genuine Python object rather than a ``NULL`` pointer, which means " +"\"error\" in most contexts, as we have seen." msgstr "" ":c:data:`Py_None` est la dénomination en C pour l'objet spécial Python " "``None``. C'est un authentique objet Python plutôt qu'un pointeur ``NULL``, " @@ -573,9 +576,9 @@ msgid "" "I promised to show how :c:func:`spam_system` is called from Python programs. " "First, we need to list its name and address in a \"method table\"::" msgstr "" -"Nous avons promis de montrer comment :c:func:`spam_system` est appelée depuis " -"les programmes Python. D'abord, nous avons besoin d'avoir son nom et son " -"adresse dans un « tableau des méthodes » ::" +"Nous avons promis de montrer comment :c:func:`spam_system` est appelée " +"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et " +"son adresse dans un « tableau des méthodes » ::" #: extending/extending.rst:331 msgid "" @@ -586,16 +589,16 @@ msgid "" "is used." msgstr "" "Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de " -"convention à utiliser pour la fonction C, à destination de l'interpréteur. Il " -"doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | " -"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:func:" -"`PyArg_ParseTuple` est utilisée." +"convention à utiliser pour la fonction C, à destination de l'interpréteur. " +"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | " +"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:" +"func:`PyArg_ParseTuple` est utilisée." #: extending/extending.rst:336 msgid "" -"When using only ``METH_VARARGS``, the function should expect the Python-level " -"parameters to be passed in as a tuple acceptable for parsing via :c:func:" -"`PyArg_ParseTuple`; more information on this function is provided below." +"When using only ``METH_VARARGS``, the function should expect the Python-" +"level parameters to be passed in as a tuple acceptable for parsing via :c:" +"func:`PyArg_ParseTuple`; more information on this function is provided below." msgstr "" "Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les " "paramètres Python soient passés comme un *n*-uplet que l'on peut analyser " @@ -607,17 +610,18 @@ msgid "" "The :const:`METH_KEYWORDS` bit may be set in the third field if keyword " "arguments should be passed to the function. In this case, the C function " "should accept a third ``PyObject *`` parameter which will be a dictionary of " -"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments to " -"such a function." +"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments " +"to such a function." msgstr "" "Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si " -"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, la " -"fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un " +"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, " +"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un " "dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` " "pour analyser les arguments d'une telle fonction." #: extending/extending.rst:346 -msgid "The method table must be referenced in the module definition structure::" +msgid "" +"The method table must be referenced in the module definition structure::" msgstr "" "Le tableau des méthodes doit être référencé dans la structure de définition " "du module ::" @@ -626,8 +630,8 @@ msgstr "" msgid "" "This structure, in turn, must be passed to the interpreter in the module's " "initialization function. The initialization function must be named :c:func:" -"`PyInit_name`, where *name* is the name of the module, and should be the only " -"non-\\ ``static`` item defined in the module file::" +"`PyInit_name`, where *name* is the name of the module, and should be the " +"only non-\\ ``static`` item defined in the module file::" msgstr "" "Cette structure, à son tour, doit être transmise à l'interpréteur dans la " "fonction d'initialisation du module. La fonction d'initialisation doit être " @@ -636,14 +640,14 @@ msgstr "" #: extending/extending.rst:368 msgid "" -"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return type, " -"declares any special linkage declarations required by the platform, and for C+" -"+ declares the function as ``extern \"C\"``." +"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return " +"type, declares any special linkage declarations required by the platform, " +"and for C++ declares the function as ``extern \"C\"``." msgstr "" "Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de " "type ``PyObject *``, et déclare également toute déclaration de liaison " -"spéciale requise par la plate-forme, et pour le C++ déclare la fonction comme " -"un C ``extern``." +"spéciale requise par la plate-forme, et pour le C++ déclare la fonction " +"comme un C ``extern``." #: extending/extending.rst:372 msgid "" @@ -654,21 +658,21 @@ msgid "" "upon the table (an array of :c:type:`PyMethodDef` structures) found in the " "module definition. :c:func:`PyModule_Create` returns a pointer to the module " "object that it creates. It may abort with a fatal error for certain errors, " -"or return ``NULL`` if the module could not be initialized satisfactorily. The " -"init function must return the module object to its caller, so that it then " -"gets inserted into ``sys.modules``." +"or return ``NULL`` if the module could not be initialized satisfactorily. " +"The init function must return the module object to its caller, so that it " +"then gets inserted into ``sys.modules``." msgstr "" "Lorsque le programme Python importe le module :mod:`spam` pour la première " "fois, :c:func:`PyInit_spam` est appelé. (Voir ci-dessous pour les " "commentaires sur l'intégration en Python.) Il appelle :c:func:" -"`PyModule_Create`, qui renvoie un objet module, et insère des objets fonction " -"intégrés dans le module nouvellement créé en se basant sur la table (un " -"tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition du " -"module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module " +"`PyModule_Create`, qui renvoie un objet module, et insère des objets " +"fonction intégrés dans le module nouvellement créé en se basant sur la table " +"(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition " +"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module " "qu'il crée. Il peut s'interrompre avec une erreur fatale pour certaines " "erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être initialisé de " -"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à son " -"appelant, afin qu'il soit ensuite inséré dans ``sys.modules``." +"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à " +"son appelant, afin qu'il soit ensuite inséré dans ``sys.modules``." #: extending/extending.rst:383 msgid "" @@ -686,17 +690,17 @@ msgstr "" #: extending/extending.rst:427 msgid "" "Removing entries from ``sys.modules`` or importing compiled modules into " -"multiple interpreters within a process (or following a :c:func:`fork` without " -"an intervening :c:func:`exec`) can create problems for some extension " -"modules. Extension module authors should exercise caution when initializing " -"internal data structures." +"multiple interpreters within a process (or following a :c:func:`fork` " +"without an intervening :c:func:`exec`) can create problems for some " +"extension modules. Extension module authors should exercise caution when " +"initializing internal data structures." msgstr "" "Supprimer des entrées de ``sys.modules`` ou importer des modules compilés " "dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:" -"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes pour " -"certains modules d'extension. Les auteurs de modules d'extension doivent " -"faire preuve de prudence lorsqu'ils initialisent des structures de données " -"internes." +"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes " +"pour certains modules d'extension. Les auteurs de modules d'extension " +"doivent faire preuve de prudence lorsqu'ils initialisent des structures de " +"données internes." #: extending/extending.rst:433 msgid "" @@ -728,11 +732,11 @@ msgstr "Compilation et liaison" #: extending/extending.rst:450 msgid "" "There are two more things to do before you can use your new extension: " -"compiling and linking it with the Python system. If you use dynamic loading, " -"the details may depend on the style of dynamic loading your system uses; see " -"the chapters about building extension modules (chapter :ref:`building`) and " -"additional information that pertains only to building on Windows (chapter :" -"ref:`building-on-windows`) for more information about this." +"compiling and linking it with the Python system. If you use dynamic " +"loading, the details may depend on the style of dynamic loading your system " +"uses; see the chapters about building extension modules (chapter :ref:" +"`building`) and additional information that pertains only to building on " +"Windows (chapter :ref:`building-on-windows`) for more information about this." msgstr "" #: extending/extending.rst:457 @@ -741,8 +745,8 @@ msgid "" "permanent part of the Python interpreter, you will have to change the " "configuration setup and rebuild the interpreter. Luckily, this is very " "simple on Unix: just place your file (:file:`spammodule.c` for example) in " -"the :file:`Modules/` directory of an unpacked source distribution, add a line " -"to the file :file:`Modules/Setup.local` describing your file:" +"the :file:`Modules/` directory of an unpacked source distribution, add a " +"line to the file :file:`Modules/Setup.local` describing your file:" msgstr "" #: extending/extending.rst:468 @@ -768,8 +772,8 @@ msgstr "Appeler des fonctions Python en C" msgid "" "So far we have concentrated on making C functions callable from Python. The " "reverse is also useful: calling Python functions from C. This is especially " -"the case for libraries that support so-called \"callback\" functions. If a C " -"interface makes use of callbacks, the equivalent Python often needs to " +"the case for libraries that support so-called \"callback\" functions. If a " +"C interface makes use of callbacks, the equivalent Python often needs to " "provide a callback mechanism to the Python programmer; the implementation " "will require calling the Python callback functions from a C callback. Other " "uses are also imaginable." @@ -788,8 +792,8 @@ msgstr "" msgid "" "Calling a Python function is easy. First, the Python program must somehow " "pass you the Python function object. You should provide a function (or some " -"other interface) to do this. When this function is called, save a pointer to " -"the Python function object (be careful to :c:func:`Py_INCREF` it!) in a " +"other interface) to do this. When this function is called, save a pointer " +"to the Python function object (be careful to :c:func:`Py_INCREF` it!) in a " "global variable --- or wherever you see fit. For example, the following " "function might be part of a module definition::" msgstr "" @@ -797,9 +801,9 @@ msgstr "" #: extending/extending.rst:531 msgid "" "This function must be registered with the interpreter using the :const:" -"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :c:" -"func:`PyArg_ParseTuple` function and its arguments are documented in section :" -"ref:`parsetuple`." +"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :" +"c:func:`PyArg_ParseTuple` function and its arguments are documented in " +"section :ref:`parsetuple`." msgstr "" "Cette fonction doit être déclarée en utilisant le drapeau :const:" "`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La " @@ -844,9 +848,9 @@ msgstr "" msgid "" "The return value of :c:func:`PyObject_CallObject` is \"new\": either it is a " "brand new object, or it is an existing object whose reference count has been " -"incremented. So, unless you want to save it in a global variable, you should " -"somehow :c:func:`Py_DECREF` the result, even (especially!) if you are not " -"interested in its value." +"incremented. So, unless you want to save it in a global variable, you " +"should somehow :c:func:`Py_DECREF` the result, even (especially!) if you are " +"not interested in its value." msgstr "" #: extending/extending.rst:576 @@ -865,9 +869,9 @@ msgstr "" "`PyObject_CallObject` est appelé depuis Python, il devrait maintenant " "renvoyer une indication d'erreur à son appelant Python, afin que " "l'interpréteur puisse afficher la pile d'appels, ou que le code Python " -"appelant puisse gérer l'exception. Si cela n'est pas possible ou souhaitable, " -"l'exception doit être effacée en appelant :c:func:`PyErr_Clear`. Par " -"exemple ::" +"appelant puisse gérer l'exception. Si cela n'est pas possible ou " +"souhaitable, l'exception doit être effacée en appelant :c:func:" +"`PyErr_Clear`. Par exemple ::" #: extending/extending.rst:589 msgid "" @@ -883,8 +887,8 @@ msgstr "" "Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez " "peut-être aussi fournir une liste d'arguments à :c:func:" "`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également " -"fournie par le programme Python, par l'intermédiaire de la même interface qui " -"a spécifié la fonction de rappel. Elle peut alors être sauvegardée et " +"fournie par le programme Python, par l'intermédiaire de la même interface " +"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et " "utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous " "pouvez avoir à construire un nouveau n-uplet à passer comme liste " "d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:" @@ -906,8 +910,8 @@ msgid "" "above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::" msgstr "" "Vous pouvez également appeler une fonction avec des arguments nommés en " -"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les arguments " -"nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:" +"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les " +"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:" "`Py_BuildValue` pour construire le dictionnaire. ::" #: extending/extending.rst:630 @@ -922,9 +926,9 @@ msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::" msgid "" "The *arg* argument must be a tuple object containing an argument list passed " "from Python to a C function. The *format* argument must be a format string, " -"whose syntax is explained in :ref:`arg-parsing` in the Python/C API Reference " -"Manual. The remaining arguments must be addresses of variables whose type is " -"determined by the format string." +"whose syntax is explained in :ref:`arg-parsing` in the Python/C API " +"Reference Manual. The remaining arguments must be addresses of variables " +"whose type is determined by the format string." msgstr "" #: extending/extending.rst:644 @@ -940,8 +944,8 @@ msgid "" "Note that any Python object references which are provided to the caller are " "*borrowed* references; do not decrement their reference count!" msgstr "" -"Notez que n'importe quelles références sur un objet Python qui sont données à " -"l'appelant sont des références *empruntées* ; ne décrémentez pas leur " +"Notez que n'importe quelles références sur un objet Python qui sont données " +"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur " "compteur de références !" #: extending/extending.rst:652 @@ -955,7 +959,8 @@ msgstr "Paramètres nommés pour des fonctions d'extension" #: extending/extending.rst:726 msgid "" "The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::" -msgstr "La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::" +msgstr "" +"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::" #: extending/extending.rst:731 msgid "" @@ -963,9 +968,10 @@ msgid "" "`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of " "keywords received as the third parameter from the Python runtime. The " "*kwlist* parameter is a ``NULL``-terminated list of strings which identify " -"the parameters; the names are matched with the type information from *format* " -"from left to right. On success, :c:func:`PyArg_ParseTupleAndKeywords` " -"returns true, otherwise it returns false and raises an appropriate exception." +"the parameters; the names are matched with the type information from " +"*format* from left to right. On success, :c:func:" +"`PyArg_ParseTupleAndKeywords` returns true, otherwise it returns false and " +"raises an appropriate exception." msgstr "" "Les paramètres *arg* et *format* sont identiques à ceux de la fonction :c:" "func:`PyArg_ParseTuple`. Le paramètre *kwdict* est le dictionnaire de mots-" @@ -1008,10 +1014,10 @@ msgstr "" #: extending/extending.rst:809 msgid "" -"It recognizes a set of format units similar to the ones recognized by :c:func:" -"`PyArg_ParseTuple`, but the arguments (which are input to the function, not " -"output) must not be pointers, just values. It returns a new Python object, " -"suitable for returning from a C function called from Python." +"It recognizes a set of format units similar to the ones recognized by :c:" +"func:`PyArg_ParseTuple`, but the arguments (which are input to the function, " +"not output) must not be pointers, just values. It returns a new Python " +"object, suitable for returning from a C function called from Python." msgstr "" "Il reconnaît un ensemble d'unités de format similaires à celles reconnues " "par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en " @@ -1022,8 +1028,8 @@ msgstr "" #: extending/extending.rst:814 #, fuzzy msgid "" -"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires its " -"first argument to be a tuple (since Python argument lists are always " +"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires " +"its first argument to be a tuple (since Python argument lists are always " "represented as tuples internally), :c:func:`Py_BuildValue` does not always " "build a tuple. It builds a tuple only if its format string contains two or " "more format units. If the format string is empty, it returns ``None``; if it " @@ -1038,7 +1044,8 @@ msgstr "" #: extending/extending.rst:822 msgid "" "Examples (to the left the call, to the right the resulting Python value):" -msgstr "Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :" +msgstr "" +"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :" #: extending/extending.rst:848 msgid "Reference Counts" @@ -1054,8 +1061,8 @@ msgid "" msgstr "" "Dans les langages comme le C ou le C++, le développeur est responsable de " "l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En " -"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. En " -"C++, les opérateurs ``new`` et ``delete`` sont utilisés avec " +"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. " +"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec " "essentiellement la même signification et nous limiterons la discussion " "suivante au cas du C." @@ -1067,25 +1074,25 @@ msgid "" "block's address is forgotten but :c:func:`free` is not called for it, the " "memory it occupies cannot be reused until the program terminates. This is " "called a :dfn:`memory leak`. On the other hand, if a program calls :c:func:" -"`free` for a block and then continues to use the block, it creates a conflict " -"with re-use of the block through another :c:func:`malloc` call. This is " -"called :dfn:`using freed memory`. It has the same bad consequences as " -"referencing uninitialized data --- core dumps, wrong results, mysterious " +"`free` for a block and then continues to use the block, it creates a " +"conflict with re-use of the block through another :c:func:`malloc` call. " +"This is called :dfn:`using freed memory`. It has the same bad consequences " +"as referencing uninitialized data --- core dumps, wrong results, mysterious " "crashes." msgstr "" #: extending/extending.rst:867 msgid "" "Common causes of memory leaks are unusual paths through the code. For " -"instance, a function may allocate a block of memory, do some calculation, and " -"then free the block again. Now a change in the requirements for the function " -"may add a test to the calculation that detects an error condition and can " -"return prematurely from the function. It's easy to forget to free the " -"allocated memory block when taking this premature exit, especially when it is " -"added later to the code. Such leaks, once introduced, often go undetected " -"for a long time: the error exit is taken only in a small fraction of all " -"calls, and most modern machines have plenty of virtual memory, so the leak " -"only becomes apparent in a long-running process that uses the leaking " +"instance, a function may allocate a block of memory, do some calculation, " +"and then free the block again. Now a change in the requirements for the " +"function may add a test to the calculation that detects an error condition " +"and can return prematurely from the function. It's easy to forget to free " +"the allocated memory block when taking this premature exit, especially when " +"it is added later to the code. Such leaks, once introduced, often go " +"undetected for a long time: the error exit is taken only in a small fraction " +"of all calls, and most modern machines have plenty of virtual memory, so the " +"leak only becomes apparent in a long-running process that uses the leaking " "function frequently. Therefore, it's important to prevent leaks from " "happening by having a coding convention or strategy that minimizes this kind " "of errors." @@ -1093,17 +1100,17 @@ msgstr "" #: extending/extending.rst:880 msgid "" -"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it needs " -"a strategy to avoid memory leaks as well as the use of freed memory. The " -"chosen method is called :dfn:`reference counting`. The principle is simple: " -"every object contains a counter, which is incremented when a reference to the " -"object is stored somewhere, and which is decremented when a reference to it " -"is deleted. When the counter reaches zero, the last reference to the object " -"has been deleted and the object is freed." -msgstr "" -"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:`free`, " -"il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi que " -"l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:" +"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it " +"needs a strategy to avoid memory leaks as well as the use of freed memory. " +"The chosen method is called :dfn:`reference counting`. The principle is " +"simple: every object contains a counter, which is incremented when a " +"reference to the object is stored somewhere, and which is decremented when a " +"reference to it is deleted. When the counter reaches zero, the last " +"reference to the object has been deleted and the object is freed." +msgstr "" +"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:" +"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi " +"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:" "`reference counting`. Le principe est simple : chaque objet contient un " "compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée " "quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est " @@ -1116,28 +1123,28 @@ msgid "" "(Sometimes, reference counting is also referred to as a garbage collection " "strategy, hence my use of \"automatic\" to distinguish the two.) The big " "advantage of automatic garbage collection is that the user doesn't need to " -"call :c:func:`free` explicitly. (Another claimed advantage is an improvement " -"in speed or memory usage --- this is no hard fact however.) The disadvantage " -"is that for C, there is no truly portable automatic garbage collector, while " -"reference counting can be implemented portably (as long as the functions :c:" -"func:`malloc` and :c:func:`free` are available --- which the C Standard " -"guarantees). Maybe some day a sufficiently portable automatic garbage " -"collector will be available for C. Until then, we'll have to live with " -"reference counts." +"call :c:func:`free` explicitly. (Another claimed advantage is an " +"improvement in speed or memory usage --- this is no hard fact however.) The " +"disadvantage is that for C, there is no truly portable automatic garbage " +"collector, while reference counting can be implemented portably (as long as " +"the functions :c:func:`malloc` and :c:func:`free` are available --- which " +"the C Standard guarantees). Maybe some day a sufficiently portable automatic " +"garbage collector will be available for C. Until then, we'll have to live " +"with reference counts." msgstr "" "Une stratégie alternative est appelée :dfn:`automatic garbage collection` " "(ramasse-miettes). Parfois, le comptage des références est également appelé " "stratégie de ramasse-miettes, d'où l'utilisation du terme \"automatique\" " "pour distinguer les deux. Le grand avantage du ramasse-miettes est que " "l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un " -"autre avantage important est l'amélioration de la vitesse ou de l'utilisation " -"de la mémoire --- ce n'est cependant pas un fait avéré). L'inconvénient est " -"que pour C, il n'y a pas de ramasse-miettes portable proprement-dit, alors " -"que le comptage des références peut être implémenté de façon portable (tant " -"que les fonctions :c:func:`malloc` et :c:func:`free` soient disponibles --- " -"ce que la norme C garantit). Peut-être qu'un jour un ramasse-miettes " -"suffisamment portable sera disponible pour C. D'ici là, nous devrons utiliser " -"les compteurs des références." +"autre avantage important est l'amélioration de la vitesse ou de " +"l'utilisation de la mémoire --- ce n'est cependant pas un fait avéré). " +"L'inconvénient est que pour C, il n'y a pas de ramasse-miettes portable " +"proprement-dit, alors que le comptage des références peut être implémenté de " +"façon portable (tant que les fonctions :c:func:`malloc` et :c:func:`free` " +"soient disponibles --- ce que la norme C garantit). Peut-être qu'un jour un " +"ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous " +"devrons utiliser les compteurs des références." #: extending/extending.rst:900 msgid "" @@ -1183,18 +1190,19 @@ msgstr "Comptage de références en Python" #: extending/extending.rst:927 msgid "" -"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle the " -"incrementing and decrementing of the reference count. :c:func:`Py_DECREF` " -"also frees the object when the count reaches zero. For flexibility, it " -"doesn't call :c:func:`free` directly --- rather, it makes a call through a " -"function pointer in the object's :dfn:`type object`. For this purpose (and " -"others), every object also contains a pointer to its type object." +"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle " +"the incrementing and decrementing of the reference count. :c:func:" +"`Py_DECREF` also frees the object when the count reaches zero. For " +"flexibility, it doesn't call :c:func:`free` directly --- rather, it makes a " +"call through a function pointer in the object's :dfn:`type object`. For " +"this purpose (and others), every object also contains a pointer to its type " +"object." msgstr "" "Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent " "l'incrémentation et la décrémentation du comptage de référence. :c:func:" "`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour " -"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, il " -"fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type " +"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, " +"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type " "objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient " "également un pointeur vers son objet type." @@ -1205,29 +1213,29 @@ msgid "" "object; however, you can :dfn:`own a reference` to an object. An object's " "reference count is now defined as the number of owned references to it. The " "owner of a reference is responsible for calling :c:func:`Py_DECREF` when the " -"reference is no longer needed. Ownership of a reference can be transferred. " -"There are three ways to dispose of an owned reference: pass it on, store it, " -"or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned reference " -"creates a memory leak." +"reference is no longer needed. Ownership of a reference can be " +"transferred. There are three ways to dispose of an owned reference: pass it " +"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned " +"reference creates a memory leak." msgstr "" "La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et " "``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne " -"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le comptage " -"de références d'un objet est maintenant défini comme étant le nombre de " -"références à cet objet. Le propriétaire d'une référence est responsable " -"d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus nécessaire. La " -"propriété d'une référence peut être transférée. Il y a trois façons de " -"disposer d'une référence : la transmettre, la stocker, ou appeler :c:func:" -"`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite de " -"mémoire." +"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le " +"comptage de références d'un objet est maintenant défini comme étant le " +"nombre de références à cet objet. Le propriétaire d'une référence est " +"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus " +"nécessaire. La propriété d'une référence peut être transférée. Il y a trois " +"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :" +"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite " +"de mémoire." #: extending/extending.rst:943 msgid "" "It is also possible to :dfn:`borrow` [#]_ a reference to an object. The " "borrower of a reference should not call :c:func:`Py_DECREF`. The borrower " "must not hold on to the object longer than the owner from which it was " -"borrowed. Using a borrowed reference after the owner has disposed of it risks " -"using freed memory and should be avoided completely [#]_." +"borrowed. Using a borrowed reference after the owner has disposed of it " +"risks using freed memory and should be avoided completely [#]_." msgstr "" #: extending/extending.rst:949 @@ -1244,10 +1252,10 @@ msgstr "" "vous n'avez pas à vous soucier de disposer de la référence sur tous les " "chemins possibles dans le code — en d'autres termes, avec une référence " "empruntée, vous ne courez pas le risque de fuites lors d'une sortie " -"prématurée. L'inconvénient de l'emprunt par rapport à la possession est qu'il " -"existe certaines situations subtiles où, dans un code apparemment correct, " -"une référence empruntée peut être utilisée après que le propriétaire auquel " -"elle a été empruntée l'a en fait éliminée." +"prématurée. L'inconvénient de l'emprunt par rapport à la possession est " +"qu'il existe certaines situations subtiles où, dans un code apparemment " +"correct, une référence empruntée peut être utilisée après que le " +"propriétaire auquel elle a été empruntée l'a en fait éliminée." #: extending/extending.rst:957 msgid "" @@ -1270,14 +1278,14 @@ msgid "" msgstr "" "Chaque fois qu'une référence d'objet est passée à l'intérieur ou à " "l'extérieur d'une fonction, elle fait partie de la spécification de " -"l'interface de la fonction, peu importe que la propriété soit transférée avec " -"la référence ou non." +"l'interface de la fonction, peu importe que la propriété soit transférée " +"avec la référence ou non." #: extending/extending.rst:973 msgid "" "Most functions that return a reference to an object pass on ownership with " -"the reference. In particular, all functions whose function it is to create a " -"new object, such as :c:func:`PyLong_FromLong` and :c:func:`Py_BuildValue`, " +"the reference. In particular, all functions whose function it is to create " +"a new object, such as :c:func:`PyLong_FromLong` and :c:func:`Py_BuildValue`, " "pass ownership to the receiver. Even if the object is not actually new, you " "still receive ownership of a new reference to that object. For instance, :c:" "func:`PyLong_FromLong` maintains a cache of popular values and can return a " @@ -1287,11 +1295,12 @@ msgstr "" #: extending/extending.rst:981 msgid "" "Many functions that extract objects from other objects also transfer " -"ownership with the reference, for instance :c:func:`PyObject_GetAttrString`. " -"The picture is less clear, here, however, since a few common routines are " -"exceptions: :c:func:`PyTuple_GetItem`, :c:func:`PyList_GetItem`, :c:func:" -"`PyDict_GetItem`, and :c:func:`PyDict_GetItemString` all return references " -"that you borrow from the tuple, list or dictionary." +"ownership with the reference, for instance :c:func:" +"`PyObject_GetAttrString`. The picture is less clear, here, however, since a " +"few common routines are exceptions: :c:func:`PyTuple_GetItem`, :c:func:" +"`PyList_GetItem`, :c:func:`PyDict_GetItem`, and :c:func:" +"`PyDict_GetItemString` all return references that you borrow from the tuple, " +"list or dictionary." msgstr "" #: extending/extending.rst:988 @@ -1315,10 +1324,10 @@ msgstr "" #: extending/extending.rst:1000 msgid "" "When a C function is called from Python, it borrows references to its " -"arguments from the caller. The caller owns a reference to the object, so the " -"borrowed reference's lifetime is guaranteed until the function returns. Only " -"when such a borrowed reference must be stored or passed on, it must be turned " -"into an owned reference by calling :c:func:`Py_INCREF`." +"arguments from the caller. The caller owns a reference to the object, so " +"the borrowed reference's lifetime is guaranteed until the function returns. " +"Only when such a borrowed reference must be stored or passed on, it must be " +"turned into an owned reference by calling :c:func:`Py_INCREF`." msgstr "" #: extending/extending.rst:1006 @@ -1351,8 +1360,8 @@ msgid "" "instance::" msgstr "" "Le premier cas, et le plus important à connaître, est celui de l'application " -"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une référence " -"à un élément de liste. Par exemple ::" +"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une " +"référence à un élément de liste. Par exemple ::" #: extending/extending.rst:1032 msgid "" @@ -1361,21 +1370,21 @@ msgid "" "Looks harmless, right? But it's not!" msgstr "" "Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace " -"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. Ça " -"a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !" +"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. " +"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !" #: extending/extending.rst:1036 msgid "" "Let's follow the control flow into :c:func:`PyList_SetItem`. The list owns " -"references to all its items, so when item 1 is replaced, it has to dispose of " -"the original item 1. Now let's suppose the original item 1 was an instance " -"of a user-defined class, and let's further suppose that the class defined a :" -"meth:`__del__` method. If this class instance has a reference count of 1, " -"disposing of it will call its :meth:`__del__` method." +"references to all its items, so when item 1 is replaced, it has to dispose " +"of the original item 1. Now let's suppose the original item 1 was an " +"instance of a user-defined class, and let's further suppose that the class " +"defined a :meth:`__del__` method. If this class instance has a reference " +"count of 1, disposing of it will call its :meth:`__del__` method." msgstr "" "Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède " -"des références à tous ses éléments, donc quand l'élément 1 est remplacé, elle " -"doit se débarrasser de l'élément 1 original. Supposons maintenant que " +"des références à tous ses éléments, donc quand l'élément 1 est remplacé, " +"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que " "l'élément 1 original était une instance d'une classe définie par " "l'utilisateur, et supposons en outre que la classe définisse une méthode :" "meth:`__del__`. Si l'instance de cette classe a un nombre des références de " @@ -1387,9 +1396,9 @@ msgid "" "arbitrary Python code. Could it perhaps do something to invalidate the " "reference to ``item`` in :c:func:`bug`? You bet! Assuming that the list " "passed into :c:func:`bug` is accessible to the :meth:`__del__` method, it " -"could execute a statement to the effect of ``del list[0]``, and assuming this " -"was the last reference to that object, it would free the memory associated " -"with it, thereby invalidating ``item``." +"could execute a statement to the effect of ``del list[0]``, and assuming " +"this was the last reference to that object, it would free the memory " +"associated with it, thereby invalidating ``item``." msgstr "" "Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du " "code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la " @@ -1408,8 +1417,8 @@ msgstr "" #: extending/extending.rst:1065 msgid "" "This is a true story. An older version of Python contained variants of this " -"bug and someone spent a considerable amount of time in a C debugger to figure " -"out why his :meth:`__del__` methods would fail..." +"bug and someone spent a considerable amount of time in a C debugger to " +"figure out why his :meth:`__del__` methods would fail..." msgstr "" #: extending/extending.rst:1069 @@ -1417,11 +1426,12 @@ msgid "" "The second case of problems with a borrowed reference is a variant involving " "threads. Normally, multiple threads in the Python interpreter can't get in " "each other's way, because there is a global lock protecting Python's entire " -"object space. However, it is possible to temporarily release this lock using " -"the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it using :c:" -"macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O calls, to " -"let other threads use the processor while waiting for the I/O to complete. " -"Obviously, the following function has the same problem as the previous one::" +"object space. However, it is possible to temporarily release this lock " +"using the macro :c:macro:`Py_BEGIN_ALLOW_THREADS`, and to re-acquire it " +"using :c:macro:`Py_END_ALLOW_THREADS`. This is common around blocking I/O " +"calls, to let other threads use the processor while waiting for the I/O to " +"complete. Obviously, the following function has the same problem as the " +"previous one::" msgstr "" "Le deuxième cas de problèmes liés à une référence empruntée est une variante " "impliquant des fils de discussion. Normalement, plusieurs threads dans " @@ -1431,8 +1441,8 @@ msgstr "" "`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:" "`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels " "d'entrées/sorties, afin de permettre aux autres threads d'utiliser le " -"processeur en attendant que les E/S soient terminées. Évidemment, la fonction " -"suivante a le même problème que la précédente ::" +"processeur en attendant que les E/S soient terminées. Évidemment, la " +"fonction suivante a le même problème que la précédente ::" #: extending/extending.rst:1092 msgid "NULL Pointers" @@ -1446,8 +1456,8 @@ msgid "" "return ``NULL`` only to indicate that an exception occurred. The reason for " "not testing for ``NULL`` arguments is that functions often pass the objects " "they receive on to other function --- if each function were to test for " -"``NULL``, there would be a lot of redundant tests and the code would run more " -"slowly." +"``NULL``, there would be a lot of redundant tests and the code would run " +"more slowly." msgstr "" "En général, les fonctions qui prennent des références d'objets comme " "arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si " @@ -1456,15 +1466,15 @@ msgstr "" "des références d'objets renvoient généralement ``NULL`` uniquement pour " "indiquer qu'une exception s'est produite. La raison pour laquelle les " "arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent " -"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction devait " -"tester pour ``NULL``, il y aurait beaucoup de tests redondants et le code " -"s'exécuterait plus lentement." +"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction " +"devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le " +"code s'exécuterait plus lentement." #: extending/extending.rst:1102 msgid "" -"It is better to test for ``NULL`` only at the \"source:\" when a pointer that " -"may be ``NULL`` is received, for example, from :c:func:`malloc` or from a " -"function that may raise an exception." +"It is better to test for ``NULL`` only at the \"source:\" when a pointer " +"that may be ``NULL`` is received, for example, from :c:func:`malloc` or from " +"a function that may raise an exception." msgstr "" "Il est préférable de tester la présence de ``NULL`` uniquement au début : " "lorsqu'un pointeur qui peut être ``NULL`` est reçu, par exemple, de :c:func:" @@ -1515,23 +1525,23 @@ msgstr "Écrire des extensions en C++" msgid "" "It is possible to write extension modules in C++. Some restrictions apply. " "If the main program (the Python interpreter) is compiled and linked by the C " -"compiler, global or static objects with constructors cannot be used. This is " -"not a problem if the main program is linked by the C++ compiler. Functions " -"that will be called by the Python interpreter (in particular, module " -"initialization functions) have to be declared using ``extern \"C\"``. It is " -"unnecessary to enclose the Python header files in ``extern \"C\" {...}`` --- " -"they use this form already if the symbol ``__cplusplus`` is defined (all " -"recent C++ compilers define this symbol)." +"compiler, global or static objects with constructors cannot be used. This " +"is not a problem if the main program is linked by the C++ compiler. " +"Functions that will be called by the Python interpreter (in particular, " +"module initialization functions) have to be declared using ``extern \"C\"``. " +"It is unnecessary to enclose the Python header files in ``extern \"C\" {...}" +"`` --- they use this form already if the symbol ``__cplusplus`` is defined " +"(all recent C++ compilers define this symbol)." msgstr "" "Il est possible d'écrire des modules d'extension en C++, mais avec un nombre " "de restrictions. Si le programme principal (l'interpréteur Python) est " -"compilé et lié par le compilateur C, les objets globaux ou statiques avec les " -"constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si le " -"programme principal est lié par le compilateur C++. Les fonctions qui seront " -"appelées par l'interpréteur Python (en particulier, les fonctions " +"compilé et lié par le compilateur C, les objets globaux ou statiques avec " +"les constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si " +"le programme principal est lié par le compilateur C++. Les fonctions qui " +"seront appelées par l'interpréteur Python (en particulier, les fonctions " "d'initialisation des modules) doivent être déclarées en utilisant le \"C\" " -"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python dans " -"le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " +"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " +"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " "``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce " "symbole)." @@ -1542,52 +1552,52 @@ msgstr "Fournir une API en langage C pour un module d'extension" #: extending/extending.rst:1152 msgid "" "Many extension modules just provide new functions and types to be used from " -"Python, but sometimes the code in an extension module can be useful for other " -"extension modules. For example, an extension module could implement a type " -"\"collection\" which works like lists without order. Just like the standard " -"Python list type has a C API which permits extension modules to create and " -"manipulate lists, this new collection type should have a set of C functions " -"for direct manipulation from other extension modules." -msgstr "" -"De nombreux modules d'extension fournissent simplement de nouvelles fonctions " -"et de nouveaux types à utiliser à partir de Python, mais parfois le code d'un " -"module d'extension peut être utile pour d'autres modules d'extension. Par " -"exemple, un module d'extension peut mettre en œuvre un type \"collection\" " -"qui fonctionne comme des listes sans ordre. Tout comme le type de liste " -"Python standard possède une API C qui permet aux modules d'extension de créer " -"et de manipuler des listes, ce nouveau type de collection devrait posséder un " -"ensemble de fonctions C pour une manipulation directe à partir d'autres " -"modules d'extension." +"Python, but sometimes the code in an extension module can be useful for " +"other extension modules. For example, an extension module could implement a " +"type \"collection\" which works like lists without order. Just like the " +"standard Python list type has a C API which permits extension modules to " +"create and manipulate lists, this new collection type should have a set of C " +"functions for direct manipulation from other extension modules." +msgstr "" +"De nombreux modules d'extension fournissent simplement de nouvelles " +"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois " +"le code d'un module d'extension peut être utile pour d'autres modules " +"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type " +"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le " +"type de liste Python standard possède une API C qui permet aux modules " +"d'extension de créer et de manipuler des listes, ce nouveau type de " +"collection devrait posséder un ensemble de fonctions C pour une manipulation " +"directe à partir d'autres modules d'extension." #: extending/extending.rst:1160 msgid "" "At first sight this seems easy: just write the functions (without declaring " -"them ``static``, of course), provide an appropriate header file, and document " -"the C API. And in fact this would work if all extension modules were always " -"linked statically with the Python interpreter. When modules are used as " -"shared libraries, however, the symbols defined in one module may not be " -"visible to another module. The details of visibility depend on the operating " -"system; some systems use one global namespace for the Python interpreter and " -"all extension modules (Windows, for example), whereas others require an " -"explicit list of imported symbols at module link time (AIX is one example), " -"or offer a choice of different strategies (most Unices). And even if symbols " -"are globally visible, the module whose functions one wishes to call might not " -"have been loaded yet!" +"them ``static``, of course), provide an appropriate header file, and " +"document the C API. And in fact this would work if all extension modules " +"were always linked statically with the Python interpreter. When modules are " +"used as shared libraries, however, the symbols defined in one module may not " +"be visible to another module. The details of visibility depend on the " +"operating system; some systems use one global namespace for the Python " +"interpreter and all extension modules (Windows, for example), whereas others " +"require an explicit list of imported symbols at module link time (AIX is one " +"example), or offer a choice of different strategies (most Unices). And even " +"if symbols are globally visible, the module whose functions one wishes to " +"call might not have been loaded yet!" msgstr "" "À première vue, cela semble facile : il suffit d'écrire les fonctions (sans " "les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête " "approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous " "les modules d'extension étaient toujours liés statiquement avec " -"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme des " -"bibliothèques partagées, les symboles définis dans un module peuvent ne pas " -"être visibles par un autre module. Les détails de la visibilité dépendent du " -"système d'exploitation ; certains systèmes utilisent un espace de noms global " -"pour l'interpréteur Python et tous les modules d'extension (Windows, par " -"exemple), tandis que d'autres exigent une liste explicite des symboles " -"importés au moment de la liaison des modules (AIX en est un exemple), ou " -"offrent un choix de stratégies différentes (la plupart des *Unix*). Et même " -"si les symboles sont globalement visibles, le module dont on souhaite appeler " -"les fonctions n'est peut-être pas encore chargé !" +"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme " +"des bibliothèques partagées, les symboles définis dans un module peuvent ne " +"pas être visibles par un autre module. Les détails de la visibilité " +"dépendent du système d'exploitation ; certains systèmes utilisent un espace " +"de noms global pour l'interpréteur Python et tous les modules d'extension " +"(Windows, par exemple), tandis que d'autres exigent une liste explicite des " +"symboles importés au moment de la liaison des modules (AIX en est un " +"exemple), ou offrent un choix de stratégies différentes (la plupart des " +"*Unix*). Et même si les symboles sont globalement visibles, le module dont " +"on souhaite appeler les fonctions n'est peut-être pas encore chargé !" #: extending/extending.rst:1172 msgid "" @@ -1604,8 +1614,8 @@ msgstr "" "d'initialisation du module, afin d'éviter les conflits de noms avec les " "autres modules d'extension (comme discuté dans la section :ref:" "`methodtable`). Et cela signifie que les symboles qui *devraient* être " -"accessibles à partir d'autres modules d'extension doivent être exportés d'une " -"manière différente." +"accessibles à partir d'autres modules d'extension doivent être exportés " +"d'une manière différente." #: extending/extending.rst:1179 msgid "" @@ -1623,8 +1633,8 @@ msgstr "" msgid "" "There are many ways in which Capsules can be used to export the C API of an " "extension module. Each function could get its own Capsule, or all C API " -"pointers could be stored in an array whose address is published in a Capsule. " -"And the various tasks of storing and retrieving the pointers can be " +"pointers could be stored in an array whose address is published in a " +"Capsule. And the various tasks of storing and retrieving the pointers can be " "distributed in different ways between the module providing the code and the " "client modules." msgstr "" @@ -1641,8 +1651,8 @@ msgid "" "Whichever method you choose, it's important to name your Capsules properly. " "The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const " "char \\*`); you're permitted to pass in a ``NULL`` name, but we strongly " -"encourage you to specify a name. Properly named Capsules provide a degree of " -"runtime type-safety; there is no feasible way to tell one unnamed Capsule " +"encourage you to specify a name. Properly named Capsules provide a degree " +"of runtime type-safety; there is no feasible way to tell one unnamed Capsule " "from another." msgstr "" "Quelle que soit la méthode que vous choisissez, il est important de bien " @@ -1662,44 +1672,44 @@ msgstr "" #: extending/extending.rst:1205 #, fuzzy msgid "" -"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a C " -"API provided via a Capsule, but only if the Capsule's name matches this " +"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a " +"C API provided via a Capsule, but only if the Capsule's name matches this " "convention. This behavior gives C API users a high degree of certainty that " "the Capsule they load contains the correct C API." msgstr "" -"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de charger " -"facilement une API C fournie via une Capsule, mais seulement si le nom de la " -"Capsule correspond à cette convention. Ce comportement donne aux utilisateurs " -"d'API C un degré élevé de certitude que la Capsule qu'ils chargent contient " -"l'API C correcte." +"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de " +"charger facilement une API C fournie via une Capsule, mais seulement si le " +"nom de la Capsule correspond à cette convention. Ce comportement donne aux " +"utilisateurs d'API C un degré élevé de certitude que la Capsule qu'ils " +"chargent contient l'API C correcte." #: extending/extending.rst:1210 msgid "" "The following example demonstrates an approach that puts most of the burden " -"on the writer of the exporting module, which is appropriate for commonly used " -"library modules. It stores all C API pointers (just one in the example!) in " -"an array of :c:type:`void` pointers which becomes the value of a Capsule. The " -"header file corresponding to the module provides a macro that takes care of " -"importing the module and retrieving its C API pointers; client modules only " -"have to call this macro before accessing the C API." -msgstr "" -"L'exemple suivant montre une approche qui fait peser la plus grande partie de " -"la charge sur le rédacteur du module d'exportation, ce qui est approprié pour " -"les modules de bibliothèque couramment utilisés. Il stocke tous les pointeurs " -"de l'API C (un seul dans l'exemple !) dans un tableau de pointeurs :c:type:" -"`void` qui devient la valeur d'une Capsule. Le fichier d'en-tête " -"correspondant au module fournit une macro qui se charge d'importer le module " -"et de récupérer ses pointeurs d'API C. Les modules clients n'ont qu'à appeler " -"cette macro avant d'accéder à l'API C." +"on the writer of the exporting module, which is appropriate for commonly " +"used library modules. It stores all C API pointers (just one in the " +"example!) in an array of :c:type:`void` pointers which becomes the value of " +"a Capsule. The header file corresponding to the module provides a macro that " +"takes care of importing the module and retrieving its C API pointers; client " +"modules only have to call this macro before accessing the C API." +msgstr "" +"L'exemple suivant montre une approche qui fait peser la plus grande partie " +"de la charge sur le rédacteur du module d'exportation, ce qui est approprié " +"pour les modules de bibliothèque couramment utilisés. Il stocke tous les " +"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de " +"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier " +"d'en-tête correspondant au module fournit une macro qui se charge d'importer " +"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont " +"qu'à appeler cette macro avant d'accéder à l'API C." #: extending/extending.rst:1218 msgid "" "The exporting module is a modification of the :mod:`spam` module from " -"section :ref:`extending-simpleexample`. The function :func:`spam.system` does " -"not call the C library function :c:func:`system` directly, but a function :c:" -"func:`PySpam_System`, which would of course do something more complicated in " -"reality (such as adding \"spam\" to every command). This function :c:func:" -"`PySpam_System` is also exported to other extension modules." +"section :ref:`extending-simpleexample`. The function :func:`spam.system` " +"does not call the C library function :c:func:`system` directly, but a " +"function :c:func:`PySpam_System`, which would of course do something more " +"complicated in reality (such as adding \"spam\" to every command). This " +"function :c:func:`PySpam_System` is also exported to other extension modules." msgstr "" "Le module d'exportation est une modification du module :mod:`spam` de la " "section :ref:`extending-simpleexample`. La fonction :func:`spam.system` " @@ -1734,9 +1744,9 @@ msgid "" "initialization function must take care of initializing the C API pointer " "array::" msgstr "" -"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête qu'il " -"est inclus dans le module d'exportation, et non dans un module client. Enfin, " -"la fonction d'initialisation du module doit prendre en charge " +"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête " +"qu'il est inclus dans le module d'exportation, et non dans un module client. " +"Enfin, la fonction d'initialisation du module doit prendre en charge " "l'initialisation du tableau de pointeurs de l'API C ::" #: extending/extending.rst:1287 @@ -1761,8 +1771,8 @@ msgid "" "func:`PySpam_System` is to call the function (or rather macro) :c:func:" "`import_spam` in its initialization function::" msgstr "" -"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:func:" -"`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:" +"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:" +"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:" "`import_spam` dans sa fonction d'initialisation ::" #: extending/extending.rst:1359 @@ -1789,9 +1799,9 @@ msgstr "" "supplémentaires, qui sont particulièrement utiles pour l'allocation de la " "mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les " "détails sont décrits dans le manuel de référence de l'API Python/C dans la " -"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :file:" -"`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la distribution du " -"code source Python)." +"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :" +"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la " +"distribution du code source Python)." #: extending/extending.rst:1371 msgid "Footnotes" @@ -1819,14 +1829,14 @@ msgid "" "reference count itself could be in freed memory and may thus be reused for " "another object!" msgstr "" -"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne pas**, " -"le compte de référence lui-même pourrait être en mémoire libérée et peut donc " -"être réutilisé pour un autre objet !" +"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne " +"pas**, le compte de référence lui-même pourrait être en mémoire libérée et " +"peut donc être réutilisé pour un autre objet !" #: extending/extending.rst:1382 msgid "" -"These guarantees don't hold when you use the \"old\" style calling convention " -"--- this is still found in much existing code." +"These guarantees don't hold when you use the \"old\" style calling " +"convention --- this is still found in much existing code." msgstr "" "Ces garanties ne sont pas valables lorsqu'on emploie les conventions de " "nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code " From 5f34ddc618fb181fd0c0f5d77a62f251b86c24e5 Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 21:59:35 +0100 Subject: [PATCH 33/37] Corrections 20210207 21:59 --- extending/extending.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index f39ad7b4b..475372f9f 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2021-02-07 21:41+0100\n" +"PO-Revision-Date: 2021-02-07 21:58+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -467,9 +467,9 @@ msgstr "" "la nouvelle classe créée ; ceci est intentionnel ! Comme l'exception peut " "être retirée du module par un code externe, une référence à la classe est " "nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:" -"`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur " -"défaillant, le C code qui lève l'exception peut engendrer un rejet central " -"ou des effets secondaires inattendus." +"`SpamError` et devenir un pointeur défaillant. Si cela se produirait, le C " +"code qui lève cette exception peut engendrer un *core dump* ou des effets " +"secondaires inattendus." #: extending/extending.rst:247 msgid "" @@ -1461,8 +1461,8 @@ msgid "" msgstr "" "En général, les fonctions qui prennent des références d'objets comme " "arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si " -"vous en donnez comme arguments, elles videront la mémoire vive (ou " -"provoqueront des vidages ultérieurs de mémoire). Les fonctions qui renvoient " +"vous en donnez comme arguments, elles causeront une erreur de segmentation " +"(ou provoqueront des *core dump* ultérieurs). Les fonctions qui renvoient " "des références d'objets renvoient généralement ``NULL`` uniquement pour " "indiquer qu'une exception s'est produite. La raison pour laquelle les " "arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent " From e9043fb415a6c462270c5f7478ea4a331d36b9ae Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 22:19:25 +0100 Subject: [PATCH 34/37] Corrections 20210207 22:19 --- extending/extending.po | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index 475372f9f..c5c5fe9f4 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2021-02-07 21:58+0100\n" +"PO-Revision-Date: 2021-02-07 22:18+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -1533,14 +1533,14 @@ msgid "" "`` --- they use this form already if the symbol ``__cplusplus`` is defined " "(all recent C++ compilers define this symbol)." msgstr "" -"Il est possible d'écrire des modules d'extension en C++, mais avec un nombre " -"de restrictions. Si le programme principal (l'interpréteur Python) est " -"compilé et lié par le compilateur C, les objets globaux ou statiques avec " -"les constructeurs ne peuvent pas être utilisés. Ce n'est pas un problème si " -"le programme principal est lié par le compilateur C++. Les fonctions qui " +"C'est possible d'écrire des modules d'extension en C++, mais sous certaines " +"conditions. Si le programme principal (l'interpréteur Python) est compilé et " +"lié par le compilateur C, les objets globaux ou statiques avec les " +"constructeurs ne peuvent pas être utilisés. Ceci n'est pas un problème si le " +"programme principal est relié par le compilateur C++. Les fonctions qui " "seront appelées par l'interpréteur Python (en particulier, les fonctions " -"d'initialisation des modules) doivent être déclarées en utilisant le \"C\" " -"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " +"d'initialisation des modules) doivent être déclarées en utilisant ``extern " +"\"C\"``. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python " "dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole " "``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce " "symbole)." @@ -1647,6 +1647,7 @@ msgstr "" "clients." #: extending/extending.rst:1193 +#, fuzzy msgid "" "Whichever method you choose, it's important to name your Capsules properly. " "The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const " @@ -1659,9 +1660,9 @@ msgstr "" "nommer vos Capsules. La fonction :c:func:`PyCapsule_New` prend un paramètre " "nommé (:c:type:`const char \\*`). Vous êtes autorisé à passer un nom " "``NULL``, mais nous vous encourageons vivement à spécifier un nom. Des " -"Capsules correctement nommées offrent un certain degré de sécurité quant au " -"type d'exécution. Il n'y a pas de moyen de distinguer une Capsule non nommée " -"d'une autre." +"Capsules correctement nommées offrent un certain degré de sécurité " +"concernant un éventuel conflit de types, car il n'y a pas de moyen de " +"distinguer deux ou plusieurs Capsules non nommée entre elles." #: extending/extending.rst:1200 msgid "" From 01dab86031484a9a47ee518f55c8336f1cc1947a Mon Sep 17 00:00:00 2001 From: Catadanna Date: Sun, 7 Feb 2021 22:27:45 +0100 Subject: [PATCH 35/37] Corrections 20210207 22:27 --- extending/extending.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extending/extending.po b/extending/extending.po index c5c5fe9f4..cd580e4c3 100644 --- a/extending/extending.po +++ b/extending/extending.po @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Python 3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-08-24 09:01+0200\n" -"PO-Revision-Date: 2021-02-07 22:18+0100\n" +"PO-Revision-Date: 2021-02-07 22:27+0100\n" "Last-Translator: Julien Palard \n" "Language-Team: FRENCH \n" "Language: fr\n" @@ -1138,11 +1138,11 @@ msgstr "" "pour distinguer les deux. Le grand avantage du ramasse-miettes est que " "l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un " "autre avantage important est l'amélioration de la vitesse ou de " -"l'utilisation de la mémoire --- ce n'est cependant pas un fait avéré). " +"l'utilisation de la mémoire, ce n'est cependant pas un fait avéré). " "L'inconvénient est que pour C, il n'y a pas de ramasse-miettes portable " "proprement-dit, alors que le comptage des références peut être implémenté de " "façon portable (tant que les fonctions :c:func:`malloc` et :c:func:`free` " -"soient disponibles --- ce que la norme C garantit). Peut-être qu'un jour un " +"soient disponibles, ce que la norme C garantit). Peut-être qu'un jour un " "ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous " "devrons utiliser les compteurs des références." From a4290ccbdef3ef943e3d38c63bf2e9d0f1342ea3 Mon Sep 17 00:00:00 2001 From: Jules Lasne Date: Mon, 15 Feb 2021 11:04:25 +0100 Subject: [PATCH 36/37] Fixed doc gen --- extending/newtypes.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extending/newtypes.po b/extending/newtypes.po index 53822d2fd..ca45120c8 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -71,7 +71,7 @@ msgid "" msgstr "" "Ici vous pouvez mettre une chaîne (ou son adresse) que vous voulez renvoyer " "lorsque le script Python référence ``obj.__doc__`` pour récupérer le " -"*docstring." +"*docstring*." #: extending/newtypes.rst:49 msgid "" From 354da3c84800af7618584233347e263550c5655c Mon Sep 17 00:00:00 2001 From: Jules Lasne Date: Mon, 15 Feb 2021 11:06:32 +0100 Subject: [PATCH 37/37] Fixed pospell ? --- extending/newtypes.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extending/newtypes.po b/extending/newtypes.po index ca45120c8..005f8b98b 100644 --- a/extending/newtypes.po +++ b/extending/newtypes.po @@ -346,10 +346,10 @@ msgstr "" "Un avantage intéressant de l'utilisation de la table :c:member:" "`~PyTypeObject.tp_members` pour construire les descripteurs qui sont " "utilisés à l'exécution, est que à tout attribut défini de cette façon on " -"peut associer un *docstring, en écrivant simplement le texte dans la table. " +"peut associer un *docstring*, en écrivant simplement le texte dans la table. " "Une application peut utiliser l'API d'introspection pour récupérer le " "descripteur de l'objet de classe, et utiliser son attribut :attr:`__doc__` " -"pour renvoyer le *docstring." +"pour renvoyer le *docstring*." #: extending/newtypes.rst:309 msgid ""