forked from AFPy/python-docs-fr
Compare commits
10 Commits
7c032b9061
...
d93a0a7bf4
Author | SHA1 | Date |
---|---|---|
Julien Palard | d93a0a7bf4 | |
Christophe Nanteuil | 6e3ce23f62 | |
Julien Palard | 20e75e0336 | |
Christophe Nanteuil | 4afdbf71c5 | |
Yannick Gingras | 141c4ad19f | |
Christophe Nanteuil | e13701a98a | |
eviau | ad8e6dbbd4 | |
eviau | c1816e6115 | |
houedji.espoir | 1ff8b3c030 | |
Julien Palard | 9527ea2b91 |
|
@ -264,7 +264,8 @@ Troisième étape: Traduction
|
|||
===========================
|
||||
|
||||
Avec Poedit
|
||||
---------------
|
||||
-----------
|
||||
|
||||
Ici, remplacez « library/sys.po » par le fichier que vous avez choisi précédemment.
|
||||
|
||||
.. code-block:: bash
|
||||
|
@ -272,7 +273,12 @@ Ici, remplacez « library/sys.po » par le fichier que vous avez choisi préc
|
|||
poedit library/sys.po
|
||||
|
||||
|
||||
Ou lancez simplement Poedit puis « Fichier » → « Ouvrir ».
|
||||
Ou lancez simplement Poedit puis « Fichier » → « Ouvrir ».
|
||||
|
||||
Il n'est pas obligatoire de terminer un fichier, ni de le travailler
|
||||
de haut en bas, chacun traduit ce qu'il souhaite. Cependant évitons de
|
||||
changer plus de 200 lignes par *pull request* (pour le confort des
|
||||
relecteurs). Faire plusieurs *pull requests* est bien sûr autorisé.
|
||||
|
||||
|
||||
Vérifications après traduction
|
||||
|
@ -613,6 +619,7 @@ roughly approximativement, à peu près (on ne traduit pas
|
|||
« roughly equivalent » par « sensiblement équivalent »)
|
||||
setter mutateur
|
||||
simple quote guillemet simple
|
||||
slot emplacement
|
||||
socket connecteur ou interface de connexion
|
||||
sort trier (préféré), ordonner, classer
|
||||
specify définir, préciser (plutôt que « spécifier »)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5,14 +5,15 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2022-10-18 12:22+0200\n"
|
||||
"Last-Translator: Julien Palard <julien@palard.fr>\n"
|
||||
"POT-Creation-Date: 2023-07-22 15:34+0200\n"
|
||||
"PO-Revision-Date: 2023-07-27 23:20+0200\n"
|
||||
"Last-Translator: Christophe Nanteuil <christophe.nanteuil@gmail.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.2.2\n"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:7
|
||||
msgid "Defining Extension Types: Tutorial"
|
||||
|
@ -37,7 +38,6 @@ msgid "The Basics"
|
|||
msgstr "Les bases"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:26
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The :term:`CPython` runtime sees all Python objects as variables of type :c:"
|
||||
"expr:`PyObject*`, which serves as a \"base type\" for all Python objects. "
|
||||
|
@ -49,7 +49,7 @@ msgid ""
|
|||
"functions are called \"type methods\"."
|
||||
msgstr ""
|
||||
":term:`CPython` considère que tous les objets Python sont des variables de "
|
||||
"type :c:type:`PyObject\\*`, qui sert de type de base pour tous les objets "
|
||||
"type :c:expr:`PyObject*`, qui sert de type de base pour tous les objets "
|
||||
"Python. La structure de :c:type:`PyObject` ne contient que le :term:"
|
||||
"`compteur de références <reference count>` et un pointeur vers un objet de "
|
||||
"type « type de l'objet ». C'est ici que tout se joue : l'objet type "
|
||||
|
@ -76,6 +76,7 @@ msgstr ""
|
|||
"donc un module minimaliste mais suffisant qui définit un nouveau type nommé :"
|
||||
"class:`Custom` dans le module d'extension :mod:`custom` :"
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:43
|
||||
msgid ""
|
||||
"What we're showing here is the traditional way of defining *static* "
|
||||
|
@ -83,7 +84,7 @@ msgid ""
|
|||
"allows defining heap-allocated extension types using the :c:func:"
|
||||
"`PyType_FromSpec` function, which isn't covered in this tutorial."
|
||||
msgstr ""
|
||||
"Ce qui est montré ici est la manière traditionnelle de définir des types "
|
||||
"ce qui est montré ici est la manière traditionnelle de définir des types "
|
||||
"d'extension *statiques*, et cela convient dans la majorité des cas. L'API C "
|
||||
"permet aussi de définir des types alloués sur le tas, via la fonction :c:"
|
||||
"func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel."
|
||||
|
@ -128,7 +129,6 @@ msgid "The first bit is::"
|
|||
msgstr "Commençons par ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:67
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"This is what a Custom object will contain. ``PyObject_HEAD`` is mandatory "
|
||||
"at the start of each object struct and defines a field called ``ob_base`` of "
|
||||
|
@ -146,12 +146,13 @@ msgstr ""
|
|||
"raison d'être de ces macros est d'abstraire l'agencement de la structure, et "
|
||||
"ainsi de permettre l'ajout de champs en :ref:`mode débogage <debug-build>`."
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:76
|
||||
msgid ""
|
||||
"There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be "
|
||||
"wary of adding one by accident: some compilers will complain."
|
||||
msgstr ""
|
||||
"Il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. "
|
||||
"il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. "
|
||||
"Attention à ne pas l'ajouter par accident : certains compilateurs pourraient "
|
||||
"s'en plaindre."
|
||||
|
||||
|
@ -169,13 +170,14 @@ msgstr ""
|
|||
msgid "The second bit is the definition of the type object. ::"
|
||||
msgstr "La deuxième partie est la définition de l'objet type ::"
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:101
|
||||
msgid ""
|
||||
"We recommend using C99-style designated initializers as above, to avoid "
|
||||
"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
|
||||
"also to avoid caring about the fields' declaration order."
|
||||
msgstr ""
|
||||
"Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
|
||||
"nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
|
||||
"remplir la structure, comme ci-dessus, afin d'éviter d'avoir à lister les "
|
||||
"champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas "
|
||||
"vous soucier de leur ordre."
|
||||
|
@ -222,7 +224,7 @@ msgid ""
|
|||
"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
|
||||
msgstr ""
|
||||
"Notez que le nom comporte un point : il inclut le nom du module et le nom du "
|
||||
"type. Dans ce cas le module est :mod:`custom`, et le type est :class:"
|
||||
"type. Dans ce cas le module est :mod:`custom` et le type est :class:"
|
||||
"`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer "
|
||||
"correctement son type, avec le point, est important pour le rendre "
|
||||
"compatible avec :mod:`pydoc` et :mod:`pickle`. ::"
|
||||
|
@ -238,6 +240,7 @@ msgstr ""
|
|||
"n'est utilisé que pour les objets de taille variable, sinon il doit rester à "
|
||||
"zéro."
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:144
|
||||
msgid ""
|
||||
"If you want your type to be subclassable from Python, and your type has the "
|
||||
|
@ -251,7 +254,7 @@ msgid ""
|
|||
"type will be :class:`object`, or else you will be adding data members to "
|
||||
"your base type, and therefore increasing its size."
|
||||
msgstr ""
|
||||
"Si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
|
||||
"si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
|
||||
"votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, "
|
||||
"vous rencontrerez des problèmes avec l'héritage multiple. Une sous-classe "
|
||||
"Python de votre type devra lister votre type en premier dans son :attr:"
|
||||
|
@ -263,11 +266,9 @@ msgstr ""
|
|||
"augmentant ainsi sa taille)."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:154
|
||||
#, fuzzy
|
||||
msgid "We set the class flags to :c:macro:`Py_TPFLAGS_DEFAULT`. ::"
|
||||
msgstr ""
|
||||
"On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
|
||||
"type. ::"
|
||||
"Nous définissons les drapeaux de la classe à :c:macro:`Py_TPFLAGS_DEFAULT` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:158
|
||||
msgid ""
|
||||
|
@ -277,14 +278,14 @@ msgid ""
|
|||
msgstr ""
|
||||
"Chaque type doit inclure cette constante dans ses options : elle active tous "
|
||||
"les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de plus "
|
||||
"de membres, vous pouvez la combiner à d'autres constantes avec un *ou* "
|
||||
"de membres, vous pouvez la combiner à d'autres constantes avec un *OU* "
|
||||
"binaire."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:162
|
||||
msgid ""
|
||||
"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
|
||||
msgstr ""
|
||||
"On fournit une *docstring* pour ce type via le membre :c:member:"
|
||||
"Nous fournissons une *docstring* pour ce type via le membre :c:member:"
|
||||
"`~PyTypeObject.tp_doc`. ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:166
|
||||
|
@ -337,7 +338,7 @@ msgstr ""
|
|||
|
||||
#: extending/newtypes_tutorial.rst:207
|
||||
msgid "in a file called :file:`setup.py`; then typing"
|
||||
msgstr ""
|
||||
msgstr "dans un fichier appelé :file:`setup.py` ; puis en tapant"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:213
|
||||
msgid ""
|
||||
|
@ -345,16 +346,22 @@ msgid ""
|
|||
"to that directory and fire up Python --- you should be able to ``import "
|
||||
"custom`` and play around with Custom objects."
|
||||
msgstr ""
|
||||
"à un shell doit produire un fichier :file:`custom.so` dans un sous-"
|
||||
"répertoire ; déplacez-vous dans ce répertoire et lancez Python — vous "
|
||||
"devriez pouvoir faire ``import custom`` et jouer avec des objets "
|
||||
"personnalisés."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:217
|
||||
msgid "That wasn't so hard, was it?"
|
||||
msgstr ""
|
||||
msgstr "Ce n'était pas si difficile, n'est-ce pas ?"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:219
|
||||
msgid ""
|
||||
"Of course, the current Custom type is pretty uninteresting. It has no data "
|
||||
"and doesn't do anything. It can't even be subclassed."
|
||||
msgstr ""
|
||||
"Bien sûr, le type personnalisé actuel est assez inintéressant. Il n'a pas de "
|
||||
"données et ne fait rien. Il ne peut même pas être sous-classé."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:223
|
||||
msgid ""
|
||||
|
@ -365,10 +372,17 @@ msgid ""
|
|||
"Packaging User's Guide <https://packaging.python.org/tutorials/distributing-"
|
||||
"packages/>`_."
|
||||
msgstr ""
|
||||
"Bien que cette documentation présente le module standard :mod:`distutils` "
|
||||
"pour la construction d'extensions C, il est recommandé dans les cas "
|
||||
"d'utilisation réels d'utiliser la bibliothèque ``setuptools`` plus récente "
|
||||
"et mieux entretenue. La documentation sur la façon de procéder est hors de "
|
||||
"portée de ce document et peut être trouvée dans le `Python Packaging User's "
|
||||
"Guide <https://packaging.python.org/tutorials/distributing-packages/>`_."
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:231
|
||||
msgid "Adding data and methods to the Basic example"
|
||||
msgstr ""
|
||||
msgstr "ajout de données et de méthodes à l'exemple basique"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:233
|
||||
msgid ""
|
||||
|
@ -376,20 +390,25 @@ msgid ""
|
|||
"make the type usable as a base class. We'll create a new module, :mod:"
|
||||
"`custom2` that adds these capabilities:"
|
||||
msgstr ""
|
||||
"Étendons l'exemple de base pour ajouter des données et des méthodes. Rendons "
|
||||
"également le type utilisable comme classe de base. Nous allons créer un "
|
||||
"nouveau module, :mod:`custom2` qui ajoute ces fonctionnalités :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:240
|
||||
msgid "This version of the module has a number of changes."
|
||||
msgstr ""
|
||||
msgstr "Cette version du module comporte un certain nombre de modifications."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:242
|
||||
msgid "We've added an extra include::"
|
||||
msgstr ""
|
||||
msgstr "Nous avons ajouté un nouvel *include* ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:246
|
||||
msgid ""
|
||||
"This include provides declarations that we use to handle attributes, as "
|
||||
"described a bit later."
|
||||
msgstr ""
|
||||
"Cet *include* fournit des déclarations que nous utilisons pour gérer les "
|
||||
"attributs, comme décrit un peu plus loin."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:249
|
||||
msgid ""
|
||||
|
@ -398,20 +417,27 @@ msgid ""
|
|||
"strings containing first and last names. The *number* attribute is a C "
|
||||
"integer."
|
||||
msgstr ""
|
||||
"Le type :class:`Custom` a maintenant trois attributs de données dans sa "
|
||||
"structure C, *first*, *last* et *number*. Les variables *first* et *last* "
|
||||
"sont des chaînes Python contenant les noms et prénoms. L'attribut *number* "
|
||||
"est un entier C."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:253
|
||||
msgid "The object structure is updated accordingly::"
|
||||
msgstr ""
|
||||
msgstr "La structure de l'objet est mise à jour en conséquence ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:262
|
||||
msgid ""
|
||||
"Because we now have data to manage, we have to be more careful about object "
|
||||
"allocation and deallocation. At a minimum, we need a deallocation method::"
|
||||
msgstr ""
|
||||
"Comme nous avons maintenant des données à gérer, nous devons faire plus "
|
||||
"attention à l'allocation et à la libération d'objets. Au minimum, nous avons "
|
||||
"besoin d'une méthode de dés-allocation ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:273
|
||||
msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::"
|
||||
msgstr ""
|
||||
msgstr "qui est assignée au membre :c:member:`~PyTypeObject.tp_dealloc` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:277
|
||||
msgid ""
|
||||
|
@ -423,6 +449,13 @@ msgid ""
|
|||
"object's type might not be :class:`CustomType`, because the object may be an "
|
||||
"instance of a subclass."
|
||||
msgstr ""
|
||||
"Cette méthode efface d'abord le nombre de références des deux attributs "
|
||||
"Python. :c:func:`Py_XDECREF` gère correctement le cas où son argument est "
|
||||
"``NULL`` (ce qui peut arriver ici si ``tp_new`` échoue à mi-chemin). Elle "
|
||||
"appelle ensuite le membre :c:member:`~PyTypeObject.tp_free` du type de "
|
||||
"l'objet (calculé par ``Py_TYPE(self)``) pour libérer la mémoire de l'objet. "
|
||||
"Notez que le type de l'objet peut ne pas être :class:`CustomType`, car "
|
||||
"l'objet peut être une instance d'une sous-classe."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:286
|
||||
msgid ""
|
||||
|
@ -432,16 +465,23 @@ msgid ""
|
|||
"argument. Otherwise, the compiler will emit a warning. This is object-"
|
||||
"oriented polymorphism, in C!"
|
||||
msgstr ""
|
||||
"La conversion explicite en ``destructor`` ci-dessus est nécessaire car nous "
|
||||
"avons défini ``Custom_dealloc`` pour prendre un argument ``CustomObject *``, "
|
||||
"mais le pointeur de fonction ``tp_dealloc`` s'attend à recevoir un argument "
|
||||
"``PyObject *``. Sinon, le compilateur émet un avertissement. C'est du "
|
||||
"polymorphisme orienté objet, en C !"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:292
|
||||
msgid ""
|
||||
"We want to make sure that the first and last names are initialized to empty "
|
||||
"strings, so we provide a ``tp_new`` implementation::"
|
||||
msgstr ""
|
||||
"Nous voulons nous assurer que le prénom et le nom sont initialisés avec des "
|
||||
"chaînes vides, nous fournissons donc une implémentation ``tp_new`` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:316
|
||||
msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::"
|
||||
msgstr ""
|
||||
msgstr "et installez-le dans le membre :c:member:`~PyTypeObject.tp_new` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:320
|
||||
msgid ""
|
||||
|
@ -453,6 +493,14 @@ msgid ""
|
|||
"use the ``tp_new`` handler to initialize the ``first`` and ``last`` "
|
||||
"attributes to non-``NULL`` default values."
|
||||
msgstr ""
|
||||
"Le gestionnaire ``tp_new`` est responsable de la création (par opposition à "
|
||||
"l'initialisation) des objets du type. Il est exposé en Python en tant que "
|
||||
"méthode :meth:`__new__`. Il n'est pas nécessaire de définir un membre "
|
||||
"``tp_new``, et en effet de nombreux types d'extension réutiliseront "
|
||||
"simplement :c:func:`PyType_GenericNew` comme cela a été fait dans la "
|
||||
"première version du type ``Custom`` ci-dessus. Dans ce cas, nous utilisons "
|
||||
"le gestionnaire ``tp_new`` pour initialiser les attributs ``first`` et "
|
||||
"``last`` à des valeurs par défaut non ``NULL``."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:328
|
||||
msgid ""
|
||||
|
@ -463,24 +511,38 @@ msgid ""
|
|||
"often ignore the arguments, leaving the argument handling to initializer (a."
|
||||
"k.a. ``tp_init`` in C or ``__init__`` in Python) methods."
|
||||
msgstr ""
|
||||
"``tp_new`` reçoit le type en cours d'instanciation (pas nécessairement "
|
||||
"``CustomType``, si une sous-classe est instanciée) et tous les arguments "
|
||||
"passés lorsque le type a été appelé, et devrait renvoyer l'instance créée. "
|
||||
"Les gestionnaires ``tp_new`` acceptent toujours les arguments positionnels "
|
||||
"et nommés, mais ils ignorent souvent les arguments, laissant la gestion des "
|
||||
"arguments aux méthodes d'initialisation (alias ``tp_init`` en C ou "
|
||||
"``__init__`` en Python)."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:336
|
||||
msgid ""
|
||||
"``tp_new`` shouldn't call ``tp_init`` explicitly, as the interpreter will do "
|
||||
"it itself."
|
||||
msgstr ""
|
||||
"``tp_new`` ne doit pas appeler ``tp_init`` explicitement, car l'interpréteur "
|
||||
"le fera lui-même."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:339
|
||||
msgid ""
|
||||
"The ``tp_new`` implementation calls the :c:member:`~PyTypeObject.tp_alloc` "
|
||||
"slot to allocate memory::"
|
||||
msgstr ""
|
||||
"L'implémentation ``tp_new`` appelle l'emplacement :c:member:`~PyTypeObject."
|
||||
"tp_alloc` pour allouer de la mémoire ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:344
|
||||
msgid ""
|
||||
"Since memory allocation may fail, we must check the :c:member:`~PyTypeObject."
|
||||
"tp_alloc` result against ``NULL`` before proceeding."
|
||||
msgstr ""
|
||||
"Puisque l'allocation de mémoire peut échouer, nous devons vérifier le "
|
||||
"résultat :c:member:`~PyTypeObject.tp_alloc` par rapport à ``NULL`` avant de "
|
||||
"continuer."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:348
|
||||
msgid ""
|
||||
|
@ -489,6 +551,10 @@ msgid ""
|
|||
"class, which is :class:`object` by default. Most types use the default "
|
||||
"allocation strategy."
|
||||
msgstr ""
|
||||
"Nous n'avons pas rempli l'emplacement :c:member:`~PyTypeObject.tp_alloc` "
|
||||
"nous-mêmes. C'est :c:func:`PyType_Ready` qui le remplit pour nous car il en "
|
||||
"hérite de notre classe mère, qui est :class:`object` par défaut. La plupart "
|
||||
"des types utilisent la stratégie d'allocation par défaut."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:354
|
||||
msgid ""
|
||||
|
@ -502,16 +568,28 @@ msgid ""
|
|||
"correctly. (Specifically, you may not be able to create instances of such "
|
||||
"subclasses without getting a :exc:`TypeError`.)"
|
||||
msgstr ""
|
||||
"Si vous créez une :c:member:`~PyTypeObject.tp_new` coopérative (qui appelle :"
|
||||
"c:member:`~PyTypeObject.tp_new` ou :meth:`__new__` d'un type de base), vous "
|
||||
"ne devez *pas* essayer de déterminer quelle méthode appeler en utilisant "
|
||||
"l'ordre de résolution des méthodes au moment de l'exécution. Déterminez "
|
||||
"toujours statiquement quel type vous allez appeler, et appelez son :c:member:"
|
||||
"`~PyTypeObject.tp_new` directement, ou via ``type->tp_base->tp_new``. Si "
|
||||
"vous ne le faites pas, les sous-classes Python de votre type qui héritent "
|
||||
"également d'autres classes définies par Python risquent de ne pas "
|
||||
"fonctionner correctement. (Plus précisément, vous ne pourrez peut-être pas "
|
||||
"créer d'instances de telles sous-classes sans obtenir une :exc:`TypeError`.)"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:364
|
||||
msgid ""
|
||||
"We also define an initialization function which accepts arguments to provide "
|
||||
"initial values for our instance::"
|
||||
msgstr ""
|
||||
"Nous définissons également une fonction d'initialisation qui accepte des "
|
||||
"arguments pour fournir des valeurs initiales pour notre instance ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:393
|
||||
msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::"
|
||||
msgstr ""
|
||||
msgstr "en remplissant l'emplacement :c:member:`~PyTypeObject.tp_init`. ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:397
|
||||
msgid ""
|
||||
|
@ -520,6 +598,11 @@ msgid ""
|
|||
"Initializers always accept positional and keyword arguments, and they should "
|
||||
"return either ``0`` on success or ``-1`` on error."
|
||||
msgstr ""
|
||||
"L'emplacement :c:member:`~PyTypeObject.tp_init` est exposé en Python en tant "
|
||||
"que méthode :meth:`__init__`. Il est utilisé pour initialiser un objet après "
|
||||
"sa création. Les constructeurs acceptent toujours les arguments positionnels "
|
||||
"et nommés, et ils doivent renvoyer soit ``0`` en cas de succès, soit ``-1`` "
|
||||
"en cas d'erreur."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:402
|
||||
msgid ""
|
||||
|
@ -531,6 +614,13 @@ msgid ""
|
|||
"new attribute values. We might be tempted, for example to assign the "
|
||||
"``first`` member like this::"
|
||||
msgstr ""
|
||||
"Contrairement au gestionnaire ``tp_new``, il n'y a aucune garantie que "
|
||||
"``tp_init`` soit appelé (par exemple, le module :mod:`pickle` par défaut "
|
||||
"n'appelle pas :meth:`__init__` sur les instances *unpickled*). Il peut "
|
||||
"également être appelé plusieurs fois. N'importe qui peut appeler la méthode :"
|
||||
"meth:`__init__` sur nos objets. Pour cette raison, nous devons être très "
|
||||
"prudents lors de l'attribution des nouvelles valeurs d'attribut. On pourrait "
|
||||
"être tenté, par exemple, d'affecter le membre ``first`` comme ceci ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:416
|
||||
msgid ""
|
||||
|
@ -541,6 +631,12 @@ msgid ""
|
|||
"interpreter Lock <GIL>` and let arbitrary code run in other threads that "
|
||||
"accesses and modifies our object."
|
||||
msgstr ""
|
||||
"Mais ce serait risqué. Notre type ne limite pas le type du membre ``first``, "
|
||||
"il peut donc s'agir de n'importe quel type d'objet. Il pourrait avoir un "
|
||||
"destructeur qui provoque l'exécution de code essayant d'accéder au membre "
|
||||
"``first`` ; ou ce destructeur pourrait libérer le :term:`Global interpreter "
|
||||
"Lock <GIL>` et laisser du code arbitraire s'exécuter dans d'autres threads "
|
||||
"qui accèdent et modifient notre objet."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:423
|
||||
msgid ""
|
||||
|
@ -548,16 +644,22 @@ msgid ""
|
|||
"always reassign members before decrementing their reference counts. When "
|
||||
"don't we have to do this?"
|
||||
msgstr ""
|
||||
"Dans une optique paranoïaque et se prémunir contre cette éventualité, on "
|
||||
"réaffecte presque toujours les membres avant de décrémenter leur compteur de "
|
||||
"références. Quand ne devons-nous pas faire cela ?"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:427
|
||||
msgid "when we absolutely know that the reference count is greater than 1;"
|
||||
msgstr ""
|
||||
msgstr "lorsque l'on est sûr que le compteur de références est supérieur à 1 ;"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:429
|
||||
msgid ""
|
||||
"when we know that deallocation of the object [#]_ will neither release the :"
|
||||
"term:`GIL` nor cause any calls back into our type's code;"
|
||||
msgstr ""
|
||||
"lorsque nous savons que la libération de la mémoire de l'objet [#]_ ne "
|
||||
"libérera pas le :term:`GIL` ni ne provoquera de rappel dans le code de notre "
|
||||
"type ;"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:432
|
||||
msgid ""
|
||||
|
@ -565,17 +667,25 @@ msgid ""
|
|||
"tp_dealloc` handler on a type which doesn't support cyclic garbage "
|
||||
"collection [#]_."
|
||||
msgstr ""
|
||||
"lors de la décrémentation d'un compteur de références dans un gestionnaire :"
|
||||
"c:member:`~PyTypeObject.tp_dealloc` sur un type qui ne prend pas en charge "
|
||||
"le ramasse-miettes cyclique [#]_."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:435
|
||||
msgid ""
|
||||
"We want to expose our instance variables as attributes. There are a number "
|
||||
"of ways to do that. The simplest way is to define member definitions::"
|
||||
msgstr ""
|
||||
"Nous voulons exposer nos variables d'instance en tant qu'attributs. Il "
|
||||
"existe plusieurs façons de le faire. Le moyen le plus simple consiste à "
|
||||
"définir des définitions de membres ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:448
|
||||
msgid ""
|
||||
"and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::"
|
||||
msgstr ""
|
||||
"et placer les définitions dans l'emplacement :c:member:`~PyTypeObject."
|
||||
"tp_members` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:452
|
||||
msgid ""
|
||||
|
@ -583,6 +693,9 @@ msgid ""
|
|||
"documentation string. See the :ref:`Generic-Attribute-Management` section "
|
||||
"below for details."
|
||||
msgstr ""
|
||||
"Chaque définition de membre possède un nom, un type, un décalage, des "
|
||||
"indicateurs d'accès et une chaîne de documentation. Voir la section :ref:"
|
||||
"`Generic-Attribute-Management` ci-dessous pour plus de détails."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:456
|
||||
msgid ""
|
||||
|
@ -594,12 +707,22 @@ msgid ""
|
|||
"``NULL`` values, the members can be set to ``NULL`` if the attributes are "
|
||||
"deleted."
|
||||
msgstr ""
|
||||
"Un inconvénient de cette approche est qu'elle ne permet pas de restreindre "
|
||||
"les types d'objets pouvant être affectés aux attributs Python. Nous nous "
|
||||
"attendons à ce que le prénom et le nom soient des chaînes, mais tous les "
|
||||
"objets Python peuvent être affectés. De plus, les attributs peuvent être "
|
||||
"supprimés, en définissant les pointeurs C sur ``NULL``. Même si nous pouvons "
|
||||
"nous assurer que les membres sont initialisés avec des valeurs non ``NULL``, "
|
||||
"les membres peuvent être définis sur ``NULL`` si les attributs sont "
|
||||
"supprimés."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:463
|
||||
msgid ""
|
||||
"We define a single method, :meth:`Custom.name()`, that outputs the objects "
|
||||
"name as the concatenation of the first and last names. ::"
|
||||
msgstr ""
|
||||
"Nous définissons une seule méthode, :meth:`Custom.name()`, qui génère le nom "
|
||||
"des objets sous la forme de la concaténation des prénom et nom. ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:480
|
||||
msgid ""
|
||||
|
@ -610,6 +733,13 @@ msgid ""
|
|||
"to accept a positional argument tuple or keyword argument dictionary. This "
|
||||
"method is equivalent to the Python method:"
|
||||
msgstr ""
|
||||
"La méthode est implémentée comme une fonction C qui prend une instance :"
|
||||
"class:`Custom` (ou une sous-classe de :class:`Custom`) comme premier "
|
||||
"argument. Les méthodes prennent toujours une instance comme premier "
|
||||
"argument. Les méthodes prennent souvent aussi des arguments positionnels et "
|
||||
"nommés, mais dans ce cas nous n'en prenons aucun et n'avons pas besoin "
|
||||
"d'accepter un *n*-uplet d'arguments positionnels ou un dictionnaire en "
|
||||
"argument nommé. Cette méthode est équivalente à la méthode Python :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:492
|
||||
msgid ""
|
||||
|
@ -619,22 +749,32 @@ msgid ""
|
|||
"of these attributes and to restrict the attribute values to be strings. "
|
||||
"We'll see how to do that in the next section."
|
||||
msgstr ""
|
||||
"Notez que nous devons vérifier la possibilité que nos membres :attr:`first` "
|
||||
"et :attr:`last` soient ``NULL``. En effet, ils peuvent être supprimés, "
|
||||
"auquel cas ils sont définis sur ``NULL``. Il serait préférable d'empêcher la "
|
||||
"suppression de ces attributs et de limiter les valeurs d'attribut à des "
|
||||
"chaînes. Nous verrons comment procéder dans la section suivante."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:498
|
||||
msgid ""
|
||||
"Now that we've defined the method, we need to create an array of method "
|
||||
"definitions::"
|
||||
msgstr ""
|
||||
"Maintenant que nous avons défini la méthode, nous devons créer un tableau de "
|
||||
"définitions de méthode ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:508
|
||||
msgid ""
|
||||
"(note that we used the :c:macro:`METH_NOARGS` flag to indicate that the "
|
||||
"method is expecting no arguments other than *self*)"
|
||||
msgstr ""
|
||||
"(notez que nous avons utilisé le drapeau :c:macro:`METH_NOARGS` pour "
|
||||
"indiquer que la méthode n'attend aucun argument autre que *self*)"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:511
|
||||
msgid "and assign it to the :c:member:`~PyTypeObject.tp_methods` slot::"
|
||||
msgstr ""
|
||||
"et assignons-le à l'emplacement :c:member:`~PyTypeObject.tp_methods` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:515
|
||||
msgid ""
|
||||
|
@ -643,6 +783,11 @@ msgid ""
|
|||
"about the type of the object being created or used, so all we need to do is "
|
||||
"to add the :c:macro:`Py_TPFLAGS_BASETYPE` to our class flag definition::"
|
||||
msgstr ""
|
||||
"Enfin, nous rendons notre type utilisable comme classe de base pour le sous-"
|
||||
"classement. Nous avons écrit nos méthodes avec soin jusqu'à présent afin "
|
||||
"qu'elles ne fassent aucune hypothèse sur le type de l'objet créé ou utilisé, "
|
||||
"donc tout ce que nous avons à faire est d'ajouter la macro :c:macro:"
|
||||
"`Py_TPFLAGS_BASETYPE` à notre définition d'indicateur de classe ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:522
|
||||
msgid ""
|
||||
|
@ -650,14 +795,19 @@ msgid ""
|
|||
"module name in the :c:type:`PyModuleDef` struct, and update the full class "
|
||||
"name in the :c:type:`PyTypeObject` struct."
|
||||
msgstr ""
|
||||
"Nous renommons :c:func:`PyInit_custom` en :c:func:`PyInit_custom2`, mettons "
|
||||
"à jour le nom du module dans la structure :c:type:`PyModuleDef` et mettons à "
|
||||
"jour le nom complet de la classe dans la structure :c:type:`PyTypeObject`."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:526
|
||||
msgid "Finally, we update our :file:`setup.py` file to build the new module:"
|
||||
msgstr ""
|
||||
"Enfin, nous mettons à jour notre fichier :file:`setup.py` pour construire le "
|
||||
"nouveau module :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:539
|
||||
msgid "Providing finer control over data attributes"
|
||||
msgstr ""
|
||||
msgstr "Contrôle précis sur les attributs de données"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:541
|
||||
msgid ""
|
||||
|
@ -667,6 +817,12 @@ msgid ""
|
|||
"attr:`last` could be set to non-string values or even deleted. We want to "
|
||||
"make sure that these attributes always contain strings."
|
||||
msgstr ""
|
||||
"Dans cette section, nous assurons un contrôle plus précis sur la façon dont "
|
||||
"les attributs :attr:`first` et :attr:`last` sont définis dans l'exemple :"
|
||||
"class:`Custom`. Dans la version précédente de notre module, les variables "
|
||||
"d'instance :attr:`first` et :attr:`last` pouvaient être définies sur des "
|
||||
"valeurs autres que des chaînes ou même supprimées. Nous voulons nous assurer "
|
||||
"que ces attributs contiennent toujours des chaînes."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:550
|
||||
msgid ""
|
||||
|
@ -674,6 +830,10 @@ msgid ""
|
|||
"attributes, we'll use custom getter and setter functions. Here are the "
|
||||
"functions for getting and setting the :attr:`first` attribute::"
|
||||
msgstr ""
|
||||
"Pour avoir un meilleur contrôle sur les attributs :attr:`first` et :attr:"
|
||||
"`last`, nous utilisons des fonctions accesseur (*getter*) et mutateur "
|
||||
"(*setter*) personnalisées. Voici les fonctions pour obtenir et définir "
|
||||
"l'attribut :attr:`first` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:581
|
||||
msgid ""
|
||||
|
@ -684,6 +844,13 @@ msgid ""
|
|||
"getter and setter functions that decide the attribute to get or set based on "
|
||||
"data in the closure.)"
|
||||
msgstr ""
|
||||
"L'accesseur reçoit un objet :class:`Custom` et une fermeture qui est un "
|
||||
"pointeur vide. Dans ce cas, la fermeture est ignorée. (La fermeture prend en "
|
||||
"charge une utilisation avancée dans laquelle les données de définition sont "
|
||||
"transmises à l'accesseur et au mutateur. Cela pourrait, par exemple, être "
|
||||
"utilisé pour autoriser un seul ensemble de fonctions accesseur et mutateur "
|
||||
"qui décident de l'attribut à obtenir ou à définir en fonction des données "
|
||||
"dans la fermeture.)"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:587
|
||||
msgid ""
|
||||
|
@ -692,14 +859,19 @@ msgid ""
|
|||
"being deleted. In our setter, we raise an error if the attribute is deleted "
|
||||
"or if its new value is not a string."
|
||||
msgstr ""
|
||||
"Le mutateur reçoit l'objet :class:`Custom`, la nouvelle valeur et la "
|
||||
"fermeture. La nouvelle valeur peut être ``NULL``, auquel cas l'attribut est "
|
||||
"supprimé. Dans notre mutateur, nous levons une erreur si l'attribut est "
|
||||
"supprimé ou si sa nouvelle valeur n'est pas une chaîne."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:592
|
||||
msgid "We create an array of :c:type:`PyGetSetDef` structures::"
|
||||
msgstr ""
|
||||
msgstr "Nous créons un tableau de structures :c:type:`PyGetSetDef` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:602
|
||||
msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::"
|
||||
msgstr ""
|
||||
"et l'enregistrons dans l'emplacement :c:member:`~PyTypeObject.tp_getset` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:606
|
||||
msgid ""
|
||||
|
@ -707,16 +879,22 @@ msgid ""
|
|||
"mentioned above. In this case, we aren't using a closure, so we just pass "
|
||||
"``NULL``."
|
||||
msgstr ""
|
||||
"Le dernier élément d'une structure :c:type:`PyGetSetDef` est la fermeture "
|
||||
"mentionnée ci-dessus. Dans ce cas, nous n'utilisons pas de fermeture, nous "
|
||||
"passons donc simplement ``NULL``."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:609
|
||||
msgid "We also remove the member definitions for these attributes::"
|
||||
msgstr ""
|
||||
"Nous supprimons également les définitions de membre pour ces attributs :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:617
|
||||
msgid ""
|
||||
"We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only "
|
||||
"allow strings [#]_ to be passed::"
|
||||
msgstr ""
|
||||
"Nous devons également mettre à jour le gestionnaire :c:member:`~PyTypeObject."
|
||||
"tp_init` pour autoriser uniquement le passage des chaînes [#]_ ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:646
|
||||
msgid ""
|
||||
|
@ -727,6 +905,13 @@ msgid ""
|
|||
"these calls is in the ``tp_dealloc`` implementation, where there is the "
|
||||
"possibility that the initialization of these members failed in ``tp_new``."
|
||||
msgstr ""
|
||||
"Avec ces modifications, nous pouvons garantir que les membres ``first`` et "
|
||||
"``last`` ne sont jamais ``NULL``, nous pouvons donc supprimer les "
|
||||
"vérifications des valeurs ``NULL`` dans presque tous les cas. Cela signifie "
|
||||
"que la plupart des appels :c:func:`Py_XDECREF` peuvent être convertis en "
|
||||
"appels :c:func:`Py_DECREF`. Le seul endroit où nous ne pouvons pas modifier "
|
||||
"ces appels est dans l'implémentation de ``tp_dealloc``, où il est possible "
|
||||
"que l'initialisation de ces membres ait échoué dans ``tp_new``."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:653
|
||||
msgid ""
|
||||
|
@ -734,10 +919,14 @@ msgid ""
|
|||
"initialization function, as we did before, and we add an extra definition to "
|
||||
"the :file:`setup.py` file."
|
||||
msgstr ""
|
||||
"Nous renommons également la fonction d'initialisation du module et le nom du "
|
||||
"module dans la fonction d'initialisation, comme nous l'avons fait "
|
||||
"précédemment, et nous ajoutons une définition supplémentaire au fichier :"
|
||||
"file:`setup.py`."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:659
|
||||
msgid "Supporting cyclic garbage collection"
|
||||
msgstr ""
|
||||
msgstr "Prise en charge du ramasse-miettes cyclique"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:661
|
||||
msgid ""
|
||||
|
@ -745,6 +934,10 @@ msgid ""
|
|||
"can identify unneeded objects even when their reference counts are not zero. "
|
||||
"This can happen when objects are involved in cycles. For example, consider:"
|
||||
msgstr ""
|
||||
"Python a un :term:`ramasse-miettes cyclique <garbage collection>` qui peut "
|
||||
"identifier les objets inutiles même lorsque leur compteur de références "
|
||||
"n'est pas nul. Cela peut se produire lorsque des objets sont impliqués dans "
|
||||
"des cycles. Par exemple, considérons :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:671
|
||||
msgid ""
|
||||
|
@ -753,6 +946,11 @@ msgid ""
|
|||
"zero. Fortunately, Python's cyclic garbage collector will eventually figure "
|
||||
"out that the list is garbage and free it."
|
||||
msgstr ""
|
||||
"Dans cet exemple, nous créons une liste qui se contient elle-même. Lorsque "
|
||||
"nous la supprimons, il existe toujours une référence à elle-même. Son "
|
||||
"compteur de références ne tombe pas à zéro. Heureusement, le ramasse-miettes "
|
||||
"cyclique de Python finira par comprendre que la liste est un déchet et la "
|
||||
"libérera."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:676
|
||||
msgid ""
|
||||
|
@ -762,6 +960,12 @@ msgid ""
|
|||
"`Custom`, and subclasses may add arbitrary attributes. For any of those two "
|
||||
"reasons, :class:`Custom` objects can participate in cycles:"
|
||||
msgstr ""
|
||||
"Dans la seconde version de l'exemple :class:`Custom`, nous avons autorisé le "
|
||||
"stockage de n'importe quel type d'objet dans les attributs :attr:`first` ou :"
|
||||
"attr:`last` [#]_. De plus, dans les deuxième et troisième versions, nous "
|
||||
"avons autorisé le sous-classement de :class:`Custom`, et les sous-classes "
|
||||
"peuvent ajouter des attributs arbitraires. Pour l'une de ces deux raisons, "
|
||||
"les objets :class:`Custom` peuvent produire des cycles :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:690
|
||||
msgid ""
|
||||
|
@ -770,12 +974,19 @@ msgid ""
|
|||
"needs to fill two additional slots and to enable a flag that enables these "
|
||||
"slots:"
|
||||
msgstr ""
|
||||
"Pour permettre à une instance :class:`Custom` participant à des références "
|
||||
"cycliques d'être correctement détectée et collectée par le ramasse-miettes "
|
||||
"cyclique, notre type :class:`Custom` doit définir deux emplacements "
|
||||
"supplémentaires et activer un drapeau qui active ces emplacements :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:697
|
||||
msgid ""
|
||||
"First, the traversal method lets the cyclic GC know about subobjects that "
|
||||
"could participate in cycles::"
|
||||
msgstr ""
|
||||
"Tout d'abord, la méthode de parcours (*Custom_traverse*) permet au ramasse-"
|
||||
"miettes cyclique de connaître les sous-objets qui pourraient conduire à des "
|
||||
"cycles ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:717
|
||||
msgid ""
|
||||
|
@ -785,6 +996,11 @@ msgid ""
|
|||
"*arg* passed to the traversal method. It returns an integer value that must "
|
||||
"be returned if it is non-zero."
|
||||
msgstr ""
|
||||
"Pour chaque sous-objet pouvant conduire à des cycles, nous devons appeler la "
|
||||
"fonction :c:func:`visit`, qui est passée à la méthode de parcours. La "
|
||||
"fonction :c:func:`visit` prend comme arguments le sous-objet et l'argument "
|
||||
"supplémentaire *arg* passé à la méthode de parcours. Elle renvoie une valeur "
|
||||
"entière qui doit être renvoyée si elle est différente de zéro."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:723
|
||||
msgid ""
|
||||
|
@ -792,18 +1008,26 @@ msgid ""
|
|||
"functions. With :c:func:`Py_VISIT`, we can minimize the amount of "
|
||||
"boilerplate in ``Custom_traverse``::"
|
||||
msgstr ""
|
||||
"Python fournit une macro :c:func:`Py_VISIT` qui automatise l'appel des "
|
||||
"fonctions de visite. Avec :c:func:`Py_VISIT`, nous pouvons minimiser la "
|
||||
"quantité de code générique dans ``Custom_traverse`` ::"
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:736
|
||||
msgid ""
|
||||
"The :c:member:`~PyTypeObject.tp_traverse` implementation must name its "
|
||||
"arguments exactly *visit* and *arg* in order to use :c:func:`Py_VISIT`."
|
||||
msgstr ""
|
||||
"l'implémentation :c:member:`~PyTypeObject.tp_traverse` doit nommer ses "
|
||||
"arguments exactement *visit* et *arg* afin d'utiliser :c:func:`Py_VISIT`."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:739
|
||||
msgid ""
|
||||
"Second, we need to provide a method for clearing any subobjects that can "
|
||||
"participate in cycles::"
|
||||
msgstr ""
|
||||
"Deuxièmement, nous devons fournir une méthode pour effacer tous les sous-"
|
||||
"objets qui peuvent conduire à des cycles ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:750
|
||||
msgid ""
|
||||
|
@ -814,10 +1038,17 @@ msgid ""
|
|||
"attribute's destructor would call back into code that reads the attribute "
|
||||
"again (*especially* if there is a reference cycle)."
|
||||
msgstr ""
|
||||
"Notez l'utilisation de la macro :c:func:`Py_CLEAR`. C'est le moyen "
|
||||
"recommandé et sûr d'effacer les attributs de données de types arbitraires "
|
||||
"tout en décrémentant leur compteur de références. Si vous deviez appeler :c:"
|
||||
"func:`Py_XDECREF` à la place sur l'attribut avant de le définir sur "
|
||||
"``NULL``, il est possible que le destructeur de l'attribut appelle du code "
|
||||
"qui lit à nouveau l'attribut (*surtout* s'il existe un cycle de références)."
|
||||
|
||||
# suit un :
|
||||
#: extending/newtypes_tutorial.rst:758
|
||||
msgid "You could emulate :c:func:`Py_CLEAR` by writing::"
|
||||
msgstr ""
|
||||
msgstr "vous pouvez émuler :c:func:`Py_CLEAR` en écrivant ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:765
|
||||
msgid ""
|
||||
|
@ -825,6 +1056,9 @@ msgid ""
|
|||
"`Py_CLEAR` when deleting an attribute. Don't try to micro-optimize at the "
|
||||
"expense of robustness!"
|
||||
msgstr ""
|
||||
"Néanmoins, il est beaucoup plus facile et moins sujet aux erreurs de "
|
||||
"toujours utiliser :c:func:`Py_CLEAR` lors de la suppression d'un attribut. "
|
||||
"N'essayez pas de micro-optimiser au détriment de la robustesse !"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:769
|
||||
msgid ""
|
||||
|
@ -835,11 +1069,21 @@ msgid ""
|
|||
"members. Here is our reimplemented deallocator using :c:func:"
|
||||
"`PyObject_GC_UnTrack` and ``Custom_clear``::"
|
||||
msgstr ""
|
||||
"La fonction de libération de la mémoire ``Custom_dealloc`` peut appeler du "
|
||||
"code arbitraire lors de la suppression des attributs. Cela signifie que le "
|
||||
"ramasse-miettes cyclique peut être déclenché à l'intérieur de la fonction. "
|
||||
"Étant donné que le ramasse-miettes suppose que le nombre de références n'est "
|
||||
"pas nul, nous devons annuler le suivi de l'objet par le ramasse-miettes en "
|
||||
"appelant :c:func:`PyObject_GC_UnTrack` avant d'effacer les membres. Voici "
|
||||
"notre fonction de libération de la mémoire réimplémentée en utilisant :c:"
|
||||
"func:`PyObject_GC_UnTrack` et ``Custom_clear`` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:784
|
||||
msgid ""
|
||||
"Finally, we add the :c:macro:`Py_TPFLAGS_HAVE_GC` flag to the class flags::"
|
||||
msgstr ""
|
||||
"Enfin, nous ajoutons le drapeau :c:macro:`Py_TPFLAGS_HAVE_GC` aux drapeaux "
|
||||
"de la classe ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:788
|
||||
msgid ""
|
||||
|
@ -848,10 +1092,14 @@ msgid ""
|
|||
"them for cyclic garbage collection. Most extensions will use the versions "
|
||||
"automatically provided."
|
||||
msgstr ""
|
||||
"C'est à peu près tout. Si nous avions écrit des gestionnaires personnalisés :"
|
||||
"c:member:`~PyTypeObject.tp_alloc` ou :c:member:`~PyTypeObject.tp_free`, nous "
|
||||
"aurions besoin de les modifier pour le ramasse-miettes cyclique. La plupart "
|
||||
"des extensions utilisent les versions fournies automatiquement."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:794
|
||||
msgid "Subclassing other types"
|
||||
msgstr ""
|
||||
msgstr "Sous-classement d'autres types"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:796
|
||||
msgid ""
|
||||
|
@ -860,6 +1108,11 @@ msgid ""
|
|||
"can easily use the :c:type:`PyTypeObject` it needs. It can be difficult to "
|
||||
"share these :c:type:`PyTypeObject` structures between extension modules."
|
||||
msgstr ""
|
||||
"Il est possible de créer de nouveaux types d'extension dérivés de types "
|
||||
"existants. Il est plus facile d'hériter des types natifs, car une extension "
|
||||
"peut facilement utiliser le :c:type:`PyTypeObject` dont elle a besoin. Il "
|
||||
"peut être difficile de partager ces structures :c:type:`PyTypeObject` entre "
|
||||
"modules d'extension."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:801
|
||||
msgid ""
|
||||
|
@ -868,6 +1121,10 @@ msgid ""
|
|||
"with regular lists, but will have an additional :meth:`increment` method "
|
||||
"that increases an internal counter:"
|
||||
msgstr ""
|
||||
"Dans cet exemple, nous allons créer un type :class:`SubList` qui hérite du "
|
||||
"type intégré :class:`list`. Le nouveau type sera complètement compatible "
|
||||
"avec les listes natives, mais aura une méthode supplémentaire :meth:"
|
||||
"`increment` qui augmente un compteur interne :"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:821
|
||||
msgid ""
|
||||
|
@ -875,6 +1132,9 @@ msgid ""
|
|||
"examples in previous sections. We will break down the main differences "
|
||||
"between them. ::"
|
||||
msgstr ""
|
||||
"Comme vous pouvez le voir, le code source ressemble beaucoup aux exemples :"
|
||||
"class:`Custom` des sections précédentes. Analysons les principales "
|
||||
"différences ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:829
|
||||
msgid ""
|
||||
|
@ -882,6 +1142,9 @@ msgid ""
|
|||
"object structure must be the first value. The base type will already "
|
||||
"include the :c:func:`PyObject_HEAD` at the beginning of its structure."
|
||||
msgstr ""
|
||||
"La principale différence pour les objets d'un type dérivé est que la "
|
||||
"structure d'objet du type père doit être la première valeur. Le type père "
|
||||
"inclut déjà le :c:func:`PyObject_HEAD` au début de sa structure."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:833
|
||||
msgid ""
|
||||
|
@ -889,12 +1152,17 @@ msgid ""
|
|||
"pointer can be safely cast to both ``PyListObject *`` and ``SubListObject "
|
||||
"*``::"
|
||||
msgstr ""
|
||||
"Lorsqu'un objet Python est une instance de :class:`SubList`, son pointeur "
|
||||
"``PyObject *`` peut être trans-typé en toute sécurité vers ``PyListObject "
|
||||
"*`` et ``SubListObject *`` ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:845
|
||||
msgid ""
|
||||
"We see above how to call through to the :attr:`__init__` method of the base "
|
||||
"type."
|
||||
msgstr ""
|
||||
"Nous voyons ci-dessus comment appeler la méthode :attr:`__init__` du type "
|
||||
"père."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:848
|
||||
msgid ""
|
||||
|
@ -904,6 +1172,12 @@ msgid ""
|
|||
"memory for the object with its :c:member:`~PyTypeObject.tp_alloc`, but let "
|
||||
"the base class handle it by calling its own :c:member:`~PyTypeObject.tp_new`."
|
||||
msgstr ""
|
||||
"Ce modèle est important lors de l'écriture d'un type avec des membres "
|
||||
"personnalisés :c:member:`~PyTypeObject.tp_new` et :c:member:`~PyTypeObject."
|
||||
"tp_dealloc`. Le gestionnaire :c:member:`~PyTypeObject.tp_new` ne doit pas "
|
||||
"réellement allouer la mémoire pour l'objet avec son :c:member:`~PyTypeObject."
|
||||
"tp_alloc`, mais laisser la classe mère gérer ça en appelant sa propre :c:"
|
||||
"member:`~PyTypeObject.tp_new`."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:854
|
||||
msgid ""
|
||||
|
@ -913,6 +1187,11 @@ msgid ""
|
|||
"type:`PyList_Type`; it should be done later in the module initialization "
|
||||
"function::"
|
||||
msgstr ""
|
||||
"La structure :c:type:`PyTypeObject` prend en charge un :c:member:"
|
||||
"`~PyTypeObject.tp_base` spécifiant la classe mère concrète du type. En "
|
||||
"raison de problèmes de compilateur multiplateformes, vous ne pouvez pas "
|
||||
"remplir ce champ directement avec une référence à :c:type:`PyList_Type` ; "
|
||||
"cela doit être fait plus tard dans la fonction d'initialisation du module ::"
|
||||
|
||||
#: extending/newtypes_tutorial.rst:882
|
||||
msgid ""
|
||||
|
@ -922,12 +1201,19 @@ msgid ""
|
|||
"tp_alloc` slot with :c:func:`PyType_GenericNew` -- the allocation function "
|
||||
"from the base type will be inherited."
|
||||
msgstr ""
|
||||
"Avant d'appeler :c:func:`PyType_Ready`, la structure de type doit avoir "
|
||||
"l'emplacement :c:member:`~PyTypeObject.tp_base` rempli. Lorsque nous "
|
||||
"dérivons un type existant, il n'est pas nécessaire de remplir l'emplacement :"
|
||||
"c:member:`~PyTypeObject.tp_alloc` avec :c:func:`PyType_GenericNew` – la "
|
||||
"fonction d'allocation du type père sera héritée."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:888
|
||||
msgid ""
|
||||
"After that, calling :c:func:`PyType_Ready` and adding the type object to the "
|
||||
"module is the same as with the basic :class:`Custom` examples."
|
||||
msgstr ""
|
||||
"Ensuite, appeler :c:func:`PyType_Ready` et ajouter l'objet type au module se "
|
||||
"fait de la même manière qu'avec les exemples de base :class:`Custom`."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:893
|
||||
msgid "Footnotes"
|
||||
|
@ -938,12 +1224,17 @@ msgid ""
|
|||
"This is true when we know that the object is a basic type, like a string or "
|
||||
"a float."
|
||||
msgstr ""
|
||||
"C'est vrai lorsque nous savons que l'objet est un type de base, comme une "
|
||||
"chaîne ou un flottant."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:897
|
||||
msgid ""
|
||||
"We relied on this in the :c:member:`~PyTypeObject.tp_dealloc` handler in "
|
||||
"this example, because our type doesn't support garbage collection."
|
||||
msgstr ""
|
||||
"Nous nous sommes appuyés sur le gestionnaire :c:member:`~PyTypeObject."
|
||||
"tp_dealloc` dans cet exemple, car notre type ne prend pas en charge le "
|
||||
"ramasse-miettes."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:900
|
||||
msgid ""
|
||||
|
@ -954,6 +1245,13 @@ msgid ""
|
|||
"deallocating an instance of a string subclass won't call back into our "
|
||||
"objects."
|
||||
msgstr ""
|
||||
"Nous savons maintenant que les premier et dernier membres sont des chaînes, "
|
||||
"nous pourrions donc peut-être être moins prudents quant à la décrémentation "
|
||||
"de leur nombre de références, cependant, nous acceptons les instances de "
|
||||
"sous-classes de chaînes. Même si la libération de la mémoire des chaînes "
|
||||
"normales ne rappellera pas nos objets, nous ne pouvons pas garantir que la "
|
||||
"libération de mémoire d'une instance d'une sous-classe de chaîne ne "
|
||||
"rappellera pas nos objets."
|
||||
|
||||
#: extending/newtypes_tutorial.rst:906
|
||||
msgid ""
|
||||
|
@ -961,3 +1259,6 @@ msgid ""
|
|||
"could pass arbitrary :class:`str` subclasses and therefore still create "
|
||||
"reference cycles."
|
||||
msgstr ""
|
||||
"De plus, même avec nos attributs limités aux instances de chaînes, "
|
||||
"l'utilisateur pourrait passer des sous-classes arbitraires :class:`str` et "
|
||||
"donc encore créer des références cycliques."
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -6,25 +6,26 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-08-24 09:01+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2023-11-21 23:04+0100\n"
|
||||
"Last-Translator: Christophe Nanteuil <christophe.nanteuil@gmail.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.2.2\n"
|
||||
|
||||
#: library/email.contentmanager.rst:2
|
||||
msgid ":mod:`email.contentmanager`: Managing MIME Content"
|
||||
msgstr ""
|
||||
msgstr ":mod:`email.contentmanager` : gestion du contenu MIME"
|
||||
|
||||
#: library/email.contentmanager.rst:10
|
||||
msgid "**Source code:** :source:`Lib/email/contentmanager.py`"
|
||||
msgstr ""
|
||||
msgstr "**Code source :** :source:`Lib/email/contentmanager.py`"
|
||||
|
||||
#: library/email.contentmanager.rst:14
|
||||
msgid "[1]_"
|
||||
msgstr ""
|
||||
msgstr "[1]_"
|
||||
|
||||
#: library/email.contentmanager.rst:19
|
||||
msgid ""
|
||||
|
@ -32,6 +33,10 @@ msgid ""
|
|||
"to register converters between MIME content and other representations, as "
|
||||
"well as the ``get_content`` and ``set_content`` dispatch methods."
|
||||
msgstr ""
|
||||
"Classe mère pour les gestionnaires de contenu. Fournit les mécanismes de "
|
||||
"registre standard pour enregistrer les convertisseurs entre le contenu MIME "
|
||||
"et d'autres représentations, ainsi que les méthodes de répartition "
|
||||
"``get_content`` et ``set_content``."
|
||||
|
||||
#: library/email.contentmanager.rst:26
|
||||
msgid ""
|
||||
|
@ -40,30 +45,39 @@ msgid ""
|
|||
"the call. The expectation is that the handler will extract the payload from "
|
||||
"*msg* and return an object that encodes information about the extracted data."
|
||||
msgstr ""
|
||||
"Recherche une fonction de gestion en se basant sur le ``mimetype`` de *msg* "
|
||||
"(voir le paragraphe suivant), l'appelle en lui passant tous les arguments et "
|
||||
"renvoie le résultat de l'appel. Le gestionnaire doit extraire la charge "
|
||||
"utile de *msg* et renvoyer un objet qui encode les informations relatives "
|
||||
"aux données extraites."
|
||||
|
||||
#: library/email.contentmanager.rst:32
|
||||
msgid ""
|
||||
"To find the handler, look for the following keys in the registry, stopping "
|
||||
"with the first one found:"
|
||||
msgstr ""
|
||||
"Pour trouver le gestionnaire, recherche les clés suivantes dans le registre, "
|
||||
"en s'arrêtant à la première trouvée :"
|
||||
|
||||
#: library/email.contentmanager.rst:35
|
||||
msgid "the string representing the full MIME type (``maintype/subtype``)"
|
||||
msgstr ""
|
||||
msgstr "une chaîne représentant le type MIME complet (``maintype/subtype``) ;"
|
||||
|
||||
#: library/email.contentmanager.rst:36
|
||||
msgid "the string representing the ``maintype``"
|
||||
msgstr ""
|
||||
msgstr "une chaîne représentant le ``maintype`` ;"
|
||||
|
||||
#: library/email.contentmanager.rst:37
|
||||
msgid "the empty string"
|
||||
msgstr ""
|
||||
msgstr "une chaîne vide."
|
||||
|
||||
#: library/email.contentmanager.rst:39
|
||||
msgid ""
|
||||
"If none of these keys produce a handler, raise a :exc:`KeyError` for the "
|
||||
"full MIME type."
|
||||
msgstr ""
|
||||
"Si aucune de ces clés ne produit de gestionnaire, lève une :exc:`KeyError` "
|
||||
"pour le type MIME complet."
|
||||
|
||||
#: library/email.contentmanager.rst:45
|
||||
msgid ""
|
||||
|
@ -75,6 +89,14 @@ msgid ""
|
|||
"making other changes to *msg* as well, such as adding various MIME headers "
|
||||
"to encode information needed to interpret the stored data."
|
||||
msgstr ""
|
||||
"Si le ``maintype`` est ``multipart``, lève une :exc:`TypeError` ; sinon "
|
||||
"recherche une fonction de gestion en se basant sur le type de *obj* (voir le "
|
||||
"paragraphe suivant), appelle :meth:`~email.message.EmailMessage."
|
||||
"clear_content` sur le *msg* et appelle la fonction de gestion en lui passant "
|
||||
"tous les arguments. Le gestionnaire doit transformer et stocker *obj* en "
|
||||
"*msg*, apportant éventuellement d'autres modifications à *msg* également, "
|
||||
"comme l'ajout de divers en-têtes MIME pour coder les informations "
|
||||
"nécessaires à l'interprétation des données stockées."
|
||||
|
||||
#: library/email.contentmanager.rst:54
|
||||
msgid ""
|
||||
|
@ -82,24 +104,27 @@ msgid ""
|
|||
"look for the following keys in the registry, stopping with the first one "
|
||||
"found:"
|
||||
msgstr ""
|
||||
"Pour trouver le gestionnaire, récupère le type de *obj* (``typ = "
|
||||
"type(obj)``) et recherche les clés suivantes dans le registre, en s'arrêtant "
|
||||
"à la première trouvée :"
|
||||
|
||||
#: library/email.contentmanager.rst:58
|
||||
msgid "the type itself (``typ``)"
|
||||
msgstr ""
|
||||
msgstr "le type lui-même (``typ``) ;"
|
||||
|
||||
#: library/email.contentmanager.rst:59
|
||||
msgid ""
|
||||
"the type's fully qualified name (``typ.__module__ + '.' + typ."
|
||||
"__qualname__``)."
|
||||
msgstr ""
|
||||
msgstr "le nom complet du type (``typ.__module__ + '.' + typ.__qualname__``) ;"
|
||||
|
||||
#: library/email.contentmanager.rst:61
|
||||
msgid "the type's qualname (``typ.__qualname__``)"
|
||||
msgstr ""
|
||||
msgstr "le nom qualifié du type (``typ.__qualname__``) ;"
|
||||
|
||||
#: library/email.contentmanager.rst:62
|
||||
msgid "the type's name (``typ.__name__``)."
|
||||
msgstr ""
|
||||
msgstr "le nom du type (``typ.__name__``)."
|
||||
|
||||
#: library/email.contentmanager.rst:64
|
||||
msgid ""
|
||||
|
@ -109,18 +134,27 @@ msgid ""
|
|||
"for ``None``, raise a :exc:`KeyError` for the fully qualified name of the "
|
||||
"type."
|
||||
msgstr ""
|
||||
"Si aucune de ces clés ne correspond, répète toutes les vérifications ci-"
|
||||
"dessus pour chacun des types en suivant le :term:`MRO` (``typ.__mro__``). "
|
||||
"Enfin, si aucune clé ne produit de gestionnaire, recherche un gestionnaire "
|
||||
"pour la clé ``None``. S'il n'y a pas de gestionnaire pour ``None``, lève "
|
||||
"une :exc:`KeyError` pour le nom complet du type."
|
||||
|
||||
#: library/email.contentmanager.rst:70
|
||||
msgid ""
|
||||
"Also add a :mailheader:`MIME-Version` header if one is not present (see "
|
||||
"also :class:`.MIMEPart`)."
|
||||
msgstr ""
|
||||
"Ajoute également un en-tête :mailheader:`MIME-Version` s'il n'y en a pas "
|
||||
"(voir aussi :class:`.MIMEPart`)."
|
||||
|
||||
#: library/email.contentmanager.rst:76
|
||||
msgid ""
|
||||
"Record the function *handler* as the handler for *key*. For the possible "
|
||||
"values of *key*, see :meth:`get_content`."
|
||||
msgstr ""
|
||||
"Enregistre la fonction *handler* comme gestionnaire pour *key*. Pour les "
|
||||
"valeurs possibles de *key*, voir :meth:`get_content`."
|
||||
|
||||
#: library/email.contentmanager.rst:82
|
||||
msgid ""
|
||||
|
@ -128,10 +162,13 @@ msgid ""
|
|||
"*typekey* is passed to :meth:`set_content`. For the possible values of "
|
||||
"*typekey*, see :meth:`set_content`."
|
||||
msgstr ""
|
||||
"Enregistre *handler* comme fonction à appeler lorsqu'un objet d'un type "
|
||||
"correspondant à *typekey* est passé à :meth:`set_content`. Pour les valeurs "
|
||||
"possibles de *typekey*, voir :meth:`set_content`."
|
||||
|
||||
#: library/email.contentmanager.rst:88
|
||||
msgid "Content Manager Instances"
|
||||
msgstr ""
|
||||
msgstr "Instances de gestionnaires de contenus"
|
||||
|
||||
#: library/email.contentmanager.rst:90
|
||||
msgid ""
|
||||
|
@ -140,6 +177,11 @@ msgid ""
|
|||
"`raw_data_manager` is the :attr:`~email.policy.EmailPolicy.content_manager` "
|
||||
"provided by :attr:`~email.policy.EmailPolicy` and its derivatives."
|
||||
msgstr ""
|
||||
"Actuellement, le paquet *email* ne fournit qu'un seul gestionnaire de "
|
||||
"contenu concret, :data:`raw_data_manager`, bien que d'autres puissent être "
|
||||
"ajoutés à l'avenir. :data:`raw_data_manager` est le :attr:`~email.policy."
|
||||
"EmailPolicy.content_manager` fourni par :attr:`~email.policy.EmailPolicy` et "
|
||||
"ses dérivés."
|
||||
|
||||
#: library/email.contentmanager.rst:99
|
||||
msgid ""
|
||||
|
@ -153,6 +195,16 @@ msgid ""
|
|||
"encoding, and it enables the use of the various ``add_`` methods, thereby "
|
||||
"simplifying the creation of multipart messages."
|
||||
msgstr ""
|
||||
"Ce gestionnaire de contenu ne fournit qu'une interface minimale au-delà de "
|
||||
"celle fournie par :class:`~email.message.Message` lui-même : il prend "
|
||||
"seulement en charge le texte, les chaînes d'octets brutes et les objets :"
|
||||
"class:`~email.message.Message`. Néanmoins, il offre des avantages "
|
||||
"significatifs par rapport à l'API de base : ``get_content`` sur une partie "
|
||||
"de texte renvoie une chaîne Unicode sans que l'application ait besoin de la "
|
||||
"décoder manuellement, ``set_content`` fournit de nombreuses options pour "
|
||||
"contrôler les en-têtes ajoutés à une partie et l'encodage du transfert de "
|
||||
"contenu, et il permet l'utilisation des différentes méthodes ``add_``, ce "
|
||||
"qui simplifie la création de messages en plusieurs parties."
|
||||
|
||||
#: library/email.contentmanager.rst:111
|
||||
msgid ""
|
||||
|
@ -163,27 +215,41 @@ msgid ""
|
|||
"*errors* is specified, use it as the error handler when decoding the payload "
|
||||
"to unicode. The default error handler is ``replace``."
|
||||
msgstr ""
|
||||
"Renvoie la charge utile de la partie sous la forme d'une chaîne (pour les "
|
||||
"parties ``text``), d'un objet :class:`~email.message.EmailMessage` (pour les "
|
||||
"parties ``message/rfc822``) ou d'un objet ``bytes`` (pour tous les autres "
|
||||
"types à l'exception de *multipart*). Lève une :exc:`KeyError` si cette "
|
||||
"méthode est appelée sur un ``multipart``. S'il s'agit d'une partie ``text`` "
|
||||
"et que *errors* est spécifié, ce paramètre est utilisé comme gestionnaire "
|
||||
"d'erreurs lors du décodage de la charge utile en Unicode. Le gestionnaire "
|
||||
"d'erreurs par défaut est ``replace``."
|
||||
|
||||
#: library/email.contentmanager.rst:130
|
||||
msgid "Add headers and payload to *msg*:"
|
||||
msgstr ""
|
||||
msgstr "Ajoute des en-têtes et une charge utile à *msg* :"
|
||||
|
||||
#: library/email.contentmanager.rst:132
|
||||
msgid ""
|
||||
"Add a :mailheader:`Content-Type` header with a ``maintype/subtype`` value."
|
||||
msgstr ""
|
||||
"Ajoute un en-tête :mailheader:`Content-Type` avec une valeur ``maintype/"
|
||||
"subtype``."
|
||||
|
||||
#: library/email.contentmanager.rst:135
|
||||
msgid ""
|
||||
"For ``str``, set the MIME ``maintype`` to ``text``, and set the subtype to "
|
||||
"*subtype* if it is specified, or ``plain`` if it is not."
|
||||
msgstr ""
|
||||
"Pour ``str``, définit le ``maintype`` MIME à ``text`` et définit le sous-"
|
||||
"type à *subtype* s'il est spécifié, ou à ``plain`` s'il ne l'est pas."
|
||||
|
||||
#: library/email.contentmanager.rst:137
|
||||
msgid ""
|
||||
"For ``bytes``, use the specified *maintype* and *subtype*, or raise a :exc:"
|
||||
"`TypeError` if they are not specified."
|
||||
msgstr ""
|
||||
"Pour ``bytes``, utilise les *maintype* et *subtype* spécifiés, ou lève une :"
|
||||
"exc:`TypeError` s'ils ne sont pas spécifiés."
|
||||
|
||||
#: library/email.contentmanager.rst:139
|
||||
msgid ""
|
||||
|
@ -192,6 +258,11 @@ msgid ""
|
|||
"``rfc822`` if it is not. If *subtype* is ``partial``, raise an error "
|
||||
"(``bytes`` objects must be used to construct ``message/partial`` parts)."
|
||||
msgstr ""
|
||||
"Pour les objets :class:`~email.message.EmailMessage`, définit le type "
|
||||
"principal (*maintype*) à ``message`` et définit le sous-type à *subtype* "
|
||||
"s'il est spécifié ou à ``rfc822`` s'il ne l'est pas. Si *subtype* est "
|
||||
"``partial``, lève une erreur (les objets ``bytes`` doivent être utilisés "
|
||||
"pour construire les parties ``message/partial``)."
|
||||
|
||||
#: library/email.contentmanager.rst:145
|
||||
msgid ""
|
||||
|
@ -200,6 +271,11 @@ msgid ""
|
|||
"``utf-8``. If the specified *charset* is a known alias for a standard MIME "
|
||||
"charset name, use the standard charset instead."
|
||||
msgstr ""
|
||||
"Si *charset* est fourni (qui n'est valide que pour ``str``), encode la "
|
||||
"chaîne en octets en utilisant le jeu de caractères spécifié. La valeur par "
|
||||
"défaut est ``utf-8``. Si le *charset* spécifié est un alias connu pour un "
|
||||
"nom de jeu de caractères MIME standard, utilise plutôt le jeu de caractères "
|
||||
"standard."
|
||||
|
||||
#: library/email.contentmanager.rst:150
|
||||
msgid ""
|
||||
|
@ -210,12 +286,21 @@ msgid ""
|
|||
"specified encoding (for example, specifying a *cte* of ``7bit`` for an input "
|
||||
"that contains non-ASCII values), raise a :exc:`ValueError`."
|
||||
msgstr ""
|
||||
"Si *cte* est défini, encode la charge utile à l'aide de l'encodage de "
|
||||
"transfert de contenu spécifié et définit l'en-tête :mailheader:`Content-"
|
||||
"Transfer-Encoding` à cette valeur. Les valeurs possibles pour *cte* sont "
|
||||
"``quoted-printable``, ``base64``, ``7bit``, ``8bit`` et ``binary``. Si "
|
||||
"l'entrée ne peut pas être encodée dans l'encodage spécifié (par exemple, en "
|
||||
"spécifiant un *cte* de ``7bit`` pour une entrée qui contient des valeurs non-"
|
||||
"ASCII), lève une :exc:`ValueError`."
|
||||
|
||||
#: library/email.contentmanager.rst:158
|
||||
msgid ""
|
||||
"For ``str`` objects, if *cte* is not set use heuristics to determine the "
|
||||
"most compact encoding."
|
||||
msgstr ""
|
||||
"Pour les objets ``str``, si *cte* n'est pas défini, utilise une heuristique "
|
||||
"pour déterminer l'encodage le plus compact."
|
||||
|
||||
#: library/email.contentmanager.rst:160
|
||||
msgid ""
|
||||
|
@ -225,13 +310,24 @@ msgid ""
|
|||
"body``. For ``message/rfc822``, use ``8bit`` if *cte* is not specified. "
|
||||
"For all other values of *subtype*, use ``7bit``."
|
||||
msgstr ""
|
||||
"Pour :class:`~email.message.EmailMessage`, selon la :rfc:`2046`, pour le "
|
||||
"*subtype* ``rfc822`, lève une erreur pour un *cte* valant ``quoted-"
|
||||
"printable`` ou ``base64``. Pour le *subtype* ``external-body``, lève une "
|
||||
"erreur pour tout *cte* autre que ``7bit``. Pour ``message/rfc822``, la "
|
||||
"valeur par défaut de *cte* est ``8bit``. Pour toutes les autres valeurs de "
|
||||
"*sous-type*, la valeur par défaut de *cte* est ``7bit``."
|
||||
|
||||
# suit un :
|
||||
#: library/email.contentmanager.rst:167
|
||||
msgid ""
|
||||
"A *cte* of ``binary`` does not actually work correctly yet. The "
|
||||
"``EmailMessage`` object as modified by ``set_content`` is correct, but :"
|
||||
"class:`~email.generator.BytesGenerator` does not serialize it correctly."
|
||||
msgstr ""
|
||||
"la valeur ``binary`` pour *cte* ne fonctionne pas encore correctement. "
|
||||
"L'objet ``EmailMessage`` tel que modifié par ``set_content`` est correct, "
|
||||
"mais :class:`~email.generator.BytesGenerator` ne le sérialise pas "
|
||||
"correctement."
|
||||
|
||||
#: library/email.contentmanager.rst:172
|
||||
msgid ""
|
||||
|
@ -241,18 +337,27 @@ msgid ""
|
|||
"*filename* is also not specified, do not add the header. The only valid "
|
||||
"values for *disposition* are ``attachment`` and ``inline``."
|
||||
msgstr ""
|
||||
"Si *disposition* est spécifié, utilise cette valeur pour l'en-tête :"
|
||||
"mailheader:`Content-Disposition`. S'il n'est pas spécifié et que *filename* "
|
||||
"est spécifié, utilise la valeur ``attachment`` pour l'en-tête. Si ni "
|
||||
"*disposition* ni *filename* ne sont spécifiés, n'ajoute pas cet en-tête. Les "
|
||||
"seules valeurs valides pour *disposition* sont ``attachment`` et ``inline``."
|
||||
|
||||
#: library/email.contentmanager.rst:179
|
||||
msgid ""
|
||||
"If *filename* is specified, use it as the value of the ``filename`` "
|
||||
"parameter of the :mailheader:`Content-Disposition` header."
|
||||
msgstr ""
|
||||
"Si *filename* est spécifié, utilise cette valeur pour le paramètre "
|
||||
"``filename`` de l'en-tête :mailheader:`Content-Disposition`."
|
||||
|
||||
#: library/email.contentmanager.rst:182
|
||||
msgid ""
|
||||
"If *cid* is specified, add a :mailheader:`Content-ID` header with *cid* as "
|
||||
"its value."
|
||||
msgstr ""
|
||||
"Si *cid* est spécifié, ajoute un en-tête :mailheader:`Content-ID` avec cette "
|
||||
"valeur."
|
||||
|
||||
#: library/email.contentmanager.rst:185
|
||||
msgid ""
|
||||
|
@ -260,6 +365,9 @@ msgid ""
|
|||
"``(key, value)`` pairs to set additional parameters on the :mailheader:"
|
||||
"`Content-Type` header."
|
||||
msgstr ""
|
||||
"Si *params* est spécifié, itère sur sa méthode ``items`` et utilise les "
|
||||
"paires ``(clé, valeur)`` résultantes pour définir des paramètres "
|
||||
"supplémentaires dans l'en-tête :mailheader:`Content-Type`."
|
||||
|
||||
#: library/email.contentmanager.rst:189
|
||||
msgid ""
|
||||
|
@ -267,6 +375,9 @@ msgid ""
|
|||
"headervalue`` or a list of ``header`` objects (distinguished from strings by "
|
||||
"having a ``name`` attribute), add the headers to *msg*."
|
||||
msgstr ""
|
||||
"Si *headers* est spécifié et est une liste de chaînes de la forme "
|
||||
"``headername: headervalue`` ou une liste d'objets ``header`` (distingués des "
|
||||
"chaînes par l'attribut ``name``), ajoute ces en-têtes à *msg*."
|
||||
|
||||
#: library/email.contentmanager.rst:196
|
||||
msgid "Footnotes"
|
||||
|
@ -276,3 +387,5 @@ msgstr "Notes"
|
|||
msgid ""
|
||||
"Originally added in 3.4 as a :term:`provisional module <provisional package>`"
|
||||
msgstr ""
|
||||
"Initialement ajouté dans 3.4 en tant que :term:`paquet provisoire "
|
||||
"<provisional package>`."
|
||||
|
|
|
@ -6,7 +6,7 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2023-04-08 14:42+0200\n"
|
||||
"PO-Revision-Date: 2023-11-06 11:44+0100\n"
|
||||
"Last-Translator: Antoine Wecxsteen\n"
|
||||
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -82,7 +82,7 @@ msgstr "|func-bytes|_"
|
|||
|
||||
#: library/functions.rst:0
|
||||
msgid "**C**"
|
||||
msgstr "*C**"
|
||||
msgstr "**C**"
|
||||
|
||||
#: library/functions.rst:0
|
||||
msgid ":func:`callable`"
|
||||
|
|
|
@ -6,22 +6,23 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2018-07-03 11:13+0200\n"
|
||||
"Last-Translator: Julien Palard <julien@palard.fr>\n"
|
||||
"PO-Revision-Date: 2023-11-17 23:38+0100\n"
|
||||
"PO-Revision-Date: 2023-11-14 22:46+0100\n"
|
||||
"Last-Translator: Houedji Espoir <therencecossi@gmail.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.2.2\n"
|
||||
|
||||
#: library/io.rst:2
|
||||
msgid ":mod:`io` --- Core tools for working with streams"
|
||||
msgstr ""
|
||||
msgstr ":mod:`io` — Outils de base pour l'utilisation des flux"
|
||||
|
||||
#: library/io.rst:15
|
||||
#, fuzzy
|
||||
msgid "**Source code:** :source:`Lib/io.py`"
|
||||
msgstr "**Code source:** :source:`Lib/os.py`"
|
||||
msgstr "**Code source:** :source:`Lib/io.py`"
|
||||
|
||||
#: library/io.rst:22
|
||||
msgid "Overview"
|
||||
|
@ -62,7 +63,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:855 library/io.rst:1122
|
||||
msgid "Text I/O"
|
||||
msgstr ""
|
||||
msgstr "Entrée/sortie de texte"
|
||||
|
||||
#: library/io.rst:53
|
||||
msgid ""
|
||||
|
@ -77,17 +78,23 @@ msgid ""
|
|||
"The easiest way to create a text stream is with :meth:`open()`, optionally "
|
||||
"specifying an encoding::"
|
||||
msgstr ""
|
||||
"Le moyen le plus simple de créer un flux de texte est d'utiliser la méthode :"
|
||||
"meth:`open()` en précisant éventuellement un encodage ::"
|
||||
|
||||
#: library/io.rst:63
|
||||
msgid ""
|
||||
"In-memory text streams are also available as :class:`StringIO` objects::"
|
||||
msgstr ""
|
||||
"Les flux de texte en mémoire sont également disponible sous forme d'objets :"
|
||||
"class:`StringIO` ::"
|
||||
|
||||
#: library/io.rst:67
|
||||
msgid ""
|
||||
"The text stream API is described in detail in the documentation of :class:"
|
||||
"`TextIOBase`."
|
||||
msgstr ""
|
||||
"L'API de flux textuel est décrite en détail dans la documentation de la "
|
||||
"classe :class:`TextIOBase`."
|
||||
|
||||
#: library/io.rst:1110
|
||||
msgid "Binary I/O"
|
||||
|
@ -112,18 +119,25 @@ msgstr ""
|
|||
msgid ""
|
||||
"In-memory binary streams are also available as :class:`BytesIO` objects::"
|
||||
msgstr ""
|
||||
"Les flux de texte en mémoire sont également disponible sous forme d'objets :"
|
||||
"class:`BytesIO` ::"
|
||||
|
||||
#: library/io.rst:89
|
||||
msgid ""
|
||||
"The binary stream API is described in detail in the docs of :class:"
|
||||
"`BufferedIOBase`."
|
||||
msgstr ""
|
||||
"L'API du flux binaire est décrite en détail dans la documentation de la "
|
||||
"classe :class:`BufferedIOBase`."
|
||||
|
||||
#: library/io.rst:92
|
||||
msgid ""
|
||||
"Other library modules may provide additional ways to create text or binary "
|
||||
"streams. See :meth:`socket.socket.makefile` for example."
|
||||
msgstr ""
|
||||
"D'autres bibliothèques peuvent fournir des moyens supplémentaires pour créer "
|
||||
"des flux de texte ou flux binaire. Voir la méthode :meth:`socket.socket."
|
||||
"makefile` par exemple."
|
||||
|
||||
#: library/io.rst:97
|
||||
msgid "Raw I/O"
|
||||
|
@ -144,7 +158,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:112
|
||||
msgid "Text Encoding"
|
||||
msgstr ""
|
||||
msgstr "Encodage de texte"
|
||||
|
||||
#: library/io.rst:114
|
||||
msgid ""
|
||||
|
@ -177,6 +191,8 @@ msgid ""
|
|||
"Python UTF-8 Mode can be used to change the default encoding to UTF-8 from "
|
||||
"locale-specific encoding."
|
||||
msgstr ""
|
||||
"Le mode UTF-8 de Python peut être utilisé pour changer l'encodage par défaut "
|
||||
"en UTF-8 à partir d'un encodage local spécifique."
|
||||
|
||||
#: library/io.rst:137
|
||||
msgid ":pep:`686`"
|
||||
|
@ -213,7 +229,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:162
|
||||
msgid "High-level Module Interface"
|
||||
msgstr ""
|
||||
msgstr "Interface de haut niveau du module"
|
||||
|
||||
#: library/io.rst:166
|
||||
msgid ""
|
||||
|
@ -397,7 +413,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:294
|
||||
msgid "Mixin Methods and Properties"
|
||||
msgstr ""
|
||||
msgstr "Méthodes et propriétés de Mixin"
|
||||
|
||||
#: library/io.rst:301 library/io.rst:305
|
||||
msgid ":class:`IOBase`"
|
||||
|
@ -775,7 +791,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:553
|
||||
msgid "Separate the underlying raw stream from the buffer and return it."
|
||||
msgstr ""
|
||||
msgstr "Sépare le flux brut sous-jacent du tampon et le renvoie."
|
||||
|
||||
#: library/io.rst:555
|
||||
msgid ""
|
||||
|
@ -962,6 +978,8 @@ msgid ""
|
|||
"The file name. This is the file descriptor of the file when no name is "
|
||||
"given in the constructor."
|
||||
msgstr ""
|
||||
"Le nom du fichier. C'est le descripteur du fichier lorsqu'aucun nom n'est "
|
||||
"donné dans le constructeur."
|
||||
|
||||
#: library/io.rst:692
|
||||
msgid "Buffered Streams"
|
||||
|
@ -1371,7 +1389,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:998
|
||||
msgid "The *write_through* argument has been added."
|
||||
msgstr ""
|
||||
msgstr "Le paramètre *write_through* a été ajouté."
|
||||
|
||||
#: library/io.rst:1001
|
||||
msgid ""
|
||||
|
@ -1418,15 +1436,20 @@ msgid ""
|
|||
"already been read from the stream. On the other hand, changing encoding "
|
||||
"after write is possible."
|
||||
msgstr ""
|
||||
"Il n'est pas possible de modifier l'encodage ou une nouvelle ligne si des "
|
||||
"données ont déjà été lues à partir du flux. En revanche, il est possible de "
|
||||
"modifier l'encodage après l'écriture."
|
||||
|
||||
#: library/io.rst:1038
|
||||
msgid ""
|
||||
"This method does an implicit stream flush before setting the new parameters."
|
||||
msgstr ""
|
||||
"Cette méthode effectue un nettoyage implicite du flux avant de définir les "
|
||||
"nouveaux paramètres."
|
||||
|
||||
#: library/io.rst:1043
|
||||
msgid "The method supports ``encoding=\"locale\"`` option."
|
||||
msgstr ""
|
||||
msgstr "La méthode prend en charge l'option ``encoding=\"locale\"``."
|
||||
|
||||
#: library/io.rst:1049
|
||||
msgid ""
|
||||
|
@ -1490,6 +1513,8 @@ msgid ""
|
|||
"This section discusses the performance of the provided concrete I/O "
|
||||
"implementations."
|
||||
msgstr ""
|
||||
"Cette section aborde les performances des implémentations concrètes d'Entrée/"
|
||||
"Sortie fournies."
|
||||
|
||||
#: library/io.rst:1112
|
||||
msgid ""
|
||||
|
@ -1541,10 +1566,12 @@ msgstr ""
|
|||
#: library/io.rst:1145
|
||||
msgid ":class:`TextIOWrapper` objects are not thread-safe."
|
||||
msgstr ""
|
||||
"les objets :class:`TextIOWrapper` ne sont pas compatibles avec les "
|
||||
"programmes à fils d'exécutions multiples."
|
||||
|
||||
#: library/io.rst:1148
|
||||
msgid "Reentrancy"
|
||||
msgstr ""
|
||||
msgstr "Réentrance"
|
||||
|
||||
#: library/io.rst:1150
|
||||
msgid ""
|
||||
|
@ -1567,7 +1594,7 @@ msgstr ""
|
|||
|
||||
#: library/io.rst:24
|
||||
msgid "file object"
|
||||
msgstr ""
|
||||
msgstr "objet fichier"
|
||||
|
||||
#: library/io.rst:24
|
||||
msgid "io module"
|
||||
|
|
|
@ -6,13 +6,14 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2018-11-29 18:26+0100\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2023-11-26 16:20+0100\n"
|
||||
"Last-Translator: Yannick Gingras <ygingras@ygingras.net>\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.2.2\n"
|
||||
|
||||
#: library/shutil.rst:2
|
||||
msgid ":mod:`shutil` --- High-level file operations"
|
||||
|
@ -85,20 +86,20 @@ msgid ""
|
|||
"*dst* and return *dst* in the most efficient way possible. *src* and *dst* "
|
||||
"are path-like objects or path names given as strings."
|
||||
msgstr ""
|
||||
"Copie le contenu (sans métadonnées) du fichier nommé *src* dans un fichier "
|
||||
"nommé *dst* et renvoie *dst* de la manière la plus efficace possible. Les "
|
||||
"paramètres *src* et *dst* sont des objets simili-chemin ou des chaînes "
|
||||
"spécifiant des chemins."
|
||||
|
||||
#: library/shutil.rst:57
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"*dst* must be the complete target file name; look at :func:`~shutil.copy` "
|
||||
"for a copy that accepts a target directory path. If *src* and *dst* specify "
|
||||
"the same file, :exc:`SameFileError` is raised."
|
||||
msgstr ""
|
||||
"Copie le contenu (sans métadonnées) du fichier nommé *src* dans un fichier "
|
||||
"nommé *dst* et renvoie *dst*. *src* et *dst* sont des chemins sous forme de "
|
||||
"chaînes de caractères. *dst* doit être le chemin complet de la cible ; voir "
|
||||
"dans :func:`shutil.copy` pour une copie acceptant le chemin du dossier "
|
||||
"cible. Si *src* et *dst* désignent le même fichier :exc:`SameFileError` est "
|
||||
"levée."
|
||||
"*dst* doit être le nom complet du fichier cible ; consultez :func:`~shutil."
|
||||
"copy` pour une fonction de copie qui accepte un chemin de répertoire cible. "
|
||||
"Si *src* et *dst* spécifient le même fichier, lève :exc:`SameFileError`."
|
||||
|
||||
#: library/shutil.rst:61
|
||||
msgid ""
|
||||
|
@ -125,6 +126,8 @@ msgid ""
|
|||
"Raises an :ref:`auditing event <auditing>` ``shutil.copyfile`` with "
|
||||
"arguments ``src``, ``dst``."
|
||||
msgstr ""
|
||||
"Lève un :ref:`événement d’audit <auditing>` ``shutil.copyfile`` avec les "
|
||||
"arguments ``src``, ``dst``."
|
||||
|
||||
#: library/shutil.rst:72
|
||||
msgid ""
|
||||
|
@ -148,6 +151,9 @@ msgid ""
|
|||
"the file more efficiently. See :ref:`shutil-platform-dependent-efficient-"
|
||||
"copy-operations` section."
|
||||
msgstr ""
|
||||
"Les appels système de copie rapide spécifiques à la plate-forme peuvent être "
|
||||
"utilisés en interne afin de copier le fichier plus efficacement. Voir la "
|
||||
"section :ref:`shutil-platform-dependent-efficient-copy-operations`."
|
||||
|
||||
#: library/shutil.rst:88
|
||||
msgid ""
|
||||
|
@ -158,7 +164,6 @@ msgstr ""
|
|||
"`copyfile` sont le même fichier."
|
||||
|
||||
#: library/shutil.rst:96
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Copy the permission bits from *src* to *dst*. The file contents, owner, and "
|
||||
"group are unaffected. *src* and *dst* are path-like objects or path names "
|
||||
|
@ -170,26 +175,28 @@ msgid ""
|
|||
"platform, and it is asked to do so, it will do nothing and return."
|
||||
msgstr ""
|
||||
"Copie les octets de permission de *src* vers *dst*. Le contenu du fichier, "
|
||||
"le propriétaire et le groupe ne sont pas modifiés. *src* et *dst* sont des "
|
||||
"chaînes spécifiant les chemins. Si *follow_symlinks* est faux, et *src* et "
|
||||
"*dst* sont des liens symboliques, :func:`copymode` tente de modifier le mode "
|
||||
"de *dst* (au lieu du fichier vers lequel il pointe). Cette fonctionnalité "
|
||||
"n'est pas disponible sur toutes les plateformes ; voir :func:`copystat` pour "
|
||||
"plus d'informations. Si :func:`copymode` ne peut pas modifier les liens "
|
||||
"symboliques sur la plateforme cible alors que c'est demandé, il ne fait rien."
|
||||
"le propriétaire et le groupe ne sont pas modifiés. *src* et *dst* sont des :"
|
||||
"term:`objets simili-chemin <path-like object>` ou des chaînes spécifiant les "
|
||||
"chemins. Si *follow_symlinks* est faux, et *src* et *dst* sont des liens "
|
||||
"symboliques, :func:`copymode` tente de modifier le mode de *dst* (au lieu du "
|
||||
"fichier vers lequel il pointe). Cette fonctionnalité n'est pas disponible "
|
||||
"sur toutes les plateformes ; voir :func:`copystat` pour plus d'informations. "
|
||||
"Si :func:`copymode` ne peut pas modifier les liens symboliques sur la "
|
||||
"plateforme cible alors que c'est demandé, il ne fait rien."
|
||||
|
||||
#: library/shutil.rst:179
|
||||
msgid ""
|
||||
"Raises an :ref:`auditing event <auditing>` ``shutil.copymode`` with "
|
||||
"arguments ``src``, ``dst``."
|
||||
msgstr ""
|
||||
"Lève un :ref:`événement d’audit <auditing>` ``shutil.copymode`` avec les "
|
||||
"arguments ``src``, ``dst``."
|
||||
|
||||
#: library/shutil.rst:108
|
||||
msgid "Added *follow_symlinks* argument."
|
||||
msgstr "L'argument *follow_symlinks* a été ajouté."
|
||||
|
||||
#: library/shutil.rst:113
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Copy the permission bits, last access time, last modification time, and "
|
||||
"flags from *src* to *dst*. On Linux, :func:`copystat` also copies the "
|
||||
|
@ -199,10 +206,10 @@ msgid ""
|
|||
msgstr ""
|
||||
"Copie les bits définissant les droits d'accès, la date du dernier accès, de "
|
||||
"la dernière modification et les drapeaux (*flags* en anglais) de *src* vers "
|
||||
"*dst*. Sur Linux, :func:`copystat` copie également, si possible, les "
|
||||
"*dst*. Sur Linux, :func:`copystat` copie également, si possible, les "
|
||||
"\"*extended attributes*\". Le contenu du fichier, le propriétaire et le "
|
||||
"groupe ne sont pas affectés. *src* et *dst* sont des chaînes spécifiant les "
|
||||
"chemins."
|
||||
"groupe ne sont pas affectés. *src* et *dst* sont des :term:`objets simili-"
|
||||
"chemin <path-like object>` ou des chaînes spécifiant les chemins."
|
||||
|
||||
#: library/shutil.rst:119
|
||||
msgid ""
|
||||
|
@ -890,16 +897,6 @@ msgstr ""
|
|||
|
||||
#: library/shutil.rst:658
|
||||
msgid ""
|
||||
"The keyword-only *filter* argument, which was added in Python 3.11.4, is "
|
||||
"passed to the underlying unpacking function. For zip files, *filter* is not "
|
||||
"accepted. For tar files, it is recommended to set it to ``'data'``, unless "
|
||||
"using features specific to tar and UNIX-like filesystems. (See :ref:`tarfile-"
|
||||
"extraction-filter` for details.) The ``'data'`` filter will become the "
|
||||
"default for tar files in Python 3.14."
|
||||
msgstr ""
|
||||
|
||||
#: library/shutil.rst:652
|
||||
msgid ""
|
||||
"Raises an :ref:`auditing event <auditing>` ``shutil.unpack_archive`` with "
|
||||
"arguments ``filename``, ``extract_dir``, ``format``."
|
||||
msgstr ""
|
||||
|
|
18
sphinx.po
18
sphinx.po
|
@ -6,14 +6,14 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2022-10-18 12:24+0200\n"
|
||||
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
|
||||
"PO-Revision-Date: 2023-11-19 11:55-0500\n"
|
||||
"Last-Translator: Édith Viau <info@eviau.net>\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.0.1\n"
|
||||
|
||||
#: tools/templates/customsourcelink.html:3
|
||||
msgid "This Page"
|
||||
|
@ -45,15 +45,15 @@ msgstr ""
|
|||
|
||||
#: tools/templates/dummy.html:12
|
||||
msgid "Return value: Always NULL."
|
||||
msgstr ""
|
||||
msgstr "Valeur de retour : toujours NULL."
|
||||
|
||||
#: tools/templates/dummy.html:13
|
||||
msgid "Return value: New reference."
|
||||
msgstr ""
|
||||
msgstr "Valeur de retour : nouvelle référence."
|
||||
|
||||
#: tools/templates/dummy.html:14
|
||||
msgid "Return value: Borrowed reference."
|
||||
msgstr ""
|
||||
msgstr "Valeur de retour : référence empruntée."
|
||||
|
||||
#: tools/templates/dummy.html:18
|
||||
msgid "in development"
|
||||
|
@ -308,11 +308,13 @@ msgid ""
|
|||
"%(pr_id)s\">pull request</a>.\n"
|
||||
" For authoritative documentation, see the "
|
||||
msgstr ""
|
||||
"Ceci est un aperçu déployé à partir d'une <a href=\"%(repository_url)s/pull/"
|
||||
"%(pr_id)s\">demande d'ajout</a>.\n"
|
||||
"Pour la documentation officielle, consultez "
|
||||
|
||||
#: tools/templates/layout.html:16
|
||||
#, fuzzy
|
||||
msgid " the current stable release"
|
||||
msgstr "Bienvenue sur la documentation de la version stable actuelle de Python"
|
||||
msgstr "ceci est la version stable actuelle"
|
||||
|
||||
#~ msgid "Python 3.8 (stable)"
|
||||
#~ msgstr "Python 3.8 (stable)"
|
||||
|
|
|
@ -6,8 +6,8 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2022-05-24 18:32+0200\n"
|
||||
"Last-Translator: Loc Cosnier <loc.cosnier@pm.me>\n"
|
||||
"PO-Revision-Date: 2023-11-19 12:26-0500\n"
|
||||
"Last-Translator: Édith Viau <info@eviau.net>\n"
|
||||
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -74,18 +74,17 @@ msgid "Command Line Arguments"
|
|||
msgstr "Paramètres passés en ligne de commande"
|
||||
|
||||
#: tutorial/stdlib.rst:66
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Common utility scripts often need to process command line arguments. These "
|
||||
"arguments are stored in the :mod:`sys` module's *argv* attribute as a list. "
|
||||
"For instance the following output results from running ``python demo.py one "
|
||||
"two three`` at the command line::"
|
||||
msgstr ""
|
||||
"Typiquement, les outils en ligne de commande ont besoin de lire les "
|
||||
"Habituellement, les outils en ligne de commande ont besoin de traiter des "
|
||||
"paramètres qui leur sont donnés. Ces paramètres sont stockés dans la "
|
||||
"variable ``argv`` du module :mod:`sys` sous la forme d'une liste. Par "
|
||||
"exemple, l'affichage suivant vient de l'exécution de ``python demo.py one "
|
||||
"two three`` depuis la ligne de commande ::"
|
||||
"variable *argv* du module :mod:`sys` sous la forme d'une liste. Par exemple, "
|
||||
"l'affichage suivant vient de l'exécution de ``python demo.py one two three`` "
|
||||
"depuis la ligne de commande ::"
|
||||
|
||||
#: tutorial/stdlib.rst:75
|
||||
msgid ""
|
||||
|
@ -390,8 +389,8 @@ msgstr ""
|
|||
|
||||
#: tutorial/stdlib.rst:27
|
||||
msgid "built-in function"
|
||||
msgstr ""
|
||||
msgstr "fonction native"
|
||||
|
||||
#: tutorial/stdlib.rst:27
|
||||
msgid "help"
|
||||
msgstr ""
|
||||
msgstr "aide"
|
||||
|
|
Loading…
Reference in New Issue