8000 Workon newtypes tut · python/python-docs-fr@b1e2ddc · GitHub
[go: up one dir, main page]

Skip to content

Commit b1e2ddc

Browse files
committed
Workon newtypes tut
1 parent 87e3d02 commit b1e2ddc

File tree

1 file changed

+72
-16
lines changed

1 file changed

+72
-16
lines changed

extending/newtypes_tutorial.po

Lines changed: 72 additions & 16 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: 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."
2828
msgstr ""
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
3536
msgid "The Basics"
@@ -47,13 +48,14 @@ msgid ""
4748
"functions are called \"type methods\"."
4849
msgstr ""
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
5961
msgid ""
@@ -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."
8284
msgstr ""
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
145147
msgid ""
@@ -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."
172174
msgstr ""
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
175181
msgid ""
@@ -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."
180186
msgstr ""
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
183193
msgid "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
187197
msgid ""
188198
"This line is mandatory boilerplate to initialize the ``ob_base`` field "
189199
"mentioned above. ::"
190200
msgstr ""
201+
"Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné "
202+
"précédemment."
191203

192204
#: extending/newtypes_tutorial.rst:118
193205
msgid ""
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:"
196208
msgstr ""
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
199214
msgid ""
@@ -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. ::"
205220
msgstr ""
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
208228
msgid ""
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."
212232
msgstr ""
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
215239
msgid ""
@@ -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."
226250
msgstr ""
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
229263
msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
230264
msgstr ""
265+
"On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
266+
"type. ::"
231267

232268
#: extending/newtypes_tutorial.rst:157
233269
msgid ""
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."
237273
msgstr ""
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
240280
msgid ""
241281
"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
242282
msgstr ""
283+
"On fournit une *docstring* pour ce type via le membre :c:member:"
284+
"`~PyTypeObject.tp_doc`. ::"
243285

244286
#: extending/newtypes_tutorial.rst:165
245287
msgid ""
@@ -249,31 +291,45 @@ msgid ""
249291
"use the default implementation provided by the API function :c:func:"
250292
"`PyType_GenericNew`. ::"
251293
msgstr ""
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
254301
msgid ""
255302
"Everything else in the file should be familiar, except for some code in :c:"
256303
"func:`PyInit_custom`::"
257304
msgstr ""
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
260309
msgid ""
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``. ::"
264313
msgstr ""
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
267319
msgid ""
268320
"This adds the type to the module dictionary. This allows us to create :"
269321
"class:`Custom` instances by calling the :class:`Custom` class:"
270322
msgstr ""
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
273327
msgid ""
274328
"That's it! All that remains is to build it; put the above code in a file "
275329
"called :file:`custom.c` and:"
276330
msgstr ""
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
279335
msgid "in a file called :file:`setup.py`; then typing"

0 commit comments

Comments
 (0)
0