Revue de dataclasses (#17)
Co-authored-by: Christophe Nanteuil <christophe.nanteuil@gmail.com> Reviewed-on: #17 Co-authored-by: Christophe Nanteuil <christophenan@noreply.localhost> Co-committed-by: Christophe Nanteuil <christophenan@noreply.localhost>
This commit is contained in:
parent
c8b12122c8
commit
8d0da0421c
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue
Block a user