@@ -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 : 2021-04-27 18:38 +0200\n "
9+ "PO-Revision-Date : 2021-06-07 18:39 +0200\n "
1010"Last-Translator : Julien Palard <julien@palard.fr>\n "
1111"Language-Team : FRENCH <traductions@lists.afpy.org>\n "
1212"Language : fr\n "
@@ -27,9 +27,10 @@ msgid ""
2727"can get started. This document is a gentle introduction to the topic."
2828msgstr ""
2929"Python permet à l'auteur d'un module d'extension C de définir de nouveaux "
30- "types qui peuvent être manipulés depuis du code Python, tel que les types "
31- "natifs :class:`str` et :class:`list`. Un gabarit permet de coder ces types, "
32- "mais quelques subtilités doivent être abordées avant de commencer."
30+ "types qui peuvent être manipulés depuis du code Python, à la manière des "
31+ "types natifs :class:`str` et :class:`list`. Les implémentations de tous les "
32+ "types d'extension ont des similarités, mais quelques subtilités doivent être "
33+ "abordées avant de commencer."
3334
3435#: extending/newtypes_tutorial.rst:24
3536msgid "The Basics"
@@ -47,13 +48,14 @@ msgid ""
4748"functions are called \" type methods\" ."
4849msgstr ""
4950":term:`CPython` considère que tous les objets Python sont des variables de "
50- "type :c:type:`PyObject\\\\ *`, qui sert de type de base pour tous les objets "
51+ "type :c:type:`PyObject\\ *`, qui sert de type de base pour tous les objets "
5152"Python. La structure de :c:type:`PyObject` ne contient que le :term:"
52- "`compteur de références <reference count>` et un pointeur vers un objet de type « type de "
53- "l'objet ». C'est ici que tout se joue : l'objet type détermine quelle fonction "
54- "(C) doit être appelée par l'interpréteur quand, par exemple, un attribut est "
55- "recherché sur un objet, quand une méthode est appelée, ou quand l'objet est multiplié "
56- "par un autre objet. Ces fonctions C sont appelées des « méthodes de type »."
53+ "`compteur de références <reference count>` et un pointeur vers un objet de "
54+ "type « type de l'objet ». C'est ici que tout se joue : l'objet type "
55+ "détermine quelle fonction C doit être appelée par l'interpréteur quand, par "
56+ "exemple, un attribut est recherché sur un objet, quand une méthode est "
57+ "appelée, ou quand l'objet est multiplié par un autre objet. Ces fonctions C "
58+ "sont appelées des « méthodes de type »."
5759
5860#: extending/newtypes_tutorial.rst:35
5961msgid ""
@@ -80,7 +82,7 @@ msgid ""
8082"allows defining heap-allocated extension types using the :c:func:"
8183"`PyType_FromSpec` function, which isn't covered in this tutorial."
8284msgstr ""
83- "Ce qui est montré ici, c' est la manière traditionnelle de définir des types "
85+ "Ce qui est montré ici est la manière traditionnelle de définir des types "
8486"d'extension *statiques*, et cela convient dans la majorité des cas. L'API C "
8587"permet aussi de définir des types alloués sur le tas, via la fonction :c:"
8688"func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel."
@@ -136,10 +138,10 @@ msgstr ""
136138"C'est ce qu'un objet ``Cusom`` contient. ``PyObject_HEAD`` est "
137139"obligatoirement au début de chaque structure d'objet et définit un champ "
138140"appelé ``ob_base`` de type :c:type:`PyObject`, contenant un pointeur vers un "
139- "objet type et un compteur de références (on peut y accéder en "
140- "utilisant les macros :c:macro:`Py_REFCNT` et :c:macro:`Py_TYPE`, "
141- "respectivement). La raison d'être de ces macros est d'abstraire l'agencement "
142- "de la structure, et ainsi de permettre l'ajout de champs en mode débogage."
141+ "objet type et un compteur de références (on peut y accéder en utilisant les "
142+ "macros :c:macro:`Py_REFCNT` et :c:macro:`Py_TYPE`, respectivement). La "
143+ "raison d'être de ces macros est d'abstraire l'agencement de la structure, et "
144+ "ainsi de permettre l'ajout de champs en mode débogage."
143145
144146#: extending/newtypes_tutorial.rst:75
145147msgid ""
@@ -170,6 +172,10 @@ msgid ""
170172"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
171173"also to avoid caring about the fields' declaration order."
172174msgstr ""
175+ "Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
176+ "remplir la structure, comme ci-dessus, afin d'éviter d'avoir à nommer les "
177+ "champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas "
178+ "vous soucier de leur ordre."
173179
174180#: extending/newtypes_tutorial.rst:104
175181msgid ""
@@ -178,22 +184,31 @@ msgid ""
178184"fields will be filled with zeros by the C compiler, and it's common practice "
179185"to not specify them explicitly unless you need them."
180186msgstr ""
187+ "La définition de :c:type:`PyTypeObject` dans :file:`object.h` contient en "
188+ "fait bien plus de :ref:`champs <type-structs>` que la définition ci-dessus. "
189+ "Les champs restants sont mis à zéro par le compilateur C, et c'est une "
190+ "pratique répandue de ne pas spécifier les champs dont vous n'avez pas besoin."
181191
182192#: extending/newtypes_tutorial.rst:109
183193msgid "We're going to pick it apart, one field at a time::"
184- msgstr ""
194+ msgstr "Regardons les champs de cette structures, un par un :: "
185195
186196#: extending/newtypes_tutorial.rst:113
187197msgid ""
188198"This line is mandatory boilerplate to initialize the ``ob_base`` field "
189199"mentioned above. ::"
190200msgstr ""
201+ "Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné "
202+ "précédemment."
191203
192204#: extending/newtypes_tutorial.rst:118
193205msgid ""
194206"The name of our type. This will appear in the default textual "
195207"representation of our objects and in some error messages, for example:"
196208msgstr ""
209+ "C'est le nom de notre type. Il apparaît dans la représentation textuelle par "
210+ "défaut de nos objets, ainsi que dans quelques messages d'erreur, par "
211+ "exemple :"
197212
198213#: extending/newtypes_tutorial.rst:128
199214msgid ""
@@ -203,13 +218,22 @@ msgid ""
203218"`custom.Custom`. Using the real dotted import path is important to make your "
204219"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
205220msgstr ""
221+ "Notez que le nom comporte un point : il inclut le nom du module et le nom du "
222+ "type. Dans ce cas le module est :mod:`custom`, et le type est :class:"
223+ "`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer "
224+ "correctement son type, avec le point, est important pour le rendre "
225+ "compatible avec :mod:`pydoc` et :mod:`pickle`. ::"
206226
207227#: extending/newtypes_tutorial.rst:137
208228msgid ""
209229"This is so that Python knows how much memory to allocate when creating new :"
210230"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
211231"used for variable-sized objects and should otherwise be zero."
212232msgstr ""
233+ "C'est pour que Python sache combien de mémoire allouer à la création d'une "
234+ "nouvelle instance de :class:`Custom`. :c:member:`~PyTypeObject.tp_itemsize` "
235+ "n'est utilisé que pour les objets de taille variable, sinon il doit rester à "
236+ "zéro."
213237
214238#: extending/newtypes_tutorial.rst:143
215239msgid ""
@@ -224,22 +248,40 @@ msgid ""
224248"type will be :class:`object`, or else you will be adding data members to "
225249"your base type, and therefore increasing its size."
226250msgstr ""
251+ "Si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
252+ "votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, "
253+ "vous pourriez rencontrer des problèmes avec l'héritage multiple. Une sous-"
254+ "classe Python de votre type devra lister votre type en premier dans son :"
255+ "attr:`~class.__bases__`, sans quoi il ne sera pas capable d'appeler la "
256+ "méthode :meth:`__new__` de votre type sans erreur. Vous pouvez éviter ce "
257+ "problème en vous assurant que votre type a un :c:member:`~PyTypeObject."
258+ "tp_basicsize` plus grand que son parent. La plupart du temps ce sera vrai "
259+ "(soit son parent sera :class:`object`, soit vous ajouterez des attributs à "
260+ "votre type, augmentant ainsi sa taille)."
227261
228262#: extending/newtypes_tutorial.rst:153
229263msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
230264msgstr ""
265+ "On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
266+ "type. ::"
231267
232268#: extending/newtypes_tutorial.rst:157
233269msgid ""
234270"All types should include this constant in their flags. It enables all of "
235271"the members defined until at least Python 3.3. If you need further members, "
236272"you will need to OR the corresponding flags."
237273msgstr ""
274+ "Chaque type devrait inclure cette constante dans ses options : elle active "
275+ "tous les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de "
276+ "plus de membres, vous pouvez la combiner à d'autres constantes avec un *ou* "
277+ "binaire."
238278
239279#: extending/newtypes_tutorial.rst:161
240280msgid ""
241281"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
242282msgstr ""
283+ "On fournit une *docstring* pour ce type via le membre :c:member:"
284+ "`~PyTypeObject.tp_doc`. ::"
243285
244286#: extending/newtypes_tutorial.rst:165
245287msgid ""
@@ -249,31 +291,45 @@ msgid ""
249291"use the default implementation provided by the API function :c:func:"
250292"`PyType_GenericNew`. ::"
251293msgstr ""
294+ "Pour permettre la création d'une instance, nous devons fournir un *handler* :"
295+ "c:member:`~PyTypeObject.tp_new`, qui est l'équivalent de la méthode Python :"
296+ "meth:`__new__`, mais elle a besoin d'être spécifiée explicitement. Dans ce "
297+ "cas, on se contente de l'implémentation par défaut fournie par la fonction :"
298+ "c:func:`PyType_GenericNew` de l'API."
252299
253300#: extending/newtypes_tutorial.rst:172
254301msgid ""
255302"Everything else in the file should be familiar, except for some code in :c:"
256303"func:`PyInit_custom`::"
257304msgstr ""
305+ "Le reste du fichier doit vous être familier, en dehors du code de :c:func:"
306+ "`PyInit_custom` ::"
258307
259308#: extending/newtypes_tutorial.rst:178
260309msgid ""
261310"This initializes the :class:`Custom` type, filling in a number of members to "
262311"the appropriate default values, including :attr:`ob_type` that we initially "
263312"set to ``NULL``. ::"
264313msgstr ""
314+ "Il initialise le type :class:`Custom`, en assignant quelques membres à leurs "
315+ "valeurs par défaut, tel que :attr:`ob_type` qui valait initialement "
316+ "``NULL``. ::"
265317
266318#: extending/newtypes_tutorial.rst:189
267319msgid ""
268320"This adds the type to the module dictionary. This allows us to create :"
269321"class:`Custom` instances by calling the :class:`Custom` class:"
270322msgstr ""
323+ "Ici on ajoute le type au dictionnaire du module. Cela permet de créer une "
324+ "instance de :class:`Custom` en appelant la classe :class:`Custom` :"
271325
272326#: extending/newtypes_tutorial.rst:197
273327msgid ""
274328"That's it! All that remains is to build it; put the above code in a file "
275329"called :file:`custom.c` and:"
276330msgstr ""
331+ "C'est tout ! Il ne reste plus qu'à compiler, placez le code ci-dessus dans "
332+ "un fichier :file:`custom.c` et :"
277333
278334#: extending/newtypes_tutorial.rst:206
279335msgid "in a file called :file:`setup.py`; then typing"
0 commit comments