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" "Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-05-22 23:13+0200\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" "Last-Translator: David GIRAUD <davidgiraud@protonmail.com>\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 3.0\n" "X-Generator: Poedit 3.2.1\n"
#: library/dataclasses.rst:2 #: library/dataclasses.rst:2
msgid ":mod:`dataclasses` --- Data Classes" msgid ":mod:`dataclasses` --- Data Classes"
msgstr ":mod:`dataclasses` — Classes de Données" msgstr ":mod:`dataclasses` — Classes de données"
#: library/dataclasses.rst:10 #: library/dataclasses.rst:10
msgid "**Source code:** :source:`Lib/dataclasses.py`" 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 " "If false, or if ``__match_args__`` is already defined in the class, then "
"``__match_args__`` will not be generated." "``__match_args__`` will not be generated."
msgstr "" 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 " "``__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 " "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 " "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éé." "dans la classe alors ``__match_args__`` n'est pas créé."
#: library/dataclasses.rst:173 #: library/dataclasses.rst:173
#, fuzzy
msgid "" msgid ""
"``kw_only``: If true (the default value is ``False``), then all fields will " "``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 " "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` " "term:`parameter` glossary entry for details. Also see the :const:`KW_ONLY` "
"section." "section."
msgstr "" 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 " "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:" "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 " "`__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:" "one. If :attr:`__slots__` is already defined in the class, then :exc:"
"`TypeError` is raised." "`TypeError` is raised."
msgstr "" 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 " "`__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 " "celle d'origine. Si :attr:`__slots__` est déjà défini dans la classe alors "
"une :exc:`TypeError` est levée." "une :exc:`TypeError` est levée."
@ -353,6 +352,13 @@ msgid ""
"a dataclass. Use :func:`fields` instead. To be able to determine inherited " "a dataclass. Use :func:`fields` instead. To be able to determine inherited "
"slots, base class ``__slots__`` may be any iterable, but *not* an iterator." "slots, base class ``__slots__`` may be any iterable, but *not* an iterator."
msgstr "" 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 #: library/dataclasses.rst:201
msgid "" msgid ""
@ -361,6 +367,10 @@ msgid ""
"an error to specify ``weakref_slot=True`` without also specifying " "an error to specify ``weakref_slot=True`` without also specifying "
"``slots=True``." "``slots=True``."
msgstr "" 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 #: library/dataclasses.rst:208
msgid "" msgid ""
@ -518,9 +528,9 @@ msgid ""
"``kw_only``: If true, this field will be marked as keyword-only. This is " "``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." "used when the generated :meth:`__init__` method's parameters are computed."
msgstr "" msgstr ""
"``kw_only`` : Si vrai ce champ est marqué comme exclusivement nommé. Cela " "``kw_only`` : s'il est vrai, ce champ est marqué comme exclusivement nommé. "
"est utilisé lors du traitement des paramètres de la méthode :meth:`__init__` " "Cela est utilisé lors du traitement des paramètres de la méthode :meth:"
"générée." "`__init__` générée."
#: library/dataclasses.rst:294 #: library/dataclasses.rst:294
msgid "" msgid ""
@ -564,11 +574,11 @@ msgstr ""
#: library/dataclasses.rst:321 #: library/dataclasses.rst:321
msgid "``name``: The name of the field." msgid "``name``: The name of the field."
msgstr "*name* : le nom du champ ;" msgstr "*name* : le nom du champ ;"
#: library/dataclasses.rst:323 #: library/dataclasses.rst:323
msgid "``type``: The type of the field." 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 #: library/dataclasses.rst:325
msgid "" msgid ""
@ -576,9 +586,9 @@ msgid ""
"``metadata``, and ``kw_only`` have the identical meaning and values as they " "``metadata``, and ``kw_only`` have the identical meaning and values as they "
"do in the :func:`field` function." "do in the :func:`field` function."
msgstr "" msgstr ""
"*default*, *default_factory*, *init*, *repr*, *hash*, *compare*, *metadata* " "``default``, ``default_factory``, ``init``, ``repr``, ``hash``, ``compare``, "
"et *kw_only* qui correspondent aux paramètres de :func:`field` et en " "``metadata`` et ``kw_only`` qui correspondent aux paramètres de :func:"
"prennent les valeurs." "`field` et en prennent les valeurs."
#: library/dataclasses.rst:329 #: library/dataclasses.rst:329
msgid "" msgid ""
@ -602,65 +612,64 @@ msgstr ""
"levée." "levée."
#: library/dataclasses.rst:341 #: library/dataclasses.rst:341
#, fuzzy
msgid "" msgid ""
"Converts the dataclass ``obj`` to a dict (by using the factory function " "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 " "``dict_factory``). Each dataclass is converted to a dict of its fields, as "
"``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed " "``name: value`` pairs. dataclasses, dicts, lists, and tuples are recursed "
"into. Other objects are copied with :func:`copy.deepcopy`." "into. Other objects are copied with :func:`copy.deepcopy`."
msgstr "" msgstr ""
"Convertit *instance*, une instance d'une classe de données, en un " "Convertit la classe de données ``obj`` en un dictionnaire (en utilisant la "
"dictionnaire. Le résultat est construit par la fonction *dict_factory*. Les " "fonction ``dict_factory``). Les clés et valeurs proviennent directement des "
"clés et valeurs proviennent directement des champs. Les dictionnaires, " "champs. Les dictionnaires, listes, *n*-uplets et instances de classes de "
"listes, *n*-uplets et instances de classes de données sont traversés pour " "données sont parcourus récursivement. Les autres objets sont copiés avec :"
"convertir récursivement toutes les instances de classes de données qu'ils " "func:`copy.deepcopy`."
"contiennent. Voici un exemple :"
#: library/dataclasses.rst:347 #: library/dataclasses.rst:347
msgid "Example of using :func:`asdict` on nested dataclasses::" msgid "Example of using :func:`asdict` on nested dataclasses::"
msgstr "" msgstr ""
"Exemple d'utilisation de :func:`asdict` sur des classes de données "
"imbriquées ::"
#: library/dataclasses.rst:384 #: library/dataclasses.rst:384
msgid "To create a shallow copy, the following workaround may be used::" msgid "To create a shallow copy, the following workaround may be used::"
msgstr "" msgstr ""
"Pour créer une copie superficielle, la solution de contournement suivante "
"peut être utilisée ::"
#: library/dataclasses.rst:368 #: library/dataclasses.rst:368
#, fuzzy
msgid "" msgid ""
":func:`asdict` raises :exc:`TypeError` if ``obj`` is not a dataclass " ":func:`asdict` raises :exc:`TypeError` if ``obj`` is not a dataclass "
"instance." "instance."
msgstr "" msgstr ""
"Lève :exc:`TypeError` si *instance* n'est pas une instance d'une classe de " ":func:`asdict` lève :exc:`TypeError` si ``obj`` n'est pas une instance d'une "
"données." "classe de données."
#: library/dataclasses.rst:373 #: library/dataclasses.rst:373
#, fuzzy
msgid "" msgid ""
"Converts the dataclass ``obj`` to a tuple (by using the factory function " "Converts the dataclass ``obj`` to a tuple (by using the factory function "
"``tuple_factory``). Each dataclass is converted to a tuple of its field " "``tuple_factory``). Each dataclass is converted to a tuple of its field "
"values. dataclasses, dicts, lists, and tuples are recursed into. Other " "values. dataclasses, dicts, lists, and tuples are recursed into. Other "
"objects are copied with :func:`copy.deepcopy`." "objects are copied with :func:`copy.deepcopy`."
msgstr "" msgstr ""
"Convertit l'instance d'une classe de données *instance* en un *n*-uplet des " "Convertit l'instance d'une classe de données ``obj`` en un *n*-uplet (en "
"valeurs de ses champs. Le résultat est construit par la fonction " "utilisant la fonction ``tuple_factory``). Chaque classe de données est "
"*tuple_factory*. Cette fonction agit récursivement sur les dictionnaires, " "convertie vers un *n*-uplet des valeurs de ses champs. Cette fonction agit "
"listes, *n*-uplets et instances de classes de données." "récursivement sur les dictionnaires, listes et *n*-uplets. Les autres objets "
"sont copiés avec :func:`copy.deepcopy`."
#: library/dataclasses.rst:379 #: library/dataclasses.rst:379
msgid "Continuing from the previous example::" msgid "Continuing from the previous example::"
msgstr "Pour continuer l'exemple précédent :" msgstr "Pour continuer l'exemple précédent :"
#: library/dataclasses.rst:388 #: library/dataclasses.rst:388
#, fuzzy
msgid "" msgid ""
":func:`astuple` raises :exc:`TypeError` if ``obj`` is not a dataclass " ":func:`astuple` raises :exc:`TypeError` if ``obj`` is not a dataclass "
"instance." "instance."
msgstr "" msgstr ""
"Lève :exc:`TypeError` si *instance* n'est pas une instance d'une classe de " ":func:`astuple` lève :exc:`TypeError` si ``obj`` n'est pas une instance "
"données." "d'une classe de données."
#: library/dataclasses.rst:393 #: library/dataclasses.rst:393
#, fuzzy
msgid "" msgid ""
"Creates a new dataclass with name ``cls_name``, fields as defined in " "Creates a new dataclass with name ``cls_name``, fields as defined in "
"``fields``, base classes as given in ``bases``, and initialized with a " "``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 " "``unsafe_hash``, ``frozen``, ``match_args``, ``kw_only``, ``slots``, and "
"``weakref_slot`` have the same meaning as they do in :func:`dataclass`." "``weakref_slot`` have the same meaning as they do in :func:`dataclass`."
msgstr "" msgstr ""
"Crée une nouvelle classe de données avec le nom *cls_name*. Les champs " "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 " "proviennent de ``fields``. Les classes mères sont lues dans ``bases``. "
"*bases*. L'espace de nommage de la classe est initialisé par *namespace*. La " "L'espace de nommage de la classe est initialisé par ``namespace``. "
"forme la plus générale d'un élément de *fields* est un triplet ``(nom, type, " "``fields`` est un itérable dont les éléments sont individuellement de la "
"objet_Field)``. Le troisième élément peut être omis. On peut aussi passer un " "forme ``name``, ``(name:type)`` ou ``(name, type, Field)``. Si seul ``name`` "
"simple nom, auquel cas le type sera ``typing.Any``. Les paramètres restants, " "est fourni, ``typing.Any`` est utilisé pour ``type``. Les valeurs de "
"à savoir *init*, *repr*, *eq*, *order*, *unsafe_hash*, *frozen*, " "``init``, ``repr``, ``eq``, ``order``, ``unsafe_hash``, ``frozen``, "
"*march_args*, *kw_only* et *slots*, sont les mêmes que dans :func:" "``match_args``, ``kw_only``, ``slots`` et ``weakref_slot`` ont la même "
"`dataclass`." "signification que dans :func:`dataclass`."
#: library/dataclasses.rst:403 #: library/dataclasses.rst:403
msgid "" msgid ""
@ -698,18 +707,16 @@ msgid "Is equivalent to::"
msgstr "est équivalent à ::" msgstr "est équivalent à ::"
#: library/dataclasses.rst:428 #: library/dataclasses.rst:428
#, fuzzy
msgid "" msgid ""
"Creates a new object of the same type as ``obj``, replacing fields with " "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:" "values from ``changes``. If ``obj`` is not a Data Class, raises :exc:"
"`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 " "Crée un nouvel objet du même type que ``obj`` en affectant aux champs les "
"remplacements donnés par *changes* dans ses champs. L'argument *instance* " "valeurs données par ``changes``. Si ``obj`` n'est pas une classe de "
"doit être une instance d'une classe de données, sans quoi :exc:`TypeError` " "données, :exc:`TypeError` est levée. Si une clé dans ``changes`` ne "
"est levée. De même, si une clé dans *changes* ne correspond à aucun champ de " "correspond à aucun champ de l'instance, :exc:`TypeError` est levée."
"l'instance, :exc:`TypeError` est levée."
#: library/dataclasses.rst:433 #: library/dataclasses.rst:433
msgid "" msgid ""
@ -773,7 +780,7 @@ msgid ""
msgstr "" msgstr ""
"Pour vérifier qu'un objet *obj* est une instance d'une classe de données, et " "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 " "non pas lui-même une classe de données, ajoutez le test ``not "
"isinstance(obj, type)`` ::" "isinstance(obj, type)`` ::"
#: library/dataclasses.rst:468 #: library/dataclasses.rst:468
msgid "A sentinel value signifying a missing default or default_factory." 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 " "In this example, the fields ``y`` and ``z`` will be marked as keyword-only "
"fields::" "fields::"
msgstr "" 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 #: library/dataclasses.rst:492
msgid "" msgid ""
@ -1023,10 +1030,10 @@ msgid ""
"parameters. This is a requirement of how keyword-only parameters are " "parameters. This is a requirement of how keyword-only parameters are "
"implemented in Python: they must come after non-keyword-only parameters." "implemented in Python: they must come after non-keyword-only parameters."
msgstr "" msgstr ""
"Lorsque les paramètres requis pour :meth:`__init__` sont préparés, tout ceux " "Lorsque les paramètres requis pour :meth:`__init__` sont préparés, tous ceux "
"marqués comme exclusivement nommé sont déplacés pour être positionnés après " "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 " "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." "après les paramètres non exclusivement nommés."
#: library/dataclasses.rst:645 #: library/dataclasses.rst:645
@ -1036,11 +1043,11 @@ msgid ""
msgstr "" msgstr ""
"Dans cet exemple, ``Base.y``, ``Base.w``, et ``D.t`` sont des champs " "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 " "exclusivement nommés alors que ``Base.x`` et ``D.z`` sont des champs "
"normaux ::" "normaux ::"
#: library/dataclasses.rst:660 #: library/dataclasses.rst:660
msgid "The generated :meth:`__init__` method for ``D`` will look like::" 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 #: library/dataclasses.rst:664
msgid "" msgid ""
@ -1049,7 +1056,7 @@ msgid ""
"parameters derived from keyword-only fields." "parameters derived from keyword-only fields."
msgstr "" msgstr ""
"Les paramètres ont été réarrangés par rapport à leur ordre d'apparition dans " "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." "suivis par les paramètres qui proviennent des attributs exclusivement nommés."
#: library/dataclasses.rst:668 #: library/dataclasses.rst:668
@ -1115,7 +1122,6 @@ msgid "it would generate code similar to::"
msgstr "il générerait un code équivalent à :" msgstr "il générerait un code équivalent à :"
#: library/dataclasses.rst:727 #: library/dataclasses.rst:727
#, fuzzy
msgid "" msgid ""
"This has the same issue as the original example using class ``C``. That is, " "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 " "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." "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 " "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 " "``C``. C'est-à-dire que deux instances de la classe ``D`` qui ne spécifient "
"Python, leur comportement est identique. Ainsi, deux instances distinctes de " "pas de valeur pour ``x`` lors de leur création partageront la même copie de "
"``D`` où l'attribut ``x`` a été laissé à sa valeur par défaut partagent la " "``x``. Les classes de données étant créées comme toutes les autres classes "
"même copie de l'objet ``x``. Il n'y a aucun moyen commun de détecter cette " "Python, leur comportement est identique. Il n'y a aucun moyen générique pour "
"situation. C'est pourquoi le décorateur :func:`dataclass` lève :exc:" "les classes de données de détecter cette situation. C'est pourquoi le "
"`TypeError` si une valeur par défaut est de type ``list``, ``dict`` ou " "décorateur :func:`dataclass` lève :exc:`TypeError` s'il détecte un paramètre "
"``set`` est détectée. Cette solution n'est pas parfaite, mais permet " "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." "d'éviter la majorité des erreurs."
#: library/dataclasses.rst:738 #: library/dataclasses.rst:738
@ -1145,12 +1152,17 @@ msgstr ""
"Pour qu'un champ d'un type muable soit par défaut initialisé à un nouvel " "Pour qu'un champ d'un type muable soit par défaut initialisé à un nouvel "
"objet pour chaque instance, utilisez une fonction de fabrique :" "objet pour chaque instance, utilisez une fonction de fabrique :"
# suit un ':'
#: library/dataclasses.rst:747 #: library/dataclasses.rst:747
msgid "" msgid ""
"Instead of looking for and disallowing objects of type ``list``, ``dict``, " "Instead of looking for and disallowing objects of type ``list``, ``dict``, "
"or ``set``, unhashable objects are now not allowed as default values. " "or ``set``, unhashable objects are now not allowed as default values. "
"Unhashability is used to approximate mutability." "Unhashability is used to approximate mutability."
msgstr "" 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" #~ msgid "Module-level decorators, classes, and functions"
#~ msgstr "Décorateurs, classes et fonctions du module" #~ msgstr "Décorateurs, classes et fonctions du module"