@@ -6,7 +6,7 @@ msgstr ""
66"Project-Id-Version : Python 3\n "
77"Report-Msgid-Bugs-To : \n "
88"POT-Creation-Date : 2020-08-24 09:01+0200\n "
9- "PO-Revision-Date : 2020-10-02 15:06 +0200\n "
9+ "PO-Revision-Date : 2020-10-21 14:39 +0200\n "
1010"
Last-Translator :
Julien Palard <[email protected] >\n "
1111"
Language-Team :
FRENCH <[email protected] >\n "
1212"Language : fr\n "
@@ -71,9 +71,9 @@ msgstr ""
7171"et ainsi préserver la portabilité vers d'autres implémentations. Par "
7272"exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un "
7373"appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou "
74- "d'utiliser la bibliothèque `cffi <https://cffi.readthedocs.io/>`_ plutôt que "
75- "d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code "
76- "Python s'interfaçant avec le code C et sont plus portables entre les "
74+ "d'utiliser la bibliothèque `* cffi* <https://cffi.readthedocs.io/>`_ plutôt "
75+ "que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du "
76+ "code Python s'interfaçant avec le code C et sont plus portables entre les "
7777"implémentations de Python que l'écriture et la compilation d'une d'extension "
7878"C."
7979
@@ -309,6 +309,7 @@ msgstr ""
309309"de le déterminer à partir de la valeur renvoyée."
310310
311311#: extending/extending.rst:160
312+ #, fuzzy
312313msgid ""
313314"When a function *f* that calls another function *g* detects that the latter "
314315"fails, *f* should itself return an error value (usually ``NULL`` or "
@@ -667,12 +668,11 @@ msgstr ""
667668"`PyModule_Create`, qui renvoie un objet module, et insère des objets "
668669"fonction intégrés dans le module nouvellement créé en se basant sur la table "
669670"(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition "
670- "du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet "
671- "module qu'il crée. Il peut s'interrompre avec une erreur fatale pour "
672- "certaines erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être "
673- "initialisé de manière satisfaisante. La fonction `init` doit renvoyer "
674- "l'objet module à son appelant, afin qu'il soit ensuite inséré dans ``sys."
675- "modules``."
671+ "du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module "
672+ "qu'il crée. Il peut s'interrompre avec une erreur fatale pour certaines "
673+ "erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être initialisé de "
674+ "manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à "
675+ "son appelant, afin qu'il soit ensuite inséré dans ``sys.modules``."
676676
677677#: extending/extending.rst:383
678678msgid ""
@@ -884,6 +884,16 @@ msgid ""
884884"simplest way to do this is to call :c:func:`Py_BuildValue`. For example, if "
885885"you want to pass an integral event code, you might use the following code::"
886886msgstr ""
887+ "Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez "
888+ "peut-être aussi fournir une liste d'arguments à :c:func:"
889+ "`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également "
890+ "fournie par le programme Python, par l'intermédiaire de la même interface "
891+ "qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et "
892+ "utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous "
893+ "pouvez avoir à construire un nouveau n-uplet à passer comme liste "
894+ "d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:"
895+ "`Py_BuildValue`. Par exemple, si vous voulez passer un code d'événement "
896+ "intégral, vous pouvez utiliser le code suivant ::"
887897
888898#: extending/extending.rst:608
889899msgid ""
@@ -1026,7 +1036,7 @@ msgstr ""
10261036"Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce "
10271037"dernier nécessite que son premier argument soit un n-uplet (puisque les "
10281038"listes d'arguments Python sont toujours représentées par des *n*-uplets en "
1029- "interne), :c:func:`Py_BuildValue` ne construit pas toujours un *n* -uplet. Il "
1039+ "interne), :c:func:`Py_BuildValue` ne construit pas toujours un n -uplet. Il "
10301040"n'en construit un que si sa chaîne formatée contient deux unités formatées "
10311041"ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient "
10321042"exactement une unité formatée, il renvoie tout objet décrit par cette unité "
@@ -1100,6 +1110,14 @@ msgid ""
11001110"reference to it is deleted. When the counter reaches zero, the last "
11011111"reference to the object has been deleted and the object is freed."
11021112msgstr ""
1113+ "Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:"
1114+ "`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi "
1115+ "que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:"
1116+ "`reference counting`. Le principe est simple : chaque objet contient un "
1117+ "compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée "
1118+ "quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est "
1119+ "supprimée. Lorsque le compteur atteint zéro, la dernière référence à l'objet "
1120+ "a été supprimée et l'objet est libéré."
11031121
11041122#: extending/extending.rst:888
11051123msgid ""
@@ -1116,6 +1134,20 @@ msgid ""
11161134"garbage collector will be available for C. Until then, we'll have to live "
11171135"with reference counts."
11181136msgstr ""
1137+ "Une stratégie alternative est appelée :dfn:`automatic garbage collection` "
1138+ "(collecte automatique des déchets). Parfois, le comptage des références est "
1139+ "également appelé stratégie de collecte des déchets, d'où l'utilisation du "
1140+ "terme \" automatique\" pour distinguer les deux. Le grand avantage de la "
1141+ "collecte automatique des déchets est que l'utilisateur n'a pas besoin "
1142+ "d'appeler :c:func:`free` explicitement. (Un autre avantage important est "
1143+ "l'amélioration de la vitesse ou de l'utilisation de la mémoire --- ce n'est "
1144+ "cependant pas un fait avéré). L'inconvénient est que pour C, il n'y a pas de "
1145+ "collecte automatique des déchets vraiment portable, alors que le comptage "
1146+ "des références peut être implémenté de façon portable (tant que les "
1147+ "fonctions :c:func:`malloc` et :c:func:`free` soient disponibles --- ce que "
1148+ "la norme C garantit). Peut-être qu'un jour un collecteur automatique de "
1149+ "déchets suffisamment portable sera disponible pour C. D'ici là, nous devrons "
1150+ "utiliser les compteurs des références."
11191151
11201152#: extending/extending.rst:900
11211153msgid ""
@@ -1193,12 +1225,12 @@ msgstr ""
11931225"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne "
11941226"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le "
11951227"comptage de références d'un objet est maintenant défini comme étant le "
1196- "nombre de références à cet objet. Le propriétaire "
1197- "d'une référence est responsable d'appeler :c:func:`Py_DECREF` lorsque la "
1198- "référence n'est plus nécessaire. La propriété d'une référence peut être "
1199- "transférée. Il y a trois façons de disposer d'une référence : "
1200- "la transmettre, la stocker, ou appeler : c:func:`Py_DECREF`. Oublier de se "
1201- "débarrasser d'une référence crée une fuite de mémoire."
1228+ "nombre de références à cet objet. Le propriétaire d'une référence est "
1229+ "responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus "
1230+ "nécessaire. La propriété d'une référence peut être transférée. Il y a trois "
1231+ "façons de disposer d'une référence : la transmettre, la stocker, ou appeler : "
1232+ "c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite "
1233+ "de mémoire."
12021234
12031235#: extending/extending.rst:943
12041236msgid ""
@@ -1353,6 +1385,13 @@ msgid ""
13531385"defined a :meth:`__del__` method. If this class instance has a reference "
13541386"count of 1, disposing of it will call its :meth:`__del__` method."
13551387msgstr ""
1388+ "Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède "
1389+ "des références à tous ses éléments, donc quand l'élément 1 est remplacé, "
1390+ "elle doit se débarrasser de l'élément 1 original. Supposons maintenant que "
1391+ "l'élément 1 original était une instance d'une classe définie par "
1392+ "l'utilisateur, et supposons en outre que la classe définisse une méthode :"
1393+ "meth:`__del__`. Si l'instance de cette classe a un nombre des références de "
1394+ "1, sa destruction appellera sa méthode :meth:`__del__`."
13561395
13571396#: extending/extending.rst:1043
13581397msgid ""
@@ -1440,13 +1479,19 @@ msgid ""
14401479"that may be ``NULL`` is received, for example, from :c:func:`malloc` or from "
14411480"a function that may raise an exception."
14421481msgstr ""
1482+ "Il est préférable de tester la présence de ``NULL`` uniquement au début : "
1483+ "lorsqu'un pointeur qui peut être ``NULL`` est reçu, par exemple, de :c:func:"
1484+ "`malloc` ou d'une fonction qui peut lever une exception."
14431485
14441486#: extending/extending.rst:1106
14451487msgid ""
14461488"The macros :c:func:`Py_INCREF` and :c:func:`Py_DECREF` do not check for "
14471489"``NULL`` pointers --- however, their variants :c:func:`Py_XINCREF` and :c:"
14481490"func:`Py_XDECREF` do."
14491491msgstr ""
1492+ "Les macros :c:func:`Py_INCREF` et :c:func:`Py_DECREF` ne vérifient pas les "
1493+ "pointeurs ``NULL``. Cependant, leurs variantes :c:func:`Py_XINCREF` et :c:"
1494+ "func:`Py_XDECREF` le font."
14501495
14511496#: extending/extending.rst:1110
14521497msgid ""
@@ -1468,17 +1513,19 @@ msgstr ""
14681513"il garantit qu'il s'agit toujours d'un n-uplet [#]_."
14691514
14701515#: extending/extending.rst:1120
1516+ #, fuzzy
14711517msgid ""
14721518"It is a severe error to ever let a ``NULL`` pointer \" escape\" to the Python "
14731519"user."
14741520msgstr ""
1521+ "C'est une grave erreur de laisser un pointeur ``NULL`` \" échapper\" vers "
1522+ "l'utilisateur Python."
14751523
14761524#: extending/extending.rst:1131
14771525msgid "Writing Extensions in C++"
14781526msgstr "Écrire des extensions en C++"
14791527
14801528#: extending/extending.rst:1133
1481- #, fuzzy
14821529msgid ""
14831530"It is possible to write extension modules in C++. Some restrictions apply. "
14841531"If the main program (the Python interpreter) is compiled and linked by the C "
@@ -1498,9 +1545,9 @@ msgstr ""
14981545"seront appelées par l'interpréteur Python (en particulier, les fonctions "
14991546"d'initialisation des modules) doivent être déclarées en utilisant le \" C\" "
15001547"externe. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python "
1501- "dans le ``extern \" C\" {... }``, car ils utilisent déjà ce format si le "
1502- "symbole ``__cplusplus`` est défini (tous les compilateurs C++ récents "
1503- "définissent ce symbole)."
1548+ "dans le ``extern \" C\" {… }``, car ils utilisent déjà ce format si le symbole "
1549+ "``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce "
1550+ "symbole)."
15041551
15051552#: extending/extending.rst:1147
15061553msgid "Providing a C API for an Extension Module"
@@ -1627,12 +1674,18 @@ msgid ""
16271674msgstr ""
16281675
16291676#: extending/extending.rst:1205
1677+ #, fuzzy
16301678msgid ""
16311679"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a "
16321680"C API provided via a Capsule, but only if the Capsule's name matches this "
16331681"convention. This behavior gives C API users a high degree of certainty that "
16341682"the Capsule they load contains the correct C API."
16351683msgstr ""
1684+ "La fonction communément utilisée :c:func:`PyCapsule_Import` permet de "
1685+ "charger facilement une API C fournie via une Capsule, mais seulement si le "
1686+ "nom de la Capsule correspond à cette convention. Ce comportement donne aux "
1687+ "utilisateurs d'API C un degré élevé de certitude que la Capsule qu'ils "
1688+ "chargent contient l'API C correcte."
16361689
16371690#: extending/extending.rst:1210
16381691msgid ""
0 commit comments