@@ -6,8 +6,8 @@ msgstr ""
66"Project-Id-Version : Python 3\n "
77"Report-Msgid-Bugs-To : \n "
88"POT-Creation-Date : 2021-09-23 16:16+0200\n "
9- "PO-Revision-Date : 2018-06-17 10:15 +0200\n "
10- "Last-Translator : FULL NAME <EMAIL@ADDRESS >\n "
9+ "PO-Revision-Date : 2021-09-25 11:25 +0200\n "
10+ "Last-Translator : Julien Palard <julien@palard.fr >\n "
1111"Language-Team : FRENCH <traductions@lists.afpy.org>\n "
1212"Language : fr\n "
1313"MIME-Version : 1.0\n "
@@ -16,7 +16,7 @@ msgstr ""
1616
1717#: extending/newtypes_tutorial.rst:7
1818msgid "Defining Extension Types: Tutorial"
19- msgstr ""
19+ msgstr "Tutoriel : définir des types dans des extensions "
2020
2121#: extending/newtypes_tutorial.rst:14
2222msgid ""
@@ -26,10 +26,15 @@ msgid ""
2626"pattern, but there are some details that you need to understand before you "
2727"can get started. This document is a gentle introduction to the topic."
2828msgstr ""
29+ "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, à 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."
2934
3035#: extending/newtypes_tutorial.rst:24
3136msgid "The Basics"
32- msgstr ""
37+ msgstr "Les bases "
3338
3439#: extending/newtypes_tutorial.rst:26
3540msgid ""
@@ -42,19 +47,33 @@ msgid ""
4247"an object, a method called, or it is multiplied by another object. These C "
4348"functions are called \" type methods\" ."
4449msgstr ""
50+ ":term:`CPython` considère que tous les objets Python sont des variables de "
51+ "type :c:type:`PyObject\\ *`, qui sert de type de base pour tous les objets "
52+ "Python. La structure de :c:type:`PyObject` ne contient que le :term:"
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 »."
4559
4660#: extending/newtypes_tutorial.rst:35
4761msgid ""
4862"So, if you want to define a new extension type, you need to create a new "
4963"type object."
5064msgstr ""
65+ "Donc, pour définir un nouveau type dans une extension, vous devez créer un "
66+ "nouvel objet type."
5167
5268#: extending/newtypes_tutorial.rst:38
5369msgid ""
5470"This sort of thing can only be explained by example, so here's a minimal, "
5571"but complete, module that defines a new type named :class:`Custom` inside a "
5672"C extension module :mod:`custom`:"
5773msgstr ""
74+ "Ce genre de chose ne s'explique correctement qu'avec des exemples, voici "
75+ "donc un module minimaliste mais suffisant qui définit un nouveau type nommé :"
76+ "class:`Custom` dans le module d'extension :mod:`custom` : "
5877
5978#: extending/newtypes_tutorial.rst:43
6079msgid ""
@@ -63,35 +82,49 @@ msgid ""
6382"allows defining heap-allocated extension types using the :c:func:"
6483"`PyType_FromSpec` function, which isn't covered in this tutorial."
6584msgstr ""
85+ "Ce qui est montré ici est la manière traditionnelle de définir des types "
86+ "d'extension *statiques*, et cela convient dans la majorité des cas. L'API C "
87+ "permet aussi de définir des types alloués sur le tas, via la fonction :c:"
88+ "func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel."
6689
6790#: extending/newtypes_tutorial.rst:50
6891msgid ""
6992"Now that's quite a bit to take in at once, but hopefully bits will seem "
7093"familiar from the previous chapter. This file defines three things:"
7194msgstr ""
95+ "C'est un peu long, mais vous devez déjà reconnaître quelques morceaux "
96+ "expliqués au chapitre précédent. Ce fichier définit trois choses :"
7297
7398#: extending/newtypes_tutorial.rst:53
7499msgid ""
75100"What a :class:`Custom` **object** contains: this is the ``CustomObject`` "
76101"struct, which is allocated once for each :class:`Custom` instance."
77102msgstr ""
103+ "Ce qu'un **objet** :class:`Custom` contient : c'est la structure "
104+ "``CustomObject``, qui est allouée une fois pour chaque instance de :class:"
105+ "`Custom`."
78106
79107#: extending/newtypes_tutorial.rst:55
80108msgid ""
81109"How the :class:`Custom` **type** behaves: this is the ``CustomType`` struct, "
82110"which defines a set of flags and function pointers that the interpreter "
83111"inspects when specific operations are requested."
84112msgstr ""
113+ "Comment le **type** :class:`Custom` se comporte : c'est la structure "
114+ "``CustomType``, qui définit l'ensemble des options et pointeurs de fonction "
115+ "utilisés par l'interpréteur."
85116
86117#: extending/newtypes_tutorial.rst:58
87118msgid ""
88119"How to initialize the :mod:`custom` module: this is the ``PyInit_custom`` "
89120"function and the associated ``custommodule`` struct."
90121msgstr ""
122+ "Comment initialiser le module :mod:`custom` : c'est la fonction "
123+ "``PyInit_custom`` et la structure associée ``custommodule``."
91124
92125#: extending/newtypes_tutorial.rst:61
93126msgid "The first bit is::"
94- msgstr ""
127+ msgstr "Commençons par :: "
95128
96129#: extending/newtypes_tutorial.rst:67
97130msgid ""
@@ -103,30 +136,47 @@ msgid ""
103136"abstract away the layout and to enable additional fields in :ref:`debug "
104137"builds <debug-build>`."
105138msgstr ""
139+ "C'est ce qu'un objet ``Custom`` contient. ``PyObject_HEAD`` est "
140+ "obligatoirement au début de chaque structure d'objet et définit un champ "
141+ "appelé ``ob_base`` de type :c:type:`PyObject`, contenant un pointeur vers un "
142+ "objet type et un compteur de références (on peut y accéder en utilisant les "
143+ "macros :c:macro:`Py_TYPE` et :c:macro:`Py_REFCNT`, respectivement). La "
144+ "raison d'être de ces macros est d'abstraire l'agencement de la structure, et "
145+ "ainsi de permettre l'ajout de champs en :ref:`mode débogage <debug-build>`."
106146
107147#: extending/newtypes_tutorial.rst:76
108148msgid ""
109149"There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be "
110150"wary of adding one by accident: some compilers will complain."
111151msgstr ""
152+ "Il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. "
153+ "Attention à ne pas l'ajouter par accident : certains compilateurs pourraient "
154+ "s'en plaindre."
112155
113156#: extending/newtypes_tutorial.rst:79
114157msgid ""
115158"Of course, objects generally store additional data besides the standard "
116159"``PyObject_HEAD`` boilerplate; for example, here is the definition for "
117160"standard Python floats::"
118161msgstr ""
162+ "Bien sûr, les objets ajoutent généralement des données supplémentaires après "
163+ "l'entête standard ``PyObject_HEAD``. Par exemple voici la définition du type "
164+ "standard Python ``float`` ::"
119165
120166#: extending/newtypes_tutorial.rst:88
121167msgid "The second bit is the definition of the type object. ::"
122- msgstr ""
168+ msgstr "La deuxième partie est la définition de l'objet type :: "
123169
124170#: extending/newtypes_tutorial.rst:101
125171msgid ""
126172"We recommend using C99-style designated initializers as above, to avoid "
127173"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
128174"also to avoid caring about the fields' declaration order."
129175msgstr ""
176+ "Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
177+ "remplir la structure, comme ci-dessus, afin d'éviter d'avoir à lister les "
178+ "champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas "
179+ "vous soucier de leur ordre."
130180
131181#: extending/newtypes_tutorial.rst:105
132182msgid ""
@@ -135,22 +185,31 @@ msgid ""
135185"fields will be filled with zeros by the C compiler, and it's common practice "
136186"to not specify them explicitly unless you need them."
137187msgstr ""
188+ "La définition de :c:type:`PyTypeObject` dans :file:`object.h` contient en "
189+ "fait bien plus de :ref:`champs <type-structs>` que la définition ci-dessus. "
190+ "Les champs restants sont mis à zéro par le compilateur C, et c'est une "
191+ "pratique répandue de ne pas spécifier les champs dont vous n'avez pas besoin."
138192
139193#: extending/newtypes_tutorial.rst:110
140194msgid "We're going to pick it apart, one field at a time::"
141- msgstr ""
195+ msgstr "Regardons les champs de cette structure, un par un :: "
142196
143197#: extending/newtypes_tutorial.rst:114
144198msgid ""
145199"This line is mandatory boilerplate to initialize the ``ob_base`` field "
146200"mentioned above. ::"
147201msgstr ""
202+ "Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné "
203+ "précédemment."
148204
149205#: extending/newtypes_tutorial.rst:119
150206msgid ""
151207"The name of our type. This will appear in the default textual "
152208"representation of our objects and in some error messages, for example:"
153209msgstr ""
210+ "C'est le nom de notre type. Il apparaît dans la représentation textuelle par "
211+ "défaut de nos objets, ainsi que dans quelques messages d'erreur, par "
212+ "exemple :"
154213
155214#: extending/newtypes_tutorial.rst:129
156215msgid ""
@@ -160,13 +219,22 @@ msgid ""
160219"`custom.Custom`. Using the real dotted import path is important to make your "
161220"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
162221msgstr ""
222+ "Notez que le nom comporte un point : il inclut le nom du module et le nom du "
223+ "type. Dans ce cas le module est :mod:`custom`, et le type est :class:"
224+ "`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer "
225+ "correctement son type, avec le point, est important pour le rendre "
226+ "compatible avec :mod:`pydoc` et :mod:`pickle`. ::"
163227
164228#: extending/newtypes_tutorial.rst:138
165229msgid ""
166230"This is so that Python knows how much memory to allocate when creating new :"
167231"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
168232"used for variable-sized objects and should otherwise be zero."
169233msgstr ""
234+ "C'est pour que Python sache combien de mémoire allouer à la création d'une "
235+ "nouvelle instance de :class:`Custom`. :c:member:`~PyTypeObject.tp_itemsize` "
236+ "n'est utilisé que pour les objets de taille variable, sinon il doit rester à "
237+ "zéro."
170238
171239#: extending/newtypes_tutorial.rst:144
172240msgid ""
@@ -181,22 +249,40 @@ msgid ""
181249"type will be :class:`object`, or else you will be adding data members to "
182250"your base type, and therefore increasing its size."
183251msgstr ""
252+ "Si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
253+ "votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, "
254+ "vous rencontrerez des problèmes avec l'héritage multiple. Une sous-classe "
255+ "Python de votre type devra lister votre type en premier dans son :attr:"
256+ "`~class.__bases__`, sans quoi elle ne sera pas capable d'appeler la méthode :"
257+ "meth:`__new__` de votre type sans erreur. Vous pouvez éviter ce problème en "
258+ "vous assurant que votre type a un :c:member:`~PyTypeObject.tp_basicsize` "
259+ "plus grand que son parent. La plupart du temps ce sera vrai (soit son parent "
260+ "sera :class:`object`, soit vous ajouterez des attributs à votre type, "
261+ "augmentant ainsi sa taille)."
184262
185263#: extending/newtypes_tutorial.rst:154
186264msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
187265msgstr ""
266+ "On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
267+ "type. ::"
188268
189269#: extending/newtypes_tutorial.rst:158
190270msgid ""
191271"All types should include this constant in their flags. It enables all of "
192272"the members defined until at least Python 3.3. If you need further members, "
193273"you will need to OR the corresponding flags."
194274msgstr ""
275+ "Chaque type doit inclure cette constante dans ses options : elle active tous "
276+ "les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de plus "
277+ "de membres, vous pouvez la combiner à d'autres constantes avec un *ou* "
278+ "binaire."
195279
196280#: extending/newtypes_tutorial.rst:162
197281msgid ""
198282"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
199283msgstr ""
284+ "On fournit une *docstring* pour ce type via le membre :c:member:"
285+ "`~PyTypeObject.tp_doc`. ::"
200286
201287#: extending/newtypes_tutorial.rst:166
202288msgid ""
@@ -206,31 +292,45 @@ msgid ""
206292"use the default implementation provided by the API function :c:func:"
207293"`PyType_GenericNew`. ::"
208294msgstr ""
295+ "Pour permettre la création d'une instance, nous devons fournir un *handler* :"
296+ "c:member:`~PyTypeObject.tp_new`, qui est l'équivalent de la méthode Python :"
297+ "meth:`__new__`, mais elle a besoin d'être spécifiée explicitement. Dans ce "
298+ "cas, on se contente de l'implémentation par défaut fournie par la fonction :"
299+ "c:func:`PyType_GenericNew` de l'API."
209300
210301#: extending/newtypes_tutorial.rst:173
211302msgid ""
212303"Everything else in the file should be familiar, except for some code in :c:"
213304"func:`PyInit_custom`::"
214305msgstr ""
306+ "Le reste du fichier doit vous être familier, en dehors du code de :c:func:"
307+ "`PyInit_custom` ::"
215308
216309#: extending/newtypes_tutorial.rst:179
217310msgid ""
218311"This initializes the :class:`Custom` type, filling in a number of members to "
219312"the appropriate default values, including :attr:`ob_type` that we initially "
220313"set to ``NULL``. ::"
221314msgstr ""
315+ "Il initialise le type :class:`Custom`, en assignant quelques membres à leurs "
316+ "valeurs par défaut, tel que :attr:`ob_type` qui valait initialement "
317+ "``NULL``. ::"
222318
223319#: extending/newtypes_tutorial.rst:190
224320msgid ""
225321"This adds the type to the module dictionary. This allows us to create :"
226322"class:`Custom` instances by calling the :class:`Custom` class:"
227323msgstr ""
324+ "Ici on ajoute le type au dictionnaire du module. Cela permet de créer une "
325+ "instance de :class:`Custom` en appelant la classe :class:`Custom` :"
228326
229327#: extending/newtypes_tutorial.rst:198
230328msgid ""
231329"That's it! All that remains is to build it; put the above code in a file "
232330"called :file:`custom.c` and:"
233331msgstr ""
332+ "C'est tout ! Il ne reste plus qu'à compiler, placez le code ci-dessus dans "
333+ "un fichier :file:`custom.c` et :"
234334
235335#: extending/newtypes_tutorial.rst:207
236336msgid "in a file called :file:`setup.py`; then typing"
0 commit comments