Skip to content

Commit d28e305

Browse files
committed
Traduction de extending/extending.po 10012021
1 parent 926f689 commit d28e305

File tree

1 file changed

+149
-17
lines changed

1 file changed

+149
-17
lines changed

extending/extending.po

Lines changed: 149 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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-01 16:26+0200\n"
9+
"PO-Revision-Date: 2020-10-01 20:20+0200\n"
1010
"Last-Translator: Julien Palard <julien@palard.fr>\n"
1111
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
1212
"Language: fr\n"
@@ -54,7 +54,6 @@ msgstr ""
5454
"chapitres suivants."
5555

5656
#: extending/extending.rst:25
57-
#, fuzzy
5857
msgid ""
5958
"The C extension interface is specific to CPython, and extension modules do "
6059
"not work on other Python implementations. In many cases, it is possible to "
@@ -72,9 +71,9 @@ msgstr ""
7271
"et ainsi préserver la portabilité vers d'autres implémentations. Par "
7372
"exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un "
7473
"appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou "
75-
"d'utiliser la bibliothèque *cffi* `<https://cffi.readthedocs.io>`_ plutôt "
76-
"que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du "
77-
"code 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 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 "
7877
"implémentations de Python que l'écriture et la compilation d'une d'extension "
7978
"C."
8079

@@ -83,7 +82,6 @@ msgid "A Simple Example"
8382
msgstr "Un exemple simple"
8483

8584
#: extending/extending.rst:42
86-
#, fuzzy
8785
msgid ""
8886
"Let's create an extension module called ``spam`` (the favorite food of Monty "
8987
"Python fans...) and let's say we want to create a Python interface to the C "
@@ -92,11 +90,11 @@ msgid ""
9290
"this function to be callable from Python as follows:"
9391
msgstr ""
9492
"Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans "
95-
"des *Monty Python* ...) et disons que nous voulons créer une interface "
96-
"Python à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette "
97-
"fonction prend une chaîne de caractères à terminaison nulle comme argument "
98-
"et renvoie un entier. Nous voulons que cette fonction soit appelable à "
99-
"partir de Python comme suit :"
93+
"des *Monty Python* ) et disons que nous voulons créer une interface Python "
94+
"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction "
95+
"prend une chaîne de caractères à terminaison nulle comme argument et renvoie "
96+
"un entier. Nous voulons que cette fonction soit appelable à partir de Python "
97+
"comme suit :"
10098

10199
#: extending/extending.rst:53
102100
msgid ""
@@ -296,7 +294,6 @@ msgstr ""
296294
"c:func:`Py_INCREF` aux objets transmis à ces fonctions."
297295

298296
#: extending/extending.rst:154
299-
#, fuzzy
300297
msgid ""
301298
"You can test non-destructively whether an exception has been set with :c:"
302299
"func:`PyErr_Occurred`. This returns the current exception object, or "
@@ -306,10 +303,10 @@ msgid ""
306303
msgstr ""
307304
"Vous pouvez tester de manière non destructive si une exception a été levée "
308305
"avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou "
309-
"*NULL* si aucune exception n'a eu lieu. Cependant, vous ne devriez pas avoir "
310-
"besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est "
306+
"``NULL`` si aucune exception n'a eu lieu. Cependant, vous ne devriez pas "
307+
"avoir besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est "
311308
"survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
312-
"de le déterminer à partir de la valeur de retour."
309+
"de le déterminer à partir de la valeur renvoyée."
313310

314311
#: extending/extending.rst:160
315312
#, fuzzy
@@ -480,7 +477,7 @@ msgid ""
480477
"this sample."
481478
msgstr ""
482479
"Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de "
483-
"retour de fonction plus tard dans cette section."
480+
"renvoi de fonction plus tard dans cette section."
484481

485482
#: extending/extending.rst:250
486483
msgid ""
@@ -636,7 +633,7 @@ msgid ""
636633
"`PyInit_name`, where *name* is the name of the module, and should be the "
637634
"only non-\\ ``static`` item defined in the module file::"
638635
msgstr ""
639-
"Cette structure, à son tour, doit être transmise à l'interprète dans la "
636+
"Cette structure, à son tour, doit être transmise à l'interpréteur dans la "
640637
"fonction d'initialisation du module. La fonction d'initialisation doit être "
641638
"nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le "
642639
"seul élément non ``static`` défini dans le fichier du module ::"
@@ -700,6 +697,11 @@ msgid ""
700697
"``PyInit_spam``, and creation of the module is left to the import machinery. "
701698
"For details on multi-phase initialization, see :PEP:`489`."
702699
msgstr ""
700+
"Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une "
701+
"*initialisation multi-phase* (nouveau en Python 3.5), où une structure "
702+
"*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du "
703+
"module est laissée à la machine d'importation. Pour plus de détails sur "
704+
"l'initialisation multi-phase, voir :PEP:`489`."
703705

704706
#: extending/extending.rst:448
705707
msgid "Compilation and Linkage"
@@ -781,6 +783,10 @@ msgid ""
781783
"c:func:`PyArg_ParseTuple` function and its arguments are documented in "
782784
"section :ref:`parsetuple`."
783785
msgstr ""
786+
"Cette fonction doit être enregistrée avec l'interpréteur en utilisant le "
787+
"drapeau :const:`METH_VARARGS` ; ceci est décrit dans la section :ref:"
788+
"`methodtable`. La fonction :c:func:`PyArg_ParseTuple` et ses arguments sont "
789+
"documentés dans la section :ref:`parsetuple`."
784790

785791
#: extending/extending.rst:536
786792
msgid ""
@@ -789,6 +795,11 @@ msgid ""
789795
"pointers (but note that *temp* will not be ``NULL`` in this context). More "
790796
"info on them in section :ref:`refcounts`."
791797
msgstr ""
798+
"Les macros :c:func:`Py_XINCREF` et :c:func:`Py_XDECREF` incrémentent/"
799+
"décrémentent le comptage des références d'un objet et sont sûres quant à la "
800+
"présence de pointeurs ``NULL`` (mais notez que *temp* ne sera pas ``NULL`` "
801+
"dans ce contexte). Plus d'informations à ce sujet dans la section :ref:"
802+
"`refcounts`."
792803

793804
#: extending/extending.rst:543
794805
msgid ""
@@ -830,6 +841,15 @@ msgid ""
830841
"handle the exception. If this is not possible or desirable, the exception "
831842
"should be cleared by calling :c:func:`PyErr_Clear`. For example::"
832843
msgstr ""
844+
"Mais avant de le faire, il est important de vérifier que la valeur renvoyée "
845+
"n'est pas ``NULL``. Si c'est le cas, la fonction Python s'est terminée par "
846+
"la levée d'une exception. Si le code C qui a appelé :c:func:"
847+
"`PyObject_CallObject` est appelé depuis Python, il devrait maintenant "
848+
"renvoyer une indication d'erreur à son appelant Python, afin que "
849+
"l'interpréteur puisse imprimer un tracé de pile, ou que le code Python "
850+
"appelant puisse gérer l'exception. Si cela n'est pas possible ou "
851+
"souhaitable, l'exception doit être effacée en appelant :c:func:"
852+
"`PyErr_Clear`. Par exemple ::"
833853

834854
#: extending/extending.rst:589
835855
msgid ""
@@ -857,6 +877,10 @@ msgid ""
857877
"`PyObject_Call`, which supports arguments and keyword arguments. As in the "
858878
"above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::"
859879
msgstr ""
880+
"Vous pouvez également appeler une fonction avec des arguments de mots-clés "
881+
"en utilisant :c:func:`PyObject_Call`, qui supporte les arguments et les "
882+
"arguments de mots-clés. Comme dans l'exemple ci-dessus, nous utilisons :c:"
883+
"func:`Py_BuildValue` pour construire le dictionnaire. ::"
860884

861885
#: extending/extending.rst:630
862886
msgid "Extracting Parameters in Extension Functions"
@@ -917,6 +941,14 @@ msgid ""
917941
"`PyArg_ParseTupleAndKeywords` returns true, otherwise it returns false and "
918942
"raises an appropriate exception."
919943
msgstr ""
944+
"Les paramètres *arg* et *format* sont identiques à ceux de la fonction :c:"
945+
"func:`PyArg_ParseTuple`. Le paramètre *kwdict* est le dictionnaire de mots-"
946+
"clés reçu comme troisième paramètre du *runtime* Python. Le paramètre "
947+
"*kwlist* est une liste de chaînes de caractères terminée par ``NULL`` qui "
948+
"identifie les paramètres ; les noms sont mis en correspondance, de gauche à "
949+
"droite, avec les informations de type de *format*. En cas de succès du "
950+
"processus, :c:func:`PyArg_ParseTupleAndKeywords` renvoie vrai, sinon il "
951+
"renvoie faux et lève une exception appropriée."
920952

921953
#: extending/extending.rst:741
922954
msgid ""
@@ -930,6 +962,8 @@ msgid ""
930962
"Here is an example module which uses keywords, based on an example by Geoff "
931963
"Philbrick (philbrick@hks.com)::"
932964
msgstr ""
965+
"Voici un exemple de module qui utilise des mots-clés, basé sur un exemple de "
966+
"*Geoff Philbrick* (philbrick@hks.com) ::"
933967

934968
#: extending/extending.rst:802
935969
msgid "Building Arbitrary Values"
@@ -962,6 +996,15 @@ msgid ""
962996
"that format unit. To force it to return a tuple of size 0 or one, "
963997
"parenthesize the format string."
964998
msgstr ""
999+
"Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce "
1000+
"dernier nécessite que son premier argument soit un n-uplet (puisque les "
1001+
"listes d'arguments Python sont toujours représentées par des n-uplets en "
1002+
"interne), :c:func:`Py_BuildValue` ne construit pas toujours un n-uplet. Il "
1003+
"n'en construit un que si sa chaîne formatée contient deux unités formatées "
1004+
"ou plus. Si la chaîne formatée est vide, il renvoie ``None`` ; s'il contient "
1005+
"exactement une unité formatée, il renvoie tout objet décrit par cette unité "
1006+
"formatée. Pour le forcer à renvoyer un n-uplet de taille 0 ou 1, mettez la "
1007+
"chaîne formatée entre parenthèses."
9651008

9661009
#: extending/extending.rst:822
9671010
msgid ""
@@ -1054,6 +1097,18 @@ msgid ""
10541097
"in a reference cycle, or referenced from the objects in the cycle, even "
10551098
"though there are no further references to the cycle itself."
10561099
msgstr ""
1100+
"Bien que Python utilise l'implémentation traditionnelle de comptage de "
1101+
"référence, il propose également un détecteur de cycles qui fonctionne pour "
1102+
"détecter les cycles de référence. Cela permet aux applications de ne pas se "
1103+
"soucier de la création de références circulaires directes ou indirectes ; ce "
1104+
"sont les faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement "
1105+
"le comptage de référence. Les cycles de référence sont constitués d'objets "
1106+
"qui contiennent des références (éventuellement indirectes) à eux-mêmes, de "
1107+
"sorte que chaque objet du cycle a un comptage de référence qui n'est pas "
1108+
"nul. Les implémentations typiques de comptage de référence ne sont pas "
1109+
"capables de récupérer la mémoire appartenant à des objets dans un cycle de "
1110+
"référence, ou référencés à partir des objets dans le cycle, même s'il n'y a "
1111+
"pas d'autres références au cycle lui-même."
10571112

10581113
#: extending/extending.rst:911
10591114
msgid ""
@@ -1081,8 +1136,16 @@ msgid ""
10811136
"this purpose (and others), every object also contains a pointer to its type "
10821137
"object."
10831138
msgstr ""
1139+
"Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent "
1140+
"l'incrémentation et la décrémentation du comptage de référence. :c:func:"
1141+
"`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour "
1142+
"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, "
1143+
"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type "
1144+
"objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient "
1145+
"également un pointeur vers son objet type."
10841146

10851147
#: extending/extending.rst:934
1148+
#, fuzzy
10861149
msgid ""
10871150
"The big question now remains: when to use ``Py_INCREF(x)`` and "
10881151
"``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an "
@@ -1094,6 +1157,17 @@ msgid ""
10941157
"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned "
10951158
"reference creates a memory leak."
10961159
msgstr ""
1160+
"La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et "
1161+
"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne "
1162+
"\"possède\" un objet ; cependant, vous pouvez vous approprier une référence "
1163+
"à un objet par :dfn:`own . Le comptage de références d'un objet est "
1164+
"maintenant défini comme le étant le nombre de références à cet objet dont on "
1165+
"est propriétaire . Le propriétaire d'une référence est responsable "
1166+
"d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus nécessaire. La "
1167+
"propriété d'une référence peut être transférée. Il y a trois façons de "
1168+
"disposer d'une référence propriétaire : la transmettre, la stocker, ou "
1169+
"appeler :c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence "
1170+
"propriétaire crée une fuite de mémoire."
10971171

10981172
#: extending/extending.rst:943
10991173
msgid ""
@@ -1114,6 +1188,14 @@ msgid ""
11141188
"code a borrowed reference can be used after the owner from which it was "
11151189
"borrowed has in fact disposed of it."
11161190
msgstr ""
1191+
"L'avantage d'emprunter, plutôt qu'être propriétaire d'une référence est que "
1192+
"vous n'avez pas à vous soucier de disposer de la référence sur tous les "
1193+
"chemins possibles dans le code — en d'autres termes, avec une référence "
1194+
"empruntée, vous ne courez pas le risque de fuites lors d'une sortie "
1195+
"prématurée. L'inconvénient de l'emprunt par rapport à la possession est "
1196+
"qu'il existe certaines situations subtiles où, dans un code apparemment "
1197+
"correct, une référence empruntée peut être utilisée après que le "
1198+
"propriétaire auquel elle a été empruntée l'a en fait éliminée."
11171199

11181200
#: extending/extending.rst:957
11191201
msgid ""
@@ -1206,6 +1288,10 @@ msgid ""
12061288
"invocations of the interpreter, which can cause the owner of a reference to "
12071289
"dispose of it."
12081290
msgstr ""
1291+
"Il existe quelques situations où l'utilisation apparemment inoffensive d'une "
1292+
"référence empruntée peut entraîner des problèmes. Tous ces problèmes sont en "
1293+
"lien avec des invocations implicites de l’interpréteur, et peuvent amener le "
1294+
"propriétaire d'une référence à s'en défaire."
12091295

12101296
#: extending/extending.rst:1020
12111297
msgid ""
@@ -1232,6 +1318,7 @@ msgid ""
12321318
msgstr ""
12331319

12341320
#: extending/extending.rst:1043
1321+
#, fuzzy
12351322
msgid ""
12361323
"Since it is written in Python, the :meth:`__del__` method can execute "
12371324
"arbitrary Python code. Could it perhaps do something to invalidate the "
@@ -1241,6 +1328,13 @@ msgid ""
12411328
"this was the last reference to that object, it would free the memory "
12421329
"associated with it, thereby invalidating ``item``."
12431330
msgstr ""
1331+
"Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du "
1332+
"code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la "
1333+
"référence à ``item`` dans :c:func:`bug' ? Bien sûr ! En supposant que la "
1334+
"liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, "
1335+
"elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en "
1336+
"supposant que ce soit la dernière référence à cet objet, elle libérerait la "
1337+
"mémoire qui lui est associée, invalidant ainsi ``item``."
12441338

12451339
#: extending/extending.rst:1051
12461340
msgid ""
@@ -1283,6 +1377,16 @@ msgid ""
12831377
"``NULL``, there would be a lot of redundant tests and the code would run "
12841378
"more slowly."
12851379
msgstr ""
1380+
"En général, les fonctions qui prennent des références d'objets comme "
1381+
"arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si "
1382+
"vous en donnez comme arguments, elles videront la mémoire vive (ou "
1383+
"provoqueront des vidages ultérieurs de mémoire). Les fonctions qui "
1384+
"renvoient des références d'objets renvoient généralement ``NULL`` uniquement "
1385+
"pour indiquer qu'une exception s'est produite. La raison pour laquelle les "
1386+
"arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent "
1387+
"les objets qu'elles reçoivent à d'autres fonctions --- si chaque fonction "
1388+
"devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le "
1389+
"code s'exécuterait plus lentement."
12861390

12871391
#: extending/extending.rst:1102
12881392
msgid ""
@@ -1367,6 +1471,20 @@ msgid ""
13671471
"if symbols are globally visible, the module whose functions one wishes to "
13681472
"call might not have been loaded yet!"
13691473
msgstr ""
1474+
"À première vue, cela semble facile : il suffit d'écrire les fonctions (sans "
1475+
"les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête "
1476+
"approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous "
1477+
"les modules d'extension étaient toujours liés statiquement avec "
1478+
"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme "
1479+
"des bibliothèques partagées, les symboles définis dans un module peuvent ne "
1480+
"pas être visibles par un autre module. Les détails de la visibilité "
1481+
"dépendent du système d'exploitation ; certains systèmes utilisent un espace "
1482+
"de noms global pour l'interpréteur Python et tous les modules d'extension "
1483+
"(Windows, par exemple), tandis que d'autres exigent une liste explicite des "
1484+
"symboles importés au moment de la liaison des modules (AIX en est un "
1485+
"exemple), ou offrent un choix de stratégies différentes (la plupart des "
1486+
"*Unices*). Et même si les symboles sont globalement visibles, le module dont "
1487+
"on souhaite appeler les fonctions n'est peut-être pas encore chargé !"
13701488

13711489
#: extending/extending.rst:1172
13721490
msgid ""
@@ -1444,6 +1562,13 @@ msgid ""
14441562
"complicated in reality (such as adding \"spam\" to every command). This "
14451563
"function :c:func:`PySpam_System` is also exported to other extension modules."
14461564
msgstr ""
1565+
"Le module d'exportation est une modification du module :mod:`spam` de la "
1566+
"section :ref:`extending-simpleexample`. La fonction :func:`spam.system` "
1567+
"n'appelle pas directement la fonction de la bibliothèque C :c:func:`system`, "
1568+
"mais une fonction :c:func:`PySpam_System`, qui ferait bien sûr quelque chose "
1569+
"de plus compliqué en réalité (comme ajouter du *spam* à chaque commande). "
1570+
"Cette fonction :c:func:`PySpam_System` est également exportée vers d'autres "
1571+
"modules d'extension."
14471572

14481573
#: extending/extending.rst:1225
14491574
msgid ""
@@ -1476,6 +1601,8 @@ msgid ""
14761601
"Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array "
14771602
"would disappear when :func:`PyInit_spam` terminates!"
14781603
msgstr ""
1604+
"Notez que ``PySpam_API`` est déclaré ``statique`` ; sinon le tableau de "
1605+
"pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !"
14791606

14801607
#: extending/extending.rst:1290
14811608
msgid ""
@@ -1524,13 +1651,18 @@ msgid ""
15241651
"The metaphor of \"borrowing\" a reference is not completely correct: the "
15251652
"owner still has a copy of the reference."
15261653
msgstr ""
1654+
"L'expression \"emprunter une référence\" n'est pas tout à fait correcte, car "
1655+
"le propriétaire a toujours une copie de la référence."
15271656

15281657
#: extending/extending.rst:1378
15291658
msgid ""
15301659
"Checking that the reference count is at least 1 **does not work** --- the "
15311660
"reference count itself could be in freed memory and may thus be reused for "
15321661
"another object!"
15331662
msgstr ""
1663+
"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne pas** "
1664+
"--- le compte de référence lui-même pourrait être en mémoire libérée et peut "
1665+
"donc être réutilisé pour un autre objet !"
15341666

15351667
#: extending/extending.rst:1382
15361668
msgid ""

0 commit comments

Comments
 (0)