Compare commits

...

10 Commits

Author SHA1 Message Date
Christophe Nanteuil 554192a894 fuzzies et traduction de decimal.po 2023-12-06 23:58:00 +01:00
Julien Palard af33329364
Upgrade woodpecker config
- Pipeline changed its name to steps.
- Default checkout was target branch, conflicting with our fetch.
- Spliting fetch and actual tests for readability.
- Cannot split apt install as each step runs in a separated
- container (clean way would be to create an image with hunspell in it).

Also I don't remember why there's those git things here, so let's try
without…
2023-12-01 22:51:35 +01:00
Jérémy TREMBLAY bd6abaadbb Traduction de library/pkgutil.po (#215)
Closes #214

Co-authored-by: Jérémy TREMBLAY <jeremy.tremblay@etu.uca.fr>
Reviewed-on: AFPy/python-docs-fr#215
Reviewed-by: Christophe Nanteuil <christophenan@noreply.localhost>
Co-authored-by: Jérémy TREMBLAY <jeremy-tremblay@outlook.fr>
Co-committed-by: Jérémy TREMBLAY <jeremy-tremblay@outlook.fr>
2023-11-26 20:03:13 +00:00
Julien Palard 8d5ea7d2ec FIX: Incohérences de références de terme dans le message traduit. (#232)
J'ai tenté un build et j'ai eu:

```
Warning, treated as error:
/home/mdk/clones/python/python-docs-fr/venv/cpython/Doc/library/shutil.rst:53:ncohérences de références de terme dans le message traduit. Original : [], traduit : [':term:`objets simili-chemin <path-like object>`']
make[1]: *** [Makefile:53 : build] Erreur 2
make[1] : on quitte le répertoire « /home/mdk/clones/python/python-docs-fr/venv/cpython/Doc »
make: *** [Makefile:92 : all] Erreur 2
```

c'est dommage, c'était bien avec un lien.

Reviewed-on: AFPy/python-docs-fr#232
Reviewed-by: Christophe Nanteuil <christophenan@noreply.localhost>
Co-authored-by: Julien Palard <julien@palard.fr>
Co-committed-by: Julien Palard <julien@palard.fr>
2023-11-26 15:25:33 +00:00
Christophe Nanteuil d8ea8e2c72 fin du dossier extending (#176)
Reviewed-on: AFPy/python-docs-fr#176
Reviewed-by: Julien Palard <julien@palard.fr>
Co-authored-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
Co-committed-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
2023-11-26 15:24:37 +00:00
Mathieu Dupuy ac7b434dac library/zimport.po: fuzzies (#172)
quelques amélioarations aléatoires qui me sont venus à l'esprit en tombant sur la page en français

Reviewed-on: AFPy/python-docs-fr#172
Reviewed-by: Julien Palard <julien@palard.fr>
Co-authored-by: Mathieu Dupuy <deronnax@gmail.com>
Co-committed-by: Mathieu Dupuy <deronnax@gmail.com>
2023-11-26 15:18:17 +00:00
Christophe Nanteuil 6e3ce23f62 traduction du début du dossier extending (#173)
Co-authored-by: Julien Palard <julien@palard.fr>
Reviewed-on: AFPy/python-docs-fr#173
Reviewed-by: Julien Palard <julien@palard.fr>
Co-authored-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
Co-committed-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
2023-11-26 15:15:52 +00:00
Julien Palard 20e75e0336 I have hard times reviewing PR of more than 200 lines. (#231)
Smaller PR are:

- Faster to review: reviewers may not have many free hours straight.
- Easier to merge: if a translator does a lot of work, better have
- part of it merged quickly (by merging good PRs) instead of blocking
- the whole work due to a small detail.

Reviewed-on: AFPy/python-docs-fr#231
Reviewed-by: Christophe Nanteuil <christophenan@noreply.localhost>
Co-authored-by: Julien Palard <julien@palard.fr>
Co-committed-by: Julien Palard <julien@palard.fr>
2023-11-25 15:57:41 +00:00
Christophe Nanteuil 4afdbf71c5 suite du dossier extending (#174)
Reviewed-on: AFPy/python-docs-fr#174
Reviewed-by: Julien Palard <julien@palard.fr>
Co-authored-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
Co-committed-by: Christophe Nanteuil <christophe.nanteuil@gmail.com>
2023-11-25 10:54:49 +00:00
Yannick Gingras 141c4ad19f library-shutil (#229)
Traduction finale de library/shutil.po.

Ceci est une reprise de la PR #184 de @deronnax .

Co-authored-by: Mathieu Dupuy <deronnax@gmail.com>
Co-authored-by: Yannick Gingras <dev-noreply@ygingras.net>
Reviewed-on: AFPy/python-docs-fr#229
Co-authored-by: Yannick Gingras <ygingras@noreply.localhost>
Co-committed-by: Yannick Gingras <ygingras@noreply.localhost>
2023-11-24 06:08:36 +00:00
12 changed files with 1178 additions and 417 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
@ -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

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

@ -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-05-20 20:21+0200\n"
"PO-Revision-Date: 2023-12-06 23:28+0100\n"
"Last-Translator: Christophe Nanteuil <christophe.nanteuil@gmail.com>\n"
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
"Language: fr\n"
@ -150,7 +150,7 @@ msgid ""
"``-Infinity``, and ``NaN``. The standard also differentiates ``-0`` from "
"``+0``."
msgstr ""
"Un ``Decimal`` est immuable. Il a un signe, un coefficient et un exposant. "
"Un ``Decimal`` est immuable. Il a un signe, une mantisse et un exposant. "
"Pour préserver le nombre de chiffres significatifs, les zéros en fin de "
"chaîne ne sont pas tronqués. Les décimaux incluent aussi des valeurs "
"spéciales telles que ``Infinity``, ``-Infinity`` et ``NaN``. Le standard "
@ -199,7 +199,7 @@ msgid ""
"them before monitoring a calculation."
msgstr ""
"Chaque signal est configurable indépendamment, à travers un drapeau (ou "
"option) et un activateur de déroutement. Quand une opération illégale "
"option) et un activateur de surveillance. Quand une opération illégale "
"survient, le drapeau du signal est mis à ``1`` puis, si l'activateur est "
"configuré, une exception est levée. La mise à ``1`` du drapeau est "
"persistante, l'utilisateur doit donc remettre les drapeaux à zéro avant de "
@ -249,9 +249,9 @@ msgid ""
"decimals and floats in constructors or ordering comparisons raises an "
"exception::"
msgstr ""
"Si le signal :exc:`FloatOperation` est activé pour déroutement, un mélange "
"accidentel d'objets ``Decimal`` et de ``float`` dans les constructeurs ou "
"des opérations de comparaison lève une exception ::"
"Si le signal :exc:`FloatOperation` est activé pour la surveillance, un "
"mélange accidentel d'objets ``Decimal`` et de ``float`` dans les "
"constructeurs ou des opérations de comparaison lève une exception ::"
#: library/decimal.rst:182
msgid ""
@ -326,7 +326,7 @@ msgstr ""
"En accord avec le standard, le module :mod:`decimal` fournit des objets "
"*Context* standards, :const:`BasicContext` et :const:`ExtendedContext`. Le "
"premier est particulièrement utile pour le débogage car beaucoup des signaux "
"ont leur déroutement activé :"
"ont leur surveillance activée :"
#: library/decimal.rst:299
msgid ""
@ -357,7 +357,7 @@ msgid ""
"Individual traps are set using the dictionary in the :attr:`~Context.traps` "
"attribute of a context:"
msgstr ""
"L'activation du déroutement se fait en utilisant un dictionnaire dans "
"L'activation de la surveillance se fait en utilisant un dictionnaire dans "
"l'attribut :attr:`~Context.traps` du contexte :"
#: library/decimal.rst:331
@ -455,9 +455,9 @@ msgid ""
"the value of ``NaN``."
msgstr ""
"L'objectif de l'argument *context* est de déterminer ce que Python doit "
"faire si *value* est une chaîne avec un mauvais format. Si le déroutement "
"est activé pour :const:`InvalidOperation`, une exception est levée, sinon le "
"constructeur renvoie un objet ``Decimal`` de valeur ``NaN``."
"faire si *value* est une chaîne avec un mauvais format. Si la surveillance "
"est activée pour :const:`InvalidOperation`, une exception est levée, sinon "
"le constructeur renvoie un objet ``Decimal`` de valeur ``NaN``."
#: library/decimal.rst:392
msgid "Once constructed, :class:`Decimal` objects are immutable."
@ -477,8 +477,8 @@ msgid ""
":class:`float` arguments raise an exception if the :exc:`FloatOperation` "
"trap is set. By default the trap is off."
msgstr ""
"un argument :class:`float` lève une exception si le déroutement est activé "
"pour :exc:`FloatOperation`. Par défaut le déroutement n'est pas activé."
"un argument :class:`float` lève une exception si la surveillance est activée "
"pour :exc:`FloatOperation`. Par défaut la surveillance n'est pas activée."
# suit un :
#: library/decimal.rst:402
@ -486,8 +486,8 @@ msgid ""
"Underscores are allowed for grouping, as with integral and floating-point "
"literals in code."
msgstr ""
"les tirets bas sont autorisés pour regrouper, tout comme pour l'arithmétique "
"en virgule fixe et flottante."
"les tirets bas sont autorisés pour grouper des chiffres, tout comme pour "
"l'arithmétique en virgule fixe et flottante."
#: library/decimal.rst:406
msgid ""
@ -579,7 +579,7 @@ msgid ""
"digit with respect to the decimal point."
msgstr ""
"Renvoie l'exposant ajusté après avoir décalé les chiffres les plus à droite "
"du coefficient jusqu'à ce qu'il ne reste que le premier chiffre : "
"de la mantisse jusqu'à ce qu'il ne reste que le premier chiffre : "
"``Decimal('321e+5').adjusted()`` renvoie sept. Utilisée pour déterminer la "
"position du chiffre le plus significatif par rapport à la virgule."
@ -607,7 +607,7 @@ msgid ""
"``DecimalTuple(sign, digits, exponent)``."
msgstr ""
"Renvoie une représentation sous la forme d'un :term:`n-uplet nommé <named "
"tuple>` du nombre ``DecimalTuple(sign, digits, exposant)``."
"tuple>` du nombre ``DecimalTuple(signe, chiffres, exposant)``."
#: library/decimal.rst:481
msgid ""
@ -635,9 +635,9 @@ msgid ""
"NaN operand is treated as though it were a signaling NaN."
msgstr ""
"Cette opération est identique à la méthode :meth:`compare`, sauf que tous "
"les *NaN* activent un déroutement. Autrement dit, si aucun des opérandes "
"n'est un *NaN* de signalisation, alors tout opérande *NaN* silencieux est "
"traité comme s'il s'agissait d'un *NaN* de signalisation."
"les *NaN* sont surveillés. Autrement dit, si aucun des opérandes n'est un "
"*NaN* de signalisation, alors tout opérande *NaN* silencieux est traité "
"comme s'il s'agissait d'un *NaN* de signalisation."
#: library/decimal.rst:504
msgid ""
@ -714,8 +714,8 @@ msgid ""
"Return the negation of the argument. This operation is unaffected by the "
"context and is quiet: no flags are changed and no rounding is performed."
msgstr ""
"Renvoie la négation de l'argument. Cette opération ne dépend pas du contexte "
"et est silencieuse : aucun drapeau n'est modifié et aucun arrondi n'est "
"Renvoie l'opposé de l'argument. Cette opération ne dépend pas du contexte et "
"est silencieuse : aucun drapeau n'est modifié et aucun arrondi n'est "
"effectué."
#: library/decimal.rst:553
@ -932,8 +932,9 @@ msgid ""
"(depending on the context and whether they are signaling or quiet)."
msgstr ""
"Comme ``max(self, other)`` sauf que la règle d'arrondi de *context* est "
"appliquée avant le retour et que les valeurs ``NaN`` sont signalées ou "
"ignorées (selon le contexte et si elles sont signalétiques ou silencieuses)."
"appliquée avant le retour et que les valeurs ``NaN`` ne soient signalées ou "
"ignorées (selon le contexte et suivant qu'elles sont signalétiques ou "
"silencieuses)."
#: library/decimal.rst:710
msgid ""
@ -950,8 +951,9 @@ msgid ""
"(depending on the context and whether they are signaling or quiet)."
msgstr ""
"Comme ``min(self, other)`` sauf que la règle d'arrondi de *context* est "
"appliquée avant le retour et que les valeurs ``NaN`` sont signalées ou "
"ignorées (selon le contexte et si elles sont signalétiques ou silencieuses)."
"appliquée avant le retour et que les valeurs ``NaN`` ne soient signalées ou "
"ignorées (selon le contexte et suivant qu'elles sont signalétiques ou "
"silencieuses)."
#: library/decimal.rst:722
msgid ""
@ -998,6 +1000,8 @@ msgid ""
"Used for producing canonical values of an equivalence class within either "
"the current context or the specified context."
msgstr ""
"Utilisé pour produire des valeurs canoniques d'une classe d'équivalence dans "
"le contexte actuel ou dans le contexte spécifié."
#: library/decimal.rst:749
msgid ""
@ -1008,22 +1012,34 @@ msgid ""
"exponent is incremented by 1. Otherwise (the coefficient is zero) the "
"exponent is set to 0. In all cases the sign is unchanged."
msgstr ""
"C'est la même sémantique que l'opération unaire plus, sauf que si le "
"résultat final est fini, il est réduit à sa forme la plus simple, avec tous "
"les zéros à droite supprimés et son signe conservé. Autrement dit, tant que "
"la mantisse est différente de zéro et multiple de dix, la mantisse est "
"divisée par dix et l'exposant est incrémenté de 1. Sinon (la mantisse est "
"nulle), l'exposant est mis à 0. Dans tous les cas, le signe est inchangé."
#: library/decimal.rst:756
msgid ""
"For example, ``Decimal('32.100')`` and ``Decimal('0.321000e+2')`` both "
"normalize to the equivalent value ``Decimal('32.1')``."
msgstr ""
"Par exemple, ``Decimal('32.100')`` et ``Decimal('0.321000e+2')`` se "
"normalisent tous deux à la valeur équivalente ``Decimal('32.1')``."
#: library/decimal.rst:759
msgid "Note that rounding is applied *before* reducing to simplest form."
msgstr ""
"Notez que l'arrondi est appliqué *avant* la réduction à la forme la plus "
"simple."
#: library/decimal.rst:761
msgid ""
"In the latest versions of the specification, this operation is also known as "
"``reduce``."
msgstr ""
"Dans les dernières versions de la spécification, cette opération est "
"également connue sous le nom de ``reduce``."
#: library/decimal.rst:766
msgid ""
@ -1110,7 +1126,7 @@ msgid ""
"is signaled. This guarantees that, unless there is an error condition, the "
"quantized exponent is always equal to that of the right-hand operand."
msgstr ""
"Contrairement aux autres opérations, si la longueur du coefficient après "
"Contrairement aux autres opérations, si la longueur de la mantisse après "
"l'opération de quantification est supérieure à la précision, alors une :"
"const:`InvalidOperation` est signalée. Ceci garantit que, sauf condition "
"d'erreur, l'exposant quantifié est toujours égal à celui de l'opérande de "
@ -1123,7 +1139,7 @@ msgid ""
msgstr ""
"Contrairement aux autres opérations, la quantification ne signale jamais de "
"dépassement par valeur inférieure, même si le résultat est inférieur à la "
"valeur minimale représentable et inexact."
"valeur minimale représentable et est inexact."
#: library/decimal.rst:797
msgid ""
@ -1191,8 +1207,8 @@ msgstr ""
"un entier compris dans la plage -précision à précision. La valeur absolue du "
"deuxième opérande donne le nombre de rotations unitaires à faire. Si le "
"deuxième opérande est positif alors la rotation se fait vers la gauche ; "
"sinon la rotation se fait vers la droite. Le coefficient du premier opérande "
"est complété à gauche avec des zéros à la précision de la longueur si "
"sinon la rotation se fait vers la droite. La mantisse du premier opérande "
"est complétée à gauche avec des zéros à la précision de la longueur si "
"nécessaire. Le signe et l'exposant du premier opérande sont inchangés."
#: library/decimal.rst:843
@ -1239,7 +1255,7 @@ msgstr "Renvoie la racine carrée de l'argument avec une précision maximale."
msgid ""
"Convert to a string, using engineering notation if an exponent is needed."
msgstr ""
"Convertir en chaîne, en utilisant la notation ingénieur si un exposant est "
"Convertit en chaîne, en utilisant la notation ingénieur si un exposant est "
"nécessaire."
#: library/decimal.rst:1470
@ -1250,7 +1266,7 @@ msgid ""
msgstr ""
"La notation ingénieur possède un exposant qui est un multiple de 3. Cela "
"peut laisser jusqu'à 3 chiffres à gauche de la décimale et peut nécessiter "
"l'ajout d'un ou de deux zéros à la fin."
"l'ajout d'un ou de deux zéros en fin de mantisse."
#: library/decimal.rst:879
msgid ""
@ -1411,15 +1427,15 @@ msgid ""
msgstr ""
"Il s'agit d'un contexte standard défini par la *General Decimal Arithmetic "
"Specification*. La précision est fixée à neuf. L'arrondi est défini sur :"
"const:`ROUND_HALF_UP`. Tous les drapeaux sont effacés. Tous les déroutements "
"sont activés (ils lèvent des exceptions) sauf :const:`Inexact`, :const:"
"`Rounded` et :const:`Subnormal`."
"const:`ROUND_HALF_UP`. Tous les drapeaux sont effacés. Toutes les "
"surveillances sont activées (elles lèvent des exceptions) sauf :const:"
"`Inexact`, :const:`Rounded` et :const:`Subnormal`."
#: library/decimal.rst:985
msgid ""
"Because many of the traps are enabled, this context is useful for debugging."
msgstr ""
"Étant donné que de nombreuses options de déroutement sont activées, ce "
"Étant donné que de nombreuses options de surveillance sont activées, ce "
"contexte est utile pour le débogage."
#: library/decimal.rst:990
@ -1431,7 +1447,7 @@ msgid ""
msgstr ""
"Il s'agit d'un contexte standard défini par la *General Decimal Arithmetic "
"Specification*. La précision est fixée à neuf. L'arrondi est défini sur :"
"const:`ROUND_HALF_EVEN`. Toutes les options de déroutement sont désactivées "
"const:`ROUND_HALF_EVEN`. Toutes les options de surveillance sont désactivées "
"(afin que les exceptions ne soient pas levées pendant les calculs)."
#: library/decimal.rst:995
@ -1507,24 +1523,35 @@ msgid ""
"default values are copied from the :const:`DefaultContext`. If the *flags* "
"field is not specified or is :const:`None`, all flags are cleared."
msgstr ""
"Crée un nouveau contexte. Si un champ n'est pas spécifié ou est :const:"
"`None`, les valeurs par défaut sont copiées à partir du :const:"
"`DefaultContext`. Si le champ *flags* n'est pas spécifié ou est :const:"
"`None`, tous les indicateurs sont effacés."
#: library/decimal.rst:1030
msgid ""
"*prec* is an integer in the range [``1``, :const:`MAX_PREC`] that sets the "
"precision for arithmetic operations in the context."
msgstr ""
"*prec* est un entier compris dans la plage [``1``, :const:`MAX_PREC`] qui "
"définit la précision des opérations arithmétiques dans le contexte."
#: library/decimal.rst:1033
msgid ""
"The *rounding* option is one of the constants listed in the section "
"`Rounding Modes`_."
msgstr ""
"L'option *rounding* est l'une des constantes répertoriées dans la section "
"`Modes d'arrondi`_."
#: library/decimal.rst:1036
msgid ""
"The *traps* and *flags* fields list any signals to be set. Generally, new "
"contexts should only set traps and leave the flags clear."
msgstr ""
"Les champs *traps* et *flags* répertorient tous les signaux à définir. En "
"général, les nouveaux contextes ne doivent qu'activer des surveillances et "
"laisser les drapeaux baissés."
#: library/decimal.rst:1039
msgid ""
@ -1532,6 +1559,9 @@ msgid ""
"allowable for exponents. *Emin* must be in the range [:const:`MIN_EMIN`, "
"``0``], *Emax* in the range [``0``, :const:`MAX_EMAX`]."
msgstr ""
"Les champs *Emin* et *Emax* sont des entiers spécifiant les valeurs limites "
"autorisées pour les exposants. *Emin* doit être dans [:const:`MIN_EMIN`, "
"``0``], *Emax* dans la plage [``0``, :const:`MAX_EMAX`]."
#: library/decimal.rst:1043
msgid ""
@ -1539,6 +1569,9 @@ msgid ""
"``1``, exponents are printed with a capital ``E``; otherwise, a lowercase "
"``e`` is used: ``Decimal('6.02e+23')``."
msgstr ""
"Le champ *capitals* est soit ``0`` soit ``1`` (la valeur par défaut). S'il "
"est défini à ``1``, les exposants sont imprimés avec un ``E`` majuscule ; "
"sinon, un ``e`` minuscule est utilisé : ``Decimal('6.02e+23')``."
#: library/decimal.rst:1047
msgid ""
@ -1553,12 +1586,24 @@ msgid ""
"value of the number but loses information about significant trailing zeros. "
"For example::"
msgstr ""
"Le champ *clamp* est soit ``0`` (la valeur par défaut), soit ``1``. S'il est "
"défini à ``1``, l'exposant ``e`` d'une instance :class:`Decimal` "
"représentable dans ce contexte est strictement limité à la plage ``Emin - "
"prec + 1 <= e <= Emax - prec + 1``. Si *clamp* est ``0`` alors une condition "
"plus faible est vraie : l'exposant ajusté de l'instance :class:`Decimal` est "
"au plus :attr:`~Context.Emax`. Lorsque *clamp* vaut ``1``, un grand nombre "
"normal voit, si possible, son exposant réduit et un nombre correspondant de "
"zéros ajouté à sa mantisse, afin de s'adapter aux contraintes d'exposant ; "
"cela préserve la valeur du nombre mais perd des informations sur les zéros "
"significatifs. Par exemple ::"
#: library/decimal.rst:1062
msgid ""
"A *clamp* value of ``1`` allows compatibility with the fixed-width decimal "
"interchange formats specified in IEEE 754."
msgstr ""
"Une valeur *clamp* de ``1`` permet la compatibilité avec les formats "
"d'échange décimaux à largeur fixe spécifiés dans la norme IEEE 754."
#: library/decimal.rst:1065
msgid ""
@ -1572,22 +1617,32 @@ msgid ""
"exp(context=C)``. Each :class:`Context` method accepts a Python integer (an "
"instance of :class:`int`) anywhere that a Decimal instance is accepted."
msgstr ""
"La classe :class:`Context` définit plusieurs méthodes à usage général ainsi "
"qu'un grand nombre de méthodes permettant de faire de l'arithmétique "
"directement dans un contexte donné. De plus, pour chacune des méthodes :"
"class:`Decimal` décrites ci-dessus (à l'exception des méthodes :meth:"
"`~Decimal.adjusted` et :meth:`~Decimal.as_tuple`), il existe une methode :"
"class:`Context` correspondante. Par exemple, pour une instance :class:"
"`Context` ``C`` et une instance :class:`Decimal` ``x``, ``C.exp(x)`` est "
"équivalent à ``x.exp(context=C)``. Chaque méthode :class:`Context` accepte "
"un entier Python (une instance de :class:`int`) partout où une instance "
"Decimal est acceptée."
#: library/decimal.rst:1078
msgid "Resets all of the flags to ``0``."
msgstr ""
msgstr "Réinitialise tous les drapeaux à ``0``."
#: library/decimal.rst:1082
msgid "Resets all of the traps to ``0``."
msgstr ""
msgstr "Réinitialise toutes les surveillances à ``0``."
#: library/decimal.rst:1088
msgid "Return a duplicate of the context."
msgstr ""
msgstr "Renvoie une copie du contexte."
#: library/decimal.rst:1092
msgid "Return a copy of the Decimal instance num."
msgstr ""
msgstr "Renvoie une copie du numéro dinstance *Decimal*."
#: library/decimal.rst:1096
msgid ""
@ -1595,6 +1650,10 @@ msgid ""
"Unlike the :class:`Decimal` constructor, the context precision, rounding "
"method, flags, and traps are applied to the conversion."
msgstr ""
"Crée une nouvelle instance Decimal à partir de *num* mais en utilisant "
"*self* comme contexte. Contrairement au constructeur :class:`Decimal`, la "
"précision du contexte, la méthode d'arrondi, les indicateurs et les "
"surveillances sont appliqués à la conversion."
#: library/decimal.rst:1100
msgid ""
@ -1604,6 +1663,12 @@ msgid ""
"the following example, using unrounded inputs means that adding zero to a "
"sum can change the result:"
msgstr ""
"C'est utile car les constantes sont souvent données avec une précision "
"supérieure à celle requise par l'application. Un autre avantage est que "
"larrondi élimine immédiatement les effets involontaires des chiffres au-"
"delà de la précision actuelle. Dans l'exemple suivant, l'utilisation "
"d'entrées non arrondies signifie que l'ajout de zéro à une somme peut "
"modifier le résultat :"
#: library/decimal.rst:1114
msgid ""
@ -1611,6 +1676,9 @@ msgid ""
"the argument is a string, no leading or trailing whitespace or underscores "
"are permitted."
msgstr ""
"Cette méthode implémente l'opération *to-number* de la spécification IBM. Si "
"largument est une chaîne, aucun espace ou trait de soulignement de début ou "
"de fin nest autorisé."
#: library/decimal.rst:1120
msgid ""
@ -1619,6 +1687,11 @@ msgid ""
"context precision, rounding method, flags, and traps are applied to the "
"conversion."
msgstr ""
"Crée une nouvelle instance Decimal à partir d'un float *f* mais en "
"arrondissant en utilisant *self* comme contexte. Contrairement à la méthode "
"de classe :meth:`Decimal.from_float`, la précision du contexte, la méthode "
"d'arrondi, les indicateurs et les surveillances sont appliqués à la "
"conversion."
#: library/decimal.rst:1140
msgid ""
@ -1626,10 +1699,13 @@ msgid ""
"value for subnormal results. When underflow occurs, the exponent is set to :"
"const:`Etiny`."
msgstr ""
"Renvoie une valeur égale à ``Emin - prec + 1`` qui est la valeur minimale de "
"l'exposant pour les résultats avec dépassement inférieur. Lorsqu'un "
"dépassement inférieur se produit, l'exposant est défini sur :const:`Etiny`."
#: library/decimal.rst:1146
msgid "Returns a value equal to ``Emax - prec + 1``."
msgstr ""
msgstr "Renvoie une valeur égale à ``Emax - prec + 1``."
#: library/decimal.rst:1148
msgid ""
@ -1640,6 +1716,12 @@ msgid ""
"similar to those for the :class:`Decimal` class and are only briefly "
"recounted here."
msgstr ""
"L'approche habituelle pour travailler avec des décimaux consiste à créer des "
"instances :class:`Decimal`, puis à appliquer des opérations arithmétiques "
"qui ont lieu dans le contexte actuel du fil d'exécution actif. Une approche "
"alternative consiste à utiliser des méthodes contextuelles pour calculer "
"dans un contexte spécifique. Les méthodes sont similaires à celles de la "
"classe :class:`Decimal` et ne sont décrites que brièvement ici."
#: library/decimal.rst:1158
msgid "Returns the absolute value of *x*."
@ -1651,28 +1733,30 @@ msgstr "Renvoie la somme de *x* et *y*."
#: library/decimal.rst:1168
msgid "Returns the same Decimal object *x*."
msgstr ""
msgstr "Renvoie l'objet Decimal *x* lui-même."
#: library/decimal.rst:1173
msgid "Compares *x* and *y* numerically."
msgstr ""
msgstr "Compare *x* et *y* numériquement."
#: library/decimal.rst:1178
msgid "Compares the values of the two operands numerically."
msgstr ""
msgstr "Compare numériquement les valeurs des deux opérandes."
#: library/decimal.rst:1183
msgid "Compares two operands using their abstract representation."
msgstr ""
msgstr "Compare deux opérandes en utilisant leur représentation abstraite."
#: library/decimal.rst:1188
msgid ""
"Compares two operands using their abstract representation, ignoring sign."
msgstr ""
"Compare deux opérandes en utilisant leur représentation abstraite, en "
"ignorant le signe."
#: library/decimal.rst:1193
msgid "Returns a copy of *x* with the sign set to 0."
msgstr ""
msgstr "Renvoie une copie de *x* avec le signe à 0 (c.-à-d. positif)."
#: library/decimal.rst:1198
msgid "Returns a copy of *x* with the sign inverted."
@ -1704,11 +1788,11 @@ msgstr "Renvoie *x* multiplié par *y*, plus *z*."
#: library/decimal.rst:1233
msgid "Returns ``True`` if *x* is canonical; otherwise returns ``False``."
msgstr ""
msgstr "Renvoie ``True`` si *x* est canonique ; ``False`` sinon."
#: library/decimal.rst:1238
msgid "Returns ``True`` if *x* is finite; otherwise returns ``False``."
msgstr ""
msgstr "Renvoie ``True`` si *x* est fini ; ``False`` sinon."
#: library/decimal.rst:1243
msgid "Returns ``True`` if *x* is infinite; otherwise returns ``False``."
@ -1723,7 +1807,7 @@ msgstr ""
#: library/decimal.rst:1253
msgid ""
"Returns ``True`` if *x* is a normal number; otherwise returns ``False``."
msgstr ""
msgstr "Renvoie ``True`` si *x* est un nombre normal ; ``False`` sinon."
#: library/decimal.rst:1258
msgid "Returns ``True`` if *x* is a quiet NaN; otherwise returns ``False``."
@ -1740,7 +1824,7 @@ msgstr "Renvoie ``True`` si *x* est un *NaN* signalétique, ``False`` sinon."
#: library/decimal.rst:1273
msgid "Returns ``True`` if *x* is subnormal; otherwise returns ``False``."
msgstr ""
msgstr "Renvoie ``True`` si *x* est anormal ; sinon, renvoie ``False``."
#: library/decimal.rst:1278
msgid "Returns ``True`` if *x* is a zero; otherwise returns ``False``."
@ -1757,22 +1841,28 @@ msgstr "Renvoie le logarithme en base 10 de *x*."
#: library/decimal.rst:1293
msgid "Returns the exponent of the magnitude of the operand's MSD."
msgstr ""
"Renvoie l'exposant correspondant du chiffre de poids fort de la mantisse de "
"l'opérande."
#: library/decimal.rst:1298
msgid "Applies the logical operation *and* between each operand's digits."
msgstr ""
"Applique l'opération logique *ET* entre les chiffres de chaque opérande."
#: library/decimal.rst:1303
msgid "Invert all the digits in *x*."
msgstr ""
msgstr "Inverse tous les chiffres de *x*."
#: library/decimal.rst:1308
msgid "Applies the logical operation *or* between each operand's digits."
msgstr ""
"Applique l'opération logique *OU* entre les chiffres de chaque opérande."
#: library/decimal.rst:1313
msgid "Applies the logical operation *xor* between each operand's digits."
msgstr ""
"Applique l'opération logique *OU EXCLUSIF* entre les chiffres de chaque "
"opérande."
#: library/decimal.rst:1318
msgid "Compares two values numerically and returns the maximum."
@ -1780,15 +1870,15 @@ msgstr "Renvoie le maximum entre les deux valeurs numériques."
#: library/decimal.rst:1333
msgid "Compares the values numerically with their sign ignored."
msgstr ""
msgstr "Compare les valeurs numériquement en ignorant leur signe."
#: library/decimal.rst:1328
msgid "Compares two values numerically and returns the minimum."
msgstr ""
msgstr "Compare numériquement deux valeurs et renvoie le minimum."
#: library/decimal.rst:1338
msgid "Minus corresponds to the unary prefix minus operator in Python."
msgstr ""
msgstr "Correspond à lopérateur unaire préfixé « moins » en Python."
#: library/decimal.rst:1343
msgid "Return the product of *x* and *y*."
@ -1796,15 +1886,15 @@ msgstr "Renvoie la multiplication de *x* avec *y*."
#: library/decimal.rst:1348
msgid "Returns the largest representable number smaller than *x*."
msgstr ""
msgstr "Renvoie le plus grand nombre représentable inférieur à *x*."
#: library/decimal.rst:1353
msgid "Returns the smallest representable number larger than *x*."
msgstr ""
msgstr "Renvoie le plus petit nombre représentable supérieur à *x*."
#: library/decimal.rst:1358
msgid "Returns the number closest to *x*, in direction towards *y*."
msgstr ""
msgstr "Renvoie le nombre le plus proche de *x*, en direction de *y*."
#: library/decimal.rst:1363
msgid "Reduces *x* to its simplest form."
@ -1812,7 +1902,7 @@ msgstr "Réduit *x* à sa forme la plus simple."
#: library/decimal.rst:1368
msgid "Returns an indication of the class of *x*."
msgstr ""
msgstr "Renvoie une indication de la classe de *x*."
#: library/decimal.rst:1373
msgid ""
@ -1820,10 +1910,15 @@ msgid ""
"operation applies the context precision and rounding, so it is *not* an "
"identity operation."
msgstr ""
"Correspond à l'opérateur unaire préfixé « plus » en Python. Cette opération "
"applique la précision du contexte et l'arrondi, ce n'est donc *pas* une "
"opération d'identité."
#: library/decimal.rst:1380
msgid "Return ``x`` to the power of ``y``, reduced modulo ``modulo`` if given."
msgstr ""
"Renvoie ``x`` à la puissance ``y``, réduit modulo ``modulo`` si celui-ci est "
"donné."
#: library/decimal.rst:1382
msgid ""
@ -1833,29 +1928,42 @@ msgid ""
"rounding mode of the context is used. Results are always correctly rounded "
"in the Python version."
msgstr ""
"Avec deux arguments, calcule ``x**y``. Si ``x`` est négatif alors ``y`` doit "
"être entier. Le résultat est inexact à moins que ``y`` soit entier et que le "
"résultat soit fini et puisse être exprimé exactement en ``precision`` "
"chiffres. Le mode d'arrondi du contexte est utilisé. Les résultats sont "
"toujours correctement arrondis à la manière de Python."
#: library/decimal.rst:1388
msgid ""
"``Decimal(0) ** Decimal(0)`` results in ``InvalidOperation``, and if "
"``InvalidOperation`` is not trapped, then results in ``Decimal('NaN')``."
msgstr ""
"``Decimal(0) ** Decimal(0)`` donne ``InvalidOperation`` et, si "
"``InvalidOperation`` n'est pas surveillé, cela donne ``Decimal('NaN')``."
# suit un :
#: library/decimal.rst:1391
msgid ""
"The C module computes :meth:`power` in terms of the correctly rounded :meth:"
"`exp` and :meth:`ln` functions. The result is well-defined but only \"almost "
"always correctly rounded\"."
msgstr ""
"le module C calcule :meth:`power` en termes de fonctions :meth:`exp` et :"
"meth:`ln` correctement arrondies. Le résultat est bien défini mais seulement "
 presque toujours correctement arrondi »."
#: library/decimal.rst:1396
msgid ""
"With three arguments, compute ``(x**y) % modulo``. For the three argument "
"form, the following restrictions on the arguments hold:"
msgstr ""
"Avec trois arguments, calcule ``(x**y) % modulo``. Pour la forme à trois "
"arguments, les restrictions suivantes sur les arguments s'appliquent :"
#: library/decimal.rst:1399
msgid "all three arguments must be integral"
msgstr ""
msgstr "les trois arguments doivent être entiers ;"
# Élément d'une liste, d'où le ; final
#: library/decimal.rst:1400
@ -1870,6 +1978,8 @@ msgstr "au moins l'un de ``x`` ou ``y`` doit être différent de zéro ;"
#: library/decimal.rst:1402
msgid "``modulo`` must be nonzero and have at most 'precision' digits"
msgstr ""
"``modulo`` doit être différent de zéro et avoir au plus ``precision`` "
"chiffres."
#: library/decimal.rst:1404
msgid ""
@ -1879,10 +1989,15 @@ msgid ""
"zero, regardless of the exponents of ``x``, ``y`` and ``modulo``. The "
"result is always exact."
msgstr ""
"La valeur résultant de ``Context.power(x, y, modulo)`` est égale à la valeur "
"qui serait obtenue en calculant ``(x**y) % modulo`` avec une précision "
"illimitée, mais est calculée plus efficacement. L'exposant du résultat est "
"zéro, quels que soient les exposants de ``x``, ``y`` et ``modulo``. Le "
"résultat est toujours exact."
#: library/decimal.rst:1414
msgid "Returns a value equal to *x* (rounded), having the exponent of *y*."
msgstr ""
msgstr "Renvoie une valeur égale à *x* (arrondie), ayant l'exposant de *y*."
#: library/decimal.rst:1419
msgid "Just returns 10, as this is Decimal, :)"
@ -1897,16 +2012,21 @@ msgid ""
"The sign of the result, if non-zero, is the same as that of the original "
"dividend."
msgstr ""
"Le signe du résultat, s'il est différent de zéro, est le même que celui du "
"dividende initial."
#: library/decimal.rst:1432
msgid ""
"Returns ``x - y * n``, where *n* is the integer nearest the exact value of "
"``x / y`` (if the result is 0 then its sign will be the sign of *x*)."
msgstr ""
"Renvoie ``x - y * n``, où *n* est l'entier le plus proche de la valeur "
"exacte de ``x / y`` (si le résultat est 0 alors son signe est le signe de "
"*x*)."
#: library/decimal.rst:1438
msgid "Returns a rotated copy of *x*, *y* times."
msgstr ""
msgstr "Renvoie une copie pivotée de *x*, *y* fois."
#: library/decimal.rst:1443
msgid "Returns ``True`` if the two operands have the same exponent."
@ -1915,26 +2035,30 @@ msgstr "Renvoie ``True`` si les deux opérandes ont le même exposant."
#: library/decimal.rst:1448
msgid "Returns the first operand after adding the second value its exp."
msgstr ""
"Renvoie le premier opérande après avoir ajouté la deuxième valeur à son "
"*exp*."
#: library/decimal.rst:1453
msgid "Returns a shifted copy of *x*, *y* times."
msgstr ""
msgstr "Renvoie une copie décalée de *x*, *y* fois."
#: library/decimal.rst:1458
msgid "Square root of a non-negative number to context precision."
msgstr ""
"Renvoie la racine carrée d'un nombre non négatif avec la précision donnée "
"par le contexte."
#: library/decimal.rst:1463
msgid "Return the difference between *x* and *y*."
msgstr ""
msgstr "Renvoie la différence entre *x* et *y*."
#: library/decimal.rst:1477
msgid "Rounds to an integer."
msgstr ""
msgstr "Arrondit à un entier."
#: library/decimal.rst:1482
msgid "Converts a number to a string using scientific notation."
msgstr ""
msgstr "Convertit un nombre en chaîne en utilisant la notation scientifique."
#: library/decimal.rst:1489
msgid "Constants"
@ -1945,9 +2069,9 @@ msgid ""
"The constants in this section are only relevant for the C module. They are "
"also included in the pure Python version for compatibility."
msgstr ""
"Les constantes de cette section ne sont pertinentes que pour le module C. "
"Elles sont aussi incluses pour la compatibilité dans la version en Python "
"pur."
"Les constantes de cette section ne sont pertinentes que pour le module "
"implémenté en C. Elles sont incluses dans la version en Python pur pour "
"raison de compatibilité ."
#: library/decimal.rst:1495
msgid "32-bit"

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

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

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