forked from AFPy/python-docs-fr
Compare commits
10 Commits
e13701a98a
...
554192a894
Author | SHA1 | Date | |
---|---|---|---|
554192a894 | |||
af33329364 | |||
bd6abaadbb | |||
8d5ea7d2ec | |||
d8ea8e2c72 | |||
ac7b434dac | |||
6e3ce23f62 | |||
20e75e0336 | |||
4afdbf71c5 | |||
141c4ad19f |
|
@ -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
|
||||
|
|
|
@ -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 »)
|
||||
|
|
8
Makefile
8
Makefile
|
@ -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 $($*)
|
||||
|
|
|
@ -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 ""
|
||||
|
|
|
@ -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
|
@ -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."
|
||||
|
|
|
@ -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`."
|
||||
|
|
|
@ -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 d’instance *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 "
|
||||
"l’arrondi é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 "
|
||||
"l’argument est une chaîne, aucun espace ou trait de soulignement de début ou "
|
||||
"de fin n’est 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 à l’opé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"
|
||||
|
|
|
@ -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é."
|
||||
|
|
|
@ -6,13 +6,14 @@ msgstr ""
|
|||
"Project-Id-Version: Python 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-07-23 14:38+0200\n"
|
||||
"PO-Revision-Date: 2018-11-29 18:26+0100\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2023-11-26 16:20+0100\n"
|
||||
"Last-Translator: Yannick Gingras <ygingras@ygingras.net>\n"
|
||||
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.2.2\n"
|
||||
|
||||
#: library/shutil.rst:2
|
||||
msgid ":mod:`shutil` --- High-level file operations"
|
||||
|
@ -85,20 +86,20 @@ msgid ""
|
|||
"*dst* and return *dst* in the most efficient way possible. *src* and *dst* "
|
||||
"are path-like objects or path names given as strings."
|
||||
msgstr ""
|
||||
"Copie le contenu (sans métadonnées) du fichier nommé *src* dans un fichier "
|
||||
"nommé *dst* et renvoie *dst* de la manière la plus efficace possible. Les "
|
||||
"paramètres *src* et *dst* sont des objets simili-chemin ou des chaînes "
|
||||
"spécifiant des chemins."
|
||||
|
||||
#: library/shutil.rst:57
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"*dst* must be the complete target file name; look at :func:`~shutil.copy` "
|
||||
"for a copy that accepts a target directory path. If *src* and *dst* specify "
|
||||
"the same file, :exc:`SameFileError` is raised."
|
||||
msgstr ""
|
||||
"Copie le contenu (sans métadonnées) du fichier nommé *src* dans un fichier "
|
||||
"nommé *dst* et renvoie *dst*. *src* et *dst* sont des chemins sous forme de "
|
||||
"chaînes de caractères. *dst* doit être le chemin complet de la cible ; voir "
|
||||
"dans :func:`shutil.copy` pour une copie acceptant le chemin du dossier "
|
||||
"cible. Si *src* et *dst* désignent le même fichier :exc:`SameFileError` est "
|
||||
"levée."
|
||||
"*dst* doit être le nom complet du fichier cible ; consultez :func:`~shutil."
|
||||
"copy` pour une fonction de copie qui accepte un chemin de répertoire cible. "
|
||||
"Si *src* et *dst* spécifient le même fichier, lève :exc:`SameFileError`."
|
||||
|
||||
#: library/shutil.rst:61
|
||||
msgid ""
|
||||
|
@ -125,6 +126,8 @@ msgid ""
|
|||
"Raises an :ref:`auditing event <auditing>` ``shutil.copyfile`` with "
|
||||
"arguments ``src``, ``dst``."
|
||||
msgstr ""
|
||||
"Lève un :ref:`événement d’audit <auditing>` ``shutil.copyfile`` avec les "
|
||||
"arguments ``src``, ``dst``."
|
||||
|
||||
#: library/shutil.rst:72
|
||||
msgid ""
|
||||
|
@ -148,6 +151,9 @@ msgid ""
|
|||
"the file more efficiently. See :ref:`shutil-platform-dependent-efficient-"
|
||||
"copy-operations` section."
|
||||
msgstr ""
|
||||
"Les appels système de copie rapide spécifiques à la plate-forme peuvent être "
|
||||
"utilisés en interne afin de copier le fichier plus efficacement. Voir la "
|
||||
"section :ref:`shutil-platform-dependent-efficient-copy-operations`."
|
||||
|
||||
#: library/shutil.rst:88
|
||||
msgid ""
|
||||
|
@ -158,7 +164,6 @@ msgstr ""
|
|||
"`copyfile` sont le même fichier."
|
||||
|
||||
#: library/shutil.rst:96
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Copy the permission bits from *src* to *dst*. The file contents, owner, and "
|
||||
"group are unaffected. *src* and *dst* are path-like objects or path names "
|
||||
|
@ -170,26 +175,28 @@ msgid ""
|
|||
"platform, and it is asked to do so, it will do nothing and return."
|
||||
msgstr ""
|
||||
"Copie les octets de permission de *src* vers *dst*. Le contenu du fichier, "
|
||||
"le propriétaire et le groupe ne sont pas modifiés. *src* et *dst* sont des "
|
||||
"chaînes spécifiant les chemins. Si *follow_symlinks* est faux, et *src* et "
|
||||
"*dst* sont des liens symboliques, :func:`copymode` tente de modifier le mode "
|
||||
"de *dst* (au lieu du fichier vers lequel il pointe). Cette fonctionnalité "
|
||||
"n'est pas disponible sur toutes les plateformes ; voir :func:`copystat` pour "
|
||||
"plus d'informations. Si :func:`copymode` ne peut pas modifier les liens "
|
||||
"symboliques sur la plateforme cible alors que c'est demandé, il ne fait rien."
|
||||
"le propriétaire et le groupe ne sont pas modifiés. *src* et *dst* sont des :"
|
||||
"term:`objets simili-chemin <path-like object>` ou des chaînes spécifiant les "
|
||||
"chemins. Si *follow_symlinks* est faux, et *src* et *dst* sont des liens "
|
||||
"symboliques, :func:`copymode` tente de modifier le mode de *dst* (au lieu du "
|
||||
"fichier vers lequel il pointe). Cette fonctionnalité n'est pas disponible "
|
||||
"sur toutes les plateformes ; voir :func:`copystat` pour plus d'informations. "
|
||||
"Si :func:`copymode` ne peut pas modifier les liens symboliques sur la "
|
||||
"plateforme cible alors que c'est demandé, il ne fait rien."
|
||||
|
||||
#: library/shutil.rst:179
|
||||
msgid ""
|
||||
"Raises an :ref:`auditing event <auditing>` ``shutil.copymode`` with "
|
||||
"arguments ``src``, ``dst``."
|
||||
msgstr ""
|
||||
"Lève un :ref:`événement d’audit <auditing>` ``shutil.copymode`` avec les "
|
||||
"arguments ``src``, ``dst``."
|
||||
|
||||
#: library/shutil.rst:108
|
||||
msgid "Added *follow_symlinks* argument."
|
||||
msgstr "L'argument *follow_symlinks* a été ajouté."
|
||||
|
||||
#: library/shutil.rst:113
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Copy the permission bits, last access time, last modification time, and "
|
||||
"flags from *src* to *dst*. On Linux, :func:`copystat` also copies the "
|
||||
|
@ -201,8 +208,8 @@ msgstr ""
|
|||
"la dernière modification et les drapeaux (*flags* en anglais) de *src* vers "
|
||||
"*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 ""
|
||||
|
|
|
@ -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 d’archive n’étaient pas "
|
||||
"prises en charge."
|
||||
|
||||
#: library/zipimport.rst:40
|
||||
msgid ""
|
||||
|
|
Loading…
Reference in New Issue
Block a user