Traduction de library/dataclasses.po (#1687)

* Traduction de library/dataclasses.po

* Suggestions de Christophe Nanteuil

Co-authored-by: Christophe Nanteuil <35002064+christopheNan@users.noreply.github.com>

* powrap library/dataclasses.po

* Petite clarification

* Correction d'une coquille

Co-authored-by: Christophe Nanteuil <35002064+christopheNan@users.noreply.github.com>
This commit is contained in:
Jean-Abou-Samra 2021-09-22 09:57:31 +02:00 committed by GitHub
parent 073a3a277e
commit 3266bae14e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n" "Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-19 22:36+0200\n" "POT-Creation-Date: 2021-05-19 22:36+0200\n"
"PO-Revision-Date: 2018-12-24 14:53+0100\n" "PO-Revision-Date: 2021-09-21 09:00+0200\n"
"Last-Translator: Julien Palard <julien@palard.fr>\n" "Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n" "Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.1.1\n" "X-Generator: Poedit 2.4.1\n"
#: library/dataclasses.rst:2 #: library/dataclasses.rst:2
msgid ":mod:`dataclasses` --- Data Classes" msgid ":mod:`dataclasses` --- Data Classes"
@ -36,19 +36,18 @@ msgstr ""
"lutilisateur. Ces classes ont été décrites dans la :pep:`557`." "lutilisateur. Ces classes ont été décrites dans la :pep:`557`."
#: library/dataclasses.rst:19 #: library/dataclasses.rst:19
#, fuzzy
msgid "" msgid ""
"The member variables to use in these generated methods are defined using :" "The member variables to use in these generated methods are defined using :"
"pep:`526` type annotations. For example, this code::" "pep:`526` type annotations. For example, this code::"
msgstr "" msgstr ""
"Les variables membres à utiliser dans ces méthodes générées sont définies en " "Les variables membres à utiliser dans ces méthodes générées sont définies en "
"utilisant les annotations de type :pep:`526`. Par exemple, ce code ::" "utilisant les annotations de type :pep:`526`. Par exemple ::"
#: library/dataclasses.rst:34 #: library/dataclasses.rst:34
#, fuzzy
msgid "will add, among other things, a :meth:`__init__` that looks like::" msgid "will add, among other things, a :meth:`__init__` that looks like::"
msgstr "" msgstr ""
"Ajoute, entre autres choses, une méthode :meth:`__init__` qui ressemble à ::" "Ce code ajoute à la classe, entre autres choses, une méthode :meth:"
"`__init__` qui ressemble à ::"
#: library/dataclasses.rst:41 #: library/dataclasses.rst:41
msgid "" msgid ""
@ -56,35 +55,33 @@ msgid ""
"directly specified in the ``InventoryItem`` definition shown above." "directly specified in the ``InventoryItem`` definition shown above."
msgstr "" msgstr ""
"Il est important de noter que cette méthode est ajoutée automatiquement dans " "Il est important de noter que cette méthode est ajoutée automatiquement dans "
"la classe : elle nest pas à écrire dans la définition de ``InventoryItem`` " "la classe. Elle nest jamais écrite dans la définition de ``InventoryItem``."
"ci-dessus."
#: library/dataclasses.rst:47 #: library/dataclasses.rst:47
msgid "Module-level decorators, classes, and functions" msgid "Module-level decorators, classes, and functions"
msgstr "Décorateurs, classes et fonctions au niveau du module" msgstr "Décorateurs, classes et fonctions du module"
#: library/dataclasses.rst:51 #: library/dataclasses.rst:51
msgid "" msgid ""
"This function is a :term:`decorator` that is used to add generated :term:" "This function is a :term:`decorator` that is used to add generated :term:"
"`special method`\\s to classes, as described below." "`special method`\\s to classes, as described below."
msgstr "" msgstr ""
"Cette fonction est un :term:`décorateur` qui est utilisé pour ajouter les :" "Cette fonction est un :term:`décorateur <decorator>` qui ajoute aux classes "
"term:`méthodes spéciales <special method>` générées aux classes, comme " "des :term:`méthodes spéciales <special method>` générées automatiquement. "
"décrit ci-dessous." "Voici une description plus détaillée."
#: library/dataclasses.rst:54 #: library/dataclasses.rst:54
#, fuzzy
msgid "" msgid ""
"The :func:`dataclass` decorator examines the class to find ``field``\\s. A " "The :func:`dataclass` decorator examines the class to find ``field``\\s. A "
"``field`` is defined as a class variable that has a :term:`type annotation " "``field`` is defined as a class variable that has a :term:`type annotation "
"<variable annotation>`. With two exceptions described below, nothing in :" "<variable annotation>`. With two exceptions described below, nothing in :"
"func:`dataclass` examines the type specified in the variable annotation." "func:`dataclass` examines the type specified in the variable annotation."
msgstr "" msgstr ""
"Le décorateur :func:`dataclass` examine la classe pour trouver des ``champs``" "Le décorateur :func:`dataclass` examine la classe pour trouver des champs. "
"\\s. Un ``champ`` est défini comme une variable de classe qui possède une :" "Un champ est défini comme une variable de classe qui possède une :term:"
"term:`annotation de type <variable annotation>`. À deux exceptions près " "`annotation de type <variable annotation>`. À deux exceptions près décrites "
"décrites plus bas, il ny a rien dans :func:`dataclass` qui examine le type " "plus bas, :func:`dataclass` ne prend pas en considération le type donné dans "
"spécifié dans lannotation de variable." "l'annotation."
#: library/dataclasses.rst:60 #: library/dataclasses.rst:60
msgid "" msgid ""
@ -95,7 +92,6 @@ msgstr ""
"champs dans la définition de la classe." "champs dans la définition de la classe."
#: library/dataclasses.rst:63 #: library/dataclasses.rst:63
#, fuzzy
msgid "" msgid ""
"The :func:`dataclass` decorator will add various \"dunder\" methods to the " "The :func:`dataclass` decorator will add various \"dunder\" methods to the "
"class, described below. If any of the added methods already exist in the " "class, described below. If any of the added methods already exist in the "
@ -103,11 +99,10 @@ msgid ""
"decorator returns the same class that it is called on; no new class is " "decorator returns the same class that it is called on; no new class is "
"created." "created."
msgstr "" msgstr ""
"Le décorateur :func:`dataclass` ajoute diverses méthodes « spéciales » à la " "Le décorateur :func:`dataclass` ajoute diverses méthodes spéciales à la "
"classe, décrites ci-après. Si lune des méthodes ajoutées existe déjà dans " "classe, décrites ci-après. Si lune des méthodes ajoutées existe déjà dans "
"la classe, le comportement dépend des paramètres, comme documenté ci-" "la classe, le comportement dépend des paramètres. Le décorateur renvoie la "
"dessous. Le décorateur renvoie la classe sur laquelle il est appelé ; il ny " "classe sur laquelle il est appelé ; aucune nouvelle classe n'est créée."
"a pas de nouvelle classe créée."
#: library/dataclasses.rst:69 #: library/dataclasses.rst:69
msgid "" msgid ""
@ -115,20 +110,20 @@ msgid ""
"it acts as if it has the default values documented in this signature. That " "it acts as if it has the default values documented in this signature. That "
"is, these three uses of :func:`dataclass` are equivalent::" "is, these three uses of :func:`dataclass` are equivalent::"
msgstr "" msgstr ""
"Si :func:`dataclass` est utilisé comme simple décorateur sans paramètres, il " "Si :func:`dataclass` est utilisé directement, il se comporte comme si on "
"se comporte comme si on lavait appelé avec les valeurs par défaut présentes " "lavait appelé sans argument (c.-à-d. en laissant les valeurs par défaut de "
"en signature. Ainsi, les trois usages suivants de :func:`dataclass` sont " "sa signature). Ainsi, les trois usages suivants de :func:`dataclass` sont "
"équivalents ::" "équivalents ::"
#: library/dataclasses.rst:86 #: library/dataclasses.rst:86
msgid "The parameters to :func:`dataclass` are:" msgid "The parameters to :func:`dataclass` are:"
msgstr "Les paramètres de :func:`dataclass` sont :" msgstr "Les paramètres de :func:`dataclass` sont les suivants :"
#: library/dataclasses.rst:88 #: library/dataclasses.rst:88
msgid "" msgid ""
"``init``: If true (the default), a :meth:`__init__` method will be generated." "``init``: If true (the default), a :meth:`__init__` method will be generated."
msgstr "" msgstr ""
"``init``: Si vrai (par défaut), une méthode :meth:`__init__` est générée." "*init* : si vrai (par défaut), une méthode :meth:`__init__` est générée."
#: library/dataclasses.rst:91 #: library/dataclasses.rst:91
msgid "" msgid ""
@ -146,12 +141,12 @@ msgid ""
"example: ``InventoryItem(name='widget', unit_price=3.0, " "example: ``InventoryItem(name='widget', unit_price=3.0, "
"quantity_on_hand=10)``." "quantity_on_hand=10)``."
msgstr "" msgstr ""
"``repr``: Si vrai (par défaut), une méthode :meth:`__repr__` sera générée. " "*repr* : si vrai (par défaut), une méthode :meth:`__repr__` est générée. La "
"La chaîne de représentation comportera le nom de la classe et le nom ainsi " "chaîne de représentation comporte le nom de la classe et le nom ainsi que la "
"que la représentation de chaque champ, suivant leur ordre de définition. " "représentation de chaque champ, suivant leur ordre de définition. Les "
"Les champs marqués comme exclus (voir ``Field`` ci-dessous) de la " "champs marqués comme exclus de la représentation (voir ``Field`` ci-dessous) "
"représentation ne sont pas inclus. Par exemple : " "sont ignorés. Par exemple : ``InventoryItem(name='widget', unit_price=3.0, "
"``InventoryItem(name='widget', unit_price=3.0, quantity_on_hand=10)``." "quantity_on_hand=10)``."
#: library/dataclasses.rst:101 #: library/dataclasses.rst:101
msgid "" msgid ""
@ -166,9 +161,9 @@ msgid ""
"This method compares the class as if it were a tuple of its fields, in " "This method compares the class as if it were a tuple of its fields, in "
"order. Both instances in the comparison must be of the identical type." "order. Both instances in the comparison must be of the identical type."
msgstr "" msgstr ""
"``eq``: Si vrai (par défaut), une méthode :meth:`__eq__` est générée. Cette " "*eq* : si vrai (par défaut), une méthode :meth:`__eq__` est générée. Cette "
"méthode permet de comparer les instances de la classe comme sil sagissait " "méthode permet de comparer les instances de la classe comme si elles étaient "
"dun *n*-uplet de ses champs, dans lordre. Les deux instances dans la " "des *n*-uplet de leurs champs, pris dans lordre. Les deux instances dans la "
"comparaison doivent être de même type." "comparaison doivent être de même type."
#: library/dataclasses.rst:109 #: library/dataclasses.rst:109
@ -185,15 +180,14 @@ msgid ""
"instances in the comparison must be of the identical type. If ``order`` is " "instances in the comparison must be of the identical type. If ``order`` is "
"true and ``eq`` is false, a :exc:`ValueError` is raised." "true and ``eq`` is false, a :exc:`ValueError` is raised."
msgstr "" msgstr ""
"``order``: Si vrai (``False`` par défaut), les méthodes :meth:`__lt__`, :" "*order* : si vrai (``False`` par défaut), les méthodes :meth:`__lt__`, :meth:"
"meth:`__le__`, :meth:`__gt__`, et :meth:`__ge__` sont générées. Elles " "`__le__`, :meth:`__gt__`, et :meth:`__ge__` sont générées. Elles permettent "
"permettent de comparer les instances de la classe en les considérant comme " "de comparer les instances de la classe en les considérant comme des *n*-"
"des *n*-uplets, dans lordre de définition des champs. Chaque instance dans " "uplets, dans lordre de définition des champs. Toutes les instances dans la "
"la comparaison doit être de même type. Si ``order`` est vrai mais que " "comparaison doivent être de même type. Si ``order`` est vrai mais que "
"``eq`` est faux, une :exc:`ValueError` est levée." "``eq`` est faux, une :exc:`ValueError` est levée."
#: library/dataclasses.rst:119 #: library/dataclasses.rst:119
#, fuzzy
msgid "" msgid ""
"If the class already defines any of :meth:`__lt__`, :meth:`__le__`, :meth:" "If the class already defines any of :meth:`__lt__`, :meth:`__le__`, :meth:"
"`__gt__`, or :meth:`__ge__`, then :exc:`TypeError` is raised." "`__gt__`, or :meth:`__ge__`, then :exc:`TypeError` is raised."
@ -207,8 +201,8 @@ msgid ""
"``unsafe_hash``: If ``False`` (the default), a :meth:`__hash__` method is " "``unsafe_hash``: If ``False`` (the default), a :meth:`__hash__` method is "
"generated according to how ``eq`` and ``frozen`` are set." "generated according to how ``eq`` and ``frozen`` are set."
msgstr "" msgstr ""
"``unsafe_hash``: Si ``False`` (par défaut), une méthode :meth:`__hash__` est " "*unsafe_hash* : si ``False`` (par défaut), une méthode :meth:`__hash__` est "
"générée et son comportement dépend des valeurs de ``eq`` et ``frozen``." "générée et son comportement dépend des valeurs de *eq* et *frozen*."
#: library/dataclasses.rst:126 #: library/dataclasses.rst:126
msgid "" msgid ""
@ -223,9 +217,9 @@ msgstr ""
"que lorsquun objet est inséré dans une collection utilisant du hachage, tel " "que lorsquun objet est inséré dans une collection utilisant du hachage, tel "
"quun dictionnaire ou un ensemble. Avoir une méthode :meth:`__hash__` " "quun dictionnaire ou un ensemble. Avoir une méthode :meth:`__hash__` "
"implique que les instances de la classe sont immuables. La muabilité est une " "implique que les instances de la classe sont immuables. La muabilité est une "
"propriété complexe qui dépends des intentions du programmeur, de lexistence " "propriété complexe qui dépend des intentions du programmeur, de lexistence "
"et du comportement de la méthode :meth:`__eq__`, et des valeurs des options " "et du comportement de la méthode :meth:`__eq__`, et des valeurs des options "
"``eq`` et ``frozen`` dans lappel au décorateur :func:`dataclass`." "*eq* et *frozen* dans lappel au décorateur :func:`dataclass`."
#: library/dataclasses.rst:133 #: library/dataclasses.rst:133
msgid "" msgid ""
@ -237,13 +231,12 @@ msgid ""
msgstr "" msgstr ""
"Par défaut, :func:`dataclass` najoute pas de méthode implicite :meth:" "Par défaut, :func:`dataclass` najoute pas de méthode implicite :meth:"
"`__hash__`, sauf sil nexiste aucun risque sous-jacent. Il najoute ou ne " "`__hash__`, sauf sil nexiste aucun risque sous-jacent. Il najoute ou ne "
"modifie pas non plus la méthode :meth:`__hash__` si elle a est définie " "modifie pas non plus la méthode :meth:`__hash__` si elle a été définie "
"explicitement. Définir lattribut de classe ``__hash__ = None`` a une " "explicitement. Définir lattribut de classe ``__hash__ = None`` a une "
"signification particulière en Python, comme précisé dans la documentation " "signification particulière, comme précisé dans la documentation de :meth:"
"de :meth:`__hash__`." "`__hash__`."
#: library/dataclasses.rst:139 #: library/dataclasses.rst:139
#, fuzzy
msgid "" msgid ""
"If :meth:`__hash__` is not explicitly defined, or if it is set to ``None``, " "If :meth:`__hash__` is not explicitly defined, or if it is set to ``None``, "
"then :func:`dataclass` *may* add an implicit :meth:`__hash__` method. " "then :func:`dataclass` *may* add an implicit :meth:`__hash__` method. "
@ -254,11 +247,12 @@ msgid ""
msgstr "" msgstr ""
"Si :meth:`__hash__` nest pas défini explicitement, ou sil a pour valeur " "Si :meth:`__hash__` nest pas défini explicitement, ou sil a pour valeur "
"``None``, alors :func:`dataclass` *peut* ajouter une méthode :meth:" "``None``, alors :func:`dataclass` *peut* ajouter une méthode :meth:"
"`__hash__` implicite. Bien que ce ne soit pas recommandé,, vous pouvez " "`__hash__` implicite. Bien que ce ne soit pas recommandé, vous pouvez "
"forcer :func:`dataclass` à créer une méthode :meth:`__hash__` en utilisant " "forcer :func:`dataclass` à créer une méthode :meth:`__hash__` en utilisant "
"``unsafe_hash=True``. Cela pourrait être nécessaire si votre classe est " "``unsafe_hash=True``. Cela pourrait être nécessaire si votre classe est "
"logiquement immuable mais quune mutation est tout de même possible. Cest " "logiquement immuable mais quune mutation est tout de même possible. Il "
"un cas très particulier qui doit être considéré avec la plus grande prudence." "s'agit là d'un cas particulier qui doit être considéré avec la plus grande "
"prudence."
#: library/dataclasses.rst:146 #: library/dataclasses.rst:146
msgid "" msgid ""
@ -267,10 +261,10 @@ msgid ""
"in your dataclass and set ``unsafe_hash=True``; this will result in a :exc:" "in your dataclass and set ``unsafe_hash=True``; this will result in a :exc:"
"`TypeError`." "`TypeError`."
msgstr "" msgstr ""
"Ce sont les règles autour de la création implicite de la méthode :meth:" "Voici les règles autour de la création implicite de la méthode :meth:"
"`__hash__`. Il faut noter que vous ne pouvez pas avoir à la fois une " "`__hash__`. Il faut noter que vous ne pouvez pas avoir à la fois une "
"méthode :meth:`__hash__` explicite dans votre *dataclass* et définir " "méthode :meth:`__hash__` explicite dans votre classe de données et définir "
"``unsafe_hash=True``; cela lèvera une :exc:`TypeError`." "``unsafe_hash=True`` ; cela lèvera une :exc:`TypeError`."
#: library/dataclasses.rst:151 #: library/dataclasses.rst:151
msgid "" msgid ""
@ -282,24 +276,23 @@ msgid ""
"superclass will be used (if the superclass is :class:`object`, this means it " "superclass will be used (if the superclass is :class:`object`, this means it "
"will fall back to id-based hashing)." "will fall back to id-based hashing)."
msgstr "" msgstr ""
"Si ``eq`` et ``frozen`` sont tous deux vrais, :func:`dataclass` génère par " "Si *eq* et *frozen* sont tous deux vrais, :func:`dataclass` génère par "
"défaut une méthode :meth:`__hash__` pour vous. Si ``eq`` est vrai mais que " "défaut une méthode :meth:`__hash__` pour vous. Si *eq* est vrai mais que "
"``frozen`` est faux, :meth:`__hash__` prend la valeur ``None``, marquant la " "*frozen* est faux, :meth:`__hash__` prend la valeur ``None``, marquant la "
"classe comme non-hachable (et cest le cas, puisquelle est modifiable). Si " "classe comme non-hachable (et cest le cas, puisque les instances sont "
"``eq`` est faux, la méthode :meth:`__hash__` est laissée intacte, ce qui " "mutables). Si ``eq`` est faux, la méthode :meth:`__hash__` est laissée "
"veut dire que la méthode :meth:`__hash__` de la classe parente sera utilisée " "intacte, ce qui veut dire que la méthode :meth:`__hash__` de la classe "
"(si la classe parente est :class:`object`, le comportement est un hachage " "parente sera utilisée (si la classe parente est :class:`object`, le "
"basé sur les id)." "comportement est un hachage basé sur les id)."
#: library/dataclasses.rst:159 #: library/dataclasses.rst:159
#, fuzzy
msgid "" msgid ""
"``frozen``: If true (the default is ``False``), assigning to fields will " "``frozen``: If true (the default is ``False``), assigning to fields will "
"generate an exception. This emulates read-only frozen instances. If :meth:" "generate an exception. This emulates read-only frozen instances. If :meth:"
"`__setattr__` or :meth:`__delattr__` is defined in the class, then :exc:" "`__setattr__` or :meth:`__delattr__` is defined in the class, then :exc:"
"`TypeError` is raised. See the discussion below." "`TypeError` is raised. See the discussion below."
msgstr "" msgstr ""
"``frozen``: Si vrai (faux par défaut), assigner une valeur à un champ lèvera " "*frozen* : si vrai (faux par défaut), assigner une valeur à un champ lève "
"une exception. Cela simule le comportement des instances figées en lecture " "une exception. Cela simule le comportement des instances figées en lecture "
"seule. Si la méthode :meth:`__setattr__` ou :meth:`__delattr__` est définie " "seule. Si la méthode :meth:`__setattr__` ou :meth:`__delattr__` est définie "
"sur la classe, alors une :exc:`TypeError` est levée. Voir la discussion ci-" "sur la classe, alors une :exc:`TypeError` est levée. Voir la discussion ci-"
@ -310,7 +303,7 @@ msgid ""
"``field``\\s may optionally specify a default value, using normal Python " "``field``\\s may optionally specify a default value, using normal Python "
"syntax::" "syntax::"
msgstr "" msgstr ""
"Les ``field``\\s peuvent éventuellement spécifier une valeur par défaut, en " "Les champs peuvent éventuellement préciser une valeur par défaut, en "
"utilisant la syntaxe Python normale ::" "utilisant la syntaxe Python normale ::"
#: library/dataclasses.rst:172 #: library/dataclasses.rst:172
@ -322,7 +315,6 @@ msgstr ""
"la méthode générée :meth:`__init__`, qui est définie comme suit ::" "la méthode générée :meth:`__init__`, qui est définie comme suit ::"
#: library/dataclasses.rst:177 #: library/dataclasses.rst:177
#, fuzzy
msgid "" msgid ""
":exc:`TypeError` will be raised if a field without a default value follows a " ":exc:`TypeError` will be raised if a field without a default value follows a "
"field with a default value. This is true whether this occurs in a single " "field with a default value. This is true whether this occurs in a single "
@ -330,8 +322,7 @@ msgid ""
msgstr "" msgstr ""
"Une :exc:`TypeError` est levée si un champ sans valeur par défaut est défini " "Une :exc:`TypeError` est levée si un champ sans valeur par défaut est défini "
"après un champ avec une valeur par défaut. Cest le cas que ce soit dans " "après un champ avec une valeur par défaut. Cest le cas que ce soit dans "
"une seule classe, mais également si cest le résultat dun héritage de " "une seule classe ou si cest le résultat dun héritage de classes."
"classes."
#: library/dataclasses.rst:183 #: library/dataclasses.rst:183
msgid "" msgid ""
@ -341,6 +332,11 @@ msgid ""
"replace the default field value with a call to the provided :func:`field` " "replace the default field value with a call to the provided :func:`field` "
"function. For example::" "function. For example::"
msgstr "" msgstr ""
"Dans les cas les plus simples et courants, ce qui a été décrit jusqu'ici "
"suffit. Cependant, les classes de données possèdent des fonctionnalités "
"supplémentaires fondées sur des métadonnées propres à chaque champ. Pour "
"remplir ces métadonnées, il suffit de mettre un appel à la fonction :func:"
"`field` à la place de la valeur par défaut, comme dans cet exemple :"
#: library/dataclasses.rst:196 #: library/dataclasses.rst:196
msgid "" msgid ""
@ -349,10 +345,16 @@ msgid ""
"sentinel is used because ``None`` is a valid value for ``default``. No code " "sentinel is used because ``None`` is a valid value for ``default``. No code "
"should directly use the ``MISSING`` value." "should directly use the ``MISSING`` value."
msgstr "" msgstr ""
"Comme le montre la signature, la valeur ``MISSING`` est une valeur "
"sentinelle. Elle permet de déterminer si les paramètres ``default`` et "
"``default_factory`` ont été passés explicitement ou non. ``None`` ne "
"conviendrait pas puisque c'est une valeur possible pour ``default``. La "
"sentinelle ``MISSING`` est interne au module et ne doit pas être utilisée "
"dans vos programmes."
#: library/dataclasses.rst:202 #: library/dataclasses.rst:202
msgid "The parameters to :func:`field` are:" msgid "The parameters to :func:`field` are:"
msgstr "" msgstr "Les paramètres de :func:`field` sont :"
#: library/dataclasses.rst:204 #: library/dataclasses.rst:204
msgid "" msgid ""
@ -360,6 +362,9 @@ msgid ""
"This is needed because the :meth:`field` call itself replaces the normal " "This is needed because the :meth:`field` call itself replaces the normal "
"position of the default value." "position of the default value."
msgstr "" msgstr ""
"*default* : s'il est fourni, il devient la valeur par défaut du champ. "
"L'appel à :meth:`field` est mis à la place normale de la valeur par défaut, "
"d'où la nécessité de ce paramètre."
#: library/dataclasses.rst:208 #: library/dataclasses.rst:208
msgid "" msgid ""
@ -369,24 +374,36 @@ msgid ""
"discussed below. It is an error to specify both ``default`` and " "discussed below. It is an error to specify both ``default`` and "
"``default_factory``." "``default_factory``."
msgstr "" msgstr ""
"*default_factory* : s'il est fourni, ce doit être un objet appelable sans "
"argument. Il est alors appelé à chaque fois qu'il faut une valeur par défaut "
"pour le champ. Ceci permet, entre autres choses, de définir des champs dont "
"les valeurs par défaut sont muables. Une erreur se produit si *default* et "
"*default_factory* sont donnés tous les deux."
#: library/dataclasses.rst:214 #: library/dataclasses.rst:214
msgid "" msgid ""
"``init``: If true (the default), this field is included as a parameter to " "``init``: If true (the default), this field is included as a parameter to "
"the generated :meth:`__init__` method." "the generated :meth:`__init__` method."
msgstr "" msgstr ""
"*init* : si vrai (par défaut), la méthode :meth:`__init__` générée possède "
"un paramètre correspondant à ce champ."
#: library/dataclasses.rst:217 #: library/dataclasses.rst:217
msgid "" msgid ""
"``repr``: If true (the default), this field is included in the string " "``repr``: If true (the default), this field is included in the string "
"returned by the generated :meth:`__repr__` method." "returned by the generated :meth:`__repr__` method."
msgstr "" msgstr ""
"*repr* : si vrai (par défaut), le champ est inclus dans les chaînes "
"construites par la méthode :meth:`__repr__` générée."
#: library/dataclasses.rst:220 #: library/dataclasses.rst:220
msgid "" msgid ""
"``compare``: If true (the default), this field is included in the generated " "``compare``: If true (the default), this field is included in the generated "
"equality and comparison methods (:meth:`__eq__`, :meth:`__gt__`, et al.)." "equality and comparison methods (:meth:`__eq__`, :meth:`__gt__`, et al.)."
msgstr "" msgstr ""
"*compare* : si vrai (par défaut), le champ est considéré dans les "
"comparaisons d'égalité et d'inégalité dans les méthodes générées :meth:"
"`__eq__`, :meth:`__gt__`, etc."
#: library/dataclasses.rst:224 #: library/dataclasses.rst:224
msgid "" msgid ""
@ -396,6 +413,12 @@ msgid ""
"field should be considered in the hash if it's used for comparisons. " "field should be considered in the hash if it's used for comparisons. "
"Setting this value to anything other than ``None`` is discouraged." "Setting this value to anything other than ``None`` is discouraged."
msgstr "" msgstr ""
"*hash* : ce paramètre est un booléen ou ``None``. La valeur ``False`` force "
"la prise en compte du champ dans la méthode :meth:`__hash__` générée, alors "
"que ``False`` force son exclusion. ``None`` revient à mettre la même valeur "
"que *compare*, ce qui est en général correct : il faut inclure dans le "
"hachage les champs employés pour les comparaisons. Il est déconseillé de "
"mettre ce paramètre à autre chose que ``None``."
#: library/dataclasses.rst:231 #: library/dataclasses.rst:231
msgid "" msgid ""
@ -405,6 +428,12 @@ msgid ""
"hash value. Even if a field is excluded from the hash, it will still be " "hash value. Even if a field is excluded from the hash, it will still be "
"used for comparisons." "used for comparisons."
msgstr "" msgstr ""
"Cependant, une raison légitime de mettre *hash* à ``False`` alors que "
"*compare* est à ``True`` est la concourance de trois facteurs : le champ est "
"coûteux à hacher ; il est nécessaire pour les comparaisons d'égalité ; et il "
"y a déjà d'autres champs qui participent au hachage des instances. À ce "
"moment, on peut alors se passer du champ dans le hachage tout en le faisant "
"participer aux comparaisons."
#: library/dataclasses.rst:237 #: library/dataclasses.rst:237
msgid "" msgid ""
@ -415,6 +444,10 @@ msgid ""
"Multiple third-parties can each have their own key, to use as a namespace in " "Multiple third-parties can each have their own key, to use as a namespace in "
"the metadata." "the metadata."
msgstr "" msgstr ""
"*metadata* : ce paramètre est un tableau associatif (*mapping* en anglais). "
"La valeur par défaut de ``None`` est prise comme un dictionnaire vide. Le "
"tableau associatif devient accessible sur l'objet :class:`Field`, sous la "
"forme d'un :func:`~types.MappingProxyType` afin qu'il soit en lecture seule."
#: library/dataclasses.rst:245 #: library/dataclasses.rst:245
msgid "" msgid ""
@ -426,12 +459,22 @@ msgid ""
"fields, just as if the default value itself were specified. For example, " "fields, just as if the default value itself were specified. For example, "
"after::" "after::"
msgstr "" msgstr ""
"Si la valeur par défaut d'un champ est donnée dans un appel à :func:`field` "
"(et pas directement), l'attribut correspondant de la classe est remplacé par "
"cette valeur. Si le paramètre *default* n'est pas passé, l'attribut est "
"simplement supprimé. De cette manière, après le passage du décorateur :func:"
"`dataclass`, les attributs de la classe contiennent les valeurs par défaut "
"des champs exactement comme si elles avaient été définies directement. Par "
"exemple :"
#: library/dataclasses.rst:261 #: library/dataclasses.rst:261
msgid "" msgid ""
"The class attribute ``C.z`` will be ``10``, the class attribute ``C.t`` will " "The class attribute ``C.z`` will be ``10``, the class attribute ``C.t`` will "
"be ``20``, and the class attributes ``C.x`` and ``C.y`` will not be set." "be ``20``, and the class attributes ``C.x`` and ``C.y`` will not be set."
msgstr "" msgstr ""
"Après l'exécution de ce code, l'attribut de classe ``C.z`` vaut ``10`` et "
"l'attribut ``C.t`` vaut ``20``, alors que les attributs ``C.x`` et ``C.y`` "
"n'existent pas."
#: library/dataclasses.rst:267 #: library/dataclasses.rst:267
msgid "" msgid ""
@ -440,14 +483,19 @@ msgid ""
"method (see below). Users should never instantiate a :class:`Field` object " "method (see below). Users should never instantiate a :class:`Field` object "
"directly. Its documented attributes are:" "directly. Its documented attributes are:"
msgstr "" msgstr ""
"Les objets :class:`Field` contiennent des informations sur les champs. Ils "
"sont créés en interne, et on y accède à l'aide de la méthode au niveau du "
"module :func:`fields` (voir plus bas). Les utilisateurs ne doivent jamais "
"instancier un objet :class:`Field` eux-mêmes. Les attributs documentés sont "
"les suivants :"
#: library/dataclasses.rst:272 #: library/dataclasses.rst:272
msgid "``name``: The name of the field." msgid "``name``: The name of the field."
msgstr "" msgstr "*name* : le nom du champ ;"
#: library/dataclasses.rst:274 #: library/dataclasses.rst:274
msgid "``type``: The type of the field." msgid "``type``: The type of the field."
msgstr "" msgstr "*type* : le type associé au champ par l'annotation ;"
#: library/dataclasses.rst:276 #: library/dataclasses.rst:276
msgid "" msgid ""
@ -455,12 +503,17 @@ msgid ""
"and ``metadata`` have the identical meaning and values as they do in the :" "and ``metadata`` have the identical meaning and values as they do in the :"
"func:`field` declaration." "func:`field` declaration."
msgstr "" msgstr ""
"*default*, *default_factory*, *init*, *repr*, *hash*, *compare* et "
"*metadata*, qui correspondent aux paramètres de :func:`field` et en prennent "
"les valeurs."
#: library/dataclasses.rst:280 #: library/dataclasses.rst:280
msgid "" msgid ""
"Other attributes may exist, but they are private and must not be inspected " "Other attributes may exist, but they are private and must not be inspected "
"or relied on." "or relied on."
msgstr "" msgstr ""
"D'autres attributs peuvent exister, mais ils sont privés et ne sont pas "
"censés être inspectés. Le code ne doit jamais reposer sur eux."
#: library/dataclasses.rst:285 #: library/dataclasses.rst:285
msgid "" msgid ""
@ -469,6 +522,11 @@ msgid ""
"Raises :exc:`TypeError` if not passed a dataclass or instance of one. Does " "Raises :exc:`TypeError` if not passed a dataclass or instance of one. Does "
"not return pseudo-fields which are ``ClassVar`` or ``InitVar``." "not return pseudo-fields which are ``ClassVar`` or ``InitVar``."
msgstr "" msgstr ""
"Renvoie un *n*-uplet d'objets :class:`Field` correspondant aux champs de "
"l'argument, à l'exclusion des pseudo-champs ``ClassVar`` ou ``InitVar``. "
"L'argument peut être soit une classe de données, soit une instance d'une "
"telle classe ; si ce n'est pas le cas, une exception :exc:`TypeError` est "
"levée."
#: library/dataclasses.rst:292 #: library/dataclasses.rst:292
msgid "" msgid ""
@ -477,10 +535,18 @@ msgid ""
"``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed " "``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed "
"into. For example::" "into. For example::"
msgstr "" msgstr ""
"Convertit *instance*, une instance d'une classe de données, en un "
"dictionnaire. Le résultat est construit par la fonction *dict_factory*. Les "
"clés et valeurs proviennent directement des champs. Les dictionnaires, "
"listes, *n*-uplets et instances de classes de données sont traversés pour "
"convertir récursivement toutes les instances de classes de données qu'ils "
"contiennent. Voici un exemple :"
#: library/dataclasses.rst:326 #: library/dataclasses.rst:326
msgid "Raises :exc:`TypeError` if ``instance`` is not a dataclass instance." msgid "Raises :exc:`TypeError` if ``instance`` is not a dataclass instance."
msgstr "" msgstr ""
"Lève :exc:`TypeError` si *instance* n'est pas une instance d'une classe de "
"données."
#: library/dataclasses.rst:316 #: library/dataclasses.rst:316
msgid "" msgid ""
@ -488,10 +554,14 @@ msgid ""
"function ``tuple_factory``). Each dataclass is converted to a tuple of its " "function ``tuple_factory``). Each dataclass is converted to a tuple of its "
"field values. dataclasses, dicts, lists, and tuples are recursed into." "field values. dataclasses, dicts, lists, and tuples are recursed into."
msgstr "" msgstr ""
"Convertit l'instance d'une classe de données *instance* en un *n*-uplet des "
"valeurs de ses champs. Le résultat est construit par la fonction "
"*tuple_factory*. Cette fonction agit récursivement sur les dictionnaires, "
"listes, *n*-uplets et instances de classes de données."
#: library/dataclasses.rst:321 #: library/dataclasses.rst:321
msgid "Continuing from the previous example::" msgid "Continuing from the previous example::"
msgstr "" msgstr "Pour continuer l'exemple précédent :"
#: library/dataclasses.rst:330 #: library/dataclasses.rst:330
msgid "" msgid ""
@ -504,6 +574,14 @@ msgid ""
"``unsafe_hash``, and ``frozen`` have the same meaning as they do in :func:" "``unsafe_hash``, and ``frozen`` have the same meaning as they do in :func:"
"`dataclass`." "`dataclass`."
msgstr "" msgstr ""
"Crée une nouvelle classe de données avec le nom *cls_name*. Les champs "
"proviennent de l'objet itérable *fields*. Les classes mères sont lues dans "
"*bases*. L'espace de nommage de la classe est initialisé par *namespace*. La "
"forme la plus générale d'un élément de *fields* est un triplet ``(nom, type, "
"objet_Field)``. Le troisième élément peut être omis. On peut aussi passer un "
"simple nom, auquel cas le type sera ``typing.Any``. Les paramètres restants, "
"à savoir *init*, *repr*, *eq*, *order*, *unsafe_hash* et *frozen*, sont les "
"mêmes que dans :func:`dataclass`."
#: library/dataclasses.rst:339 #: library/dataclasses.rst:339
msgid "" msgid ""
@ -512,10 +590,14 @@ msgid ""
"`dataclass` function to convert that class to a dataclass. This function is " "`dataclass` function to convert that class to a dataclass. This function is "
"provided as a convenience. For example::" "provided as a convenience. For example::"
msgstr "" msgstr ""
"Cette fonction est pratique mais pas absolument nécessaire, puisqu'il suffit "
"de créer par un moyen quelconque une classe avec l'attribut "
"``__annotation__`` et de lui appliquer la fonction :func:`dataclass`, qui la "
"convertit en une classe de données. Par exemple, ceci :"
#: library/dataclasses.rst:351 #: library/dataclasses.rst:351
msgid "Is equivalent to::" msgid "Is equivalent to::"
msgstr "" msgstr "est équivalent à :"
#: library/dataclasses.rst:364 #: library/dataclasses.rst:364
msgid "" msgid ""
@ -524,6 +606,11 @@ msgid ""
"`TypeError`. If values in ``changes`` do not specify fields, raises :exc:" "`TypeError`. If values in ``changes`` do not specify fields, raises :exc:"
"`TypeError`." "`TypeError`."
msgstr "" msgstr ""
"Crée un nouvel objet du même type que *instance* en effectuant les "
"remplacements donnés par *changes* dans ses champs. L'argument *instance* "
"doit être une instance d'une classe de données, sans quoi :exc:`TypeError` "
"est levée. De même, si une clé dans *changes* ne correspond à aucun champ de "
"l'instance, :exc:`TypeError` est levée."
#: library/dataclasses.rst:369 #: library/dataclasses.rst:369
msgid "" msgid ""
@ -531,6 +618,9 @@ msgid ""
"of the dataclass. This ensures that :meth:`__post_init__`, if present, is " "of the dataclass. This ensures that :meth:`__post_init__`, if present, is "
"also called." "also called."
msgstr "" msgstr ""
"L'objet renvoyé est créé à l'aide de la méthode :meth:`__init__` de la "
"classe de données, ce qui garantit que :meth:`__post_init__` est appelée (si "
"elle existe)."
#: library/dataclasses.rst:373 #: library/dataclasses.rst:373
msgid "" msgid ""
@ -538,12 +628,17 @@ msgid ""
"on the call to :func:`replace` so that they can be passed to :meth:" "on the call to :func:`replace` so that they can be passed to :meth:"
"`__init__` and :meth:`__post_init__`." "`__init__` and :meth:`__post_init__`."
msgstr "" msgstr ""
"Si un champ d'initialisation (voir plus bas) n'a pas de valeur par défaut, "
"il faut l'inclure dans l'appel à :func:`replace` afin qu'il soit passé à :"
"meth:`__init__` et :meth:`__post_init__`."
#: library/dataclasses.rst:377 #: library/dataclasses.rst:377
msgid "" msgid ""
"It is an error for ``changes`` to contain any fields that are defined as " "It is an error for ``changes`` to contain any fields that are defined as "
"having ``init=False``. A :exc:`ValueError` will be raised in this case." "having ``init=False``. A :exc:`ValueError` will be raised in this case."
msgstr "" msgstr ""
"Si une clé de *changes* correspond à un champ défini avec ``init=False``, :"
"exc:`ValueError` est levée."
#: library/dataclasses.rst:381 #: library/dataclasses.rst:381
msgid "" msgid ""
@ -555,12 +650,21 @@ msgid ""
"perhaps a custom ``replace()`` (or similarly named) method which handles " "perhaps a custom ``replace()`` (or similarly named) method which handles "
"instance copying." "instance copying."
msgstr "" msgstr ""
"Prenez garde aux champs définis avec ``init=False`` dans un appel à :func:"
"`replace`. Ils ne sont pas copiés automatiquement de l'instance source. "
"C'est le rôle de :meth:`__post_init__` de les initialiser  ou pas. Les "
"champs avec ``init=False`` doivent rarement être utilisés et seulement à bon "
"escient. Si vous en avez, il peut être sage de traiter la copie des "
"instances par des constructeurs de classe alternatifs, ou bien une méthode "
"personnalisée ``replace()`` (ou un nom similaire)."
#: library/dataclasses.rst:392 #: library/dataclasses.rst:392
msgid "" msgid ""
"Return ``True`` if its parameter is a dataclass or an instance of one, " "Return ``True`` if its parameter is a dataclass or an instance of one, "
"otherwise return ``False``." "otherwise return ``False``."
msgstr "" msgstr ""
"Renvoie ``True`` si l'argument est soit une classe de données, soit une "
"instance d'une telle classe. Sinon, renvoie ``False``."
#: library/dataclasses.rst:395 #: library/dataclasses.rst:395
msgid "" msgid ""
@ -568,10 +672,13 @@ msgid ""
"dataclass itself), then add a further check for ``not isinstance(obj, " "dataclass itself), then add a further check for ``not isinstance(obj, "
"type)``::" "type)``::"
msgstr "" msgstr ""
"Pour vérifier qu'un objet *obj* est une instance d'une classe de données, et "
"non pas lui-même une classe de données, ajoutez le test ``not "
"isinstance(obj, type)``."
#: library/dataclasses.rst:403 #: library/dataclasses.rst:403
msgid "Post-init processing" msgid "Post-init processing"
msgstr "" msgstr "Post-initialisation"
#: library/dataclasses.rst:405 #: library/dataclasses.rst:405
msgid "" msgid ""
@ -582,12 +689,21 @@ msgid ""
"order they were defined in the class. If no :meth:`__init__` method is " "order they were defined in the class. If no :meth:`__init__` method is "
"generated, then :meth:`__post_init__` will not automatically be called." "generated, then :meth:`__post_init__` will not automatically be called."
msgstr "" msgstr ""
"Après avoir initialisé l'objet, la méthode :meth:`__init__` générée appelle "
"la méthode :meth:`__post_init__`, si elle est définie. :meth:`__post_init__` "
"est habituellement appelée avec un simple ``self.__post_init__()``. "
"Cependant, si la classe comporte des champs d'initialisation (voir plus "
"bas), leurs valeurs sont aussi passées à :meth:`__post_init__` telles "
"qu'elles ont été fournies à :meth:`__init__`. Si la classe est créée avec "
"``init=False``, :meth:`__post_init__` n'est jamais appelée automatiquement."
#: library/dataclasses.rst:413 #: library/dataclasses.rst:413
msgid "" msgid ""
"Among other uses, this allows for initializing field values that depend on " "Among other uses, this allows for initializing field values that depend on "
"one or more other fields. For example::" "one or more other fields. For example::"
msgstr "" msgstr ""
"Cette méthode permet, entre autres, d'initialiser des champs qui dépendent "
"d'autres champs. Par exemple :"
#: library/dataclasses.rst:425 #: library/dataclasses.rst:425
msgid "" msgid ""
@ -596,6 +712,10 @@ msgid ""
"`__init__` method that has to be called, it is common to call this method in " "`__init__` method that has to be called, it is common to call this method in "
"a :meth:`__post_init__` method::" "a :meth:`__post_init__` method::"
msgstr "" msgstr ""
"Les méthodes :meth:`__init__` des classes mères ne sont pas appelées "
"automatiquement par la méthode :meth:`__init__` que génère :func:"
"`dataclass`. S'il faut appeler ces méthodes :meth:`__init__`, il est courant "
"de le faire dans :meth:`__post_init__` :"
#: library/dataclasses.rst:442 #: library/dataclasses.rst:442
msgid "" msgid ""
@ -603,6 +723,10 @@ msgid ""
"methods don't need to be called, since the derived dataclass will take care " "methods don't need to be called, since the derived dataclass will take care "
"of initializing all fields of any base class that is a dataclass itself." "of initializing all fields of any base class that is a dataclass itself."
msgstr "" msgstr ""
"Notez toutefois qu'il n'est généralement pas nécessaire d'appeler une "
"méthode :meth:`__init__` si elle a été générée automatiquement dans une "
"classe de données, car la classe fille initialise elle-même les champs "
"apportés par toute classe mère qui est aussi une classe de données."
#: library/dataclasses.rst:446 #: library/dataclasses.rst:446
msgid "" msgid ""
@ -610,10 +734,14 @@ msgid ""
"meth:`__post_init__`. Also see the warning about how :func:`replace` " "meth:`__post_init__`. Also see the warning about how :func:`replace` "
"handles ``init=False`` fields." "handles ``init=False`` fields."
msgstr "" msgstr ""
"Voir la section plus bas à propos des variables d'initialisation pour les "
"moyens de passer des paramètres à :meth:`__post_init__`. Voir également "
"l'avertissement sur le traitement par :func:`replace` des champs définis "
"avec ``init=False``."
#: library/dataclasses.rst:451 #: library/dataclasses.rst:451
msgid "Class variables" msgid "Class variables"
msgstr "" msgstr "Variables de classe"
#: library/dataclasses.rst:453 #: library/dataclasses.rst:453
msgid "" msgid ""
@ -624,10 +752,16 @@ msgid ""
"as a field and is ignored by the dataclass mechanisms. Such ``ClassVar`` " "as a field and is ignored by the dataclass mechanisms. Such ``ClassVar`` "
"pseudo-fields are not returned by the module-level :func:`fields` function." "pseudo-fields are not returned by the module-level :func:`fields` function."
msgstr "" msgstr ""
"Voici le premier des deux cas où le type fourni dans l'annotation d'un champ "
"est pris en compte par :func:`dataclass` au moment de l'exécution. Si ce "
"type est ``typing.ClassVar``, le champ est considéré comme une variable de "
"classe, notion définie dans la :pep:`526`. Les champs de ce genre sont "
"complètement ignorés du point de vue des classes de données. Ils "
"n'apparaissent pas dans le résultat de :func:`fields`."
#: library/dataclasses.rst:462 #: library/dataclasses.rst:462
msgid "Init-only variables" msgid "Init-only variables"
msgstr "" msgstr "Variables d'initialisation"
#: library/dataclasses.rst:464 #: library/dataclasses.rst:464
msgid "" msgid ""
@ -640,22 +774,33 @@ msgid ""
"generated :meth:`__init__` method, and are passed to the optional :meth:" "generated :meth:`__init__` method, and are passed to the optional :meth:"
"`__post_init__` method. They are not otherwise used by dataclasses." "`__post_init__` method. They are not otherwise used by dataclasses."
msgstr "" msgstr ""
"L'autre cas où l'annotation de type influence :func:`dataclass` est le "
"suivant : si le type est ``dataclasses.InitVar``, le nom devient un « champ "
"d'initialisation ». Puisque ce n'est pas un vrai champ, il n'est pas inclus "
"dans le *n*-uplet que renvoie :func:`fields`. Les champs d'initialisation "
"sont ajoutés en tant que paramètres à la méthode :meth:`__init__` générée. "
"Leurs valeurs sont passées à :meth:`__post_init__`, si cette méthode existe. "
"C'est la seule manière dont elles sont utilisées."
#: library/dataclasses.rst:474 #: library/dataclasses.rst:474
msgid "" msgid ""
"For example, suppose a field will be initialized from a database, if a value " "For example, suppose a field will be initialized from a database, if a value "
"is not provided when creating the class::" "is not provided when creating the class::"
msgstr "" msgstr ""
"On peut par exemple imaginer un champ initialisé à partir d'une base de "
"données s'il n'a pas reçu de valeur explicite :"
#: library/dataclasses.rst:489 #: library/dataclasses.rst:489
msgid "" msgid ""
"In this case, :func:`fields` will return :class:`Field` objects for ``i`` " "In this case, :func:`fields` will return :class:`Field` objects for ``i`` "
"and ``j``, but not for ``database``." "and ``j``, but not for ``database``."
msgstr "" msgstr ""
"Ici, :func:`fields` renvoie des objets :class:`Field` correspondant à ``i`` "
"et à ``j``, mais pas à ``database``."
#: library/dataclasses.rst:493 #: library/dataclasses.rst:493
msgid "Frozen instances" msgid "Frozen instances"
msgstr "" msgstr "Instances figées"
#: library/dataclasses.rst:495 #: library/dataclasses.rst:495
msgid "" msgid ""
@ -665,6 +810,11 @@ msgid ""
"meth:`__delattr__` methods to the class. These methods will raise a :exc:" "meth:`__delattr__` methods to the class. These methods will raise a :exc:"
"`FrozenInstanceError` when invoked." "`FrozenInstanceError` when invoked."
msgstr "" msgstr ""
"Bien qu'il ne soit pas possible de créer des objets Python strictement "
"immuables, on peut rendre les instances d'une classe de données quasi "
"immuables en passant ``frozen=True`` au décorateur :meth:`dataclass`, ce qui "
"lui fait générer des méthodes :meth:`__setattr__` et :meth:`__delattr__`. "
"Celles-ci lèvent systématiquement l'exception :exc:`FrozenInstanceError`."
#: library/dataclasses.rst:501 #: library/dataclasses.rst:501
msgid "" msgid ""
@ -672,6 +822,9 @@ msgid ""
"`__init__` cannot use simple assignment to initialize fields, and must use :" "`__init__` cannot use simple assignment to initialize fields, and must use :"
"meth:`object.__setattr__`." "meth:`object.__setattr__`."
msgstr "" msgstr ""
"Les performances sont légèrement moins bonnes avec ``frozen=True`` car :meth:"
"`__init__` doit passer par :meth:`object.__setattr__` au lieu de simples "
"affectations pour initialiser les champs."
#: library/dataclasses.rst:506 #: library/dataclasses.rst:506
msgid "Inheritance" msgid "Inheritance"
@ -688,20 +841,30 @@ msgid ""
"ordered mapping of fields. Because the fields are in insertion order, " "ordered mapping of fields. Because the fields are in insertion order, "
"derived classes override base classes. An example::" "derived classes override base classes. An example::"
msgstr "" msgstr ""
"Au moment de la création d'une classe de données, le décorateur :meth:"
"`dataclass` parcourt toutes les classes mères dans l'ordre inverse de "
"résolution des méthodes (donc en commençant par :class:`object`). À chaque "
"fois qu'une classe de données est rencontrée, ses champs sont insérés dans "
"un tableau associatif ordonné. Pour finir, les champs de la classe elle-même "
"sont rajoutés. Toutes les méthodes générées utilisent en interne ce même "
"tableau associatif. Puisqu'il est ordonné, les champs des classes filles "
"écrasent ceux des classes mères. Voici un exemple :"
#: library/dataclasses.rst:528 #: library/dataclasses.rst:528
msgid "" msgid ""
"The final list of fields is, in order, ``x``, ``y``, ``z``. The final type " "The final list of fields is, in order, ``x``, ``y``, ``z``. The final type "
"of ``x`` is ``int``, as specified in class ``C``." "of ``x`` is ``int``, as specified in class ``C``."
msgstr "" msgstr ""
"La liste finale des champs contient, dans l'ordre, ``x``, ``y``, ``z``. Le "
"type de ``x`` est ``int``, comme déclaré dans ``C``."
#: library/dataclasses.rst:531 #: library/dataclasses.rst:531
msgid "The generated :meth:`__init__` method for ``C`` will look like::" msgid "The generated :meth:`__init__` method for ``C`` will look like::"
msgstr "" msgstr "La méthode :meth:`__init__` générée pour ``C`` ressemble à :"
#: library/dataclasses.rst:536 #: library/dataclasses.rst:536
msgid "Default factory functions" msgid "Default factory functions"
msgstr "" msgstr "Fabriques de valeurs par défaut"
#: library/dataclasses.rst:538 #: library/dataclasses.rst:538
msgid "" msgid ""
@ -709,6 +872,9 @@ msgid ""
"arguments when a default value for the field is needed. For example, to " "arguments when a default value for the field is needed. For example, to "
"create a new instance of a list, use::" "create a new instance of a list, use::"
msgstr "" msgstr ""
"Le paramètre facultatif *default_factory* de :func:`field` est une fonction "
"qui est appelée sans argument pour fournir des valeurs par défaut. Par "
"exemple, voici comment donner la valeur par défaut d'une liste vide :"
#: library/dataclasses.rst:544 #: library/dataclasses.rst:544
msgid "" msgid ""
@ -717,30 +883,38 @@ msgid ""
"will always be called from the generated :meth:`__init__` function. This " "will always be called from the generated :meth:`__init__` function. This "
"happens because there is no other way to give the field an initial value." "happens because there is no other way to give the field an initial value."
msgstr "" msgstr ""
"Si un champ avec fabrique est exclu de :meth:`__init__` (par "
"``init=False``), alors la fabrique est appelée par :meth:`__init__` pour "
"chaque nouvelle instance, puisque c'est le seul moyen d'obtenir une valeur à "
"laquelle initialiser le champ."
#: library/dataclasses.rst:551 #: library/dataclasses.rst:551
msgid "Mutable default values" msgid "Mutable default values"
msgstr "" msgstr "Valeurs par défaut muables"
#: library/dataclasses.rst:553 #: library/dataclasses.rst:553
msgid "" msgid ""
"Python stores default member variable values in class attributes. Consider " "Python stores default member variable values in class attributes. Consider "
"this example, not using dataclasses::" "this example, not using dataclasses::"
msgstr "" msgstr ""
"En Python, les valeurs par défaut des attributs sont stockées dans des "
"attributs de la classe. Observez cet exemple, sans classe de données :"
#: library/dataclasses.rst:568 #: library/dataclasses.rst:568
msgid "" msgid ""
"Note that the two instances of class ``C`` share the same class variable " "Note that the two instances of class ``C`` share the same class variable "
"``x``, as expected." "``x``, as expected."
msgstr "" msgstr ""
"Comme attendu, les deux instances de ``C`` partagent le même objet pour "
"l'attribut ``x``."
#: library/dataclasses.rst:571 #: library/dataclasses.rst:571
msgid "Using dataclasses, *if* this code was valid::" msgid "Using dataclasses, *if* this code was valid::"
msgstr "" msgstr "Avec les classes de données, si ce code était valide :"
#: library/dataclasses.rst:579 #: library/dataclasses.rst:579
msgid "it would generate code similar to::" msgid "it would generate code similar to::"
msgstr "" msgstr "il générerait un code équivalent à :"
#: library/dataclasses.rst:590 #: library/dataclasses.rst:590
msgid "" msgid ""
@ -753,12 +927,23 @@ msgid ""
"a default parameter of type ``list``, ``dict``, or ``set``. This is a " "a default parameter of type ``list``, ``dict``, or ``set``. This is a "
"partial solution, but it does protect against many common errors." "partial solution, but it does protect against many common errors."
msgstr "" msgstr ""
"On se retrouve avec le même problème qu'au premier exemple avec la classe "
"``C``. Les classes de données étant créées comme toutes les autres classes "
"Python, leur comportement est identique. Ainsi, deux instances séparées de "
"``D`` où l'attribut ``x`` a été laissé à sa valeur par défaut partagent le "
"même objet dans cet attribut. Il n'y a aucun moyen pour les classes de "
"données de détecter cette situation en général. C'est pourquoi la "
"construction d'une classe de données lève :exc:`TypeError` si une valeur par "
"défaut est de type ``list``, ``dict`` ou ``set``. Cette solution n'est pas "
"parfaite, mais permet d'éviter la majorité des erreurs."
#: library/dataclasses.rst:600 #: library/dataclasses.rst:600
msgid "" msgid ""
"Using default factory functions is a way to create new instances of mutable " "Using default factory functions is a way to create new instances of mutable "
"types as default values for fields::" "types as default values for fields::"
msgstr "" msgstr ""
"Pour qu'un champ d'un type muable soit par défaut initialisé à un nouvel "
"objet pour chaque instance, utilisez une fonction de fabrique :"
#: library/dataclasses.rst:610 #: library/dataclasses.rst:610
msgid "Exceptions" msgid "Exceptions"
@ -770,3 +955,6 @@ msgid ""
"is called on a dataclass which was defined with ``frozen=True``. It is a " "is called on a dataclass which was defined with ``frozen=True``. It is a "
"subclass of :exc:`AttributeError`." "subclass of :exc:`AttributeError`."
msgstr "" msgstr ""
"Sous-classe de :exc:`AttributeError`, levée lorsqu'une méthode :meth:"
"`__setattr__` ou :meth:`__delattr__` définie implicitement est appelée dans "
"une classe de données définie avec ``frozen=True``."