1
0
Fork 0

Revue de dataclasses (#17)

Co-authored-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
Reviewed-on: AFPy/python-docs-fr#17
Co-authored-by: Christophe Nanteuil <christophenan@noreply.localhost>
Co-committed-by: Christophe Nanteuil <christophenan@noreply.localhost>
This commit is contained in:
Christophe Nanteuil 2023-01-05 10:40:45 +00:00 committed by jeanas
parent c8b12122c8
commit 8d0da0421c
1 changed files with 77 additions and 65 deletions

View File

@ -6,18 +6,18 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2021-10-28 11:44+0200\n"
"PO-Revision-Date: 2023-01-03 14:50+0100\n"
"Last-Translator: David GIRAUD <davidgiraud@protonmail.com>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0\n"
"X-Generator: Poedit 3.2.1\n"
#: library/dataclasses.rst:2
msgid ":mod:`dataclasses` --- Data Classes"
msgstr ":mod:`dataclasses` — Classes de Données"
msgstr ":mod:`dataclasses` — Classes de données"
#: library/dataclasses.rst:10
msgid "**Source code:** :source:`Lib/dataclasses.py`"
@ -306,14 +306,13 @@ msgid ""
"If false, or if ``__match_args__`` is already defined in the class, then "
"``__match_args__`` will not be generated."
msgstr ""
"*match_args* : si vrai (``True`` est la valeur par défaut), le *n*-uplet "
"*match_args* : si vrai (``True`` est la valeur par défaut), le *n*-uplet "
"``__match_args__`` est créé automatiquement depuis la liste des paramètres "
"de la méthode :meth:`__init__` générée (même si :meth:`__init__` n'est pas "
"générée, voir ci-dessus). Si faux ou si ``__match_args__`` est déjà défini "
"dans la classe alors ``__match_args__`` n'est pas créé."
#: library/dataclasses.rst:173
#, fuzzy
msgid ""
"``kw_only``: If true (the default value is ``False``), then all fields will "
"be marked as keyword-only. If a field is marked as keyword-only, then the "
@ -323,7 +322,7 @@ msgid ""
"term:`parameter` glossary entry for details. Also see the :const:`KW_ONLY` "
"section."
msgstr ""
"*kw_only* : si vrai (``False`` est la valeur par défaut) alors tous les "
"*kw_only* : si vrai (``False`` est la valeur par défaut) alors tous les "
"champs sont marqués comme exclusivement nommés. Si un champ est marqué comme "
"exclusivement nommé, le seul impact est que le champ de la méthode :meth:"
"`__init__` générée devra être explicitement nommé lors de l'appel de la "
@ -339,7 +338,7 @@ msgid ""
"one. If :attr:`__slots__` is already defined in the class, then :exc:"
"`TypeError` is raised."
msgstr ""
"*slot* : si vrai (``False`` est la valeur par défaut), l'attribut :attr:"
"*slot* : si vrai (``False`` est la valeur par défaut), l'attribut :attr:"
"`__slots__` est généré et une nouvelle classe est renvoyée à la place de "
"celle d'origine. Si :attr:`__slots__` est déjà défini dans la classe alors "
"une :exc:`TypeError` est levée."
@ -353,6 +352,13 @@ msgid ""
"a dataclass. Use :func:`fields` instead. To be able to determine inherited "
"slots, base class ``__slots__`` may be any iterable, but *not* an iterator."
msgstr ""
"Si un nom de champ est déjà inclus dans le ``__slots__`` d'une classe mère, "
"il n'est pas inclus dans les ``__slots__`` générés pour éviter de les "
"remplacer <https://docs.python.org/3/ reference/datamodel.html#notes-on-"
"using-slots>`_. Par conséquent, n'utilisez pas ``__slots__`` pour récupérer "
"les noms de champ d'une classe de données. Utilisez :func:`fields` à la "
"place. Pour pouvoir déterminer les *slots* hérités, ``__slots__`` de la "
"classe mère peut être n'importe quel itérable, mais *pas* un itérateur."
#: library/dataclasses.rst:201
msgid ""
@ -361,6 +367,10 @@ msgid ""
"an error to specify ``weakref_slot=True`` without also specifying "
"``slots=True``."
msgstr ""
"``weakref_slot`` : s'il est vrai (la valeur par défaut est ``False``), "
"ajoute un *slot* nommé \"__weakref__\", ce qui est nécessaire pour pouvoir "
"référencer faiblement une instance. C'est une erreur de spécifier "
"``weakref_slot=True`` sans spécifier également ``slots=True``."
#: library/dataclasses.rst:208
msgid ""
@ -518,9 +528,9 @@ msgid ""
"``kw_only``: If true, this field will be marked as keyword-only. This is "
"used when the generated :meth:`__init__` method's parameters are computed."
msgstr ""
"``kw_only`` : Si vrai ce champ est marqué comme exclusivement nommé. Cela "
"est utilisé lors du traitement des paramètres de la méthode :meth:`__init__` "
"générée."
"``kw_only`` : s'il est vrai, ce champ est marqué comme exclusivement nommé. "
"Cela est utilisé lors du traitement des paramètres de la méthode :meth:"
"`__init__` générée."
#: library/dataclasses.rst:294
msgid ""
@ -564,11 +574,11 @@ msgstr ""
#: library/dataclasses.rst:321
msgid "``name``: The name of the field."
msgstr "*name* : le nom du champ ;"
msgstr "*name* : le nom du champ ;"
#: library/dataclasses.rst:323
msgid "``type``: The type of the field."
msgstr "*type* : le type associé au champ par l'annotation ;"
msgstr "*type* : le type associé au champ par l'annotation ;"
#: library/dataclasses.rst:325
msgid ""
@ -576,9 +586,9 @@ msgid ""
"``metadata``, and ``kw_only`` have the identical meaning and values as they "
"do in the :func:`field` function."
msgstr ""
"*default*, *default_factory*, *init*, *repr*, *hash*, *compare*, *metadata* "
"et *kw_only* qui correspondent aux paramètres de :func:`field` et en "
"prennent les valeurs."
"``default``, ``default_factory``, ``init``, ``repr``, ``hash``, ``compare``, "
"``metadata`` et ``kw_only`` qui correspondent aux paramètres de :func:"
"`field` et en prennent les valeurs."
#: library/dataclasses.rst:329
msgid ""
@ -602,65 +612,64 @@ msgstr ""
"levée."
#: library/dataclasses.rst:341
#, fuzzy
msgid ""
"Converts the dataclass ``obj`` to a dict (by using the factory function "
"``dict_factory``). Each dataclass is converted to a dict of its fields, as "
"``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed "
"into. Other objects are copied with :func:`copy.deepcopy`."
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 :"
"Convertit la classe de données ``obj`` en un dictionnaire (en utilisant 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 parcourus récursivement. Les autres objets sont copiés avec :"
"func:`copy.deepcopy`."
#: library/dataclasses.rst:347
msgid "Example of using :func:`asdict` on nested dataclasses::"
msgstr ""
"Exemple d'utilisation de :func:`asdict` sur des classes de données "
"imbriquées ::"
#: library/dataclasses.rst:384
msgid "To create a shallow copy, the following workaround may be used::"
msgstr ""
"Pour créer une copie superficielle, la solution de contournement suivante "
"peut être utilisée ::"
#: library/dataclasses.rst:368
#, fuzzy
msgid ""
":func:`asdict` raises :exc:`TypeError` if ``obj`` is not a dataclass "
"instance."
msgstr ""
"Lève :exc:`TypeError` si *instance* n'est pas une instance d'une classe de "
"données."
":func:`asdict` lève :exc:`TypeError` si ``obj`` n'est pas une instance d'une "
"classe de données."
#: library/dataclasses.rst:373
#, fuzzy
msgid ""
"Converts the dataclass ``obj`` to a tuple (by using the factory function "
"``tuple_factory``). Each dataclass is converted to a tuple of its field "
"values. dataclasses, dicts, lists, and tuples are recursed into. Other "
"objects are copied with :func:`copy.deepcopy`."
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."
"Convertit l'instance d'une classe de données ``obj`` en un *n*-uplet (en "
"utilisant la fonction ``tuple_factory``). Chaque classe de données est "
"convertie vers un *n*-uplet des valeurs de ses champs. Cette fonction agit "
"récursivement sur les dictionnaires, listes et *n*-uplets. Les autres objets "
"sont copiés avec :func:`copy.deepcopy`."
#: library/dataclasses.rst:379
msgid "Continuing from the previous example::"
msgstr "Pour continuer l'exemple précédent :"
#: library/dataclasses.rst:388
#, fuzzy
msgid ""
":func:`astuple` raises :exc:`TypeError` if ``obj`` is not a dataclass "
"instance."
msgstr ""
"Lève :exc:`TypeError` si *instance* n'est pas une instance d'une classe de "
"données."
":func:`astuple` lève :exc:`TypeError` si ``obj`` n'est pas une instance "
"d'une classe de données."
#: library/dataclasses.rst:393
#, fuzzy
msgid ""
"Creates a new dataclass with name ``cls_name``, fields as defined in "
"``fields``, base classes as given in ``bases``, and initialized with a "
@ -671,15 +680,15 @@ msgid ""
"``unsafe_hash``, ``frozen``, ``match_args``, ``kw_only``, ``slots``, and "
"``weakref_slot`` have the same meaning as they do in :func:`dataclass`."
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*, *frozen*, "
"*march_args*, *kw_only* et *slots*, sont les mêmes que dans :func:"
"`dataclass`."
"Crée une nouvelle classe de données avec le nom ``cls_name``. Les champs "
"proviennent de ``fields``. Les classes mères sont lues dans ``bases``. "
"L'espace de nommage de la classe est initialisé par ``namespace``. "
"``fields`` est un itérable dont les éléments sont individuellement de la "
"forme ``name``, ``(name:type)`` ou ``(name, type, Field)``. Si seul ``name`` "
"est fourni, ``typing.Any`` est utilisé pour ``type``. Les valeurs de "
"``init``, ``repr``, ``eq``, ``order``, ``unsafe_hash``, ``frozen``, "
"``match_args``, ``kw_only``, ``slots`` et ``weakref_slot`` ont la même "
"signification que dans :func:`dataclass`."
#: library/dataclasses.rst:403
msgid ""
@ -698,18 +707,16 @@ msgid "Is equivalent to::"
msgstr "est équivalent à ::"
#: library/dataclasses.rst:428
#, fuzzy
msgid ""
"Creates a new object of the same type as ``obj``, replacing fields with "
"values from ``changes``. If ``obj`` is not a Data Class, raises :exc:"
"`TypeError`. If values in ``changes`` do not specify fields, raises :exc:"
"`TypeError`."
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."
"Crée un nouvel objet du même type que ``obj`` en affectant aux champs les "
"valeurs données par ``changes``. Si ``obj`` n'est pas une classe de "
"données, :exc:`TypeError` est levée. Si une clé dans ``changes`` ne "
"correspond à aucun champ de l'instance, :exc:`TypeError` est levée."
#: library/dataclasses.rst:433
msgid ""
@ -773,7 +780,7 @@ msgid ""
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)`` ::"
"isinstance(obj, type)`` ::"
#: library/dataclasses.rst:468
msgid "A sentinel value signifying a missing default or default_factory."
@ -805,7 +812,7 @@ msgid ""
"In this example, the fields ``y`` and ``z`` will be marked as keyword-only "
"fields::"
msgstr ""
"Dans cette exemple ``y`` et ``z`` sont marqués comme exclusivement nommés ::"
"Dans cet exemple ``y`` et ``z`` sont marqués comme exclusivement nommés ::"
#: library/dataclasses.rst:492
msgid ""
@ -1023,10 +1030,10 @@ msgid ""
"parameters. This is a requirement of how keyword-only parameters are "
"implemented in Python: they must come after non-keyword-only parameters."
msgstr ""
"Lorsque les paramètres requis pour :meth:`__init__` sont préparés, tout ceux "
"marqués comme exclusivement nommé sont déplacés pour être positionnés après "
"Lorsque les paramètres requis pour :meth:`__init__` sont préparés, tous ceux "
"marqués comme exclusivement nommés sont déplacés pour être positionnés après "
"tous ceux non exclusivement nommés. Ceci est un prérequis de la façon dont "
"les paramètres exclusivement nommés sont implémentés en Python : ils sont "
"les paramètres exclusivement nommés sont implémentés en Python : ils sont "
"après les paramètres non exclusivement nommés."
#: library/dataclasses.rst:645
@ -1036,11 +1043,11 @@ msgid ""
msgstr ""
"Dans cet exemple, ``Base.y``, ``Base.w``, et ``D.t`` sont des champs "
"exclusivement nommés alors que ``Base.x`` et ``D.z`` sont des champs "
"normaux ::"
"normaux ::"
#: library/dataclasses.rst:660
msgid "The generated :meth:`__init__` method for ``D`` will look like::"
msgstr "La méthode :meth:`__init__` générée pour ``D`` ressemble à ::"
msgstr "La méthode :meth:`__init__` générée pour ``D`` ressemble à ::"
#: library/dataclasses.rst:664
msgid ""
@ -1049,7 +1056,7 @@ msgid ""
"parameters derived from keyword-only fields."
msgstr ""
"Les paramètres ont été réarrangés par rapport à leur ordre d'apparition dans "
"la liste des champs : les paramètres provenant des attributs normaux sont "
"la liste des champs : les paramètres provenant des attributs normaux sont "
"suivis par les paramètres qui proviennent des attributs exclusivement nommés."
#: library/dataclasses.rst:668
@ -1115,7 +1122,6 @@ msgid "it would generate code similar to::"
msgstr "il générerait un code équivalent à :"
#: library/dataclasses.rst:727
#, fuzzy
msgid ""
"This has the same issue as the original example using class ``C``. That is, "
"two instances of class ``D`` that do not specify a value for ``x`` when "
@ -1128,13 +1134,14 @@ msgid ""
"solution, but it does protect against many common errors."
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 distinctes de "
"``D`` où l'attribut ``x`` a été laissé à sa valeur par défaut partagent la "
"même copie de l'objet ``x``. Il n'y a aucun moyen commun de détecter cette "
"situation. C'est pourquoi le décorateur :func:`dataclass` lève :exc:"
"`TypeError` si une valeur par défaut est de type ``list``, ``dict`` ou "
"``set`` est détectée. Cette solution n'est pas parfaite, mais permet "
"``C``. C'est-à-dire que deux instances de la classe ``D`` qui ne spécifient "
"pas de valeur pour ``x`` lors de leur création partageront la même copie de "
"``x``. Les classes de données étant créées comme toutes les autres classes "
"Python, leur comportement est identique. Il n'y a aucun moyen générique pour "
"les classes de données de détecter cette situation. C'est pourquoi le "
"décorateur :func:`dataclass` lève :exc:`TypeError` s'il détecte un paramètre "
"par défaut non hachable. L'hypothèse est que si une valeur ne peut pas être "
"hachée, elle est modifiable. Cette solution n'est pas parfaite, mais permet "
"d'éviter la majorité des erreurs."
#: library/dataclasses.rst:738
@ -1145,12 +1152,17 @@ 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 :"
# suit un ':'
#: library/dataclasses.rst:747
msgid ""
"Instead of looking for and disallowing objects of type ``list``, ``dict``, "
"or ``set``, unhashable objects are now not allowed as default values. "
"Unhashability is used to approximate mutability."
msgstr ""
"au lieu de rechercher et d'interdire les objets de type ``list``, ``dict`` "
"ou ``set``, les objets non hachables ne sont plus autorisés comme valeurs "
"par défaut. Le caractère non-hachable est utilisé pour approximer la "
"muabilité."
#~ msgid "Module-level decorators, classes, and functions"
#~ msgstr "Décorateurs, classes et fonctions du module"