Merge remote-tracking branch 'upstream/3.11' into ref_36

This commit is contained in:
Christophe Nanteuil 2023-12-09 10:30:14 +01:00
commit 10908f05df
50 changed files with 2515 additions and 1476 deletions

View File

@ -1,13 +1,37 @@
---
pipeline:
# `make verifs` only checks changed files, so it make sense only on
# pull requests.
# Also we're using `branch: "$CI_COMMIT_SOURCE_BRANCH"` because the
# default branch name is the target branch, conflicting with the fact
# the Makefile tries to compare the current branch to the target
# branch...
when:
event: pull_request
clone:
git:
image: woodpeckerci/plugin-git
pull: true
settings:
branch: ${CI_COMMIT_SOURCE_BRANCH}
steps:
fetch target branch:
image: python
commands:
- BRANCH="$(make print-BRANCH)"
- git fetch origin --no-tags +refs/heads/$BRANCH
- git branch $BRANCH origin/$BRANCH
- git branch -va
test:
image: python
commands:
- apt-get update
- apt-get install -y hunspell hunspell-fr-comprehensive
- python3 -m pip install -r requirements.txt
- BRANCH="$(grep ^BRANCH Makefile | awk '{print $3}')"
- git fetch origin --no-tags +refs/heads/$BRANCH
- 'git branch $BRANCH origin/$BRANCH ||:'
- make diff
- make verifs

View File

@ -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
@ -598,7 +604,7 @@ list comprehension liste en compréhension (liste en intension est
little-endian, big-endian `petit-boutiste, gros-boutiste
<https://fr.wikipedia.org/wiki/Endianness>`_
mixin type type de mélange
mutable muable
mutable `mutable <https://git.afpy.org/AFPy/python-docs-fr/issues/123>`_
namespace espace de nommage
(sauf pour le XML où c'est espace de noms)
parameter paramètre
@ -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 »)

View File

@ -192,3 +192,11 @@ clean:
find -name '*.mo' -delete
@echo "Cleaning build directory"
$(MAKE) -C venv/cpython/Doc/ clean
.PHONY: diff
diff:
@echo "Files changed between $(BRANCH) and HEAD:"
@echo $(shell git diff --name-only --diff-filter=d $(BRANCH))
print-%:
@echo $($*)

View File

@ -21,3 +21,4 @@ Yannick Gingras
Martin Chlumsky
Stephan Michaud
Edith Viau
Jean-Michel Laprise

11
bugs.po
View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-04-14 13:19+0200\n"
"PO-Revision-Date: 2022-12-11 17:39+0100\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"PO-Revision-Date: 2023-10-21 08:46-0400\n"
"Last-Translator: Edith 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.2.1\n"
"X-Generator: Poedit 3.0.1\n"
#: bugs.rst:5
msgid "Dealing with Bugs"
@ -64,6 +64,8 @@ msgid ""
"You can also open a discussion item on our `Documentation Discourse forum "
"<https://discuss.python.org/c/documentation/26>`_."
msgstr ""
"Vous pouvez aussi commenter une discussion sur le `forum de discussion de la "
"documentation <https://discuss.python.org/c/documentation/26>`_."
#: bugs.rst:25
msgid ""
@ -192,13 +194,12 @@ msgid "The submission form has two fields, \"Title\" and \"Comment\"."
msgstr "Le formulaire de rapport contient deux champs, *Title* et *Comment*."
#: bugs.rst:72
#, fuzzy
msgid ""
"For the \"Title\" field, enter a *very* short description of the problem; "
"fewer than ten words is good."
msgstr ""
"Dans le champ *Title*, entrez une *très* brève description du problème "
"rencontré ; tâchez de vous limiter à dix mots."
"rencontré : dix mots ou moins suffiront."
#: bugs.rst:75
msgid ""

View File

@ -102,7 +102,7 @@ msgstr ""
"Néanmoins, quand une structure :c:type:`Py_buffer` est en cours de "
"remplissage, le tampon sous-jacent est verrouillé pour permettre à "
"l'appelant d'utiliser le tampon par la suite, même à l'intérieur d'un bloc :"
"c:type:`Py_BEGIN_ALLOW_THREADS`, sans risques de voir des données muables se "
"c:type:`Py_BEGIN_ALLOW_THREADS`, sans risques de voir des données mutables se "
"faire redimensionner ou supprimer. En conséquence, **il vous appartient "
"d'appeler** :c:func:`PyBuffer_Release` après avoir terminé de traiter les "
"données (ou après une interruption prématurée du traitement de ces données)."
@ -229,7 +229,7 @@ msgid ""
"null bytes. Unicode objects are converted to C strings using ``'utf-8'`` "
"encoding."
msgstr ""
"La même chose que ``s*``, mais n'accepte pas les objets muables. Le résultat "
"La même chose que ``s*``, mais n'accepte pas les objets mutables. Le résultat "
"est stocké dans deux variables C, la première est un pointeur vers une "
"chaîne de caractères C, la seconde contient sa taille. La chaîne de "
"caractères peut contenir des octets NULL. Les objets Unicode sont convertis "
@ -1373,7 +1373,7 @@ msgstr ""
#~ "d'octets <bytes-like object>` en lecture seule, et définissent un "
#~ "pointeur à la place d'une structure tampon. Ils fonctionnent en vérifiant "
#~ "que le champ :c:member:`PyBufferProcs.bf_releasebuffer` de l'objet est "
#~ "*NULL*, ce qui n'autorise pas les objets muables tels que :class:"
#~ "*NULL*, ce qui n'autorise pas les objets mutables tels que :class:"
#~ "`bytearray`."
#~ msgid ""

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-15 22:33+0100\n"
"PO-Revision-Date: 2022-04-07 14:48-0400\n"
"Last-Translator: Jean-Michel Laprise <jmichel.dev@gmail.com>\n"
"PO-Revision-Date: 2023-10-02 15:28-0600\n"
"Last-Translator: James Adjinwa <jamesadjinwa000@duck.com>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Poedit 3.4\n"
#: copyright.rst:3
msgid "Copyright"
@ -24,10 +24,9 @@ msgid "Python and this documentation is:"
msgstr "Python et cette documentation sont :"
#: copyright.rst:7
#, fuzzy
msgid "Copyright © 2001-2023 Python Software Foundation. All rights reserved."
msgstr ""
"Copyright © 2001-2022 Python Software Foundation. Tous droits réservés."
"Copyright © 2001-2023 Python Software Foundation. Tous droits réservés."
#: copyright.rst:9
msgid "Copyright © 2000 BeOpen.com. All rights reserved."

2
dict
View File

@ -122,8 +122,6 @@ mersenne
mertz
Monty
muabilité
muable
muables
multiensemble
multiensembles
mutex

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-21 14:55+0200\n"
"PO-Revision-Date: 2021-12-11 12:46+0100\n"
"Last-Translator: Julien Palard <julien@palard.fr>\n"
"PO-Revision-Date: 2023-07-28 22:22+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 2.2.3\n"
"X-Generator: Poedit 3.2.2\n"
#: extending/building.rst:7
msgid "Building C and C++ Extensions"
@ -28,7 +28,6 @@ msgstr ""
"Linux, un ``.pyd`` sur Windows), qui expose une *fonction d'initialisation*."
#: extending/building.rst:12
#, fuzzy
msgid ""
"To be importable, the shared library must be available on :envvar:"
"`PYTHONPATH`, and must be named after the module name, with an appropriate "
@ -45,7 +44,6 @@ msgid "The initialization function has the signature:"
msgstr "La fonction d'initialisation doit avoir le prototype :"
#: extending/building.rst:20
#, fuzzy
msgid ""
"It returns either a fully initialized module, or a :c:type:`PyModuleDef` "
"instance. See :ref:`initializing-modules` for details."
@ -88,7 +86,6 @@ msgstr ""
"library\"* dans la :pep:`489` pour plus d'informations."
#: extending/building.rst:49
#, fuzzy
msgid "Building C and C++ Extensions with distutils"
msgstr "Construire les extensions C et C++ avec *distutils*"
@ -113,7 +110,7 @@ msgstr ""
#: extending/building.rst:73
msgid "With this :file:`setup.py`, and a file :file:`demo.c`, running ::"
msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer ::"
msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer ::"
#: extending/building.rst:77
msgid ""
@ -122,10 +119,10 @@ msgid ""
"will end up in a subdirectory :file:`build/lib.system`, and may have a name "
"like :file:`demo.so` or :file:`demo.pyd`."
msgstr ""
"compilera :file:`demo.c`, et produira un module d'extension nommé ``demo`` "
"dans le dossier :file:`build`. En fonction du système, le fichier du module "
"peut se retrouver dans :file:`build/lib.system`, et son nom peut être :file:"
"`demo.py` ou :file:`demo.pyd`."
"compile :file:`demo.c` et produit un module d'extension nommé ``demo`` dans "
"le dossier :file:`build`. En fonction du système, le fichier du module peut "
"se retrouver dans :file:`build/lib.system`, et son nom peut être :file:`demo."
"py` ou :file:`demo.pyd`."
#: extending/building.rst:82
msgid ""
@ -189,7 +186,7 @@ msgstr ""
"paquets. En ce qui concerne l'extension, sont définis quelques macros "
"préprocesseur, dossiers pour les en-têtes et bibliothèques. En fonction du "
"compilateur, *distutils* peut donner ces informations de manière différente. "
"Par exemple, sur Unix, ça peut ressembler aux commandes ::"
"Par exemple, sur Unix, ça peut ressembler aux commandes ::"
#: extending/building.rst:139
msgid ""
@ -216,14 +213,14 @@ msgid ""
"End-users will typically want to install the module, they do so by running ::"
msgstr ""
"Typiquement, les utilisateurs vont vouloir installer le module, ils le font "
"en exécutant ::"
"en exécutant ::"
#: extending/building.rst:154
msgid ""
"Module maintainers should produce source packages; to do so, they run ::"
msgstr ""
"Les mainteneurs de modules voudront produire des paquets source, pour ce "
"faire ils exécuteront ::"
"faire ils exécuteront ::"
#: extending/building.rst:158
msgid ""
@ -232,8 +229,8 @@ msgid ""
"`manifest` for details."
msgstr ""
"Dans certains cas, des fichiers supplémentaires doivent être inclus dans une "
"distribution source : c'est possible via un fichier :file:`MANIFEST.in`, c."
"f. :ref:`manifest`."
"distribution source : c'est possible via un fichier :file:`MANIFEST.in`, "
"voir :ref:`manifest` pour les détails."
#: extending/building.rst:161
msgid ""

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-15 22:33+0100\n"
"PO-Revision-Date: 2023-02-16 16:53+0100\n"
"Last-Translator: Antoine <antoine.venier@hotmail.fr>\n"
"PO-Revision-Date: 2023-07-28 22:36+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 2.3\n"
"X-Generator: Poedit 3.2.2\n"
#: extending/embedding.rst:8
msgid "Embedding Python in Another Application"
@ -275,7 +275,7 @@ msgstr ""
"Bien que le programme soit plutôt gros pour ses fonctionnalités, la plupart "
"du code n'est que conversion de données entre Python et C, aussi que pour "
"rapporter les erreurs. La partie intéressante, qui concerne l'intégration de "
"Python débute par ::"
"Python débute par ::"
#: extending/embedding.rst:178
msgid ""
@ -408,7 +408,7 @@ msgid ""
"directly useful to you:"
msgstr ""
"Pour trouver les bonnes options de compilateur et *linker*, vous pouvez "
"exécuter le script :file:`python(X.Y)-config` généré durant l'installation "
"exécuter le script :file:`python{X.Y}-config` généré durant l'installation "
"(un script :file:`python3-config` peut aussi être disponible). Ce script a "
"quelques options, celles-ci vous seront utiles :"

File diff suppressed because it is too large Load Diff

View File

@ -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."

View File

@ -6,13 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-21 14:55+0200\n"
"PO-Revision-Date: 2020-06-28 15:18+0200\n"
"Last-Translator: Julien Palard <julien@palard.fr>\n"
"PO-Revision-Date: 2023-07-28 22:32+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/windows.rst:8
msgid "Building C and C++ Extensions on Windows"
@ -44,7 +45,7 @@ msgstr ""
"Les auteurs de modules sont invités à utiliser l'approche *distutils* pour "
"construire des modules d'extension, au lieu de celle décrite dans cette "
"section. Vous aurez toujours besoin du compilateur C utilisé pour construire "
"Python ; typiquement Microsoft Visual C++."
"Python ; typiquement Microsoft Visual C++."
#: extending/windows.rst:24
msgid ""
@ -57,7 +58,7 @@ msgid ""
msgstr ""
"Cette page mentionne plusieurs noms de fichiers comprenant un numéro de "
"version Python encodé. Ces noms de fichiers sont construits sous le format "
"de version ``XY`` ; en pratique, ``'X'`` représente le numéro de version "
"de version ``XY`` ; en pratique, ``'X'`` représente le numéro de version "
"majeure et ``'Y'`` représente le numéro de version mineure de la version "
"Python avec laquelle vous travaillez. Par exemple, si vous utilisez Python "
"2.2.1, ``XY`` correspond à ``22``."
@ -67,7 +68,6 @@ msgid "A Cookbook Approach"
msgstr "Une approche \"recette de cuisine\""
#: extending/windows.rst:36
#, fuzzy
msgid ""
"There are two approaches to building extension modules on Windows, just as "
"there are on Unix: use the :mod:`distutils` package to control the build "
@ -79,9 +79,9 @@ msgid ""
"library module."
msgstr ""
"Il y a deux approches lorsque l'on construit des modules d'extension sur "
"Windows, tout comme sur Unix : utiliser le paquet :mod:`distutils` pour "
"Windows, tout comme sur Unix : utiliser le paquet :mod:`distutils` pour "
"contrôler le processus de construction, ou faire les choses manuellement. "
"L'approche *distutils* fonctionne bien pour la plupart des extensions ; la "
"L'approche *distutils* fonctionne bien pour la plupart des extensions ; la "
"documentation pour utiliser :mod:`distutils` pour construire et empaqueter "
"les modules d'extension est disponible dans :ref:`distutils-index`. Si vous "
"considérez que vous avez réellement besoin de faire les choses manuellement, "
@ -131,10 +131,10 @@ msgid ""
"data."
msgstr ""
"Sur Windows, un fichier bibliothèque de liens dynamiques (:file:`.dll`) n'a "
"pas de références paresseuses. A la place, un accès aux fonctions ou données "
"pas de références paresseuses. À la place, un accès aux fonctions ou données "
"passe par une table de conversion. Cela est fait pour que le code DLL ne "
"doive pas être réarrangé à l'exécution pour renvoyer à la mémoire du "
"programme ; à la place, le code utilise déjà la table de conversion DLL, et "
"programme ; à la place, le code utilise déjà la table de conversion DLL, et "
"cette table est modifiée à l'exécution pour pointer vers les fonctions et "
"données."
@ -151,7 +151,7 @@ msgstr ""
"contient du code venant de plusieurs fichiers objets (:file:`.o`). Durant "
"l'étape de liaison pour créer un fichier objet partagé (:file:`.so`), le "
"lieur peut informer qu'il ne sait pas où un identificateur est défini. Le "
"lieur le cherchera dans les fichiers objet dans les bibliothèques ; s'il le "
"lieur le cherchera dans les fichiers objet dans les bibliothèques ; s'il le "
"trouve, il inclura tout le code provenant de ce fichier objet."
#: extending/windows.rst:76
@ -169,7 +169,7 @@ msgid ""
msgstr ""
"Sur Windows, il y a deux types de bibliothèques, une bibliothèque statique "
"et une bibliothèque d'importation (toutes deux appelées :file:`.lib`). Une "
"bibliothèque statique est comme un fichier Unix :file:`.a` ; elle contient "
"bibliothèque statique est comme un fichier Unix :file:`.a` ; elle contient "
"du code pouvant être inclus si nécessaire. Une bibliothèque d'importation "
"est uniquement utilisée pour rassurer le lieur qu'un certain identificateur "
"est légal, et sera présent dans le programme quand la DLL est chargée. Comme "
@ -193,10 +193,10 @@ msgstr ""
"Supposons que vous construisez deux modules de chargement dynamiques, B et "
"C, qui ne devraient pas partager un autre bloc de code avec A. Sur Unix, "
"vous ne transmettrez pas :file:`A.a` au lieur pour :file:`B.so` et :file:`C."
"so` ; cela le ferait être inclus deux fois, pour que B et C aient chacun "
"so` ; cela le ferait être inclus deux fois, pour que B et C aient chacun "
"leur propre copie. Sur Windows, construire :file:`A.dll` construira aussi :"
"file:`A.lib`. Vous transmettez :file:`A.lib` au lieur pour B et C. :file:`A."
"lib` ne contient pas de code ; il contient uniquement des informations qui "
"lib` ne contient pas de code ; il contient uniquement des informations qui "
"seront utilisées lors de l'exécution pour accéder au code de A."
#: extending/windows.rst:94
@ -207,23 +207,22 @@ msgid ""
"create a separate copy."
msgstr ""
"Sur Windows, utiliser une bibliothèque d'importation est comme utiliser "
"``import spam``; cela vous donne accès aux noms des spams, mais ne crée par "
"``import spam`` ; cela vous donne accès aux noms des spams, mais ne crée par "
"de copie séparée. Sur Unix, se lier à une bibliothèque est plus comme ``from "
"spam import *`` ; cela crée une copie séparée."
"spam import *`` ; cela crée une copie séparée."
#: extending/windows.rst:103
msgid "Using DLLs in Practice"
msgstr "Utiliser les DLL en pratique"
#: extending/windows.rst:108
#, fuzzy
msgid ""
"Windows Python is built in Microsoft Visual C++; using other compilers may "
"or may not work. The rest of this section is MSVC++ specific."
msgstr ""
"Le Python de Windows est construit en Microsoft Visual C++ ; utiliser "
"d'autres compilateurs pourrait fonctionner, ou pas (cependant Borland a "
"l'air de fonctionner). Le reste de cette section est spécifique à MSVC++."
"Le Python de Windows est construit en Microsoft Visual C++ ; utiliser "
"d'autres compilateurs pourrait fonctionner, ou pas. Le reste de cette "
"section est spécifique à MSVC++."
#: extending/windows.rst:111
msgid ""
@ -242,7 +241,7 @@ msgid ""
"functions (such as :c:func:`PyArg_ParseTuple`), but it does know how to find "
"the Python code thanks to :file:`pythonXY.lib`."
msgstr ""
"La première commande a créé trois fichiers : :file:`spam.obj`, :file:`spam."
"La première commande a créé trois fichiers : :file:`spam.obj`, :file:`spam."
"dll` et :file:`spam.lib`. :file:`Spam.dll` ne contient pas de fonctions "
"Python (telles que :c:func:`PyArg_ParseTuple`), mais il sait comment trouver "
"le code Python grâce à :file:`pythonXY.lib`."

View File

@ -820,7 +820,7 @@ msgid ""
msgstr ""
"Les *n*-uplets sont immuables, ce qui signifie que lorsqu'un *n*-uplet a été "
"créé, vous ne pouvez remplacer aucun de ses éléments par une nouvelle "
"valeur. Les listes sont muables, ce qui signifie que vous pouvez toujours "
"valeur. Les listes sont mutables, ce qui signifie que vous pouvez toujours "
"modifier les éléments d'une liste. Seuls des éléments immuables peuvent être "
"utilisés comme clés de dictionnaires, et donc de ``tuple`` et ``list`` seul "
"des *n*-uplets peuvent être utilisés comme clés."
@ -922,7 +922,7 @@ msgid ""
msgstr ""
"L'implémentation de la table de hachage des dictionnaires utilise une valeur "
"de hachage calculée à partir de la valeur de la clé pour trouver la clé elle-"
"même. Si la clé était un objet muable, sa valeur peut changer, et donc son "
"même. Si la clé était un objet mutable, sa valeur peut changer, et donc son "
"hachage pourrait également changer. Mais toute personne modifiant l'objet "
"clé ne peut pas dire qu'elle a été utilisée comme une clé de dictionnaire. "
"Il ne peut déplacer l'entrée dans le dictionnaire. Ainsi, lorsque vous "
@ -975,7 +975,7 @@ msgid ""
"copying code would run into an infinite loop."
msgstr ""
"Faire une copie lors de l'utilisation d'une liste en tant que clé. Cela ne "
"fonctionne pas puisque la liste, étant un objet muable, pourrait contenir "
"fonctionne pas puisque la liste, étant un objet mutable, pourrait contenir "
"une référence à elle-même ou avoir une boucle infinie au niveau du code "
"copié."

View File

@ -798,7 +798,7 @@ msgstr ""
msgid ""
"Lists are :term:`mutable`, which means that you can change their content."
msgstr ""
"Les listes sont des :term:`muable`, ce qui signifie que leur contenu peut "
"Les listes sont des :term:`mutable`, ce qui signifie que leur contenu peut "
"être modifié."
#: faq/programming.rst:457
@ -807,7 +807,7 @@ msgid ""
"has changed from ``[]`` to ``[10]``. Since both the variables refer to the "
"same object, using either name accesses the modified value ``[10]``."
msgstr ""
"Après l'appel de :meth:`~list.append`, le contenu de l'objet muable est "
"Après l'appel de :meth:`~list.append`, le contenu de l'objet mutable est "
"passé de ``[]`` à ``[10]``. Vu que les deux variables font référence au même "
"objet, il est possible d'accéder à la valeur modifiée ``[10]`` avec chacun "
"des noms."
@ -881,7 +881,7 @@ msgid ""
"etc.), we can use some specific operations to mutate it and all the "
"variables that refer to it will see the change."
msgstr ""
"Il est possible d'appliquer des opérations qui modifient un objet muable (:"
"Il est possible d'appliquer des opérations qui modifient un objet mutable (:"
"class:`list`, :class:`dict`, :class:`set`, etc.) et toutes les variables qui "
"y font référence verront le changement."
@ -942,7 +942,7 @@ msgstr ""
#: faq/programming.rst:532
msgid "By passing a mutable (changeable in-place) object::"
msgstr "En passant un objet muable (modifiable sur place) ::"
msgstr "En passant un objet mutable (modifiable sur place) ::"
#: faq/programming.rst:543
msgid "By passing in a dictionary that gets mutated::"
@ -2060,7 +2060,7 @@ msgid ""
msgstr ""
"Ceci est dû à la combinaison de deux facteurs : le fait que les opérateurs "
"d'affectation incrémentaux sont des opérateurs d'*affectation* et à la "
"différence entre les objets muables et immuables en Python."
"différence entre les objets mutables et immuables en Python."
#: faq/programming.rst:1352
msgid ""
@ -2070,7 +2070,7 @@ msgid ""
msgstr ""
"Cette discussion est valable, en général, quand des opérateurs d'affectation "
"incrémentale sont appliqués aux éléments d'un *n*-uplet qui pointe sur des "
"objets muables, mais on prendra ``list`` et ``+=`` comme exemple."
"objets mutables, mais on prendra ``list`` et ``+=`` comme exemple."
#: faq/programming.rst:1356
msgid "If you wrote::"
@ -2167,7 +2167,7 @@ msgid ""
msgstr ""
"L'appel à :meth:`!__iadd__` réussit et la liste est étendue, mais bien que "
"``result`` pointe sur le même objet que ``a_tuple[0]``, l'affectation finale "
"échoue car les *n*-uplets ne sont pas muables."
"échoue car les *n*-uplets ne sont pas mutables."
#: faq/programming.rst:1433
msgid ""
@ -2811,7 +2811,7 @@ msgstr ""
#: faq/programming.rst:1871
msgid "Likewise, new instances of mutable containers are never identical::"
msgstr ""
"De même, deux instances fraîchement créées d'un type de conteneurs muables "
"De même, deux instances fraîchement créées d'un type de conteneurs mutables "
"ne sont jamais identiques ::"
#: faq/programming.rst:1878

View File

@ -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: 2023-03-19 13:06+0100\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"PO-Revision-Date: 2023-10-05 22:23-0600\n"
"Last-Translator: James Adjinwa <jamesadjinwa000@duck.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.1\n"
"X-Generator: Poedit 3.4\n"
#: glossary.rst:5
msgid "Glossary"
@ -211,15 +211,15 @@ msgid "asynchronous context manager"
msgstr "gestionnaire de contexte asynchrone"
#: glossary.rst:94
#, fuzzy
msgid ""
"An object which controls the environment seen in an :keyword:`async with` "
"statement by defining :meth:`~object.__aenter__` and :meth:`~object."
"__aexit__` methods. Introduced by :pep:`492`."
msgstr ""
"(*asynchronous context manager* en anglais) Objet contrôlant l'environnement "
"à l'intérieur d'une instruction :keyword:`with` en définissant les méthodes :"
"meth:`__aenter__` et :meth:`__aexit__`. A été Introduit par la :pep:`492`."
"à l'intérieur d'une instruction :keyword:`async with` en définissant les "
"méthodes :meth:`~object.__aenter__` et :meth:`~object.__aexit__`. A été "
"Introduit par la :pep:`492`."
#: glossary.rst:97
msgid "asynchronous generator"
@ -267,7 +267,6 @@ msgstr ""
"Objet créé par un :term:`générateur asynchrone <asynchronous generator>`."
#: glossary.rst:115
#, fuzzy
msgid ""
"This is an :term:`asynchronous iterator` which when called using the :meth:"
"`~object.__anext__` method returns an awaitable object which will execute "
@ -275,11 +274,11 @@ msgid ""
"`yield` expression."
msgstr ""
"C'est un :term:`asynchronous iterator` qui, lorsqu'il est appelé via la "
"méthode :meth:`__anext__` renvoie un objet *awaitable* qui exécute le corps "
"de la fonction du générateur asynchrone jusqu'au prochain :keyword:`yield`."
"méthode :meth:`~object.__anext__` renvoie un objet *awaitable* qui exécute "
"le corps de la fonction du générateur asynchrone jusqu'au prochain :keyword:"
"`yield`."
#: glossary.rst:120
#, fuzzy
msgid ""
"Each :keyword:`yield` temporarily suspends processing, remembering the "
"location execution state (including local variables and pending try-"
@ -288,33 +287,31 @@ msgid ""
"where it left off. See :pep:`492` and :pep:`525`."
msgstr ""
"Chaque :keyword:`yield` suspend temporairement l'exécution, en gardant en "
"mémoire l'endroit et l'état de l'exécution (ce qui inclut les variables "
"mémoire l'emplacement et l'état de l'exécution (ce qui inclut les variables "
"locales et les *try* en cours). Lorsque l'exécution de l'itérateur de "
"générateur asynchrone reprend avec un nouvel *awaitable* renvoyé par :meth:"
"`__anext__`, elle repart de là où elle s'était arrêtée. Voir les :pep:`492` "
"et :pep:`525`."
"`~object.__anext__`, elle repart de là où elle s'était arrêtée. Voir les :"
"pep:`492` et :pep:`525`."
#: glossary.rst:125
msgid "asynchronous iterable"
msgstr "itérable asynchrone"
#: glossary.rst:127
#, fuzzy
msgid ""
"An object, that can be used in an :keyword:`async for` statement. Must "
"return an :term:`asynchronous iterator` from its :meth:`~object.__aiter__` "
"method. Introduced by :pep:`492`."
msgstr ""
"Objet qui peut être utilisé dans une instruction :keyword:`async for`. Sa "
"méthode :meth:`__aiter__` doit renvoyer un :term:`asynchronous iterator`. A "
"été introduit par la :pep:`492`."
"méthode :meth:`~object.__aiter__` doit renvoyer un :term:`asynchronous "
"iterator`. A été introduit par la :pep:`492`."
#: glossary.rst:130
msgid "asynchronous iterator"
msgstr "itérateur asynchrone"
#: glossary.rst:132
#, fuzzy
msgid ""
"An object that implements the :meth:`~object.__aiter__` and :meth:`~object."
"__anext__` methods. :meth:`~object.__anext__` must return an :term:"
@ -322,12 +319,12 @@ msgid ""
"an asynchronous iterator's :meth:`~object.__anext__` method until it raises "
"a :exc:`StopAsyncIteration` exception. Introduced by :pep:`492`."
msgstr ""
"Objet qui implémente les méthodes :meth:`__aiter__` et :meth:`__anext__`. "
"``__anext__`` doit renvoyer un objet :term:`awaitable`. Tant que la méthode :"
"meth:`__anext__` produit des objets *awaitable*, le :keyword:`async for` "
"appelant les consomme. L'itérateur asynchrone lève une exception :exc:"
"`StopAsyncIteration` pour signifier la fin de l'itération. A été introduit "
"par la :pep:`492`."
"Objet qui implémente les méthodes :meth:`~object.__aiter__` et :meth:"
"`~object.__anext__`. :meth:`~object.__anext__` doit renvoyer un objet :term:"
"`awaitable`. Tant que la méthode :meth:`~object.__anext__` produit des "
"objets *awaitable*, le :keyword:`async for` appelant les consomme. "
"L'itérateur asynchrone lève une exception :exc:`StopAsyncIteration` pour "
"signifier la fin de l'itération. A été introduit par la :pep:`492`."
#: glossary.rst:137
msgid "attribute"
@ -362,15 +359,14 @@ msgid "awaitable"
msgstr "attendable (*awaitable*)"
#: glossary.rst:151
#, fuzzy
msgid ""
"An object that can be used in an :keyword:`await` expression. Can be a :"
"term:`coroutine` or an object with an :meth:`~object.__await__` method. See "
"also :pep:`492`."
msgstr ""
"Objet pouvant être utilisé dans une expression :keyword:`await`. Ce peut "
"être une :term:`coroutine` ou un objet avec une méthode :meth:`__await__`. "
"Voir aussi la :pep:`492`."
"être une :term:`coroutine` ou un objet avec une méthode :meth:`~object."
"__await__`. Voir aussi la :pep:`492`."
#: glossary.rst:154
msgid "BDFL"
@ -1392,7 +1388,7 @@ msgid ""
"value is derived from their :func:`id`."
msgstr ""
"La plupart des types immuables natifs de Python sont hachables, mais les "
"conteneurs muables (comme les listes ou les dictionnaires) ne le sont pas ; "
"conteneurs mutables (comme les listes ou les dictionnaires) ne le sont pas ; "
"les conteneurs immuables (comme les n-uplets ou les ensembles figés) ne sont "
"hachables que si leurs éléments sont hachables. Les instances de classes "
"définies par les utilisateurs sont hachables par défaut. Elles sont toutes "
@ -1845,7 +1841,7 @@ msgstr ""
"Conteneur permettant de rechercher des éléments à partir de clés et "
"implémentant les méthodes spécifiées dans les classes mères abstraites des :"
"class:`tableaux de correspondances <collections.abc.Mapping>` (immuables) "
"ou :class:`tableaux de correspondances muables <collections.abc."
"ou :class:`tableaux de correspondances mutables <collections.abc."
"MutableMapping>` (voir les :ref:`classes mères abstraites <collections-"
"abstract-base-classes>`). Les classes suivantes sont des exemples de "
"tableaux de correspondances : :class:`dict`, :class:`collections."
@ -1981,14 +1977,14 @@ msgstr "Voir :term:`ordre de résolution des méthodes`."
#: glossary.rst:814
msgid "mutable"
msgstr "muable"
msgstr "mutable"
#: glossary.rst:816
msgid ""
"Mutable objects can change their value but keep their :func:`id`. See also :"
"term:`immutable`."
msgstr ""
"Un objet muable peut changer de valeur tout en gardant le même :func:`id`. "
"Un objet mutable peut changer de valeur tout en gardant le même :func:`id`. "
"Voir aussi :term:`immuable`."
#: glossary.rst:818
@ -2709,8 +2705,8 @@ msgstr "encodages de texte"
#: glossary.rst:1145
msgid ""
"A string in Python is a sequence of Unicode code points (in range "
"``U+0000``--``U+10FFFF``). To store or transfer a string, it needs to be "
"A string in Python is a sequence of Unicode code points (in range ``U"
"+0000``--``U+10FFFF``). To store or transfer a string, it needs to be "
"serialized as a sequence of bytes."
msgstr ""
"Une chaîne de caractères en Python est une suite de points de code Unicode "
@ -2782,8 +2778,8 @@ msgstr ""
"qui ne soit pas disponible avec une chaîne entre guillemets, elle est utile "
"pour de nombreuses raisons. Elle vous autorise à insérer des guillemets "
"simples et doubles dans une chaîne sans avoir à les protéger et elle peut "
"s'étendre sur plusieurs lignes sans avoir à terminer chaque ligne par un "
"``\\``. Elle est ainsi particulièrement utile pour les chaînes de "
"s'étendre sur plusieurs lignes sans avoir à terminer chaque ligne par un ``"
"\\``. Elle est ainsi particulièrement utile pour les chaînes de "
"documentation (*docstrings*)."
#: glossary.rst:1175

View File

@ -526,7 +526,7 @@ msgstr ""
#: library/collections.abc.rst:260
msgid "ABCs for read-only and mutable :term:`sequences <sequence>`."
msgstr "ABC pour les :term:`séquences <sequence>` immuables et muables."
msgstr "ABC pour les :term:`séquences <sequence>` immuables et mutables."
#: library/collections.abc.rst:262
msgid ""
@ -553,13 +553,13 @@ msgstr ""
#: library/collections.abc.rst:278
msgid "ABCs for read-only and mutable sets."
msgstr "ABC pour les ensembles immuables et muables."
msgstr "ABC pour les ensembles immuables et mutables."
#: library/collections.abc.rst:283
msgid "ABCs for read-only and mutable :term:`mappings <mapping>`."
msgstr ""
"ABC pour les :term:`tables de correspondances <mapping>` immuables et "
"muables."
"mutables."
#: library/collections.abc.rst:290
msgid ""

View File

@ -1436,7 +1436,7 @@ msgid ""
"See :meth:`types.SimpleNamespace` for a mutable namespace based on an "
"underlying dictionary instead of a tuple."
msgstr ""
"Voir :meth:`types.SimpleNamespace` pour un espace de nommage muable basé sur "
"Voir :meth:`types.SimpleNamespace` pour un espace de nommage mutable basé sur "
"un dictionnaire sous-jacent à la place d'un *n*-uplet."
#: library/collections.rst:1075
@ -1753,7 +1753,7 @@ msgid ""
"In addition to supporting the methods and operations of mutable sequences, :"
"class:`UserList` instances provide the following attribute:"
msgstr ""
"En plus de gérer les méthodes et opérations des séquences muables, les "
"En plus de gérer les méthodes et opérations des séquences mutables, les "
"instances de :class:`UserList` possèdent l'attribut suivant :"
#: library/collections.rst:1351

View File

@ -33,7 +33,7 @@ msgid ""
msgstr ""
"Les instructions d'affectation en Python ne copient pas les objets, elles "
"créent des liens entre la cible et l'objet. Concernant les collections qui "
"sont muables ou contiennent des éléments muables, une copie est parfois "
"sont mutables ou contiennent des éléments mutables, une copie est parfois "
"nécessaire, pour pouvoir modifier une copie sans modifier l'autre. Ce module "
"met à disposition des opérations de copie génériques superficielle et "
"récursive (comme expliqué ci-dessous)."

View File

@ -551,7 +551,7 @@ msgstr ""
msgid ""
"Since these types are mutable, their value can also be changed afterwards::"
msgstr ""
"Ces types étant des muables, leur valeur peut aussi être modifiée après "
"Ces types étant des mutables, leur valeur peut aussi être modifiée après "
"coup ::"
#: library/ctypes.rst:291

View File

@ -484,7 +484,7 @@ msgstr ""
"*default_factory* : s'il est fourni, ce doit être un objet appelable sans "
"argument. Il est alors appelé à chaque fois qu'il faut une valeur par défaut "
"pour le champ. Ceci permet, entre autres choses, de définir des champs dont "
"les valeurs par défaut sont muables. Une erreur se produit si *default* et "
"les valeurs par défaut sont mutables. Une erreur se produit si *default* et "
"*default_factory* sont donnés tous les deux."
#: library/dataclasses.rst:258
@ -1161,7 +1161,7 @@ msgstr ""
#: library/dataclasses.rst:691
msgid "Mutable default values"
msgstr "Valeurs par défaut muables"
msgstr "Valeurs par défaut mutables"
#: library/dataclasses.rst:693
msgid ""
@ -1216,7 +1216,7 @@ msgid ""
"Using default factory functions is a way to create new instances of mutable "
"types as default values for fields::"
msgstr ""
"Pour qu'un champ d'un type muable soit par défaut initialisé à un nouvel "
"Pour qu'un champ d'un type mutable soit par défaut initialisé à un nouvel "
"objet pour chaque instance, utilisez une fonction de fabrique ::"
# suit un ':'

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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>`."

View File

@ -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`"
@ -573,7 +573,7 @@ msgid ""
"as most methods that the :class:`bytes` type has, see :ref:`bytes-methods`."
msgstr ""
"Renvoie un nouveau tableau d'octets. La classe :class:`bytearray` est une "
"séquence muable de nombres entiers dans l'intervalle 0 ≤ x < 256. Il possède "
"séquence mutable de nombres entiers dans l'intervalle 0 ≤ x < 256. Il possède "
"la plupart des méthodes des séquences variables, décrites dans :ref:"
"`typesseq-mutable`, ainsi que la plupart des méthodes de la classe :class:"
"`bytes`, voir :ref:`bytes-methods`."
@ -2031,7 +2031,7 @@ msgid ""
"type, as documented in :ref:`typesseq-list` and :ref:`typesseq`."
msgstr ""
"Contrairement aux apparences, :class:`list` n'est pas une fonction mais un "
"type séquentiel muable, comme décrit dans :ref:`typesseq-list` et :ref:"
"type séquentiel mutable, comme décrit dans :ref:`typesseq-list` et :ref:"
"`typesseq`."
#: library/functions.rst:1029

View File

@ -1403,7 +1403,7 @@ msgid ""
"explicitly bound arguments. Changes in :attr:`arguments` will reflect in :"
"attr:`args` and :attr:`kwargs`."
msgstr ""
"Une correspondance muable entre les noms de paramètres et les valeurs des "
"Une correspondance mutable entre les noms de paramètres et les valeurs des "
"arguments. Contient seulement les arguments liés explicitement. Les "
"changements dans :attr:`arguments` sont reflétés dans :attr:`args` et :attr:"
"`kwargs`."

View File

@ -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"

View File

@ -312,7 +312,7 @@ msgid ""
"support the dynamic creation of new :class:`ShareableList` instances via "
"slicing."
msgstr ""
"Construit un objet muable compatible avec le type liste dont toutes les "
"Construit un objet mutable compatible avec le type liste dont toutes les "
"valeurs sont stockées dans un bloc de mémoire partagée. Ceci limite le type "
"des valeurs pouvant être stockées aux types natifs ``int``, ``float``, "
"``bool``, ``str`` (de moins de 10 Mo chacune), ``bytes`` (de moins de 10 Mo "

View File

@ -1779,7 +1779,7 @@ msgid ""
"move on to the next buffer in the sequence to hold the rest of the data."
msgstr ""
"Lit depuis un descripteur de fichier *fd*, à la position *offset* dans des :"
"term:`objets bytes-compatibles <bytes-like object>` muables *buffers*, sans "
"term:`objets bytes-compatibles <bytes-like object>` mutables *buffers*, sans "
"modifier la position dans le fichier. Les données sont transférées dans "
"chaque tampon, jusqu'à ce qu'il soit plein, tour à tour."
@ -2132,7 +2132,7 @@ msgid ""
"rest of the data."
msgstr ""
"Lit depuis un descripteur de fichier *fd* dans une séquence d':term:`objets "
"bytes-compatibles <bytes-like object>` muables : *buffers*. Les données sont "
"bytes-compatibles <bytes-like object>` mutables : *buffers*. Les données sont "
"transférées dans chaque tampon, jusqu'à ce qu'il soit plein, tour à tour."
#: library/os.rst:1560

View File

@ -134,7 +134,7 @@ msgstr ""
"pointent dessus, depuis différents endroits dans la hiérarchie sérialisée. "
"Le module :mod:`pickle` repère ces partages et ne stocke ces objets qu'une "
"seule fois. Les objets partagés restent ainsi partagés, ce qui peut être "
"très important pour les objets muables."
"très important pour les objets mutables."
#: library/pickle.rst:72
msgid ""

View File

@ -6,37 +6,44 @@ 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: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2023-11-24 18:39+0100\n"
"Last-Translator: Jérémy TREMBLAY <jeremy-tremblay@outlook.fr>\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.4\n"
#: library/pkgutil.rst:2
msgid ":mod:`pkgutil` --- Package extension utility"
msgstr ""
msgstr ":mod:`pkgutil` — Utilitaire d'extension de package"
#: library/pkgutil.rst:7
msgid "**Source code:** :source:`Lib/pkgutil.py`"
msgstr "**Code source :** :source:`Lib/pkgutil.py`"
msgstr "**Code source :** :source:`Lib/pkgutil.py`"
#: library/pkgutil.rst:11
msgid ""
"This module provides utilities for the import system, in particular package "
"support."
msgstr ""
"Ce module fournit des utilitaires pour le système d'importation, en "
"particulier pour la prise en charge des paquets."
#: library/pkgutil.rst:16
msgid "A namedtuple that holds a brief summary of a module's info."
msgstr ""
"Un *n*-uplet nommé qui contient un bref résumé des informations d'un module."
#: library/pkgutil.rst:22
msgid ""
"Extend the search path for the modules which comprise a package. Intended "
"use is to place the following code in a package's :file:`__init__.py`::"
msgstr ""
"Étend le chemin de recherche pour les modules qui composent un paquet. "
"L'usage prévu est de placer le code suivant dans le :file:`__init__.py` d'un "
"paquet ::"
#: library/pkgutil.rst:28
msgid ""
@ -45,6 +52,10 @@ msgid ""
"This is useful if one wants to distribute different parts of a single "
"logical package as multiple directories."
msgstr ""
"Pour chaque répertoire sur :data:`sys.path` qui a un sous-répertoire "
"correspondant au nom du paquet, ajoute le sous-répertoire au :attr:"
"`__path__` du paquet. Cela est utile si l'on souhaite distribuer différentes "
"parties d'un paquet logique unique dans plusieurs répertoires."
#: library/pkgutil.rst:33
msgid ""
@ -56,6 +67,14 @@ msgid ""
"pkg` file are added to the path, regardless of whether they exist on the "
"filesystem. (This is a feature.)"
msgstr ""
"Elle recherche également les fichiers :file:`*.pkg` en commençant là où "
"``*`` correspond à l'argument *name*. Cette fonctionnalité est similaire aux "
"fichiers :file:`*.pth` (voir le module :mod:`site` pour plus "
"d'informations), à l'exception qu'elle ne traite pas de manière spéciale les "
"lignes commençant par ``import``. Un fichier :file:`*.pkg` est fiable de "
"facto : à part la vérification des doublons, toutes les entrées trouvées "
"dans un fichier :file:`*.pkg` sont ajoutées au chemin, quelle que soit leur "
"existence sur le système de fichiers. (C'est une fonctionnalité.)"
#: library/pkgutil.rst:41
msgid ""
@ -63,6 +82,10 @@ msgid ""
"returned unchanged. The input path is not modified; an extended copy is "
"returned. Items are only appended to the copy at the end."
msgstr ""
"Si le chemin d'entrée n'est pas une liste (comme c'est le cas pour les "
"paquets figés), il est retourné tel quel. Le chemin d'entrée n'est pas "
"modifié ; une copie étendue en est retournée. Les éléments ne sont ajoutés à "
"la copie qu'à la fin."
#: library/pkgutil.rst:45
msgid ""
@ -72,10 +95,18 @@ msgid ""
"may cause this function to raise an exception (in line with :func:`os.path."
"isdir` behavior)."
msgstr ""
"L'interpréteur estime que :data:`sys.path` est une séquence. Les éléments "
"de :data:`sys.path` qui ne sont pas des chaînes se référant à des "
"répertoires existants sont ignorés. Les éléments Unicode sur :data:`sys."
"path` qui provoquent des erreurs lorsqu'ils sont utilisés comme noms de "
"fichiers peuvent amener cette fonction à lever une exception (conformément "
"au comportement de :func:`os.path.isdir`)."
#: library/pkgutil.rst:54
msgid ":pep:`302` Finder that wraps Python's \"classic\" import algorithm."
msgstr ""
":pep:`302` Chercheur qui enveloppe l'algorithme d'importation « classique » "
"de Python."
#: library/pkgutil.rst:56
msgid ""
@ -84,27 +115,38 @@ msgid ""
"searches the current :data:`sys.path`, plus any modules that are frozen or "
"built-in."
msgstr ""
"Si *dirname* est une chaîne, un chercheur :pep:`302` est créé pour "
"rechercher ce répertoire. Si *dirname* est ``None``, un chercheur :pep:`302` "
"est créé pour rechercher le :data:`sys.path` actuel, ainsi que les modules "
"qui sont figés ou natifs."
#: library/pkgutil.rst:61
msgid ""
"Note that :class:`ImpImporter` does not currently support being used by "
"placement on :data:`sys.meta_path`."
msgstr ""
"Notez que :class:`ImpImporter` ne prend actuellement pas en charge son "
"utilisation en tant que placement dans :data:`sys.meta_path`."
#: library/pkgutil.rst:73
msgid ""
"This emulation is no longer needed, as the standard import mechanism is now "
"fully :pep:`302` compliant and available in :mod:`importlib`."
msgstr ""
"Cette émulation n'est plus nécessaire, car le mécanisme d'importation "
"standard est désormais entièrement conforme à la :pep:`302` et "
"disponible dans :mod:`importlib`."
#: library/pkgutil.rst:71
msgid ""
":term:`Loader <loader>` that wraps Python's \"classic\" import algorithm."
msgstr ""
":term:`Loader <loader>` qui encapsule l'algorithme d'importation "
 classique » de Python."
#: library/pkgutil.rst:80
msgid "Retrieve a module :term:`loader` for the given *fullname*."
msgstr ""
msgstr "Récupère un :term:`loader` de module pour le *fullname* donné."
#: library/pkgutil.rst:82
msgid ""
@ -113,36 +155,46 @@ msgid ""
"returns the loader rather than the full :class:`importlib.machinery."
"ModuleSpec`."
msgstr ""
"Il s'agit d'une surcouche de compatibilité ascendante autour de :func:"
"`importlib.util.find_spec` qui convertit la plupart des échecs en :exc:"
"`ImportError` et ne renvoie que le chargeur, plutôt que le :class:`importlib."
"machinery.ModuleSpec` complet."
#: library/pkgutil.rst:104 library/pkgutil.rst:140 library/pkgutil.rst:200
msgid ""
"Updated to be based directly on :mod:`importlib` rather than relying on the "
"package internal :pep:`302` import emulation."
msgstr ""
"Mise à jour pour être basée directement sur :mod:`importlib` au lieu de "
"dépendre de l'émulation interne de la :pep:`302` du paquet."
#: library/pkgutil.rst:123
msgid "Updated to be based on :pep:`451`"
msgstr ""
msgstr "Mise à jour pour être basée sur la :pep:`451`"
#: library/pkgutil.rst:96
msgid "Retrieve a :term:`finder` for the given *path_item*."
msgstr ""
msgstr "Récupère un :term:`finder` pour l'élément *path_item* donné."
#: library/pkgutil.rst:98
msgid ""
"The returned finder is cached in :data:`sys.path_importer_cache` if it was "
"newly created by a path hook."
msgstr ""
"Le chercheur retourné est mis en cache dans :data:`sys.path_importer_cache` "
"s'il a été récemment créé par le chemin d'un point d'entrée."
#: library/pkgutil.rst:101
msgid ""
"The cache (or part of it) can be cleared manually if a rescan of :data:`sys."
"path_hooks` is necessary."
msgstr ""
"Le cache (ou une partie de celui-ci) peut être effacé manuellement si une "
"nouvelle analyse de :data:`sys.path_hooks` est nécessaire."
#: library/pkgutil.rst:111
msgid "Get a :term:`loader` object for *module_or_name*."
msgstr ""
msgstr "Récupère un objet :term:`loader` pour *module_or_name*."
#: library/pkgutil.rst:113
msgid ""
@ -152,10 +204,15 @@ msgid ""
"not already imported, its containing package (if any) is imported, in order "
"to establish the package ``__path__``."
msgstr ""
"Si le module ou le paquet est accessible via le mécanisme d'importation "
"normal, une encapsulation autour de la partie pertinente de cette mécanique "
"est renvoyé. Renvoie ``None`` si le module ne peut pas être trouvé ou "
"importé. Si le module nommé n'est pas déjà importé, son paquet contenant (le "
"cas échéant) est importé afin d'établir le paquet ``__path__``."
#: library/pkgutil.rst:129
msgid "Yield :term:`finder` objects for the given module name."
msgstr ""
msgstr "Génère des objets :term:`finder` pour le nom du module donné."
#: library/pkgutil.rst:131
msgid ""
@ -163,32 +220,47 @@ msgid ""
"containing fullname, otherwise they will be all registered top level finders "
"(i.e. those on both :data:`sys.meta_path` and :data:`sys.path_hooks`)."
msgstr ""
"Si le nom complet contient un ``'.'``, les chercheurs sont pour le paquet "
"contenant le nom complet, sinon ils sont enregistrés pour tous les "
"chercheurs de niveau supérieur (c'est-à-dire ceux de :data:`sys.meta_path` "
"et de :data:`sys.path_hooks`)."
#: library/pkgutil.rst:135
msgid ""
"If the named module is in a package, that package is imported as a side "
"effect of invoking this function."
msgstr ""
"Si le module nommé se trouve dans un paquet, ce paquet est importé en tant "
"qu'effet secondaire de l'invocation de cette fonction."
#: library/pkgutil.rst:138
msgid "If no module name is specified, all top level finders are produced."
msgstr ""
"Si aucun nom de module n'est spécifié, tous les chercheurs de niveau "
"supérieur sont générés."
#: library/pkgutil.rst:147
msgid ""
"Yields :class:`ModuleInfo` for all submodules on *path*, or, if *path* is "
"``None``, all top-level modules on :data:`sys.path`."
msgstr ""
"Fournit des :class:`ModuleInfo` pour tous les sous-modules sur *path* ou, si "
"*path* est ``None``, pour tous les modules de niveau supérieur sur :data:"
"`sys.path`."
#: library/pkgutil.rst:171
msgid ""
"*path* should be either ``None`` or a list of paths to look for modules in."
msgstr ""
"*path* doit être soit ``None``, soit une liste de chemins pour rechercher "
"des modules."
#: library/pkgutil.rst:173
msgid ""
"*prefix* is a string to output on the front of every module name on output."
msgstr ""
"*prefix* est une chaîne de caractères à afficher au début de chaque nom de "
"module en sortie."
#: library/pkgutil.rst:195
msgid ""
@ -197,12 +269,18 @@ msgid ""
"for :class:`importlib.machinery.FileFinder` and :class:`zipimport."
"zipimporter`."
msgstr ""
"Cela fonctionne uniquement pour un :term:`finder` qui définit une méthode "
"``iter_modules()``. Cette interface n'est pas standard, donc le module "
"fournit également des implémentations pour :class:`importlib.machinery."
"FileFinder` et :class:`zipimport.zipimporter`."
#: library/pkgutil.rst:168
msgid ""
"Yields :class:`ModuleInfo` for all modules recursively on *path*, or, if "
"*path* is ``None``, all accessible modules."
msgstr ""
"Fournit des :class:`ModuleInfo` pour tous les modules de manière récursive "
"sur *path* ou, si *path* est ``None``, tous les modules accessibles."
#: library/pkgutil.rst:175
msgid ""
@ -210,6 +288,9 @@ msgid ""
"the given *path*, in order to access the ``__path__`` attribute to find "
"submodules."
msgstr ""
"Notez que cette fonction doit importer tous les *packages* (*pas* tous les "
"modules !) sur le *path* donné, afin d'accéder à l'attribut ``__path__`` "
"pour trouver les sous-modules."
#: library/pkgutil.rst:179
msgid ""
@ -219,6 +300,11 @@ msgid ""
"`ImportError`\\s are caught and ignored, while all other exceptions are "
"propagated, terminating the search."
msgstr ""
"*onerror* est une fonction qui est appelée avec un argument (le nom du "
"paquet qui était en cours d'importation) si une exception se produit lors de "
"la tentative d'importation d'un paquet. Si aucune fonction *onerror* n'est "
"fournie, les :exc:`ImportError`\\s sont attrapées et ignorées, tandis que "
"toutes les autres exceptions sont propagées, mettant fin à la recherche."
#: library/pkgutil.rst:185
msgid "Examples::"
@ -226,7 +312,7 @@ msgstr "Exemples ::"
#: library/pkgutil.rst:207
msgid "Get a resource from a package."
msgstr ""
msgstr "Obtient une ressource à partir d'un paquet."
#: library/pkgutil.rst:209
msgid ""
@ -237,18 +323,28 @@ msgid ""
"separator. The parent directory name ``..`` is not allowed, and nor is a "
"rooted name (starting with a ``/``)."
msgstr ""
"Ceci est une surcouche pour l'API :term:`loader` :meth:`get_data <importlib."
"abc.ResourceLoader.get_data>`. L'argument *package* doit être le nom d'un "
"paquet, au format module standard (``foo.bar``). L'argument *resource* doit "
"être sous forme d'un nom de fichier relatif, en utilisant ``/`` comme "
"séparateur de chemin. Le nom du répertoire parent ``..`` n'est pas autorisé, "
"pas plus qu'un nom racine (commençant par ``/``)."
#: library/pkgutil.rst:216
msgid ""
"The function returns a binary string that is the contents of the specified "
"resource."
msgstr ""
"La fonction renvoie une chaîne binaire qui est le contenu de la ressource "
"spécifiée."
#: library/pkgutil.rst:219
msgid ""
"For packages located in the filesystem, which have already been imported, "
"this is the rough equivalent of::"
msgstr ""
"Pour les paquets situés dans le système de fichiers, qui ont déjà été "
"importés, c'est l'équivalent approximatif de ::"
#: library/pkgutil.rst:225
msgid ""
@ -258,10 +354,16 @@ msgid ""
"for :term:`namespace packages <namespace package>` does not support :meth:"
"`get_data <importlib.abc.ResourceLoader.get_data>`."
msgstr ""
"Si le paquet ne peut pas être localisé ou chargé, ou s'il utilise un :term:"
"`loader` qui ne prend pas en charge :meth:`get_data <importlib.abc."
"ResourceLoader.get_data>`, alors ``None`` est retourné. En particulier, le :"
"term:`loader` pour les :term:`paquets espaces de noms <namespace package>` "
"ne prend pas en charge :meth:`get_data <importlib.abc.ResourceLoader."
"get_data>`."
#: library/pkgutil.rst:234
msgid "Resolve a name to an object."
msgstr ""
msgstr "Solutionne un nom en un objet."
#: library/pkgutil.rst:236
msgid ""
@ -269,6 +371,10 @@ msgid ""
"issue:`12915`) - and equivalent functionality is also in widely used third-"
"party packages such as setuptools, Django and Pyramid."
msgstr ""
"Cette fonctionnalité est utilisée dans de nombreux endroits de la "
"bibliothèque standard (voir :issue:`12915`) - et une fonctionnalité "
"équivalente est également présente dans des paquets largement utilisés tels "
"que Setuptools, Django et Pyramid."
#: library/pkgutil.rst:240
msgid ""
@ -276,14 +382,17 @@ msgid ""
"where W is shorthand for a valid Python identifier and dot stands for a "
"literal period in these pseudo-regexes:"
msgstr ""
"Python s'attend à ce que *name* soit une chaîne de caractères dans l'un des "
"formats suivants, où W est une abréviation pour un identifiant Python valide "
"et le point représente un point littéral dans ces pseudo-regexes :"
#: library/pkgutil.rst:244
msgid "``W(.W)*``"
msgstr ""
msgstr "``W(.W)*``"
#: library/pkgutil.rst:245
msgid "``W(.W)*:(W(.W)*)?``"
msgstr ""
msgstr "``W(.W)*:(W(.W)*)?``"
#: library/pkgutil.rst:247
msgid ""
@ -294,6 +403,13 @@ msgid ""
"inferred by inspection, repeated attempts to import must be done with this "
"form."
msgstr ""
"La première forme est destinée uniquement à assurer la compatibilité "
"ascendante. Elle suppose qu'une partie du nom pointé est un paquet, et que "
"le reste est un objet quelque part à l'intérieur de ce paquet, "
"éventuellement niché à l'intérieur d'autres objets. Puisque l'endroit où le "
"paquet s'arrête et où la hiérarchie des objets commence ne peut pas être "
"déduit par inspection, des tentatives répétées d'importation doivent être "
"effectuées avec cette forme."
#: library/pkgutil.rst:254
msgid ""
@ -303,23 +419,34 @@ msgid ""
"hierarchy within that package. Only one import is needed in this form. If it "
"ends with the colon, then a module object is returned."
msgstr ""
"Dans la deuxième forme, l'appelant clarifie le point de division en "
"fournissant un seul deux-points : le nom pointé à gauche des deux-points est "
"un package à importer, et le nom pointé à droite est la hiérarchie d'objets "
"à l'intérieur de ce paquet. Seule une importation est nécessaire dans cette "
"forme. Si elle se termine par un deux-points, alors un objet module est "
"retourné."
#: library/pkgutil.rst:260
msgid ""
"The function will return an object (which might be a module), or raise one "
"of the following exceptions:"
msgstr ""
"La fonction renvoie un objet (qui pourrait être un module), ou génère l'une "
"des exceptions suivantes :"
#: library/pkgutil.rst:263
msgid ":exc:`ValueError` -- if *name* isn't in a recognised format."
msgstr ""
msgstr ":exc:`ValueError` si *name* n'est pas un format reconnu."
#: library/pkgutil.rst:265
msgid ":exc:`ImportError` -- if an import failed when it shouldn't have."
msgstr ""
":exc:`ImportError` si une importation échoue lorsqu'elle n'aurait pas dû."
#: library/pkgutil.rst:267
msgid ""
":exc:`AttributeError` -- If a failure occurred when traversing the object "
"hierarchy within the imported package to get to the desired object."
msgstr ""
":exc:`AttributeError` Si un échec s'est produit lors du parcours de la "
"hiérarchie d'objets dans le paquet importé pour accéder à l'objet souhaité."

View File

@ -693,9 +693,9 @@ msgid ""
"`NoneType`, :class:`int`, :class:`float`, :class:`str`, :class:`bytes`, or :"
"class:`bytearray`."
msgstr ""
"À lavenir, la *graine* devra être de lun des types suivants : *NoneType*, :"
"class:`int`, :class:`float`, :class:`str`, :class:`bytes` ou :class:"
"`bytearray`."
"À lavenir, la *graine* devra être de lun des types suivants : :class:"
"`NoneType`, :class:`int`, :class:`float`, :class:`str`, :class:`bytes` ou :"
"class:`bytearray`."
#: library/random.rst:393
msgid ""

View File

@ -82,7 +82,7 @@ msgid ""
"mutated)."
msgstr ""
"À cause de la sémantique de Python, une étagère ne peut pas savoir "
"lorsqu'une entrée muable de dictionnaire persistant est modifiée. Par défaut "
"lorsqu'une entrée mutable de dictionnaire persistant est modifiée. Par défaut "
"les objets modifiés sont écrits *seulement* lorsqu'ils sont assignés à une "
"étagère (voir :ref:`shelve-example`). Si le paramètre optionnel *writeback* "
"est mis à ``True``, toutes les entrées déjà accédées sont aussi mises en "
@ -244,7 +244,7 @@ msgstr ""
"Si le paramètre *writeback* est ``True``, l'objet garde en cache toutes les "
"entrées accédées et les écrit dans le *dict* aux moments de synchronisation "
"et de fermeture. Cela permet des opérations naturelles sur les entrées "
"muables, mais peut consommer beaucoup plus de mémoire et rendre les temps de "
"mutables, mais peut consommer beaucoup plus de mémoire et rendre les temps de "
"synchronisation et de fermeture très longs."
#: library/shelve.rst:132

View File

@ -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 daudit <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 daudit <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 ""

View File

@ -42,7 +42,7 @@ msgid ""
"rearrange their members in place, and don't return a specific item, never "
"return the collection instance itself but ``None``."
msgstr ""
"Certaines classes de collection sont muables. Les méthodes qui ajoutent, "
"Certaines classes de collection sont mutables. Les méthodes qui ajoutent, "
"retirent, ou réorganisent leurs éléments sur place, et qui ne renvoient pas "
"un élément spécifique, ne renvoient jamais l'instance de la collection elle-"
"même, mais ``None``."
@ -1726,7 +1726,7 @@ msgstr ""
"si vous concaténez des :class:`bytes`, vous pouvez aussi utiliser :meth:"
"`bytes.join` ou :class:`io.BytesIO`, ou vous pouvez faire les concaténations "
"sur place avec un objet :class:`bytearray`. Les objets :class:`bytearray` "
"sont muables et ont un mécanisme de sur-allocation efficace ;"
"sont mutables et ont un mécanisme de sur-allocation efficace ;"
# énumération
#: library/stdtypes.rst:1050
@ -1779,7 +1779,7 @@ msgid ""
"`hash` built-in."
msgstr ""
"La seule opération que les types de séquences immuables implémentent et qui "
"n'est pas implémentée par les types de séquences muables est la fonction "
"n'est pas implémentée par les types de séquences mutables est la fonction "
"native :func:`hash`."
#: library/stdtypes.rst:1083
@ -1802,7 +1802,7 @@ msgstr ""
#: library/stdtypes.rst:1094
msgid "Mutable Sequence Types"
msgstr "Types de séquences muables"
msgstr "Types de séquences mutables"
#: library/stdtypes.rst:1101
msgid ""
@ -1811,7 +1811,7 @@ msgid ""
"easier to correctly implement these operations on custom sequence types."
msgstr ""
"Les opérations dans le tableau ci-dessous sont définies sur les types de "
"séquences muables. La classe mère abstraite :class:`collections.abc."
"séquences mutables. La classe mère abstraite :class:`collections.abc."
"MutableSequence` est prévue pour faciliter l'implémentation correcte de ces "
"opérations sur les types de séquences personnalisées."
@ -1823,7 +1823,7 @@ msgid ""
"integers that meet the value restriction ``0 <= x <= 255``)."
msgstr ""
"Dans le tableau ci-dessosus, *s* est une instance d'un type de séquence "
"muable, *t* est un objet itérable et *x* est un objet arbitraire qui répond "
"mutable, *t* est un objet itérable et *x* est un objet arbitraire qui répond "
"à toutes les restrictions de type et de valeur imposées par *s* (par "
"exemple, :class:`bytearray` accepte uniquement des nombres entiers qui "
"répondent à la restriction de la valeur ``0 <= x <= 255``)."
@ -1986,7 +1986,7 @@ msgid ""
"classes provide it."
msgstr ""
":meth:`clear` et :meth:`!copy` sont incluses pour la compatibilité avec les "
"interfaces des conteneurs muables qui ne gèrent pas les opérations de "
"interfaces des conteneurs mutables qui ne gèrent pas les opérations de "
"découpage (comme :class:`dict` et :class:`set`). :meth:`!copy` ne fait pas "
"partie des classes mères abstraites (*ABC*) de :class:`collections.abc."
"MutableSequence`, mais la plupart des classes implémentées gérant des "
@ -2019,7 +2019,7 @@ msgid ""
"homogeneous items (where the precise degree of similarity will vary by "
"application)."
msgstr ""
"Les listes sont des séquences muables, généralement utilisées pour stocker "
"Les listes sont des séquences mutables, généralement utilisées pour stocker "
"des collections d'éléments homogènes (le degré de similitude varie selon "
"l'usage)."
@ -2085,7 +2085,7 @@ msgid ""
"additional method:"
msgstr ""
"Les listes gèrent toutes les opérations des séquences :ref:`communes "
"<typesseq-common>` et :ref:`muables <typesseq-mutable>`. Les listes "
"<typesseq-common>` et :ref:`mutables <typesseq-mutable>`. Les listes "
"fournissent également la méthode supplémentaire suivante :"
#: library/stdtypes.rst:1249
@ -2554,7 +2554,7 @@ msgid ""
"StringIO` can be used to efficiently construct strings from multiple "
"fragments."
msgstr ""
"Il n'y a aucun type de chaîne muable, mais :meth:`str.join` ou :class:`io."
"Il n'y a aucun type de chaîne mutable, mais :meth:`str.join` ou :class:`io."
"StringIO` peuvent être utilisées pour construire efficacement des chaînes à "
"partir de plusieurs fragments."
@ -4362,7 +4362,7 @@ msgid ""
":class:`bytearray` objects are a mutable counterpart to :class:`bytes` "
"objects."
msgstr ""
"Les objets :class:`bytearray` sont l'équivalent muable des objets :class:"
"Les objets :class:`bytearray` sont l'équivalent mutable des objets :class:"
"`bytes`."
#: library/stdtypes.rst:2599
@ -4404,8 +4404,8 @@ msgid ""
"mutable>` sequence operations in addition to the common bytes and bytearray "
"operations described in :ref:`bytes-methods`."
msgstr ""
"Comme les *bytearray* sont muables, ils prennent en charge les opérations de "
"séquences :ref:`muables <typesseq-mutable>` en plus des opérations communes "
"Comme les *bytearray* sont mutables, ils prennent en charge les opérations de "
"séquences :ref:`mutables <typesseq-mutable>` en plus des opérations communes "
"de *bytes* et *bytearray* décrites dans :ref:`bytes-methods`."
#: library/stdtypes.rst:2611
@ -5894,9 +5894,9 @@ msgid ""
"of another set."
msgstr ""
"Il existe actuellement deux types natifs pour les ensembles, :class:`set` "
"et :class:`frozenset`. Le type :class:`set` est muable — son contenu peut "
"et :class:`frozenset`. Le type :class:`set` est mutable — son contenu peut "
"changer en utilisant des méthodes comme :meth:`~set.add` et :meth:`~set."
"remove`. Puisqu'il est muable, il n'a pas de valeur de hachage et ne peut "
"remove`. Puisqu'il est mutable, il n'a pas de valeur de hachage et ne peut "
"donc pas être utilisé ni comme clé de dictionnaire ni comme élément d'un "
"autre ensemble. Le type :class:`frozenset` est immuable et :term:`hachable "
"<hashable>` — son contenu ne peut être modifié après sa création, il peut "
@ -6218,7 +6218,7 @@ msgid ""
msgstr ""
"Un objet :term:`tableau de correspondances <mapping>` (*mapping*) fait "
"correspondre des valeurs :term:`hachables <hashable>` à des objets "
"arbitraires. Les tableaux de correspondances sont des objets muables. Il "
"arbitraires. Les tableaux de correspondances sont des objets mutables. Il "
"n'existe pour le moment qu'un type de tableau de correspondances standard, "
"le :dfn:`dictionary`. (Pour les autres conteneurs, voir les types natifs :"
"class:`liste <list>`, :class:`ensemble <set>` et :class:`n-uplet <tuple>`, "
@ -6234,7 +6234,7 @@ msgid ""
msgstr ""
"Les clés d'un dictionnaire sont *presque* des données arbitraires. Les "
"valeurs qui ne sont pas :term:`hachables <hashable>`, c'est-à-dire les "
"valeurs contenant des listes, dictionnaires ou autres types muables (qui "
"valeurs contenant des listes, dictionnaires ou autres types mutables (qui "
"sont comparés à l'aide de leurs valeurs plutôt que par l'identité de "
"l'objet) ne peuvent pas être utilisées comme clés. Des valeurs qui sont "
"considérées égales lors d'une comparaison (comme ``1``, ``1.0`` et ``True``) "
@ -8781,7 +8781,7 @@ msgstr ""
#: library/stdtypes.rst:1461
#, fuzzy
msgid "text sequence type"
msgstr "Types de séquences muables"
msgstr "Types de séquences mutables"
#: library/stdtypes.rst:1510 library/stdtypes.rst:1528
#, fuzzy
@ -8872,7 +8872,7 @@ msgstr ""
#: library/stdtypes.rst:2458
#, fuzzy
msgid "binary sequence types"
msgstr "Types de séquences muables"
msgstr "Types de séquences mutables"
#: library/stdtypes.rst:2466
#, fuzzy

View File

@ -65,11 +65,11 @@ msgid ""
"example, creating temporary or proxy databases, directories, or starting a "
"server process."
msgstr ""
"Un :dfn:`aménagement de test <test fixture>` (*fixture* en anglais) désigne "
"la préparation nécessaire au déroulement d'un ou plusieurs tests, et toutes "
"les actions de nettoyage associées. Cela peut concerner, par exemple, la "
"création de bases de données temporaires ou mandataires, de répertoires, ou "
"le démarrage d'un processus serveur."
"Un :dfn:`aménagement de test` (*fixture* en anglais) désigne la préparation "
"nécessaire au déroulement d'un ou plusieurs tests, et toutes les actions de "
"nettoyage associées. Cela peut concerner, par exemple, la création de bases "
"de données temporaires ou mandataires, de répertoires, ou le démarrage d'un "
"processus serveur."
#: library/unittest.rst:37
msgid "test case"

View File

@ -6,18 +6,18 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-31 11:33+0100\n"
"PO-Revision-Date: 2021-11-08 15:03+0100\n"
"PO-Revision-Date: 2023-07-24 13:50+0200\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\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.3.1\n"
#: library/zipimport.rst:2
msgid ":mod:`zipimport` --- Import modules from Zip archives"
msgstr ":mod:`zipimport` — Importer des modules à partir d'archives Zip"
msgstr ":mod:`zipimport` — Import de modules à partir d'archives Zip"
#: library/zipimport.rst:9
msgid "**Source code:** :source:`Lib/zipimport.py`"
@ -58,7 +58,6 @@ msgstr ""
"répertoire :file:`lib/` dans l'archive."
#: library/zipimport.rst:26
#, fuzzy
msgid ""
"Any files may be present in the ZIP archive, but importers are only invoked "
"for :file:`.py` and :file:`.pyc` files. ZIP import of dynamic modules (:"
@ -67,19 +66,20 @@ msgid ""
"adding the corresponding :file:`.pyc` file, meaning that if a ZIP archive "
"doesn't contain :file:`.pyc` files, importing may be rather slow."
msgstr ""
"Tous les fichiers peuvent être présents dans l'archive ZIP, mais seuls les "
"fichiers :file:`.py` et :file:`.pyc` sont disponibles pour importation. "
"L'importation ZIP des modules dynamiques (:file:`.pyd`, :file:`.so`) n'est "
"pas permise. Notez que si une archive ne contient que des fichiers :file:`."
"py`, Python n'essaiera pas de modifier l'archive en ajoutant le fichier "
"correspondant :file:`.pyc`, ce qui signifie que si une archive ZIP ne "
"contient pas de fichier :file:`.pyc`, l'importation peut être assez lente."
"Tous les fichiers peuvent être présents dans l'archive ZIP, mais les "
"importateurs ne sont invoqués que pour les fichiers :file:`.py` et :file:`."
"pyc`. L'importation ZIP de modules dynamiques (:file:`.py`, :file:`.so`) "
"n'est pas permise. Notez que si une archive ne contient que des fichiers :"
"file:`.py`, Python n'essaiera pas de modifier l'archive en ajoutant le "
"fichier :file:`.pyc` correspondant, ce qui signifie que si une archive ZIP "
"ne contient pas de fichiers :file:`.pyc`, l'importation peut être assez "
"lente."
#: library/zipimport.rst:33
msgid "Previously, ZIP archives with an archive comment were not supported."
msgstr ""
"auparavant, les archives ZIP avec un commentaire n'étaient pas prises en "
"charge."
"auparavant, les archives ZIP avec un commentaire darchive nétaient pas "
"prises en charge."
#: library/zipimport.rst:40
msgid ""

View File

@ -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: 2023-02-15 11:51+0100\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"PO-Revision-Date: 2023-12-05 22:58+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.1\n"
"X-Generator: Poedit 3.2.2\n"
#: reference/compound_stmts.rst:5
msgid "Compound statements"
@ -233,7 +233,6 @@ msgstr ""
"compris celles effectuées dans la suite de la boucle ``for`` ::"
#: reference/compound_stmts.rst:193
#, fuzzy
msgid ""
"Names in the target list are not deleted when the loop is finished, but if "
"the sequence is empty, they will not have been assigned to at all by the "
@ -243,27 +242,27 @@ msgid ""
msgstr ""
"Les noms dans la liste cible ne sont pas supprimés lorsque la boucle est "
"terminée mais, si la séquence est vide, ils n'auront pas du tout été "
"assignés par la boucle. Petite astuce : la fonction native :func:`range` "
"renvoie un itérateur sur des entiers approprié pour émuler la boucle "
"classique en Pascal sur des entiers ``for i := a to b do`` ; par exemple, "
"``list(range(3))`` renvoie la liste ``[0, 1, 2]``."
"assignés par la boucle. Petite astuce : le type natif :func:`range` "
"représente des suites arithmétiques immuables de nombres entiers ; par "
"exemple, itérer sur ``range(3)`` renvoie successivement les entiers 0, 1 et "
"2."
# suit un :
#: reference/compound_stmts.rst:198
msgid "Starred elements are now allowed in the expression list."
msgstr ""
"Les éléments étoilés sont maintenant autorisés dans l'expression liste."
"les éléments étoilés sont maintenant autorisés dans l'expression liste."
#: reference/compound_stmts.rst:205
msgid "The :keyword:`!try` statement"
msgstr "L'instruction :keyword:`!try`"
#: reference/compound_stmts.rst:215
#, fuzzy
msgid ""
"The :keyword:`!try` statement specifies exception handlers and/or cleanup "
"code for a group of statements:"
msgstr ""
"L'instruction :keyword:`try` définit les gestionnaires d'exception ou le "
"L'instruction :keyword:`!try` définit les gestionnaires d'exception ou le "
"code de nettoyage pour un groupe d'instructions :"
#: reference/compound_stmts.rst:231
@ -279,10 +278,9 @@ msgstr ""
#: reference/compound_stmts.rst:239
msgid ":keyword:`!except` clause"
msgstr ""
msgstr "clause :keyword:`!except`"
#: reference/compound_stmts.rst:241
#, fuzzy
msgid ""
"The :keyword:`!except` clause(s) specify one or more exception handlers. "
"When no exception occurs in the :keyword:`try` clause, no exception handler "
@ -298,34 +296,32 @@ msgid ""
"tuple containing an item that is the class or a non-virtual base class of "
"the exception object."
msgstr ""
"La ou les clauses :keyword:`except` précisent un ou plusieurs gestionnaires "
"La ou les clauses :keyword:`!except` précisent un ou plusieurs gestionnaires "
"d'exceptions. Si aucune exception ne se produit dans la clause :keyword:"
"`try`, aucun gestionnaire d'exception n'est exécuté. Lorsqu'une exception se "
"produit dans la suite de :keyword:`!try`, Python recherche un gestionnaire "
"d'exception. Cette recherche inspecte les clauses ``except``, l'une après "
"l'autre, jusqu'à trouver une correspondance. Une clause ``except`` vide "
"(c'est-à-dire sans expression), si elle est présente, doit être la "
"dernière ; elle correspond à toute exception. Pour une clause ``except`` "
"avec une expression, cette expression est évaluée et la clause correspond si "
"l'objet résultant est « compatible » avec l'exception. Un objet est réputé "
"compatible avec une exception s'il est la classe ou une classe mère (mais "
"pas une :term:`classe mère abstraite`) de l'objet exception ou si c'est un "
"*n*-uplet dont un élément est la classe ou une classe parente (non-"
"abstraite) de l'exception."
"d'exception. Cette recherche inspecte les clauses :keyword:`!except`, l'une "
"après l'autre, jusqu'à trouver une correspondance. Une clause :keyword:`!"
"except` vide (c'est-à-dire sans expression), si elle est présente, doit être "
"la dernière ; elle correspond à toute exception. Pour une clause :keyword:`!"
"except` avec une expression, cette expression est évaluée et la clause "
"correspond si l'objet résultant est « compatible » avec l'exception. Un "
"objet est réputé compatible avec une exception s'il est la classe ou une "
"classe mère (mais pas une :term:`classe mère abstraite`) de l'objet "
"exception ou si c'est un *n*-uplet dont un élément est la classe ou une "
"classe mère (non-abstraite) de l'exception."
#: reference/compound_stmts.rst:256
#, fuzzy
msgid ""
"If no :keyword:`!except` clause matches the exception, the search for an "
"exception handler continues in the surrounding code and on the invocation "
"stack. [#]_"
msgstr ""
"Si aucune clause ``except`` ne correspond à l'exception, la recherche d'un "
"gestionnaire d'exception se poursuit dans le code englobant et dans la pile "
"d'appels. [#]_"
"Si aucune clause :keyword:`!except` ne correspond à l'exception, la "
"recherche d'un gestionnaire d'exception se poursuit dans le code englobant "
"et dans la pile d'appels. [#]_"
#: reference/compound_stmts.rst:260
#, fuzzy
msgid ""
"If the evaluation of an expression in the header of an :keyword:`!except` "
"clause raises an exception, the original search for a handler is canceled "
@ -333,14 +329,13 @@ msgid ""
"call stack (it is treated as if the entire :keyword:`try` statement raised "
"the exception)."
msgstr ""
"Si l'évaluation d'une expression dans l'en-tête d'une clause ``except`` lève "
"une exception, la recherche initiale d'un gestionnaire est annulée et une "
"recherche commence pour la nouvelle exception dans le code englobant et dans "
"la pile d'appels (c'est traité comme si l'instruction :keyword:`try` avait "
"levé l'exception)."
"Si l'évaluation d'une expression dans l'en-tête d'une clause :keyword:`!"
"except` lève une exception, la recherche initiale d'un gestionnaire est "
"annulée et une recherche commence pour la nouvelle exception dans le code "
"englobant et dans la pile d'appels (c'est traité comme si l'instruction :"
"keyword:`try` avait levé l'exception)."
#: reference/compound_stmts.rst:268
#, fuzzy
msgid ""
"When a matching :keyword:`!except` clause is found, the exception is "
"assigned to the target specified after the :keyword:`!as` keyword in that :"
@ -352,31 +347,29 @@ msgid ""
"keyword:`!try` clause of the inner handler, the outer handler will not "
"handle the exception.)"
msgstr ""
"Lorsqu'une clause d'exception correspond, l'exception est assignée à la "
"cible précisée après le mot-clé :keyword:`!as` dans cette clause ``except``, "
"si cette cible existe, et la suite de clause ``except`` est exécutée. Toutes "
"les clauses ``except`` doivent avoir un bloc exécutable. Lorsque la fin de "
"ce bloc est atteinte, l'exécution continue normalement après l'ensemble de "
"l'instruction ``try`` (cela signifie que si deux gestionnaires imbriqués "
"existent pour la même exception, et que l'exception se produit dans la "
"clause ``try`` du gestionnaire interne, le gestionnaire externe ne gère pas "
"l'exception)."
"Lorsqu'une clause :keyword:`!except` correspond, l'exception est affectée à "
"la cible précisée après le mot-clé :keyword:`!as` dans cette clause :keyword:"
"`!except`, si cette cible existe, et la suite de clause :keyword:`!except` "
"est exécutée. Toutes les clauses :keyword:`!except` doivent avoir un bloc "
"exécutable. Lorsque la fin de ce bloc est atteinte, l'exécution continue "
"normalement après l'ensemble de l'instruction :keyword:`try` (cela signifie "
"que si deux gestionnaires imbriqués existent pour la même exception, et que "
"l'exception se produit dans la clause :keyword:`!try` du gestionnaire "
"interne, le gestionnaire externe ne gère pas l'exception)."
#: reference/compound_stmts.rst:279
#, fuzzy
msgid ""
"When an exception has been assigned using ``as target``, it is cleared at "
"the end of the :keyword:`!except` clause. This is as if ::"
msgstr ""
"Lorsqu'une exception a été assignée en utilisant ``as cible``, elle est "
"effacée à la fin de la clause ``except``. C'est comme si ::"
"Lorsqu'une exception a été affectée en utilisant ``as cible``, elle est "
"effacée à la fin de la clause :keyword:`!except`. C'est comme si ::"
#: reference/compound_stmts.rst:285
msgid "was translated to ::"
msgstr "avait été traduit en ::"
msgstr "avait été traduit en \t::"
#: reference/compound_stmts.rst:293
#, fuzzy
msgid ""
"This means the exception must be assigned to a different name to be able to "
"refer to it after the :keyword:`!except` clause. Exceptions are cleared "
@ -385,11 +378,11 @@ msgid ""
"garbage collection occurs."
msgstr ""
"Cela veut dire que l'exception doit être assignée à un nom différent pour "
"pouvoir s'y référer après la clause ``except``. Les exceptions sont effacées "
"parce qu'avec la trace de la pile d'appels qui leur est attachée, elles "
"créent un cycle dans les pointeurs de références (avec le cadre de la pile), "
"ce qui conduit à conserver tous les noms locaux de ce cadre en mémoire "
"jusqu'au passage du ramasse-miettes."
"pouvoir s'y référer après la clause :keyword:`!except`. Les exceptions sont "
"effacées parce qu'avec la trace de la pile d'appels qui leur est attachée, "
"elles créent un cycle dans les pointeurs de références (avec le cadre de la "
"pile), ce qui conduit à conserver tous les noms locaux de ce cadre en "
"mémoire jusqu'au passage du ramasse-miettes."
#: reference/compound_stmts.rst:303
msgid ""
@ -399,13 +392,17 @@ msgid ""
"leaving an exception handler, the exception stored in the :mod:`sys` module "
"is reset to its previous value::"
msgstr ""
"Avant qu'une suite de clauses :keyword:`!except` ne soit exécutée, "
"l'exception est stockée dans le module :mod:`sys`, où elle est accessible "
"depuis le corps de la clause :keyword:`!except` en appelant :func:`sys."
"exception`. Lorsque vous quittez un gestionnaire d'exceptions, l'exception "
"stockée dans le module :mod:`sys` est réinitialisée à sa valeur précédente ::"
#: reference/compound_stmts.rst:334
msgid ":keyword:`!except*` clause"
msgstr ""
msgstr "clause :keyword:`!except*`"
#: reference/compound_stmts.rst:336
#, fuzzy
msgid ""
"The :keyword:`!except*` clause(s) are used for handling :exc:"
"`ExceptionGroup`\\s. The exception type for matching is interpreted as in "
@ -417,17 +414,17 @@ msgid ""
"in the group is handled by at most one :keyword:`!except*` clause, the first "
"that matches it. ::"
msgstr ""
"Les clauses :keyword:`except*<except_star>` sont utilisées pour gérer des :"
"exc:`ExceptionGroup`. Le type de l'exception pour la correspondance est "
"Les clauses :keyword:`!except*` sont utilisées pour gérer des :exc:"
"`ExceptionGroup`. Le type de l'exception pour la correspondance est "
"interprété de la même manière que dans le cas d'un :keyword:`except` mais, "
"dans le cas d'un groupe d'exceptions, il est possible d'avoir une "
"correspondance partielle quand le type correspond à une ou plusieurs "
"exception dans le groupe. Cela veut dire que plusieurs clauses *except\\** "
"peuvent être exécutées, chacune gérant une partie du groupe d'exceptions. "
"Chaque clause ne s'exécute qu'une fois et gère un groupe d'exception "
"constitué des exceptions qui correspondent. Chaque exception du groupe est "
"gérée par une clause *except\\** au plus, la première à laquelle elle "
"correspond. ::"
"exceptions dans le groupe. Cela veut dire que plusieurs clauses :keyword:`!"
"except*` peuvent être exécutées, chacune gérant une partie du groupe "
"d'exceptions. Chaque clause ne s'exécute (au maximum) qu'une fois et gère un "
"groupe d'exception constitué des exceptions qui correspondent. Chaque "
"exception du groupe est gérée par une clause :keyword:`!except*` au plus, la "
"première à laquelle elle correspond. ::"
#: reference/compound_stmts.rst:364
msgid ""
@ -435,6 +432,10 @@ msgid ""
"clause are re-raised at the end, combined into an exception group along with "
"all exceptions that were raised from within :keyword:`!except*` clauses."
msgstr ""
"Toutes les exceptions restantes qui n'ont été gérées par aucune clause :"
"keyword:`!except*` sont réactivées à la fin, combinées dans un groupe "
"d'exceptions avec toutes les exceptions qui ont été levées à partir des "
"clauses :keyword:`!except*`."
#: reference/compound_stmts.rst:368
msgid ""
@ -442,6 +443,10 @@ msgid ""
"only one exception is raised from an :keyword:`!except*` clause, this "
"exception is no longer wrapped to form a new :exc:`ExceptionGroup`."
msgstr ""
"À partir de la version 3.11.4, lorsque l'intégralité de :exc:"
"`ExceptionGroup` est gérée et qu'une seule exception est levée à partir "
"d'une clause :keyword:`!except*`, cette exception n'est plus encapsulée pour "
"former un nouveau :exc:`ExceptionGroup`."
#: reference/compound_stmts.rst:372
msgid ""
@ -449,6 +454,9 @@ msgid ""
"of the :keyword:`!except*` clauses, it is caught and wrapped by an exception "
"group with an empty message string. ::"
msgstr ""
"Si l'exception levée n'est pas un groupe d'exceptions et que son type "
"correspond à l'une des clauses :keyword:`!except*`, elle est interceptée et "
"encapsulée par un groupe d'exceptions avec une chaîne de message vide. ::"
#: reference/compound_stmts.rst:383
msgid ""
@ -458,11 +466,15 @@ msgid ""
"keyword:`break`, :keyword:`continue` and :keyword:`return` cannot appear in "
"an :keyword:`!except*` clause."
msgstr ""
"Une clause :keyword:`!except*` doit avoir un type correspondant, et ce type "
"ne peut pas être une sous-classe de :exc:`BaseExceptionGroup`. Il n'est pas "
"possible de combiner :keyword:`except` et :keyword:`!except*` dans un même :"
"keyword:`try`. Aucune clause :keyword:`break`, :keyword:`continue` ou :"
"keyword:`return` ne peut apparaître dans une clause :keyword:`!except*`."
#: reference/compound_stmts.rst:400
#, fuzzy
msgid ":keyword:`!else` clause"
msgstr "L'instruction :keyword:`!while`"
msgstr "clause :keyword:`!else`"
#: reference/compound_stmts.rst:402
msgid ""
@ -480,10 +492,9 @@ msgstr ""
#: reference/compound_stmts.rst:414
msgid ":keyword:`!finally` clause"
msgstr ""
msgstr "clause :keyword:`!finally`"
#: reference/compound_stmts.rst:416
#, fuzzy
msgid ""
"If :keyword:`!finally` is present, it specifies a 'cleanup' handler. The :"
"keyword:`try` clause is executed, including any :keyword:`except` and :"
@ -496,9 +507,9 @@ msgid ""
"`return`, :keyword:`break` or :keyword:`continue` statement, the saved "
"exception is discarded::"
msgstr ""
"Si :keyword:`finally` est présente, elle définit un gestionnaire de "
"Si :keyword:`!finally` est présente, elle définit un gestionnaire de "
 nettoyage ». La clause :keyword:`try` est exécutée, y compris les clauses :"
"keyword:`except` et :keyword:`!else`. Si une exception se produit dans l'une "
"keyword:`except` et :keyword:`else`. Si une exception se produit dans l'une "
"des clauses et n'est pas traitée, l'exception est temporairement "
"sauvegardée. La clause :keyword:`!finally` est exécutée. S'il y a une "
"exception sauvegardée, elle est levée à nouveau à la fin de la clause :"
@ -509,16 +520,14 @@ msgstr ""
"l'exception sauvegardée est jetée ::"
#: reference/compound_stmts.rst:435
#, fuzzy
msgid ""
"The exception information is not available to the program during execution "
"of the :keyword:`!finally` clause."
msgstr ""
"L'information relative à l'exception n'est pas disponible pour le programme "
"pendant l'exécution de la clause :keyword:`finally`."
"pendant l'exécution de la clause :keyword:`!finally`."
#: reference/compound_stmts.rst:443
#, fuzzy
msgid ""
"When a :keyword:`return`, :keyword:`break` or :keyword:`continue` statement "
"is executed in the :keyword:`try` suite of a :keyword:`!try`...\\ :keyword:`!"
@ -527,11 +536,10 @@ msgid ""
msgstr ""
"Lorsqu'une instruction :keyword:`return`, :keyword:`break` ou :keyword:"
"`continue` est exécutée dans la suite d'une instruction :keyword:`try` d'une "
"construction :keyword:`!try`…\\ :keyword:`!finally`, la clause :keyword:"
"`finally` est aussi exécutée « à la sortie »."
"construction :keyword:`!try`…\\ :keyword:`!finally`, la clause :keyword:`!"
"finally` est aussi exécutée « à la sortie »."
#: reference/compound_stmts.rst:447
#, fuzzy
msgid ""
"The return value of a function is determined by the last :keyword:`return` "
"statement executed. Since the :keyword:`!finally` clause always executes, "
@ -539,18 +547,17 @@ msgid ""
"will always be the last one executed::"
msgstr ""
"La valeur de retour d'une fonction est déterminée par la dernière "
"instruction :keyword:`return` exécutée. Puisque la clause :keyword:`finally` "
"s'exécute toujours, une instruction :keyword:`!return` exécutée dans le :"
"keyword:`!finally` sera toujours la dernière clause exécutée ::"
"instruction :keyword:`return` exécutée. Puisque la clause :keyword:`!"
"finally` s'exécute toujours, une instruction :keyword:`!return` exécutée "
"dans le :keyword:`!finally` sera toujours la dernière clause exécutée ::"
#: reference/compound_stmts.rst:461
#, fuzzy
msgid ""
"Prior to Python 3.8, a :keyword:`continue` statement was illegal in the :"
"keyword:`!finally` clause due to a problem with the implementation."
msgstr ""
"Avant Python 3.8, une instruction :keyword:`continue` n'était pas licite "
"dans une clause :keyword:`finally` en raison d'un problème dans "
"dans une clause :keyword:`!finally` en raison d'un problème dans "
"l'implémentation."
#: reference/compound_stmts.rst:470
@ -612,7 +619,6 @@ msgstr ""
"est assignée."
#: reference/compound_stmts.rst:505
#, fuzzy
msgid ""
"The :keyword:`with` statement guarantees that if the :meth:`__enter__` "
"method returns without an error, then :meth:`__exit__` will always be "
@ -624,7 +630,7 @@ msgstr ""
"se termine sans erreur, alors la méthode :meth:`__exit__` est toujours "
"appelée. Ainsi, si une erreur se produit pendant l'affectation à la liste "
"cible, elle est traitée de la même façon qu'une erreur se produisant dans la "
"suite. Voir l'étape 6 ci-dessous."
"suite. Voir l'étape 7 ci-dessous."
#: reference/compound_stmts.rst:511
msgid "The suite is executed."
@ -1084,7 +1090,6 @@ msgstr ""
"au champ de recherche. La syntaxe est la suivante :"
#: reference/compound_stmts.rst:821
#, fuzzy
msgid ""
"If the OR pattern fails, the AS pattern fails. Otherwise, the AS pattern "
"binds the subject to the name on the right of the as keyword and succeeds. "
@ -1604,7 +1609,7 @@ msgid ""
"exc:`TypeError`."
msgstr ""
"Si ``name_or_attr`` n'est pas une instance de la classe native :class:"
"`type` , lève une :exc:`TypeError`."
"`type`, lève une :exc:`TypeError`."
#: reference/compound_stmts.rst:1098
msgid ""
@ -1641,8 +1646,8 @@ msgid ""
"If only keyword patterns are present, they are processed as follows, one by "
"one:"
msgstr ""
"S'il n'y a que des motifs par mot-clé (NdT : dans le sens « argument par "
"mot-clé »), ils sont évalués comme ceci, un par un :"
"S'il n'y a que des motifs par mot-clé (NdT : dans le sens « argument par mot-"
"clé »), ils sont évalués comme ceci, un par un :"
#: reference/compound_stmts.rst:1112
msgid "I. The keyword is looked up as an attribute on the subject."
@ -1795,7 +1800,6 @@ msgid ":class:`tuple`"
msgstr ":class:`tuple`"
#: reference/compound_stmts.rst:1166
#, fuzzy
msgid ""
"These classes accept a single positional argument, and the pattern there is "
"matched against the whole object rather than an attribute. For example "
@ -1804,7 +1808,7 @@ msgstr ""
"Ces classes acceptent un argument positionnel seul et le filtre s'applique "
"alors sur l'ensemble de l'objet plutôt que sur un simple attribut. Par "
"exemple, ``int(0|1)`` réussit lorsqu'il est confronté à la valeur ``0``, "
"mais pas aux valeurs ``0.0`` ou ``False``."
"mais pas lorsque c'est la valeur ``0.0``."
#: reference/compound_stmts.rst:1170
msgid ""
@ -1891,11 +1895,11 @@ msgstr ""
"fonction comme seul argument ; la valeur renvoyée est liée au nom de la "
"fonction en lieu et place de l'objet fonction. Lorsqu'il y a plusieurs "
"décorateurs, ils sont appliqués par imbrication ; par exemple, le code "
"suivant ::"
"suivant ::"
#: reference/compound_stmts.rst:1249 reference/compound_stmts.rst:1426
msgid "is roughly equivalent to ::"
msgstr "est à peu près équivalent à ::"
msgstr "est à peu près équivalent à ::"
#: reference/compound_stmts.rst:1254
msgid ""
@ -2132,11 +2136,11 @@ msgstr ""
"utilisations plus avancées). Donc chaque élément de la liste doit pouvoir "
"être évalué comme un objet classe qui autorise les sous-classes. Les classes "
"sans liste d'héritage héritent, par défaut, de la classe mère :class:"
"`object` ; d'où ::"
"`object` ; d'où ::"
#: reference/compound_stmts.rst:1396
msgid "is equivalent to ::"
msgstr "est équivalente à ::"
msgstr "est équivalente à ::"
#: reference/compound_stmts.rst:1401
msgid ""
@ -2183,7 +2187,7 @@ msgstr ""
msgid "Classes can also be decorated: just like when decorating functions, ::"
msgstr ""
"Les classes peuvent aussi être décorées. Comme pour les décorateurs de "
"fonctions ::"
"fonctions ::"
#: reference/compound_stmts.rst:1431
msgid ""
@ -2331,11 +2335,11 @@ msgid "Is semantically equivalent to::"
msgstr "est sémantiquement équivalent à ::"
#: reference/compound_stmts.rst:1541
#, fuzzy
msgid ""
"See also :meth:`~object.__aiter__` and :meth:`~object.__anext__` for details."
msgstr ""
"Voir aussi :meth:`__aiter__` et :meth:`__anext__` pour plus de détails."
"Voir aussi :meth:`~object.__aiter__` et :meth:`~object.__anext__` pour plus "
"de détails."
#: reference/compound_stmts.rst:1543
msgid ""
@ -2359,12 +2363,12 @@ msgstr ""
"capable de suspendre l'exécution dans ses méthodes *enter* et *exit*."
#: reference/compound_stmts.rst:1583
#, fuzzy
msgid ""
"See also :meth:`~object.__aenter__` and :meth:`~object.__aexit__` for "
"details."
msgstr ""
"Voir aussi :meth:`__aenter__` et :meth:`__aexit__` pour plus de détails."
"Voir aussi :meth:`~object.__aenter__` et :meth:`~object.__aexit__` pour plus "
"de détails."
#: reference/compound_stmts.rst:1585
msgid ""
@ -2417,11 +2421,11 @@ msgstr ""
"Sequence`"
#: reference/compound_stmts.rst:1605
#, fuzzy
msgid ""
"a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_SEQUENCE` bit set"
msgstr ""
"une classe native dont le bit (CPython) :data:`Py_TPFLAGS_SEQUENCE` est à 1"
"une classe native dont le bit (CPython) :c:macro:`Py_TPFLAGS_SEQUENCE` est à "
"1"
#: reference/compound_stmts.rst:1606 reference/compound_stmts.rst:1625
msgid "a class that inherits from any of the above"
@ -2472,11 +2476,10 @@ msgstr ""
"Mapping`"
#: reference/compound_stmts.rst:1624
#, fuzzy
msgid ""
"a builtin class that has its (CPython) :c:macro:`Py_TPFLAGS_MAPPING` bit set"
msgstr ""
"une classe native dont le bit (CPython) :data:`Py_TPFLAGS_MAPPING` est à 1"
"une classe native dont le bit (CPython) :c:macro:`Py_TPFLAGS_MAPPING` est à 1"
#: reference/compound_stmts.rst:1627
msgid ""
@ -2508,7 +2511,7 @@ msgstr ""
#: reference/compound_stmts.rst:7
msgid "compound"
msgstr ""
msgstr "composé"
#: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
#: reference/compound_stmts.rst:129 reference/compound_stmts.rst:144
@ -2518,43 +2521,42 @@ msgstr ""
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
#: reference/compound_stmts.rst:1468 reference/compound_stmts.rst:1502
#: reference/compound_stmts.rst:1547
#, fuzzy
msgid "statement"
msgstr "Instructions composées"
msgstr "instruction"
#: reference/compound_stmts.rst:21
msgid "clause"
msgstr ""
msgstr "clause"
#: reference/compound_stmts.rst:21
msgid "suite"
msgstr ""
msgstr "suite"
#: reference/compound_stmts.rst:21
msgid "; (semicolon)"
msgstr ""
msgstr "; (point-virgule)"
#: reference/compound_stmts.rst:64
msgid "NEWLINE token"
msgstr ""
msgstr "lexème NEWLINE"
#: reference/compound_stmts.rst:64
msgid "DEDENT token"
msgstr ""
msgstr "lexème DEDENT"
#: reference/compound_stmts.rst:64
msgid "dangling"
msgstr ""
msgstr "fantôme"
#: reference/compound_stmts.rst:64 reference/compound_stmts.rst:86
#: reference/compound_stmts.rst:111 reference/compound_stmts.rst:144
#: reference/compound_stmts.rst:207 reference/compound_stmts.rst:391
msgid "else"
msgstr ""
msgstr "else"
#: reference/compound_stmts.rst:86 reference/compound_stmts.rst:589
msgid "if"
msgstr ""
msgstr "if"
#: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
#: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
@ -2562,11 +2564,11 @@ msgstr ""
#: reference/compound_stmts.rst:409 reference/compound_stmts.rst:472
#: reference/compound_stmts.rst:589 reference/compound_stmts.rst:1478
msgid "keyword"
msgstr ""
msgstr "mot-clé"
#: reference/compound_stmts.rst:86
msgid "elif"
msgstr ""
msgstr "elif"
#: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
#: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
@ -2574,308 +2576,297 @@ msgstr ""
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1311
#: reference/compound_stmts.rst:1367
msgid ": (colon)"
msgstr ""
msgstr ": (deux-points)"
#: reference/compound_stmts.rst:86 reference/compound_stmts.rst:111
#: reference/compound_stmts.rst:144 reference/compound_stmts.rst:207
#: reference/compound_stmts.rst:472 reference/compound_stmts.rst:589
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
#, fuzzy
msgid "compound statement"
msgstr "Instructions composées"
msgstr "instruction composée"
#: reference/compound_stmts.rst:111
msgid "while"
msgstr ""
msgstr "while"
#: reference/compound_stmts.rst:111 reference/compound_stmts.rst:144
msgid "loop"
msgstr ""
msgstr "boucle"
#: reference/compound_stmts.rst:129 reference/compound_stmts.rst:169
#: reference/compound_stmts.rst:391 reference/compound_stmts.rst:438
msgid "break"
msgstr ""
msgstr "break"
#: reference/compound_stmts.rst:129 reference/compound_stmts.rst:169
#: reference/compound_stmts.rst:391 reference/compound_stmts.rst:438
msgid "continue"
msgstr ""
msgstr "continue"
#: reference/compound_stmts.rst:144
msgid "for"
msgstr ""
msgstr "for"
#: reference/compound_stmts.rst:144
msgid "in"
msgstr ""
msgstr "in"
#: reference/compound_stmts.rst:144
msgid "target"
msgstr ""
msgstr "cible"
#: reference/compound_stmts.rst:144
msgid "list"
msgstr ""
msgstr "liste"
#: reference/compound_stmts.rst:144 reference/compound_stmts.rst:299
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
msgid "object"
msgstr ""
msgstr "objet"
#: reference/compound_stmts.rst:144
msgid "sequence"
msgstr ""
msgstr "séquence"
#: reference/compound_stmts.rst:190
msgid "built-in function"
msgstr ""
msgstr "fonction native"
#: reference/compound_stmts.rst:190
msgid "range"
msgstr ""
msgstr "range"
#: reference/compound_stmts.rst:207
msgid "try"
msgstr ""
msgstr "try"
#: reference/compound_stmts.rst:207
msgid "except"
msgstr ""
msgstr "except"
#: reference/compound_stmts.rst:207 reference/compound_stmts.rst:409
msgid "finally"
msgstr ""
msgstr "finally"
#: reference/compound_stmts.rst:207 reference/compound_stmts.rst:266
#: reference/compound_stmts.rst:472 reference/compound_stmts.rst:589
msgid "as"
msgstr ""
msgstr "as"
#: reference/compound_stmts.rst:266
msgid "except clause"
msgstr ""
msgstr "clause except"
#: reference/compound_stmts.rst:299
msgid "module"
msgstr ""
msgstr "module"
#: reference/compound_stmts.rst:299
msgid "sys"
msgstr ""
msgstr "sys"
#: reference/compound_stmts.rst:299
msgid "traceback"
msgstr ""
msgstr "trace d'appels"
#: reference/compound_stmts.rst:328
msgid "except_star"
msgstr ""
msgstr "except_star"
#: reference/compound_stmts.rst:391 reference/compound_stmts.rst:438
msgid "return"
msgstr ""
msgstr "return"
#: reference/compound_stmts.rst:472
msgid "with"
msgstr ""
msgstr "with"
#: reference/compound_stmts.rst:472
#, fuzzy
msgid "with statement"
msgstr "L'instruction :keyword:`!with`"
msgstr "instruction *with*"
#: reference/compound_stmts.rst:472 reference/compound_stmts.rst:1194
#: reference/compound_stmts.rst:1367
msgid ", (comma)"
msgstr ""
msgstr ", (virgule)"
#: reference/compound_stmts.rst:589
msgid "match"
msgstr ""
msgstr "match"
#: reference/compound_stmts.rst:589
msgid "case"
msgstr ""
msgstr "case"
#: reference/compound_stmts.rst:589
#, fuzzy
msgid "pattern matching"
msgstr ":ref:`class-pattern-matching`"
msgstr "filtrage par motif"
#: reference/compound_stmts.rst:589
#, fuzzy
msgid "match statement"
msgstr "Voici un exemple d'instruction de filtrage par motif ::"
msgstr "instruction *match*"
#: reference/compound_stmts.rst:693
#, fuzzy
msgid "guard"
msgstr "Gardes"
msgstr "garde"
#: reference/compound_stmts.rst:732
#, fuzzy
msgid "irrefutable case block"
msgstr "Bloc ``case`` attrape-tout"
msgstr "bloc attrape-tout"
#: reference/compound_stmts.rst:732
msgid "case block"
msgstr ""
msgstr "bloc *case*"
#: reference/compound_stmts.rst:756
#, fuzzy
msgid "! patterns"
msgstr "Filtres"
msgstr "! motifs"
#: reference/compound_stmts.rst:756
msgid "AS pattern, OR pattern, capture pattern, wildcard pattern"
msgstr ""
msgstr "motif AS, motif OR, motif de capture, motif attrape-tout"
#: reference/compound_stmts.rst:1185 reference/compound_stmts.rst:1261
msgid "parameter"
msgstr ""
msgstr "paramètre"
#: reference/compound_stmts.rst:1185 reference/compound_stmts.rst:1194
#: reference/compound_stmts.rst:1235 reference/compound_stmts.rst:1261
#: reference/compound_stmts.rst:1290
#, fuzzy
msgid "function definition"
msgstr "Définition de fonctions"
msgstr "définition de fonction"
#: reference/compound_stmts.rst:1194
msgid "def"
msgstr ""
msgstr "def"
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1311
msgid "function"
msgstr ""
msgstr "fonction"
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
#, fuzzy
msgid "definition"
msgstr "Définition de classes"
msgstr "définition"
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
msgid "name"
msgstr ""
msgstr "nom"
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
msgid "binding"
msgstr ""
msgstr "liaison"
#: reference/compound_stmts.rst:1194
msgid "user-defined function"
msgstr ""
msgstr "fonction définie par l'utilisateur"
#: reference/compound_stmts.rst:1194 reference/compound_stmts.rst:1367
msgid "() (parentheses)"
msgstr ""
msgstr "() (parenthèses)"
#: reference/compound_stmts.rst:1194
msgid "parameter list"
msgstr ""
msgstr "liste de paramètres"
#: reference/compound_stmts.rst:1235 reference/compound_stmts.rst:1417
msgid "@ (at)"
msgstr ""
msgstr "@ (arobase)"
#: reference/compound_stmts.rst:1261
msgid "default"
msgstr ""
msgstr "par défaut"
#: reference/compound_stmts.rst:1261
msgid "value"
msgstr ""
msgstr "valeur"
#: reference/compound_stmts.rst:1261
msgid "argument"
msgstr ""
msgstr "argument"
#: reference/compound_stmts.rst:1261
msgid "= (equals)"
msgstr ""
msgstr "= (égal)"
#: reference/compound_stmts.rst:1290
msgid "/ (slash)"
msgstr ""
msgstr "/ (barre oblique)"
#: reference/compound_stmts.rst:1290
msgid "* (asterisk)"
msgstr ""
msgstr "* (astérisque)"
#: reference/compound_stmts.rst:1290
msgid "**"
msgstr ""
msgstr "**"
#: reference/compound_stmts.rst:1311
msgid "annotations"
msgstr ""
msgstr "annotations"
#: reference/compound_stmts.rst:1311
msgid "->"
msgstr ""
msgstr "->"
#: reference/compound_stmts.rst:1311
#, fuzzy
msgid "function annotations"
msgstr "Définition de fonctions"
msgstr "annotations de fonction"
#: reference/compound_stmts.rst:1329
msgid "lambda"
msgstr ""
msgstr "lambda"
#: reference/compound_stmts.rst:1329
msgid "expression"
msgstr ""
msgstr "expression"
#: reference/compound_stmts.rst:1367
msgid "class"
msgstr ""
msgstr "classe"
#: reference/compound_stmts.rst:1367
msgid "execution"
msgstr ""
msgstr "exécution"
#: reference/compound_stmts.rst:1367
msgid "frame"
msgstr ""
msgstr "cadre"
#: reference/compound_stmts.rst:1367
msgid "inheritance"
msgstr ""
msgstr "héritage"
#: reference/compound_stmts.rst:1367
msgid "docstring"
msgstr ""
msgstr "chaîne de documentation"
#: reference/compound_stmts.rst:1367 reference/compound_stmts.rst:1417
#, fuzzy
msgid "class definition"
msgstr "Définition de classes"
msgstr "définition de classe"
#: reference/compound_stmts.rst:1367
msgid "expression list"
msgstr ""
msgstr "liste d'expressions"
#: reference/compound_stmts.rst:1468
msgid "async def"
msgstr ""
msgstr "async def"
#: reference/compound_stmts.rst:1478
msgid "async"
msgstr ""
msgstr "async"
#: reference/compound_stmts.rst:1478
msgid "await"
msgstr ""
msgstr "await"
#: reference/compound_stmts.rst:1502
msgid "async for"
msgstr ""
msgstr "async for"
#: reference/compound_stmts.rst:1547
msgid "async with"
msgstr ""
msgstr "async with"
#, fuzzy
#~ msgid ""

View File

@ -82,17 +82,17 @@ msgid ""
"lists are mutable."
msgstr ""
"La *valeur* de certains objets peut changer. Les objets dont la valeur peut "
"changer sont dits *muables* (*mutable* en anglais) ; les objets dont la "
"valeur est définitivement fixée à leur création sont dits *immuables* "
"(*immutable* en anglais). La valeur d'un objet conteneur immuable qui "
"contient une référence vers un objet muable peut varier lorsque la valeur de "
"l'objet muable change ; cependant, le conteneur est quand même considéré "
"comme immuable parce que l'ensemble des objets qu'il contient ne peut pas "
"être modifié. Ainsi, l'immuabilité n'est pas strictement équivalente au fait "
"d'avoir une valeur non modifiable, c'est plus subtil. La muabilité d'un "
"objet est définie par son type ; par exemple, les nombres, les chaînes de "
"caractères et les *n*-uplets sont immuables alors que les dictionnaires et "
"les listes sont muables."
"changer sont dits mutables ; les objets dont la valeur est définitivement "
"fixée à leur création sont dits *immuables* (*immutable* en anglais). La "
"valeur d'un objet conteneur immuable qui contient une référence vers un "
"objet mutable peut varier lorsque la valeur de l'objet mutable change ; "
"cependant, le conteneur est quand même considéré comme immuable parce que "
"l'ensemble des objets qu'il contient ne peut pas être modifié. Ainsi, "
"l'immuabilité n'est pas strictement équivalente au fait d'avoir une valeur "
"non modifiable, c'est plus subtil. La muabilité d'un objet est définie par "
"son type ; par exemple, les nombres, les chaînes de caractères et les *n*-"
"uplets sont immuables alors que les dictionnaires et les listes sont "
"mutables."
#: reference/datamodel.rst:65
msgid ""
@ -182,8 +182,8 @@ msgstr ""
"identifiants des objets contenus ; cependant, lorsque nous parlons de la "
"muabilité d'un conteneur, seuls les identifiants des objets immédiatement "
"contenus sont concernés. Ainsi, si un conteneur immuable (comme un *n*-"
"uplet) contient une référence à un objet muable, sa valeur change si cet "
"objet muable est modifié."
"uplet) contient une référence à un objet mutable, sa valeur change si cet "
"objet mutable est modifié."
#: reference/datamodel.rst:106
msgid ""
@ -201,7 +201,7 @@ msgstr ""
"son identifiant est concerné dans un certain sens : pour les types "
"immuables, les opérations qui calculent de nouvelles valeurs peuvent en fait "
"renvoyer une référence à n'importe quel objet existant avec le même type et "
"la même valeur, alors que pour les objets muables cela n'est pas autorisé. "
"la même valeur, alors que pour les objets mutables cela n'est pas autorisé. "
"Par exemple, après ``a = 1 ; b = 1``, ``a`` et ``b`` peuvent ou non se "
"référer au même objet avec la valeur un, en fonction de l'implémentation. "
"Mais après ``c = [] ; d = []``, il est garanti que ``c`` et ``d`` font "
@ -545,8 +545,8 @@ msgid ""
msgstr ""
"Un objet de type de séquence immuable ne peut pas être modifié une fois "
"qu'il a été créé. Si l'objet contient des références à d'autres objets, ces "
"autres objets peuvent être muables et peuvent être modifiés ; cependant, les "
"objets directement référencés par un objet immuable ne peuvent pas être "
"autres objets peuvent être mutables et peuvent être modifiés ; cependant, "
"les objets directement référencés par un objet immuable ne peuvent pas être "
"modifiés."
#: reference/datamodel.rst:304
@ -625,7 +625,7 @@ msgstr ""
#: reference/datamodel.rst:383
msgid "Mutable sequences"
msgstr "Séquences muables"
msgstr "Séquences mutables"
#: reference/datamodel.rst:359
msgid ""
@ -633,14 +633,14 @@ msgid ""
"and slicing notations can be used as the target of assignment and :keyword:"
"`del` (delete) statements."
msgstr ""
"Les séquences muables peuvent être modifiées après leur création. Les "
"Les séquences mutables peuvent être modifiées après leur création. Les "
"notations de tranches et de sous-ensembles peuvent être utilisées en tant "
"que cibles d'une affectation ou de l'instruction :keyword:`del` "
"(suppression)."
#: reference/datamodel.rst:363
msgid "There are currently two intrinsic mutable sequence types:"
msgstr "Il existe aujourd'hui deux types intrinsèques de séquences muables :"
msgstr "Il existe aujourd'hui deux types intrinsèques de séquences mutables :"
#: reference/datamodel.rst:370
msgid "Lists"
@ -668,9 +668,9 @@ msgid ""
"unhashable), byte arrays otherwise provide the same interface and "
"functionality as immutable :class:`bytes` objects."
msgstr ""
"Un objet *bytearray* est un tableau muable. Il est créé par la fonction "
"native constructeur :func:`bytearray`. À part la propriété d'être muable (et "
"donc de ne pas pouvoir calculer son empreinte par hachage), un tableau "
"Un objet *bytearray* est un tableau mutable. Il est créé par la fonction "
"native constructeur :func:`bytearray`. À part la propriété d'être mutable "
"(et donc de ne pas pouvoir calculer son empreinte par hachage), un tableau "
"d'octets possède la même interface et les mêmes fonctionnalités qu'un objet "
"immuable :class:`bytes`."
@ -680,7 +680,7 @@ msgid ""
"mutable sequence type, as does the :mod:`collections` module."
msgstr ""
"Le module d'extension :mod:`array` fournit un autre exemple de type de "
"séquence muable, de même que le module :mod:`collections`."
"séquence mutable, de même que le module :mod:`collections`."
#: reference/datamodel.rst:417
msgid "Set types"
@ -730,9 +730,9 @@ msgid ""
"constructor and can be modified afterwards by several methods, such as :meth:"
"`~set.add`."
msgstr ""
"Ils représentent les ensembles muables. Un ensemble est créé par la fonction "
"native constructeur :func:`set` et peut être modifié par la suite à l'aide "
"de différentes méthodes, par exemple :meth:`~set.add`."
"Ils représentent les ensembles mutables. Un ensemble est créé par la "
"fonction native constructeur :func:`set` et peut être modifié par la suite à "
"l'aide de différentes méthodes, par exemple :meth:`~set.add`."
#: reference/datamodel.rst:417
msgid "Frozen sets"
@ -792,7 +792,7 @@ msgstr ""
"Ils représentent les ensembles finis d'objets indicés par des valeurs "
"presque arbitraires. Les seuls types de valeurs non reconnus comme clés sont "
"les valeurs contenant des listes, des dictionnaires ou les autres types "
"muables qui sont comparés par valeur plutôt que par l'identifiant de "
"mutables qui sont comparés par valeur plutôt que par l'identifiant de "
"l'objet. La raison de cette limitation est qu'une implémentation efficace de "
"dictionnaire requiert que l'empreinte par hachage des clés reste constante "
"dans le temps. Les types numériques obéissent aux règles normales pour les "
@ -817,8 +817,8 @@ msgid ""
"Dictionaries are mutable; they can be created by the ``{...}`` notation (see "
"section :ref:`dict`)."
msgstr ""
"Les dictionnaires sont muables : ils peuvent être créés par la notation ``{…}"
"`` (reportez-vous à la section :ref:`dict`)."
"Les dictionnaires sont mutables : ils peuvent être créés par la notation "
"``{…}`` (reportez-vous à la section :ref:`dict`)."
#: reference/datamodel.rst:457
msgid ""
@ -1685,7 +1685,7 @@ msgstr ""
"dans l'objet code (parce que ce sont des valeurs calculées au moment de "
"l'exécution). Contrairement aux objets fonctions, les objets codes sont "
"immuables et ne contiennent aucune référence (directe ou indirecte) à des "
"objets muables."
"objets mutables."
#: reference/datamodel.rst:975
msgid ""
@ -4290,7 +4290,7 @@ msgstr ""
"abc.MutableMapping` pour aider à la création de ces méthodes à partir d'un "
"ensemble de base composé de :meth:`~object.__getitem__`, :meth:`~object."
"__setitem__`, :meth:`~object.__delitem__` et :meth:`keys`. Les séquences "
"muables doivent fournir les méthodes :meth:`append`, :meth:`count`, :meth:"
"mutables doivent fournir les méthodes :meth:`append`, :meth:`count`, :meth:"
"`index`, :meth:`extend`, :meth:`insert`, :meth:`pop`, :meth:`remove`, :meth:"
"`reverse` et :meth:`sort`, comme les objets :class:`listes <list>` standards "
"de Python. Enfin, les types séquences doivent implémenter l'addition (dans "

View File

@ -36,8 +36,8 @@ msgid ""
"option:`-m` argument is also a code block. The string argument passed to the "
"built-in functions :func:`eval` and :func:`exec` is a code block."
msgstr ""
"Un programme Python est construit à partir de blocs de code. Un :dfn:`bloc "
"<block>` est un morceau de texte de programme Python qui est exécuté en tant "
"Un programme Python est construit à partir de blocs de code. Un :dfn:`bloc` "
"est un morceau de texte de programme Python qui est exécuté en tant "
"qu'unité. Les éléments suivants sont des blocs : un module, un corps de "
"fonction et une définition de classe. Chaque commande écrite dans "
"l'interpréteur interactif de Python est un bloc. Un fichier de script (un "

File diff suppressed because it is too large Load Diff

View File

@ -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-12-04 14:56+0100\n"
"Last-Translator: Jean Abou Samra <jean@abou-samra.fr>\n"
"PO-Revision-Date: 2023-12-02 10:40+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.1\n"
"X-Generator: Poedit 3.2.2\n"
#: reference/simple_stmts.rst:6
msgid "Simple statements"
@ -78,7 +78,7 @@ msgid ""
"attributes or items of mutable objects:"
msgstr ""
"Les assignations sont utilisées pour lier ou relier des noms à des valeurs "
"et modifier des attributs ou des éléments d'objets muables :"
"et modifier des attributs ou des éléments d'objets mutables :"
#: reference/simple_stmts.rst:96
msgid ""
@ -111,8 +111,8 @@ msgid ""
"section :ref:`types`)."
msgstr ""
"Une assignation est définie récursivement en fonction de la forme de la "
"cible (une liste). Quand la cible est une partie d'un objet muable (une "
"référence à un attribut, une sélection ou une tranche), l'objet muable doit "
"cible (une liste). Quand la cible est une partie d'un objet mutable (une "
"référence à un attribut, une sélection ou une tranche), l'objet mutable doit "
"effectuer l'assignation au final et décider de sa validité, voire lever une "
"exception si l'assignation n'est pas acceptable. Les règles suivies par les "
"différents types et les exceptions levées sont données dans les définitions "
@ -286,7 +286,6 @@ msgstr ""
"une liste)."
#: reference/simple_stmts.rst:210
#, fuzzy
msgid ""
"If the primary is a mapping object (such as a dictionary), the subscript "
"must have a type compatible with the mapping's key type, and the mapping is "
@ -471,7 +470,6 @@ msgstr ""
"d'une assignation optionnelle :"
#: reference/simple_stmts.rst:333
#, fuzzy
msgid ""
"The difference from normal :ref:`assignment` is that only a single target is "
"allowed."
@ -553,10 +551,10 @@ msgid ""
msgstr ""
"La proposition qui a ajouté le module :mod:`typing` pour fournir une syntaxe "
"standard pour les annotations de type qui peuvent être utilisées dans les "
"outils d'analyse statique et les EDIs."
"outils d'analyse statique et les environnements de développement intégrés "
"(*EDI*)."
#: reference/simple_stmts.rst:367
#, fuzzy
msgid ""
"Now annotated assignments allow the same expressions in the right hand side "
"as regular assignments. Previously, some expressions (like un-parenthesized "
@ -581,13 +579,13 @@ msgstr ""
#: reference/simple_stmts.rst:389
msgid "The simple form, ``assert expression``, is equivalent to ::"
msgstr "La forme la plus simple, ``assert expression``, est équivalente à ::"
msgstr "La forme la plus simple, ``assert expression``, est équivalente à ::"
#: reference/simple_stmts.rst:394
msgid ""
"The extended form, ``assert expression1, expression2``, is equivalent to ::"
msgstr ""
"La forme étendue, ``assert expression1, expression2``, est équivalente à ::"
"La forme étendue, ``assert expression1, expression2``, est équivalente à ::"
#: reference/simple_stmts.rst:403
msgid ""
@ -765,11 +763,11 @@ msgstr ""
"`expression yield <yieldexpr>`. L'instruction *yield* peut être utilisée "
"pour omettre les parenthèses qui seraient autrement requises dans "
"l'instruction équivalente d'expression *yield*. Par exemple, les "
"instructions *yield* ::"
"instructions *yield* ::"
#: reference/simple_stmts.rst:537
msgid "are equivalent to the yield expression statements ::"
msgstr "sont équivalentes aux instructions expressions *yield* ::"
msgstr "sont équivalentes aux instructions expressions *yield* ::"
#: reference/simple_stmts.rst:542
msgid ""
@ -1025,7 +1023,6 @@ msgstr ""
"clauses étaient séparées dans des instructions d'importations individuelles."
#: reference/simple_stmts.rst:759
#, fuzzy
msgid ""
"The details of the first step, finding and loading modules, are described in "
"greater detail in the section on the :ref:`import system <importsystem>`, "
@ -1035,7 +1032,7 @@ msgid ""
"could not be located, *or* that an error occurred while initializing the "
"module, which includes execution of the module's code."
msgstr ""
"Les détails de la première étape, de recherche et de chargement des modules "
"Les détails de la première étape, de recherche et de chargement des modules, "
"sont décrits largement dans la section relative au :ref:`système "
"d'importation <importsystem>`, qui décrit également les différents types de "
"paquets et modules qui peuvent être importés, de même que les points "
@ -1516,464 +1513,455 @@ msgstr "Les spécifications pour l'instruction :keyword:`nonlocal`."
#: reference/simple_stmts.rst:8
msgid "simple"
msgstr ""
msgstr "simple"
#: reference/simple_stmts.rst:38 reference/simple_stmts.rst:262
#: reference/simple_stmts.rst:378 reference/simple_stmts.rst:443
#: reference/simple_stmts.rst:482 reference/simple_stmts.rst:555
#: reference/simple_stmts.rst:703 reference/simple_stmts.rst:858
#: reference/simple_stmts.rst:991
#, fuzzy
msgid "statement"
msgstr "Les instructions simples"
msgstr "instruction"
#: reference/simple_stmts.rst:41
msgid "expression"
msgstr ""
msgstr "expression"
#: reference/simple_stmts.rst:41 reference/simple_stmts.rst:115
#: reference/simple_stmts.rst:443
msgid "list"
msgstr ""
msgstr "liste"
#: reference/simple_stmts.rst:972
msgid "built-in function"
msgstr ""
msgstr "fonction native"
#: reference/simple_stmts.rst:55
msgid "repr"
msgstr ""
msgstr "repr"
#: reference/simple_stmts.rst:74 reference/simple_stmts.rst:195
#: reference/simple_stmts.rst:577
msgid "object"
msgstr ""
msgstr "objet"
#: reference/simple_stmts.rst:55
msgid "None"
msgstr ""
msgstr "None"
#: reference/simple_stmts.rst:55
msgid "string"
msgstr ""
msgstr "chaîne de caractères"
#: reference/simple_stmts.rst:55
msgid "conversion"
msgstr ""
msgstr "conversion"
#: reference/simple_stmts.rst:55
msgid "output"
msgstr ""
msgstr "sortie"
#: reference/simple_stmts.rst:55
msgid "standard"
msgstr ""
msgstr "standard"
#: reference/simple_stmts.rst:55
msgid "writing"
msgstr ""
msgstr "écrire"
#: reference/simple_stmts.rst:55
msgid "values"
msgstr ""
msgstr "valeurs"
#: reference/simple_stmts.rst:55
msgid "procedure"
msgstr ""
msgstr "procédure"
#: reference/simple_stmts.rst:55
msgid "call"
msgstr ""
msgstr "appel"
#: reference/simple_stmts.rst:74
msgid "= (equals)"
msgstr ""
msgstr "= (égal)"
#: reference/simple_stmts.rst:74
#, fuzzy
msgid "assignment statement"
msgstr "Les assignations"
msgstr "instruction d'affectation"
#: reference/simple_stmts.rst:115 reference/simple_stmts.rst:186
#: reference/simple_stmts.rst:262 reference/simple_stmts.rst:321
msgid "assignment"
msgstr ""
msgstr "affectation"
#: reference/simple_stmts.rst:728 reference/simple_stmts.rst:944
msgid "binding"
msgstr ""
msgstr "liaison"
#: reference/simple_stmts.rst:456 reference/simple_stmts.rst:783
#: reference/simple_stmts.rst:944
msgid "name"
msgstr ""
msgstr "nom"
#: reference/simple_stmts.rst:74
msgid "rebinding"
msgstr ""
msgstr "redéfinir une liaison"
#: reference/simple_stmts.rst:186
msgid "mutable"
msgstr ""
msgstr "mutable"
#: reference/simple_stmts.rst:158 reference/simple_stmts.rst:465
msgid "attribute"
msgstr ""
msgstr "attribut"
#: reference/simple_stmts.rst:115 reference/simple_stmts.rst:682
msgid "target"
msgstr ""
msgstr "cible"
#: reference/simple_stmts.rst:378 reference/simple_stmts.rst:944
#: reference/simple_stmts.rst:991
msgid ", (comma)"
msgstr ""
msgstr ", (virgule)"
#: reference/simple_stmts.rst:115
msgid "in target list"
msgstr ""
msgstr "dans la liste cible"
#: reference/simple_stmts.rst:809
msgid "* (asterisk)"
msgstr ""
msgstr "* (astérisque)"
#: reference/simple_stmts.rst:115
#, fuzzy
msgid "in assignment target list"
msgstr "Les assignations"
msgstr "dans la liste cible d'affectation"
#: reference/simple_stmts.rst:115
msgid "[] (square brackets)"
msgstr ""
msgstr "[] (crochets)"
#: reference/simple_stmts.rst:115
msgid "() (parentheses)"
msgstr ""
msgstr "() (parenthèses)"
#: reference/simple_stmts.rst:152
msgid "destructor"
msgstr ""
msgstr "destructeur"
#: reference/simple_stmts.rst:186
msgid "subscription"
msgstr ""
msgstr "sélection (ou indiçage)"
#: reference/simple_stmts.rst:195
msgid "sequence"
msgstr ""
msgstr "séquence"
#: reference/simple_stmts.rst:206
msgid "mapping"
msgstr ""
msgstr "tableau de correspondances"
#: reference/simple_stmts.rst:206
msgid "dictionary"
msgstr ""
msgstr "dictionnaire"
#: reference/simple_stmts.rst:219
msgid "slicing"
msgstr ""
msgstr "découpage"
#: reference/simple_stmts.rst:262
msgid "augmented"
msgstr ""
msgstr "augmentée"
#: reference/simple_stmts.rst:262
#, fuzzy
msgid "assignment, augmented"
msgstr "Les assignations"
msgstr "affectation, augmentée"
#: reference/simple_stmts.rst:262
msgid "+="
msgstr ""
msgstr "+="
#: reference/simple_stmts.rst:262
#, fuzzy
msgid "augmented assignment"
msgstr "Les assignations augmentées"
msgstr "affectation augmentée"
#: reference/simple_stmts.rst:262
msgid "-="
msgstr ""
msgstr "-="
#: reference/simple_stmts.rst:262
msgid "*="
msgstr ""
msgstr "*="
#: reference/simple_stmts.rst:262
msgid "/="
msgstr ""
msgstr "/="
#: reference/simple_stmts.rst:262
msgid "%="
msgstr ""
msgstr "%="
#: reference/simple_stmts.rst:262
msgid "&="
msgstr ""
msgstr "&="
#: reference/simple_stmts.rst:262
msgid "^="
msgstr ""
msgstr "^="
#: reference/simple_stmts.rst:262
msgid "|="
msgstr ""
msgstr "|="
#: reference/simple_stmts.rst:262
msgid "**="
msgstr ""
msgstr "**="
#: reference/simple_stmts.rst:262
msgid "//="
msgstr ""
msgstr "//="
#: reference/simple_stmts.rst:262
msgid ">>="
msgstr ""
msgstr ">>="
#: reference/simple_stmts.rst:262
msgid "<<="
msgstr ""
msgstr "<<="
#: reference/simple_stmts.rst:321
msgid "annotated"
msgstr ""
msgstr "annotée"
#: reference/simple_stmts.rst:321
#, fuzzy
msgid "assignment, annotated"
msgstr "Les assignations"
msgstr "affectation annotée"
#: reference/simple_stmts.rst:321
msgid ": (colon)"
msgstr ""
msgstr ": (deux-points)"
#: reference/simple_stmts.rst:321
msgid "annotated variable"
msgstr ""
msgstr "variable annotée"
#: reference/simple_stmts.rst:378
msgid "assert"
msgstr ""
msgstr "assert"
#: reference/simple_stmts.rst:378
msgid "debugging"
msgstr ""
msgstr "débogage"
#: reference/simple_stmts.rst:378
msgid "assertions"
msgstr ""
msgstr "assertions"
#: reference/simple_stmts.rst:378
#, fuzzy
msgid "expression list"
msgstr "Les expressions"
msgstr "liste d'expressions"
#: reference/simple_stmts.rst:399
msgid "__debug__"
msgstr ""
msgstr "__debug__"
#: reference/simple_stmts.rst:519 reference/simple_stmts.rst:587
#: reference/simple_stmts.rst:728
msgid "exception"
msgstr ""
msgstr "exception"
#: reference/simple_stmts.rst:399
msgid "AssertionError"
msgstr ""
msgstr "AssertionError"
#: reference/simple_stmts.rst:421
msgid "pass"
msgstr ""
msgstr "pass"
#: reference/simple_stmts.rst:421
msgid "null"
msgstr ""
msgstr "null"
#: reference/simple_stmts.rst:421
msgid "operation"
msgstr ""
msgstr "opération"
#: reference/simple_stmts.rst:443
msgid "del"
msgstr ""
msgstr "del"
#: reference/simple_stmts.rst:465
msgid "deletion"
msgstr ""
msgstr "effacement"
#: reference/simple_stmts.rst:944
msgid "global"
msgstr ""
msgstr "global"
#: reference/simple_stmts.rst:456
msgid "unbinding"
msgstr ""
msgstr "suppression de liaison"
#: reference/simple_stmts.rst:482
msgid "return"
msgstr ""
msgstr "return"
#: reference/simple_stmts.rst:519
msgid "function"
msgstr ""
msgstr "fonction"
#: reference/simple_stmts.rst:482
msgid "definition"
msgstr ""
msgstr "définition"
#: reference/simple_stmts.rst:482
msgid "class"
msgstr ""
msgstr "classe"
#: reference/simple_stmts.rst:682 reference/simple_stmts.rst:703
#: reference/simple_stmts.rst:728
msgid "keyword"
msgstr ""
msgstr "mot-clé"
#: reference/simple_stmts.rst:691 reference/simple_stmts.rst:703
msgid "finally"
msgstr ""
msgstr "finally"
#: reference/simple_stmts.rst:519
msgid "yield"
msgstr ""
msgstr "yield"
#: reference/simple_stmts.rst:519
msgid "generator"
msgstr ""
msgstr "générateur"
#: reference/simple_stmts.rst:519
msgid "iterator"
msgstr ""
msgstr "itérateur"
#: reference/simple_stmts.rst:519
msgid "StopIteration"
msgstr ""
msgstr "StopIteration"
#: reference/simple_stmts.rst:555
msgid "raise"
msgstr ""
msgstr "raise"
#: reference/simple_stmts.rst:555
msgid "raising"
msgstr ""
msgstr "lever"
#: reference/simple_stmts.rst:555
msgid "__traceback__ (exception attribute)"
msgstr ""
msgstr "__traceback__ (attribut d'exception)"
#: reference/simple_stmts.rst:577
msgid "traceback"
msgstr ""
msgstr "trace d'appels"
#: reference/simple_stmts.rst:587
msgid "chaining"
msgstr ""
msgstr "chaîner"
#: reference/simple_stmts.rst:587
msgid "__cause__ (exception attribute)"
msgstr ""
msgstr "__cause__ (attribut d'exception)"
#: reference/simple_stmts.rst:587
msgid "__context__ (exception attribute)"
msgstr ""
msgstr "__context__ (attribut d'exception)"
#: reference/simple_stmts.rst:669
msgid "break"
msgstr ""
msgstr "break"
#: reference/simple_stmts.rst:703
msgid "for"
msgstr ""
msgstr "for"
#: reference/simple_stmts.rst:703
msgid "while"
msgstr ""
msgstr "while"
#: reference/simple_stmts.rst:703
msgid "loop"
msgstr ""
msgstr "boucle"
#: reference/simple_stmts.rst:682
msgid "else"
msgstr ""
msgstr "else"
#: reference/simple_stmts.rst:682
msgid "loop control"
msgstr ""
msgstr "contrôle de boucle"
#: reference/simple_stmts.rst:703
msgid "continue"
msgstr ""
msgstr "continue"
#: reference/simple_stmts.rst:831
msgid "import"
msgstr ""
msgstr "importation"
#: reference/simple_stmts.rst:728
msgid "module"
msgstr ""
msgstr "module"
#: reference/simple_stmts.rst:728
msgid "importing"
msgstr ""
msgstr "importer"
#: reference/simple_stmts.rst:783
msgid "from"
msgstr ""
msgstr "from"
#: reference/simple_stmts.rst:770
msgid "as"
msgstr ""
msgstr "as"
#: reference/simple_stmts.rst:728
msgid "ImportError"
msgstr ""
msgstr "ImportError"
#: reference/simple_stmts.rst:770 reference/simple_stmts.rst:809
#, fuzzy
msgid "import statement"
msgstr "Les instructions simples"
msgstr "instruction *import*"
#: reference/simple_stmts.rst:815
msgid "__all__ (optional module attribute)"
msgstr ""
msgstr "__all__ (attribut de module facultatif)"
#: reference/simple_stmts.rst:831
msgid "relative"
msgstr ""
msgstr "relative"
#: reference/simple_stmts.rst:858
msgid "future"
msgstr ""
msgstr "future"
#: reference/simple_stmts.rst:858
msgid "__future__"
msgstr ""
msgstr "__future__"
#: reference/simple_stmts.rst:858
#, fuzzy
msgid "future statement"
msgstr "L'instruction future"
msgstr "instruction *future*"
#: reference/simple_stmts.rst:991
msgid "identifier list"
msgstr ""
msgstr "liste d'identifiants"
#: reference/simple_stmts.rst:972
msgid "exec"
msgstr ""
msgstr "exec"
#: reference/simple_stmts.rst:972
msgid "eval"
msgstr ""
msgstr "eval"
#: reference/simple_stmts.rst:972
msgid "compile"
msgstr ""
msgstr "compiler"
#: reference/simple_stmts.rst:991
msgid "nonlocal"
msgstr ""
msgstr "nonlocal"

View File

@ -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: 2019-03-19 23:26+0100\n"
"Last-Translator: \n"
"PO-Revision-Date: 2023-12-07 23:07+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 2.0.2\n"
"X-Generator: Poedit 3.2.2\n"
#: reference/toplevel_components.rst:6
msgid "Top-level components"
@ -157,58 +157,56 @@ msgstr ""
#: reference/toplevel_components.rst:8
msgid "interpreter"
msgstr ""
msgstr "interpréteur"
#: reference/toplevel_components.rst:21
msgid "program"
msgstr ""
msgstr "programme"
#: reference/toplevel_components.rst:23 reference/toplevel_components.rst:39
msgid "module"
msgstr ""
msgstr "module"
#: reference/toplevel_components.rst:23
msgid "sys"
msgstr ""
msgstr "sys"
#: reference/toplevel_components.rst:23 reference/toplevel_components.rst:39
msgid "__main__"
msgstr ""
msgstr "__main__"
#: reference/toplevel_components.rst:23
msgid "builtins"
msgstr ""
msgstr "builtins"
#: reference/toplevel_components.rst:39
#, fuzzy
msgid "interactive mode"
msgstr "Entrée interactive"
msgstr "mode interactif"
#: reference/toplevel_components.rst:49
msgid "UNIX"
msgstr ""
msgstr "UNIX"
#: reference/toplevel_components.rst:49
msgid "Windows"
msgstr ""
msgstr "Windows"
#: reference/toplevel_components.rst:49
msgid "command line"
msgstr ""
msgstr "ligne de commande"
#: reference/toplevel_components.rst:49
msgid "standard input"
msgstr ""
msgstr "entrée standard"
#: reference/toplevel_components.rst:100
#, fuzzy
msgid "input"
msgstr "Fichier d'entrée"
msgstr "entrée"
#: reference/toplevel_components.rst:101
msgid "built-in function"
msgstr ""
msgstr "fonction native"
#: reference/toplevel_components.rst:101
msgid "eval"
msgstr ""
msgstr "eval"

View File

@ -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)"

View File

@ -124,7 +124,7 @@ msgstr ""
"pas au premier coup d'œil en Python et il peut être ignoré tant qu'on "
"travaille avec des types de base immuables (nombres, chaînes, *n*-uplets). "
"Cependant, les alias peuvent produire des effets surprenants sur la "
"sémantique d'un code Python mettant en jeu des objets muables comme les "
"sémantique d'un code Python mettant en jeu des objets mutables comme les "
"listes, les dictionnaires et la plupart des autres types. En général, leur "
"utilisation est bénéfique au programme car les alias se comportent, d'un "
"certain point de vue, comme des pointeurs. Par exemple, transmettre un objet "
@ -771,7 +771,7 @@ msgid ""
"by all *Dog* instances::"
msgstr ""
"Comme nous l'avons vu dans :ref:`tut-object`, les données partagées :term:"
"`muable <muable>` (telles que les listes, dictionnaires, etc.) peuvent avoir "
"`mutable <muable>` (telles que les listes, dictionnaires, etc.) peuvent avoir "
"des effets surprenants. Par exemple, la liste *tricks* dans le code suivant "
"ne devrait pas être utilisée en tant que variable de classe car, dans ce "
"cas, une seule liste est partagée par toutes les instances de *Dog* ::"

View File

@ -772,7 +772,7 @@ msgid ""
msgstr ""
"**Avertissement important :** la valeur par défaut n'est évaluée qu'une "
"seule fois. Ceci fait une différence lorsque cette valeur par défaut est un "
"objet muable tel qu'une liste, un dictionnaire ou des instances de la "
"objet mutable tel qu'une liste, un dictionnaire ou des instances de la "
"plupart des classes. Par exemple, la fonction suivante accumule les "
"arguments qui lui sont passés au fil des appels successifs ::"
@ -1422,7 +1422,7 @@ msgid ""
"to it (items inserted into a list)."
msgstr ""
"En fait, *appels par référence d'objets* serait sans doute une description "
"plus juste dans la mesure où, si un objet muable est passé en argument, "
"plus juste dans la mesure où, si un objet mutable est passé en argument, "
"l'appelant verra toutes les modifications qui lui auront été apportées par "
"l'appelé (insertion d'éléments dans une liste…)."

View File

@ -148,7 +148,7 @@ msgstr ""
"Vous avez probablement remarqué que les méthodes qui ne font que modifier la "
"liste, comme ``insert``, ``remove`` ou ``sort``, n'affichent pas de valeur "
"de retour (elles renvoient ``None``) [#]_. C'est un principe respecté par "
"toutes les structures de données muables en Python."
"toutes les structures de données mutables en Python."
#: tutorial/datastructures.rst:128
msgid ""
@ -424,7 +424,7 @@ msgstr ""
"celles-ci sont souvent nécessaires (notamment lorsqu'un *n*-uplet fait "
"partie d'une expression plus longue). Il n'est pas possible d'affecter de "
"valeur à un élément d'un *n*-uplet ; par contre, il est en revanche possible "
"de créer des *n*-uplets contenant des objets muables, comme des listes."
"de créer des *n*-uplets contenant des objets mutables, comme des listes."
#: tutorial/datastructures.rst:408
msgid ""
@ -442,7 +442,7 @@ msgstr ""
"séquences hétérogènes d'éléments auxquelles on accède par "
 dissociation » (*unpacking* en anglais, voir plus loin) ou par indice (ou "
"même par attribut dans le cas des :func:`namedtuples <collections."
"namedtuple>`). Les listes sont souvent :term:`muables <muable>` et "
"namedtuple>`). Les listes sont souvent :term:`mutables <muable>` et "
"contiennent des éléments généralement homogènes auxquels on accède en "
"itérant sur la liste."
@ -555,7 +555,7 @@ msgstr ""
"n'importe quel type immuable ; les chaînes de caractères et les nombres "
"peuvent toujours être des clés. Des *n*-uplets peuvent être utilisés comme "
"clés s'ils ne contiennent que des chaînes, des nombres ou des *n*-uplets ; "
"si un *n*-uplet contient un objet muable, de façon directe ou indirecte, il "
"si un *n*-uplet contient un objet mutable, de façon directe ou indirecte, il "
"ne peut pas être utilisé comme une clé. Vous ne pouvez pas utiliser des "
"listes comme clés, car les listes peuvent être modifiées en place en "
"utilisant des affectations par position, par tranches ou via des méthodes "

View File

@ -528,7 +528,7 @@ msgid ""
"type, i.e. it is possible to change their content::"
msgstr ""
"Mais à la différence des chaînes qui sont :term:`immuables <immutable>`, les "
"listes sont :term:`muables <mutable>` : il est possible de modifier leur "
"listes sont :term:`mutables <mutable>` : il est possible de modifier leur "
"contenu ::"
#: tutorial/introduction.rst:430

View File

@ -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"

View File

@ -3105,7 +3105,7 @@ msgstr ""
"Les objets ``Literal`` lèvent maintenant une exception :exc:`TypeError` lors "
"des comparaisons d'égalités si n'importe quel de leurs paramètres n'est pas :"
"term:`immuable <immutable>`. Prenez-note que déclarer un ``Literal`` avec un "
"paramètre muable ne lève pas une erreur ::"
"paramètre mutable ne lève pas une erreur ::"
#: whatsnew/3.9.rst:1519
msgid "(Contributed by Yurii Karabas in :issue:`42345`.)"