diff --git a/.gitignore b/.gitignore
index 44b8e1487..288948351 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
.tx/**/*.po
venv/
.idea/
+.DS_Store
diff --git a/.travis.yml b/.travis.yml
index b036c12b0..a032f15cf 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,11 +1,14 @@
language: python
-python: 3.6
+dist: xenial
+python: 3.7
before_install:
- sudo apt-get update
- sudo apt-get install -y hunspell hunspell-fr-comprehensive
install:
- - pip install pospell
+ - pip install pospell "powrap>=0.3.0"
- pospell --version
+ - powrap --version
script:
+ - powrap --check --quiet **/*.po
- pospell -p dict -l fr_FR **/*.po
- - make CPYTHON_CLONE=/tmp/cpython/ COMMIT=902196d867
+ - make CPYTHON_CLONE=/tmp/cpython/ COMMIT=15e7d2432294ec46f1ad84ce958fdeb9d4ca78b1
diff --git a/Makefile b/Makefile
index c060f0220..013b3813a 100644
--- a/Makefile
+++ b/Makefile
@@ -4,6 +4,9 @@
#
# - make # Automatically build an html local version
# - make todo # To list remaining tasks
+# - make verifs # To check for correctness: wrapping, spelling
+# - make powrap # To check for wrapping
+# - make pospell # To check for spelling
# - make merge # To merge pot from upstream
# - make fuzzy # To find fuzzy strings
# - make progress # To compute current progression
@@ -42,10 +45,12 @@ $(SPHINX_CONF):
.PHONY: upgrade_venv
upgrade_venv:
$(MAKE) -C $(CPYTHON_CLONE)/Doc/ VENVDIR=$(VENV) PYTHON=$(PYTHON) venv
+ $(VENV)/bin/pip install -U pip potodo powrap pospell
-$(VENV)/bin/activate:
+$(VENV)/bin/activate: $(SPHINX_CONF)
$(MAKE) -C $(CPYTHON_CLONE)/Doc/ VENVDIR=$(VENV) PYTHON=$(PYTHON) venv
+ $(VENV)/bin/python3 -m pip install Sphinx==2.2
.PHONY: progress
@@ -55,9 +60,29 @@ progress:
$(shell msgcat *.po */*.po | grep -c '^msgid')
+$(VENV)/bin/potodo: $(VENV)/bin/activate
+ $(VENV)/bin/pip install potodo
+
+$(VENV)/bin/powrap: $(VENV)/bin/activate
+ $(VENV)/bin/pip install powrap
+
+$(VENV)/bin/pospell: $(VENV)/bin/activate
+ $(VENV)/bin/pip install pospell
+
.PHONY: todo
-todo:
- potodo --github python/python-docs-fr
+todo: $(VENV)/bin/potodo
+ $(VENV)/bin/potodo
+
+.PHONY: verifs
+verifs: powrap pospell
+
+.PHONY: powrap
+powrap: $(VENV)/bin/powrap
+ $(VENV)/bin/powrap --check --quiet *.po */*.po
+
+.PHONY: pospell
+pospell: $(VENV)/bin/pospell
+ $(VENV)/bin/pospell -p dict -l fr_FR *.po */*.po
.PHONY: merge
merge: upgrade_venv
@@ -84,5 +109,5 @@ endif
.PHONY: fuzzy
-fuzzy:
- potodo --github python/python-docs-fr -f
+fuzzy: $(VENV)/bin/potodo
+ $(VENV)/bin/potodo -f
diff --git a/README.rst b/README.rst
index 2c182e566..13c5e1e30 100644
--- a/README.rst
+++ b/README.rst
@@ -1,241 +1,429 @@
-French Translation of the Python Documentation
-==============================================
+Traduction française de la documentation Python
+===============================================
-.. image:: https://travis-ci.org/python/python-docs-fr.svg?branch=3.7
- :target: https://travis-ci.org/python/python-docs-fr
+|build| |progression|
-**Translated: 36%**
+.. |build| image:: https://travis-ci.org/python/python-docs-fr.svg?branch=3.7
+ :target: https://travis-ci.org/python/python-docs-fr
+ :width: 45%
-Documentation Contribution Agreement
-------------------------------------
+.. |progression| image:: https://img.shields.io/badge/dynamic/json.svg?label=fr&query=%24.fr&url=http%3A%2F%2Fgce.zhsj.me%2Fpython/newest
+ :width: 45%
-NOTE REGARDING THE LICENSE FOR TRANSLATIONS: Python's documentation is
-maintained using a global network of volunteers. By posting this
-project on Transifex, Github, and other public places, and inviting
-you to participate, we are proposing an agreement that you will
-provide your improvements to Python's documentation or the translation
-of Python's documentation for the PSF's use under the CC0 license
-(available at
-https://creativecommons.org/publicdomain/zero/1.0/legalcode). In
-return, you may publicly claim credit for the portion of the
-translation you contributed and if your translation is accepted by the
-PSF, you may (but are not required to) submit a patch including an
-appropriate annotation in the Misc/ACKS or TRANSLATORS file. Although
-nothing in this Documentation Contribution Agreement obligates the PSF
-to incorporate your textual contribution, your participation in the
-Python community is welcomed and appreciated.
-You signify acceptance of this agreement by submitting your work to
-the PSF for inclusion in the documentation.
+Accord de contribution à la documentation
+-----------------------------------------
+NOTE CONCERNANT LA LICENCE POUR LES TRADUCTIONS : La documentation de Python
+est maintenue grâce à un réseau mondial de bénévoles. En publiant ce projet
+sur Transifex, Github, et d'autres endroits publics, et vous invitant
+à participer, la PSF vous enjoint à accepter cet accord qui stipule que vous
+acceptez de fournir vos améliorations à la documentation de Python ou à la
+traduction de la documentation de Python pour le bénéfice de la PSF sous licence
+CC0 (disponible à l'adresse
+https://creativecommons.org/publicdomain/zero/1.0/legalcode). En retour, vous
+pouvez demander à ce que votre contribution à la documentation soit
+publiquement reconnue, et si votre traduction est acceptée par la
+PSF, vous pouvez (mais vous n'êtes pas obligé) soumettre un correctif incluant
+une modification appropriée dans le fichier Misc/ACKS ou TRANSLATORS. Bien que
+rien dans le présent *accord de contribution* à la documentation n'oblige la PSF
+à incorporer votre contribution textuelle, votre participation à la communauté
+Python est bienvenue et appréciée.
-Contributing to the Translation
--------------------------------
+En soumettant votre travail à la PSF pour inclusion dans la documentation,
+vous signifiez votre acceptation de cet accord.
-How to Contribute
-~~~~~~~~~~~~~~~~~
-You can contribute using:
+Contribuer à la traduction
+--------------------------
+
+Comment contribuer
+~~~~~~~~~~~~~~~~~~
+
+Vous pouvez contribuer en utilisant :
-- github (preferred solution)
-- `transifex `_
-- Or just by opening `an issue on github `_
+- Des *pull requests* Github (solution recommandée).
+- En envoyant un patch à la liste `traductions `_.
-Contributing using Github
-~~~~~~~~~~~~~~~~~~~~~~~~~
+Contribuer en utilisant Github
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Prerequisites:
+Prérequis :
-- A `github account `_.
-- ``git`` `installed `_ (for windows, see
+- Un compte `Github `_.
+- ``git`` `installé `_ (pour Windows, voir
https://gitforwindows.org/).
-- A ``.po`` file editor (Use `poedit `_
- if you don't already have one).
+- Un éditeur de fichier ``.po`` (utilisez `poedit `_
+ si vous n'en avez pas déjà un).
-Let's start:
+Commencer :
-You'll need to fork the `python-docs-fr
-`_ clicking its ``Fork``
-button. This creates a copy of the whole project on your github
-account: a place where you have the rights to do modifications.
+Vous aurez besoin de *forker* le dépôt des sources `python-docs-fr
+`_ en cliquant sur son bouton
+``Fork``. Ceci crée une copie du projet sur votre compte Github : un endroit
+où vous avez le droit de faire des modifications.
-Step by step:
+Étape par étape :
.. code-block:: bash
- # Git clone your github fork using ssh (replace JulienPalard):
- git clone git@github.com:JulienPalard/python-docs-fr.git
+ # Clonez votre fork Github avec `git` en utilisant ssh :
+ git clone git@github.com/VOTRE_NOM_DE_COMPTE_GITHUB/python-docs-fr.git
+ # *OU* HTTPS :
+ git clone https://github.com/VOTRE_NOM_DE_COMPTE/python-docs-fr.git
- # Go to the cloned directory:
+ # Allez dans le répertoire cloné :
cd python-docs-fr/
- # Add the upstream (the public repository) using HTTPS (won't ask for password):
+ # Ajoutez le dépot upstream (le dépôt public) en utilisant HTTPS (git
+ # ne demandera pas de mot de passe ainsi) :
+ # Ceci permet à *git* de savoir quoi/où est *upstream*
git remote add upstream https://github.com/python/python-docs-fr.git
-All the translations must be made on the latest release.
-We never translate on an oldest version, by example, the latest python release
-is python 3.7, we don't want to translate directly on the python 3.5 release.
-If needed translations would be backported on the oldest versions by the
-`documentation team `.
+Ensuite, vous devez trouver un fichier sur lequel travailler.
+Vous pouvez utiliser `potodo `_, un outil
+fait pour trouver des fichiers ``po`` à traduire.
+Installez-le à l'aide de *pip* (``pip install potodo``) dans un environnement
+``python3.6`` ou plus.
+Lancez ensuite la commande ``potodo`` dans votre clone local.
+Vous pouvez choisir n'importe quel fichier non réservé dans la liste
+renvoyée par la commande.
+
+**Nous vous recommandons de ne pas commencer avec un fichier de ``c-api``
+car c'est une partie très technique.**
+
+Une fois que vous avez choisi un fichier sur lequel travailler, veuillez
+ouvrir un `ticket sur Github `_ dans
+le format ``Je travaille sur RÉPERTOIRE/FICHIER.po``. Ceci permet à ``potodo``
+de détecter via l'API Github les fichiers ``.po`` réservés dans les tickets
+et les *pull requests*.
-Now you're ready to start a work session, each time you'll start a new task, start here:
+Vous êtes maintenant prêt à commencer une session de travail. Chaque
+fois que vous commencerez un nouveau fichier, commencez ainsi :
.. code-block:: bash
- # To work, we'll need a branch, based on an up-to-date (freshly fetched)
- # upstream/3.7 branch, let's say we'll work on glossary so we name
- # the branch "glossary":
+ # Pour travailler, nous aurons besoin d'une branche, basée sur une version à jour
+ # (fraîchement récupérée) de la branche upstream/3.7. Nous appellerons notre branche
+ # « library-sys » mais vous pouvez appeller la vôtre comme vous voulez.
+ # En général, vous nommez une branche en fonction du fichier sur lequel vous travaillez.
+ # Par exemple, si vous travaillez sur « library/venv.po », vous pouvez nommer votre
+ # branche « library-venv ».
+
+ # Mettez à jour votre version locale
git fetch upstream
- git checkout -b glossary upstream/3.7
-
- # You can now work on the file, typically using poedit,
- poedit directory/file.po
-
- # When everything is clear (syntax errors from Sphinx, html rendering,
- # semantics, typography),
- # you can commit your work with a nice explicit message:
- git commit -a -m "Working on glossary."
-
- # Then push your modifications to your github clone,
- # as they are ephemeral branches, let's not configure git to track them all,
- # "origin HEAD" is a "special" syntax to say "Push on origin,
- # on a branch with the same name as the local one",
- # it's nice as it's exactly what we want:
- git push origin HEAD
-
- # The previous command will print you a link to open a PR on github.
- # If you missed it, just go to
- # https://github.com/python/python-docs-fr/ and a nice "Compare & pull request"
- # button should appear after a few seconds telling you can ask for a pull request.
-
- # Now someone is reviewing your modifications, and you'll want to fix their
- # findings, get back to your branch
- # (in case you started something else on another branch):
+ # Créez une nouvelle branche nommée « library-sys » basée sur « upstream/3.7 ».
+ git checkout -b library-sys upstream/3.7
+
+ # Vous pouvez maintenant travailler sur le fichier, typiquement en utilisant poedit.
+ # Bien sûr, remplacez « library/sys.po » par le fichier que vous avez choisi précédemment
+ poedit library/sys.po
+
+ # Configurez poedit pour « ne pas préserver le formatage des
+ # fichiers existants » (décochez la case), et indiquez une longueur
+ # de ligne maximum de 79 caractères.
+
+ # Quand vous avez fini de traduire, vous pouvez lancer *pospell* (pip install pospell).
+ # Cet outil a été conçu pour vérifier si vous n'avez pas d'erreurs de français.
+ # Vous pouvez exécuter la commande suivante : pospell -p dict -l fr_FR **/*.po pour vérifier
+ # tous les fichiers ou remplacer **/*.po par le fichier que vous traduisez (recommandé).
+ # Une liste blanche de certains termes techniques ou de noms propres, comme « Guido »,
+ # « C99 » ou « sérialisable », est stockée dans le fichier « dict » à la racine du projet.
+ # Vous pouvez bien sûr y ajouter une entrée si nécessaire.
+ # pospell -p dict library/sys.po
+
+ # Vous pouvez ensuite lancer *powrap* (pip install powrap) qui va reformater le fichier
+ # que avez vous avez modifié à la longueur de ligne correcte de `79`.
+ # Exécutez cette commande : `powrap **/*.po`, ou remplacez `**/*.po` par le fichier
+ # que vous traduisez
+ powrap library/sys.po
+
+ # C'est le moment de git add et git commit
+ git add -p # C'est l'occasion de se relire, mais git add -u c'est bien aussi
+ # ou même git add library/sys.po
+
+ git commit -m "Traduction de library/sys.po" # Ou un autre message plus inspiré :)
+
+ # Poussez ensuite vos modifications sur votre fork Github.
+ # Le -u n'est utile qu'une fois pour que votre client git se souvienne que cette
+ # branche est liée à votre fork Github (et donc qu'un futur `git pull` sache quoi
+ # tirer)
+ git push -u origin
+
+ # La commande précédente vous affichera un lien pour ouvrir une pull request sur
+ # Github. Si vous l'avez manqué, allez simplement sur https://github.com/python/python-docs-fr/
+ # et un joli bouton « Compare & pull request » devrait apparaître au bout de quelques secondes
+ # vous indiquant que vous pouvez demander une pull request.
+
+ # À partir de là, quelqu'un passera en revue vos modifications, et vous voudrez
+ # probablement corriger les erreurs qu'ils auront trouvé. Retournez alors sur votre
+ # branche (au cas où vous auriez commencé quelque chose d'autre sur une autre branche) :
git checkout glossary
- # Fix the issues, then commit again:
- git commit -a -m "glossary: small fixes."
- git push origin HEAD
+ git pull # pour rapatrier les modifications que vous auriez accepté
+ # sur l'interface web.
+ # Réglez les problèmes, puis commitez à nouveau :
+ git commit -a -m "glossaire : petites corrections".
+ git push
+
+
+Vous avez peut-être remarqué que cela ressemble à un triangle, avec un
+segment manquant :
+
+- Vous récupérez depuis *upstream* (le dépôt commun public sur Github)
+- Vous poussez sur *origin* (votre clone sur Github)
+
+Donc oui, c'est le travail de quelqu'un d'autre d'ajouter le dernier segment,
+de votre *origin* au *upstream* public, pour « boucler la boucle ». C'est le
+rôle des personnes qui *fusionnent* les *pull requests* après les avoir relues.
+
+Vous avez peut-être aussi remarqué que vous n'avez jamais commité sur une
+branche de version (``3.6``, ``3.7``, etc.), seulement récupéré les
+modifications à partir d'elles. Considérez-les comme étant en lecture seule,
+vous éviterez les problèmes.
+
+Avant de valider, vous devriez utiliser `grammalecte
+`_ pour vérifier vos traductions.
+
+
+Toutes les traductions doivent être faites sur la dernière version.
+Nous ne traduisons jamais sur une version plus ancienne. Par exemple,
+si la dernière version de python est Python 3.7, nous ne voulons pas
+traduire directement sur la version python 3.5.
+Si nécessaire, les traductions seraient rétroportées sur les versions
+les plus anciennes par l'`équipe de documentation
+`_.
+
+
+Que traduire ?
+~~~~~~~~~~~~~~
+
+Vous pouvez commencer par des tâches faciles comme réviser les entrées
+*fuzzy* pour aider à garder la documentation à jour (trouvez les entrées
+*fuzzy* l'aide de `make fuzzy`).
+
+Vous pouvez également relire les entrées déjà traduites, et enfin
+traduire celles qui ne sont pas traduites (trouvez-les à l'aide de
+`make todo`)...
+
+- Ne traduisez pas le contenu de ``:ref :...`` et ``:term :...``.
+- Mettez les mots anglais, si vous devez les utiliser, en *italique*
+ (entourés par des astérisques).
+- ``::`` à la fin de certains paragraphes doivent être traduits en `` :
+ ::`` en français pour placer l'espace avant les deux-points.
+- Si vous traduisez un titre de lien, veuillez traduire le lien aussi.
+ (surtout si c'est un lien Wikipédia et que l'article a une traduction).
+ Si aucune traduction de la cible n'existe, ne traduisez pas le titre.
+- Les guillemets français ``«`` et ``»`` ne sont pas identiques aux
+ guillemets anglais ``"``. Cependant, Python utilise les guillemets
+ anglais comme délimiteurs de chaîne de caractères. Il convient donc de
+ traduire les guillemets mais pas les délimiteurs de chaîne.
+
+Le cas de « --- »
+~~~~~~~~~~~~~~~~~
+La version anglaise utilise une chose nommée `smartquotes
+`_, qui
+essaie d'être intelligente, qui fonctionne en anglais, mais cause
+rapidement des problèmes dans d'autres langues.
+Nous l'avons donc désactivée.
-You may have noted that this looks like a triangle, with a missing segment:
+Les *smartquotes* sont également responsables de la transformation de
+``--`` en *en-dash* (``-``), de ``-----`` en *em-dash* (``—``), et de
+``...`` en ``…``.
-- You're fetching from upstream (public common repo on github)
-- You're pushing to origin (your clone on github)
+Comme nous n'avons pas de *smartquotes*, nous devrons également « traduire »
+cela manuellement, donc si vous voyez ``---`` en anglais, vous devez le
+transformer en ``—`` en français.
-So yes it's the work of someone to add the last segment, from your
-origin to the public upstream, to "close the loop", that's the role of
-the people who merges pull requests after proofreading them.
-You may also have noted you never ever commit on a version branch
-(``3.6``, ``3.7``, ...), only pull from them, consider them read-only
-you'll avoid problems.
+Le cas de « :: »
+~~~~~~~~~~~~~~~~
-Before commiting, you should use `grammalecte
-`_ to check for your translations.
+Du point de vue du langage *reStructuredText* (ou *rst*) utilisé dans la documentation :
+=> ``::`` collé à la fin d'un mot signifie « affiche ``:`` et introduit un bloc de code »,
+mais un ``::`` après une espace signifie « introduit juste un bloc de code ».
-What to translate
-~~~~~~~~~~~~~~~~~
+Donc, dans du *rst*, en anglais, nous voyons soit « bla bla:: », soit « bla bla. :: ».
-You can start with easy tasks like reviewing fuzzy entries to help
-keeping the documentation up to date (find them using ``make fuzzy``).
+En français, nous mettons une espace insécable devant nos deux-points, comme :
+« Et voilà : ».
-You can also proofread already translated entries, and finally
-translate untranslated ones (find them using ``make todo``)..
+L'utilisation de l'espace insécable en *rst* est naturelle, vous n'aurez qu'à
+écrire ``Et voilà ::``. Le ``::`` n'est pas précédé d'un espace normal,
+il affichera les deux-points et introduira le bloc de code, et c'est bon.
-- Do not translate content of ``:ref:...`` and ``:term:...``
-- Put english words, if you have to use them, in *italics* (surrounded
- by stars).
-- ``::`` at the end of some paragraphs have to be translated to `` :
- ::`` in French to place the space before the column.
-- If you translate a link title, please translate the link too
- (typically if it's Wikipedia and the article has a translation). If
- no translation of the target exists, do not translate the
- title.
+Si vous ne savez pas comment taper une espace insécable, il y a une astuce :
+lisez celle de la touche *compose* dans la section suivante ; sinon :
+=> Traduisez ``deux-points deux-points`` par
+``espace deux-points espace deux-points deux-points``.
-The case of "::"
-~~~~~~~~~~~~~~~~
+Les caractères ``espace deux-points`` sont restitués tel quel,
+c'est du français correct, et la balise ``espace deux-points deux-points`` qui
+suit n'affichera rien et introduira le bloc de code.
-From the reStructuredText point of view, ``::`` glued at the end of a
-word means "output ``:`` and introduce a code block", but a ``::``
-after a space means "Just introduce a code block".
+Dans un ``.po`` ça donne : `` : ::``
-So in english rst, we see either ``blah blah::`` or ``blah blah. ::``.
+Non ! Ça n'insère pas magiquement une espace insécable donc ce n'est toujours pas
+vraiment du français valide.
-In french, we're putting a no-break space before our columns, like:
-``Et voilà :``.
+Oui ! il vaut mieux apprendre à taper les espaces insécables.
-Using no-break space in rst is natural, you'll simply write ``Et
-voilà ::``, as the ``::`` is not precedded by a normal space it
-will output the column and introduce the code block, you're done.
-If you don't know how to type a no-break space there's a trick,
-translate column column by space, column, space, column column. the
-"space column" will render your space and your column as french needs,
-and the trailing "space column column" will output nothing and
-introduce the code block. No it does not magically inserts a no-break
-space, so it's still not really valid french. Yes, better learn how to
-type no-break space.
+Utilisation du futur
+~~~~~~~~~~~~~~~~~~~~
+Dans la description du comportement de Python (au sens large, c'est-à-dire
+l'interpréteur lui-même mais aussi toutes les bibliothèques), la version
+originale utilise souvent le futur : « if you do this, il will produce that … ».
+En français, l'utlisation du présent convient tout à fait et le présent est
+souvent plus facile à lire : « si vous faites ceci, il se produit cela … ».
+On ne conserve le futur que si la deuxième proposition se situe réellement
+dans le futur (par exemple, on peut penser qu'un processus de compilation n'est
+pas immédiat) ou pour des raisons de concordance des temps.
-Where to get help
-~~~~~~~~~~~~~~~~~
+Traduction de *should*
+~~~~~~~~~~~~~~~~~~~~~~
+
+La version originale est très polie envers le lecteur ; elle lui intime
+rarement des obligations, préférant employer « you should ». Cependant, en
+français, il est d'usage d'être plus direct pour être correctement compris :
+« vous devez ». *Vous devriez* est en effet généralement compris comme quelque
+chose dont l'on peut de temps en temps se passer, alors que c'est très
+rarement le cas pour les « you should » de cette documentation.
+
+Comment saisir des em-dash, des ellipses, des guillemets français, ou des espaces insécables ?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Malheureusement, cela dépend de votre système d'exploitation et de votre clavier.
+
+=> Sous Linux/Unix/\*BSD (tel OpenBSD), vous pouvez utilisez une
+`Touche de composition `_,
+c'est facile à configurer à l'aide de l'outil graphique de configuration de votre
+clavier ou via ``dpkg-reconfigure keyboard-configuration``
+(pour Ubuntu ou Debian et distributions assimilées)
+
+À minima, vous pouvez configurer votre fichier '~/.Xmodmap' pour ajouter l'équivalent de :
+
+.. code-block:: shell
+
+ # key Compose
+ keycode 115 = Multi_key
+
+
+Utilisez ``xev`` pour connaitre la bonne correspondance de la touche que vous
+voulez assigner !
+
+Ensuite, dans votre fichier '~/.xsession', ajoutez :
-The coordinator for this translation is `mdk `_.
+.. code-block:: shell
-Feel free to ask your questions on the ``#python-fr`` channel on `freenode
-`_ (does not require registration) or the
-`AFPy traductions mailing list `_.
+ # Gestion des touches clavier
+ xmodmap $HOME/.Xmodmap
-Translation Resources
----------------------
+Sous X, avec un bureau graphique, tel que Gnome, ou Xfce, il faut aller modifier
+dans les paramètres > clavier > Disposition : puis 'Touche composée'.
+Pour finir, redémarrez votre session.
-- `Le Grand Dictionnaire Terminologique `_
-- IRC channel `#python-fr `_ on freenode.
-- The `liste traductions `_.
-- The `doc-sig mailing list
- `_.
-- `Glossaire traduc.org `_
-- `Glossaires et Dictionnaires of traduc.org
- `_
-- `glossary.po `_, as it's
- already translated.
-- `deepl.com/translator `_
+=> Sous Windows, vous
+pouvez utiliser `wincompose `_.
+Avec une touche de composition (personnellement j'utilise ``alt-gr``,
+vous pouvez aussi utiliser ``verr maj 🔒``), vous pouvez utiliser les
+compositions suivantes :
-Glossary
---------
+- Composer ``<`` ``<`` donne ``« ``
+- Composer ``>`` ``>`` donne `` »``
+- Composer espace espace donne une espace insécable
+- Composer ``.`` ``.`` ``.`` donne ``…``
-For consistency in our translations, here are some propositions and
-reminders for frequent terms you'll have to translate, don't hesitate
-to open an issue if you disagree.
+Comme vous l'avez noté, presque toutes les compositions sont faciles
+à retenir, vous pouvez donc essayer les autres et elles devraient tout
+simplement fonctionner :
-To easily find how a term is already translated in our documentation,
-you may use
+- Composer ``C`` ``=`` donne ``€``
+- Composer ``1`` ``2`` donne ``½``
+- Composer ``'`` ``E`` donne ``É``
+- … …
+
+
+Où obtenir de l'aide ?
+~~~~~~~~~~~~~~~~~~~~~~
+
+Le coordinateur de cette traduction est `mdk `_.
+
+N'hésitez pas à poser vos questions sur le canal ``#python-fr`` sur `freenode
+`_ (ne nécessite pas d'inscription) ou sur la
+`liste de diffusion des traductions de l'AFPy `_.
+
+
+Ressources de traduction
+------------------------
+
+- le canal IRC `#python-fr `_ sur freenode ;
+- la `liste traductions AFPy `_ ;
+- la `liste de diffusion doc-sig
+ `_ ;
+- les `glossaires et dictionnaires de traduc.org
+ `_, en particulier le
+ `grand dictionnaire terminologique `_
+ de l'Office québécois de la langue française ;
+- le `glossaire Python `_, car
+ il est déjà traduit ;
+- le `guide stylistique pour le français de localisation des produits Sun
+ `_ donne
+ beaucoup de conseils pour éviter une traduction trop mot à mot ;
+- `deepl.com/translator `_ ;
+- `Petites leçons de typographie `_,
+ résumé succint de typographie, utile pour apprendre le bon usage des majuscules,
+ des espaces, etc.
+
+
+Glossaire
+---------
+
+Afin d'assurer la cohérence de nos traductions, voici quelques propositions et
+rappels pour les termes fréquents à traduire, n'hésitez pas à ouvrir un ticket
+si vous n'êtes pas d'accord.
+
+Pour trouver facilement comment un terme est déjà traduit dans notre documentation,
+vous pouvez utiliser
`find_in_po.py `_.
-========================== ===========================================
-Term Proposed Translation
-========================== ===========================================
+========================== ===============================================
+Terme Traduction proposée
+========================== ===============================================
-like -compatible
abstract data type type abstrait
-argument argument (Don't mix with parameter)
+argument argument (à ne pas confondre avec *paramètre*)
backslash antislash, *backslash*
bound lier
bug bogue, *bug*
built-in native
call stack pile d'appels
debugging débogage
-deep copy copie récursive (préféré), ou copie profonde.
+deep copy copie récursive (préféré), ou copie profonde
double quote guillemet
-e.g. e.g. (pour *exempli gratia*)
+deprecated obsolète
+-like -compatible
+e.g. p. ex. (on n'utilise pas l'anglicisme « e.g. »,
+ lui-même issu du latin *exempli gratia*).
+ On sépare les deux mots par une espace
+ insécable pour éviter les retours à la ligne
+ malheureux.
+export exportation
+expression expression
garbage collector ramasse-miettes
+getter accesseur
+i.e. c.-à-d. (on n'utilise pas l'anglicisme « i.e »,
+ lui-même issu du latin *id est*)
identifier identifiant
immutable immuable
+import importation
installer installateur
interpreter interpréteur
library bibliothèque
@@ -243,47 +431,51 @@ list comprehension liste en compréhension (liste en intension est
valide, mais nous ne l'utilisons pas)
little-endian, big-endian `petit-boutiste, gros-boutiste
`_
+mixin type type de mélange
mutable muable
-namespace *namespace*, espace de noms
+namespace espace de nommage
+ (sauf pour le XML où c'est espace de noms)
parameter paramètre
+pickle (v.) sérialiser
prompt invite
raise lever
regular expression expression rationnelle, expression régulière
-return renvoie, donne (on évite
- "retourne" qui pourrait porter à confusion).
-simple quote guillemet simple, apostrophe (apostrophe
- is to glue, guillemet is to surround)
-socket *socket*
+return renvoie, donne (on évite « retourne » qui
+ pourrait porter à confusion).
+setter mutateur
+simple quote guillemet simple
+socket connecteur ou interface de connexion
statement instruction
subprocess sous-processus
thread fil d'exécution
underscore tiret bas, *underscore*
-expression expression
-========================== ===========================================
+========================== ===============================================
-Project History
----------------
+Historique du projet
+--------------------
-This project was started `around 2012
-`_
-by `afpy `_ members, in 2017 this project
-became the official french Python documentation translation thanks to
-`PEP 545 `_.
+Ce projet a été lancé `vers 2012
+`_
+par des membres de l'`AFPy `_. En 2017 ce projet
+est devenu la traduction officielle de la documentation Python en français
+grâce à la `PEP 545 `_.
-Simplify git diffs
-------------------
+Simplifier les diffs git
+------------------------
-Git diffs are often crowded with useless line number changes, like:
+Les diffs git sont souvent encombrés de changements inutiles de numéros
+de ligne, comme :
.. code-block:: diff
-#: ../Doc/library/signal.rst:406
+#: ../Doc/library/signal.rst:408
-To tell git they are not usefull information, you can do the following
-after ensuring ``~/.local/bin/`` is in your ``PATH``.
+Pour dire à git que ce ne sont pas des informations utiles, vous pouvez faire
+ce qui suit après vous être assuré que ``~/.local/bin/`` se trouve dans votre
+``PATH``.
.. code-block:: bash
@@ -300,9 +492,9 @@ after ensuring ``~/.local/bin/`` is in your ``PATH``.
Maintenance
-----------
-All those snippets are to run from the root of a ``python-docs-fr``
-clone, and some expect to find an up-to-date CPython clone near to it,
-like:
+Toutes ces commandes doivent être exécutées à partir de la racine d'un clone
+de ``python-docs-fr``, et certains s'attendent à trouver un clone de CPython
+à jour à proximité, comme :
.. code-block:: bash
@@ -310,56 +502,66 @@ like:
├── python-docs-fr/
└── cpython/
-To clone CPython you may use:
+Pour cloner CPython, vous pouvez utiliser :
.. code-block:: bash
git clone --depth 1 --no-single-branch https://github.com/python/cpython.git
-This avoids to download the whole history (not usefull to build
-documentation) but still fetches all branches.
+Ceci évite de télécharger tout l'historique (inutile pour générer la
+documentation) mais récupère néanmoins toutes les branches.
-Merge pot files from CPython
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Fusionner les fichiers *pot* de CPython
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
make merge
-Find fuzzy strings
-~~~~~~~~~~~~~~~~~~
+Trouver les chaînes de caractères *fuzzy*
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
make fuzzy
-Run a test build locally
-~~~~~~~~~~~~~~~~~~~~~~~~
+Lancer un *build* en local
+~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: bash
make
-Synchronize translation with Transifex
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Synchroniser la traduction avec Transifex
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Vous aurez besoin de ``transifex-client`` et ``powrap``,
+depuis PyPI.
-You'll need the ``transifex-client`` and ``powrap``
-from Pypi.
+Vous devrez configurer ``tx`` via ``tx init`` si ce n'est déjà fait.
-You'll need to configure ``tx`` via ``tx init`` if not already done.
+Propagez d'abord les traductions connues localement :
.. code-block:: bash
- pomerge --from-files **/*.po
- tx pull -f
- pomerge --to-files **/*.po
+ pomerge --no-overwrite --from-files **/*.po --to-files **/*.po
+ powrap --modified
+ git commit -m "Propagating known translations."
+
+
+Ensuite récupérez les changements depuis Transifex :
+
+.. code-block:: bash
+
+ tx pull -f --parallel
pomerge --from-files **/*.po
git checkout -- .
- pomerge --to-files **/*.po
+ pomerge --no-overwrite --mark-as-fuzzy --to-files **/*.po
powrap --modified
+ git add -p
git commit -m "tx pull"
- tx push -t -f
+ tx push -t -f --no-interactive --parallel
diff --git a/TRANSLATORS b/TRANSLATORS
index 96b202396..0996715ac 100644
--- a/TRANSLATORS
+++ b/TRANSLATORS
@@ -9,3 +9,7 @@ Mickaël Bergem
Vincent Poulailleau
Jules Lasne
Mathieu Dupuy
+Vivien Lambert
+Andy Kwok
+Aya Keddam
+Antoine Wecxsteen
diff --git a/about.po b/about.po
index 5e5d11542..701509cad 100644
--- a/about.po
+++ b/about.po
@@ -88,4 +88,4 @@ msgid ""
"Python has such wonderful documentation -- Thank You!"
msgstr ""
"Ce n'est que grâce aux suggestions et contributions de la communauté Python "
-"que Python a une documentation si merveilleuse -- Merci !"
+"que Python a une documentation si merveilleuse — Merci !"
diff --git a/bugs.po b/bugs.po
index b19c8cd7d..90492aa42 100644
--- a/bugs.po
+++ b/bugs.po
@@ -5,19 +5,19 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
-"PO-Revision-Date: 2018-07-31 19:26+0200\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2019-03-11 12:59+0100\n"
+"PO-Revision-Date: 2019-08-23 09:13+0200\n"
+"Last-Translator: Antoine Wecxsteen\n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.6\n"
#: ../Doc/bugs.rst:5
msgid "Dealing with Bugs"
-msgstr "S'attaquer aux bugs"
+msgstr "S'attaquer aux bogues"
#: ../Doc/bugs.rst:7
msgid ""
@@ -25,9 +25,9 @@ msgid ""
"for stability. In order to maintain this reputation, the developers would "
"like to know of any deficiencies you find in Python."
msgstr ""
-"Python est un langage de programmation mature réputé pour sa stabilité. Afin "
-"de maintenir cette réputation, les développeurs souhaitent connaître toute "
-"déficience que vous pourriez rencontrer dans Python."
+"Python est un langage de programmation robuste réputé pour sa stabilité. "
+"Afin de maintenir cette réputation, les développeurs souhaitent connaître "
+"tout problème que vous pourriez rencontrer dans Python."
#: ../Doc/bugs.rst:11
msgid ""
@@ -35,9 +35,9 @@ msgid ""
"Python as it streamlines the process and involves less people. Learn how to :"
"ref:`contribute `."
msgstr ""
-"Il est parfois plus rapide de réparer les bugs soi-même et d'en proposer les "
-"*patch*, ça simplifie le processus et implique moins de monde. Apprenez à :"
-"ref:`contribuer `."
+"Il est parfois plus rapide de réparer les bogues soi-même et d'en proposer "
+"les correctifs, ça simplifie le processus et implique moins de monde. "
+"Apprenez à :ref:`contribuer `."
#: ../Doc/bugs.rst:16
msgid "Documentation bugs"
@@ -47,7 +47,7 @@ msgstr "Bogues de documentation"
msgid ""
"If you find a bug in this documentation or would like to propose an "
"improvement, please submit a bug report on the :ref:`tracker `. If you have a suggestion how to fix it, include that as well."
+"tracker>`. If you have a suggestion on how to fix it, include that as well."
msgstr ""
"Si vous trouvez un bogue dans cette documentation ou si vous désirez "
"proposer une amélioration, si cela concerne aussi la documentation en "
@@ -65,19 +65,19 @@ msgid ""
"'docs@' is a mailing list run by volunteers; your request will be noticed, "
"though it may take a while to be processed."
msgstr ""
-"Si vous êtes limités par le temps, vous pouvez aussi envoyer un e-mail à "
-"docs@python.org (les bugs de comportement peuvent être envoyés à python-"
-"list@python.org). 'docs@' est une liste de diffusion gérée par des "
+"Si vous êtes limité par le temps, vous pouvez aussi envoyer un courriel à "
+"docs@python.org (les bogues de comportement peuvent être envoyés à python-"
+"list@python.org). « docs@ » est une liste de diffusion gérée par des "
"volontaires, votre requête sera vue, mais elle peut prendre un moment pour "
"être traitée."
#: ../Doc/bugs.rst:28
msgid "`Documentation bugs`_ on the Python issue tracker"
-msgstr "`Documentation bugs`_ sur le gestionnaire de ticket de Python"
+msgstr "`Documentation bugs`_ sur le gestionnaire de tickets de Python"
#: ../Doc/bugs.rst:33
msgid "Using the Python issue tracker"
-msgstr "Utilisation du gestionnaire de ticket Python"
+msgstr "Utilisation du gestionnaire de tickets Python"
#: ../Doc/bugs.rst:35
msgid ""
@@ -85,10 +85,10 @@ msgid ""
"(https://bugs.python.org/). The bug tracker offers a Web form which allows "
"pertinent information to be entered and submitted to the developers."
msgstr ""
-"Les rapports de bugs pour Python lui-même devraient être soumis via le *Bug "
-"Tracker Python* (http://bugs.python.org/). Le gestionnaire de ticket propose "
-"un formulaire Web permettant de saisir des informations pertinentes à "
-"soumettre aux développeurs."
+"Les rapports de bogues pour Python lui-même devraient être soumis via le "
+"*Bug Tracker Python* (http://bugs.python.org/). Le gestionnaire de tickets "
+"propose un formulaire Web permettant de saisir des informations pertinentes "
+"à soumettre aux développeurs."
#: ../Doc/bugs.rst:39
msgid ""
@@ -118,9 +118,9 @@ msgid ""
msgstr ""
"Si le problème que vous soumettez n'est pas déjà dans le *bug tracker*, "
"revenez au *Python Bug Tracker* et connectez-vous. Si vous n'avez pas déjà "
-"un compte pour le *tracker*, cliquez sur le lien \"S'enregistrer\", ou, si "
+"un compte pour le *tracker*, cliquez sur le lien « S'enregistrer », ou, si "
"vous utilisez *OpenID*, sur l'un des logos des fournisseurs *OpenID* dans la "
-"barre latérale. Il n'est pas possible de soumettre un rapport de bug de "
+"barre latérale. Il n'est pas possible de soumettre un rapport de bogue de "
"manière anonyme."
#: ../Doc/bugs.rst:51
@@ -140,9 +140,9 @@ msgid ""
"\"Component\" and \"Versions\" to which the bug relates."
msgstr ""
"Le formulaire de soumission a un certain nombre de champs. Pour le champ "
-"\"Titre\", saisissez une *très* courte description du problème ; moins de "
-"dix mots est approprié. Dans le champ \"Type\", sélectionnez le type de "
-"problème ; sélectionnez aussi \"Composant\" et \"Versions\" en rapport avec "
+"« Titre », saisissez une *très* courte description du problème ; moins de "
+"dix mots est approprié. Dans le champ « Type », sélectionnez le type de "
+"problème ; sélectionnez aussi « Composant » et « Versions » en rapport avec "
"le bogue."
#: ../Doc/bugs.rst:59
@@ -152,7 +152,7 @@ msgid ""
"extension modules were involved, and what hardware and software platform you "
"were using (including version information as appropriate)."
msgstr ""
-"Dans le champ \"Commentaire\", décrivez le problème de manière détaillée, "
+"Dans le champ « Commentaire », décrivez le problème de manière détaillée, "
"incluant ce à quoi vous vous attendiez et ce qui s'est vraiment produit. "
"Assurez-vous d'y inclure les éventuels modules d'extensions impliqués et la "
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
@@ -173,8 +173,8 @@ msgid ""
"`How to Report Bugs Effectively `_"
msgstr ""
-"`Comment rédiger des bugs de manière efficace `_"
+"`Comment signaler des bogues de manière efficace `_ (en anglais)"
#: ../Doc/bugs.rst:72
msgid ""
@@ -190,8 +190,8 @@ msgid ""
"`Bug Writing Guidelines `_"
msgstr ""
-"`Guide de la rédaction de bugs `_"
+"`Guide de la rédaction de rapports de bogues `_"
#: ../Doc/bugs.rst:76
msgid ""
@@ -213,8 +213,8 @@ msgid ""
"the `core-mentorship mailing list`_ is a friendly place to get answers to "
"any and all questions pertaining to the process of fixing issues in Python."
msgstr ""
-"Au delà de simplement remonter les bugs que vous trouvez, vous serez aussi "
-"appréciés si vous y attachiez des correctifs. Vous pouvez trouver plus "
+"Au-delà de simplement remonter les bogues que vous trouvez, il est aussi "
+"apprécié d'y attacher des correctifs. Vous pouvez trouver plus "
"d'informations pour débuter la rédaction de correctifs dans le `Python "
"Developer's Guide`_. Si vous avez des questions, le `core-mentorship mailing "
"list`_ est un endroit amical pour obtenir des réponses à toutes les "
diff --git a/c-api/allocation.po b/c-api/allocation.po
index a9b38d283..381983e06 100644
--- a/c-api/allocation.po
+++ b/c-api/allocation.po
@@ -38,8 +38,9 @@ msgid ""
"This does everything :c:func:`PyObject_Init` does, and also initializes the "
"length information for a variable-size object."
msgstr ""
-"Effectue les mêmes opérations que :c:func:`PyObject_Init` fait, et initialise "
-"également l'information de la longueur pour un objet de taille variable."
+"Effectue les mêmes opérations que :c:func:`PyObject_Init` fait, et "
+"initialise également l'information de la longueur pour un objet de taille "
+"variable."
#: ../Doc/c-api/allocation.rst:32
msgid ""
@@ -50,10 +51,10 @@ msgid ""
"tp_basicsize` field of the type object."
msgstr ""
"Alloue un nouvel objet Python en utilisant le type de structure C *TYPE* et "
-"l'objet Python *type*. Les champs non définis par l'en-tête de "
-"l'objet Python ne sont pas initialisés; le compteur de la référence objet "
-"sera égal à un. La taille de l'allocation mémoire est déterminée par le champ "
-":c:member:`~PyTypeObject.tp_basicsize` de l'objet type."
+"l'objet Python *type*. Les champs non définis par l'en-tête de l'objet "
+"Python ne sont pas initialisés; le compteur de la référence objet sera égal "
+"à un. La taille de l'allocation mémoire est déterminée par le champ :c:"
+"member:`~PyTypeObject.tp_basicsize` de l'objet type."
#: ../Doc/c-api/allocation.rst:41
msgid ""
@@ -85,9 +86,9 @@ msgid ""
msgstr ""
"Libère la mémoire allouée à un objet utilisant :c:func:`PyObject_New` ou :c:"
"func:`PyObject_NewVar`. Ceci est normalement appelé par le gestionnaire :c:"
-"member:`~PyTypeObject.tp_dealloc` spécifié dans le type d'objet. Les champs de "
-"l'objet ne doivent plus être accédés après cet appel puisque cet emplacement "
-"mémoire ne correspond plus à un objet Python valide."
+"member:`~PyTypeObject.tp_dealloc` spécifié dans le type d'objet. Les champs "
+"de l'objet ne doivent plus être accédés après cet appel puisque cet "
+"emplacement mémoire ne correspond plus à un objet Python valide."
#: ../Doc/c-api/allocation.rst:62
msgid ""
diff --git a/c-api/arg.po b/c-api/arg.po
index 83192fd24..568021fe4 100644
--- a/c-api/arg.po
+++ b/c-api/arg.po
@@ -88,6 +88,10 @@ msgid ""
"this object. You won't have to release any memory yourself. The only "
"exceptions are ``es``, ``es#``, ``et`` and ``et#``."
msgstr ""
+"En général, lorsqu'un format définit un pointeur vers un tampon, le tampon "
+"est géré par l'objet Python correspondant et le tampon partage la durée de "
+"vie de cet objet. vous n'avez pas à libérer de mémoire. Les seules "
+"exceptions sont ``es``, ``es#``, ``et`` et ``et#``."
#: ../Doc/c-api/arg.rst:42
msgid ""
@@ -150,6 +154,13 @@ msgid ""
"is raised. Unicode objects are converted to C strings using ``'utf-8'`` "
"encoding. If this conversion fails, a :exc:`UnicodeError` is raised."
msgstr ""
+"Convertit un objet Unicode en un pointeur vers une chaîne de caractères. "
+"S'il s'agit d'un pointeur vers une chaîne de caractères déjà existante, il "
+"est stocké dans la variable de type pointeur vers un caractère dont vous "
+"avez donné l'adresse. Une chaîne de caractères en C se termine par *NULL*. "
+"La chaîne de caractères Python ne doit donc pas contenir de caractère dont "
+"le code est *null*. Si elle en contient, une exception :exc:`ValueError` est "
+"levée. Si la conversion échoue, une :exc:`UnicodeError` est levée."
#: ../Doc/c-api/arg.rst:77
msgid ""
@@ -158,12 +169,19 @@ msgid ""
"strings, it is preferable to use the ``O&`` format with :c:func:"
"`PyUnicode_FSConverter` as *converter*."
msgstr ""
+"Ce format n'accepte pas les :term:`objets compatibles avec une chaîne "
+"d'octets `. Si vous voulez accepter les chemins du "
+"système de fichiers et les convertir vers des chaînes de caractères C, il "
+"est préférable d'utiliser le format ``O&`` avec :c:func:"
+"`PyUnicode_FSConverter` en tant que *converter*."
#: ../Doc/c-api/arg.rst:83 ../Doc/c-api/arg.rst:150
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null code points were "
"encountered in the Python string."
msgstr ""
+"Auparavant, une :exc:`TypeError` était levée quand la chaîne de caractères "
+"Python contenait des codes NULL."
#: ../Doc/c-api/arg.rst:91
msgid "``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]"
@@ -176,12 +194,19 @@ msgid ""
"resulting C string may contain embedded NUL bytes. Unicode objects are "
"converted to C strings using ``'utf-8'`` encoding."
msgstr ""
+"Ce format accepte les objets Unicode et les *bytes-like object*. Cela "
+"remplit une structure :c:type:`Py_buffer` qui est fournie par l'appelant. "
+"Dans ce cas, la chaîne de caractères C qui en résulte peut contenir des "
+"octets NULL. Les objets Unicode sont convertis en chaînes de caractères C en "
+"utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:98
msgid ""
"``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, "
"int or :c:type:`Py_ssize_t`]"
msgstr ""
+"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
+"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
#: ../Doc/c-api/arg.rst:94
msgid ""
@@ -190,6 +215,11 @@ msgid ""
"second one its length. The string may contain embedded null bytes. Unicode "
"objects are converted to C strings using ``'utf-8'`` encoding."
msgstr ""
+"La même chose que ``s*``, mais n'accepte pas les objets muables. Le résultat "
+"est stocké dans deux variables C, la première est un pointeur vers une "
+"chaîne de caractères C, la seconde contient sa taille. La chaîne de "
+"caractères peut contenir des octets NULL. Les objets Unicode sont convertis "
+"vers des chaînes de caractères C utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:102 ../Doc/c-api/arg.rst:566
msgid "``z`` (:class:`str` or ``None``) [const char \\*]"
@@ -232,6 +262,8 @@ msgstr ""
#: ../Doc/c-api/arg.rst:120
msgid "``y`` (read-only :term:`bytes-like object`) [const char \\*]"
msgstr ""
+"``y`` (lecture seule :term:`objet compatible avec une chaîne d'octets `) [constante char \\*]"
#: ../Doc/c-api/arg.rst:113
msgid ""
@@ -240,12 +272,18 @@ msgid ""
"contain embedded null bytes; if it does, a :exc:`ValueError` exception is "
"raised."
msgstr ""
+"Ce format convertit un *objet compatible avec une chaîne d'octets* en un "
+"pointeur C vers une chaîne de caractères ; il n'accepte pas les objets "
+"Unicode. Le tampon d'octets ne doit pas contenir d'octets *null* ; si c'est "
+"le cas, une exception :exc:`ValueError` est levée."
#: ../Doc/c-api/arg.rst:118
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null bytes were "
"encountered in the bytes buffer."
msgstr ""
+"Auparavant, :exc:`TypeError` était levée lorsque des octets *null* étaient "
+"rencontrés dans le tampon d'octets."
#: ../Doc/c-api/arg.rst:125
msgid "``y*`` (:term:`bytes-like object`) [Py_buffer]"
@@ -306,6 +344,13 @@ msgid ""
"Python string must not contain embedded null code points; if it does, a :exc:"
"`ValueError` exception is raised."
msgstr ""
+"Convertit un objet Python Unicode en un pointeur C vers un tampon de "
+"caractères Unicode terminé par *NULL*. Vous devez passer l'adresse d'un "
+"pointeur :c:type:`Py_UNICODE`, qui sera rempli avec le pointeur vers un "
+"tampon Unicode existant. Veuillez noter que la taille d'un :c:type:"
+"`Py_UNICODE` dépend des options de compilation (soit 16, soit 32 bits). La "
+"chaîne de caractères Python ne doit pas contenir de code *NULL*. Si elle en "
+"contient, une exception :exc:`ValueError` est levée."
#: ../Doc/c-api/arg.rst:157 ../Doc/c-api/arg.rst:166 ../Doc/c-api/arg.rst:174
#: ../Doc/c-api/arg.rst:182
diff --git a/c-api/buffer.po b/c-api/buffer.po
index 6c9b0ac05..c78eae496 100644
--- a/c-api/buffer.po
+++ b/c-api/buffer.po
@@ -528,7 +528,7 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:321
msgid "format"
-msgstr ""
+msgstr "format"
#: ../Doc/c-api/buffer.rst:323 ../Doc/c-api/buffer.rst:325
#: ../Doc/c-api/buffer.rst:327 ../Doc/c-api/buffer.rst:329
diff --git a/c-api/bytes.po b/c-api/bytes.po
index 5554f0483..dbd32524b 100644
--- a/c-api/bytes.po
+++ b/c-api/bytes.po
@@ -72,7 +72,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:68
msgid "Format Characters"
-msgstr ""
+msgstr "Caractères de format"
#: ../Doc/c-api/bytes.rst:68
msgid "Type"
diff --git a/c-api/cell.po b/c-api/cell.po
index f1a30e457..44b2efd6d 100644
--- a/c-api/cell.po
+++ b/c-api/cell.po
@@ -5,14 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: 2018-10-04 12:23+0200\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-05-09 10:14+0200\n"
+"Last-Translator: \n"
"Language-Team: FRENCH \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.1\n"
#: ../Doc/c-api/cell.rst:6
msgid "Cell Objects"
@@ -42,31 +43,37 @@ msgstr ""
#: ../Doc/c-api/cell.rst:20
msgid "The C structure used for cell objects."
-msgstr ""
+msgstr "Structure C utilisée pour les objets cellules."
#: ../Doc/c-api/cell.rst:25
msgid "The type object corresponding to cell objects."
-msgstr ""
+msgstr "Type objet correspondant aux objets cellules."
#: ../Doc/c-api/cell.rst:30
msgid "Return true if *ob* is a cell object; *ob* must not be *NULL*."
msgstr ""
+"Renvoie ``True`` si *ob* est un objet cellule ; *ob* ne doit pas être à "
+"*NULL*."
#: ../Doc/c-api/cell.rst:35
msgid ""
"Create and return a new cell object containing the value *ob*. The parameter "
"may be *NULL*."
msgstr ""
+"Crée et retourne un nouvel objet cellule contenant la valeur *ob*. Le "
+"paramètre peut être mis à *NULL*."
#: ../Doc/c-api/cell.rst:41
msgid "Return the contents of the cell *cell*."
-msgstr ""
+msgstr "Renvoie le contenu de la cellule *cell*."
#: ../Doc/c-api/cell.rst:46
msgid ""
"Return the contents of the cell *cell*, but without checking that *cell* is "
"non-*NULL* and a cell object."
msgstr ""
+"Renvoie le contenu de la cellule *cell*, mais sans vérifier si *cell* est "
+"non *NULL* et sans vérifier si c'est un objet cellule."
#: ../Doc/c-api/cell.rst:52
msgid ""
@@ -75,6 +82,10 @@ msgid ""
"must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On "
"success, ``0`` will be returned."
msgstr ""
+"Définit le contenu de l'objet cellule à *value*. Cela libère la référence à "
+"toute valeur de la cellule. *value* peut être fixé à *NULL*. *cell* ne doit "
+"pas être *NULL* ; si ce n'est pas un objet cellule, ``-1`` est renvoyé. Si "
+"c'est un objet cellule, renvoie ``0``."
#: ../Doc/c-api/cell.rst:60
msgid ""
@@ -82,3 +93,6 @@ msgid ""
"are adjusted, and no checks are made for safety; *cell* must be non-*NULL* "
"and must be a cell object."
msgstr ""
+"Définit la valeur de l'objet cellule à *value*. Pas de comptage de "
+"références n'est ajusté et il n'y' a pas de contrôle effectué pour vérifier "
+"la sûreté ; *cell* doit être à non *NULL* et doit être un objet cellule."
diff --git a/c-api/complex.po b/c-api/complex.po
index 8ab4f8f2a..708d7647e 100644
--- a/c-api/complex.po
+++ b/c-api/complex.po
@@ -6,8 +6,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-21 09:15+0200\n"
-"PO-Revision-Date: 2018-02-15 00:31+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2019-01-14 20:31+0100\n"
+"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
#: ../Doc/c-api/complex.rst:6
msgid "Complex Number Objects"
-msgstr "Objets nombres complexes"
+msgstr "Objets représentant des nombres complexes"
#: ../Doc/c-api/complex.rst:10
msgid ""
@@ -26,10 +26,10 @@ msgid ""
"and the other is a C structure which represents the actual complex number "
"value. The API provides functions for working with both."
msgstr ""
-"Les objets Python nombres complexes sont implémentés comme deux types "
-"distincts, lorsqu'ils sont vus de l'API C : l'un est l'objet Python tel "
-"qu'il est vu par les programmes Python, et l'autre est une structure C qui "
-"représente la valeur complexe courante. L'API fournit des fonctions pour "
+"Les nombres complexes Python sont implémentés comme deux types distincts, "
+"lorsqu'ils sont vus de l'API C : l'un est l'objet Python tel qu'il est vu "
+"par les programmes Python, et l'autre est une structure C qui représente la "
+"valeur exacte du nombre complexe. L'API fournit des fonctions pour "
"travailler avec ces deux représentations."
#: ../Doc/c-api/complex.rst:17
@@ -42,9 +42,9 @@ msgid ""
"return them as results do so *by value* rather than dereferencing them "
"through pointers. This is consistent throughout the API."
msgstr ""
-"Remarquez que les fonctions qui acceptent ces structures comme paramètres et "
-"les renvoient comme résultats le font *par valeur* au lieur de les dé-"
-"référencer en utilisant des pointeurs. Cela est constant dans toute l'API."
+"Les fonctions qui acceptent ces structures comme paramètres et les renvoient "
+"comme résultats le font en fonction de leur *valeur* au lieu de les dé-"
+"référencer en utilisant des pointeurs. C'est constant dans toute l'API."
#: ../Doc/c-api/complex.rst:26
msgid ""
@@ -53,54 +53,73 @@ msgid ""
"objects use structures of this type as input or output values, as "
"appropriate. It is defined as::"
msgstr ""
+"Structure C représentant la valeur d'un nombre complexe Python. La majorité "
+"des fonctions qui traitent des nombres complexes utilisent cette structure "
+"en entrée ou en sortie, selon le cas. Elle est définie par ::"
#: ../Doc/c-api/complex.rst:39
msgid ""
"Return the sum of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie la somme de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:45
msgid ""
"Return the difference between two complex numbers, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie la différence de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:51
msgid ""
"Return the negation of the complex number *complex*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie l'opposé du nombre complexe *complex*, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:57
msgid ""
"Return the product of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie le produit de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:63
msgid ""
"Return the quotient of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie le quotient de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:66
msgid ""
"If *divisor* is null, this method returns zero and sets :c:data:`errno` to :"
"c:data:`EDOM`."
msgstr ""
+"Si *divisor* est nul, cette méthode renvoie zéro et assigne :c:data:`EDOM` "
+"à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:72
msgid ""
"Return the exponentiation of *num* by *exp*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie *num* à la puissance *exp*, sous la forme d'un :c:type:`Py_complex` "
+"en C."
#: ../Doc/c-api/complex.rst:75
msgid ""
"If *num* is null and *exp* is not a positive real number, this method "
"returns zero and sets :c:data:`errno` to :c:data:`EDOM`."
msgstr ""
+"Si *num* est nul et *exp* n'est pas un nombre réel positif, cette méthode "
+"renvoie zéro et assigne :c:data:`EDOM` à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:80
msgid "Complex Numbers as Python Objects"
@@ -110,46 +129,64 @@ msgstr "Nombres complexes en tant qu'objets Python"
msgid ""
"This subtype of :c:type:`PyObject` represents a Python complex number object."
msgstr ""
+"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre complexe en "
+"Python."
#: ../Doc/c-api/complex.rst:90
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python complex number "
"type. It is the same object as :class:`complex` in the Python layer."
msgstr ""
+"Cette instance de :c:type:`PyTypeObject` représente le type nombre complexe "
+"Python. C'est le même objet que la classe :class:`complex` de la couche "
+"Python."
#: ../Doc/c-api/complex.rst:96
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject` or a subtype of :"
"c:type:`PyComplexObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject` ou un sous-"
+"type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:102
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject`, but not a "
"subtype of :c:type:`PyComplexObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject`, mais pas "
+"un sous-type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:108
msgid ""
"Create a new Python complex number object from a C :c:type:`Py_complex` "
"value."
msgstr ""
+"Crée un nouveau nombre complexe à partir de la valeur d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:113
msgid "Return a new :c:type:`PyComplexObject` object from *real* and *imag*."
msgstr ""
+"Renvoie un nouveau :c:type:`PyComplexObject` à partir de *real* et de *imag*."
#: ../Doc/c-api/complex.rst:118
msgid "Return the real part of *op* as a C :c:type:`double`."
msgstr ""
+"Renvoie la partie réelle du nombre complexe *op* sous la forme d'un :c:type:"
+"`double` en C."
#: ../Doc/c-api/complex.rst:123
msgid "Return the imaginary part of *op* as a C :c:type:`double`."
msgstr ""
+"Renvoie la partie imaginaire du nombre complexe *op* sous la forme d'un :c:"
+"type:`double` en C."
#: ../Doc/c-api/complex.rst:128
msgid "Return the :c:type:`Py_complex` value of the complex number *op*."
msgstr ""
+"Renvoie la valeur du nombre complexe *op* sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:130
msgid ""
@@ -157,3 +194,7 @@ msgid ""
"method, this method will first be called to convert *op* to a Python complex "
"number object. Upon failure, this method returns ``-1.0`` as a real value."
msgstr ""
+"Si *op* n'est pas un nombre complexe Python mais a une méthode :meth:"
+"`__complex__`, cette méthode est d'abord appelée pour convertir *op* en "
+"nombre complexe Python. En cas d'échec, cette méthode renvoie ``-1.0`` en "
+"tant que nombre réel."
diff --git a/c-api/contextvars.po b/c-api/contextvars.po
index 3dd55a24d..72faa61a3 100644
--- a/c-api/contextvars.po
+++ b/c-api/contextvars.po
@@ -62,7 +62,7 @@ msgstr ""
#: ../Doc/c-api/contextvars.rst:58
msgid "Type-check macros:"
-msgstr ""
+msgstr "Macros pour vérifier les types :"
#: ../Doc/c-api/contextvars.rst:62
msgid ""
diff --git a/c-api/datetime.po b/c-api/datetime.po
index 276b99c83..4e268df34 100644
--- a/c-api/datetime.po
+++ b/c-api/datetime.po
@@ -5,14 +5,16 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-05-31 10:15+0200\n"
+"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \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-Poedit-Bookmarks: -1,-1,-1,-1,-1,-1,-1,3,-1,-1\n"
#: ../Doc/c-api/datetime.rst:6
msgid "DateTime Objects"
@@ -28,204 +30,285 @@ msgid ""
"structure into a static variable, :c:data:`PyDateTimeAPI`, that is used by "
"the following macros."
msgstr ""
+"De nombreux objets *date* et *time* sont exposés par le module :mod:"
+"`DateTime`. Avant d'utiliser une de ces fonctions, le fichier d'en-tête :"
+"file:`datetime.h` doit être inclus dans vos sources (veuillez noter qu'il "
+"n'est pas inclus par le fichier :file:`Python.h`) et la macro :c:macro:"
+"`PyDateTime_IMPORT` doit-être invoquée, généralement lors de la fonction "
+"d'initialisation du module. La macro crée un pointeur vers une structure C "
+"et place celui-ci dans une variable statique, :c:data:`PyDateTimeAPI`, qui "
+"est utilisée par les macros suivantes."
#: ../Doc/c-api/datetime.rst:16
msgid "Macro for access to the UTC singleton:"
-msgstr ""
+msgstr "Macro pour accéder au singleton UTC :"
#: ../Doc/c-api/datetime.rst:20
msgid ""
"Returns the time zone singleton representing UTC, the same object as :attr:"
"`datetime.timezone.utc`."
msgstr ""
+"Renvoie le singleton du fuseau horaire UTC, qui est le même objet que :attr:"
+"`datetime.timezone.utc`."
#: ../Doc/c-api/datetime.rst:26
msgid "Type-check macros:"
-msgstr ""
+msgstr "Macros pour vérifier les types :"
#: ../Doc/c-api/datetime.rst:30
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType` or a subtype "
"of :c:data:`PyDateTime_DateType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType` ou un sous-"
+"type de :c:data:`PyDateTime_DateType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:36
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType`. *ob* ne doit "
+"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:42
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType` or a "
"subtype of :c:data:`PyDateTime_DateTimeType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType` ou un "
+"sous-type de :c:data:`PyDateTime_DateTimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:48
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType`. *ob* must "
"not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:54
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType` or a subtype "
"of :c:data:`PyDateTime_TimeType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType` ou un sous-"
+"type de :c:data:`PyDateTime_TimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:60
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType`. *ob* ne doit "
+"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:66
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType` or a subtype "
"of :c:data:`PyDateTime_DeltaType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType` ou un sous-"
+"type de :c:data:`PyDateTime_DeltaType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:72
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:78
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType` or a subtype "
"of :c:data:`PyDateTime_TZInfoType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType` ou un sous-"
+"type de :c:data:`PyDateTime_TZInfoType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:84
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType`. *ob* must "
"not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:88
msgid "Macros to create objects:"
-msgstr ""
+msgstr "Macros pour créer des objets :"
#: ../Doc/c-api/datetime.rst:92
msgid ""
"Return a :class:`datetime.date` object with the specified year, month and "
"day."
msgstr ""
+"Renvoie un objet :class:`datetime.date` avec l'année, le mois et le jour "
+"spécifiés."
#: ../Doc/c-api/datetime.rst:97
msgid ""
"Return a :class:`datetime.datetime` object with the specified year, month, "
"day, hour, minute, second and microsecond."
msgstr ""
+"Renvoie un objet :class:`datetime.datetime` avec l'année, le mois, le jour, "
+"l'heure, la minute, la seconde et la microseconde spécifiés."
#: ../Doc/c-api/datetime.rst:103
msgid ""
+"Return a :class:`datetime.datetime` object with the specified year, month, "
+"day, hour, minute, second, microsecond and fold."
+msgstr ""
+"Renvoie un objet :class:`datetime.datetime` avec l'année, le mois, le jour, "
+"l'heure, la minute, la seconde, la microseconde et le pli (*fold* en "
+"anglais) spécifiés."
+
+#: ../Doc/c-api/datetime.rst:111
+msgid ""
"Return a :class:`datetime.time` object with the specified hour, minute, "
"second and microsecond."
msgstr ""
+"Renvoie un objet :class:`datetime.time` avec l'heure, la minute, la seconde "
+"et la microseconde spécifiées."
+
+#: ../Doc/c-api/datetime.rst:117
+msgid ""
+"Return a :class:`datetime.time` object with the specified hour, minute, "
+"second, microsecond and fold."
+msgstr ""
+"Renvoie un objet :class:`datetime.time` avec l'heure, la minute, la seconde, "
+"la microseconde et le pli (*fold* en anglais) spécifiés."
-#: ../Doc/c-api/datetime.rst:109
+#: ../Doc/c-api/datetime.rst:125
msgid ""
"Return a :class:`datetime.timedelta` object representing the given number of "
"days, seconds and microseconds. Normalization is performed so that the "
"resulting number of microseconds and seconds lie in the ranges documented "
"for :class:`datetime.timedelta` objects."
msgstr ""
+"Renvoie un objet :class:`datetime.timedelta` représentant le nombre passé en "
+"paramètre de jours, de secondes et de microsecondes. Le résultat est "
+"normalisé pour que le nombre de microsecondes et de secondes tombe dans la "
+"plage documentée pour les objets :class:`datetime.timedelta`."
-#: ../Doc/c-api/datetime.rst:116
+#: ../Doc/c-api/datetime.rst:132
msgid ""
"Return a :class:`datetime.timezone` object with an unnamed fixed offset "
"represented by the *offset* argument."
msgstr ""
+"Renvoie un objet :class:`datetime.timezone` avec un décalage anonyme fixe "
+"représenté par l'argument *offset*."
-#: ../Doc/c-api/datetime.rst:123
+#: ../Doc/c-api/datetime.rst:139
msgid ""
"Return a :class:`datetime.timezone` object with a fixed offset represented "
"by the *offset* argument and with tzname *name*."
msgstr ""
+"Renvoie un objet :class:`datetime.timezone` avec un décalage fixe représenté "
+"par l'argument *offset* et avec le nom de fuseau horaire *name*."
-#: ../Doc/c-api/datetime.rst:129
+#: ../Doc/c-api/datetime.rst:145
msgid ""
"Macros to extract fields from date objects. The argument must be an "
"instance of :c:data:`PyDateTime_Date`, including subclasses (such as :c:data:"
"`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is "
"not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *date*. L'argument doit être une "
+"instance de :c:data:`PyDateTime_Date`, ou une sous-classe (telle que :c:data:"
+"`PyDateTime_DateTime`). L'argument ne doit pas être *NULL*, et le type n'est "
+"pas vérifié :"
-#: ../Doc/c-api/datetime.rst:136
+#: ../Doc/c-api/datetime.rst:152
msgid "Return the year, as a positive int."
-msgstr ""
+msgstr "Renvoie l'année, sous forme d'entier positif."
-#: ../Doc/c-api/datetime.rst:141
+#: ../Doc/c-api/datetime.rst:157
msgid "Return the month, as an int from 1 through 12."
-msgstr ""
+msgstr "Renvoie le mois, sous forme d'entier allant de 1 à 12."
-#: ../Doc/c-api/datetime.rst:146
+#: ../Doc/c-api/datetime.rst:162
msgid "Return the day, as an int from 1 through 31."
-msgstr ""
+msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
-#: ../Doc/c-api/datetime.rst:149
+#: ../Doc/c-api/datetime.rst:165
msgid ""
"Macros to extract fields from datetime objects. The argument must be an "
"instance of :c:data:`PyDateTime_DateTime`, including subclasses. The "
"argument must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *datetime*. L'argument doit être "
+"une instance de :c:data:`PyDateTime_DateTime` ou une sous-classe de celle-"
+"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
-#: ../Doc/c-api/datetime.rst:155 ../Doc/c-api/datetime.rst:179
+#: ../Doc/c-api/datetime.rst:171 ../Doc/c-api/datetime.rst:195
msgid "Return the hour, as an int from 0 through 23."
-msgstr ""
+msgstr "Renvoie l'heure, sous forme d'entier allant de 0 à 23."
-#: ../Doc/c-api/datetime.rst:160 ../Doc/c-api/datetime.rst:184
+#: ../Doc/c-api/datetime.rst:176 ../Doc/c-api/datetime.rst:200
msgid "Return the minute, as an int from 0 through 59."
-msgstr ""
+msgstr "Renvoie la minute, sous forme d'entier allant de 0 à 59."
-#: ../Doc/c-api/datetime.rst:165 ../Doc/c-api/datetime.rst:189
+#: ../Doc/c-api/datetime.rst:181 ../Doc/c-api/datetime.rst:205
msgid "Return the second, as an int from 0 through 59."
-msgstr ""
+msgstr "Renvoie la seconde, sous forme d'entier allant de 0 à 59."
-#: ../Doc/c-api/datetime.rst:170 ../Doc/c-api/datetime.rst:194
+#: ../Doc/c-api/datetime.rst:186 ../Doc/c-api/datetime.rst:210
msgid "Return the microsecond, as an int from 0 through 999999."
-msgstr ""
+msgstr "Renvoie la microseconde, sous forme d'entier allant de 0 à 999999."
-#: ../Doc/c-api/datetime.rst:173
+#: ../Doc/c-api/datetime.rst:189
msgid ""
"Macros to extract fields from time objects. The argument must be an "
"instance of :c:data:`PyDateTime_Time`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *time*. L'argument doit être une "
+"instance de :c:data:`PyDateTime_Time` ou une sous-classe de celle-ci. "
+"L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
-#: ../Doc/c-api/datetime.rst:197
+#: ../Doc/c-api/datetime.rst:213
msgid ""
"Macros to extract fields from time delta objects. The argument must be an "
"instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *time delta*. L'argument doit "
+"être une instance de :c:data:`PyDateTime_Delta` ou une sous-classe de celle-"
+"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
-#: ../Doc/c-api/datetime.rst:203
+#: ../Doc/c-api/datetime.rst:219
msgid "Return the number of days, as an int from -999999999 to 999999999."
msgstr ""
+"Renvoie le nombre de jours, sous forme d'entier allant de -999999999 à "
+"999999999."
-#: ../Doc/c-api/datetime.rst:210
+#: ../Doc/c-api/datetime.rst:226
msgid "Return the number of seconds, as an int from 0 through 86399."
-msgstr ""
+msgstr "Renvoie le nombre de secondes sous forme d'entier allant de 0 à 86399."
-#: ../Doc/c-api/datetime.rst:217
+#: ../Doc/c-api/datetime.rst:233
msgid "Return the number of microseconds, as an int from 0 through 999999."
msgstr ""
+"Renvoie le nombre de microsecondes, sous forme d'entier allant de 0 à 999999."
-#: ../Doc/c-api/datetime.rst:222
+#: ../Doc/c-api/datetime.rst:238
msgid "Macros for the convenience of modules implementing the DB API:"
-msgstr ""
+msgstr "Macros de confort pour les modules implémentant l'API DB :"
-#: ../Doc/c-api/datetime.rst:226
+#: ../Doc/c-api/datetime.rst:242
msgid ""
"Create and return a new :class:`datetime.datetime` object given an argument "
"tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`."
msgstr ""
+"Crée et renvoie un nouvel objet :class:`datetime.datetime` à partir d'un n-"
+"uplet qui peut être passé à :meth:`datetime.datetime.fromtimestamp()`."
-#: ../Doc/c-api/datetime.rst:232
+#: ../Doc/c-api/datetime.rst:248
msgid ""
"Create and return a new :class:`datetime.date` object given an argument "
"tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`."
msgstr ""
+"Crée et renvoie un nouvel objet :class:`datetime.date` à partir d'un n-uplet "
+"qui peut être passé à :meth:`datetime.date.fromtimestamp()`."
diff --git a/c-api/exceptions.po b/c-api/exceptions.po
index 1b67e377c..4ea59db85 100644
--- a/c-api/exceptions.po
+++ b/c-api/exceptions.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-29 16:06+0100\n"
+"POT-Creation-Date: 2019-06-03 22:10+0200\n"
"PO-Revision-Date: 2018-10-04 12:24+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -75,22 +75,29 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:55
msgid ""
"Print a standard traceback to ``sys.stderr`` and clear the error indicator. "
-"Call this function only when the error indicator is set. (Otherwise it will "
-"cause a fatal error!)"
+"**Unless** the error is a ``SystemExit``. In that case the no traceback is "
+"printed and Python process will exit with the error code specified by the "
+"``SystemExit`` instance."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:59
+#: ../Doc/c-api/exceptions.rst:60
+msgid ""
+"Call this function **only** when the error indicator is set. Otherwise it "
+"will cause a fatal error!"
+msgstr ""
+
+#: ../Doc/c-api/exceptions.rst:63
msgid ""
"If *set_sys_last_vars* is nonzero, the variables :data:`sys.last_type`, :"
"data:`sys.last_value` and :data:`sys.last_traceback` will be set to the "
"type, value and traceback of the printed exception, respectively."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:66
+#: ../Doc/c-api/exceptions.rst:70
msgid "Alias for ``PyErr_PrintEx(1)``."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:71
+#: ../Doc/c-api/exceptions.rst:75
msgid ""
"This utility function prints a warning message to ``sys.stderr`` when an "
"exception has been set but it is impossible for the interpreter to actually "
@@ -98,25 +105,29 @@ msgid ""
"an :meth:`__del__` method."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:76
+#: ../Doc/c-api/exceptions.rst:80
msgid ""
"The function is called with a single argument *obj* that identifies the "
"context in which the unraisable exception occurred. If possible, the repr of "
"*obj* will be printed in the warning message."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:82
+#: ../Doc/c-api/exceptions.rst:84
+msgid "An exception must be set when calling this function."
+msgstr ""
+
+#: ../Doc/c-api/exceptions.rst:88
msgid "Raising exceptions"
msgstr "Lever des exceptions"
-#: ../Doc/c-api/exceptions.rst:84
+#: ../Doc/c-api/exceptions.rst:90
msgid ""
"These functions help you set the current thread's error indicator. For "
"convenience, some of these functions will always return a NULL pointer for "
"use in a ``return`` statement."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:91
+#: ../Doc/c-api/exceptions.rst:97
msgid ""
"This is the most common way to set the error indicator. The first argument "
"specifies the exception type; it is normally one of the standard exceptions, "
@@ -125,13 +136,13 @@ msgid ""
"``'utf-8``'."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:99
+#: ../Doc/c-api/exceptions.rst:105
msgid ""
"This function is similar to :c:func:`PyErr_SetString` but lets you specify "
"an arbitrary Python object for the \"value\" of the exception."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:105
+#: ../Doc/c-api/exceptions.rst:111
msgid ""
"This function sets the error indicator and returns *NULL*. *exception* "
"should be a Python exception class. The *format* and subsequent parameters "
@@ -139,31 +150,31 @@ msgid ""
"c:func:`PyUnicode_FromFormat`. *format* is an ASCII-encoded string."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:114
+#: ../Doc/c-api/exceptions.rst:120
msgid ""
"Same as :c:func:`PyErr_Format`, but taking a :c:type:`va_list` argument "
"rather than a variable number of arguments."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:122
+#: ../Doc/c-api/exceptions.rst:128
msgid "This is a shorthand for ``PyErr_SetObject(type, Py_None)``."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:127
+#: ../Doc/c-api/exceptions.rst:133
msgid ""
"This is a shorthand for ``PyErr_SetString(PyExc_TypeError, message)``, where "
"*message* indicates that a built-in operation was invoked with an illegal "
"argument. It is mostly for internal use."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:134
+#: ../Doc/c-api/exceptions.rst:140
msgid ""
"This is a shorthand for ``PyErr_SetNone(PyExc_MemoryError)``; it returns "
"*NULL* so an object allocation function can write ``return PyErr_NoMemory();"
"`` when it runs out of memory."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:143
+#: ../Doc/c-api/exceptions.rst:149
msgid ""
"This is a convenience function to raise an exception when a C library "
"function has returned an error and set the C variable :c:data:`errno`. It "
@@ -177,7 +188,7 @@ msgid ""
"``return PyErr_SetFromErrno(type);`` when the system call returns an error."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:157
+#: ../Doc/c-api/exceptions.rst:163
msgid ""
"Similar to :c:func:`PyErr_SetFromErrno`, with the additional behavior that "
"if *filenameObject* is not *NULL*, it is passed to the constructor of *type* "
@@ -185,21 +196,21 @@ msgid ""
"to define the :attr:`filename` attribute of the exception instance."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:166
+#: ../Doc/c-api/exceptions.rst:172
msgid ""
"Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but takes a "
"second filename object, for raising errors when a function that takes two "
"filenames fails."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:175
+#: ../Doc/c-api/exceptions.rst:181
msgid ""
"Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but the filename "
"is given as a C string. *filename* is decoded from the filesystem encoding "
"(:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:182
+#: ../Doc/c-api/exceptions.rst:188
msgid ""
"This is a convenience function to raise :exc:`WindowsError`. If called with "
"*ierr* of :c:data:`0`, the error code returned by a call to :c:func:"
@@ -212,44 +223,44 @@ msgid ""
"returns *NULL*."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:191 ../Doc/c-api/exceptions.rst:199
-#: ../Doc/c-api/exceptions.rst:208 ../Doc/c-api/exceptions.rst:216
-#: ../Doc/c-api/exceptions.rst:225 ../Doc/c-api/exceptions.rst:234
+#: ../Doc/c-api/exceptions.rst:197 ../Doc/c-api/exceptions.rst:205
+#: ../Doc/c-api/exceptions.rst:214 ../Doc/c-api/exceptions.rst:222
+#: ../Doc/c-api/exceptions.rst:231 ../Doc/c-api/exceptions.rst:240
msgid ":ref:`Availability `: Windows."
msgstr ":ref:`Disponibilité ` : Windows."
-#: ../Doc/c-api/exceptions.rst:196
+#: ../Doc/c-api/exceptions.rst:202
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErr`, with an additional parameter "
"specifying the exception type to be raised."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:204
+#: ../Doc/c-api/exceptions.rst:210
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, but the "
"filename is given as a C string. *filename* is decoded from the filesystem "
"encoding (:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:213
+#: ../Doc/c-api/exceptions.rst:219
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, with an "
"additional parameter specifying the exception type to be raised."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:221
+#: ../Doc/c-api/exceptions.rst:227
msgid ""
"Similar to :c:func:`PyErr_SetExcFromWindowsErrWithFilenameObject`, but "
"accepts a second filename object."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:231
+#: ../Doc/c-api/exceptions.rst:237
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilename`, with an additional "
"parameter specifying the exception type to be raised."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:239
+#: ../Doc/c-api/exceptions.rst:245
msgid ""
"This is a convenience function to raise :exc:`ImportError`. *msg* will be "
"set as the exception's message string. *name* and *path*, both of which can "
@@ -257,7 +268,7 @@ msgid ""
"``path`` attributes."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:249
+#: ../Doc/c-api/exceptions.rst:255
msgid ""
"Set file, line, and offset information for the current exception. If the "
"current exception is not a :exc:`SyntaxError`, then it sets additional "
@@ -265,19 +276,19 @@ msgid ""
"is a :exc:`SyntaxError`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:259
+#: ../Doc/c-api/exceptions.rst:265
msgid ""
"Like :c:func:`PyErr_SyntaxLocationObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:267
+#: ../Doc/c-api/exceptions.rst:273
msgid ""
"Like :c:func:`PyErr_SyntaxLocationEx`, but the col_offset parameter is "
"omitted."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:273
+#: ../Doc/c-api/exceptions.rst:279
msgid ""
"This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``, "
"where *message* indicates that an internal operation (e.g. a Python/C API "
@@ -285,11 +296,11 @@ msgid ""
"use."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:280
+#: ../Doc/c-api/exceptions.rst:286
msgid "Issuing warnings"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:282
+#: ../Doc/c-api/exceptions.rst:288
msgid ""
"Use these functions to issue warnings from C code. They mirror similar "
"functions exported by the Python :mod:`warnings` module. They normally "
@@ -305,7 +316,7 @@ msgid ""
"return an error value)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:297
+#: ../Doc/c-api/exceptions.rst:303
msgid ""
"Issue a warning message. The *category* argument is a warning category (see "
"below) or *NULL*; the *message* argument is a UTF-8 encoded string. "
@@ -315,7 +326,7 @@ msgid ""
"`PyErr_WarnEx`, 2 is the function above that, and so forth."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:304
+#: ../Doc/c-api/exceptions.rst:310
msgid ""
"Warning categories must be subclasses of :c:data:`PyExc_Warning`; :c:data:"
"`PyExc_Warning` is a subclass of :c:data:`PyExc_Exception`; the default "
@@ -324,20 +335,20 @@ msgid ""
"enumerated at :ref:`standardwarningcategories`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:310
+#: ../Doc/c-api/exceptions.rst:316
msgid ""
"For information about warning control, see the documentation for the :mod:"
"`warnings` module and the :option:`-W` option in the command line "
"documentation. There is no C API for warning control."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:316
+#: ../Doc/c-api/exceptions.rst:322
msgid ""
"Much like :c:func:`PyErr_SetImportError` but this function allows for "
"specifying a subclass of :exc:`ImportError` to raise."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:324
+#: ../Doc/c-api/exceptions.rst:330
msgid ""
"Issue a warning message with explicit control over all warning attributes. "
"This is a straightforward wrapper around the Python function :func:`warnings."
@@ -345,31 +356,31 @@ msgid ""
"arguments may be set to *NULL* to get the default effect described there."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:335
+#: ../Doc/c-api/exceptions.rst:341
msgid ""
"Similar to :c:func:`PyErr_WarnExplicitObject` except that *message* and "
"*module* are UTF-8 encoded strings, and *filename* is decoded from the "
"filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:342
+#: ../Doc/c-api/exceptions.rst:348
msgid ""
"Function similar to :c:func:`PyErr_WarnEx`, but use :c:func:"
"`PyUnicode_FromFormat` to format the warning message. *format* is an ASCII-"
"encoded string."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:351
+#: ../Doc/c-api/exceptions.rst:357
msgid ""
"Function similar to :c:func:`PyErr_WarnFormat`, but *category* is :exc:"
"`ResourceWarning` and pass *source* to :func:`warnings.WarningMessage`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:358
+#: ../Doc/c-api/exceptions.rst:364
msgid "Querying the error indicator"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:362
+#: ../Doc/c-api/exceptions.rst:368
msgid ""
"Test whether the error indicator is set. If set, return the exception "
"*type* (the first argument to the last call to one of the :c:func:`PyErr_Set"
@@ -378,7 +389,7 @@ msgid ""
"func:`Py_DECREF` it."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:370
+#: ../Doc/c-api/exceptions.rst:376
msgid ""
"Do not compare the return value to a specific exception; use :c:func:"
"`PyErr_ExceptionMatches` instead, shown below. (The comparison could easily "
@@ -386,14 +397,14 @@ msgid ""
"of a class exception, or it may be a subclass of the expected exception.)"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:378
+#: ../Doc/c-api/exceptions.rst:384
msgid ""
"Equivalent to ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``. This "
"should only be called when an exception is actually set; a memory access "
"violation will occur if no exception has been raised."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:385
+#: ../Doc/c-api/exceptions.rst:391
msgid ""
"Return true if the *given* exception matches the exception type in *exc*. "
"If *exc* is a class object, this also returns true when *given* is an "
@@ -401,7 +412,7 @@ msgid ""
"tuple (and recursively in subtuples) are searched for a match."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:393
+#: ../Doc/c-api/exceptions.rst:399
msgid ""
"Retrieve the error indicator into three variables whose addresses are "
"passed. If the error indicator is not set, set all three variables to "
@@ -410,14 +421,14 @@ msgid ""
"the type object is not."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:400
+#: ../Doc/c-api/exceptions.rst:406
msgid ""
"This function is normally only used by code that needs to catch exceptions "
"or by code that needs to save and restore the error indicator temporarily, e."
"g.::"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:415
+#: ../Doc/c-api/exceptions.rst:421
msgid ""
"Set the error indicator from the three objects. If the error indicator is "
"already set, it is cleared first. If the objects are *NULL*, the error "
@@ -430,14 +441,14 @@ msgid ""
"function. I warned you.)"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:427
+#: ../Doc/c-api/exceptions.rst:433
msgid ""
"This function is normally only used by code that needs to save and restore "
"the error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the "
"current error indicator."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:434
+#: ../Doc/c-api/exceptions.rst:440
msgid ""
"Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` "
"below can be \"unnormalized\", meaning that ``*exc`` is a class object but "
@@ -447,14 +458,14 @@ msgid ""
"improve performance."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:442
+#: ../Doc/c-api/exceptions.rst:448
msgid ""
"This function *does not* implicitly set the ``__traceback__`` attribute on "
"the exception value. If setting the traceback appropriately is desired, the "
"following additional snippet is needed::"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:453
+#: ../Doc/c-api/exceptions.rst:459
msgid ""
"Retrieve the exception info, as known from ``sys.exc_info()``. This refers "
"to an exception that was *already caught*, not to an exception that was "
@@ -462,7 +473,7 @@ msgid ""
"may be *NULL*. Does not modify the exception info state."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:460
+#: ../Doc/c-api/exceptions.rst:466
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
@@ -470,7 +481,7 @@ msgid ""
"exception state."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:470
+#: ../Doc/c-api/exceptions.rst:476
msgid ""
"Set the exception info, as known from ``sys.exc_info()``. This refers to an "
"exception that was *already caught*, not to an exception that was freshly "
@@ -479,7 +490,7 @@ msgid ""
"about the three arguments, see :c:func:`PyErr_Restore`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:478
+#: ../Doc/c-api/exceptions.rst:484
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
@@ -487,11 +498,11 @@ msgid ""
"state."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:487
+#: ../Doc/c-api/exceptions.rst:493
msgid "Signal Handling"
-msgstr ""
+msgstr "Traitement des signaux"
-#: ../Doc/c-api/exceptions.rst:497
+#: ../Doc/c-api/exceptions.rst:503
msgid ""
"This function interacts with Python's signal handling. It checks whether a "
"signal has been sent to the processes and if so, invokes the corresponding "
@@ -503,22 +514,27 @@ msgid ""
"may not be cleared if it was previously set."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:513
+#: ../Doc/c-api/exceptions.rst:519
msgid ""
-"This function simulates the effect of a :const:`SIGINT` signal arriving --- "
-"the next time :c:func:`PyErr_CheckSignals` is called, :exc:"
-"`KeyboardInterrupt` will be raised. It may be called without holding the "
-"interpreter lock."
+"Simulate the effect of a :const:`SIGINT` signal arriving. The next time :c:"
+"func:`PyErr_CheckSignals` is called, the Python signal handler for :const:"
+"`SIGINT` will be called."
msgstr ""
#: ../Doc/c-api/exceptions.rst:523
msgid ""
+"If :const:`SIGINT` isn't handled by Python (it was set to :data:`signal."
+"SIG_DFL` or :data:`signal.SIG_IGN`), this function does nothing."
+msgstr ""
+
+#: ../Doc/c-api/exceptions.rst:529
+msgid ""
"This utility function specifies a file descriptor to which the signal number "
"is written as a single byte whenever a signal is received. *fd* must be non-"
"blocking. It returns the previous such file descriptor."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:527
+#: ../Doc/c-api/exceptions.rst:533
msgid ""
"The value ``-1`` disables the feature; this is the initial state. This is "
"equivalent to :func:`signal.set_wakeup_fd` in Python, but without any error "
@@ -526,15 +542,15 @@ msgid ""
"be called from the main thread."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:532
+#: ../Doc/c-api/exceptions.rst:538
msgid "On Windows, the function now also supports socket handles."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:537
+#: ../Doc/c-api/exceptions.rst:543
msgid "Exception Classes"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:541
+#: ../Doc/c-api/exceptions.rst:547
msgid ""
"This utility function creates and returns a new exception class. The *name* "
"argument must be the name of the new exception, a C string of the form "
@@ -543,7 +559,7 @@ msgid ""
"as :c:data:`PyExc_Exception`)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:547
+#: ../Doc/c-api/exceptions.rst:553
msgid ""
"The :attr:`__module__` attribute of the new class is set to the first part "
"(up to the last dot) of the *name* argument, and the class name is set to "
@@ -553,31 +569,31 @@ msgid ""
"variables and methods."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:556
+#: ../Doc/c-api/exceptions.rst:562
msgid ""
"Same as :c:func:`PyErr_NewException`, except that the new exception class "
"can easily be given a docstring: If *doc* is non-*NULL*, it will be used as "
"the docstring for the exception class."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:564
+#: ../Doc/c-api/exceptions.rst:570
msgid "Exception Objects"
msgstr "Objets exception"
-#: ../Doc/c-api/exceptions.rst:568
+#: ../Doc/c-api/exceptions.rst:574
msgid ""
"Return the traceback associated with the exception as a new reference, as "
"accessible from Python through :attr:`__traceback__`. If there is no "
"traceback associated, this returns *NULL*."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:575
+#: ../Doc/c-api/exceptions.rst:581
msgid ""
"Set the traceback associated with the exception to *tb*. Use ``Py_None`` to "
"clear it."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:581
+#: ../Doc/c-api/exceptions.rst:587
msgid ""
"Return the context (another exception instance during whose handling *ex* "
"was raised) associated with the exception as a new reference, as accessible "
@@ -585,111 +601,111 @@ msgid ""
"this returns *NULL*."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:589
+#: ../Doc/c-api/exceptions.rst:595
msgid ""
"Set the context associated with the exception to *ctx*. Use *NULL* to clear "
"it. There is no type check to make sure that *ctx* is an exception "
"instance. This steals a reference to *ctx*."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:596
+#: ../Doc/c-api/exceptions.rst:602
msgid ""
"Return the cause (either an exception instance, or :const:`None`, set by "
"``raise ... from ...``) associated with the exception as a new reference, as "
"accessible from Python through :attr:`__cause__`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:603
+#: ../Doc/c-api/exceptions.rst:609
msgid ""
"Set the cause associated with the exception to *cause*. Use *NULL* to clear "
"it. There is no type check to make sure that *cause* is either an exception "
"instance or :const:`None`. This steals a reference to *cause*."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:607
+#: ../Doc/c-api/exceptions.rst:613
msgid ""
":attr:`__suppress_context__` is implicitly set to ``True`` by this function."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:613
+#: ../Doc/c-api/exceptions.rst:619
msgid "Unicode Exception Objects"
msgstr "Objets exception Unicode"
-#: ../Doc/c-api/exceptions.rst:615
+#: ../Doc/c-api/exceptions.rst:621
msgid ""
"The following functions are used to create and modify Unicode exceptions "
"from C."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:619
+#: ../Doc/c-api/exceptions.rst:625
msgid ""
"Create a :class:`UnicodeDecodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are "
"UTF-8 encoded strings."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:625
+#: ../Doc/c-api/exceptions.rst:631
msgid ""
"Create a :class:`UnicodeEncodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are "
"UTF-8 encoded strings."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:631
+#: ../Doc/c-api/exceptions.rst:637
msgid ""
"Create a :class:`UnicodeTranslateError` object with the attributes *object*, "
"*length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:637
+#: ../Doc/c-api/exceptions.rst:643
msgid "Return the *encoding* attribute of the given exception object."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:643
+#: ../Doc/c-api/exceptions.rst:649
msgid "Return the *object* attribute of the given exception object."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:649
+#: ../Doc/c-api/exceptions.rst:655
msgid ""
"Get the *start* attribute of the given exception object and place it into *"
"\\*start*. *start* must not be *NULL*. Return ``0`` on success, ``-1`` on "
"failure."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:657
+#: ../Doc/c-api/exceptions.rst:663
msgid ""
"Set the *start* attribute of the given exception object to *start*. Return "
"``0`` on success, ``-1`` on failure."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:664
+#: ../Doc/c-api/exceptions.rst:670
msgid ""
"Get the *end* attribute of the given exception object and place it into *"
"\\*end*. *end* must not be *NULL*. Return ``0`` on success, ``-1`` on "
"failure."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:672
+#: ../Doc/c-api/exceptions.rst:678
msgid ""
"Set the *end* attribute of the given exception object to *end*. Return "
"``0`` on success, ``-1`` on failure."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:679
+#: ../Doc/c-api/exceptions.rst:685
msgid "Return the *reason* attribute of the given exception object."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:685
+#: ../Doc/c-api/exceptions.rst:691
msgid ""
"Set the *reason* attribute of the given exception object to *reason*. "
"Return ``0`` on success, ``-1`` on failure."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:690
+#: ../Doc/c-api/exceptions.rst:696
msgid "Recursion Control"
msgstr "Contrôle de la récursion"
-#: ../Doc/c-api/exceptions.rst:692
+#: ../Doc/c-api/exceptions.rst:698
msgid ""
"These two functions provide a way to perform safe recursive calls at the C "
"level, both in the core and in extension modules. They are needed if the "
@@ -697,38 +713,38 @@ msgid ""
"recursion depth automatically)."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:699
+#: ../Doc/c-api/exceptions.rst:705
msgid "Marks a point where a recursive C-level call is about to be performed."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:701
+#: ../Doc/c-api/exceptions.rst:707
msgid ""
"If :const:`USE_STACKCHECK` is defined, this function checks if the OS stack "
"overflowed using :c:func:`PyOS_CheckStack`. In this is the case, it sets a :"
"exc:`MemoryError` and returns a nonzero value."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:705
+#: ../Doc/c-api/exceptions.rst:711
msgid ""
"The function then checks if the recursion limit is reached. If this is the "
"case, a :exc:`RecursionError` is set and a nonzero value is returned. "
"Otherwise, zero is returned."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:709
+#: ../Doc/c-api/exceptions.rst:715
msgid ""
"*where* should be a string such as ``\" in instance check\"`` to be "
"concatenated to the :exc:`RecursionError` message caused by the recursion "
"depth limit."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:715
+#: ../Doc/c-api/exceptions.rst:721
msgid ""
"Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each "
"*successful* invocation of :c:func:`Py_EnterRecursiveCall`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:718
+#: ../Doc/c-api/exceptions.rst:724
msgid ""
"Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types "
"requires special recursion handling. In addition to protecting the stack, :"
@@ -737,13 +753,13 @@ msgid ""
"Effectively, these are the C equivalent to :func:`reprlib.recursive_repr`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:726
+#: ../Doc/c-api/exceptions.rst:732
msgid ""
"Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` "
"implementation to detect cycles."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:729
+#: ../Doc/c-api/exceptions.rst:735
msgid ""
"If the object has already been processed, the function returns a positive "
"integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation "
@@ -751,30 +767,30 @@ msgid ""
"`dict` objects return ``{...}`` and :class:`list` objects return ``[...]``."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:735
+#: ../Doc/c-api/exceptions.rst:741
msgid ""
"The function will return a negative integer if the recursion limit is "
"reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation "
"should typically return ``NULL``."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:739
+#: ../Doc/c-api/exceptions.rst:745
msgid ""
"Otherwise, the function returns zero and the :c:member:`~PyTypeObject."
"tp_repr` implementation can continue normally."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:744
+#: ../Doc/c-api/exceptions.rst:750
msgid ""
"Ends a :c:func:`Py_ReprEnter`. Must be called once for each invocation of :"
"c:func:`Py_ReprEnter` that returns zero."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:751
+#: ../Doc/c-api/exceptions.rst:757
msgid "Standard Exceptions"
msgstr "Exceptions standards"
-#: ../Doc/c-api/exceptions.rst:753
+#: ../Doc/c-api/exceptions.rst:759
msgid ""
"All standard Python exceptions are available as global variables whose names "
"are ``PyExc_`` followed by the Python exception name. These have the type :"
@@ -782,455 +798,455 @@ msgid ""
"are all the variables:"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:814 ../Doc/c-api/exceptions.rst:947
-#: ../Doc/c-api/exceptions.rst:995
+#: ../Doc/c-api/exceptions.rst:820 ../Doc/c-api/exceptions.rst:953
+#: ../Doc/c-api/exceptions.rst:1001
msgid "C Name"
msgstr "Nom C"
-#: ../Doc/c-api/exceptions.rst:814 ../Doc/c-api/exceptions.rst:995
+#: ../Doc/c-api/exceptions.rst:820 ../Doc/c-api/exceptions.rst:1001
msgid "Python Name"
msgstr "Nom Python"
-#: ../Doc/c-api/exceptions.rst:814 ../Doc/c-api/exceptions.rst:947
-#: ../Doc/c-api/exceptions.rst:995
+#: ../Doc/c-api/exceptions.rst:820 ../Doc/c-api/exceptions.rst:953
+#: ../Doc/c-api/exceptions.rst:1001
msgid "Notes"
msgstr "Notes"
-#: ../Doc/c-api/exceptions.rst:816
+#: ../Doc/c-api/exceptions.rst:822
msgid ":c:data:`PyExc_BaseException`"
msgstr ":c:data:`PyExc_BaseException`"
-#: ../Doc/c-api/exceptions.rst:816
+#: ../Doc/c-api/exceptions.rst:822
msgid ":exc:`BaseException`"
msgstr ":exc:`BaseException`"
-#: ../Doc/c-api/exceptions.rst:816 ../Doc/c-api/exceptions.rst:818
-#: ../Doc/c-api/exceptions.rst:820 ../Doc/c-api/exceptions.rst:866
-#: ../Doc/c-api/exceptions.rst:878 ../Doc/c-api/exceptions.rst:997
+#: ../Doc/c-api/exceptions.rst:822 ../Doc/c-api/exceptions.rst:824
+#: ../Doc/c-api/exceptions.rst:826 ../Doc/c-api/exceptions.rst:872
+#: ../Doc/c-api/exceptions.rst:884 ../Doc/c-api/exceptions.rst:1003
msgid "\\(1)"
msgstr "\\(1)"
-#: ../Doc/c-api/exceptions.rst:818
+#: ../Doc/c-api/exceptions.rst:824
msgid ":c:data:`PyExc_Exception`"
msgstr ":c:data:`PyExc_Exception`"
-#: ../Doc/c-api/exceptions.rst:818
+#: ../Doc/c-api/exceptions.rst:824
msgid ":exc:`Exception`"
msgstr ":exc:`Exception`"
-#: ../Doc/c-api/exceptions.rst:820
+#: ../Doc/c-api/exceptions.rst:826
msgid ":c:data:`PyExc_ArithmeticError`"
msgstr ":c:data:`PyExc_ArithmeticError`"
-#: ../Doc/c-api/exceptions.rst:820
+#: ../Doc/c-api/exceptions.rst:826
msgid ":exc:`ArithmeticError`"
msgstr ":exc:`ArithmeticError`"
-#: ../Doc/c-api/exceptions.rst:822
+#: ../Doc/c-api/exceptions.rst:828
msgid ":c:data:`PyExc_AssertionError`"
msgstr ":c:data:`PyExc_AssertionError`"
-#: ../Doc/c-api/exceptions.rst:822
+#: ../Doc/c-api/exceptions.rst:828
msgid ":exc:`AssertionError`"
msgstr ":exc:`AssertionError`"
-#: ../Doc/c-api/exceptions.rst:824
+#: ../Doc/c-api/exceptions.rst:830
msgid ":c:data:`PyExc_AttributeError`"
msgstr ":c:data:`PyExc_AttributeError`"
-#: ../Doc/c-api/exceptions.rst:824
+#: ../Doc/c-api/exceptions.rst:830
msgid ":exc:`AttributeError`"
msgstr ":exc:`AttributeError`"
-#: ../Doc/c-api/exceptions.rst:826
+#: ../Doc/c-api/exceptions.rst:832
msgid ":c:data:`PyExc_BlockingIOError`"
msgstr ":c:data:`PyExc_BlockingIOError`"
-#: ../Doc/c-api/exceptions.rst:826
+#: ../Doc/c-api/exceptions.rst:832
msgid ":exc:`BlockingIOError`"
msgstr ":exc:`BlockingIOError`"
-#: ../Doc/c-api/exceptions.rst:828
+#: ../Doc/c-api/exceptions.rst:834
msgid ":c:data:`PyExc_BrokenPipeError`"
msgstr ":c:data:`PyExc_BrokenPipeError`"
-#: ../Doc/c-api/exceptions.rst:828
+#: ../Doc/c-api/exceptions.rst:834
msgid ":exc:`BrokenPipeError`"
msgstr ":exc:`BrokenPipeError`"
-#: ../Doc/c-api/exceptions.rst:830
+#: ../Doc/c-api/exceptions.rst:836
msgid ":c:data:`PyExc_BufferError`"
msgstr ":c:data:`PyExc_BufferError`"
-#: ../Doc/c-api/exceptions.rst:830
+#: ../Doc/c-api/exceptions.rst:836
msgid ":exc:`BufferError`"
msgstr ":exc:`BufferError`"
-#: ../Doc/c-api/exceptions.rst:832
+#: ../Doc/c-api/exceptions.rst:838
msgid ":c:data:`PyExc_ChildProcessError`"
msgstr ":c:data:`PyExc_ChildProcessError`"
-#: ../Doc/c-api/exceptions.rst:832
+#: ../Doc/c-api/exceptions.rst:838
msgid ":exc:`ChildProcessError`"
msgstr ":exc:`ChildProcessError`"
-#: ../Doc/c-api/exceptions.rst:834
+#: ../Doc/c-api/exceptions.rst:840
msgid ":c:data:`PyExc_ConnectionAbortedError`"
msgstr ":c:data:`PyExc_ConnectionAbortedError`"
-#: ../Doc/c-api/exceptions.rst:834
+#: ../Doc/c-api/exceptions.rst:840
msgid ":exc:`ConnectionAbortedError`"
msgstr ":exc:`ConnectionAbortedError`"
-#: ../Doc/c-api/exceptions.rst:836
+#: ../Doc/c-api/exceptions.rst:842
msgid ":c:data:`PyExc_ConnectionError`"
msgstr ":c:data:`PyExc_ConnectionError`"
-#: ../Doc/c-api/exceptions.rst:836
+#: ../Doc/c-api/exceptions.rst:842
msgid ":exc:`ConnectionError`"
msgstr ":exc:`ConnectionError`"
-#: ../Doc/c-api/exceptions.rst:838
+#: ../Doc/c-api/exceptions.rst:844
msgid ":c:data:`PyExc_ConnectionRefusedError`"
msgstr ":c:data:`PyExc_ConnectionRefusedError`"
-#: ../Doc/c-api/exceptions.rst:838
+#: ../Doc/c-api/exceptions.rst:844
msgid ":exc:`ConnectionRefusedError`"
msgstr ":exc:`ConnectionRefusedError`"
-#: ../Doc/c-api/exceptions.rst:840
+#: ../Doc/c-api/exceptions.rst:846
msgid ":c:data:`PyExc_ConnectionResetError`"
msgstr ":c:data:`PyExc_ConnectionResetError`"
-#: ../Doc/c-api/exceptions.rst:840
+#: ../Doc/c-api/exceptions.rst:846
msgid ":exc:`ConnectionResetError`"
msgstr ":exc:`ConnectionResetError`"
-#: ../Doc/c-api/exceptions.rst:842
+#: ../Doc/c-api/exceptions.rst:848
msgid ":c:data:`PyExc_EOFError`"
msgstr ":c:data:`PyExc_EOFError`"
-#: ../Doc/c-api/exceptions.rst:842
+#: ../Doc/c-api/exceptions.rst:848
msgid ":exc:`EOFError`"
msgstr ":exc:`EOFError`"
-#: ../Doc/c-api/exceptions.rst:844
+#: ../Doc/c-api/exceptions.rst:850
msgid ":c:data:`PyExc_FileExistsError`"
msgstr ":c:data:`PyExc_FileExistsError`"
-#: ../Doc/c-api/exceptions.rst:844
+#: ../Doc/c-api/exceptions.rst:850
msgid ":exc:`FileExistsError`"
msgstr ":exc:`FileExistsError`"
-#: ../Doc/c-api/exceptions.rst:846
+#: ../Doc/c-api/exceptions.rst:852
msgid ":c:data:`PyExc_FileNotFoundError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: ../Doc/c-api/exceptions.rst:846
+#: ../Doc/c-api/exceptions.rst:852
msgid ":exc:`FileNotFoundError`"
msgstr ":exc:`FileNotFoundError`"
-#: ../Doc/c-api/exceptions.rst:848
+#: ../Doc/c-api/exceptions.rst:854
msgid ":c:data:`PyExc_FloatingPointError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: ../Doc/c-api/exceptions.rst:848
+#: ../Doc/c-api/exceptions.rst:854
msgid ":exc:`FloatingPointError`"
msgstr ":exc:`FloatingPointError`"
-#: ../Doc/c-api/exceptions.rst:850
+#: ../Doc/c-api/exceptions.rst:856
msgid ":c:data:`PyExc_GeneratorExit`"
msgstr ":c:data:`PyExc_GeneratorExit`"
-#: ../Doc/c-api/exceptions.rst:850
+#: ../Doc/c-api/exceptions.rst:856
msgid ":exc:`GeneratorExit`"
msgstr ":exc:`GeneratorExit`"
-#: ../Doc/c-api/exceptions.rst:852
+#: ../Doc/c-api/exceptions.rst:858
msgid ":c:data:`PyExc_ImportError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: ../Doc/c-api/exceptions.rst:852
+#: ../Doc/c-api/exceptions.rst:858
msgid ":exc:`ImportError`"
msgstr ":exc:`ImportError`"
-#: ../Doc/c-api/exceptions.rst:854
+#: ../Doc/c-api/exceptions.rst:860
msgid ":c:data:`PyExc_IndentationError`"
msgstr ":c:data:`PyExc_IndentationError`"
-#: ../Doc/c-api/exceptions.rst:854
+#: ../Doc/c-api/exceptions.rst:860
msgid ":exc:`IndentationError`"
msgstr ":exc:`IndentationError`"
-#: ../Doc/c-api/exceptions.rst:856
+#: ../Doc/c-api/exceptions.rst:862
msgid ":c:data:`PyExc_IndexError`"
msgstr ":c:data:`PyExc_IndexError`"
-#: ../Doc/c-api/exceptions.rst:856
+#: ../Doc/c-api/exceptions.rst:862
msgid ":exc:`IndexError`"
msgstr ":exc:`IndexError`"
-#: ../Doc/c-api/exceptions.rst:858
+#: ../Doc/c-api/exceptions.rst:864
msgid ":c:data:`PyExc_InterruptedError`"
msgstr ":c:data:`PyExc_InterruptedError`"
-#: ../Doc/c-api/exceptions.rst:858
+#: ../Doc/c-api/exceptions.rst:864
msgid ":exc:`InterruptedError`"
msgstr ":exc:`InterruptedError`"
-#: ../Doc/c-api/exceptions.rst:860
+#: ../Doc/c-api/exceptions.rst:866
msgid ":c:data:`PyExc_IsADirectoryError`"
msgstr ":c:data:`PyExc_IsADirectoryError`"
-#: ../Doc/c-api/exceptions.rst:860
+#: ../Doc/c-api/exceptions.rst:866
msgid ":exc:`IsADirectoryError`"
msgstr ":exc:`IsADirectoryError`"
-#: ../Doc/c-api/exceptions.rst:862
+#: ../Doc/c-api/exceptions.rst:868
msgid ":c:data:`PyExc_KeyError`"
msgstr ":c:data:`PyExc_KeyError`"
-#: ../Doc/c-api/exceptions.rst:862
+#: ../Doc/c-api/exceptions.rst:868
msgid ":exc:`KeyError`"
msgstr ":exc:`KeyError`"
-#: ../Doc/c-api/exceptions.rst:864
+#: ../Doc/c-api/exceptions.rst:870
msgid ":c:data:`PyExc_KeyboardInterrupt`"
msgstr ":c:data:`PyExc_KeyboardInterrupt`"
-#: ../Doc/c-api/exceptions.rst:864
+#: ../Doc/c-api/exceptions.rst:870
msgid ":exc:`KeyboardInterrupt`"
msgstr ":exc:`KeyboardInterrupt`"
-#: ../Doc/c-api/exceptions.rst:866
+#: ../Doc/c-api/exceptions.rst:872
msgid ":c:data:`PyExc_LookupError`"
msgstr ":c:data:`PyExc_LookupError`"
-#: ../Doc/c-api/exceptions.rst:866
+#: ../Doc/c-api/exceptions.rst:872
msgid ":exc:`LookupError`"
msgstr ":exc:`LookupError`"
-#: ../Doc/c-api/exceptions.rst:868
+#: ../Doc/c-api/exceptions.rst:874
msgid ":c:data:`PyExc_MemoryError`"
msgstr ":c:data:`PyExc_MemoryError`"
-#: ../Doc/c-api/exceptions.rst:868
+#: ../Doc/c-api/exceptions.rst:874
msgid ":exc:`MemoryError`"
msgstr ":exc:`MemoryError`"
-#: ../Doc/c-api/exceptions.rst:870
+#: ../Doc/c-api/exceptions.rst:876
msgid ":c:data:`PyExc_ModuleNotFoundError`"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:870
+#: ../Doc/c-api/exceptions.rst:876
msgid ":exc:`ModuleNotFoundError`"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:872
+#: ../Doc/c-api/exceptions.rst:878
msgid ":c:data:`PyExc_NameError`"
msgstr ":c:data:`PyExc_NameError`"
-#: ../Doc/c-api/exceptions.rst:872
+#: ../Doc/c-api/exceptions.rst:878
msgid ":exc:`NameError`"
msgstr ":exc:`NameError`"
-#: ../Doc/c-api/exceptions.rst:874
+#: ../Doc/c-api/exceptions.rst:880
msgid ":c:data:`PyExc_NotADirectoryError`"
msgstr ":c:data:`PyExc_NotADirectoryError`"
-#: ../Doc/c-api/exceptions.rst:874
+#: ../Doc/c-api/exceptions.rst:880
msgid ":exc:`NotADirectoryError`"
msgstr ":exc:`NotADirectoryError`"
-#: ../Doc/c-api/exceptions.rst:876
+#: ../Doc/c-api/exceptions.rst:882
msgid ":c:data:`PyExc_NotImplementedError`"
msgstr ":c:data:`PyExc_NotImplementedError`"
-#: ../Doc/c-api/exceptions.rst:876
+#: ../Doc/c-api/exceptions.rst:882
msgid ":exc:`NotImplementedError`"
msgstr ":exc:`NotImplementedError`"
-#: ../Doc/c-api/exceptions.rst:878
+#: ../Doc/c-api/exceptions.rst:884
msgid ":c:data:`PyExc_OSError`"
msgstr ":c:data:`PyExc_OSError`"
-#: ../Doc/c-api/exceptions.rst:878
+#: ../Doc/c-api/exceptions.rst:884
msgid ":exc:`OSError`"
msgstr ":exc:`OSError`"
-#: ../Doc/c-api/exceptions.rst:880
+#: ../Doc/c-api/exceptions.rst:886
msgid ":c:data:`PyExc_OverflowError`"
msgstr ":c:data:`PyExc_OverflowError`"
-#: ../Doc/c-api/exceptions.rst:880
+#: ../Doc/c-api/exceptions.rst:886
msgid ":exc:`OverflowError`"
msgstr ":exc:`OverflowError`"
-#: ../Doc/c-api/exceptions.rst:882
+#: ../Doc/c-api/exceptions.rst:888
msgid ":c:data:`PyExc_PermissionError`"
msgstr ":c:data:`PyExc_PermissionError`"
-#: ../Doc/c-api/exceptions.rst:882
+#: ../Doc/c-api/exceptions.rst:888
msgid ":exc:`PermissionError`"
msgstr ":exc:`PermissionError`"
-#: ../Doc/c-api/exceptions.rst:884
+#: ../Doc/c-api/exceptions.rst:890
msgid ":c:data:`PyExc_ProcessLookupError`"
msgstr ":c:data:`PyExc_ProcessLookupError`"
-#: ../Doc/c-api/exceptions.rst:884
+#: ../Doc/c-api/exceptions.rst:890
msgid ":exc:`ProcessLookupError`"
msgstr ":exc:`ProcessLookupError`"
-#: ../Doc/c-api/exceptions.rst:886
+#: ../Doc/c-api/exceptions.rst:892
msgid ":c:data:`PyExc_RecursionError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: ../Doc/c-api/exceptions.rst:886
+#: ../Doc/c-api/exceptions.rst:892
msgid ":exc:`RecursionError`"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:888
+#: ../Doc/c-api/exceptions.rst:894
msgid ":c:data:`PyExc_ReferenceError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: ../Doc/c-api/exceptions.rst:888
+#: ../Doc/c-api/exceptions.rst:894
msgid ":exc:`ReferenceError`"
msgstr ":exc:`ReferenceError`"
-#: ../Doc/c-api/exceptions.rst:888
+#: ../Doc/c-api/exceptions.rst:894
msgid "\\(2)"
msgstr "\\(2)"
-#: ../Doc/c-api/exceptions.rst:890
+#: ../Doc/c-api/exceptions.rst:896
msgid ":c:data:`PyExc_RuntimeError`"
msgstr ":c:data:`PyExc_RuntimeError`"
-#: ../Doc/c-api/exceptions.rst:890
+#: ../Doc/c-api/exceptions.rst:896
msgid ":exc:`RuntimeError`"
msgstr ":exc:`RuntimeError`"
-#: ../Doc/c-api/exceptions.rst:892
+#: ../Doc/c-api/exceptions.rst:898
msgid ":c:data:`PyExc_StopAsyncIteration`"
msgstr ":c:data:`PyExc_StopAsyncIteration`"
-#: ../Doc/c-api/exceptions.rst:892
+#: ../Doc/c-api/exceptions.rst:898
msgid ":exc:`StopAsyncIteration`"
msgstr ":exc:`StopAsyncIteration`"
-#: ../Doc/c-api/exceptions.rst:894
+#: ../Doc/c-api/exceptions.rst:900
msgid ":c:data:`PyExc_StopIteration`"
msgstr ":c:data:`PyExc_StopIteration`"
-#: ../Doc/c-api/exceptions.rst:894
+#: ../Doc/c-api/exceptions.rst:900
msgid ":exc:`StopIteration`"
msgstr ":exc:`StopIteration`"
-#: ../Doc/c-api/exceptions.rst:896
+#: ../Doc/c-api/exceptions.rst:902
msgid ":c:data:`PyExc_SyntaxError`"
msgstr ":c:data:`PyExc_SyntaxError`"
-#: ../Doc/c-api/exceptions.rst:896
+#: ../Doc/c-api/exceptions.rst:902
msgid ":exc:`SyntaxError`"
msgstr ":exc:`SyntaxError`"
-#: ../Doc/c-api/exceptions.rst:898
+#: ../Doc/c-api/exceptions.rst:904
msgid ":c:data:`PyExc_SystemError`"
msgstr ":c:data:`PyExc_SystemError`"
-#: ../Doc/c-api/exceptions.rst:898
+#: ../Doc/c-api/exceptions.rst:904
msgid ":exc:`SystemError`"
msgstr ":exc:`SystemError`"
-#: ../Doc/c-api/exceptions.rst:900
+#: ../Doc/c-api/exceptions.rst:906
msgid ":c:data:`PyExc_SystemExit`"
msgstr ":c:data:`PyExc_SystemExit`"
-#: ../Doc/c-api/exceptions.rst:900
+#: ../Doc/c-api/exceptions.rst:906
msgid ":exc:`SystemExit`"
msgstr ":exc:`SystemExit`"
-#: ../Doc/c-api/exceptions.rst:902
+#: ../Doc/c-api/exceptions.rst:908
msgid ":c:data:`PyExc_TabError`"
msgstr ":c:data:`PyExc_TabError`"
-#: ../Doc/c-api/exceptions.rst:902
+#: ../Doc/c-api/exceptions.rst:908
msgid ":exc:`TabError`"
msgstr ":exc:`TabError`"
-#: ../Doc/c-api/exceptions.rst:904
+#: ../Doc/c-api/exceptions.rst:910
msgid ":c:data:`PyExc_TimeoutError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: ../Doc/c-api/exceptions.rst:904
+#: ../Doc/c-api/exceptions.rst:910
msgid ":exc:`TimeoutError`"
msgstr ":exc:`TimeoutError`"
-#: ../Doc/c-api/exceptions.rst:906
+#: ../Doc/c-api/exceptions.rst:912
msgid ":c:data:`PyExc_TypeError`"
msgstr ":c:data:`PyExc_TypeError`"
-#: ../Doc/c-api/exceptions.rst:906
+#: ../Doc/c-api/exceptions.rst:912
msgid ":exc:`TypeError`"
msgstr ":exc:`TypeError`"
-#: ../Doc/c-api/exceptions.rst:908
+#: ../Doc/c-api/exceptions.rst:914
msgid ":c:data:`PyExc_UnboundLocalError`"
msgstr ":c:data:`PyExc_UnboundLocalError`"
-#: ../Doc/c-api/exceptions.rst:908
+#: ../Doc/c-api/exceptions.rst:914
msgid ":exc:`UnboundLocalError`"
msgstr ":exc:`UnboundLocalError`"
-#: ../Doc/c-api/exceptions.rst:910
+#: ../Doc/c-api/exceptions.rst:916
msgid ":c:data:`PyExc_UnicodeDecodeError`"
msgstr ":c:data:`PyExc_UnicodeDecodeError`"
-#: ../Doc/c-api/exceptions.rst:910
+#: ../Doc/c-api/exceptions.rst:916
msgid ":exc:`UnicodeDecodeError`"
msgstr ":exc:`UnicodeDecodeError`"
-#: ../Doc/c-api/exceptions.rst:912
+#: ../Doc/c-api/exceptions.rst:918
msgid ":c:data:`PyExc_UnicodeEncodeError`"
msgstr ":c:data:`PyExc_UnicodeEncodeError`"
-#: ../Doc/c-api/exceptions.rst:912
+#: ../Doc/c-api/exceptions.rst:918
msgid ":exc:`UnicodeEncodeError`"
msgstr ":exc:`UnicodeEncodeError`"
-#: ../Doc/c-api/exceptions.rst:914
+#: ../Doc/c-api/exceptions.rst:920
msgid ":c:data:`PyExc_UnicodeError`"
msgstr ":c:data:`PyExc_UnicodeError`"
-#: ../Doc/c-api/exceptions.rst:914
+#: ../Doc/c-api/exceptions.rst:920
msgid ":exc:`UnicodeError`"
msgstr ":exc:`UnicodeError`"
-#: ../Doc/c-api/exceptions.rst:916
+#: ../Doc/c-api/exceptions.rst:922
msgid ":c:data:`PyExc_UnicodeTranslateError`"
msgstr ":c:data:`PyExc_UnicodeTranslateError`"
-#: ../Doc/c-api/exceptions.rst:916
+#: ../Doc/c-api/exceptions.rst:922
msgid ":exc:`UnicodeTranslateError`"
msgstr ":exc:`UnicodeTranslateError`"
-#: ../Doc/c-api/exceptions.rst:918
+#: ../Doc/c-api/exceptions.rst:924
msgid ":c:data:`PyExc_ValueError`"
msgstr ":c:data:`PyExc_ValueError`"
-#: ../Doc/c-api/exceptions.rst:918
+#: ../Doc/c-api/exceptions.rst:924
msgid ":exc:`ValueError`"
msgstr ":exc:`ValueError`"
-#: ../Doc/c-api/exceptions.rst:920
+#: ../Doc/c-api/exceptions.rst:926
msgid ":c:data:`PyExc_ZeroDivisionError`"
msgstr ":c:data:`PyExc_ZeroDivisionError`"
-#: ../Doc/c-api/exceptions.rst:920
+#: ../Doc/c-api/exceptions.rst:926
msgid ":exc:`ZeroDivisionError`"
msgstr ":exc:`ZeroDivisionError`"
-#: ../Doc/c-api/exceptions.rst:923
+#: ../Doc/c-api/exceptions.rst:929
msgid ""
":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:"
"`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:"
@@ -1242,61 +1258,61 @@ msgid ""
"`PyExc_TimeoutError` were introduced following :pep:`3151`."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:933
+#: ../Doc/c-api/exceptions.rst:939
msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`."
msgstr ":c:data:`PyExc_StopAsyncIteration` et :c:data:`PyExc_RecursionError`."
-#: ../Doc/c-api/exceptions.rst:936
+#: ../Doc/c-api/exceptions.rst:942
msgid ":c:data:`PyExc_ModuleNotFoundError`."
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: ../Doc/c-api/exceptions.rst:939
+#: ../Doc/c-api/exceptions.rst:945
msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:949
+#: ../Doc/c-api/exceptions.rst:955
msgid ":c:data:`PyExc_EnvironmentError`"
msgstr ":c:data:`PyExc_EnvironmentError`"
-#: ../Doc/c-api/exceptions.rst:951
+#: ../Doc/c-api/exceptions.rst:957
msgid ":c:data:`PyExc_IOError`"
msgstr ":c:data:`PyExc_IOError`"
-#: ../Doc/c-api/exceptions.rst:953
+#: ../Doc/c-api/exceptions.rst:959
msgid ":c:data:`PyExc_WindowsError`"
msgstr ":c:data:`PyExc_WindowsError`"
-#: ../Doc/c-api/exceptions.rst:953
+#: ../Doc/c-api/exceptions.rst:959
msgid "\\(3)"
msgstr "\\(3)"
-#: ../Doc/c-api/exceptions.rst:956
+#: ../Doc/c-api/exceptions.rst:962
msgid "These aliases used to be separate exception types."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:959 ../Doc/c-api/exceptions.rst:1023
+#: ../Doc/c-api/exceptions.rst:965 ../Doc/c-api/exceptions.rst:1029
msgid "Notes:"
msgstr "Notes :"
-#: ../Doc/c-api/exceptions.rst:962
+#: ../Doc/c-api/exceptions.rst:968
msgid "This is a base class for other standard exceptions."
msgstr "C'est la classe de base pour les autres exceptions standards."
-#: ../Doc/c-api/exceptions.rst:965
+#: ../Doc/c-api/exceptions.rst:971
msgid "This is the same as :exc:`weakref.ReferenceError`."
msgstr "Identique à :exc:`weakref.ReferenceError`."
-#: ../Doc/c-api/exceptions.rst:968
+#: ../Doc/c-api/exceptions.rst:974
msgid ""
"Only defined on Windows; protect code that uses this by testing that the "
"preprocessor macro ``MS_WINDOWS`` is defined."
msgstr ""
-#: ../Doc/c-api/exceptions.rst:974
+#: ../Doc/c-api/exceptions.rst:980
msgid "Standard Warning Categories"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:976
+#: ../Doc/c-api/exceptions.rst:982
msgid ""
"All standard Python warning categories are available as global variables "
"whose names are ``PyExc_`` followed by the Python exception name. These have "
@@ -1304,98 +1320,98 @@ msgid ""
"completeness, here are all the variables:"
msgstr ""
-#: ../Doc/c-api/exceptions.rst:997
+#: ../Doc/c-api/exceptions.rst:1003
msgid ":c:data:`PyExc_Warning`"
msgstr ":c:data:`PyExc_Warning`"
-#: ../Doc/c-api/exceptions.rst:997
+#: ../Doc/c-api/exceptions.rst:1003
msgid ":exc:`Warning`"
msgstr ":exc:`Warning`"
-#: ../Doc/c-api/exceptions.rst:999
+#: ../Doc/c-api/exceptions.rst:1005
msgid ":c:data:`PyExc_BytesWarning`"
msgstr ":c:data:`PyExc_BytesWarning`"
-#: ../Doc/c-api/exceptions.rst:999
+#: ../Doc/c-api/exceptions.rst:1005
msgid ":exc:`BytesWarning`"
msgstr ":exc:`BytesWarning`"
-#: ../Doc/c-api/exceptions.rst:1001
+#: ../Doc/c-api/exceptions.rst:1007
msgid ":c:data:`PyExc_DeprecationWarning`"
msgstr ":c:data:`PyExc_DeprecationWarning`"
-#: ../Doc/c-api/exceptions.rst:1001
+#: ../Doc/c-api/exceptions.rst:1007
msgid ":exc:`DeprecationWarning`"
msgstr ":exc:`DeprecationWarning`"
-#: ../Doc/c-api/exceptions.rst:1003
+#: ../Doc/c-api/exceptions.rst:1009
msgid ":c:data:`PyExc_FutureWarning`"
msgstr ":c:data:`PyExc_FutureWarning`"
-#: ../Doc/c-api/exceptions.rst:1003
+#: ../Doc/c-api/exceptions.rst:1009
msgid ":exc:`FutureWarning`"
msgstr ":exc:`FutureWarning`"
-#: ../Doc/c-api/exceptions.rst:1005
+#: ../Doc/c-api/exceptions.rst:1011
msgid ":c:data:`PyExc_ImportWarning`"
msgstr ":c:data:`PyExc_ImportWarning`"
-#: ../Doc/c-api/exceptions.rst:1005
+#: ../Doc/c-api/exceptions.rst:1011
msgid ":exc:`ImportWarning`"
msgstr ":exc:`ImportWarning`"
-#: ../Doc/c-api/exceptions.rst:1007
+#: ../Doc/c-api/exceptions.rst:1013
msgid ":c:data:`PyExc_PendingDeprecationWarning`"
msgstr ":c:data:`PyExc_PendingDeprecationWarning`"
-#: ../Doc/c-api/exceptions.rst:1007
+#: ../Doc/c-api/exceptions.rst:1013
msgid ":exc:`PendingDeprecationWarning`"
msgstr ":exc:`PendingDeprecationWarning`"
-#: ../Doc/c-api/exceptions.rst:1009
+#: ../Doc/c-api/exceptions.rst:1015
msgid ":c:data:`PyExc_ResourceWarning`"
msgstr ":c:data:`PyExc_ResourceWarning`"
-#: ../Doc/c-api/exceptions.rst:1009
+#: ../Doc/c-api/exceptions.rst:1015
msgid ":exc:`ResourceWarning`"
msgstr ":exc:`ResourceWarning`"
-#: ../Doc/c-api/exceptions.rst:1011
+#: ../Doc/c-api/exceptions.rst:1017
msgid ":c:data:`PyExc_RuntimeWarning`"
msgstr ":c:data:`PyExc_RuntimeWarning`"
-#: ../Doc/c-api/exceptions.rst:1011
+#: ../Doc/c-api/exceptions.rst:1017
msgid ":exc:`RuntimeWarning`"
msgstr ":exc:`RuntimeWarning`"
-#: ../Doc/c-api/exceptions.rst:1013
+#: ../Doc/c-api/exceptions.rst:1019
msgid ":c:data:`PyExc_SyntaxWarning`"
msgstr ":c:data:`PyExc_SyntaxWarning`"
-#: ../Doc/c-api/exceptions.rst:1013
+#: ../Doc/c-api/exceptions.rst:1019
msgid ":exc:`SyntaxWarning`"
msgstr ":exc:`SyntaxWarning`"
-#: ../Doc/c-api/exceptions.rst:1015
+#: ../Doc/c-api/exceptions.rst:1021
msgid ":c:data:`PyExc_UnicodeWarning`"
msgstr ":c:data:`PyExc_UnicodeWarning`"
-#: ../Doc/c-api/exceptions.rst:1015
+#: ../Doc/c-api/exceptions.rst:1021
msgid ":exc:`UnicodeWarning`"
msgstr ":exc:`UnicodeWarning`"
-#: ../Doc/c-api/exceptions.rst:1017
+#: ../Doc/c-api/exceptions.rst:1023
msgid ":c:data:`PyExc_UserWarning`"
msgstr ":c:data:`PyExc_UserWarning`"
-#: ../Doc/c-api/exceptions.rst:1017
+#: ../Doc/c-api/exceptions.rst:1023
msgid ":exc:`UserWarning`"
msgstr ":exc:`UserWarning`"
-#: ../Doc/c-api/exceptions.rst:1020
+#: ../Doc/c-api/exceptions.rst:1026
msgid ":c:data:`PyExc_ResourceWarning`."
msgstr ":c:data:`PyExc_ResourceWarning`."
-#: ../Doc/c-api/exceptions.rst:1026
+#: ../Doc/c-api/exceptions.rst:1032
msgid "This is a base class for other standard warning categories."
msgstr "C'est la classe de base pour les autres catégories de *warning*."
diff --git a/c-api/float.po b/c-api/float.po
index 522f0fd81..8710d59ae 100644
--- a/c-api/float.po
+++ b/c-api/float.po
@@ -5,9 +5,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-03-11 12:59+0100\n"
+"PO-Revision-Date: 2019-01-14 15:30+0100\n"
+"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -16,40 +16,53 @@ msgstr ""
#: ../Doc/c-api/float.rst:6
msgid "Floating Point Objects"
-msgstr ""
+msgstr "Objets représentant les nombres à virgule flottante"
#: ../Doc/c-api/float.rst:13
msgid ""
"This subtype of :c:type:`PyObject` represents a Python floating point object."
msgstr ""
+"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre à virgule "
+"flottante en Python."
#: ../Doc/c-api/float.rst:18
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python floating point "
"type. This is the same object as :class:`float` in the Python layer."
msgstr ""
+"Cette instance de l'objet :c:type:`PyTypeObject` représente le type nombre à "
+"virgule flottante en Python. C'est le même objet que la classe :class:"
+"`float` de la couche Python."
#: ../Doc/c-api/float.rst:24
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject` or a subtype of :c:"
"type:`PyFloatObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject` ou un sous-"
+"type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:30
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject`, but not a subtype "
"of :c:type:`PyFloatObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject`, mais pas un "
+"sous-type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:36
msgid ""
"Create a :c:type:`PyFloatObject` object based on the string value in *str*, "
"or *NULL* on failure."
msgstr ""
+"Crée un objet :c:type:`PyFloatObject` à partir de la valeur de la chaîne de "
+"caractères *str*, ou *NULL* en cas d'échec."
#: ../Doc/c-api/float.rst:42
msgid "Create a :c:type:`PyFloatObject` object from *v*, or *NULL* on failure."
msgstr ""
+"Crée un objet :c:type:`PyFloatObject` à partir de *v*, ou *NULL* en cas "
+"d'échec."
#: ../Doc/c-api/float.rst:47
msgid ""
@@ -59,12 +72,20 @@ msgid ""
"This method returns ``-1.0`` upon failure, so one should call :c:func:"
"`PyErr_Occurred` to check for errors."
msgstr ""
+"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
+"type:`double` en C. Si le *pyfloat* n'est pas un nombre à virgule flottante "
+"mais contient une méthode :meth:`__float__`, elle est d'abord appelée pour "
+"convertir le *pyfloat* en nombre à virgule flottante. Cette méthode renvoie "
+"``-1.0`` en cas d'échec, il faut appeler :c:func:`PyErr_Occurred` pour "
+"vérifier les erreurs."
#: ../Doc/c-api/float.rst:56
msgid ""
"Return a C :c:type:`double` representation of the contents of *pyfloat*, but "
"without error checking."
msgstr ""
+"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
+"type:`double` en C, sans vérifier les erreurs."
#: ../Doc/c-api/float.rst:62
msgid ""
@@ -72,20 +93,29 @@ msgid ""
"minimum and maximum values of a float. It's a thin wrapper around the header "
"file :file:`float.h`."
msgstr ""
+"Renvoie une instance *structseq* qui contient les informations sur la "
+"précision et les valeurs minimales et maximales pour un nombre à virgule "
+"flottante. C'est une enveloppe autour du fichier d'entête :file:`float.h`."
#: ../Doc/c-api/float.rst:69
msgid ""
"Return the maximum representable finite float *DBL_MAX* as C :c:type:"
"`double`."
msgstr ""
+"Renvoie le nombre à virgule flottante fini maximal *DBL_MAX* sous la forme "
+"d'un :c:type:`double` en C."
#: ../Doc/c-api/float.rst:74
msgid ""
"Return the minimum normalized positive float *DBL_MIN* as C :c:type:`double`."
msgstr ""
+"Renvoie le nombre à virgule flottante minimal normalisé *DBL_MIN* sous la "
+"forme :c:type:`double` en C."
#: ../Doc/c-api/float.rst:78
msgid ""
"Clear the float free list. Return the number of items that could not be "
"freed."
msgstr ""
+"Libère la mémoire de la *free list* des nombres à virgule flottante. Renvoie "
+"le nombre d'éléments qui n'ont pas pu être libérés."
diff --git a/c-api/init.po b/c-api/init.po
index ae2debb7c..612174cc8 100644
--- a/c-api/init.po
+++ b/c-api/init.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-29 16:06+0100\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: 2018-11-29 18:22+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -96,62 +96,66 @@ msgid "Informative functions:"
msgstr ""
#: ../Doc/c-api/init.rst:40
-msgid ":c:func:`PyMem_GetAllocator`"
+msgid ":c:func:`Py_IsInitialized`"
msgstr ""
#: ../Doc/c-api/init.rst:41
-msgid ":c:func:`PyObject_GetArenaAllocator`"
+msgid ":c:func:`PyMem_GetAllocator`"
msgstr ""
#: ../Doc/c-api/init.rst:42
-msgid ":c:func:`Py_GetBuildInfo`"
+msgid ":c:func:`PyObject_GetArenaAllocator`"
msgstr ""
#: ../Doc/c-api/init.rst:43
-msgid ":c:func:`Py_GetCompiler`"
+msgid ":c:func:`Py_GetBuildInfo`"
msgstr ""
#: ../Doc/c-api/init.rst:44
-msgid ":c:func:`Py_GetCopyright`"
+msgid ":c:func:`Py_GetCompiler`"
msgstr ""
#: ../Doc/c-api/init.rst:45
-msgid ":c:func:`Py_GetPlatform`"
+msgid ":c:func:`Py_GetCopyright`"
msgstr ""
#: ../Doc/c-api/init.rst:46
+msgid ":c:func:`Py_GetPlatform`"
+msgstr ""
+
+#: ../Doc/c-api/init.rst:47
msgid ":c:func:`Py_GetVersion`"
msgstr ""
-#: ../Doc/c-api/init.rst:48
+#: ../Doc/c-api/init.rst:49
msgid "Utilities:"
msgstr ""
-#: ../Doc/c-api/init.rst:50
+#: ../Doc/c-api/init.rst:51
msgid ":c:func:`Py_DecodeLocale`"
msgstr ""
-#: ../Doc/c-api/init.rst:52
+#: ../Doc/c-api/init.rst:53
msgid "Memory allocators:"
msgstr ""
-#: ../Doc/c-api/init.rst:54
+#: ../Doc/c-api/init.rst:55
msgid ":c:func:`PyMem_RawMalloc`"
msgstr ""
-#: ../Doc/c-api/init.rst:55
+#: ../Doc/c-api/init.rst:56
msgid ":c:func:`PyMem_RawRealloc`"
msgstr ""
-#: ../Doc/c-api/init.rst:56
+#: ../Doc/c-api/init.rst:57
msgid ":c:func:`PyMem_RawCalloc`"
msgstr ""
-#: ../Doc/c-api/init.rst:57
+#: ../Doc/c-api/init.rst:58
msgid ":c:func:`PyMem_RawFree`"
msgstr ""
-#: ../Doc/c-api/init.rst:61
+#: ../Doc/c-api/init.rst:62
msgid ""
"The following functions **should not be called** before :c:func:"
"`Py_Initialize`: :c:func:`Py_EncodeLocale`, :c:func:`Py_GetPath`, :c:func:"
@@ -160,18 +164,18 @@ msgid ""
"`Py_GetProgramName` and :c:func:`PyEval_InitThreads`."
msgstr ""
-#: ../Doc/c-api/init.rst:71
+#: ../Doc/c-api/init.rst:72
msgid "Global configuration variables"
msgstr ""
-#: ../Doc/c-api/init.rst:73
+#: ../Doc/c-api/init.rst:74
msgid ""
"Python has variables for the global configuration to control different "
"features and options. By default, these flags are controlled by :ref:"
"`command line options `."
msgstr ""
-#: ../Doc/c-api/init.rst:77
+#: ../Doc/c-api/init.rst:78
msgid ""
"When a flag is set by an option, the value of the flag is the number of "
"times that the option was set. For example, ``-b`` sets :c:data:"
@@ -179,64 +183,64 @@ msgid ""
"2."
msgstr ""
-#: ../Doc/c-api/init.rst:83
+#: ../Doc/c-api/init.rst:84
msgid ""
"Issue a warning when comparing :class:`bytes` or :class:`bytearray` with :"
"class:`str` or :class:`bytes` with :class:`int`. Issue an error if greater "
"or equal to ``2``."
msgstr ""
-#: ../Doc/c-api/init.rst:87
+#: ../Doc/c-api/init.rst:88
msgid "Set by the :option:`-b` option."
msgstr ""
-#: ../Doc/c-api/init.rst:91
+#: ../Doc/c-api/init.rst:92
msgid ""
"Turn on parser debugging output (for expert only, depending on compilation "
"options)."
msgstr ""
-#: ../Doc/c-api/init.rst:94
+#: ../Doc/c-api/init.rst:95
msgid ""
"Set by the :option:`-d` option and the :envvar:`PYTHONDEBUG` environment "
"variable."
msgstr ""
-#: ../Doc/c-api/init.rst:99
+#: ../Doc/c-api/init.rst:100
msgid ""
"If set to non-zero, Python won't try to write ``.pyc`` files on the import "
"of source modules."
msgstr ""
-#: ../Doc/c-api/init.rst:102
+#: ../Doc/c-api/init.rst:103
msgid ""
"Set by the :option:`-B` option and the :envvar:`PYTHONDONTWRITEBYTECODE` "
"environment variable."
msgstr ""
-#: ../Doc/c-api/init.rst:107
+#: ../Doc/c-api/init.rst:108
msgid ""
"Suppress error messages when calculating the module search path in :c:func:"
"`Py_GetPath`."
msgstr ""
-#: ../Doc/c-api/init.rst:110
+#: ../Doc/c-api/init.rst:111
msgid "Private flag used by ``_freeze_importlib`` and ``frozenmain`` programs."
msgstr ""
-#: ../Doc/c-api/init.rst:114
+#: ../Doc/c-api/init.rst:115
msgid ""
"Set to ``1`` if the :envvar:`PYTHONHASHSEED` environment variable is set to "
"a non-empty string."
msgstr ""
-#: ../Doc/c-api/init.rst:117
+#: ../Doc/c-api/init.rst:118
msgid ""
"If the flag is non-zero, read the :envvar:`PYTHONHASHSEED` environment "
"variable to initialize the secret hash seed."
msgstr ""
-#: ../Doc/c-api/init.rst:122
+#: ../Doc/c-api/init.rst:123
msgid ""
"Ignore all :envvar:`PYTHON*` environment variables, e.g. :envvar:"
"`PYTHONPATH` and :envvar:`PYTHONHOME`, that might be set."
@@ -244,74 +248,74 @@ msgstr ""
"Ignore toutes les variables d'environnement :envvar:`PYTHON*` qui pourraient "
"être définies. Par exemple, :envvar:`PYTHONPATH` et :envvar:`PYTHONHOME`."
-#: ../Doc/c-api/init.rst:125
+#: ../Doc/c-api/init.rst:126
msgid "Set by the :option:`-E` and :option:`-I` options."
msgstr ""
-#: ../Doc/c-api/init.rst:129
+#: ../Doc/c-api/init.rst:130
msgid ""
"When a script is passed as first argument or the :option:`-c` option is "
"used, enter interactive mode after executing the script or the command, even "
"when :data:`sys.stdin` does not appear to be a terminal."
msgstr ""
-#: ../Doc/c-api/init.rst:133
+#: ../Doc/c-api/init.rst:134
msgid ""
"Set by the :option:`-i` option and the :envvar:`PYTHONINSPECT` environment "
"variable."
msgstr ""
-#: ../Doc/c-api/init.rst:138
+#: ../Doc/c-api/init.rst:139
msgid "Set by the :option:`-i` option."
msgstr ""
-#: ../Doc/c-api/init.rst:142
+#: ../Doc/c-api/init.rst:143
msgid ""
"Run Python in isolated mode. In isolated mode :data:`sys.path` contains "
"neither the script's directory nor the user's site-packages directory."
msgstr ""
-#: ../Doc/c-api/init.rst:145
+#: ../Doc/c-api/init.rst:146
msgid "Set by the :option:`-I` option."
msgstr ""
-#: ../Doc/c-api/init.rst:151
+#: ../Doc/c-api/init.rst:152
msgid ""
"If the flag is non-zero, use the ``mbcs`` encoding instead of the UTF-8 "
"encoding for the filesystem encoding."
msgstr ""
-#: ../Doc/c-api/init.rst:154
+#: ../Doc/c-api/init.rst:155
msgid ""
"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment "
"variable is set to a non-empty string."
msgstr ""
-#: ../Doc/c-api/init.rst:157
+#: ../Doc/c-api/init.rst:158
msgid "See :pep:`529` for more details."
msgstr "Voir la :pep:`529` pour plus d'informations."
-#: ../Doc/c-api/init.rst:159 ../Doc/c-api/init.rst:171
+#: ../Doc/c-api/init.rst:160 ../Doc/c-api/init.rst:172
msgid ":ref:`Availability `: Windows."
msgstr ":ref:`Disponibilité ` : Windows."
-#: ../Doc/c-api/init.rst:163
+#: ../Doc/c-api/init.rst:164
msgid ""
"If the flag is non-zero, use :class:`io.FileIO` instead of :class:"
"`WindowsConsoleIO` for :mod:`sys` standard streams."
msgstr ""
-#: ../Doc/c-api/init.rst:166
+#: ../Doc/c-api/init.rst:167
msgid ""
"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable "
"is set to a non-empty string."
msgstr ""
-#: ../Doc/c-api/init.rst:169
+#: ../Doc/c-api/init.rst:170
msgid "See :pep:`528` for more details."
msgstr ""
-#: ../Doc/c-api/init.rst:175
+#: ../Doc/c-api/init.rst:176
msgid ""
"Disable the import of the module :mod:`site` and the site-dependent "
"manipulations of :data:`sys.path` that it entails. Also disable these "
@@ -323,11 +327,11 @@ msgstr ""
"mod:`site` est importé explicitement plus tard (appelez :func:`site.main` si "
"vous voulez les déclencher)."
-#: ../Doc/c-api/init.rst:180
+#: ../Doc/c-api/init.rst:181
msgid "Set by the :option:`-S` option."
msgstr ""
-#: ../Doc/c-api/init.rst:184
+#: ../Doc/c-api/init.rst:185
msgid ""
"Don't add the :data:`user site-packages directory ` to :data:"
"`sys.path`."
@@ -335,38 +339,38 @@ msgstr ""
"N'ajoute pas le répertoire utilisateur :data:`site-packages ` à :data:`sys.path`."
-#: ../Doc/c-api/init.rst:187
+#: ../Doc/c-api/init.rst:188
msgid ""
"Set by the :option:`-s` and :option:`-I` options, and the :envvar:"
"`PYTHONNOUSERSITE` environment variable."
msgstr ""
-#: ../Doc/c-api/init.rst:192
+#: ../Doc/c-api/init.rst:193
msgid ""
"Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment "
"variable."
msgstr ""
-#: ../Doc/c-api/init.rst:197
+#: ../Doc/c-api/init.rst:198
msgid ""
"Don't display the copyright and version messages even in interactive mode."
msgstr "N'affiche pas le copyright et la version, même en mode interactif."
-#: ../Doc/c-api/init.rst:199
+#: ../Doc/c-api/init.rst:200
msgid "Set by the :option:`-q` option."
msgstr ""
-#: ../Doc/c-api/init.rst:205
+#: ../Doc/c-api/init.rst:206
msgid "Force the stdout and stderr streams to be unbuffered."
msgstr ""
-#: ../Doc/c-api/init.rst:207
+#: ../Doc/c-api/init.rst:208
msgid ""
"Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED` "
"environment variable."
msgstr ""
-#: ../Doc/c-api/init.rst:212
+#: ../Doc/c-api/init.rst:213
msgid ""
"Print a message each time a module is initialized, showing the place "
"(filename or built-in module) from which it is loaded. If greater or equal "
@@ -374,24 +378,24 @@ msgid ""
"for a module. Also provides information on module cleanup at exit."
msgstr ""
-#: ../Doc/c-api/init.rst:217
+#: ../Doc/c-api/init.rst:218
msgid ""
"Set by the :option:`-v` option and the :envvar:`PYTHONVERBOSE` environment "
"variable."
msgstr ""
-#: ../Doc/c-api/init.rst:222
+#: ../Doc/c-api/init.rst:223
msgid "Initializing and finalizing the interpreter"
msgstr ""
-#: ../Doc/c-api/init.rst:240
+#: ../Doc/c-api/init.rst:241
msgid ""
"Initialize the Python interpreter. In an application embedding Python, "
"this should be called before using any other Python/C API functions; see :"
"ref:`Before Python Initialization ` for the few exceptions."
msgstr ""
-#: ../Doc/c-api/init.rst:244
+#: ../Doc/c-api/init.rst:245
msgid ""
"This initializes the table of loaded modules (``sys.modules``), and creates "
"the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It "
@@ -401,27 +405,27 @@ msgid ""
"There is no return value; it is a fatal error if the initialization fails."
msgstr ""
-#: ../Doc/c-api/init.rst:253
+#: ../Doc/c-api/init.rst:254
msgid ""
"On Windows, changes the console mode from ``O_TEXT`` to ``O_BINARY``, which "
"will also affect non-Python uses of the console using the C Runtime."
msgstr ""
-#: ../Doc/c-api/init.rst:259
+#: ../Doc/c-api/init.rst:260
msgid ""
"This function works like :c:func:`Py_Initialize` if *initsigs* is ``1``. If "
"*initsigs* is ``0``, it skips initialization registration of signal "
"handlers, which might be useful when Python is embedded."
msgstr ""
-#: ../Doc/c-api/init.rst:266
+#: ../Doc/c-api/init.rst:267
msgid ""
"Return true (nonzero) when the Python interpreter has been initialized, "
"false (zero) if not. After :c:func:`Py_FinalizeEx` is called, this returns "
"false until :c:func:`Py_Initialize` is called again."
msgstr ""
-#: ../Doc/c-api/init.rst:273
+#: ../Doc/c-api/init.rst:274
msgid ""
"Undo all initializations made by :c:func:`Py_Initialize` and subsequent use "
"of Python/C API functions, and destroy all sub-interpreters (see :c:func:"
@@ -433,7 +437,7 @@ msgid ""
"(flushing buffered data), ``-1`` is returned."
msgstr ""
-#: ../Doc/c-api/init.rst:282
+#: ../Doc/c-api/init.rst:283
msgid ""
"This function is provided for a number of reasons. An embedding application "
"might want to restart Python without having to restart the application "
@@ -444,7 +448,7 @@ msgid ""
"Python before exiting from the application."
msgstr ""
-#: ../Doc/c-api/init.rst:290
+#: ../Doc/c-api/init.rst:291
msgid ""
"**Bugs and caveats:** The destruction of modules and objects in modules is "
"done in random order; this may cause destructors (:meth:`__del__` methods) "
@@ -459,54 +463,54 @@ msgid ""
"than once."
msgstr ""
-#: ../Doc/c-api/init.rst:306
+#: ../Doc/c-api/init.rst:307
msgid ""
"This is a backwards-compatible version of :c:func:`Py_FinalizeEx` that "
"disregards the return value."
msgstr ""
-#: ../Doc/c-api/init.rst:311
+#: ../Doc/c-api/init.rst:312
msgid "Process-wide parameters"
msgstr ""
-#: ../Doc/c-api/init.rst:321
+#: ../Doc/c-api/init.rst:322
msgid ""
"This function should be called before :c:func:`Py_Initialize`, if it is "
"called at all. It specifies which encoding and error handling to use with "
"standard IO, with the same meanings as in :func:`str.encode`."
msgstr ""
-#: ../Doc/c-api/init.rst:325
+#: ../Doc/c-api/init.rst:326
msgid ""
"It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code to "
"control IO encoding when the environment variable does not work."
msgstr ""
-#: ../Doc/c-api/init.rst:328
+#: ../Doc/c-api/init.rst:329
msgid ""
"``encoding`` and/or ``errors`` may be NULL to use :envvar:`PYTHONIOENCODING` "
"and/or default values (depending on other settings)."
msgstr ""
-#: ../Doc/c-api/init.rst:332
+#: ../Doc/c-api/init.rst:333
msgid ""
"Note that :data:`sys.stderr` always uses the \"backslashreplace\" error "
"handler, regardless of this (or any other) setting."
msgstr ""
-#: ../Doc/c-api/init.rst:335
+#: ../Doc/c-api/init.rst:336
msgid ""
"If :c:func:`Py_FinalizeEx` is called, this function will need to be called "
"again in order to affect subsequent calls to :c:func:`Py_Initialize`."
msgstr ""
-#: ../Doc/c-api/init.rst:338
+#: ../Doc/c-api/init.rst:339
msgid ""
"Returns ``0`` if successful, a nonzero value on error (e.g. calling after "
"the interpreter has already been initialized)."
msgstr ""
-#: ../Doc/c-api/init.rst:351
+#: ../Doc/c-api/init.rst:352
msgid ""
"This function should be called before :c:func:`Py_Initialize` is called for "
"the first time, if it is called at all. It tells the interpreter the value "
@@ -520,22 +524,22 @@ msgid ""
"this storage."
msgstr ""
-#: ../Doc/c-api/init.rst:362 ../Doc/c-api/init.rst:476
-#: ../Doc/c-api/init.rst:578 ../Doc/c-api/init.rst:605
-#: ../Doc/c-api/init.rst:622
+#: ../Doc/c-api/init.rst:363 ../Doc/c-api/init.rst:477
+#: ../Doc/c-api/init.rst:579 ../Doc/c-api/init.rst:606
+#: ../Doc/c-api/init.rst:623
msgid ""
"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:type:"
"`wchar_*` string."
msgstr ""
-#: ../Doc/c-api/init.rst:370
+#: ../Doc/c-api/init.rst:371
msgid ""
"Return the program name set with :c:func:`Py_SetProgramName`, or the "
"default. The returned string points into static storage; the caller should "
"not modify its value."
msgstr ""
-#: ../Doc/c-api/init.rst:377
+#: ../Doc/c-api/init.rst:378
msgid ""
"Return the *prefix* for installed platform-independent files. This is "
"derived through a number of complicated rules from the program name set "
@@ -549,7 +553,7 @@ msgid ""
"function."
msgstr ""
-#: ../Doc/c-api/init.rst:390
+#: ../Doc/c-api/init.rst:391
msgid ""
"Return the *exec-prefix* for installed platform-*dependent* files. This is "
"derived through a number of complicated rules from the program name set "
@@ -563,7 +567,7 @@ msgid ""
"on Unix."
msgstr ""
-#: ../Doc/c-api/init.rst:400
+#: ../Doc/c-api/init.rst:401
msgid ""
"Background: The exec-prefix differs from the prefix when platform dependent "
"files (such as executables and shared libraries) are installed in a "
@@ -572,7 +576,7 @@ msgid ""
"independent may be installed in :file:`/usr/local`."
msgstr ""
-#: ../Doc/c-api/init.rst:406
+#: ../Doc/c-api/init.rst:407
msgid ""
"Generally speaking, a platform is a combination of hardware and software "
"families, e.g. Sparc machines running the Solaris 2.x operating system are "
@@ -586,7 +590,7 @@ msgid ""
"independent from the Python version by which they were compiled!)."
msgstr ""
-#: ../Doc/c-api/init.rst:417
+#: ../Doc/c-api/init.rst:418
msgid ""
"System administrators will know how to configure the :program:`mount` or :"
"program:`automount` programs to share :file:`/usr/local` between platforms "
@@ -594,7 +598,7 @@ msgid ""
"platform."
msgstr ""
-#: ../Doc/c-api/init.rst:429
+#: ../Doc/c-api/init.rst:430
msgid ""
"Return the full program name of the Python executable; this is computed as "
"a side-effect of deriving the default module search path from the program "
@@ -603,7 +607,7 @@ msgid ""
"available to Python code as ``sys.executable``."
msgstr ""
-#: ../Doc/c-api/init.rst:443
+#: ../Doc/c-api/init.rst:444
msgid ""
"Return the default module search path; this is computed from the program "
"name (set by :c:func:`Py_SetProgramName` above) and some environment "
@@ -616,7 +620,7 @@ msgid ""
"for loading modules."
msgstr ""
-#: ../Doc/c-api/init.rst:463
+#: ../Doc/c-api/init.rst:464
msgid ""
"Set the default module search path. If this function is called before :c:"
"func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a "
@@ -627,7 +631,7 @@ msgid ""
"``';'`` on Windows."
msgstr ""
-#: ../Doc/c-api/init.rst:471
+#: ../Doc/c-api/init.rst:472
msgid ""
"This also causes :data:`sys.executable` to be set only to the raw program "
"name (see :c:func:`Py_SetProgramName`) and for :data:`sys.prefix` and :data:"
@@ -635,19 +639,19 @@ msgid ""
"required after calling :c:func:`Py_Initialize`."
msgstr ""
-#: ../Doc/c-api/init.rst:479
+#: ../Doc/c-api/init.rst:480
msgid ""
"The path argument is copied internally, so the caller may free it after the "
"call completes."
msgstr ""
-#: ../Doc/c-api/init.rst:485
+#: ../Doc/c-api/init.rst:486
msgid ""
"Return the version of this Python interpreter. This is a string that looks "
"something like ::"
msgstr ""
-#: ../Doc/c-api/init.rst:492
+#: ../Doc/c-api/init.rst:493
msgid ""
"The first word (up to the first space character) is the current Python "
"version; the first three characters are the major and minor version "
@@ -656,7 +660,7 @@ msgid ""
"as :data:`sys.version`."
msgstr ""
-#: ../Doc/c-api/init.rst:502
+#: ../Doc/c-api/init.rst:503
msgid ""
"Return the platform identifier for the current platform. On Unix, this is "
"formed from the \"official\" name of the operating system, converted to "
@@ -667,42 +671,42 @@ msgid ""
"value is available to Python code as ``sys.platform``."
msgstr ""
-#: ../Doc/c-api/init.rst:513
+#: ../Doc/c-api/init.rst:514
msgid ""
"Return the official copyright string for the current Python version, for "
"example"
msgstr ""
-#: ../Doc/c-api/init.rst:515
+#: ../Doc/c-api/init.rst:516
msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
msgstr ""
-#: ../Doc/c-api/init.rst:519
+#: ../Doc/c-api/init.rst:520
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as ``sys.copyright``."
msgstr ""
-#: ../Doc/c-api/init.rst:525
+#: ../Doc/c-api/init.rst:526
msgid ""
"Return an indication of the compiler used to build the current Python "
"version, in square brackets, for example::"
msgstr ""
-#: ../Doc/c-api/init.rst:532 ../Doc/c-api/init.rst:546
+#: ../Doc/c-api/init.rst:533 ../Doc/c-api/init.rst:547
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as part of the variable "
"``sys.version``."
msgstr ""
-#: ../Doc/c-api/init.rst:539
+#: ../Doc/c-api/init.rst:540
msgid ""
"Return information about the sequence number and build date and time of the "
"current Python interpreter instance, for example ::"
msgstr ""
-#: ../Doc/c-api/init.rst:558
+#: ../Doc/c-api/init.rst:559
msgid ""
"Set :data:`sys.argv` based on *argc* and *argv*. These parameters are "
"similar to those passed to the program's :c:func:`main` function with the "
@@ -713,28 +717,28 @@ msgid ""
"fatal condition is signalled using :c:func:`Py_FatalError`."
msgstr ""
-#: ../Doc/c-api/init.rst:566
+#: ../Doc/c-api/init.rst:567
msgid ""
"If *updatepath* is zero, this is all the function does. If *updatepath* is "
"non-zero, the function also modifies :data:`sys.path` according to the "
"following algorithm:"
msgstr ""
-#: ../Doc/c-api/init.rst:570
+#: ../Doc/c-api/init.rst:571
msgid ""
"If the name of an existing script is passed in ``argv[0]``, the absolute "
"path of the directory where the script is located is prepended to :data:`sys."
"path`."
msgstr ""
-#: ../Doc/c-api/init.rst:573
+#: ../Doc/c-api/init.rst:574
msgid ""
"Otherwise (that is, if *argc* is ``0`` or ``argv[0]`` doesn't point to an "
"existing file name), an empty string is prepended to :data:`sys.path`, which "
"is the same as prepending the current working directory (``\".\"``)."
msgstr ""
-#: ../Doc/c-api/init.rst:582
+#: ../Doc/c-api/init.rst:583
msgid ""
"It is recommended that applications embedding the Python interpreter for "
"purposes other than executing a single script pass ``0`` as *updatepath*, "
@@ -742,32 +746,32 @@ msgid ""
"`_."
msgstr ""
-#: ../Doc/c-api/init.rst:587
+#: ../Doc/c-api/init.rst:588
msgid ""
"On versions before 3.1.3, you can achieve the same effect by manually "
"popping the first :data:`sys.path` element after having called :c:func:"
"`PySys_SetArgv`, for example using::"
msgstr ""
-#: ../Doc/c-api/init.rst:601
+#: ../Doc/c-api/init.rst:602
msgid ""
"This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to "
"``1`` unless the :program:`python` interpreter was started with the :option:"
"`-I`."
msgstr ""
-#: ../Doc/c-api/init.rst:608
+#: ../Doc/c-api/init.rst:609
msgid "The *updatepath* value depends on :option:`-I`."
msgstr ""
-#: ../Doc/c-api/init.rst:613
+#: ../Doc/c-api/init.rst:614
msgid ""
"Set the default \"home\" directory, that is, the location of the standard "
"Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument "
"string."
msgstr ""
-#: ../Doc/c-api/init.rst:617
+#: ../Doc/c-api/init.rst:618
msgid ""
"The argument should point to a zero-terminated character string in static "
"storage whose contents will not change for the duration of the program's "
@@ -775,18 +779,18 @@ msgid ""
"this storage."
msgstr ""
-#: ../Doc/c-api/init.rst:628
+#: ../Doc/c-api/init.rst:629
msgid ""
"Return the default \"home\", that is, the value set by a previous call to :c:"
"func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` "
"environment variable if it is set."
msgstr ""
-#: ../Doc/c-api/init.rst:636
+#: ../Doc/c-api/init.rst:637
msgid "Thread State and the Global Interpreter Lock"
msgstr ""
-#: ../Doc/c-api/init.rst:643
+#: ../Doc/c-api/init.rst:644
msgid ""
"The Python interpreter is not fully thread-safe. In order to support multi-"
"threaded Python programs, there's a global lock, called the :term:`global "
@@ -798,7 +802,7 @@ msgid ""
"once instead of twice."
msgstr ""
-#: ../Doc/c-api/init.rst:653
+#: ../Doc/c-api/init.rst:654
msgid ""
"Therefore, the rule exists that only the thread that has acquired the :term:"
"`GIL` may operate on Python objects or call Python/C API functions. In order "
@@ -808,7 +812,7 @@ msgid ""
"a file, so that other Python threads can run in the meantime."
msgstr ""
-#: ../Doc/c-api/init.rst:664
+#: ../Doc/c-api/init.rst:665
msgid ""
"The Python interpreter keeps some thread-specific bookkeeping information "
"inside a data structure called :c:type:`PyThreadState`. There's also one "
@@ -816,32 +820,32 @@ msgid ""
"retrieved using :c:func:`PyThreadState_Get`."
msgstr ""
-#: ../Doc/c-api/init.rst:670
+#: ../Doc/c-api/init.rst:671
msgid "Releasing the GIL from extension code"
msgstr ""
-#: ../Doc/c-api/init.rst:672
+#: ../Doc/c-api/init.rst:673
msgid ""
"Most extension code manipulating the :term:`GIL` has the following simple "
"structure::"
msgstr ""
-#: ../Doc/c-api/init.rst:681
+#: ../Doc/c-api/init.rst:682
msgid "This is so common that a pair of macros exists to simplify it::"
msgstr ""
-#: ../Doc/c-api/init.rst:691
+#: ../Doc/c-api/init.rst:692
msgid ""
"The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a "
"hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the "
"block."
msgstr ""
-#: ../Doc/c-api/init.rst:695
+#: ../Doc/c-api/init.rst:696
msgid "The block above expands to the following code::"
msgstr ""
-#: ../Doc/c-api/init.rst:707
+#: ../Doc/c-api/init.rst:708
msgid ""
"Here is how these functions work: the global interpreter lock is used to "
"protect the pointer to the current thread state. When releasing the lock "
@@ -852,7 +856,7 @@ msgid ""
"state, the lock must be acquired before storing the thread state pointer."
msgstr ""
-#: ../Doc/c-api/init.rst:716
+#: ../Doc/c-api/init.rst:717
msgid ""
"Calling system I/O functions is the most common use case for releasing the "
"GIL, but it can also be useful before calling long-running computations "
@@ -862,11 +866,11 @@ msgid ""
"compressing or hashing data."
msgstr ""
-#: ../Doc/c-api/init.rst:727
+#: ../Doc/c-api/init.rst:728
msgid "Non-Python created threads"
msgstr ""
-#: ../Doc/c-api/init.rst:729
+#: ../Doc/c-api/init.rst:730
msgid ""
"When threads are created using the dedicated Python APIs (such as the :mod:"
"`threading` module), a thread state is automatically associated to them and "
@@ -876,7 +880,7 @@ msgid ""
"for them."
msgstr ""
-#: ../Doc/c-api/init.rst:736
+#: ../Doc/c-api/init.rst:737
msgid ""
"If you need to call Python code from these threads (often this will be part "
"of a callback API provided by the aforementioned third-party library), you "
@@ -887,14 +891,14 @@ msgid ""
"finally free the thread state data structure."
msgstr ""
-#: ../Doc/c-api/init.rst:744
+#: ../Doc/c-api/init.rst:745
msgid ""
"The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions "
"do all of the above automatically. The typical idiom for calling into "
"Python from a C thread is::"
msgstr ""
-#: ../Doc/c-api/init.rst:758
+#: ../Doc/c-api/init.rst:759
msgid ""
"Note that the :c:func:`PyGILState_\\*` functions assume there is only one "
"global interpreter (created automatically by :c:func:`Py_Initialize`). "
@@ -903,7 +907,7 @@ msgid ""
"`PyGILState_\\*` API is unsupported."
msgstr ""
-#: ../Doc/c-api/init.rst:764
+#: ../Doc/c-api/init.rst:765
msgid ""
"Another important thing to note about threads is their behaviour in the face "
"of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a "
@@ -923,17 +927,17 @@ msgid ""
"able to."
msgstr ""
-#: ../Doc/c-api/init.rst:783
+#: ../Doc/c-api/init.rst:784
msgid "High-level API"
msgstr ""
-#: ../Doc/c-api/init.rst:785
+#: ../Doc/c-api/init.rst:786
msgid ""
"These are the most commonly used types and functions when writing C "
"extension code, or when embedding the Python interpreter:"
msgstr ""
-#: ../Doc/c-api/init.rst:790
+#: ../Doc/c-api/init.rst:791
msgid ""
"This data structure represents the state shared by a number of cooperating "
"threads. Threads belonging to the same interpreter share their module "
@@ -941,7 +945,7 @@ msgid ""
"in this structure."
msgstr ""
-#: ../Doc/c-api/init.rst:795
+#: ../Doc/c-api/init.rst:796
msgid ""
"Threads belonging to different interpreters initially share nothing, except "
"process state like available memory, open file descriptors and such. The "
@@ -949,14 +953,14 @@ msgid ""
"which interpreter they belong."
msgstr ""
-#: ../Doc/c-api/init.rst:803
+#: ../Doc/c-api/init.rst:804
msgid ""
"This data structure represents the state of a single thread. The only "
"public data member is :c:type:`PyInterpreterState \\*`:attr:`interp`, which "
"points to this thread's interpreter state."
msgstr ""
-#: ../Doc/c-api/init.rst:816
+#: ../Doc/c-api/init.rst:817
msgid ""
"Initialize and acquire the global interpreter lock. It should be called in "
"the main thread before creating a second thread or engaging in any other "
@@ -964,33 +968,33 @@ msgid ""
"before calling :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`."
msgstr ""
-#: ../Doc/c-api/init.rst:821
+#: ../Doc/c-api/init.rst:822
msgid "This is a no-op when called for a second time."
msgstr ""
-#: ../Doc/c-api/init.rst:823
+#: ../Doc/c-api/init.rst:824
msgid ""
"This function is now called by :c:func:`Py_Initialize()`, so you don't have "
"to call it yourself anymore."
msgstr ""
-#: ../Doc/c-api/init.rst:827
+#: ../Doc/c-api/init.rst:828
msgid ""
"This function cannot be called before :c:func:`Py_Initialize()` anymore."
msgstr ""
-#: ../Doc/c-api/init.rst:835
+#: ../Doc/c-api/init.rst:836
msgid ""
"Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. "
"This function can be called without holding the GIL, and therefore can be "
"used to avoid calls to the locking API when running single-threaded."
msgstr ""
-#: ../Doc/c-api/init.rst:839
+#: ../Doc/c-api/init.rst:840
msgid "The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`."
msgstr ""
-#: ../Doc/c-api/init.rst:845
+#: ../Doc/c-api/init.rst:846
msgid ""
"Release the global interpreter lock (if it has been created and thread "
"support is enabled) and reset the thread state to *NULL*, returning the "
@@ -998,7 +1002,7 @@ msgid ""
"the current thread must have acquired it."
msgstr ""
-#: ../Doc/c-api/init.rst:853
+#: ../Doc/c-api/init.rst:854
msgid ""
"Acquire the global interpreter lock (if it has been created and thread "
"support is enabled) and set the thread state to *tstate*, which must not be "
@@ -1006,34 +1010,43 @@ msgid ""
"acquired it, otherwise deadlock ensues."
msgstr ""
-#: ../Doc/c-api/init.rst:861
+#: ../Doc/c-api/init.rst:860 ../Doc/c-api/init.rst:913
+msgid ""
+"Calling this function from a thread when the runtime is finalizing will "
+"terminate the thread, even if the thread was not created by Python. You can "
+"use :c:func:`_Py_IsFinalizing` or :func:`sys.is_finalizing` to check if the "
+"interpreter is in process of being finalized before calling this function to "
+"avoid unwanted termination."
+msgstr ""
+
+#: ../Doc/c-api/init.rst:868
msgid ""
"Return the current thread state. The global interpreter lock must be held. "
"When the current thread state is *NULL*, this issues a fatal error (so that "
"the caller needn't check for *NULL*)."
msgstr ""
-#: ../Doc/c-api/init.rst:868
+#: ../Doc/c-api/init.rst:875
msgid ""
"Swap the current thread state with the thread state given by the argument "
"*tstate*, which may be *NULL*. The global interpreter lock must be held and "
"is not released."
msgstr ""
-#: ../Doc/c-api/init.rst:875
+#: ../Doc/c-api/init.rst:882
msgid ""
"This function is called from :c:func:`PyOS_AfterFork_Child` to ensure that "
"newly created child processes don't hold locks referring to threads which "
"are not running in the child process."
msgstr ""
-#: ../Doc/c-api/init.rst:880
+#: ../Doc/c-api/init.rst:887
msgid ""
"The following functions use thread-local storage, and are not compatible "
"with sub-interpreters:"
msgstr ""
-#: ../Doc/c-api/init.rst:885
+#: ../Doc/c-api/init.rst:892
msgid ""
"Ensure that the current thread is ready to call the Python C API regardless "
"of the current state of Python, or of the global interpreter lock. This may "
@@ -1046,7 +1059,7 @@ msgid ""
"is acceptable."
msgstr ""
-#: ../Doc/c-api/init.rst:895
+#: ../Doc/c-api/init.rst:902
msgid ""
"The return value is an opaque \"handle\" to the thread state when :c:func:"
"`PyGILState_Ensure` was called, and must be passed to :c:func:"
@@ -1056,13 +1069,13 @@ msgid ""
"func:`PyGILState_Release`."
msgstr ""
-#: ../Doc/c-api/init.rst:902
+#: ../Doc/c-api/init.rst:909
msgid ""
"When the function returns, the current thread will hold the GIL and be able "
"to call arbitrary Python code. Failure is a fatal error."
msgstr ""
-#: ../Doc/c-api/init.rst:908
+#: ../Doc/c-api/init.rst:921
msgid ""
"Release any resources previously acquired. After this call, Python's state "
"will be the same as it was prior to the corresponding :c:func:"
@@ -1070,13 +1083,13 @@ msgid ""
"caller, hence the use of the GILState API)."
msgstr ""
-#: ../Doc/c-api/init.rst:913
+#: ../Doc/c-api/init.rst:926
msgid ""
"Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:"
"func:`PyGILState_Release` on the same thread."
msgstr ""
-#: ../Doc/c-api/init.rst:919
+#: ../Doc/c-api/init.rst:932
msgid ""
"Get the current thread state for this thread. May return ``NULL`` if no "
"GILState API has been used on the current thread. Note that the main thread "
@@ -1084,7 +1097,7 @@ msgid ""
"made on the main thread. This is mainly a helper/diagnostic function."
msgstr ""
-#: ../Doc/c-api/init.rst:927
+#: ../Doc/c-api/init.rst:940
msgid ""
"Return ``1`` if the current thread is holding the GIL and ``0`` otherwise. "
"This function can be called from any thread at any time. Only if it has had "
@@ -1095,13 +1108,13 @@ msgid ""
"otherwise behave differently."
msgstr ""
-#: ../Doc/c-api/init.rst:939
+#: ../Doc/c-api/init.rst:952
msgid ""
"The following macros are normally used without a trailing semicolon; look "
"for example usage in the Python source distribution."
msgstr ""
-#: ../Doc/c-api/init.rst:945
+#: ../Doc/c-api/init.rst:958
msgid ""
"This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();"
"``. Note that it contains an opening brace; it must be matched with a "
@@ -1109,7 +1122,7 @@ msgid ""
"discussion of this macro."
msgstr ""
-#: ../Doc/c-api/init.rst:953
+#: ../Doc/c-api/init.rst:966
msgid ""
"This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it "
"contains a closing brace; it must be matched with an earlier :c:macro:"
@@ -1117,79 +1130,79 @@ msgid ""
"macro."
msgstr ""
-#: ../Doc/c-api/init.rst:961
+#: ../Doc/c-api/init.rst:974
msgid ""
"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :"
"c:macro:`Py_END_ALLOW_THREADS` without the closing brace."
msgstr ""
-#: ../Doc/c-api/init.rst:967
+#: ../Doc/c-api/init.rst:980
msgid ""
"This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :"
"c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable "
"declaration."
msgstr ""
-#: ../Doc/c-api/init.rst:973
+#: ../Doc/c-api/init.rst:986
msgid "Low-level API"
msgstr ""
-#: ../Doc/c-api/init.rst:975
+#: ../Doc/c-api/init.rst:988
msgid ""
"All of the following functions must be called after :c:func:`Py_Initialize`."
msgstr ""
-#: ../Doc/c-api/init.rst:977
+#: ../Doc/c-api/init.rst:990
msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`."
msgstr ""
-#: ../Doc/c-api/init.rst:983
+#: ../Doc/c-api/init.rst:996
msgid ""
"Create a new interpreter state object. The global interpreter lock need not "
"be held, but may be held if it is necessary to serialize calls to this "
"function."
msgstr ""
-#: ../Doc/c-api/init.rst:990
+#: ../Doc/c-api/init.rst:1003
msgid ""
"Reset all information in an interpreter state object. The global "
"interpreter lock must be held."
msgstr ""
-#: ../Doc/c-api/init.rst:996
+#: ../Doc/c-api/init.rst:1009
msgid ""
"Destroy an interpreter state object. The global interpreter lock need not "
"be held. The interpreter state must have been reset with a previous call "
"to :c:func:`PyInterpreterState_Clear`."
msgstr ""
-#: ../Doc/c-api/init.rst:1003
+#: ../Doc/c-api/init.rst:1016
msgid ""
"Create a new thread state object belonging to the given interpreter object. "
"The global interpreter lock need not be held, but may be held if it is "
"necessary to serialize calls to this function."
msgstr ""
-#: ../Doc/c-api/init.rst:1010
+#: ../Doc/c-api/init.rst:1023
msgid ""
"Reset all information in a thread state object. The global interpreter lock "
"must be held."
msgstr ""
-#: ../Doc/c-api/init.rst:1016
+#: ../Doc/c-api/init.rst:1029
msgid ""
"Destroy a thread state object. The global interpreter lock need not be "
"held. The thread state must have been reset with a previous call to :c:func:"
"`PyThreadState_Clear`."
msgstr ""
-#: ../Doc/c-api/init.rst:1023
+#: ../Doc/c-api/init.rst:1036
msgid ""
"Return the interpreter's unique ID. If there was any error in doing so then "
"``-1`` is returned and an error is set."
msgstr ""
-#: ../Doc/c-api/init.rst:1031
+#: ../Doc/c-api/init.rst:1044
msgid ""
"Return a dictionary in which extensions can store thread-specific state "
"information. Each extension should use a unique key to use to store state "
@@ -1198,7 +1211,7 @@ msgid ""
"raised and the caller should assume no current thread state is available."
msgstr ""
-#: ../Doc/c-api/init.rst:1040
+#: ../Doc/c-api/init.rst:1053
msgid ""
"Asynchronously raise an exception in a thread. The *id* argument is the "
"thread id of the target thread; *exc* is the exception object to be raised. "
@@ -1210,26 +1223,26 @@ msgid ""
"raises no exceptions."
msgstr ""
-#: ../Doc/c-api/init.rst:1048
+#: ../Doc/c-api/init.rst:1061
msgid ""
"The type of the *id* parameter changed from :c:type:`long` to :c:type:"
"`unsigned long`."
msgstr ""
-#: ../Doc/c-api/init.rst:1054
+#: ../Doc/c-api/init.rst:1067
msgid ""
"Acquire the global interpreter lock and set the current thread state to "
"*tstate*, which should not be *NULL*. The lock must have been created "
"earlier. If this thread already has the lock, deadlock ensues."
msgstr ""
-#: ../Doc/c-api/init.rst:1058
+#: ../Doc/c-api/init.rst:1071
msgid ""
":c:func:`PyEval_RestoreThread` is a higher-level function which is always "
"available (even when threads have not been initialized)."
msgstr ""
-#: ../Doc/c-api/init.rst:1064
+#: ../Doc/c-api/init.rst:1077
msgid ""
"Reset the current thread state to *NULL* and release the global interpreter "
"lock. The lock must have been created earlier and must be held by the "
@@ -1238,41 +1251,41 @@ msgid ""
"fatal error is reported."
msgstr ""
-#: ../Doc/c-api/init.rst:1070
+#: ../Doc/c-api/init.rst:1083
msgid ""
":c:func:`PyEval_SaveThread` is a higher-level function which is always "
"available (even when threads have not been initialized)."
msgstr ""
-#: ../Doc/c-api/init.rst:1076
+#: ../Doc/c-api/init.rst:1089
msgid ""
"Acquire the global interpreter lock. The lock must have been created "
"earlier. If this thread already has the lock, a deadlock ensues."
msgstr ""
-#: ../Doc/c-api/init.rst:1079
+#: ../Doc/c-api/init.rst:1092
msgid ""
"This function does not update the current thread state. Please use :c:func:"
"`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread` instead."
msgstr ""
-#: ../Doc/c-api/init.rst:1087
+#: ../Doc/c-api/init.rst:1100
msgid ""
"Release the global interpreter lock. The lock must have been created "
"earlier."
msgstr ""
-#: ../Doc/c-api/init.rst:1089
+#: ../Doc/c-api/init.rst:1102
msgid ""
"This function does not update the current thread state. Please use :c:func:"
"`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread` instead."
msgstr ""
-#: ../Doc/c-api/init.rst:1098
+#: ../Doc/c-api/init.rst:1111
msgid "Sub-interpreter support"
msgstr ""
-#: ../Doc/c-api/init.rst:1100
+#: ../Doc/c-api/init.rst:1113
msgid ""
"While in most uses, you will only embed a single Python interpreter, there "
"are cases where you need to create several independent interpreters in the "
@@ -1282,7 +1295,7 @@ msgid ""
"following functions:"
msgstr ""
-#: ../Doc/c-api/init.rst:1118
+#: ../Doc/c-api/init.rst:1131
msgid ""
"Create a new sub-interpreter. This is an (almost) totally separate "
"environment for the execution of Python code. In particular, the new "
@@ -1295,7 +1308,7 @@ msgid ""
"underlying file descriptors)."
msgstr ""
-#: ../Doc/c-api/init.rst:1128
+#: ../Doc/c-api/init.rst:1141
msgid ""
"The return value points to the first thread state created in the new sub-"
"interpreter. This thread state is made in the current thread state. Note "
@@ -1309,7 +1322,7 @@ msgid ""
"state on entry.)"
msgstr ""
-#: ../Doc/c-api/init.rst:1143
+#: ../Doc/c-api/init.rst:1156
msgid ""
"Extension modules are shared between (sub-)interpreters as follows: the "
"first time a particular extension is imported, it is initialized normally, "
@@ -1323,7 +1336,7 @@ msgid ""
"called again."
msgstr ""
-#: ../Doc/c-api/init.rst:1160
+#: ../Doc/c-api/init.rst:1173
msgid ""
"Destroy the (sub-)interpreter represented by the given thread state. The "
"given thread state must be the current thread state. See the discussion of "
@@ -1334,11 +1347,11 @@ msgid ""
"sub-interpreters that haven't been explicitly destroyed at that point."
msgstr ""
-#: ../Doc/c-api/init.rst:1170
+#: ../Doc/c-api/init.rst:1183
msgid "Bugs and caveats"
msgstr ""
-#: ../Doc/c-api/init.rst:1172
+#: ../Doc/c-api/init.rst:1185
msgid ""
"Because sub-interpreters (and the main interpreter) are part of the same "
"process, the insulation between them isn't perfect --- for example, using "
@@ -1355,7 +1368,7 @@ msgid ""
"of loaded modules."
msgstr ""
-#: ../Doc/c-api/init.rst:1186
+#: ../Doc/c-api/init.rst:1199
msgid ""
"Also note that combining this functionality with :c:func:`PyGILState_\\*` "
"APIs is delicate, because these APIs assume a bijection between Python "
@@ -1367,25 +1380,25 @@ msgid ""
"created threads will probably be broken when using sub-interpreters."
msgstr ""
-#: ../Doc/c-api/init.rst:1197
+#: ../Doc/c-api/init.rst:1210
msgid "Asynchronous Notifications"
msgstr ""
-#: ../Doc/c-api/init.rst:1199
+#: ../Doc/c-api/init.rst:1212
msgid ""
"A mechanism is provided to make asynchronous notifications to the main "
"interpreter thread. These notifications take the form of a function pointer "
"and a void pointer argument."
msgstr ""
-#: ../Doc/c-api/init.rst:1208
+#: ../Doc/c-api/init.rst:1221
msgid ""
"Schedule a function to be called from the main interpreter thread. On "
"success, ``0`` is returned and *func* is queued for being called in the main "
"thread. On failure, ``-1`` is returned without setting any exception."
msgstr ""
-#: ../Doc/c-api/init.rst:1212
+#: ../Doc/c-api/init.rst:1225
msgid ""
"When successfully queued, *func* will be *eventually* called from the main "
"interpreter thread with the argument *arg*. It will be called "
@@ -1393,17 +1406,17 @@ msgid ""
"these conditions met:"
msgstr ""
-#: ../Doc/c-api/init.rst:1217
+#: ../Doc/c-api/init.rst:1230
msgid "on a :term:`bytecode` boundary;"
msgstr ""
-#: ../Doc/c-api/init.rst:1218
+#: ../Doc/c-api/init.rst:1231
msgid ""
"with the main thread holding the :term:`global interpreter lock` (*func* can "
"therefore use the full C API)."
msgstr ""
-#: ../Doc/c-api/init.rst:1221
+#: ../Doc/c-api/init.rst:1234
msgid ""
"*func* must return ``0`` on success, or ``-1`` on failure with an exception "
"set. *func* won't be interrupted to perform another asynchronous "
@@ -1411,13 +1424,13 @@ msgid ""
"if the global interpreter lock is released."
msgstr ""
-#: ../Doc/c-api/init.rst:1226
+#: ../Doc/c-api/init.rst:1239
msgid ""
"This function doesn't need a current thread state to run, and it doesn't "
"need the global interpreter lock."
msgstr ""
-#: ../Doc/c-api/init.rst:1230
+#: ../Doc/c-api/init.rst:1243
msgid ""
"This is a low-level function, only useful for very special cases. There is "
"no guarantee that *func* will be called as quick as possible. If the main "
@@ -1427,18 +1440,18 @@ msgid ""
"`PyGILState API`."
msgstr ""
-#: ../Doc/c-api/init.rst:1242
+#: ../Doc/c-api/init.rst:1255
msgid "Profiling and Tracing"
msgstr ""
-#: ../Doc/c-api/init.rst:1247
+#: ../Doc/c-api/init.rst:1260
msgid ""
"The Python interpreter provides some low-level support for attaching "
"profiling and execution tracing facilities. These are used for profiling, "
"debugging, and coverage analysis tools."
msgstr ""
-#: ../Doc/c-api/init.rst:1251
+#: ../Doc/c-api/init.rst:1264
msgid ""
"This C interface allows the profiling or tracing code to avoid the overhead "
"of calling through Python-level callable objects, making a direct C function "
@@ -1448,7 +1461,7 @@ msgid ""
"reported to the Python-level trace functions in previous versions."
msgstr ""
-#: ../Doc/c-api/init.rst:1261
+#: ../Doc/c-api/init.rst:1274
msgid ""
"The type of the trace function registered using :c:func:`PyEval_SetProfile` "
"and :c:func:`PyEval_SetTrace`. The first parameter is the object passed to "
@@ -1459,66 +1472,66 @@ msgid ""
"or :const:`PyTrace_OPCODE`, and *arg* depends on the value of *what*:"
msgstr ""
-#: ../Doc/c-api/init.rst:1270
+#: ../Doc/c-api/init.rst:1283
msgid "Value of *what*"
msgstr ""
-#: ../Doc/c-api/init.rst:1270
+#: ../Doc/c-api/init.rst:1283
msgid "Meaning of *arg*"
msgstr ""
-#: ../Doc/c-api/init.rst:1272
+#: ../Doc/c-api/init.rst:1285
msgid ":const:`PyTrace_CALL`"
msgstr ""
-#: ../Doc/c-api/init.rst:1272 ../Doc/c-api/init.rst:1277
-#: ../Doc/c-api/init.rst:1288
+#: ../Doc/c-api/init.rst:1285 ../Doc/c-api/init.rst:1290
+#: ../Doc/c-api/init.rst:1301
msgid "Always :c:data:`Py_None`."
msgstr ""
-#: ../Doc/c-api/init.rst:1274
+#: ../Doc/c-api/init.rst:1287
msgid ":const:`PyTrace_EXCEPTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1274
+#: ../Doc/c-api/init.rst:1287
msgid "Exception information as returned by :func:`sys.exc_info`."
msgstr ""
-#: ../Doc/c-api/init.rst:1277
+#: ../Doc/c-api/init.rst:1290
msgid ":const:`PyTrace_LINE`"
msgstr ""
-#: ../Doc/c-api/init.rst:1279
+#: ../Doc/c-api/init.rst:1292
msgid ":const:`PyTrace_RETURN`"
msgstr ""
-#: ../Doc/c-api/init.rst:1279
+#: ../Doc/c-api/init.rst:1292
msgid ""
"Value being returned to the caller, or *NULL* if caused by an exception."
msgstr ""
-#: ../Doc/c-api/init.rst:1282
+#: ../Doc/c-api/init.rst:1295
msgid ":const:`PyTrace_C_CALL`"
msgstr ""
-#: ../Doc/c-api/init.rst:1282 ../Doc/c-api/init.rst:1284
-#: ../Doc/c-api/init.rst:1286
+#: ../Doc/c-api/init.rst:1295 ../Doc/c-api/init.rst:1297
+#: ../Doc/c-api/init.rst:1299
msgid "Function object being called."
msgstr ""
-#: ../Doc/c-api/init.rst:1284
+#: ../Doc/c-api/init.rst:1297
msgid ":const:`PyTrace_C_EXCEPTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1286
+#: ../Doc/c-api/init.rst:1299
msgid ":const:`PyTrace_C_RETURN`"
msgstr ""
-#: ../Doc/c-api/init.rst:1288
+#: ../Doc/c-api/init.rst:1301
msgid ":const:`PyTrace_OPCODE`"
msgstr ""
-#: ../Doc/c-api/init.rst:1293
+#: ../Doc/c-api/init.rst:1306
msgid ""
"The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
"a new call to a function or method is being reported, or a new entry into a "
@@ -1527,7 +1540,7 @@ msgid ""
"the corresponding frame."
msgstr ""
-#: ../Doc/c-api/init.rst:1302
+#: ../Doc/c-api/init.rst:1315
msgid ""
"The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
"an exception has been raised. The callback function is called with this "
@@ -1539,7 +1552,7 @@ msgid ""
"profiler."
msgstr ""
-#: ../Doc/c-api/init.rst:1313
+#: ../Doc/c-api/init.rst:1326
msgid ""
"The value passed as the *what* parameter to a :c:type:`Py_tracefunc` "
"function (but not a profiling function) when a line-number event is being "
@@ -1547,31 +1560,31 @@ msgid ""
"*0* on that frame."
msgstr ""
-#: ../Doc/c-api/init.rst:1320
+#: ../Doc/c-api/init.rst:1333
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a call is about to return."
msgstr ""
-#: ../Doc/c-api/init.rst:1326
+#: ../Doc/c-api/init.rst:1339
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function is about to be called."
msgstr ""
-#: ../Doc/c-api/init.rst:1332
+#: ../Doc/c-api/init.rst:1345
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function has raised an exception."
msgstr ""
-#: ../Doc/c-api/init.rst:1338
+#: ../Doc/c-api/init.rst:1351
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function has returned."
msgstr ""
-#: ../Doc/c-api/init.rst:1344
+#: ../Doc/c-api/init.rst:1357
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but "
"not profiling functions) when a new opcode is about to be executed. This "
@@ -1579,7 +1592,7 @@ msgid ""
"attr:`f_trace_opcodes` to *1* on the frame."
msgstr ""
-#: ../Doc/c-api/init.rst:1352
+#: ../Doc/c-api/init.rst:1365
msgid ""
"Set the profiler function to *func*. The *obj* parameter is passed to the "
"function as its first parameter, and may be any Python object, or *NULL*. "
@@ -1589,7 +1602,7 @@ msgid ""
"`PyTrace_LINE` :const:`PyTrace_OPCODE` and :const:`PyTrace_EXCEPTION`."
msgstr ""
-#: ../Doc/c-api/init.rst:1362
+#: ../Doc/c-api/init.rst:1375
msgid ""
"Set the tracing function to *func*. This is similar to :c:func:"
"`PyEval_SetProfile`, except the tracing function does receive line-number "
@@ -1600,44 +1613,48 @@ msgid ""
"parameter."
msgstr ""
-#: ../Doc/c-api/init.rst:1372
+#: ../Doc/c-api/init.rst:1385
msgid "Advanced Debugger Support"
msgstr "Support avancé du débogueur"
-#: ../Doc/c-api/init.rst:1377
+#: ../Doc/c-api/init.rst:1390
msgid ""
"These functions are only intended to be used by advanced debugging tools."
msgstr ""
-#: ../Doc/c-api/init.rst:1382
+#: ../Doc/c-api/init.rst:1395
msgid ""
"Return the interpreter state object at the head of the list of all such "
"objects."
msgstr ""
-#: ../Doc/c-api/init.rst:1387
+#: ../Doc/c-api/init.rst:1400
+msgid "Return the main interpreter state object."
+msgstr ""
+
+#: ../Doc/c-api/init.rst:1405
msgid ""
"Return the next interpreter state object after *interp* from the list of all "
"such objects."
msgstr ""
-#: ../Doc/c-api/init.rst:1393
+#: ../Doc/c-api/init.rst:1411
msgid ""
"Return the pointer to the first :c:type:`PyThreadState` object in the list "
"of threads associated with the interpreter *interp*."
msgstr ""
-#: ../Doc/c-api/init.rst:1399
+#: ../Doc/c-api/init.rst:1417
msgid ""
"Return the next thread state object after *tstate* from the list of all such "
"objects belonging to the same :c:type:`PyInterpreterState` object."
msgstr ""
-#: ../Doc/c-api/init.rst:1406
+#: ../Doc/c-api/init.rst:1424
msgid "Thread Local Storage Support"
msgstr ""
-#: ../Doc/c-api/init.rst:1410
+#: ../Doc/c-api/init.rst:1428
msgid ""
"The Python interpreter provides low-level support for thread-local storage "
"(TLS) which wraps the underlying native TLS implementation to support the "
@@ -1647,19 +1664,19 @@ msgid ""
"thread."
msgstr ""
-#: ../Doc/c-api/init.rst:1417
+#: ../Doc/c-api/init.rst:1435
msgid ""
"The GIL does *not* need to be held when calling these functions; they supply "
"their own locking."
msgstr ""
-#: ../Doc/c-api/init.rst:1420
+#: ../Doc/c-api/init.rst:1438
msgid ""
"Note that :file:`Python.h` does not include the declaration of the TLS APIs, "
"you need to include :file:`pythread.h` to use thread-local storage."
msgstr ""
-#: ../Doc/c-api/init.rst:1424
+#: ../Doc/c-api/init.rst:1442
msgid ""
"None of these API functions handle memory management on behalf of the :c:"
"type:`void\\*` values. You need to allocate and deallocate them yourself. "
@@ -1667,22 +1684,22 @@ msgid ""
"functions don't do refcount operations on them either."
msgstr ""
-#: ../Doc/c-api/init.rst:1432
+#: ../Doc/c-api/init.rst:1450
msgid "Thread Specific Storage (TSS) API"
msgstr ""
-#: ../Doc/c-api/init.rst:1434
+#: ../Doc/c-api/init.rst:1452
msgid ""
"TSS API is introduced to supersede the use of the existing TLS API within "
"the CPython interpreter. This API uses a new type :c:type:`Py_tss_t` "
"instead of :c:type:`int` to represent thread keys."
msgstr ""
-#: ../Doc/c-api/init.rst:1440
+#: ../Doc/c-api/init.rst:1458
msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)"
msgstr ""
-#: ../Doc/c-api/init.rst:1445
+#: ../Doc/c-api/init.rst:1463
msgid ""
"This data structure represents the state of a thread key, the definition of "
"which may depend on the underlying TLS implementation, and it has an "
@@ -1690,52 +1707,52 @@ msgid ""
"public members in this structure."
msgstr ""
-#: ../Doc/c-api/init.rst:1450
+#: ../Doc/c-api/init.rst:1468
msgid ""
"When :ref:`Py_LIMITED_API ` is not defined, static allocation of "
"this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed."
msgstr ""
-#: ../Doc/c-api/init.rst:1456
+#: ../Doc/c-api/init.rst:1474
msgid ""
"This macro expands to the initializer for :c:type:`Py_tss_t` variables. Note "
"that this macro won't be defined with :ref:`Py_LIMITED_API `."
msgstr ""
-#: ../Doc/c-api/init.rst:1461
+#: ../Doc/c-api/init.rst:1479
msgid "Dynamic Allocation"
msgstr ""
-#: ../Doc/c-api/init.rst:1463
+#: ../Doc/c-api/init.rst:1481
msgid ""
"Dynamic allocation of the :c:type:`Py_tss_t`, required in extension modules "
"built with :ref:`Py_LIMITED_API `, where static allocation of this "
"type is not possible due to its implementation being opaque at build time."
msgstr ""
-#: ../Doc/c-api/init.rst:1470
+#: ../Doc/c-api/init.rst:1488
msgid ""
"Return a value which is the same state as a value initialized with :c:macro:"
"`Py_tss_NEEDS_INIT`, or *NULL* in the case of dynamic allocation failure."
msgstr ""
-#: ../Doc/c-api/init.rst:1477
+#: ../Doc/c-api/init.rst:1495
msgid ""
"Free the given *key* allocated by :c:func:`PyThread_tss_alloc`, after first "
"calling :c:func:`PyThread_tss_delete` to ensure any associated thread locals "
"have been unassigned. This is a no-op if the *key* argument is `NULL`."
msgstr ""
-#: ../Doc/c-api/init.rst:1483
+#: ../Doc/c-api/init.rst:1501
msgid ""
"A freed key becomes a dangling pointer, you should reset the key to `NULL`."
msgstr ""
-#: ../Doc/c-api/init.rst:1488
+#: ../Doc/c-api/init.rst:1506
msgid "Methods"
msgstr "Méthodes"
-#: ../Doc/c-api/init.rst:1490
+#: ../Doc/c-api/init.rst:1508
msgid ""
"The parameter *key* of these functions must not be *NULL*. Moreover, the "
"behaviors of :c:func:`PyThread_tss_set` and :c:func:`PyThread_tss_get` are "
@@ -1743,13 +1760,13 @@ msgid ""
"func:`PyThread_tss_create`."
msgstr ""
-#: ../Doc/c-api/init.rst:1498
+#: ../Doc/c-api/init.rst:1516
msgid ""
"Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized "
"by :c:func:`PyThread_tss_create`."
msgstr ""
-#: ../Doc/c-api/init.rst:1504
+#: ../Doc/c-api/init.rst:1522
msgid ""
"Return a zero value on successful initialization of a TSS key. The behavior "
"is undefined if the value pointed to by the *key* argument is not "
@@ -1758,7 +1775,7 @@ msgid ""
"no-op and immediately returns success."
msgstr ""
-#: ../Doc/c-api/init.rst:1513
+#: ../Doc/c-api/init.rst:1531
msgid ""
"Destroy a TSS key to forget the values associated with the key across all "
"threads, and change the key's initialization state to uninitialized. A "
@@ -1767,31 +1784,31 @@ msgid ""
"key -- calling it on an already destroyed key is a no-op."
msgstr ""
-#: ../Doc/c-api/init.rst:1522
+#: ../Doc/c-api/init.rst:1540
msgid ""
"Return a zero value to indicate successfully associating a :c:type:`void\\*` "
"value with a TSS key in the current thread. Each thread has a distinct "
"mapping of the key to a :c:type:`void\\*` value."
msgstr ""
-#: ../Doc/c-api/init.rst:1529
+#: ../Doc/c-api/init.rst:1547
msgid ""
"Return the :c:type:`void\\*` value associated with a TSS key in the current "
"thread. This returns *NULL* if no value is associated with the key in the "
"current thread."
msgstr ""
-#: ../Doc/c-api/init.rst:1537
+#: ../Doc/c-api/init.rst:1555
msgid "Thread Local Storage (TLS) API"
msgstr ""
-#: ../Doc/c-api/init.rst:1539
+#: ../Doc/c-api/init.rst:1557
msgid ""
"This API is superseded by :ref:`Thread Specific Storage (TSS) API `."
msgstr ""
-#: ../Doc/c-api/init.rst:1544
+#: ../Doc/c-api/init.rst:1562
msgid ""
"This version of the API does not support platforms where the native TLS key "
"is defined in a way that cannot be safely cast to ``int``. On such "
@@ -1800,7 +1817,7 @@ msgid ""
"platforms."
msgstr ""
-#: ../Doc/c-api/init.rst:1549
+#: ../Doc/c-api/init.rst:1567
msgid ""
"Due to the compatibility problem noted above, this version of the API should "
"not be used in new code."
diff --git a/c-api/intro.po b/c-api/intro.po
index c4bccf884..1bdf37b81 100644
--- a/c-api/intro.po
+++ b/c-api/intro.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -72,14 +72,14 @@ msgid ""
"included in your code by the following line::"
msgstr ""
-#: ../Doc/c-api/intro.rst:53
+#: ../Doc/c-api/intro.rst:54
msgid ""
"This implies inclusion of the following standard headers: ````, "
"````, ````, ````, ```` and ```` (if available)."
msgstr ""
-#: ../Doc/c-api/intro.rst:59
+#: ../Doc/c-api/intro.rst:60
msgid ""
"Since Python may define some pre-processor definitions which affect the "
"standard headers on some systems, you *must* include :file:`Python.h` before "
@@ -89,7 +89,13 @@ msgstr ""
"les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python."
"h` avant les en-têtes standards."
-#: ../Doc/c-api/intro.rst:63
+#: ../Doc/c-api/intro.rst:64
+msgid ""
+"It is recommended to always define ``PY_SSIZE_T_CLEAN`` before including "
+"``Python.h``. See :ref:`arg-parsing` for a description of this macro."
+msgstr ""
+
+#: ../Doc/c-api/intro.rst:67
msgid ""
"All user visible names defined by Python.h (except those defined by the "
"included standard headers) have one of the prefixes ``Py`` or ``_Py``. "
@@ -98,7 +104,7 @@ msgid ""
"names do not have a reserved prefix."
msgstr ""
-#: ../Doc/c-api/intro.rst:68
+#: ../Doc/c-api/intro.rst:72
msgid ""
"**Important:** user code should never define names that begin with ``Py`` or "
"``_Py``. This confuses the reader, and jeopardizes the portability of the "
@@ -106,7 +112,7 @@ msgid ""
"beginning with one of these prefixes."
msgstr ""
-#: ../Doc/c-api/intro.rst:73
+#: ../Doc/c-api/intro.rst:77
msgid ""
"The header files are typically installed with Python. On Unix, these are "
"located in the directories :file:`{prefix}/include/pythonversion/` and :file:"
@@ -118,7 +124,7 @@ msgid ""
"specified to the installer."
msgstr ""
-#: ../Doc/c-api/intro.rst:82
+#: ../Doc/c-api/intro.rst:86
msgid ""
"To include the headers, place both directories (if different) on your "
"compiler's search path for includes. Do *not* place the parent directories "
@@ -128,18 +134,18 @@ msgid ""
"`exec_prefix`."
msgstr ""
-#: ../Doc/c-api/intro.rst:89
+#: ../Doc/c-api/intro.rst:93
msgid ""
"C++ users should note that though the API is defined entirely using C, the "
"header files do properly declare the entry points to be ``extern \"C\"``, so "
"there is no need to do anything special to use the API from C++."
msgstr ""
-#: ../Doc/c-api/intro.rst:95
+#: ../Doc/c-api/intro.rst:99
msgid "Useful macros"
msgstr ""
-#: ../Doc/c-api/intro.rst:97
+#: ../Doc/c-api/intro.rst:101
msgid ""
"Several useful macros are defined in the Python header files. Many are "
"defined closer to where they are useful (e.g. :c:macro:`Py_RETURN_NONE`). "
@@ -147,7 +153,7 @@ msgid ""
"a complete listing."
msgstr ""
-#: ../Doc/c-api/intro.rst:104
+#: ../Doc/c-api/intro.rst:108
msgid ""
"Use this when you have a code path that you do not expect to be reached. For "
"example, in the ``default:`` clause in a ``switch`` statement for which all "
@@ -155,50 +161,50 @@ msgid ""
"where you might be tempted to put an ``assert(0)`` or ``abort()`` call."
msgstr ""
-#: ../Doc/c-api/intro.rst:113
+#: ../Doc/c-api/intro.rst:117
msgid "Return the absolute value of ``x``."
msgstr ""
-#: ../Doc/c-api/intro.rst:119
+#: ../Doc/c-api/intro.rst:123
msgid "Return the minimum value between ``x`` and ``y``."
msgstr ""
-#: ../Doc/c-api/intro.rst:125
+#: ../Doc/c-api/intro.rst:129
msgid "Return the maximum value between ``x`` and ``y``."
msgstr ""
-#: ../Doc/c-api/intro.rst:131
+#: ../Doc/c-api/intro.rst:135
msgid ""
"Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``."
msgstr ""
-#: ../Doc/c-api/intro.rst:138
+#: ../Doc/c-api/intro.rst:142
msgid "Return the size of a structure (``type``) ``member`` in bytes."
msgstr ""
-#: ../Doc/c-api/intro.rst:144
+#: ../Doc/c-api/intro.rst:148
msgid ""
"Argument must be a character or an integer in the range [-128, 127] or [0, "
"255]. This macro returns ``c`` cast to an ``unsigned char``."
msgstr ""
-#: ../Doc/c-api/intro.rst:149
+#: ../Doc/c-api/intro.rst:153
msgid ""
"Like ``getenv(s)``, but returns *NULL* if :option:`-E` was passed on the "
"command line (i.e. if ``Py_IgnoreEnvironmentFlag`` is set)."
msgstr ""
-#: ../Doc/c-api/intro.rst:154
+#: ../Doc/c-api/intro.rst:158
msgid ""
"Use this for unused arguments in a function definition to silence compiler "
"warnings, e.g. ``PyObject* func(PyObject *Py_UNUSED(ignored))``."
msgstr ""
-#: ../Doc/c-api/intro.rst:163
+#: ../Doc/c-api/intro.rst:167
msgid "Objects, Types and Reference Counts"
msgstr ""
-#: ../Doc/c-api/intro.rst:167
+#: ../Doc/c-api/intro.rst:171
msgid ""
"Most Python/C API functions have one or more arguments as well as a return "
"value of type :c:type:`PyObject\\*`. This type is a pointer to an opaque "
@@ -213,7 +219,7 @@ msgid ""
"objects."
msgstr ""
-#: ../Doc/c-api/intro.rst:178
+#: ../Doc/c-api/intro.rst:182
msgid ""
"All Python objects (even Python integers) have a :dfn:`type` and a :dfn:"
"`reference count`. An object's type determines what kind of object it is (e."
@@ -224,11 +230,11 @@ msgid ""
"a Python list."
msgstr ""
-#: ../Doc/c-api/intro.rst:189
+#: ../Doc/c-api/intro.rst:193
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
-#: ../Doc/c-api/intro.rst:191
+#: ../Doc/c-api/intro.rst:195
msgid ""
"The reference count is important because today's computers have a finite "
"(and often severely limited) memory size; it counts how many different "
@@ -242,7 +248,7 @@ msgid ""
"for now, the solution is \"don't do that.\")"
msgstr ""
-#: ../Doc/c-api/intro.rst:206
+#: ../Doc/c-api/intro.rst:210
msgid ""
"Reference counts are always manipulated explicitly. The normal way is to "
"use the macro :c:func:`Py_INCREF` to increment an object's reference count "
@@ -260,7 +266,7 @@ msgid ""
"reference count increment is a simple operation."
msgstr ""
-#: ../Doc/c-api/intro.rst:220
+#: ../Doc/c-api/intro.rst:224
msgid ""
"It is not necessary to increment an object's reference count for every "
"local variable that contains a pointer to an object. In theory, the "
@@ -277,7 +283,7 @@ msgid ""
"to hold a reference to every argument for the duration of the call."
msgstr ""
-#: ../Doc/c-api/intro.rst:234
+#: ../Doc/c-api/intro.rst:238
msgid ""
"However, a common pitfall is to extract an object from a list and hold on to "
"it for a while without incrementing its reference count. Some other "
@@ -288,7 +294,7 @@ msgid ""
"from a :c:func:`Py_DECREF`, so almost any operation is potentially dangerous."
msgstr ""
-#: ../Doc/c-api/intro.rst:242
+#: ../Doc/c-api/intro.rst:246
msgid ""
"A safe approach is to always use the generic operations (functions whose "
"name begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or "
@@ -298,11 +304,11 @@ msgid ""
"becomes second nature."
msgstr ""
-#: ../Doc/c-api/intro.rst:252
+#: ../Doc/c-api/intro.rst:256
msgid "Reference Count Details"
msgstr ""
-#: ../Doc/c-api/intro.rst:254
+#: ../Doc/c-api/intro.rst:258
msgid ""
"The reference count behavior of functions in the Python/C API is best "
"explained in terms of *ownership of references*. Ownership pertains to "
@@ -319,7 +325,7 @@ msgid ""
"reference."
msgstr ""
-#: ../Doc/c-api/intro.rst:267
+#: ../Doc/c-api/intro.rst:271
msgid ""
"Conversely, when a calling function passes in a reference to an object, "
"there are two possibilities: the function *steals* a reference to the "
@@ -328,7 +334,7 @@ msgid ""
"reference, and you are not responsible for it any longer."
msgstr ""
-#: ../Doc/c-api/intro.rst:277
+#: ../Doc/c-api/intro.rst:281
msgid ""
"Few functions steal references; the two notable exceptions are :c:func:"
"`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference to "
@@ -340,7 +346,7 @@ msgid ""
"below)::"
msgstr ""
-#: ../Doc/c-api/intro.rst:292
+#: ../Doc/c-api/intro.rst:296
msgid ""
"Here, :c:func:`PyLong_FromLong` returns a new reference which is immediately "
"stolen by :c:func:`PyTuple_SetItem`. When you want to keep using an object "
@@ -348,7 +354,7 @@ msgid ""
"another reference before calling the reference-stealing function."
msgstr ""
-#: ../Doc/c-api/intro.rst:297
+#: ../Doc/c-api/intro.rst:301
msgid ""
"Incidentally, :c:func:`PyTuple_SetItem` is the *only* way to set tuple "
"items; :c:func:`PySequence_SetItem` and :c:func:`PyObject_SetItem` refuse to "
@@ -356,13 +362,13 @@ msgid ""
"func:`PyTuple_SetItem` for tuples that you are creating yourself."
msgstr ""
-#: ../Doc/c-api/intro.rst:302
+#: ../Doc/c-api/intro.rst:306
msgid ""
"Equivalent code for populating a list can be written using :c:func:"
"`PyList_New` and :c:func:`PyList_SetItem`."
msgstr ""
-#: ../Doc/c-api/intro.rst:305
+#: ../Doc/c-api/intro.rst:309
msgid ""
"However, in practice, you will rarely use these ways of creating and "
"populating a tuple or list. There's a generic function, :c:func:"
@@ -371,7 +377,7 @@ msgid ""
"be replaced by the following (which also takes care of the error checking)::"
msgstr ""
-#: ../Doc/c-api/intro.rst:316
+#: ../Doc/c-api/intro.rst:320
msgid ""
"It is much more common to use :c:func:`PyObject_SetItem` and friends with "
"items whose references you are only borrowing, like arguments that were "
@@ -382,7 +388,7 @@ msgid ""
"sequence) to a given item::"
msgstr ""
-#: ../Doc/c-api/intro.rst:346
+#: ../Doc/c-api/intro.rst:350
msgid ""
"The situation is slightly different for function return values. While "
"passing a reference to most functions does not change your ownership "
@@ -395,7 +401,7 @@ msgid ""
"becomes the owner of the reference)."
msgstr ""
-#: ../Doc/c-api/intro.rst:355
+#: ../Doc/c-api/intro.rst:359
msgid ""
"It is important to realize that whether you own a reference returned by a "
"function depends on which function you call only --- *the plumage* (the type "
@@ -406,18 +412,18 @@ msgid ""
"the same arguments), you do own a reference to the returned object."
msgstr ""
-#: ../Doc/c-api/intro.rst:367
+#: ../Doc/c-api/intro.rst:371
msgid ""
"Here is an example of how you could write a function that computes the sum "
"of the items in a list of integers; once using :c:func:`PyList_GetItem`, "
"and once using :c:func:`PySequence_GetItem`. ::"
msgstr ""
-#: ../Doc/c-api/intro.rst:431
+#: ../Doc/c-api/intro.rst:435
msgid "Types"
msgstr ""
-#: ../Doc/c-api/intro.rst:433
+#: ../Doc/c-api/intro.rst:437
msgid ""
"There are few other data types that play a significant role in the Python/C "
"API; most are simple C types such as :c:type:`int`, :c:type:`long`, :c:type:"
@@ -428,11 +434,11 @@ msgid ""
"that use them."
msgstr ""
-#: ../Doc/c-api/intro.rst:445
+#: ../Doc/c-api/intro.rst:449
msgid "Exceptions"
msgstr "Exceptions"
-#: ../Doc/c-api/intro.rst:447
+#: ../Doc/c-api/intro.rst:451
msgid ""
"The Python programmer only needs to deal with exceptions if specific error "
"handling is required; unhandled exceptions are automatically propagated to "
@@ -441,7 +447,7 @@ msgid ""
"stack traceback."
msgstr ""
-#: ../Doc/c-api/intro.rst:455
+#: ../Doc/c-api/intro.rst:459
msgid ""
"For C programmers, however, error checking always has to be explicit. All "
"functions in the Python/C API can raise exceptions, unless an explicit claim "
@@ -456,7 +462,7 @@ msgid ""
"explicitly documented."
msgstr ""
-#: ../Doc/c-api/intro.rst:470
+#: ../Doc/c-api/intro.rst:474
msgid ""
"Exception state is maintained in per-thread storage (this is equivalent to "
"using global storage in an unthreaded application). A thread can be in one "
@@ -469,7 +475,7 @@ msgid ""
"clears the exception state."
msgstr ""
-#: ../Doc/c-api/intro.rst:480
+#: ../Doc/c-api/intro.rst:484
msgid ""
"The full exception state consists of three objects (all of which can be "
"*NULL*): the exception type, the corresponding exception value, and the "
@@ -482,7 +488,7 @@ msgid ""
"``sys.exc_info()`` and friends."
msgstr ""
-#: ../Doc/c-api/intro.rst:492
+#: ../Doc/c-api/intro.rst:496
msgid ""
"Note that starting with Python 1.5, the preferred, thread-safe way to access "
"the exception state from Python code is to call the function :func:`sys."
@@ -496,7 +502,7 @@ msgid ""
"referenced by the stack frames in the traceback."
msgstr ""
-#: ../Doc/c-api/intro.rst:503
+#: ../Doc/c-api/intro.rst:507
msgid ""
"As a general principle, a function that calls another function to perform "
"some task should check whether the called function raised an exception, and "
@@ -507,7 +513,7 @@ msgid ""
"of the error."
msgstr ""
-#: ../Doc/c-api/intro.rst:512
+#: ../Doc/c-api/intro.rst:516
msgid ""
"A simple example of detecting exceptions and passing them on is shown in "
"the :c:func:`sum_sequence` example above. It so happens that this example "
@@ -516,11 +522,11 @@ msgid ""
"why you like Python, we show the equivalent Python code::"
msgstr ""
-#: ../Doc/c-api/intro.rst:527
+#: ../Doc/c-api/intro.rst:531
msgid "Here is the corresponding C code, in all its glory::"
msgstr ""
-#: ../Doc/c-api/intro.rst:579
+#: ../Doc/c-api/intro.rst:583
msgid ""
"This example represents an endorsed use of the ``goto`` statement in C! It "
"illustrates the use of :c:func:`PyErr_ExceptionMatches` and :c:func:"
@@ -533,11 +539,11 @@ msgid ""
"success after the final call made is successful."
msgstr ""
-#: ../Doc/c-api/intro.rst:593
+#: ../Doc/c-api/intro.rst:597
msgid "Embedding Python"
-msgstr ""
+msgstr "Embarquer Python"
-#: ../Doc/c-api/intro.rst:595
+#: ../Doc/c-api/intro.rst:599
msgid ""
"The one important task that only embedders (as opposed to extension writers) "
"of the Python interpreter have to worry about is the initialization, and "
@@ -545,7 +551,7 @@ msgid ""
"the interpreter can only be used after the interpreter has been initialized."
msgstr ""
-#: ../Doc/c-api/intro.rst:608
+#: ../Doc/c-api/intro.rst:612
msgid ""
"The basic initialization function is :c:func:`Py_Initialize`. This "
"initializes the table of loaded modules, and creates the fundamental "
@@ -553,7 +559,7 @@ msgid ""
"initializes the module search path (``sys.path``)."
msgstr ""
-#: ../Doc/c-api/intro.rst:615
+#: ../Doc/c-api/intro.rst:619
msgid ""
":c:func:`Py_Initialize` does not set the \"script argument list\" (``sys."
"argv``). If this variable is needed by Python code that will be executed "
@@ -561,7 +567,7 @@ msgid ""
"argv, updatepath)`` after the call to :c:func:`Py_Initialize`."
msgstr ""
-#: ../Doc/c-api/intro.rst:620
+#: ../Doc/c-api/intro.rst:624
msgid ""
"On most systems (in particular, on Unix and Windows, although the details "
"are slightly different), :c:func:`Py_Initialize` calculates the module "
@@ -573,7 +579,7 @@ msgid ""
"on the shell command search path (the environment variable :envvar:`PATH`)."
msgstr ""
-#: ../Doc/c-api/intro.rst:629
+#: ../Doc/c-api/intro.rst:633
msgid ""
"For instance, if the Python executable is found in :file:`/usr/local/bin/"
"python`, it will assume that the libraries are in :file:`/usr/local/lib/"
@@ -584,7 +590,7 @@ msgid ""
"in front of the standard path by setting :envvar:`PYTHONPATH`."
msgstr ""
-#: ../Doc/c-api/intro.rst:644
+#: ../Doc/c-api/intro.rst:648
msgid ""
"The embedding application can steer the search by calling "
"``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note "
@@ -595,7 +601,7 @@ msgid ""
"func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)."
msgstr ""
-#: ../Doc/c-api/intro.rst:654
+#: ../Doc/c-api/intro.rst:658
msgid ""
"Sometimes, it is desirable to \"uninitialize\" Python. For instance, the "
"application may want to start over (make another call to :c:func:"
@@ -609,18 +615,18 @@ msgid ""
"released."
msgstr ""
-#: ../Doc/c-api/intro.rst:668
+#: ../Doc/c-api/intro.rst:672
msgid "Debugging Builds"
msgstr ""
-#: ../Doc/c-api/intro.rst:670
+#: ../Doc/c-api/intro.rst:674
msgid ""
"Python can be built with several macros to enable extra checks of the "
"interpreter and extension modules. These checks tend to add a large amount "
"of overhead to the runtime so they are not enabled by default."
msgstr ""
-#: ../Doc/c-api/intro.rst:674
+#: ../Doc/c-api/intro.rst:678
msgid ""
"A full list of the various types of debugging builds is in the file :file:"
"`Misc/SpecialBuilds.txt` in the Python source distribution. Builds are "
@@ -630,7 +636,7 @@ msgid ""
"section."
msgstr ""
-#: ../Doc/c-api/intro.rst:680
+#: ../Doc/c-api/intro.rst:684
msgid ""
"Compiling the interpreter with the :c:macro:`Py_DEBUG` macro defined "
"produces what is generally meant by \"a debug build\" of Python. :c:macro:"
@@ -640,61 +646,61 @@ msgid ""
"enabled in the Unix build, compiler optimization is disabled."
msgstr ""
-#: ../Doc/c-api/intro.rst:687
+#: ../Doc/c-api/intro.rst:691
msgid ""
"In addition to the reference count debugging described below, the following "
"extra checks are performed:"
msgstr ""
-#: ../Doc/c-api/intro.rst:690
+#: ../Doc/c-api/intro.rst:694
msgid "Extra checks are added to the object allocator."
msgstr ""
-#: ../Doc/c-api/intro.rst:692
+#: ../Doc/c-api/intro.rst:696
msgid "Extra checks are added to the parser and compiler."
msgstr ""
-#: ../Doc/c-api/intro.rst:694
+#: ../Doc/c-api/intro.rst:698
msgid ""
"Downcasts from wide types to narrow types are checked for loss of "
"information."
msgstr ""
-#: ../Doc/c-api/intro.rst:696
+#: ../Doc/c-api/intro.rst:700
msgid ""
"A number of assertions are added to the dictionary and set implementations. "
"In addition, the set object acquires a :meth:`test_c_api` method."
msgstr ""
-#: ../Doc/c-api/intro.rst:699
+#: ../Doc/c-api/intro.rst:703
msgid "Sanity checks of the input arguments are added to frame creation."
msgstr ""
-#: ../Doc/c-api/intro.rst:701
+#: ../Doc/c-api/intro.rst:705
msgid ""
"The storage for ints is initialized with a known invalid pattern to catch "
"reference to uninitialized digits."
msgstr ""
-#: ../Doc/c-api/intro.rst:704
+#: ../Doc/c-api/intro.rst:708
msgid ""
"Low-level tracing and extra exception checking are added to the runtime "
"virtual machine."
msgstr ""
-#: ../Doc/c-api/intro.rst:707
+#: ../Doc/c-api/intro.rst:711
msgid "Extra checks are added to the memory arena implementation."
msgstr ""
-#: ../Doc/c-api/intro.rst:709
+#: ../Doc/c-api/intro.rst:713
msgid "Extra debugging is added to the thread module."
msgstr ""
-#: ../Doc/c-api/intro.rst:711
+#: ../Doc/c-api/intro.rst:715
msgid "There may be additional checks not mentioned here."
msgstr ""
-#: ../Doc/c-api/intro.rst:713
+#: ../Doc/c-api/intro.rst:717
msgid ""
"Defining :c:macro:`Py_TRACE_REFS` enables reference tracing. When defined, "
"a circular doubly linked list of active objects is maintained by adding two "
@@ -704,7 +710,7 @@ msgid ""
"macro:`Py_DEBUG`."
msgstr ""
-#: ../Doc/c-api/intro.rst:719
+#: ../Doc/c-api/intro.rst:723
msgid ""
"Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source "
"distribution for more detailed information."
diff --git a/c-api/iterator.po b/c-api/iterator.po
index e5f73fdde..644360afe 100644
--- a/c-api/iterator.po
+++ b/c-api/iterator.po
@@ -6,8 +6,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: 2017-12-13 08:47+0100\n"
-"Last-Translator: Julien Palard \n"
+"PO-Revision-Date: 2019-03-26 17:16+0100\n"
+"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -26,11 +26,12 @@ msgid ""
"sentinel value, calling the callable for each item in the sequence, and "
"ending the iteration when the sentinel value is returned."
msgstr ""
-"Python fournit deux itérateurs génériques. Le premier est un itérateur de "
-"séquence, il fonctionne avec n'importe quelle séquence gérant la méthode :"
-"meth:`__getitem__`. Le second fonctionne avec un objet appelable et une "
-"valeur sentinelle, il appelle l'appelable pour obtenir chaque élément de la "
-"séquence, et l'itération se termine lorsque la sentinelle est reçue."
+"Python fournit deux itérateurs d'usage générique. Le premier est un "
+"itérateur de séquence, il fonctionne avec n'importe quelle séquence "
+"implémentant la méthode :meth:`__getitem__`. Le second fonctionne avec un "
+"objet appelable et une valeur sentinelle, l'appelable permet d'obtenir "
+"chaque élément de la séquence, et l'itération se termine lorsque la "
+"sentinelle est atteinte."
#: ../Doc/c-api/iterator.rst:17
msgid ""
@@ -38,10 +39,13 @@ msgid ""
"one-argument form of the :func:`iter` built-in function for built-in "
"sequence types."
msgstr ""
+"Type des itérateurs renvoyés par les fonctions :c:func:`PySeqIter_New` et la "
+"forme à un argument de la fonction native :func:`iter` pour les séquences "
+"natives."
#: ../Doc/c-api/iterator.rst:24
msgid "Return true if the type of *op* is :c:data:`PySeqIter_Type`."
-msgstr ""
+msgstr "Renvoie vrai si *op* est de type :c:data:`PySeqIter_Type`."
#: ../Doc/c-api/iterator.rst:29
msgid ""
@@ -49,16 +53,20 @@ msgid ""
"iteration ends when the sequence raises :exc:`IndexError` for the "
"subscripting operation."
msgstr ""
+"Renvoie un itérateur sur la séquence *seq*. L'itération prend fin lorsque la "
+"séquence lève :exc:`IndexError` lors d'une tentative d'accès."
#: ../Doc/c-api/iterator.rst:36
msgid ""
"Type object for iterator objects returned by :c:func:`PyCallIter_New` and "
"the two-argument form of the :func:`iter` built-in function."
msgstr ""
+"Type de l'itérateur renvoyé par les fonctions :c:func:`PyCallIter_New` et :"
+"func:`iter` à deux arguments."
#: ../Doc/c-api/iterator.rst:42
msgid "Return true if the type of *op* is :c:data:`PyCallIter_Type`."
-msgstr ""
+msgstr "Renvoie vrai si *op* est de type :c:data:`PyCallIter_Type`."
#: ../Doc/c-api/iterator.rst:47
msgid ""
@@ -67,3 +75,7 @@ msgid ""
"should return the next item in the iteration. When *callable* returns a "
"value equal to *sentinel*, the iteration will be terminated."
msgstr ""
+"Renvoie un nouvel itérateur. Le premier paramètre, *callable*, peut être "
+"n'importe quel objet Python appelable sans aucun paramètre ; chaque appel "
+"doit renvoyer l'élément suivant de l'itération. Lorsque *callable* renvoie "
+"une valeur égale à *sentinel*, l'itération prend fin."
diff --git a/c-api/long.po b/c-api/long.po
index 7f4b3da89..9262049f8 100644
--- a/c-api/long.po
+++ b/c-api/long.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-03-23 09:03+0100\n"
+"POT-Creation-Date: 2019-06-10 10:50+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -158,8 +158,7 @@ msgstr ""
#: ../Doc/c-api/long.rst:140 ../Doc/c-api/long.rst:154
#: ../Doc/c-api/long.rst:169 ../Doc/c-api/long.rst:183
-#: ../Doc/c-api/long.rst:200 ../Doc/c-api/long.rst:262
-#: ../Doc/c-api/long.rst:274
+#: ../Doc/c-api/long.rst:200
msgid "Returns ``-1`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
@@ -270,37 +269,49 @@ msgid ""
"the reduction of that value modulo ``ULONG_MAX + 1``."
msgstr ""
-#: ../Doc/c-api/long.rst:267
+#: ../Doc/c-api/long.rst:262
+msgid ""
+"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
+"disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:268
msgid ""
"Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* "
"is not an instance of :c:type:`PyLongObject`, first call its :meth:`__int__` "
"method (if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:271
+#: ../Doc/c-api/long.rst:272
msgid ""
"If the value of *obj* is out of range for an :c:type:`unsigned long long`, "
"return the reduction of that value modulo ``PY_ULLONG_MAX + 1``."
msgstr ""
-#: ../Doc/c-api/long.rst:279
+#: ../Doc/c-api/long.rst:275
+msgid ""
+"Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` "
+"to disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:281
msgid ""
"Return a C :c:type:`double` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:282
+#: ../Doc/c-api/long.rst:284
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`double`."
msgstr ""
-#: ../Doc/c-api/long.rst:285
+#: ../Doc/c-api/long.rst:287
msgid ""
"Returns ``-1.0`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
-#: ../Doc/c-api/long.rst:290
+#: ../Doc/c-api/long.rst:292
msgid ""
"Convert a Python integer *pylong* to a C :c:type:`void` pointer. If *pylong* "
"cannot be converted, an :exc:`OverflowError` will be raised. This is only "
@@ -308,6 +319,6 @@ msgid ""
"c:func:`PyLong_FromVoidPtr`."
msgstr ""
-#: ../Doc/c-api/long.rst:295
+#: ../Doc/c-api/long.rst:297
msgid "Returns *NULL* on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
diff --git a/c-api/mapping.po b/c-api/mapping.po
index c94973f9c..b715a0c74 100644
--- a/c-api/mapping.po
+++ b/c-api/mapping.po
@@ -16,13 +16,15 @@ msgstr ""
#: ../Doc/c-api/mapping.rst:6
msgid "Mapping Protocol"
-msgstr ""
+msgstr "Protocole de correspondance"
#: ../Doc/c-api/mapping.rst:8
msgid ""
"See also :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` and :c:func:"
"`PyObject_DelItem`."
msgstr ""
+"Voir aussi :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` et :c:func:"
+"`PyObject_DelItem`."
#: ../Doc/c-api/mapping.rst:14
msgid ""
@@ -37,6 +39,8 @@ msgid ""
"Returns the number of keys in object *o* on success, and ``-1`` on failure. "
"This is equivalent to the Python expression ``len(o)``."
msgstr ""
+"Renvoie le nombre de clefs dans l'objet *o* et ``-1`` en cas d'échec. C'est "
+"l'équivalent de l'expression Python ``len(o)``."
#: ../Doc/c-api/mapping.rst:32
msgid ""
@@ -58,12 +62,18 @@ msgid ""
"on failure. This is equivalent to the Python statement ``del o[key]``. This "
"is an alias of :c:func:`PyObject_DelItem`."
msgstr ""
+"Supprime la correspondance associée à l'objet *key* dans l'objet *o*. "
+"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
+"``del o[key]``. C'est un alias pour :c:func:`PyObject_DelItem`."
#: ../Doc/c-api/mapping.rst:53
msgid ""
"Remove the mapping for the string *key* from the object *o*. Return ``-1`` "
"on failure. This is equivalent to the Python statement ``del o[key]``."
msgstr ""
+"Supprime la correspondance associée à la chaîne *key* dans l'objet *o*. "
+"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
+"``del o[key]``."
#: ../Doc/c-api/mapping.rst:59 ../Doc/c-api/mapping.rst:70
msgid ""
@@ -71,6 +81,9 @@ msgid ""
"This is equivalent to the Python expression ``key in o``. This function "
"always succeeds."
msgstr ""
+"Renvoie ``1`` si l'objet de correspondance possède une clef *key* et ``0`` "
+"sinon. C'est l'équivalent de l'expression Python ``key in o``. Cette "
+"fonction ne provoque jamais d'erreur."
#: ../Doc/c-api/mapping.rst:63
msgid ""
@@ -78,6 +91,9 @@ msgid ""
"method will get suppressed. To get error reporting use :c:func:"
"`PyObject_GetItem()` instead."
msgstr ""
+"Notez que les exceptions qui surviennent pendant l'appel de la méthode :meth:"
+"`__getitem__` seront supprimées. Pour obtenir le rapport d'erreur, utilisez "
+"plutôt :c:func:`PyObject_GetItem()`."
#: ../Doc/c-api/mapping.rst:74
msgid ""
@@ -85,6 +101,10 @@ msgid ""
"method and creating a temporary string object will get suppressed. To get "
"error reporting use :c:func:`PyMapping_GetItemString()` instead."
msgstr ""
+"Notez que les exceptions qui surviennent en créant une chaîne de caractères "
+"temporaire pendant l'appel de la méthode :meth:`__getitem__` seront "
+"supprimées. Pour obtenir le rapport d'erreur, utilisez plutôt :c:func:"
+"`PyMapping_GetItemString()`."
#: ../Doc/c-api/mapping.rst:81
msgid ""
@@ -95,7 +115,7 @@ msgstr ""
#: ../Doc/c-api/mapping.rst:84 ../Doc/c-api/mapping.rst:93
#: ../Doc/c-api/mapping.rst:102
msgid "Previously, the function returned a list or a tuple."
-msgstr ""
+msgstr "Auparavant, la fonction renvoyait une liste ou un n-uplet."
#: ../Doc/c-api/mapping.rst:90
msgid ""
diff --git a/c-api/memory.po b/c-api/memory.po
index 4e1993bd6..1692f8227 100644
--- a/c-api/memory.po
+++ b/c-api/memory.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-17 21:38+0100\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -486,19 +486,19 @@ msgid ""
"fields:"
msgstr ""
-#: ../Doc/c-api/memory.rst:368 ../Doc/c-api/memory.rst:506
+#: ../Doc/c-api/memory.rst:368 ../Doc/c-api/memory.rst:513
msgid "Field"
-msgstr ""
+msgstr "Champ"
-#: ../Doc/c-api/memory.rst:368 ../Doc/c-api/memory.rst:506
+#: ../Doc/c-api/memory.rst:368 ../Doc/c-api/memory.rst:513
msgid "Meaning"
msgstr "Signification"
-#: ../Doc/c-api/memory.rst:370 ../Doc/c-api/memory.rst:508
+#: ../Doc/c-api/memory.rst:370 ../Doc/c-api/memory.rst:515
msgid "``void *ctx``"
msgstr "``void *ctx``"
-#: ../Doc/c-api/memory.rst:370 ../Doc/c-api/memory.rst:508
+#: ../Doc/c-api/memory.rst:370 ../Doc/c-api/memory.rst:515
msgid "user context passed as first argument"
msgstr ""
@@ -631,36 +631,37 @@ msgstr ""
#: ../Doc/c-api/memory.rst:443
msgid ""
-"Newly allocated memory is filled with the byte ``0xCB``, freed memory is "
-"filled with the byte ``0xDB``."
+"Newly allocated memory is filled with the byte ``0xCD`` (``CLEANBYTE``), "
+"freed memory is filled with the byte ``0xDD`` (``DEADBYTE``). Memory blocks "
+"are surrounded by \"forbidden bytes\" (``FORBIDDENBYTE``: byte ``0xFD``)."
msgstr ""
-#: ../Doc/c-api/memory.rst:446
+#: ../Doc/c-api/memory.rst:447
msgid "Runtime checks:"
msgstr ""
-#: ../Doc/c-api/memory.rst:448
+#: ../Doc/c-api/memory.rst:449
msgid ""
"Detect API violations, ex: :c:func:`PyObject_Free` called on a buffer "
"allocated by :c:func:`PyMem_Malloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:450
+#: ../Doc/c-api/memory.rst:451
msgid "Detect write before the start of the buffer (buffer underflow)"
msgstr ""
-#: ../Doc/c-api/memory.rst:451
+#: ../Doc/c-api/memory.rst:452
msgid "Detect write after the end of the buffer (buffer overflow)"
msgstr ""
-#: ../Doc/c-api/memory.rst:452
+#: ../Doc/c-api/memory.rst:453
msgid ""
"Check that the :term:`GIL ` is held when allocator "
"functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and :"
"c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called"
msgstr ""
-#: ../Doc/c-api/memory.rst:457
+#: ../Doc/c-api/memory.rst:458
msgid ""
"On error, the debug hooks use the :mod:`tracemalloc` module to get the "
"traceback where a memory block was allocated. The traceback is only "
@@ -668,7 +669,7 @@ msgid ""
"memory block was traced."
msgstr ""
-#: ../Doc/c-api/memory.rst:462
+#: ../Doc/c-api/memory.rst:463
msgid ""
"These hooks are :ref:`installed by default ` if "
"Python is compiled in debug mode. The :envvar:`PYTHONMALLOC` environment "
@@ -676,7 +677,7 @@ msgid ""
"mode."
msgstr ""
-#: ../Doc/c-api/memory.rst:467
+#: ../Doc/c-api/memory.rst:468
msgid ""
"This function now also works on Python compiled in release mode. On error, "
"the debug hooks now use :mod:`tracemalloc` to get the traceback where a "
@@ -685,11 +686,18 @@ msgid ""
"`PYMEM_DOMAIN_MEM` domains are called."
msgstr ""
-#: ../Doc/c-api/memory.rst:478
+#: ../Doc/c-api/memory.rst:475
+msgid ""
+"Byte patterns ``0xCB`` (``CLEANBYTE``), ``0xDB`` (``DEADBYTE``) and ``0xFB`` "
+"(``FORBIDDENBYTE``) have been replaced with ``0xCD``, ``0xDD`` and ``0xFD`` "
+"to use the same values than Windows CRT debug ``malloc()`` and ``free()``."
+msgstr ""
+
+#: ../Doc/c-api/memory.rst:485
msgid "The pymalloc allocator"
msgstr ""
-#: ../Doc/c-api/memory.rst:480
+#: ../Doc/c-api/memory.rst:487
msgid ""
"Python has a *pymalloc* allocator optimized for small objects (smaller or "
"equal to 512 bytes) with a short lifetime. It uses memory mappings called "
@@ -698,83 +706,83 @@ msgid ""
"512 bytes."
msgstr ""
-#: ../Doc/c-api/memory.rst:485
+#: ../Doc/c-api/memory.rst:492
msgid ""
"*pymalloc* is the :ref:`default allocator ` of "
"the :c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:data:"
"`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) domains."
msgstr ""
-#: ../Doc/c-api/memory.rst:489
+#: ../Doc/c-api/memory.rst:496
msgid "The arena allocator uses the following functions:"
msgstr ""
-#: ../Doc/c-api/memory.rst:491
+#: ../Doc/c-api/memory.rst:498
msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows,"
msgstr ""
-#: ../Doc/c-api/memory.rst:492
+#: ../Doc/c-api/memory.rst:499
msgid ":c:func:`mmap` and :c:func:`munmap` if available,"
msgstr ""
-#: ../Doc/c-api/memory.rst:493
+#: ../Doc/c-api/memory.rst:500
msgid ":c:func:`malloc` and :c:func:`free` otherwise."
msgstr ""
-#: ../Doc/c-api/memory.rst:496
+#: ../Doc/c-api/memory.rst:503
msgid "Customize pymalloc Arena Allocator"
msgstr ""
-#: ../Doc/c-api/memory.rst:502
+#: ../Doc/c-api/memory.rst:509
msgid ""
"Structure used to describe an arena allocator. The structure has three "
"fields:"
msgstr ""
-#: ../Doc/c-api/memory.rst:510
+#: ../Doc/c-api/memory.rst:517
msgid "``void* alloc(void *ctx, size_t size)``"
msgstr "``void* alloc(void *ctx, size_t size)``"
-#: ../Doc/c-api/memory.rst:510
+#: ../Doc/c-api/memory.rst:517
msgid "allocate an arena of size bytes"
msgstr ""
-#: ../Doc/c-api/memory.rst:512
+#: ../Doc/c-api/memory.rst:519
msgid "``void free(void *ctx, size_t size, void *ptr)``"
msgstr "``void free(void *ctx, size_t size, void *ptr)``"
-#: ../Doc/c-api/memory.rst:512
+#: ../Doc/c-api/memory.rst:519
msgid "free an arena"
msgstr ""
-#: ../Doc/c-api/memory.rst:517
+#: ../Doc/c-api/memory.rst:524
msgid "Get the arena allocator."
msgstr ""
-#: ../Doc/c-api/memory.rst:521
+#: ../Doc/c-api/memory.rst:528
msgid "Set the arena allocator."
msgstr ""
-#: ../Doc/c-api/memory.rst:525
+#: ../Doc/c-api/memory.rst:532
msgid "tracemalloc C API"
msgstr ""
-#: ../Doc/c-api/memory.rst:549
+#: ../Doc/c-api/memory.rst:556
msgid "Examples"
msgstr "Exemples"
-#: ../Doc/c-api/memory.rst:551
+#: ../Doc/c-api/memory.rst:558
msgid ""
"Here is the example from section :ref:`memoryoverview`, rewritten so that "
"the I/O buffer is allocated from the Python heap by using the first function "
"set::"
msgstr ""
-#: ../Doc/c-api/memory.rst:564
+#: ../Doc/c-api/memory.rst:571
msgid "The same code using the type-oriented function set::"
msgstr ""
-#: ../Doc/c-api/memory.rst:576
+#: ../Doc/c-api/memory.rst:583
msgid ""
"Note that in the two examples above, the buffer is always manipulated via "
"functions belonging to the same set. Indeed, it is required to use the same "
@@ -784,14 +792,14 @@ msgid ""
"different allocators operating on different heaps. ::"
msgstr ""
-#: ../Doc/c-api/memory.rst:591
+#: ../Doc/c-api/memory.rst:598
msgid ""
"In addition to the functions aimed at handling raw memory blocks from the "
"Python heap, objects in Python are allocated and released with :c:func:"
"`PyObject_New`, :c:func:`PyObject_NewVar` and :c:func:`PyObject_Del`."
msgstr ""
-#: ../Doc/c-api/memory.rst:595
+#: ../Doc/c-api/memory.rst:602
msgid ""
"These will be explained in the next chapter on defining and implementing new "
"object types in C."
diff --git a/c-api/memoryview.po b/c-api/memoryview.po
index 733a12901..395a03b8f 100644
--- a/c-api/memoryview.po
+++ b/c-api/memoryview.po
@@ -24,6 +24,9 @@ msgid ""
"` as a Python object which can then be passed around like any "
"other object."
msgstr ""
+"Un objet Python :class:`memoryview` expose le :ref:`protocole tampon "
+"` du C. Cet objet peut ensuite être passé comme n'importe "
+"quel objet."
#: ../Doc/c-api/memoryview.rst:18
msgid ""
@@ -32,12 +35,18 @@ msgid ""
"will be read/write, otherwise it may be either read-only or read/write at "
"the discretion of the exporter."
msgstr ""
+"Crée un objet *memoryview* à partir d'un objet implémentant le protocole "
+"tampon. Si *obj* permet d'exporter des tampons modifiables, l'objet "
+"*memoryview* crée acceptera la lecture et écriture, sinon l'objet crée est "
+"soit en lecture seule ou lecture/écriture, à la discrétion de l'*exporteur*."
#: ../Doc/c-api/memoryview.rst:25
msgid ""
"Create a memoryview object using *mem* as the underlying buffer. *flags* can "
"be one of :c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE`."
msgstr ""
+"Crée un objet *memoryview* utilisant *mem* comme un tampon sous-jacent. "
+"*flags* peut être :c:macro:`PyBUF_READ` ou :c:macro:`PyBUF_WRITE`."
#: ../Doc/c-api/memoryview.rst:32
msgid ""
@@ -45,6 +54,8 @@ msgid ""
"simple byte buffers, :c:func:`PyMemoryView_FromMemory` is the preferred "
"function."
msgstr ""
+"Crée un objet *memoryview* à partir de la structure tampon *view*. Pour de "
+"simples tampons d'octets, :c:func:`PyMemoryView_FromMemory` est préférée."
#: ../Doc/c-api/memoryview.rst:38
msgid ""
@@ -54,12 +65,19 @@ msgid ""
"original memory. Otherwise, a copy is made and the memoryview points to a "
"new bytes object."
msgstr ""
+"Crée un objet *memoryview* vers un segment de mémoire :term:`contiguous` "
+"(organisé comme en ``'C'`` ou comme en ``'F'`` pour Fortran) à partir d'un "
+"objet qui expose le protocole tampon. Si la mémoire est contiguë, l'objet "
+"*memoryview* pointe vers la mémoire d'origine. Sinon une copie est faite et "
+"la *memoryview* pointe vers un nouvel objet *bytes*."
#: ../Doc/c-api/memoryview.rst:47
msgid ""
"Return true if the object *obj* is a memoryview object. It is not currently "
"allowed to create subclasses of :class:`memoryview`."
msgstr ""
+"Renvoie vrai si l'objet *obj* est un objet *memoryview*. Il n'est pas permis "
+"de créer une sous-classe de :class:`memoryview`."
#: ../Doc/c-api/memoryview.rst:53
msgid ""
@@ -67,6 +85,10 @@ msgid ""
"*mview* **must** be a memoryview instance; this macro doesn't check its "
"type, you must do it yourself or you will risk crashes."
msgstr ""
+"Retourne un pointeur vers la copie privée du tampon de l'*exporteur* de "
+"*memoryview*. *mview* **doit** être une instance de *memoryview*; cette "
+"macro ne vérifie pas le type, vous devez le faire vous-même sinon vous "
+"pourriez subir un crash."
#: ../Doc/c-api/memoryview.rst:59
msgid ""
diff --git a/c-api/objbuffer.po b/c-api/objbuffer.po
index 0e5dafd0c..b8fa1e503 100644
--- a/c-api/objbuffer.po
+++ b/c-api/objbuffer.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-21 09:48+0100\n"
-"PO-Revision-Date: 2018-11-30 10:55+0100\n"
+"POT-Creation-Date: 2019-04-10 09:35+0200\n"
+"PO-Revision-Date: 2019-04-11 19:43+0200\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \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\n"
+"X-Generator: Poedit 2.2.1\n"
#: ../Doc/c-api/objbuffer.rst:4
msgid "Old Buffer Protocol"
@@ -78,20 +78,23 @@ msgstr ""
"`TypeError` en cas d'erreur."
#: ../Doc/c-api/objbuffer.rst:41
-#, fuzzy
msgid ""
"Returns ``1`` if *o* supports the single-segment readable buffer interface. "
"Otherwise returns ``0``. This function always succeeds."
msgstr ""
"Retourne ``1`` si *o* prend en charge l'interface de mémoire tampon lisible "
-"à segment unique. Sinon, renvoie ``0``."
+"à segment unique. Sinon, renvoie ``0``. Cette fonction réussit toujours."
#: ../Doc/c-api/objbuffer.rst:44
msgid ""
"Note that this function tries to get and release a buffer, and exceptions "
-"which occur while calling correspoding functions will get suppressed. To get "
-"error reporting use :c:func:`PyObject_GetBuffer()` instead."
+"which occur while calling corresponding functions will get suppressed. To "
+"get error reporting use :c:func:`PyObject_GetBuffer()` instead."
msgstr ""
+"Notez que cette fonction tente d'obtenir et de libérer une mémoire tampon, "
+"et les exceptions qui se produisent lors de l'appel des fonctions "
+"correspondantes seront supprimées. Pour que les erreurs vous soient "
+"signalées, utilisez :c:func:`PyObject_GetBuffer()` à la place."
#: ../Doc/c-api/objbuffer.rst:51
msgid ""
diff --git a/c-api/object.po b/c-api/object.po
index 6856a36ef..a8b685247 100644
--- a/c-api/object.po
+++ b/c-api/object.po
@@ -5,9 +5,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-21 09:48+0100\n"
-"PO-Revision-Date: 2018-10-21 21:30+0200\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-06-19 22:32+0200\n"
+"PO-Revision-Date: 2019-08-16 22:56+0200\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -237,7 +237,7 @@ msgstr ""
"Calcule une représentation en chaîne de caractères de l'objet *o*. Renvoie "
"la représentation en chaîne de caractères en cas de succès, *NULL* en cas "
"d'échec. Ceci est l'équivalent de l'expression Python ``repr(o)``. Appelé "
-"par la fonction intégrée :func:`repr`."
+"par la fonction native :func:`repr`."
#: ../Doc/c-api/object.rst:171 ../Doc/c-api/object.rst:195
msgid ""
@@ -392,21 +392,24 @@ msgstr ""
"argument n'est nécessaire. Si aucun argument nommé n'est nécessaire, "
"*kwargs* peut être égal à *NULL*."
-#: ../Doc/c-api/object.rst:264 ../Doc/c-api/object.rst:275
-#: ../Doc/c-api/object.rst:286 ../Doc/c-api/object.rst:305
-#: ../Doc/c-api/object.rst:323
-msgid "Returns the result of the call on success, or *NULL* on failure."
+#: ../Doc/c-api/object.rst:264 ../Doc/c-api/object.rst:276
+#: ../Doc/c-api/object.rst:288 ../Doc/c-api/object.rst:308
+#: ../Doc/c-api/object.rst:327 ../Doc/c-api/object.rst:341
+msgid ""
+"Return the result of the call on success, or raise an exception and return "
+"*NULL* on failure."
msgstr ""
-"Renvoie le résultat de l'appel en cas de succès, ou *NULL* en cas d'échec."
+"Renvoie le résultat de l'appel en cas de succès, ou lève une exception et "
+"renvoie *NULL* en cas d'échec."
-#: ../Doc/c-api/object.rst:266
+#: ../Doc/c-api/object.rst:267
msgid ""
"This is the equivalent of the Python expression: ``callable(*args, "
"**kwargs)``."
msgstr ""
"Ceci est l'équivalent de l'expression Python : ``callable(*args, **kwargs)``."
-#: ../Doc/c-api/object.rst:272
+#: ../Doc/c-api/object.rst:273
msgid ""
"Call a callable Python object *callable*, with arguments given by the tuple "
"*args*. If no arguments are needed, then *args* can be *NULL*."
@@ -415,11 +418,11 @@ msgstr ""
"le tuple *args*. Si aucun argument n'est nécessaire, alors *args* peut être "
"égal à *NULL*."
-#: ../Doc/c-api/object.rst:277 ../Doc/c-api/object.rst:288
+#: ../Doc/c-api/object.rst:279 ../Doc/c-api/object.rst:291
msgid "This is the equivalent of the Python expression: ``callable(*args)``."
msgstr "Ceci est l'équivalent de l'expression Python : ``callable(*args)``."
-#: ../Doc/c-api/object.rst:282
+#: ../Doc/c-api/object.rst:284
msgid ""
"Call a callable Python object *callable*, with a variable number of C "
"arguments. The C arguments are described using a :c:func:`Py_BuildValue` "
@@ -431,78 +434,77 @@ msgstr ""
"c:func:`Py_BuildValue`. Le format peut être *NULL*, indiquant qu'aucun "
"argument n'est donné."
-#: ../Doc/c-api/object.rst:290
+#: ../Doc/c-api/object.rst:293
msgid ""
"Note that if you only pass :c:type:`PyObject \\*` args, :c:func:"
"`PyObject_CallFunctionObjArgs` is a faster alternative."
msgstr ""
-#: ../Doc/c-api/object.rst:293
+#: ../Doc/c-api/object.rst:296
msgid "The type of *format* was changed from ``char *``."
msgstr ""
-#: ../Doc/c-api/object.rst:299
+#: ../Doc/c-api/object.rst:302
msgid ""
"Call the method named *name* of object *obj* with a variable number of C "
"arguments. The C arguments are described by a :c:func:`Py_BuildValue` "
"format string that should produce a tuple."
msgstr ""
-#: ../Doc/c-api/object.rst:303
+#: ../Doc/c-api/object.rst:306
msgid "The format can be *NULL*, indicating that no arguments are provided."
msgstr ""
-#: ../Doc/c-api/object.rst:307
+#: ../Doc/c-api/object.rst:311
msgid ""
"This is the equivalent of the Python expression: ``obj.name(arg1, "
"arg2, ...)``."
msgstr ""
-#: ../Doc/c-api/object.rst:310
+#: ../Doc/c-api/object.rst:314
msgid ""
"Note that if you only pass :c:type:`PyObject \\*` args, :c:func:"
"`PyObject_CallMethodObjArgs` is a faster alternative."
msgstr ""
-#: ../Doc/c-api/object.rst:313
+#: ../Doc/c-api/object.rst:317
msgid "The types of *name* and *format* were changed from ``char *``."
msgstr ""
-#: ../Doc/c-api/object.rst:319
+#: ../Doc/c-api/object.rst:323
msgid ""
"Call a callable Python object *callable*, with a variable number of :c:type:"
"`PyObject\\*` arguments. The arguments are provided as a variable number of "
"parameters followed by *NULL*."
msgstr ""
-#: ../Doc/c-api/object.rst:325
+#: ../Doc/c-api/object.rst:330
msgid ""
"This is the equivalent of the Python expression: ``callable(arg1, "
"arg2, ...)``."
msgstr ""
-#: ../Doc/c-api/object.rst:331
+#: ../Doc/c-api/object.rst:336
msgid ""
"Calls a method of the Python object *obj*, where the name of the method is "
"given as a Python string object in *name*. It is called with a variable "
"number of :c:type:`PyObject\\*` arguments. The arguments are provided as a "
-"variable number of parameters followed by *NULL*. Returns the result of the "
-"call on success, or *NULL* on failure."
+"variable number of parameters followed by *NULL*."
msgstr ""
-#: ../Doc/c-api/object.rst:342
+#: ../Doc/c-api/object.rst:349
msgid ""
"Compute and return the hash value of an object *o*. On failure, return "
"``-1``. This is the equivalent of the Python expression ``hash(o)``."
msgstr ""
-#: ../Doc/c-api/object.rst:345
+#: ../Doc/c-api/object.rst:352
msgid ""
"The return type is now Py_hash_t. This is a signed integer the same size as "
"Py_ssize_t."
msgstr ""
-#: ../Doc/c-api/object.rst:352
+#: ../Doc/c-api/object.rst:359
msgid ""
"Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and "
"return ``-1``. This function receives special treatment when stored in a "
@@ -510,21 +512,21 @@ msgid ""
"that it is not hashable."
msgstr ""
-#: ../Doc/c-api/object.rst:360
+#: ../Doc/c-api/object.rst:367
msgid ""
"Returns ``1`` if the object *o* is considered to be true, and ``0`` "
"otherwise. This is equivalent to the Python expression ``not not o``. On "
"failure, return ``-1``."
msgstr ""
-#: ../Doc/c-api/object.rst:367
+#: ../Doc/c-api/object.rst:374
msgid ""
"Returns ``0`` if the object *o* is considered to be true, and ``1`` "
"otherwise. This is equivalent to the Python expression ``not o``. On "
"failure, return ``-1``."
msgstr ""
-#: ../Doc/c-api/object.rst:376
+#: ../Doc/c-api/object.rst:383
msgid ""
"When *o* is non-*NULL*, returns a type object corresponding to the object "
"type of object *o*. On failure, raises :exc:`SystemError` and returns "
@@ -535,13 +537,13 @@ msgid ""
"except when the incremented reference count is needed."
msgstr ""
-#: ../Doc/c-api/object.rst:387
+#: ../Doc/c-api/object.rst:394
msgid ""
"Return true if the object *o* is of type *type* or a subtype of *type*. "
"Both parameters must be non-*NULL*."
msgstr ""
-#: ../Doc/c-api/object.rst:396
+#: ../Doc/c-api/object.rst:403
msgid ""
"Return the length of object *o*. If the object *o* provides either the "
"sequence and mapping protocols, the sequence length is returned. On error, "
@@ -549,7 +551,7 @@ msgid ""
"``len(o)``."
msgstr ""
-#: ../Doc/c-api/object.rst:403
+#: ../Doc/c-api/object.rst:410
msgid ""
"Return an estimated length for the object *o*. First try to return its "
"actual length, then an estimate using :meth:`~object.__length_hint__`, and "
@@ -557,26 +559,26 @@ msgid ""
"equivalent to the Python expression ``operator.length_hint(o, default)``."
msgstr ""
-#: ../Doc/c-api/object.rst:413
+#: ../Doc/c-api/object.rst:420
msgid ""
"Return element of *o* corresponding to the object *key* or *NULL* on "
"failure. This is the equivalent of the Python expression ``o[key]``."
msgstr ""
-#: ../Doc/c-api/object.rst:419
+#: ../Doc/c-api/object.rst:426
msgid ""
"Map the object *key* to the value *v*. Raise an exception and return ``-1`` "
"on failure; return ``0`` on success. This is the equivalent of the Python "
"statement ``o[key] = v``."
msgstr ""
-#: ../Doc/c-api/object.rst:426
+#: ../Doc/c-api/object.rst:433
msgid ""
"Remove the mapping for the object *key* from the object *o*. Return ``-1`` "
"on failure. This is equivalent to the Python statement ``del o[key]``."
msgstr ""
-#: ../Doc/c-api/object.rst:432
+#: ../Doc/c-api/object.rst:439
msgid ""
"This is equivalent to the Python expression ``dir(o)``, returning a "
"(possibly empty) list of strings appropriate for the object argument, or "
@@ -586,7 +588,7 @@ msgid ""
"`PyErr_Occurred` will return false."
msgstr ""
-#: ../Doc/c-api/object.rst:441
+#: ../Doc/c-api/object.rst:448
msgid ""
"This is equivalent to the Python expression ``iter(o)``. It returns a new "
"iterator for the object argument, or the object itself if the object is "
diff --git a/c-api/reflection.po b/c-api/reflection.po
index 0560ed3b5..3fc439a99 100644
--- a/c-api/reflection.po
+++ b/c-api/reflection.po
@@ -6,8 +6,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2019-02-26 12:01+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -16,41 +16,52 @@ msgstr ""
#: ../Doc/c-api/reflection.rst:6
msgid "Reflection"
-msgstr ""
+msgstr "Réflexion"
#: ../Doc/c-api/reflection.rst:10
msgid ""
"Return a dictionary of the builtins in the current execution frame, or the "
"interpreter of the thread state if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des fonctions natives de la *frame* en cours "
+"d'exécution, ou si aucune *frame* n'est exécutée, les fonctions natives du "
+"*thread* indiqué par le *thread state*."
#: ../Doc/c-api/reflection.rst:16
msgid ""
"Return a dictionary of the local variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des variables locales de la *frame* en cours "
+"d'exécution, ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:22
msgid ""
"Return a dictionary of the global variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des variables globales de la *frame* en cours "
+"d'exécution ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:28
msgid ""
"Return the current thread state's frame, which is *NULL* if no frame is "
"currently executing."
msgstr ""
+"Renvoie la *frame* actuelle selon le *thread state*, qui est *NULL* si "
+"aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:34
msgid "Return the line number that *frame* is currently executing."
-msgstr ""
+msgstr "Renvoie le numéro de ligne que *frame* est en train d'exécuter"
#: ../Doc/c-api/reflection.rst:39
msgid ""
"Return the name of *func* if it is a function, class or instance object, "
"else the name of *func*\\s type."
msgstr ""
+"Renvoie le nom de *func* s'il s'agit d'une fonction, d'une classe ou d'un "
+"objet d'instance, sinon le nom du type de *func*"
#: ../Doc/c-api/reflection.rst:45
msgid ""
@@ -59,3 +70,8 @@ msgid ""
"and \" object\". Concatenated with the result of :c:func:"
"`PyEval_GetFuncName`, the result will be a description of *func*."
msgstr ""
+"Renvoie une description en chaîne de caractères, en fonction du type de "
+"*func*. Les valeurs renvoyées peuvent être ``\"()\"`` pour les fonction et "
+"les méthodes, ``\\\" constructor\\\"``, ``\\\" instance\\\"``, ``\\\" object"
+"\\\"``. Concaténé avec le résultat de :c:func:`PyEval_GetFuncName`, le "
+"résultat sera une description de *func*"
diff --git a/c-api/structures.po b/c-api/structures.po
index 4422d3729..aa3cd2e96 100644
--- a/c-api/structures.po
+++ b/c-api/structures.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-17 21:38+0100\n"
+"POT-Creation-Date: 2019-06-19 22:32+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -117,82 +117,92 @@ msgstr ""
#: ../Doc/c-api/structures.rst:117
msgid ""
-"Type of the functions used to implement Python callables in C that take "
-"keyword arguments: they take three :c:type:`PyObject\\*` parameters and "
-"return one such value. See :c:type:`PyCFunction` above for the meaning of "
-"the return value."
+"Type of the functions used to implement Python callables in C with "
+"signature :const:`METH_VARARGS | METH_KEYWORDS`."
msgstr ""
-#: ../Doc/c-api/structures.rst:125
+#: ../Doc/c-api/structures.rst:123
+msgid ""
+"Type of the functions used to implement Python callables in C with "
+"signature :const:`METH_FASTCALL`."
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:129
+msgid ""
+"Type of the functions used to implement Python callables in C with "
+"signature :const:`METH_FASTCALL | METH_KEYWORDS`."
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:135
msgid ""
"Structure used to describe a method of an extension type. This structure "
"has four fields:"
msgstr ""
-#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
-#: ../Doc/c-api/structures.rst:306
+#: ../Doc/c-api/structures.rst:139 ../Doc/c-api/structures.rst:279
+#: ../Doc/c-api/structures.rst:345
msgid "Field"
-msgstr ""
+msgstr "Champ"
-#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
-#: ../Doc/c-api/structures.rst:306
+#: ../Doc/c-api/structures.rst:139 ../Doc/c-api/structures.rst:279
+#: ../Doc/c-api/structures.rst:345
msgid "C Type"
msgstr "Type C"
-#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
-#: ../Doc/c-api/structures.rst:306
+#: ../Doc/c-api/structures.rst:139 ../Doc/c-api/structures.rst:279
+#: ../Doc/c-api/structures.rst:345
msgid "Meaning"
msgstr "Signification"
-#: ../Doc/c-api/structures.rst:131
+#: ../Doc/c-api/structures.rst:141
msgid ":attr:`ml_name`"
msgstr ""
-#: ../Doc/c-api/structures.rst:131 ../Doc/c-api/structures.rst:139
-#: ../Doc/c-api/structures.rst:242 ../Doc/c-api/structures.rst:255
-#: ../Doc/c-api/structures.rst:271 ../Doc/c-api/structures.rst:308
-#: ../Doc/c-api/structures.rst:316
+#: ../Doc/c-api/structures.rst:141 ../Doc/c-api/structures.rst:149
+#: ../Doc/c-api/structures.rst:281 ../Doc/c-api/structures.rst:294
+#: ../Doc/c-api/structures.rst:310 ../Doc/c-api/structures.rst:347
+#: ../Doc/c-api/structures.rst:355
msgid "const char \\*"
msgstr ""
-#: ../Doc/c-api/structures.rst:131
+#: ../Doc/c-api/structures.rst:141
msgid "name of the method"
msgstr ""
-#: ../Doc/c-api/structures.rst:133
+#: ../Doc/c-api/structures.rst:143
msgid ":attr:`ml_meth`"
msgstr ""
-#: ../Doc/c-api/structures.rst:133
+#: ../Doc/c-api/structures.rst:143
msgid "PyCFunction"
msgstr "PyCFunction"
-#: ../Doc/c-api/structures.rst:133
+#: ../Doc/c-api/structures.rst:143
msgid "pointer to the C implementation"
msgstr ""
-#: ../Doc/c-api/structures.rst:136
+#: ../Doc/c-api/structures.rst:146
msgid ":attr:`ml_flags`"
msgstr ""
-#: ../Doc/c-api/structures.rst:136 ../Doc/c-api/structures.rst:244
-#: ../Doc/c-api/structures.rst:251 ../Doc/c-api/structures.rst:267
+#: ../Doc/c-api/structures.rst:146 ../Doc/c-api/structures.rst:283
+#: ../Doc/c-api/structures.rst:290 ../Doc/c-api/structures.rst:306
msgid "int"
msgstr "*int*"
-#: ../Doc/c-api/structures.rst:136
+#: ../Doc/c-api/structures.rst:146
msgid "flag bits indicating how the call should be constructed"
msgstr ""
-#: ../Doc/c-api/structures.rst:139
+#: ../Doc/c-api/structures.rst:149
msgid ":attr:`ml_doc`"
msgstr ""
-#: ../Doc/c-api/structures.rst:139 ../Doc/c-api/structures.rst:255
+#: ../Doc/c-api/structures.rst:149 ../Doc/c-api/structures.rst:294
msgid "points to the contents of the docstring"
msgstr ""
-#: ../Doc/c-api/structures.rst:143
+#: ../Doc/c-api/structures.rst:153
msgid ""
"The :attr:`ml_meth` is a C function pointer. The functions may be of "
"different types, but they always return :c:type:`PyObject\\*`. If the "
@@ -202,16 +212,21 @@ msgid ""
"implementation uses the specific C type of the *self* object."
msgstr ""
-#: ../Doc/c-api/structures.rst:150
+#: ../Doc/c-api/structures.rst:160
msgid ""
"The :attr:`ml_flags` field is a bitfield which can include the following "
"flags. The individual flags indicate either a calling convention or a "
-"binding convention. Of the calling convention flags, only :const:"
-"`METH_VARARGS` and :const:`METH_KEYWORDS` can be combined. Any of the "
-"calling convention flags can be combined with a binding flag."
+"binding convention."
msgstr ""
-#: ../Doc/c-api/structures.rst:159
+#: ../Doc/c-api/structures.rst:164
+msgid ""
+"There are four basic calling conventions for positional arguments and two of "
+"them can be combined with :const:`METH_KEYWORDS` to support also keyword "
+"arguments. So there are a total of 6 calling conventions:"
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:170
msgid ""
"This is the typical calling convention, where the methods have the type :c:"
"type:`PyCFunction`. The function expects two :c:type:`PyObject\\*` values. "
@@ -221,16 +236,40 @@ msgid ""
"using :c:func:`PyArg_ParseTuple` or :c:func:`PyArg_UnpackTuple`."
msgstr ""
-#: ../Doc/c-api/structures.rst:169
+#: ../Doc/c-api/structures.rst:180
msgid ""
"Methods with these flags must be of type :c:type:`PyCFunctionWithKeywords`. "
-"The function expects three parameters: *self*, *args*, and a dictionary of "
-"all the keyword arguments. The flag must be combined with :const:"
-"`METH_VARARGS`, and the parameters are typically processed using :c:func:"
-"`PyArg_ParseTupleAndKeywords`."
+"The function expects three parameters: *self*, *args*, *kwargs* where "
+"*kwargs* is a dictionary of all the keyword arguments or possibly *NULL* if "
+"there are no keyword arguments. The parameters are typically processed "
+"using :c:func:`PyArg_ParseTupleAndKeywords`."
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:189
+msgid ""
+"Fast calling convention supporting only positional arguments. The methods "
+"have the type :c:type:`_PyCFunctionFast`. The first parameter is *self*, the "
+"second parameter is a C array of :c:type:`PyObject\\*` values indicating the "
+"arguments and the third parameter is the number of arguments (the length of "
+"the array)."
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:195 ../Doc/c-api/structures.rst:210
+msgid "This is not part of the :ref:`limited API `."
+msgstr ""
+
+#: ../Doc/c-api/structures.rst:202
+msgid ""
+"Extension of :const:`METH_FASTCALL` supporting also keyword arguments, with "
+"methods of type :c:type:`_PyCFunctionFastWithKeywords`. Keyword arguments "
+"are passed the same way as in the vectorcall protocol: there is an "
+"additional fourth :c:type:`PyObject\\*` parameter which is a tuple "
+"representing the names of the keyword arguments or possibly *NULL* if there "
+"are no keywords. The values of the keyword arguments are stored in the "
+"*args* array, after the positional arguments."
msgstr ""
-#: ../Doc/c-api/structures.rst:178
+#: ../Doc/c-api/structures.rst:217
msgid ""
"Methods without parameters don't need to check whether arguments are given "
"if they are listed with the :const:`METH_NOARGS` flag. They need to be of "
@@ -239,7 +278,7 @@ msgid ""
"the second parameter will be *NULL*."
msgstr ""
-#: ../Doc/c-api/structures.rst:187
+#: ../Doc/c-api/structures.rst:226
msgid ""
"Methods with a single object argument can be listed with the :const:`METH_O` "
"flag, instead of invoking :c:func:`PyArg_ParseTuple` with a ``\"O\"`` "
@@ -248,7 +287,7 @@ msgid ""
"argument."
msgstr ""
-#: ../Doc/c-api/structures.rst:193
+#: ../Doc/c-api/structures.rst:232
msgid ""
"These two constants are not used to indicate the calling convention but the "
"binding when use with methods of classes. These may not be used for "
@@ -256,27 +295,27 @@ msgid ""
"any given method."
msgstr ""
-#: ../Doc/c-api/structures.rst:203
+#: ../Doc/c-api/structures.rst:242
msgid ""
"The method will be passed the type object as the first parameter rather than "
"an instance of the type. This is used to create *class methods*, similar to "
"what is created when using the :func:`classmethod` built-in function."
msgstr ""
-#: ../Doc/c-api/structures.rst:213
+#: ../Doc/c-api/structures.rst:252
msgid ""
"The method will be passed *NULL* as the first parameter rather than an "
"instance of the type. This is used to create *static methods*, similar to "
"what is created when using the :func:`staticmethod` built-in function."
msgstr ""
-#: ../Doc/c-api/structures.rst:217
+#: ../Doc/c-api/structures.rst:256
msgid ""
"One other constant controls whether a method is loaded in place of another "
"definition with the same method name."
msgstr ""
-#: ../Doc/c-api/structures.rst:223
+#: ../Doc/c-api/structures.rst:262
msgid ""
"The method will be loaded in place of existing definitions. Without "
"*METH_COEXIST*, the default is to skip repeated definitions. Since slot "
@@ -289,190 +328,190 @@ msgid ""
"calls."
msgstr ""
-#: ../Doc/c-api/structures.rst:236
+#: ../Doc/c-api/structures.rst:275
msgid ""
"Structure which describes an attribute of a type which corresponds to a C "
"struct member. Its fields are:"
msgstr ""
-#: ../Doc/c-api/structures.rst:242
+#: ../Doc/c-api/structures.rst:281
msgid ":attr:`name`"
msgstr ""
-#: ../Doc/c-api/structures.rst:242
+#: ../Doc/c-api/structures.rst:281
msgid "name of the member"
msgstr ""
-#: ../Doc/c-api/structures.rst:244
+#: ../Doc/c-api/structures.rst:283
msgid ":attr:`!type`"
msgstr ""
-#: ../Doc/c-api/structures.rst:244
+#: ../Doc/c-api/structures.rst:283
msgid "the type of the member in the C struct"
msgstr ""
-#: ../Doc/c-api/structures.rst:247
+#: ../Doc/c-api/structures.rst:286
msgid ":attr:`offset`"
msgstr ""
-#: ../Doc/c-api/structures.rst:247 ../Doc/c-api/structures.rst:283
+#: ../Doc/c-api/structures.rst:286 ../Doc/c-api/structures.rst:322
msgid "Py_ssize_t"
msgstr ""
-#: ../Doc/c-api/structures.rst:247
+#: ../Doc/c-api/structures.rst:286
msgid ""
"the offset in bytes that the member is located on the type's object struct"
msgstr ""
-#: ../Doc/c-api/structures.rst:251
+#: ../Doc/c-api/structures.rst:290
msgid ":attr:`flags`"
msgstr ""
-#: ../Doc/c-api/structures.rst:251
+#: ../Doc/c-api/structures.rst:290
msgid "flag bits indicating if the field should be read-only or writable"
msgstr ""
-#: ../Doc/c-api/structures.rst:255
+#: ../Doc/c-api/structures.rst:294
msgid ":attr:`doc`"
msgstr ""
-#: ../Doc/c-api/structures.rst:259
+#: ../Doc/c-api/structures.rst:298
msgid ""
":attr:`!type` can be one of many ``T_`` macros corresponding to various C "
"types. When the member is accessed in Python, it will be converted to the "
"equivalent Python type."
msgstr ""
-#: ../Doc/c-api/structures.rst:264
+#: ../Doc/c-api/structures.rst:303
msgid "Macro name"
msgstr ""
-#: ../Doc/c-api/structures.rst:264
+#: ../Doc/c-api/structures.rst:303
msgid "C type"
msgstr "Type C"
-#: ../Doc/c-api/structures.rst:266
+#: ../Doc/c-api/structures.rst:305
msgid "T_SHORT"
msgstr ""
-#: ../Doc/c-api/structures.rst:266
+#: ../Doc/c-api/structures.rst:305
msgid "short"
msgstr ""
-#: ../Doc/c-api/structures.rst:267
+#: ../Doc/c-api/structures.rst:306
msgid "T_INT"
msgstr ""
-#: ../Doc/c-api/structures.rst:268
+#: ../Doc/c-api/structures.rst:307
msgid "T_LONG"
msgstr ""
-#: ../Doc/c-api/structures.rst:268
+#: ../Doc/c-api/structures.rst:307
msgid "long"
msgstr ""
-#: ../Doc/c-api/structures.rst:269
+#: ../Doc/c-api/structures.rst:308
msgid "T_FLOAT"
msgstr ""
-#: ../Doc/c-api/structures.rst:269
+#: ../Doc/c-api/structures.rst:308
msgid "float"
msgstr "*float*"
-#: ../Doc/c-api/structures.rst:270
+#: ../Doc/c-api/structures.rst:309
msgid "T_DOUBLE"
msgstr ""
-#: ../Doc/c-api/structures.rst:270
+#: ../Doc/c-api/structures.rst:309
msgid "double"
msgstr "double"
-#: ../Doc/c-api/structures.rst:271
+#: ../Doc/c-api/structures.rst:310
msgid "T_STRING"
msgstr ""
-#: ../Doc/c-api/structures.rst:272
+#: ../Doc/c-api/structures.rst:311
msgid "T_OBJECT"
msgstr ""
-#: ../Doc/c-api/structures.rst:272 ../Doc/c-api/structures.rst:273
+#: ../Doc/c-api/structures.rst:311 ../Doc/c-api/structures.rst:312
msgid "PyObject \\*"
msgstr "PyObject \\*"
-#: ../Doc/c-api/structures.rst:273
+#: ../Doc/c-api/structures.rst:312
msgid "T_OBJECT_EX"
msgstr ""
-#: ../Doc/c-api/structures.rst:274
+#: ../Doc/c-api/structures.rst:313
msgid "T_CHAR"
msgstr ""
-#: ../Doc/c-api/structures.rst:274 ../Doc/c-api/structures.rst:275
-#: ../Doc/c-api/structures.rst:280
+#: ../Doc/c-api/structures.rst:313 ../Doc/c-api/structures.rst:314
+#: ../Doc/c-api/structures.rst:319
msgid "char"
msgstr "char"
-#: ../Doc/c-api/structures.rst:275
+#: ../Doc/c-api/structures.rst:314
msgid "T_BYTE"
msgstr ""
-#: ../Doc/c-api/structures.rst:276
+#: ../Doc/c-api/structures.rst:315
msgid "T_UBYTE"
msgstr ""
-#: ../Doc/c-api/structures.rst:276
+#: ../Doc/c-api/structures.rst:315
msgid "unsigned char"
msgstr "``unsigned char``"
-#: ../Doc/c-api/structures.rst:277
+#: ../Doc/c-api/structures.rst:316
msgid "T_UINT"
msgstr ""
-#: ../Doc/c-api/structures.rst:277
+#: ../Doc/c-api/structures.rst:316
msgid "unsigned int"
msgstr "``unsigned int``"
-#: ../Doc/c-api/structures.rst:278
+#: ../Doc/c-api/structures.rst:317
msgid "T_USHORT"
msgstr ""
-#: ../Doc/c-api/structures.rst:278
+#: ../Doc/c-api/structures.rst:317
msgid "unsigned short"
msgstr "``unsigned short``"
-#: ../Doc/c-api/structures.rst:279
+#: ../Doc/c-api/structures.rst:318
msgid "T_ULONG"
msgstr ""
-#: ../Doc/c-api/structures.rst:279
+#: ../Doc/c-api/structures.rst:318
msgid "unsigned long"
msgstr "``unsigned long``"
-#: ../Doc/c-api/structures.rst:280
+#: ../Doc/c-api/structures.rst:319
msgid "T_BOOL"
msgstr ""
-#: ../Doc/c-api/structures.rst:281
+#: ../Doc/c-api/structures.rst:320
msgid "T_LONGLONG"
msgstr ""
-#: ../Doc/c-api/structures.rst:281
+#: ../Doc/c-api/structures.rst:320
msgid "long long"
msgstr ""
-#: ../Doc/c-api/structures.rst:282
+#: ../Doc/c-api/structures.rst:321
msgid "T_ULONGLONG"
msgstr ""
-#: ../Doc/c-api/structures.rst:282
+#: ../Doc/c-api/structures.rst:321
msgid "unsigned long long"
msgstr "``unsigned long long``"
-#: ../Doc/c-api/structures.rst:283
+#: ../Doc/c-api/structures.rst:322
msgid "T_PYSSIZET"
msgstr ""
-#: ../Doc/c-api/structures.rst:286
+#: ../Doc/c-api/structures.rst:325
msgid ""
":c:macro:`T_OBJECT` and :c:macro:`T_OBJECT_EX` differ in that :c:macro:"
"`T_OBJECT` returns ``None`` if the member is *NULL* and :c:macro:"
@@ -482,7 +521,7 @@ msgid ""
"than :c:macro:`T_OBJECT`."
msgstr ""
-#: ../Doc/c-api/structures.rst:293
+#: ../Doc/c-api/structures.rst:332
msgid ""
":attr:`flags` can be ``0`` for write and read access or :c:macro:`READONLY` "
"for read-only access. Using :c:macro:`T_STRING` for :attr:`type` implies :c:"
@@ -491,87 +530,87 @@ msgid ""
"are set to *NULL*)."
msgstr ""
-#: ../Doc/c-api/structures.rst:302
+#: ../Doc/c-api/structures.rst:341
msgid ""
"Structure to define property-like access for a type. See also description of "
"the :c:member:`PyTypeObject.tp_getset` slot."
msgstr ""
-#: ../Doc/c-api/structures.rst:308
+#: ../Doc/c-api/structures.rst:347
msgid "name"
msgstr ""
-#: ../Doc/c-api/structures.rst:308
+#: ../Doc/c-api/structures.rst:347
msgid "attribute name"
msgstr ""
-#: ../Doc/c-api/structures.rst:310
+#: ../Doc/c-api/structures.rst:349
msgid "get"
msgstr ""
-#: ../Doc/c-api/structures.rst:310
+#: ../Doc/c-api/structures.rst:349
msgid "getter"
msgstr ""
-#: ../Doc/c-api/structures.rst:310
+#: ../Doc/c-api/structures.rst:349
msgid "C Function to get the attribute"
msgstr ""
-#: ../Doc/c-api/structures.rst:312
+#: ../Doc/c-api/structures.rst:351
msgid "set"
msgstr ""
-#: ../Doc/c-api/structures.rst:312
+#: ../Doc/c-api/structures.rst:351
msgid "setter"
msgstr ""
-#: ../Doc/c-api/structures.rst:312
+#: ../Doc/c-api/structures.rst:351
msgid ""
"optional C function to set or delete the attribute, if omitted the attribute "
"is readonly"
msgstr ""
-#: ../Doc/c-api/structures.rst:316
+#: ../Doc/c-api/structures.rst:355
msgid "doc"
msgstr ""
-#: ../Doc/c-api/structures.rst:316
+#: ../Doc/c-api/structures.rst:355
msgid "optional docstring"
msgstr ""
-#: ../Doc/c-api/structures.rst:318
+#: ../Doc/c-api/structures.rst:357
msgid "closure"
msgstr ""
-#: ../Doc/c-api/structures.rst:318
+#: ../Doc/c-api/structures.rst:357
msgid "void \\*"
msgstr ""
-#: ../Doc/c-api/structures.rst:318
+#: ../Doc/c-api/structures.rst:357
msgid ""
"optional function pointer, providing additional data for getter and setter"
msgstr ""
-#: ../Doc/c-api/structures.rst:323
+#: ../Doc/c-api/structures.rst:362
msgid ""
"The ``get`` function takes one :c:type:`PyObject\\*` parameter (the "
"instance) and a function pointer (the associated ``closure``)::"
msgstr ""
-#: ../Doc/c-api/structures.rst:328
+#: ../Doc/c-api/structures.rst:367
msgid ""
"It should return a new reference on success or *NULL* with a set exception "
"on failure."
msgstr ""
-#: ../Doc/c-api/structures.rst:331
+#: ../Doc/c-api/structures.rst:370
msgid ""
"``set`` functions take two :c:type:`PyObject\\*` parameters (the instance "
"and the value to be set) and a function pointer (the associated "
"``closure``)::"
msgstr ""
-#: ../Doc/c-api/structures.rst:336
+#: ../Doc/c-api/structures.rst:375
msgid ""
"In case the attribute should be deleted the second parameter is *NULL*. "
"Should return ``0`` on success or ``-1`` with a set exception on failure."
diff --git a/c-api/tuple.po b/c-api/tuple.po
index 4a3ac347c..ea67c7601 100644
--- a/c-api/tuple.po
+++ b/c-api/tuple.po
@@ -150,7 +150,7 @@ msgstr ""
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "Field"
-msgstr ""
+msgstr "Champ"
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "C Type"
diff --git a/c-api/typeobj.po b/c-api/typeobj.po
index fabd8965d..89058cbda 100644
--- a/c-api/typeobj.po
+++ b/c-api/typeobj.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
+"POT-Creation-Date: 2019-04-10 09:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -1505,7 +1505,7 @@ msgid ""
"signature. It should modify its first operand, and return it. This slot "
"may be left to *NULL*, in this case :c:func:`!PySequence_InPlaceConcat` will "
"fall back to :c:func:`PySequence_Concat`. It is also used by the augmented "
-"assignment ``+=``, after trying numeric inplace addition via the :c:member:"
+"assignment ``+=``, after trying numeric in-place addition via the :c:member:"
"`~PyNumberMethods.nb_inplace_add` slot."
msgstr ""
@@ -1515,7 +1515,7 @@ msgid ""
"signature. It should modify its first operand, and return it. This slot "
"may be left to *NULL*, in this case :c:func:`!PySequence_InPlaceRepeat` will "
"fall back to :c:func:`PySequence_Repeat`. It is also used by the augmented "
-"assignment ``*=``, after trying numeric inplace multiplication via the :c:"
+"assignment ``*=``, after trying numeric in-place multiplication via the :c:"
"member:`~PyNumberMethods.nb_inplace_multiply` slot."
msgstr ""
diff --git a/c-api/unicode.po b/c-api/unicode.po
index 5e4c172da..71623f6c6 100644
--- a/c-api/unicode.po
+++ b/c-api/unicode.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: 2018-10-04 12:27+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -42,20 +42,20 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:25
msgid ""
-"Due to the transition between the old APIs and the new APIs, unicode objects "
+"Due to the transition between the old APIs and the new APIs, Unicode objects "
"can internally be in two states depending on how they were created:"
msgstr ""
#: ../Doc/c-api/unicode.rst:28
msgid ""
-"\"canonical\" unicode objects are all objects created by a non-deprecated "
-"unicode API. They use the most efficient representation allowed by the "
+"\"canonical\" Unicode objects are all objects created by a non-deprecated "
+"Unicode API. They use the most efficient representation allowed by the "
"implementation."
msgstr ""
#: ../Doc/c-api/unicode.rst:32
msgid ""
-"\"legacy\" unicode objects have been created through one of the deprecated "
+"\"legacy\" Unicode objects have been created through one of the deprecated "
"APIs (typically :c:func:`PyUnicode_FromUnicode`) and only bear the :c:type:"
"`Py_UNICODE*` representation; you will have to call :c:func:"
"`PyUnicode_READY` on them before calling any other API."
@@ -162,7 +162,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:155
msgid ""
-"Return a void pointer to the raw unicode buffer. *o* has to be a Unicode "
+"Return a void pointer to the raw Unicode buffer. *o* has to be a Unicode "
"object in the \"canonical\" representation (not checked)."
msgstr ""
@@ -429,7 +429,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:432
msgid ""
"Take a C :c:func:`printf`\\ -style *format* string and a variable number of "
-"arguments, calculate the size of the resulting Python unicode string and "
+"arguments, calculate the size of the resulting Python Unicode string and "
"return a string with the values formatted into it. The variable arguments "
"must be C types and must correspond exactly to the format characters in the "
"*format* ASCII-encoded string. The following format characters are allowed:"
@@ -437,7 +437,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:447
msgid "Format Characters"
-msgstr ""
+msgstr "Caractères de format"
#: ../Doc/c-api/unicode.rst:447
msgid "Type"
@@ -649,7 +649,8 @@ msgid ":attr:`%U`"
msgstr ""
#: ../Doc/c-api/unicode.rst:507
-msgid "A unicode object."
+#, fuzzy
+msgid "A Unicode object."
msgstr "Un objet Unicode."
#: ../Doc/c-api/unicode.rst:509
@@ -662,7 +663,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:509
msgid ""
-"A unicode object (which may be *NULL*) and a null-terminated C character "
+"A Unicode object (which may be *NULL*) and a null-terminated C character "
"array as a second parameter (which will be used, if the first parameter is "
"*NULL*)."
msgstr ""
@@ -1905,7 +1906,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:1673
msgid ""
-"Compare a unicode object, *uni*, with *string* and return ``-1``, ``0``, "
+"Compare a Unicode object, *uni*, with *string* and return ``-1``, ``0``, "
"``1`` for less than, equal, and greater than, respectively. It is best to "
"pass only ASCII-encoded strings, but the function interprets the input "
"string as ISO-8859-1 if it contains non-ASCII characters."
@@ -1916,7 +1917,7 @@ msgid "This function does not raise exceptions."
msgstr ""
#: ../Doc/c-api/unicode.rst:1683
-msgid "Rich compare two unicode strings and return one of the following:"
+msgid "Rich compare two Unicode strings and return one of the following:"
msgstr ""
#: ../Doc/c-api/unicode.rst:1685
@@ -1958,7 +1959,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:1710
msgid ""
"Intern the argument *\\*string* in place. The argument must be the address "
-"of a pointer variable pointing to a Python unicode string object. If there "
+"of a pointer variable pointing to a Python Unicode string object. If there "
"is an existing interned string that is the same as *\\*string*, it sets *"
"\\*string* to it (decrementing the reference count of the old string object "
"and incrementing the reference count of the interned string object), "
@@ -1971,7 +1972,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:1723
msgid ""
"A combination of :c:func:`PyUnicode_FromString` and :c:func:"
-"`PyUnicode_InternInPlace`, returning either a new unicode string object that "
+"`PyUnicode_InternInPlace`, returning either a new Unicode string object that "
"has been interned, or a new (\"owned\") reference to an earlier interned "
"string object with the same value."
msgstr ""
diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po
index f819c72b1..23fc0d531 100644
--- a/c-api/veryhigh.po
+++ b/c-api/veryhigh.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-29 16:06+0100\n"
+"POT-Creation-Date: 2019-04-10 09:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -136,13 +136,20 @@ msgid ""
"PyRun_SimpleFileExFlags returns."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:115
+#: ../Doc/c-api/veryhigh.rst:113
+msgid ""
+"On Windows, *fp* should be opened as binary mode (e.g. ``fopen(filename, \"rb"
+"\")``. Otherwise, Python may not handle script file with LF line ending "
+"correctly."
+msgstr ""
+
+#: ../Doc/c-api/veryhigh.rst:119
msgid ""
"This is a simplified interface to :c:func:`PyRun_InteractiveOneFlags` below, "
"leaving *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:121
+#: ../Doc/c-api/veryhigh.rst:125
msgid ""
"Read and execute a single statement from a file associated with an "
"interactive device according to the *flags* argument. The user will be "
@@ -150,7 +157,7 @@ msgid ""
"filesystem encoding (:func:`sys.getfilesystemencoding`)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:126
+#: ../Doc/c-api/veryhigh.rst:130
msgid ""
"Returns ``0`` when the input was executed successfully, ``-1`` if there was "
"an exception, or an error code from the :file:`errcode.h` include file "
@@ -159,13 +166,13 @@ msgid ""
"specifically if needed.)"
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:135
+#: ../Doc/c-api/veryhigh.rst:139
msgid ""
"This is a simplified interface to :c:func:`PyRun_InteractiveLoopFlags` "
"below, leaving *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:141
+#: ../Doc/c-api/veryhigh.rst:145
msgid ""
"Read and execute statements from a file associated with an interactive "
"device until EOF is reached. The user will be prompted using ``sys.ps1`` "
@@ -174,7 +181,7 @@ msgid ""
"upon failure."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:150
+#: ../Doc/c-api/veryhigh.rst:154
msgid ""
"Can be set to point to a function with the prototype ``int func(void)``. "
"The function will be called when Python's interpreter prompt is about to "
@@ -184,7 +191,7 @@ msgid ""
"the Python source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:161
+#: ../Doc/c-api/veryhigh.rst:165
msgid ""
"Can be set to point to a function with the prototype ``char *func(FILE "
"*stdin, FILE *stdout, char *prompt)``, overriding the default function used "
@@ -195,34 +202,34 @@ msgid ""
"line-editing and tab-completion features."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:170
+#: ../Doc/c-api/veryhigh.rst:174
msgid ""
"The result must be a string allocated by :c:func:`PyMem_RawMalloc` or :c:"
"func:`PyMem_RawRealloc`, or *NULL* if an error occurred."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:173
+#: ../Doc/c-api/veryhigh.rst:177
msgid ""
"The result must be allocated by :c:func:`PyMem_RawMalloc` or :c:func:"
"`PyMem_RawRealloc`, instead of being allocated by :c:func:`PyMem_Malloc` or :"
"c:func:`PyMem_Realloc`."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:181
+#: ../Doc/c-api/veryhigh.rst:185
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"*NULL* and *flags* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:188
+#: ../Doc/c-api/veryhigh.rst:192
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"*NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:195
+#: ../Doc/c-api/veryhigh.rst:199
msgid ""
"Parse Python source code from *str* using the start token *start* according "
"to the *flags* argument. The result can be used to create a code object "
@@ -231,25 +238,25 @@ msgid ""
"(:func:`sys.getfilesystemencoding`)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:204
+#: ../Doc/c-api/veryhigh.rst:208
msgid ""
"This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` "
"below, leaving *flags* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:210
+#: ../Doc/c-api/veryhigh.rst:214
msgid ""
"Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python "
"source code is read from *fp* instead of an in-memory string."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:216
+#: ../Doc/c-api/veryhigh.rst:220
msgid ""
"This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving "
"*flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:222
+#: ../Doc/c-api/veryhigh.rst:226
msgid ""
"Execute Python source code from *str* in the context specified by the "
"objects *globals* and *locals* with the compiler flags specified by "
@@ -258,31 +265,31 @@ msgid ""
"token that should be used to parse the source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:228
+#: ../Doc/c-api/veryhigh.rst:232
msgid ""
"Returns the result of executing the code as a Python object, or *NULL* if an "
"exception was raised."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:234
+#: ../Doc/c-api/veryhigh.rst:238
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0`` and *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:240
+#: ../Doc/c-api/veryhigh.rst:244
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:246
+#: ../Doc/c-api/veryhigh.rst:250
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:252
+#: ../Doc/c-api/veryhigh.rst:256
msgid ""
"Similar to :c:func:`PyRun_StringFlags`, but the Python source code is read "
"from *fp* instead of an in-memory string. *filename* should be the name of "
@@ -291,19 +298,19 @@ msgid ""
"func:`PyRun_FileExFlags` returns."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:261
+#: ../Doc/c-api/veryhigh.rst:265
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringFlags` below, "
"leaving *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:267
+#: ../Doc/c-api/veryhigh.rst:271
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringExFlags` below, "
"with *optimize* set to ``-1``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:273
+#: ../Doc/c-api/veryhigh.rst:277
msgid ""
"Parse and compile the Python source code in *str*, returning the resulting "
"code object. The start token is given by *start*; this can be used to "
@@ -314,7 +321,7 @@ msgid ""
"returns *NULL* if the code cannot be parsed or compiled."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:281
+#: ../Doc/c-api/veryhigh.rst:285
msgid ""
"The integer *optimize* specifies the optimization level of the compiler; a "
"value of ``-1`` selects the optimization level of the interpreter as given "
@@ -323,20 +330,20 @@ msgid ""
"or ``2`` (docstrings are removed too)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:292
+#: ../Doc/c-api/veryhigh.rst:296
msgid ""
"Like :c:func:`Py_CompileStringObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:299
+#: ../Doc/c-api/veryhigh.rst:303
msgid ""
"This is a simplified interface to :c:func:`PyEval_EvalCodeEx`, with just the "
"code object, and global and local variables. The other arguments are set to "
"*NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:306
+#: ../Doc/c-api/veryhigh.rst:310
msgid ""
"Evaluate a precompiled code object, given a particular environment for its "
"evaluation. This environment consists of a dictionary of global variables, "
@@ -345,19 +352,19 @@ msgid ""
"only_parameter>` arguments and a closure tuple of cells."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:315
+#: ../Doc/c-api/veryhigh.rst:319
msgid ""
"The C structure of the objects used to describe frame objects. The fields of "
"this type are subject to change at any time."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:321
+#: ../Doc/c-api/veryhigh.rst:325
msgid ""
"Evaluate an execution frame. This is a simplified interface to :c:func:"
"`PyEval_EvalFrameEx`, for backward compatibility."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:327
+#: ../Doc/c-api/veryhigh.rst:331
msgid ""
"This is the main, unvarnished function of Python interpretation. It is "
"literally 2000 lines long. The code object associated with the execution "
@@ -367,39 +374,41 @@ msgid ""
"`~generator.throw` methods of generator objects."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:334
+#: ../Doc/c-api/veryhigh.rst:338
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
msgstr ""
+"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
+"qu'elle ne passe pas sous silence une exception active."
-#: ../Doc/c-api/veryhigh.rst:341
+#: ../Doc/c-api/veryhigh.rst:345
msgid ""
"This function changes the flags of the current evaluation frame, and returns "
"true on success, false on failure."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:349
+#: ../Doc/c-api/veryhigh.rst:353
msgid ""
"The start symbol from the Python grammar for isolated expressions; for use "
"with :c:func:`Py_CompileString`."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:357
+#: ../Doc/c-api/veryhigh.rst:361
msgid ""
"The start symbol from the Python grammar for sequences of statements as read "
"from a file or other source; for use with :c:func:`Py_CompileString`. This "
"is the symbol to use when compiling arbitrarily long Python source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:366
+#: ../Doc/c-api/veryhigh.rst:370
msgid ""
"The start symbol from the Python grammar for a single statement; for use "
"with :c:func:`Py_CompileString`. This is the symbol used for the interactive "
"interpreter loop."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:373
+#: ../Doc/c-api/veryhigh.rst:377
msgid ""
"This is the structure used to hold compiler flags. In cases where code is "
"only being compiled, it is passed as ``int flags``, and in cases where code "
@@ -407,14 +416,14 @@ msgid ""
"case, ``from __future__ import`` can modify *flags*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:378
+#: ../Doc/c-api/veryhigh.rst:382
msgid ""
"Whenever ``PyCompilerFlags *flags`` is *NULL*, :attr:`cf_flags` is treated "
"as equal to ``0``, and any modification due to ``from __future__ import`` is "
"discarded. ::"
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:389
+#: ../Doc/c-api/veryhigh.rst:393
msgid ""
"This bit can be set in *flags* to cause division operator ``/`` to be "
"interpreted as \"true division\" according to :pep:`238`."
diff --git a/c-api/weakref.po b/c-api/weakref.po
index b2bd1d742..d3a18d9ca 100644
--- a/c-api/weakref.po
+++ b/c-api/weakref.po
@@ -5,18 +5,19 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-03-11 12:59+0100\n"
+"PO-Revision-Date: 2019-03-29 14:17+0100\n"
+"Last-Translator: Andy Kwok \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.6\n"
#: ../Doc/c-api/weakref.rst:6
msgid "Weak Reference Objects"
-msgstr ""
+msgstr "Objets à références faibles"
#: ../Doc/c-api/weakref.rst:8
msgid ""
@@ -25,18 +26,22 @@ msgid ""
"is a simple reference object, and the second acts as a proxy for the "
"original object as much as it can."
msgstr ""
+"Python gère les *références faibles* comme des objets de première classe. Il "
+"existe deux types d'objets spécifiques qui implémentent directement les "
+"références faibles. Le premier est un objet de référence simple, et le "
+"second agit autant que possible comme un mandataire vers l'objet original."
#: ../Doc/c-api/weakref.rst:16
msgid "Return true if *ob* is either a reference or proxy object."
-msgstr ""
+msgstr "Renvoie vrai si *ob* est soit une référence, soit un objet proxy."
#: ../Doc/c-api/weakref.rst:21
msgid "Return true if *ob* is a reference object."
-msgstr ""
+msgstr "Retourne vrai si *ob* est un objet référence."
#: ../Doc/c-api/weakref.rst:26
msgid "Return true if *ob* is a proxy object."
-msgstr ""
+msgstr "Retourne vrai si *ob* est un objet proxy"
#: ../Doc/c-api/weakref.rst:31
msgid ""
@@ -49,6 +54,16 @@ msgid ""
"referencable object, or if *callback* is not callable, ``None``, or *NULL*, "
"this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
+"Retourne un objet de référence faible pour l'objet *ob*. Elle renvoie "
+"toujours une nouvelle référence, mais cela ne signifie pas qu'un nouvel "
+"objet est créé ; un objet référence existant peut être renvoyé. Le second "
+"paramètre, *callback*, peut être un objet appelable qui reçoit une "
+"notification lorsque *ob* est collecté par le ramasse-miette (*garbage "
+"collected* en anglais) ; il doit accepter un paramètre unique, qui est "
+"l'objet référence faible lui-même. *callback* peut aussi être positionné à "
+"``None`` ou à *NULL*. Si *ob* n'est pas un objet faiblement référençable, "
+"ou si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci retourne "
+"*NULL* et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:43
msgid ""
@@ -61,12 +76,23 @@ msgid ""
"is not a weakly-referencable object, or if *callback* is not callable, "
"``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
+"Retourne un objet mandataire à référence faible pour l'objet *ob*. Ceci "
+"renvoie toujours une nouvelle référence, mais ne garantit pas la création "
+"d'un nouvel objet ; un objet proxy existant peut être retourné. Le second "
+"paramètre, *callback*, peut être un objet appelable qui reçoit une "
+"notification lorsque *ob* est collecté ; il doit accepter un seul paramètre, "
+"qui sera l'objet de référence faible lui-même. *callback* peut aussi être "
+"``None`` ou *NULLL*. Si *ob* n'est pas un objet faiblement référençable, ou "
+"si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci renvoie *NULL* "
+"et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:55
msgid ""
"Return the referenced object from a weak reference, *ref*. If the referent "
"is no longer live, returns :const:`Py_None`."
msgstr ""
+"Retourne l'objet référencé à partir d'une référence faible, *ref*. Si le "
+"référence n'existe plus, alors l'objet renvoie :const:`Py_None`."
#: ../Doc/c-api/weakref.rst:60
msgid ""
@@ -74,9 +100,15 @@ msgid ""
"This means that you should always call :c:func:`Py_INCREF` on the object "
"except if you know that it cannot be destroyed while you are still using it."
msgstr ""
+"Cette fonction renvoie une **référence empruntée** à l'objet référencé. Cela "
+"signifie que vous devez toujours appeler :c:func:`Py_INCREF` sur l'objet "
+"sauf si vous savez qu'il ne peut pas être détruit tant que vous l'utilisez "
+"encore."
#: ../Doc/c-api/weakref.rst:68
msgid ""
"Similar to :c:func:`PyWeakref_GetObject`, but implemented as a macro that "
"does no error checking."
msgstr ""
+"Similaire à :c:func:`PyWeakref_GetObject`, mais implémenté comme une macro "
+"qui ne vérifie pas les erreurs."
diff --git a/copyright.po b/copyright.po
index e49ecaf9a..c816adfd6 100644
--- a/copyright.po
+++ b/copyright.po
@@ -24,7 +24,8 @@ msgstr "Python et cette documentation sont :"
#: ../Doc/copyright.rst:7
msgid "Copyright © 2001-2019 Python Software Foundation. All rights reserved."
-msgstr "Copyright © 2001-2019 Python Software Foundation. Tout droits réservés."
+msgstr ""
+"Copyright © 2001-2019 Python Software Foundation. Tous droits réservés."
#: ../Doc/copyright.rst:9
msgid "Copyright © 2000 BeOpen.com. All rights reserved."
diff --git a/dict b/dict
index 0aab689d5..a9bbba819 100644
--- a/dict
+++ b/dict
@@ -1,98 +1,190 @@
-017F
-12h
-212A
+#python-fr
+-1
+-ième
+-uplet
+-uplets
+017f
+212a
+ahlstrom
allocateur
allocateurs
+base16
+base32
+base64
+base85
batch
+boguer
+c++
c-
-C-
-C99
-Catucci
+c/c++
+C14N
+C89
+c99
+chacha20
cadriciel
cadriciels
+catucci
+cobjects
+composabilité
concourance
-coroutine
+contravariante
+contravariantes
+configurateurs
+contribués
coroutine
coroutines
+cpython
+curryfication
+cython
d'allocateurs
+d'indifférentiabilité
+d'itérateurs
+docstrings
+décodables
déduplication
+délimitants
désenregistre
+déserialisables
+déserialisation
déserialisations
déserialise
-désérialise
-désérialisé
-désérialisées
déserialiser
-désérialiser
-déserialisés
déserialiseur
déserialiseurs
-d'itérateurs
+désérialiseur
+désérialiseurs
+déserialisées
+déserialisés
+désérialisés
+désérialise
+désérialiser
+désérialisé
+désérialisées
encodable
-Farrugia
+ethnomathématiques
+farrugia
finaliseur
-Fredrik
-Guido
+frederik
+fredrik
+freeze
+glibc
+guido
hachabilité
hachable
hachables
-Hettinger
-ı
--ième
-import
-imports
+hettinger
+html
indiçage
indo-arabes
+ininterruptible
interchangés
+intralignes
+ios
+ipv4
itérateur
itérateurs
+ième
+journalise
journaliser
journaliseur
-Jr.
-Kuchling
+journalisé
+journalisée
+journalisés
+jr.
+kolams
+kuchling
l'allocateur
-lexicographiquement
l'indiçage
l'itérateur
+lexicographiquement
lorsqu'aucune
+lorsqu'aucun
+mar
mar.
-mémoïsant
-Mersenne
-métacaractère
-métacaractères
-métaclasse
-métaclasses
+marc-andré
+mersenne
+mertz
+Monty
muabilité
muable
muables
multiensemble
multiensembles
+mutex
+mémoïsant
+mémoïsation
+métacaractère
+métacaractères
+métaclasse
+métaclasses
+n-ième
namespace
+non-hachable
+non-hachables
+pdb
pip
pourcent
-préemptif
proleptique
+précompilé
+préemptif
+préremplis
+py2exe
+pyc
+pychecker
+pydb
+pylint
+pythonwin
+qu
+re
recompilation
+reedy
+relationelle
+retraçage
+réentrant
+réentrante
réentrants
réessayable
réexécuter
+référençable
référençables
+réimplémente
+réimplémenter
+réimplémentez
résolveurs
-ſ
-sérialisable
+réusinage
+réusinages
+réusiné
+réutilisabilité
+serwy
+shell
+slot
+smalltalk
+sqlite
+surprenamment
sérialisable
sérialisables
sérialiser
sérialiseur
-Serwy
-shell
-slot
+sérialisé
+sérialisée
+sérialisées
+sérialisés
+tk
tokenisation
tokenisé
tokenisés
tty
-W3C
-Zope
-délimitants
-contribués
-d'indifférentiabilité
+uplets
+utf-8
+utf-16
+utf-32
+von
+w3c
+world
+wxwidgets
+x11
+x86
+zope
+émoji
+ı
+ſ
diff --git a/distributing/index.po b/distributing/index.po
index a15f25f84..b0f8269fa 100644
--- a/distributing/index.po
+++ b/distributing/index.po
@@ -5,9 +5,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-06-28 15:29+0200\n"
-"PO-Revision-Date: 2018-08-01 00:05+0200\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-05-23 20:39+0200\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -222,7 +222,7 @@ msgid ""
msgstr ""
"Les outils de construction de paquets et de distribution actuellement "
"recommandées peuvent être installées en invoquant le module ``pip`` dans une "
-"invite de commande : ::"
+"invite de commande ::"
#: ../Doc/distributing/index.rst:104
msgid ""
@@ -250,56 +250,56 @@ msgstr ""
"Le *Python Packaging User Guide* contient plus de détails sur les `(en) "
"outils actuellement recommandés `_."
-#: ../Doc/distributing/index.rst:117
-msgid "Reading the guide"
-msgstr "Lire le manuel"
+#: ../Doc/distributing/index.rst:123
+msgid "Reading the Python Packaging User Guide"
+msgstr "Consultez le *Python Packaging User Guide*"
-#: ../Doc/distributing/index.rst:119
+#: ../Doc/distributing/index.rst:125
msgid ""
"The Python Packaging User Guide covers the various key steps and elements "
-"involved in creating a project:"
+"involved in creating and publishing a project:"
msgstr ""
"Le *Python Packaging User Guide* couvre les différentes étapes et les "
-"éléments clés de la création d'un projet :"
+"éléments clés de la création et publication d'un projet :"
-#: ../Doc/distributing/index.rst:122
+#: ../Doc/distributing/index.rst:128
msgid "`Project structure`_"
msgstr "`(en) Structure d'un projet `_"
-#: ../Doc/distributing/index.rst:123
+#: ../Doc/distributing/index.rst:129
msgid "`Building and packaging the project`_"
msgstr ""
"`(en) Construire et empaqueter le projet `_"
-#: ../Doc/distributing/index.rst:124
+#: ../Doc/distributing/index.rst:130
msgid "`Uploading the project to the Python Packaging Index`_"
msgstr ""
"`(en) Téléverser le projet sur le Python Packaging Index `_"
-#: ../Doc/distributing/index.rst:135
+#: ../Doc/distributing/index.rst:141
msgid "How do I...?"
msgstr "Comment puis-je ...?"
-#: ../Doc/distributing/index.rst:137
+#: ../Doc/distributing/index.rst:143
msgid "These are quick answers or links for some common tasks."
msgstr ""
"Ce sont des réponses rapides ou des liens pour certaines tâches courantes."
-#: ../Doc/distributing/index.rst:140
+#: ../Doc/distributing/index.rst:146
msgid "... choose a name for my project?"
msgstr "... choisir un nom pour mon projet ?"
-#: ../Doc/distributing/index.rst:142
+#: ../Doc/distributing/index.rst:148
msgid "This isn't an easy topic, but here are a few tips:"
msgstr "Ce n'est pas un sujet facile, mais voici quelques conseils :"
-#: ../Doc/distributing/index.rst:144
+#: ../Doc/distributing/index.rst:150
msgid "check the Python Packaging Index to see if the name is already in use"
msgstr "vérifiez dans le *Python Packaging Index* si le nom est déjà utilisé"
-#: ../Doc/distributing/index.rst:145
+#: ../Doc/distributing/index.rst:151
msgid ""
"check popular hosting sites like GitHub, BitBucket, etc to see if there is "
"already a project with that name"
@@ -307,12 +307,12 @@ msgstr ""
"vérifiez sur quelques sites d'hébergement populaires tels que GitHub, "
"BitBucket, etc pour voir s'il y existe déjà un projet avec ce nom"
-#: ../Doc/distributing/index.rst:147
+#: ../Doc/distributing/index.rst:153
msgid "check what comes up in a web search for the name you're considering"
msgstr ""
"vérifiez ce qui sort en recherchant sur le web le nom que vous envisagez"
-#: ../Doc/distributing/index.rst:148
+#: ../Doc/distributing/index.rst:154
msgid ""
"avoid particularly common words, especially ones with multiple meanings, as "
"they can make it difficult for users to find your software when searching "
@@ -322,11 +322,11 @@ msgstr ""
"significations, car pour vos utilisateurs, cela complique la recherche de "
"votre logiciel"
-#: ../Doc/distributing/index.rst:154
+#: ../Doc/distributing/index.rst:160
msgid "... create and distribute binary extensions?"
msgstr "... créer et distribuer des extensions binaires ?"
-#: ../Doc/distributing/index.rst:156
+#: ../Doc/distributing/index.rst:162
msgid ""
"This is actually quite a complex topic, with a variety of alternatives "
"available depending on exactly what you're aiming to achieve. See the Python "
@@ -336,10 +336,13 @@ msgstr ""
"disponibles dont le choix dépend de votre objectif exact. Voir le *Python "
"Packaging User Guide* pour plus d'informations et de recommandations."
-#: ../Doc/distributing/index.rst:162
+#: ../Doc/distributing/index.rst:168
msgid ""
"`Python Packaging User Guide: Binary Extensions `__"
msgstr ""
"`Python Packaging User Guide: Binary Extensions `__"
+
+#~ msgid "Reading the guide"
+#~ msgstr "Lire le manuel"
diff --git a/distutils/apiref.po b/distutils/apiref.po
index d2867fd9e..835176a00 100644
--- a/distutils/apiref.po
+++ b/distutils/apiref.po
@@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-17 21:38+0100\n"
-"PO-Revision-Date: 2018-12-17 21:44+0100\n"
-"Last-Translator: Pierre Bousquié \n"
+"PO-Revision-Date: 2019-04-11 18:00+0200\n"
+"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.2.1\n"
#: ../Doc/distutils/apiref.rst:5
msgid "API Reference"
@@ -681,7 +681,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:301
msgid ":mod:`distutils.ccompiler` --- CCompiler base class"
-msgstr ":mod:`distutils.ccompiler` --- Classe de base CCompiler"
+msgstr ":mod:`distutils.ccompiler` — Classe de base CCompiler"
#: ../Doc/distutils/apiref.rst:307
msgid ""
@@ -1539,7 +1539,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:788
msgid ":mod:`distutils.unixccompiler` --- Unix C Compiler"
-msgstr ":mod:`distutils.unixccompiler` --- Compilateur C Unix"
+msgstr ":mod:`distutils.unixccompiler` — Compilateur C Unix"
#: ../Doc/distutils/apiref.rst:794
msgid ""
@@ -1598,7 +1598,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:817
msgid ":mod:`distutils.msvccompiler` --- Microsoft Compiler"
-msgstr ":mod:`distutils.msvccompiler` --- Compilateur Microsoft"
+msgstr ":mod:`distutils.msvccompiler` — Compilateur Microsoft"
#: ../Doc/distutils/apiref.rst:824
msgid ""
@@ -1637,7 +1637,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:840
msgid ":mod:`distutils.bcppcompiler` --- Borland Compiler"
-msgstr ":mod:`distutils.bcppcompiler` --- Compilateur Borland"
+msgstr ":mod:`distutils.bcppcompiler` — Compilateur Borland"
#: ../Doc/distutils/apiref.rst:845
msgid ""
@@ -1649,7 +1649,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:850
msgid ":mod:`distutils.cygwincompiler` --- Cygwin Compiler"
-msgstr ":mod:`distutils.cygwincompiler` --- Compilateur Cygwin"
+msgstr ":mod:`distutils.cygwincompiler` — Compilateur Cygwin"
#: ../Doc/distutils/apiref.rst:855
msgid ""
@@ -1665,7 +1665,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:862
msgid ":mod:`distutils.archive_util` --- Archiving utilities"
-msgstr ":mod:`distutils.archive_util` --- Utilitaires d'archivage"
+msgstr ":mod:`distutils.archive_util` — Utilitaires d'archivage"
#: ../Doc/distutils/apiref.rst:868
msgid ""
@@ -1744,7 +1744,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:913
msgid ":mod:`distutils.dep_util` --- Dependency checking"
-msgstr ":mod:`distutils.dep_util` --- Vérification des dépendances"
+msgstr ":mod:`distutils.dep_util` — Vérification des dépendances"
#: ../Doc/distutils/apiref.rst:919
msgid ""
@@ -1921,7 +1921,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1022
msgid ":mod:`distutils.file_util` --- Single file operations"
-msgstr ":mod:`distutils.file_util` --- Traitements mono-fichier"
+msgstr ":mod:`distutils.file_util` — Traitements mono-fichier"
#: ../Doc/distutils/apiref.rst:1028
msgid ""
@@ -2006,7 +2006,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1080
msgid ":mod:`distutils.util` --- Miscellaneous other utility functions"
-msgstr ":mod:`distutils.util` --- Autres fonctions de service"
+msgstr ":mod:`distutils.util` — Autres fonctions de service"
#: ../Doc/distutils/apiref.rst:1086
msgid ""
@@ -2150,7 +2150,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1154
msgid ":envvar:`HOME` - user's home directory (Unix only)"
msgstr ""
-":envvar:`HOME`. Répertoire personnel de l'utilisateur (Unix uniquement)"
+":envvar:`HOME`. Répertoire d’accueil de l'utilisateur (Unix uniquement)"
#: ../Doc/distutils/apiref.rst:1155
msgid ""
@@ -2344,7 +2344,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1255
msgid ":mod:`distutils.dist` --- The Distribution class"
-msgstr ":mod:`distutils.dist` --- La classe Distribution"
+msgstr ":mod:`distutils.dist` — La classe Distribution"
#: ../Doc/distutils/apiref.rst:1262
msgid ""
@@ -2357,7 +2357,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1267
msgid ":mod:`distutils.extension` --- The Extension class"
-msgstr ":mod:`distutils.extension` --- La classe Extension"
+msgstr ":mod:`distutils.extension` — La classe Extension"
#: ../Doc/distutils/apiref.rst:1274
msgid ""
@@ -2369,7 +2369,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1282
msgid ":mod:`distutils.debug` --- Distutils debug mode"
-msgstr ":mod:`distutils.debug` --- Mode de débogage du module *Distutils*"
+msgstr ":mod:`distutils.debug` — Mode de débogage du module *Distutils*"
#: ../Doc/distutils/apiref.rst:1288
msgid "This module provides the DEBUG flag."
@@ -2377,7 +2377,7 @@ msgstr "Ce module fournit l'option *DEBUG*."
#: ../Doc/distutils/apiref.rst:1292
msgid ":mod:`distutils.errors` --- Distutils exceptions"
-msgstr ":mod:`distutils.errors` --- Exceptions du module *Distutils*"
+msgstr ":mod:`distutils.errors` — Exceptions du module *Distutils*"
#: ../Doc/distutils/apiref.rst:1298
msgid ""
@@ -2539,7 +2539,7 @@ msgstr "S'il est fourni, affiche l'en-tête *header* en haut de l'aide."
#: ../Doc/distutils/apiref.rst:1386
msgid ":mod:`distutils.filelist` --- The FileList class"
-msgstr ":mod:`distutils.filelist` --- La classe *FileList* liste des fichiers"
+msgstr ":mod:`distutils.filelist` — La classe *FileList* liste des fichiers"
#: ../Doc/distutils/apiref.rst:1393
msgid ""
@@ -2556,7 +2556,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1405
msgid ":mod:`distutils.spawn` --- Spawn a sub-process"
-msgstr ":mod:`distutils.spawn` --- Crée un sous-processus"
+msgstr ":mod:`distutils.spawn` — Crée un sous-processus"
#: ../Doc/distutils/apiref.rst:1411
msgid ""
@@ -2753,7 +2753,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1530
msgid ":mod:`distutils.text_file` --- The TextFile class"
-msgstr ":mod:`distutils.text_file` --- La classe TextFile"
+msgstr ":mod:`distutils.text_file` — La classe TextFile"
#: ../Doc/distutils/apiref.rst:1536
msgid ""
@@ -3018,7 +3018,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1669
msgid ":mod:`distutils.version` --- Version number classes"
-msgstr ":mod:`distutils.version` --- Classes de numéros de version"
+msgstr ":mod:`distutils.version` — Classes de numéros de version"
#: ../Doc/distutils/apiref.rst:1684
msgid ":mod:`distutils.cmd` --- Abstract base class for Distutils commands"
@@ -3191,11 +3191,11 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1777
msgid ":mod:`distutils.command` --- Individual Distutils commands"
-msgstr ":mod:`distutils.command` --- Commandes *Distutils* individuelles"
+msgstr ":mod:`distutils.command` — Commandes *Distutils* individuelles"
#: ../Doc/distutils/apiref.rst:1788
msgid ":mod:`distutils.command.bdist` --- Build a binary installer"
-msgstr ":mod:`distutils.command.bdist` --- Construit un installateur binaire"
+msgstr ":mod:`distutils.command.bdist` — Construit un installateur binaire"
#: ../Doc/distutils/apiref.rst:1798
msgid ""
@@ -3248,7 +3248,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1856
msgid ":mod:`distutils.command.sdist` --- Build a source distribution"
-msgstr ":mod:`distutils.command.sdist` --- Construit une distribution source"
+msgstr ":mod:`distutils.command.sdist` — Construit une distribution source"
#: ../Doc/distutils/apiref.rst:1866
msgid ":mod:`distutils.command.build` --- Build all files of a package"
@@ -3286,11 +3286,11 @@ msgstr ""
"Implémentation alternative de *build_py* qui exécute également la "
"bibliothèque de conversion *2to3* sur chaque fichier *.py* qui va être "
"installé. Pour l'utiliser dans un fichier *setup.py* pour une distribution "
-"conçue pour fonctionner avec *Python 2.x* et *3.x*, ajouter : ::"
+"conçue pour fonctionner avec *Python 2.x* et *3.x*, ajouter ::"
#: ../Doc/distutils/apiref.rst:1916
msgid "to your setup.py, and later::"
-msgstr "à votre *setup.py* et, plus tard : ::"
+msgstr "à votre *setup.py* et, plus tard ::"
#: ../Doc/distutils/apiref.rst:1920
msgid "to the invocation of setup()."
@@ -3335,7 +3335,7 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1958
msgid ":mod:`distutils.command.install` --- Install a package"
-msgstr ":mod:`distutils.command.install` --- Installe un paquet"
+msgstr ":mod:`distutils.command.install` — Installe un paquet"
#: ../Doc/distutils/apiref.rst:1968
msgid ""
diff --git a/distutils/builtdist.po b/distutils/builtdist.po
index abafef461..32907a268 100644
--- a/distutils/builtdist.po
+++ b/distutils/builtdist.po
@@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-28 15:29+0200\n"
-"PO-Revision-Date: 2018-11-30 10:47+0100\n"
+"PO-Revision-Date: 2019-06-08 15:19+0200\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \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\n"
+"X-Generator: Poedit 2.0.6\n"
#: ../Doc/distutils/builtdist.rst:5
msgid "Creating Built Distributions"
@@ -653,12 +653,12 @@ msgid ""
"disable this file, you can pass the :option:`!--no-user-cfg` option to :file:"
"`setup.py`."
msgstr ""
-"Fournir ces options en ligne de commande "
-"est fastidieux et sujet à des erreurs, il est donc recommandé de les mettre "
-"dans un fichier de configuration. :file:`setup.cfg`\\ --- voir la section :"
-"ref:`setup-config`. Si vous distribuez ou empaquetez beaucoup de modules de "
-"distribution Python, vous pourriez vouloir mettre les options qui s'appliquent "
-"à tous vos projets dans votre fichier de configuration personnel Distutils (:file:`~/."
+"Fournir ces options en ligne de commande est fastidieux et sujet à des "
+"erreurs, il est donc recommandé de les mettre dans un fichier de "
+"configuration. :file:`setup.cfg`\\ --- voir la section :ref:`setup-config`. "
+"Si vous distribuez ou empaquetez beaucoup de modules de distribution Python, "
+"vous pourriez vouloir mettre les options qui s'appliquent à tous vos projets "
+"dans votre fichier de configuration personnel Distutils (:file:`~/."
"pydistutils.cfg`). Si vous voulez temporairement désactiver ce fichier, vous "
"pouvez passer l'option :option:`!--no-user-cfg` à :file:`setup.py`."
@@ -712,13 +712,12 @@ msgid ""
msgstr ""
"Si vous le souhaitez, vous pouvez séparer ces trois étapes. Vous pouvez "
"utiliser l'option :option:`!--spec-only` pour faire en sorte que la "
-"commande :command:`bdist_rpm` crée juste le fichier :file:`.spec` et quitte ; "
-"dans ce cas, le fichier :file:`.spec` sera écrit dans le dossier de "
+"commande :command:`bdist_rpm` crée juste le fichier :file:`.spec` et "
+"quitte ; dans ce cas, le fichier :file:`.spec` sera écrit dans le dossier de "
"distribution (\"*distribution directory*\") --- normalement :file:`dist/`, "
"mais personnalisable avec l'option :option:`!--dist-dir`. (Normalement, le "
-"fichier :file:`.spec` se retrouve profondément enfoui dans l'arborescence"
-", dans un dossier temporaire créé par la commande :command:"
-"`bdist_rpm`.)"
+"fichier :file:`.spec` se retrouve profondément enfoui dans l'arborescence, "
+"dans un dossier temporaire créé par la commande :command:`bdist_rpm`.)"
#: ../Doc/distutils/builtdist.rst:297
msgid "Creating Windows Installers"
@@ -784,11 +783,11 @@ msgid ""
"`bdist_wininst` command with the :option:`!--no-target-compile` and/or the :"
"option:`!--no-target-optimize` option."
msgstr ""
-"L'installeur essaiera de compiler les modules purs en :term:`bytecode` "
-"après installation sur le système cible dans les modes normaux et "
-"optimisé. Si vous ne voulez pas que ce soit fait, vous pouvez lancer la "
-"commande :command:`bdist_wininst` avec l'option :option:`!--no-target-"
-"compile` et/ou l'option :option:`!--no-target-optimize`."
+"L'installeur essaiera de compiler les modules purs en :term:`bytecode` après "
+"installation sur le système cible dans les modes normaux et optimisé. Si "
+"vous ne voulez pas que ce soit fait, vous pouvez lancer la commande :command:"
+"`bdist_wininst` avec l'option :option:`!--no-target-compile` et/ou l'option :"
+"option:`!--no-target-optimize`."
#: ../Doc/distutils/builtdist.rst:331
msgid ""
@@ -796,9 +795,9 @@ msgid ""
"it is run, but you can also supply your own 152x261 bitmap which must be a "
"Windows :file:`.bmp` file with the :option:`!--bitmap` option."
msgstr ""
-"Par défaut l'installateur affichera le super logo \"Python Powered\""
-", mais vous pouvez aussi donnez votre propre bitmap de 152x261 qui doit "
-"être un fichier :file:`.bmp` Windows avec l'option :option:`!--bitmap`."
+"Par défaut l'installateur affichera le super logo \"Python Powered\", mais "
+"vous pouvez aussi donnez votre propre bitmap de 152x261 qui doit être un "
+"fichier :file:`.bmp` Windows avec l'option :option:`!--bitmap`."
#: ../Doc/distutils/builtdist.rst:335
msgid ""
@@ -903,17 +902,15 @@ msgid "The Postinstallation script"
msgstr "Le script de post-installation"
#: ../Doc/distutils/builtdist.rst:385
-#, fuzzy
msgid ""
"Starting with Python 2.3, a postinstallation script can be specified with "
"the :option:`!--install-script` option. The basename of the script must be "
"specified, and the script filename must also be listed in the scripts "
"argument to the setup function."
msgstr ""
-"Depuis Python 2.3, un script post-installation peut être spécifié "
-"avec l'option :option:`!--install-script`. Le nom du script doit être "
-"spécifié et le nom de fichier du script doit aussi être listé dans les "
-"arguments \"scripts\" de la fonction ``setup``."
+"Depuis Python 2.3, un script post-installation peut être spécifié avec "
+"l'option :option:`!--install-script`. Le nom du script doit être spécifié et "
+"présent dans l'argument \"scripts\" de la fonction ``setup``."
#: ../Doc/distutils/builtdist.rst:390
msgid ""
@@ -944,7 +941,7 @@ msgid ""
"built-in functions in the installation script."
msgstr ""
"Certaines fonctions spécialement utiles dans ce contexte sont disponibles "
-"comme fonctions intégrées additionnelles dans le script d'installation."
+"comme fonctions natives additionnelles dans le script d'installation."
#: ../Doc/distutils/builtdist.rst:406
msgid ""
@@ -1020,5 +1017,5 @@ msgstr ""
"access-control`. Sa valeur par défaut est 'none' (Ce qui veut dire que aucun "
"UAC est fait), et les autres valeurs valides sont 'auto' (ce qui veut dire "
"qu'il faut demander une élévation de privilèges UAC si Python a été installé "
-"pour tous les utilisateurs) et 'force' (Toujours demander une élévation "
-"de privilèges)."
+"pour tous les utilisateurs) et 'force' (Toujours demander une élévation de "
+"privilèges)."
diff --git a/distutils/introduction.po b/distutils/introduction.po
index e07391385..06544be5d 100644
--- a/distutils/introduction.po
+++ b/distutils/introduction.po
@@ -16,7 +16,7 @@ msgstr ""
#: ../Doc/distutils/introduction.rst:5
msgid "An Introduction to Distutils"
-msgstr ""
+msgstr "Introduction à Distutils"
#: ../Doc/distutils/introduction.rst:7
msgid ""
@@ -25,10 +25,14 @@ msgid ""
"information on installing Python modules, you should refer to the :ref:"
"`install-index` chapter."
msgstr ""
+"Ce document traite de l'utilisation de Distutils pour distribuer des modules "
+"Python, en se concentrant sur le rôle de développeur/distributeur : si vous "
+"cherchez des informations sur l'installation de modules Python, vous devriez "
+"vous référer au chapitre :ref:`install-index`."
#: ../Doc/distutils/introduction.rst:16
msgid "Concepts & Terminology"
-msgstr ""
+msgstr "Concepts et Terminologie"
#: ../Doc/distutils/introduction.rst:18
msgid ""
@@ -37,26 +41,30 @@ msgid ""
"responsibilities (apart from writing solid, well-documented and well-tested "
"code, of course!) are:"
msgstr ""
+"Utiliser Distuils est assez simple, à la fois pour les développeurs de "
+"module et pour les utilisateurs/administrateurs qui installent des modules "
+"tiers. En tant que développeur, vos responsabilités (en plus d'écrire du "
+"code solide, bien documenté et bien testé, bien entendu !) sont :"
#: ../Doc/distutils/introduction.rst:23
msgid "write a setup script (:file:`setup.py` by convention)"
-msgstr ""
+msgstr "écrire un script d'installation (:file:`setup.py` par convention) ;"
#: ../Doc/distutils/introduction.rst:25
msgid "(optional) write a setup configuration file"
-msgstr ""
+msgstr "(optionnel) écrire un fichier de configuration pour l'installation ;"
#: ../Doc/distutils/introduction.rst:27
msgid "create a source distribution"
-msgstr ""
+msgstr "créer une distribution source ;"
#: ../Doc/distutils/introduction.rst:29
msgid "(optional) create one or more built (binary) distributions"
-msgstr ""
+msgstr "(optionnel) créer une ou plusieurs distributions compilées (binaires)."
#: ../Doc/distutils/introduction.rst:31
msgid "Each of these tasks is covered in this document."
-msgstr ""
+msgstr "Chacune de ces tâches est couverte dans ce document."
#: ../Doc/distutils/introduction.rst:33
msgid ""
@@ -70,6 +78,16 @@ msgid ""
"module distributions in the most natural way for their platform, without "
"having to run a single setup script or compile a line of code."
msgstr ""
+"Tous les développeurs de modules n'ont pas accès à une multitude de "
+"plateformes, donc on ne peut pas exiger d'eux qu'ils créent une multitude de "
+"distributions compilées. On s'attend à ce que certains intermédiaires, "
+"appelés *packagers*, prennent en charge ce besoin. Les packagers vont "
+"prendre les sources des distributions publiées par les développeurs de "
+"modules, les construire sur on ou plusieurs plateformes, et publier les "
+"distributions compilées résultantes. Ainsi, les utilisateurs sur les "
+"plateformes les plus populaires vont pouvoir installer la plupart des "
+"modules Python de la façon la plus naturelle qui soit pour leur plateforme, "
+"sans avoir à exécuter de script ou à compiler du code."
#: ../Doc/distutils/introduction.rst:47
msgid "A Simple Example"
@@ -84,22 +102,33 @@ msgid ""
"script may be run multiple times in the course of building and installing "
"your module distribution."
msgstr ""
+"Le script d'installation est habituellement assez simple, même s'il n'y a "
+"pas de limite à ce qu'il peut faire (il est écrit en Python, n'est-ce "
+"pas ?). Veillez d'ailleurs à ne pas surcharger ce script avec des opérations "
+"coûteuses car, contrairement aux scripts de configuration façon Autoconf, le "
+"script d'installation peut être amené à être exécuté plusieurs fois au cours "
+"de la compilation et de l'installation du module. "
#: ../Doc/distutils/introduction.rst:56
msgid ""
"If all you want to do is distribute a module called :mod:`foo`, contained in "
"a file :file:`foo.py`, then your setup script can be as simple as this::"
msgstr ""
+"Si tout ce que vous voulez est de distribuer un module appelé :mod:`foo`, "
+"contenu dans un fichier :file:`foo.py`, alors votre script d'installation "
+"peut se résumer à :"
#: ../Doc/distutils/introduction.rst:65
msgid "Some observations:"
-msgstr ""
+msgstr "Quelques observations :"
#: ../Doc/distutils/introduction.rst:67
msgid ""
"most information that you supply to the Distutils is supplied as keyword "
"arguments to the :func:`setup` function"
msgstr ""
+"la plupart des informations que vous fournissez à Distutils sont fournies en "
+"tant que qu'arguments nommés à la fonction :func:`setup`;"
#: ../Doc/distutils/introduction.rst:70
msgid ""
@@ -107,12 +136,17 @@ msgid ""
"version number) and information about what's in the package (a list of pure "
"Python modules, in this case)"
msgstr ""
+"ces arguments nommés tombent dans deux catégories : métadonnées du paquet "
+"(nom, numéro de version) et des informations sur le contenu du paquet paquet "
+"(une liste de purs modules Python, dans ce cas) ; "
#: ../Doc/distutils/introduction.rst:74
msgid ""
"modules are specified by module name, not filename (the same will hold true "
"for packages and extensions)"
msgstr ""
+"les modules sont listés par nom de module, plutôt que par nom de fichier (le "
+"cas est similaire pour les paquets et extensions) ;"
#: ../Doc/distutils/introduction.rst:77
msgid ""
@@ -120,6 +154,9 @@ msgid ""
"name, email address and a URL for the project (see section :ref:`setup-"
"script` for an example)"
msgstr ""
+"il est recommandé de fournir un minimum de métadonnées, en particulier votre "
+"nom, une adresse de courriel et une URL pour le projet (voir section :ref:"
+"`setup-script` pour un exemple)."
#: ../Doc/distutils/introduction.rst:81
msgid ""
@@ -127,12 +164,17 @@ msgid ""
"script, :file:`setup.py`, containing the above code, and run this command "
"from a terminal::"
msgstr ""
+"Pour créer une distribution source pour ce module, il faut créer un script "
+"d'installation, :file:`setup.py`, contenant le code ci-dessus, et exécuter "
+"cette commande depuis un terminal :"
#: ../Doc/distutils/introduction.rst:87
msgid ""
"For Windows, open a command prompt window (:menuselection:`Start --> "
"Accessories`) and change the command to::"
msgstr ""
+"Pour Windows, ouvrez une invite de commande (:menuselection:`Démarrer --> "
+"Accessoires`) et changez la commande en :"
#: ../Doc/distutils/introduction.rst:92
msgid ""
@@ -141,6 +183,11 @@ msgid ""
"module :file:`foo.py`. The archive file will be named :file:`foo-1.0.tar.gz` "
"(or :file:`.zip`), and will unpack into a directory :file:`foo-1.0`."
msgstr ""
+":command:`sdist` va créer un fichier d'archive (p. ex. une archive *tar* sur "
+"Unix, un fichier ZIP sous Windows) contenant votre script d'installation :"
+"file:`setup.py`, et votre module :file:`foo.py`. Le fichier d'archive va "
+"être nommé :file:`foo-1.0.tar.gz` (ou :file:`.zip`), et va se décompresser "
+"dans un répertoire :file:`foo-1.0`."
#: ../Doc/distutils/introduction.rst:97
msgid ""
@@ -148,12 +195,18 @@ msgid ""
"is download :file:`foo-1.0.tar.gz` (or :file:`.zip`), unpack it, and---from "
"the :file:`foo-1.0` directory---run ::"
msgstr ""
+"Si un utilisateur final souhaite installer votre module :mod:`foo`, tout ce "
+"qu'il aura à faire est de télécharger le fichier :file:`foo-1.0.tar.gz` (ou :"
+"file:`.zip`), le décompresser et ---depuis le répertoire :file:`foo-1.0`--- "
+"exécuter :"
#: ../Doc/distutils/introduction.rst:103
msgid ""
"which will ultimately copy :file:`foo.py` to the appropriate directory for "
"third-party modules in their Python installation."
msgstr ""
+"ce qui va finalement copier :file:`foo.py` dans le répertoire approprié pour "
+"un module tiers dans son installation Python."
#: ../Doc/distutils/introduction.rst:106
msgid ""
@@ -164,6 +217,13 @@ msgid ""
"while :command:`install` is more often for installers (although most "
"developers will want to install their own code occasionally)."
msgstr ""
+"Ce simple exemple démontre des concepts fondamentaux de Distutils, "
+"Premièrement, les développeurs et installeurs ont la même interface "
+"utilisateur basique, p. ex. le script d'installation. La différence est "
+"quelle *commande* Distutils ils utilisent : la commande :command:`sdist` est "
+"quasiment exclusivement pour les développeurs de modules Python, tandis que :"
+"command:`install` est plus souvent pour les installeurs (bien que la plupart "
+"des développeurs vont vouloir installer leur code occasionnellement)."
#: ../Doc/distutils/introduction.rst:113
msgid ""
@@ -174,12 +234,21 @@ msgid ""
"distribution for this platform) with the :command:`bdist_wininst` command. "
"For example::"
msgstr ""
+"Si vous voulez rendre les choses vraiment faciles pour vos utilisateurs, "
+"vous pouvez créer on ou plusieurs distributions compilées pour eux. En "
+"l’occurrence, si vous tournez sous une machine Windows, et que vous voulez "
+"rendre les choses faciles pour les autres utilisateurs Windows, vous pouvez "
+"créer un installateur exécutable (le mode de distribution le plus approprié "
+"pour cette plateforme) avec la commande :command:`bdist_wininst`. Par "
+"exemple :"
#: ../Doc/distutils/introduction.rst:121
msgid ""
"will create an executable installer, :file:`foo-1.0.win32.exe`, in the "
"current directory."
msgstr ""
+"va créer une installeur exécutable, :file:`foo-1.0.win32.exe`, dans le "
+"répertoire courant."
#: ../Doc/distutils/introduction.rst:124
msgid ""
@@ -188,6 +257,11 @@ msgid ""
"and HP-UX :program:`swinstall` (:command:`bdist_sdux`). For example, the "
"following command will create an RPM file called :file:`foo-1.0.noarch.rpm`::"
msgstr ""
+"D'autres formats de distributions compilés utiles sont RPM, implémenté par "
+"la commande :command:`bdist_rpm`, Solaris :program:`pkgtool` (:command:"
+"`bdist_pkgtool`), et HP-UX :program:`swinstall` (:command:`bdist_sdux`). Par "
+"exemple, la commande suivante va créer un fichier RPM appelé :file:`foo-1.0."
+"noarch.rpm`::"
#: ../Doc/distutils/introduction.rst:132
msgid ""
@@ -195,16 +269,21 @@ msgid ""
"therefore this has to be run on an RPM-based system such as Red Hat Linux, "
"SuSE Linux, or Mandrake Linux.)"
msgstr ""
+"(La commande :command:`bdist_rpm` utilise l'exécutable :command:`rpm`, "
+"cependant cela doit être exécuté sur un système basé sur RPM tel que Red Hat "
+"Linux, SuSE Linux, or Mandrake Linux.)"
#: ../Doc/distutils/introduction.rst:136
msgid ""
"You can find out what distribution formats are available at any time by "
"running ::"
msgstr ""
+"Vous pouvez trouver quelles sont les formats de distribution disponibles à "
+"n'importe quel moment en exécutant :"
#: ../Doc/distutils/introduction.rst:145
msgid "General Python terminology"
-msgstr ""
+msgstr "Terminologie Python générale"
#: ../Doc/distutils/introduction.rst:147
msgid ""
@@ -213,6 +292,10 @@ msgid ""
"everyone is operating from a common starting point, we offer the following "
"glossary of common Python terms:"
msgstr ""
+"Si vous lisez ce document, vous avez probablement une bonne idée de ce que "
+"sont les modules, extensions, etc. Néanmoins, juste pour être sur que tout "
+"le monde opère depuis un point d'entrée commun, nous reprécisons le "
+"glossaire suivant des termes Python communs :"
#: ../Doc/distutils/introduction.rst:155
msgid "module"
@@ -224,10 +307,13 @@ msgid ""
"some other code. Three types of modules concern us here: pure Python "
"modules, extension modules, and packages."
msgstr ""
+"unité de base de la réutilisabilité en Python : un bloc de code importé par "
+"un autre code. Trois types de modules nous concernent ici : les purs modules "
+"Python, les modules d'extension, et les packages."
#: ../Doc/distutils/introduction.rst:160
msgid "pure Python module"
-msgstr ""
+msgstr "pur module Python"
#: ../Doc/distutils/introduction.rst:158
msgid ""
@@ -235,6 +321,8 @@ msgid ""
"possibly associated :file:`.pyc` files). Sometimes referred to as a \"pure "
"module.\""
msgstr ""
+"un module écrit en Python et contenu dans un seul fichier :file:`.py` (et "
+"possiblement un fichier :file:`.pyc` associé). Parfois appelé \"pur module.\""
#: ../Doc/distutils/introduction.rst:168
msgid "extension module"
@@ -250,6 +338,13 @@ msgid ""
"(Note that currently, the Distutils only handles C/C++ extensions for "
"Python.)"
msgstr ""
+"un module écrit dans un langage de bas niveau de l'implémentation Python: C/C"
+"++ pour Python, Java pour Jython. Typiquement contenu dans un unique fichier "
+"pré-compilé chargeable, p. ex. un fichier objet partagé (:file:`.so`) pour "
+"des extensions Python sous Unix, un fichier DLL (étant donné l'extension :"
+"file:`.pyd`) pour les extensions Python sous Windows, ou un fichier de "
+"classe Java pour les extensions Jython (notez qu'actuellement, Distutils "
+"gère seulement les extensions Python C/C++)."
#: ../Doc/distutils/introduction.rst:173
msgid "package"
@@ -261,6 +356,9 @@ msgid ""
"the filesystem and distinguished from other directories by the presence of a "
"file :file:`__init__.py`."
msgstr ""
+"un module qui contient d'autres modules ; très souvent contenu dans un "
+"répertoire du système de fichier et qui se distingue des autres répertoires "
+"par la présence d'un fichier :file:`__init__.py`."
#: ../Doc/distutils/introduction.rst:183
msgid "root package"
@@ -276,20 +374,30 @@ msgid ""
"package can be found in many directories: in fact, every directory listed in "
"``sys.path`` contributes modules to the root package."
msgstr ""
+"la racine de la hiérarchie de paquets. (Ce n'est pas vraiment un paquet, "
+"puisqu'il n'a pas un fichier :file:`__init__.py`. Mais nous devons bien le "
+"nommer.) La grande majorité de la bibliothèque standard est dans le package "
+"racine, comme le sont certains petits, des packages tiers autonomes qui "
+"n'appartiennent pas à une un module plus grand. Contrairement aux packages "
+"réguliers, les modules dans le package racine peuvent être trouvés dans "
+"plusieurs répertoires : en effet, tous les répertoires listés ``sys.path`` "
+"contribuent à faire partie du package racine."
#: ../Doc/distutils/introduction.rst:188
msgid "Distutils-specific terminology"
-msgstr ""
+msgstr "Terminologie spécifique à Distutils"
#: ../Doc/distutils/introduction.rst:190
msgid ""
"The following terms apply more specifically to the domain of distributing "
"Python modules using the Distutils:"
msgstr ""
+"Les termes suivant s'appliquent plus spécifiquement au domaine de la "
+"distribution de modules Python en utilisant les Distutils :"
#: ../Doc/distutils/introduction.rst:199
msgid "module distribution"
-msgstr ""
+msgstr "module de distribution"
#: ../Doc/distutils/introduction.rst:194
msgid ""
@@ -299,30 +407,40 @@ msgid ""
"called a *package*, except that term is already taken in the Python context: "
"a single module distribution may contain zero, one, or many Python packages.)"
msgstr ""
+"une collection de modules Python distribués ensemble, comme une unique "
+"ressource téléchargeable et ayant pour but d'être installé *en bloc*. Des "
+"exemples de modules distribués bien connus sont *NumPy*, *SciPy*, *Pillow*, "
+"ou *mxBase*. (On pourrait les appeler des *packages*, malgré que le terme "
+"soit déjà pris dans le contexte Python : une distribution de module simple "
+"pourrait contenir zéro, on ou plusieurs packages Python"
#: ../Doc/distutils/introduction.rst:203
msgid "pure module distribution"
-msgstr ""
+msgstr "distribution de modules purs"
#: ../Doc/distutils/introduction.rst:202
msgid ""
"a module distribution that contains only pure Python modules and packages. "
"Sometimes referred to as a \"pure distribution.\""
msgstr ""
+"une distribution de module qui contient seulement des modules purs et "
+"packages Python. Parfois appelée « distribution pure »."
#: ../Doc/distutils/introduction.rst:207
msgid "non-pure module distribution"
-msgstr ""
+msgstr "distribution de module non pur"
#: ../Doc/distutils/introduction.rst:206
msgid ""
"a module distribution that contains at least one extension module. "
"Sometimes referred to as a \"non-pure distribution.\""
msgstr ""
+"une distribution de module qui contient au moins un module d'extension. "
+"Parfois appelée « distribution non-pure »."
#: ../Doc/distutils/introduction.rst:211
msgid "distribution root"
-msgstr ""
+msgstr "distribution racine"
#: ../Doc/distutils/introduction.rst:210
msgid ""
@@ -330,3 +448,6 @@ msgid ""
"directory where :file:`setup.py` exists. Generally :file:`setup.py` will "
"be run from this directory."
msgstr ""
+"le répertoire de plus haut niveau de votre arborescence (ou distribution "
+"source) ; le répertoire ou :file:`setup.py` existe. Généralement :file:"
+"`setup.py` est exécuté depuis ce répertoire."
diff --git a/distutils/packageindex.po b/distutils/packageindex.po
index c4eecfc0b..7b9b337af 100644
--- a/distutils/packageindex.po
+++ b/distutils/packageindex.po
@@ -5,306 +5,34 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-04-29 00:24+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-08-21 12:33+0200\n"
+"Last-Translator: Zepmanbc \n"
"Language-Team: FRENCH \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"
-#: ../Doc/distutils/packageindex.rst:9
+#: ../Doc/distutils/packageindex.rst:7
msgid "The Python Package Index (PyPI)"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:11
-msgid ""
-"The `Python Package Index (PyPI)`_ stores :ref:`meta-data ` "
-"describing distributions packaged with distutils, as well as package data "
-"like distribution files if a package author wishes."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:15
-msgid ""
-"Distutils provides the :command:`register` and :command:`upload` commands "
-"for pushing meta-data and distribution files to PyPI, respectively. See :"
-"ref:`package-commands` for information on these commands."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:21
-msgid "PyPI overview"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:23
-msgid ""
-"PyPI lets you submit any number of versions of your distribution to the "
-"index. If you alter the meta-data for a particular version, you can submit "
-"it again and the index will be updated."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:27
-msgid ""
-"PyPI holds a record for each (name, version) combination submitted. The "
-"first user to submit information for a given name is designated the Owner of "
-"that name. Changes can be submitted through the :command:`register` command "
-"or through the web interface. Owners can designate other users as Owners or "
-"Maintainers. Maintainers can edit the package information, but not "
-"designate new Owners or Maintainers."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:34
-msgid ""
-"By default PyPI displays only the newest version of a given package. The "
-"web interface lets one change this default behavior and manually select "
-"which versions to display and hide."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:38
-msgid ""
-"For each version, PyPI displays a home page. The home page is created from "
-"the ``long_description`` which can be submitted via the :command:`register` "
-"command. See :ref:`package-display` for more information."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:46
-msgid "Distutils commands"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:48
-msgid ""
-"Distutils exposes two commands for submitting package data to PyPI: the :ref:"
-"`register ` command for submitting meta-data to PyPI and "
-"the :ref:`upload ` command for submitting distribution "
-"files. Both commands read configuration data from a special file called a :"
-"ref:`.pypirc file `."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:58
-msgid "The ``register`` command"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:60
-msgid ""
-"The distutils command :command:`register` is used to submit your "
-"distribution's meta-data to an index server. It is invoked as follows::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:65
-msgid "Distutils will respond with the following prompt::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:75
-msgid ""
-"Note: if your username and password are saved locally, you will not see this "
-"menu. Also, refer to :ref:`pypirc` for how to store your credentials in a :"
-"file:`.pypirc` file."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:79
-msgid ""
-"If you have not registered with PyPI, then you will need to do so now. You "
-"should choose option 2, and enter your details as required. Soon after "
-"submitting your details, you will receive an email which will be used to "
-"confirm your registration."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:84
-msgid ""
-"Once you are registered, you may choose option 1 from the menu. You will be "
-"prompted for your PyPI username and password, and :command:`register` will "
-"then submit your meta-data to the index."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:88
-msgid ""
-"See :ref:`package-cmdoptions` for options to the :command:`register` command."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:94
-msgid "The ``upload`` command"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:96
-msgid ""
-"The distutils command :command:`upload` pushes the distribution files to "
-"PyPI."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:98
-msgid ""
-"The command is invoked immediately after building one or more distribution "
-"files. For example, the command ::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:103
-msgid ""
-"will cause the source distribution and the Windows installer to be uploaded "
-"to PyPI. Note that these will be uploaded even if they are built using an "
-"earlier invocation of :file:`setup.py`, but that only distributions named on "
-"the command line for the invocation including the :command:`upload` command "
-"are uploaded."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:108
-msgid ""
-"If a :command:`register` command was previously called in the same command, "
-"and if the password was entered in the prompt, :command:`upload` will reuse "
-"the entered password. This is useful if you do not want to store a password "
-"in clear text in a :file:`.pypirc` file."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:113
-msgid ""
-"You can use the ``--sign`` option to tell :command:`upload` to sign each "
-"uploaded file using GPG (GNU Privacy Guard). The :program:`gpg` program "
-"must be available for execution on the system :envvar:`PATH`. You can also "
-"specify which key to use for signing using the ``--identity=name`` option."
-msgstr ""
+msgstr "L'index de paquets Python (*Python Package Index* : PyPI)"
-#: ../Doc/distutils/packageindex.rst:118
-msgid ""
-"See :ref:`package-cmdoptions` for additional options to the :command:"
-"`upload` command."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:125
-msgid "Additional command options"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:127
-msgid ""
-"This section describes options common to both the :command:`register` and :"
-"command:`upload` commands."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:130
-msgid ""
-"The ``--repository`` or ``-r`` option lets you specify a PyPI server "
-"different from the default. For example::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:135
-msgid ""
-"For convenience, a name can be used in place of the URL when the :file:`."
-"pypirc` file is configured to do so. For example::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:140
-msgid "See :ref:`pypirc` for more information on defining alternate servers."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:142
-msgid ""
-"The ``--show-response`` option displays the full response text from the PyPI "
-"server, which is useful when debugging problems with registering and "
-"uploading."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:153
-msgid "The ``.pypirc`` file"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:155
-msgid ""
-"The :command:`register` and :command:`upload` commands both check for the "
-"existence of a :file:`.pypirc` file at the location :file:`$HOME/.pypirc`. "
-"If this file exists, the command uses the username, password, and repository "
-"URL configured in the file. The format of a :file:`.pypirc` file is as "
-"follows:"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:172
-msgid ""
-"The *distutils* section defines an *index-servers* variable that lists the "
-"name of all sections describing a repository."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:175
-msgid "Each section describing a repository defines three variables:"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:177
-msgid "*repository*, that defines the url of the PyPI server. Defaults to"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:178
-msgid "``https://upload.pypi.org/legacy/``."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:179
-msgid "*username*, which is the registered username on the PyPI server."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:181
-msgid "*password*, that will be used to authenticate. If omitted the user"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:181
-msgid "will be prompt to type it when needed."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:183
-msgid ""
-"If you want to define another server a new section can be created and listed "
-"in the *index-servers* variable:"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:203
-msgid ""
-"This allows the :command:`register` and :command:`upload` commands to be "
-"called with the ``--repository`` option as described in :ref:`package-"
-"cmdoptions`."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:207
-msgid ""
-"Specifically, you might want to add the `PyPI Test Repository `_ to your ``.pypirc`` to facilitate testing before "
-"doing your first upload to ``PyPI`` itself."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:215
-msgid "PyPI package display"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:217
-msgid ""
-"The ``long_description`` field plays a special role at PyPI. It is used by "
-"the server to display a home page for the registered package."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:220
-msgid ""
-"If you use the `reStructuredText `_ syntax for this field, PyPI will parse it and display an HTML output "
-"for the package home page."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:224
-msgid ""
-"The ``long_description`` field can be attached to a text file located in the "
-"package::"
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:235
-msgid ""
-"In that case, :file:`README.txt` is a regular reStructuredText text file "
-"located in the root of the package besides :file:`setup.py`."
-msgstr ""
-
-#: ../Doc/distutils/packageindex.rst:238
+#: ../Doc/distutils/packageindex.rst:9
msgid ""
-"To prevent registering broken reStructuredText content, you can use the :"
-"program:`rst2html` program that is provided by the :mod:`docutils` package "
-"and check the ``long_description`` from the command line:"
+"The `Python Package Index (PyPI)`_ stores metadata describing distributions "
+"packaged with distutils and other publishing tools, as well the distribution "
+"archives themselves."
msgstr ""
+"Le `Python Package Index (PyPI)`_ stocke les métadonnées décrivant les "
+"distributions empaquetées avec *distutils* et autres outils de publication, "
+"ainsi que les archives des distributions elles-mêmes."
-#: ../Doc/distutils/packageindex.rst:246
+#: ../Doc/distutils/packageindex.rst:13
msgid ""
-":mod:`docutils` will display a warning if there's something wrong with your "
-"syntax. Because PyPI applies additional checks (e.g. by passing ``--no-"
-"raw`` to ``rst2html.py`` in the command above), being able to run the "
-"command above without warnings does not guarantee that PyPI will convert the "
-"content successfully."
+"References to up to date PyPI documentation can be found at :ref:`publishing-"
+"python-packages`."
msgstr ""
+"Des références à la documentation de PyPI à jour peuvent être trouvées sur :"
+"ref:`publishing-python-packages`."
diff --git a/distutils/setupscript.po b/distutils/setupscript.po
index 6eebacb58..6f52fe7f5 100644
--- a/distutils/setupscript.po
+++ b/distutils/setupscript.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-11-29 16:06+0100\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -16,7 +16,7 @@ msgstr ""
#: ../Doc/distutils/setupscript.rst:5
msgid "Writing the Setup Script"
-msgstr ""
+msgstr "Rédaction du script ``setup.py``"
#: ../Doc/distutils/setupscript.rst:7
msgid ""
@@ -29,6 +29,15 @@ msgid ""
"Distutils by the module developer is supplied as keyword arguments to :func:"
"`setup`."
msgstr ""
+"Le script ``setup.py`` est au centre de toute opération de construction, de "
+"distribution et d'installation des modules utilisant les *Distutils*. "
+"L'objectif principal du script ``setup.py`` est de décrire le module aux "
+"*Distutils*, de telle sorte que les diverses commandes qui agissent sur "
+"votre module fassent les bonnes choses. Comme nous avons vu dans la section :"
+"ref:`distutils-simple-example` au-dessus, le script ``setup.py`` consiste "
+"principalement à un appel à :func:`setup`, et la plupart des informations "
+"fournies aux *Distutils* par le développeur du module sont fournies en tant "
+"qu'arguments nommés à :func:`setup.py`."
#: ../Doc/distutils/setupscript.rst:15
msgid ""
@@ -39,6 +48,14 @@ msgid ""
"install other module distributions. The Distutils' own setup script, shown "
"here, is used to install the package into Python 1.5.2.) ::"
msgstr ""
+"Voici un exemple un peu plus concret, que nous allons suivre pour les "
+"quelques sections suivantes : le propre script ``setup.py`` des *Distutils* "
+"(gardez toujours à l'esprit qu'en dépit de l'inclusion des *Distutils* dans "
+"python 1.6 et ses versions successives, ils ont aussi une existence à part "
+"entière de telle sorte que les utilisateurs de Python 1.5.2 puissent les "
+"utiliser pour installer d'autres modules. Le propre script ``setup.py`` des "
+"*Distutils* montré ici est utilisé pour installer le paquet dans Python "
+"1.5.2). ::"
#: ../Doc/distutils/setupscript.rst:35
msgid ""
@@ -50,6 +67,14 @@ msgid ""
"module would be tedious to generate and difficult to maintain. For more "
"information on the additional meta-data, see section :ref:`meta-data`."
msgstr ""
+"Il y a seulement deux différences entre cet exemple et l'exemple trivial de "
+"la distribution d'un unique fichier présenté dans la partie :ref:`distutils-"
+"simple-example` : plus de métadonnées, et la définition de modules purement "
+"Python par paquet, plutôt que par module. C'est important car les "
+"*Distutils* sont composés de quelques douzaines de modules séparés (pour le "
+"moment) en deux paquets ; une liste explicite de chaque module serait "
+"pénible à générer et difficile à maintenir. Pour plus d'information sur les "
+"métadonnées supplémentaires, voir la partie :ref:`meta-data`."
#: ../Doc/distutils/setupscript.rst:43
msgid ""
@@ -61,6 +86,15 @@ msgid ""
"systems, which of course is one of the major goals of the Distutils. In "
"this spirit, all pathnames in this document are slash-separated."
msgstr ""
+"À noter que chaque chemin d'accès fourni au script ``setup.py`` doit être "
+"écrit selon la convention Unix. Autrement dit, séparé par des barres "
+"obliques (slash). Les *Distutils* prendront soin de convertir cette "
+"représentation indépendante de la plateforme en une représentation adaptée à "
+"votre plateforme actuelle avant d'effectivement utiliser le chemin d'accès. "
+"Cela rend votre script ``setup.py`` portable d'un système d'exploitation à "
+"l'autre, ce qui évidemment est l'un des buts majeurs des *Distutils*. Dans "
+"cet esprit, tous les chemins d'accès dans ce document sont séparés par des "
+"barres obliques (slash)."
#: ../Doc/distutils/setupscript.rst:51
msgid ""
@@ -69,10 +103,15 @@ msgid ""
"or :func:`os.listdir` to specify files, you should be careful to write "
"portable code instead of hardcoding path separators::"
msgstr ""
+"Cela, évidemment, s'applique uniquement aux chemins d'accès passés aux "
+"fonctions de *Distutils*. Si vous, par exemple, vous utilisez les fonctions "
+"standards de Python telles que :func:`glob.glob` or :func:`os.listdir` pour "
+"définir des fichiers, vous devez prendre soin d'écrire du code portable au "
+"lieu de coder en dur les séparateurs de chemin ::"
#: ../Doc/distutils/setupscript.rst:63
msgid "Listing whole packages"
-msgstr ""
+msgstr "Lister l'ensemble des paquets"
#: ../Doc/distutils/setupscript.rst:65
msgid ""
@@ -89,6 +128,19 @@ msgid ""
"break this promise, the Distutils will issue a warning but still process the "
"broken package anyway."
msgstr ""
+"L'option ``packages`` dit aux *Distutils* de traiter (construire, "
+"distribuer, installer, etc.) tous les modules en Python pur trouvés dans "
+"chaque paquet mentionné dans la liste ``packages``. À cette fin, évidemment, "
+"il faut une correspondance entre les noms des paquets et des répertoires "
+"dans le système de fichiers. La correspondance par défaut est la plus "
+"évidente. À savoir : le paquet :mod:`distutils` se trouve dans le "
+"répertoire :file:`distutils` situé à la racine de la distribution. Ainsi, "
+"quand vous écrivez ``packages = ['foo']`` dans votre script ``setup.py``, "
+"vous vous engagez à ce que les *Distutils* trouvent un fichier ``foo/"
+"__init__.py`` (qui peut s'épeler différemment sur votre système, mais vous "
+"voyez l'idée) à un emplacement relatif au répertoire où se trouve le script "
+"``setup.py``. Si ce n'est pas le cas, les *Distutils* lèvent un "
+"avertissement mais traitent tout de même le paquet défectueux."
#: ../Doc/distutils/setupscript.rst:77
msgid ""
@@ -99,6 +151,14 @@ msgid ""
"in any package at all) are in :file:`lib`, modules in the :mod:`foo` package "
"are in :file:`lib/foo`, and so forth. Then you would put ::"
msgstr ""
+"Si vous utilisez une convention différente pour arranger votre répertoire de "
+"sources, ce n'est pas un problème : vous avez seulement à fournir l'option "
+"``package_dir`` pour prévenir les *Distutils* de l'usage de cette "
+"convention. Par exemple, supposons que vous gardez toutes les sources Python "
+"sous :file:`lib`, de telle sorte que les modules dans le « paquet "
+"racine » (c'est-à-dire dans aucun paquet du tout) sont dans :file:`lib`, les "
+"modules dans le paquet :mod:`foo` sont dans :file:`lib/foo`, et ainsi de "
+"suite. Alors, vous pouvez mettre ::"
#: ../Doc/distutils/setupscript.rst:86
msgid ""
@@ -108,6 +168,11 @@ msgid ""
"``packages = ['foo']``, you are promising that the file :file:`lib/foo/"
"__init__.py` exists."
msgstr ""
+"dans votre script ``setup.py``. Les clés de ce dictionnaire sont les noms "
+"des paquets, et un nom de paquet vide fait office de paquet racine. Les "
+"valeurs sont des noms de répertoires relatifs à la racine de votre "
+"distribution. Dans ce cas, lorsque vous dites ``packages = ['foo']``, vous "
+"vous engagez à ce que le fichier :file:`lib/foo/__init__.py` existe."
#: ../Doc/distutils/setupscript.rst:91
msgid ""
@@ -115,6 +180,9 @@ msgid ""
"`lib`, the :mod:`foo.bar` package in :file:`lib/bar`, etc. This would be "
"written in the setup script as ::"
msgstr ""
+"Une autre convention possible est de mettre le paquet :mod:`foo` directement "
+"dans :file:`lib`, le paquet :mod:`foo.bar` dans :file:`lib/bar`, etc. Cela "
+"s'écrirait ainsi dans le script ``setup.py`` : ::"
#: ../Doc/distutils/setupscript.rst:97
msgid ""
@@ -130,7 +198,7 @@ msgstr ""
#: ../Doc/distutils/setupscript.rst:110
msgid "Listing individual modules"
-msgstr ""
+msgstr "Lister chaque module indépendamment"
#: ../Doc/distutils/setupscript.rst:112
msgid ""
@@ -140,6 +208,11 @@ msgid ""
"shown in section :ref:`distutils-simple-example`; here is a slightly more "
"involved example::"
msgstr ""
+"Pour un petit projet, vous pouvez préférer lister tous les modules plutôt "
+"que les paquets — surtout le cas d'un module seul qui va dans le « paquet "
+"racine » (à savoir, aucun paquet du tout). Le cas le plus simple a été "
+"montré dans la partie :ref:`distutils-simple-example` ; voici un exemple "
+"plus concret ::"
#: ../Doc/distutils/setupscript.rst:119
msgid ""
@@ -150,10 +223,16 @@ msgid ""
"you can override the package/directory correspondence using the "
"``package_dir`` option."
msgstr ""
+"Deux modules sont décrits, l'un dans le paquet « racine », l'autre dans le "
+"paquet :mod:`pkg`. Encore une fois, la structure paquet/répertoire par "
+"défaut implique que ces deux modules peuvent être trouvés dans :file:`mod1."
+"py` et :file:`pkg/mod2.py`, et que :file:`pkg/__init__.py` existe aussi. Là "
+"aussi, vous pouvez redéfinir la correspondance paquet/répertoire en "
+"utilisant l'option ``package_dir``."
#: ../Doc/distutils/setupscript.rst:129
msgid "Describing extension modules"
-msgstr ""
+msgstr "Description des modules d'extension"
#: ../Doc/distutils/setupscript.rst:131
msgid ""
@@ -164,6 +243,13 @@ msgid ""
"have to specify the extension name, source file(s), and any compile/link "
"requirements (include directories, libraries to link with, etc.)."
msgstr ""
+"Tout comme écrire des modules d'extension Python est un peu plus compliqué "
+"que d’écrire des modules purement en Python, les décrire aux *Distutils* est "
+"un peu plus compliqué. Contrairement aux modules purs, il ne suffit pas de "
+"simplement lister les modules ou les paquets et d'attendre que les "
+"*Distutils* trouvent par eux-mêmes les bons fichiers ; vous devez définir le "
+"nom de l'extension, du ou des fichiers de sources, et les prérequis de "
+"compilation/lien (répertoires à inclure, bibliothèques à lier, etc.)."
#: ../Doc/distutils/setupscript.rst:140
msgid ""
@@ -175,6 +261,13 @@ msgid ""
"instructions to the compiler/linker are needed, describing this extension is "
"quite simple::"
msgstr ""
+"Tout ceci est fait à l'aide d'un autre argument nommé passé à :func:`setup`, "
+"l'option ``ext_modules``. ``ext_modules`` est simplement une liste de "
+"classes :class:`~distutils.core.Extension`, chacune décrivant une seule "
+"extension de module. Supposons que votre distribution inclut une seule "
+"extension appelée :mod:`foo` et implémentée par :file:`foo.c`. Si aucune "
+"instruction supplémentaire au compilateur/lieur n'est requise, décrire cette "
+"extension est assez simple ::"
#: ../Doc/distutils/setupscript.rst:150
msgid ""
@@ -182,6 +275,9 @@ msgid ""
"along with :func:`setup`. Thus, the setup script for a module distribution "
"that contains only this one extension and nothing else might be::"
msgstr ""
+"La classe :class:`Extension` peut être importée depuis :mod:`distutils.core` "
+"en même temps que :func:`setup`. Ainsi, le script ``setup.py`` pour un "
+"module qui ne contient que cette seule extension et rien d'autre peut être ::"
#: ../Doc/distutils/setupscript.rst:160
msgid ""
@@ -190,10 +286,14 @@ msgid ""
"deal of flexibility in describing Python extensions, which is explained in "
"the following sections."
msgstr ""
+"La classe :class:`Extension` (en réalité, la machinerie sous-jacente "
+"construisant les extensions implémentées par la commande :command:"
+"`build_ext`) permet une grande flexibilité dans la description des "
+"extensions Python, ce qui est expliqué dans les parties suivantes."
#: ../Doc/distutils/setupscript.rst:167
msgid "Extension names and packages"
-msgstr ""
+msgstr "Nom des extensions et paquets"
#: ../Doc/distutils/setupscript.rst:169
msgid ""
@@ -201,10 +301,12 @@ msgid ""
"always the name of the extension, including any package names. For "
"example, ::"
msgstr ""
+"Le premier argument du constructeur :class:`~distutils.core.Extension` est "
+"toujours le nom de l'extension, incluant tout nom de paquet. Par exemple ::"
#: ../Doc/distutils/setupscript.rst:174
msgid "describes an extension that lives in the root package, while ::"
-msgstr ""
+msgstr "décrit une extension qui se situe dans le paquet racine, tandis que ::"
#: ../Doc/distutils/setupscript.rst:178
msgid ""
@@ -213,6 +315,11 @@ msgid ""
"is where in the filesystem (and therefore where in Python's namespace "
"hierarchy) the resulting extension lives."
msgstr ""
+"décrit la même extension dans le paquet :mod:`pkg`. Les fichiers sources et "
+"le code objet résultant sont identiques dans les deux cas ; la seule "
+"différence est où, dans le système de fichier (et conséquemment dans la "
+"hiérarchie de l'espace de nommage de Python), l'extension résultante se "
+"situe."
#: ../Doc/distutils/setupscript.rst:183
msgid ""
@@ -220,16 +327,21 @@ msgid ""
"same base package), use the ``ext_package`` keyword argument to :func:"
"`setup`. For example, ::"
msgstr ""
+"Si vous avez un certain nombre d'extensions toutes dans le même paquet (ou "
+"toutes sous le même paquet de base), utilisez l'argument nommé "
+"``ext_package`` de :func:`setup`. Par exemple ::"
#: ../Doc/distutils/setupscript.rst:193
msgid ""
"will compile :file:`foo.c` to the extension :mod:`pkg.foo`, and :file:`bar."
"c` to :mod:`pkg.subpkg.bar`."
msgstr ""
+"compile :file:`foo.c` en l’extension :mod:`pkg.foo`, et :file:`bar.c` en :"
+"mod:`pkg.subpkg.bar`."
#: ../Doc/distutils/setupscript.rst:198
msgid "Extension source files"
-msgstr ""
+msgstr "Fichiers sources d'extension"
#: ../Doc/distutils/setupscript.rst:200
msgid ""
@@ -240,6 +352,12 @@ msgid ""
"files: :file:`.cc` and :file:`.cpp` seem to be recognized by both Unix and "
"Windows compilers.)"
msgstr ""
+"Le second argument du constructeur d'\\ :class:`~distutils.core.Extension` "
+"est une liste de fichiers sources. Puisque les *Distutils* ne gèrent que les "
+"extensions en C, C++ et Objective-C, ce sont normalement des fichiers "
+"sources en C/C++/Objective-C (assurez vous d'utiliser les extensions "
+"appropriées pour détecter les fichiers sources en C++ : :file:`.cc` et :file:"
+"`.cpp` semblent être reconnus tant par les compilateurs Unix que Windows)."
#: ../Doc/distutils/setupscript.rst:207
msgid ""
@@ -248,16 +366,22 @@ msgid ""
"will run SWIG on the interface file and compile the resulting C/C++ file "
"into your extension."
msgstr ""
+"Néanmoins, vous pouvez également inclure des fichiers d'interface SWIG (:"
+"file:`.i`) dans la liste ; la commande :command:`build_ext` sait comment "
+"gérer les extensions SWIG : il lancera SWIG sur un fichier d'interface et "
+"compilera le fichier en C/C++ en une extension."
#: ../Doc/distutils/setupscript.rst:214
msgid ""
"This warning notwithstanding, options to SWIG can be currently passed like "
"this::"
msgstr ""
+"Malgré cet avertissement, les options peuvent être actuellement passées à "
+"SWIG de la façon suivante ::"
#: ../Doc/distutils/setupscript.rst:223
msgid "Or on the commandline like this::"
-msgstr ""
+msgstr "Ou en ligne de commande de cette façon ::"
#: ../Doc/distutils/setupscript.rst:227
msgid ""
@@ -267,10 +391,16 @@ msgid ""
"rc`) files for Visual C++. These will be compiled to binary resource (:file:"
"`.res`) files and linked into the executable."
msgstr ""
+"Sur certaines plateformes, vous pouvez inclure des fichiers autres que des "
+"sources qui seront traités par le compilateur et inclus dans votre "
+"extension. Pour l'instant, cela concerne seulement les fichiers de messages "
+"texte Windows (:file:`.mc`) et les fichiers de définition de ressource pour "
+"Visual C++ (:file:`.rc`). Ils seront compilés en fichiers de ressources "
+"binaires (:file:`.res`) et liés à l'exécutable."
#: ../Doc/distutils/setupscript.rst:235
msgid "Preprocessor options"
-msgstr ""
+msgstr "Options de préprocesseur"
#: ../Doc/distutils/setupscript.rst:237
msgid ""
@@ -278,12 +408,19 @@ msgid ""
"you need to specify include directories to search or preprocessor macros to "
"define/undefine: ``include_dirs``, ``define_macros``, and ``undef_macros``."
msgstr ""
+"Trois arguments optionnels de :class:`~distutils.core.Extension` aident si "
+"vous avez besoin de préciser les dossiers d’en-têtes à chercher ou les "
+"macros de préprocesseurs à charger ou ignorer : ``include_dirs``, "
+"``define_macros``, et ``undef_macros``."
#: ../Doc/distutils/setupscript.rst:241
msgid ""
"For example, if your extension requires header files in the :file:`include` "
"directory under your distribution root, use the ``include_dirs`` option::"
msgstr ""
+"Par exemple, si votre extension nécessite des fichiers d'en-tête dans le "
+"répertoire :file:`include` à la racine de votre distribution, utilisez "
+"l'option ``include_dirs`` ::"
#: ../Doc/distutils/setupscript.rst:246
msgid ""
@@ -291,12 +428,17 @@ msgid ""
"will only be built on Unix systems with X11R6 installed to :file:`/usr`, you "
"can get away with ::"
msgstr ""
+"Ici, vous pouvez définir le chemin absolu des répertoires ; si vous savez "
+"que votre extension sera compilée sur un système Unix avec ``X11R6`` "
+"installé dans :file:`/usr`, vous pouvez vous en sortir avec ::"
#: ../Doc/distutils/setupscript.rst:252
msgid ""
"You should avoid this sort of non-portable usage if you plan to distribute "
"your code: it's probably better to write C code like ::"
msgstr ""
+"Il convient d'éviter ce type d'utilisation non portable si vous envisagez de "
+"distribuer votre code : Il est probablement mieux d'écrire du code C comme ::"
#: ../Doc/distutils/setupscript.rst:257
msgid ""
@@ -310,6 +452,17 @@ msgid ""
"in this case---is always included in the search path when building Python "
"extensions, the best approach is to write C code like ::"
msgstr ""
+"Si vous avez besoin d'inclure des fichiers d'en-tête provenant d'autres "
+"extensions Python, vous pouvez profiter du fait que les fichiers d'en-têtes "
+"sont installés de façon cohérente par la commande :command:`install_headers` "
+"des *Distutils*. Par exemple, les fichiers d'en-têtes de *Numerical Python* "
+"(NumPy) sont installés (dans le cas d'une installation Unix standard) dans :"
+"file:`/usr/local/include/python1.5/Numerical` — l'emplacement exact diffère "
+"selon votre plateforme et votre installation de Python. Vu que le "
+"répertoire :file:`include` de Python —\\ :file:`/usr/local/include/"
+"python1.5` dans ce cas-ci — est toujours inclus dans le chemin de recherche "
+"quand vous construisez des extensions Python, la meilleure approche est "
+"d'écrire du code C comme ::"
#: ../Doc/distutils/setupscript.rst:269
msgid ""
@@ -317,6 +470,10 @@ msgid ""
"header search path, though, you can find that directory using the Distutils :"
"mod:`distutils.sysconfig` module::"
msgstr ""
+"Si vous devez mettre le répertoire :file:`include` de :file:`Numerical` "
+"directement dans l'en-tête du chemin de recherche, cependant, vous pouvez "
+"trouver ce répertoire en utilisant le module :mod:`distutils.sysconfig` des "
+"*Distutils* ::"
#: ../Doc/distutils/setupscript.rst:279
msgid ""
@@ -324,6 +481,9 @@ msgid ""
"installation, regardless of platform---it's probably easier to just write "
"your C code in the sensible way."
msgstr ""
+"Même si c'est assez portable — ça marche sur la plupart des installations de "
+"Python, indépendamment de la plateforme — il est probablement plus facile "
+"d'écrire un code C un peu plus réfléchi."
#: ../Doc/distutils/setupscript.rst:283
msgid ""
@@ -335,6 +495,14 @@ msgid ""
"your C source: with most compilers, this sets ``FOO`` to the string ``1``.) "
"``undef_macros`` is just a list of macros to undefine."
msgstr ""
+"Vous pouvez définir ou ignorer des macros de pré-processeur avec les options "
+"``define_macros`` et ``undef_macros``. ``define_macros`` prend une liste de "
+"paires ``(nom, valeur)``, où ``nom`` est le nom de la macro à définir (une "
+"chaîne de caractères) et ``valeur`` est sa valeur ; soit une chaîne de "
+"caractères, soit ``None`` (définir une macro ``FOO`` à ``None`` est "
+"équivalent à un simple ``#define FOO`` dans votre source en C ; pour la "
+"majorité des compilateurs, cela définit la valeur de ``FOO`` à la chaîne de "
+"caractère ``1``). ``undef_macros`` est juste une liste de macros à supprimer."
#: ../Doc/distutils/setupscript.rst:291
msgid "For example::"
@@ -342,11 +510,11 @@ msgstr "Par exemple ::"
#: ../Doc/distutils/setupscript.rst:298
msgid "is the equivalent of having this at the top of every C source file::"
-msgstr ""
+msgstr "est équivalent à avoir ceci au début de chaque fichier source en C ::"
#: ../Doc/distutils/setupscript.rst:307
msgid "Library options"
-msgstr ""
+msgstr "Options des bibliothèques"
#: ../Doc/distutils/setupscript.rst:309
msgid ""
@@ -357,33 +525,48 @@ msgid ""
"time, and ``runtime_library_dirs`` is a list of directories to search for "
"shared (dynamically loaded) libraries at run-time."
msgstr ""
+"Vous pouvez aussi définir les bibliothèques à lier quand vous construisez "
+"votre extension, ainsi que le répertoire de recherche pour ces "
+"bibliothèques. L'option ``libraries`` est une liste de bibliothèques à lier, "
+"``library_dirs`` est une liste de répertoires dans lesquels chercher des "
+"bibliothèques au moment de la liaison, et ``runtime_library_dirs`` est une "
+"liste de répertoires pour la recherche des bibliothèques partagées (chargées "
+"dynamiquement) à l'exécution."
#: ../Doc/distutils/setupscript.rst:315
msgid ""
"For example, if you need to link against libraries known to be in the "
"standard library search path on target systems ::"
msgstr ""
+"Par exemple, pour lier des bibliothèques que l'on sait dans le chemin des "
+"bibliothèques standards des systèmes cibles ::"
#: ../Doc/distutils/setupscript.rst:321
msgid ""
"If you need to link with libraries in a non-standard location, you'll have "
"to include the location in ``library_dirs``::"
msgstr ""
+"Pour lier une bibliothèque se trouvant à un emplacement non standard, vous "
+"devez inclure son emplacement dans ``library_dirs`` ::"
#: ../Doc/distutils/setupscript.rst:328
msgid ""
"(Again, this sort of non-portable construct should be avoided if you intend "
"to distribute your code.)"
msgstr ""
+"Là aussi, ce genre de construction non portable doit être évité si vous avez "
+"l'intention de distribuer votre code."
#: ../Doc/distutils/setupscript.rst:335
msgid "Other options"
-msgstr ""
+msgstr "Autres options"
#: ../Doc/distutils/setupscript.rst:337
msgid ""
"There are still some other options which can be used to handle special cases."
msgstr ""
+"Il y a encore d'autres options qui peuvent être utilisées pour gérer des cas "
+"spéciaux."
#: ../Doc/distutils/setupscript.rst:339
msgid ""
@@ -391,6 +574,9 @@ msgid ""
"extension will not abort the build process, but instead simply not install "
"the failing extension."
msgstr ""
+"L'option ``optional`` est un booléen ; s'il est vrai, un échec de la "
+"construction dans l'extension n'annule pas le processus de construction, "
+"mais à la place, l'extension en échec ne sera pas installée."
#: ../Doc/distutils/setupscript.rst:343
msgid ""
@@ -398,6 +584,9 @@ msgid ""
"linker. These files must not have extensions, as the default extension for "
"the compiler is used."
msgstr ""
+"L'option ``extra_objects`` est une liste d'objets fichiers à passer à "
+"l'éditeur de liens. Ces fichiers ne doivent pas avoir d'extensions car "
+"l'extension par défaut du compilateur est utilisée."
#: ../Doc/distutils/setupscript.rst:347
msgid ""
@@ -405,6 +594,9 @@ msgid ""
"additional command line options for the respective compiler and linker "
"command lines."
msgstr ""
+"``extra_compile_args`` et ``extra_link_args`` peuvent être utilisées pour "
+"définir des options additionnelles en ligne de commande propres aux lignes "
+"de commandes respectives du compilateur et de l'éditeur de liens."
#: ../Doc/distutils/setupscript.rst:351
msgid ""
@@ -413,6 +605,10 @@ msgid ""
"when building compiled extensions: Distutils will automatically add "
"``initmodule`` to the list of exported symbols."
msgstr ""
+"``export_symbols`` est seulement utile sur Windows. Elle peut contenir une "
+"liste de symboles (fonctions ou variables) à exporter. Cette option n'est "
+"pas requise pour la construction d'extensions compilées : *Distutils* ajoute "
+"automatiquement ``initmodule`` à la liste des symboles exportés."
#: ../Doc/distutils/setupscript.rst:356
msgid ""
@@ -421,32 +617,40 @@ msgid ""
"sources to rebuild extension if any on this files has been modified since "
"the previous build."
msgstr ""
+"L'option ``depends`` est une liste de fichiers dont les extensions dépendent "
+"(par exemple les fichiers d'en-têtes). La commande ``build`` appelle le "
+"compilateur sur les sources pour reconstruire l'extension si un de ces "
+"fichiers a été modifié depuis la dernière construction."
#: ../Doc/distutils/setupscript.rst:362
msgid "Relationships between Distributions and Packages"
-msgstr ""
+msgstr "Relations entre distributions et paquets"
#: ../Doc/distutils/setupscript.rst:364
msgid "A distribution may relate to packages in three specific ways:"
msgstr ""
+"Une distribution peut se rapporter à des paquets de trois manières "
+"spécifiques :"
#: ../Doc/distutils/setupscript.rst:366
msgid "It can require packages or modules."
-msgstr ""
+msgstr "elle peut nécessiter des paquets ou des modules ;"
#: ../Doc/distutils/setupscript.rst:368
msgid "It can provide packages or modules."
-msgstr ""
+msgstr "elle peut fournir des paquets ou des modules ;"
#: ../Doc/distutils/setupscript.rst:370
msgid "It can obsolete packages or modules."
-msgstr ""
+msgstr "elle peut rendre obsolète des paquets ou des modules."
#: ../Doc/distutils/setupscript.rst:372
msgid ""
"These relationships can be specified using keyword arguments to the :func:"
"`distutils.core.setup` function."
msgstr ""
+"Ces relations peuvent être définies en utilisant des paramètres nommés dans "
+"la fonction :func:`distutils.core.setup`."
#: ../Doc/distutils/setupscript.rst:375
msgid ""
@@ -455,6 +659,10 @@ msgid ""
"be a list of strings. Each string specifies a package that is required, and "
"optionally what versions are sufficient."
msgstr ""
+"Les dépendances à d'autres modules et paquets Python peuvent être définies "
+"en fournissant le paramètre nommé ``requires`` à :func:`setup`. La valeur "
+"doit être une liste de chaînes de caractères. Chaque chaîne de caractères "
+"définit un paquet requis et, en option, les versions minimales."
#: ../Doc/distutils/setupscript.rst:380
msgid ""
@@ -462,6 +670,9 @@ msgid ""
"should consist entirely of the module or package name. Examples include "
"``'mymodule'`` and ``'xml.parsers.expat'``."
msgstr ""
+"S'il n'est pas nécessaire de préciser la version d'un module ou d'un paquet, "
+"la chaîne de caractères contient simplement les noms de modules ou de "
+"paquets. Par exemple ``mymodule`` et ``'xml.parsers.expat'``."
#: ../Doc/distutils/setupscript.rst:384
msgid ""
@@ -469,6 +680,10 @@ msgid ""
"in parentheses. Each qualifier may consist of a comparison operator and a "
"version number. The accepted comparison operators are::"
msgstr ""
+"Si des versions spécifiques sont requises, une suite de qualificatifs peut "
+"être fournie entre parenthèses. Chaque qualificatif peut contenir un "
+"opérateur de comparaison et un numéro de version. Les opérateurs de "
+"comparaison acceptés sont ::"
#: ../Doc/distutils/setupscript.rst:391
msgid ""
@@ -476,14 +691,18 @@ msgid ""
"optional whitespace). In this case, all of the qualifiers must be matched; "
"a logical AND is used to combine the evaluations."
msgstr ""
+"Ils peuvent être combinés en utilisant plusieurs qualificatifs séparés par "
+"des virgules (et de façon optionnelle, des espaces). Dans ce cas, tous les "
+"qualificatifs doivent être respectés ; un ET logique est utilisé pour "
+"combiner les évaluations."
#: ../Doc/distutils/setupscript.rst:395
msgid "Let's look at a bunch of examples:"
-msgstr ""
+msgstr "Jetons un œil à quelques exemples :"
#: ../Doc/distutils/setupscript.rst:398
msgid "Requires Expression"
-msgstr ""
+msgstr "Valeur de ``requires``"
#: ../Doc/distutils/setupscript.rst:398 ../Doc/distutils/setupscript.rst:416
msgid "Explanation"
@@ -491,20 +710,22 @@ msgstr "Explication"
#: ../Doc/distutils/setupscript.rst:400
msgid "``==1.0``"
-msgstr ""
+msgstr "``==1.0``"
#: ../Doc/distutils/setupscript.rst:400
msgid "Only version ``1.0`` is compatible"
-msgstr ""
+msgstr "Seule la version ``1.0`` est compatible."
#: ../Doc/distutils/setupscript.rst:402
msgid "``>1.0, !=1.5.1, <2.0``"
-msgstr ""
+msgstr "``>1.0, !=1.5.1, <2.0``"
#: ../Doc/distutils/setupscript.rst:402
msgid ""
"Any version after ``1.0`` and before ``2.0`` is compatible, except ``1.5.1``"
msgstr ""
+"Toute version après ``1.0`` et avant ``2.0`` est compatible, à l'exception "
+"de ``1.5.1``."
#: ../Doc/distutils/setupscript.rst:406
msgid ""
@@ -515,6 +736,13 @@ msgid ""
"optionally identifies the version. If the version is not specified, it is "
"assumed to match that of the distribution."
msgstr ""
+"Maintenant que nous pouvons définir des dépendances, nous devons également "
+"être en mesure de définir ce que d'autres distributions peuvent attendre de "
+"notre part. Cela est réalisé en utilisant l'argument nommé *provides* dans :"
+"func:`setup`. La valeur de cet argument est une liste de chaînes de "
+"caractères, chacune d'entre elles étant un module Python ou un paquet et, de "
+"façon optionnelle, identifie une version. Si la version n'est pas définie, "
+"il est supposé qu'elle correspond à celle de la distribution."
#: ../Doc/distutils/setupscript.rst:413
msgid "Some examples:"
@@ -522,23 +750,25 @@ msgstr "Quelques exemples :"
#: ../Doc/distutils/setupscript.rst:416
msgid "Provides Expression"
-msgstr ""
+msgstr "Valeur de ``provides``"
#: ../Doc/distutils/setupscript.rst:418
msgid "``mypkg``"
-msgstr ""
+msgstr "``mypkg``"
#: ../Doc/distutils/setupscript.rst:418
msgid "Provide ``mypkg``, using the distribution version"
-msgstr ""
+msgstr "Fournit ``mypkg`` en utilisant la version de la distribution."
#: ../Doc/distutils/setupscript.rst:421
msgid "``mypkg (1.1)``"
-msgstr ""
+msgstr "``mypkg (1.1)``"
#: ../Doc/distutils/setupscript.rst:421
msgid "Provide ``mypkg`` version 1.1, regardless of the distribution version"
msgstr ""
+"Fournit ``mypkg`` en version 1.1, indépendamment de la version de la "
+"distribution."
#: ../Doc/distutils/setupscript.rst:425
msgid ""
@@ -549,6 +779,13 @@ msgid ""
"more version qualifiers. Version qualifiers are given in parentheses after "
"the module or package name."
msgstr ""
+"On peut déclarer d'autres paquets obsolètes dans un paquet en utilisant "
+"l'argument nommé *obsoletes*. La valeur pour celui-ci est similaire à celui "
+"de l'argument nommé *requires* : une liste de chaînes de caractères donnant "
+"les spécifications du module ou du paquet. Chaque spécification est "
+"constituée d'un nom de module ou de paquet qui peut être suivi au choix par "
+"un ou plusieurs qualificateurs de versions. Les qualificateurs de versions "
+"sont donnés entre parenthèses après le nom de module ou de paquet."
#: ../Doc/distutils/setupscript.rst:432
msgid ""
@@ -556,16 +793,23 @@ msgid ""
"the distribution being described. If no qualifiers are given, all versions "
"of the named module or package are understood to be obsoleted."
msgstr ""
+"Les versions identifiées par les qualificateurs sont celles qui sont rendues "
+"obsolètes par la distribution décrite. Si aucun qualificateur n'est donné, "
+"toutes les versions du module ou du paquet nommé sont considérées comme "
+"obsolètes."
#: ../Doc/distutils/setupscript.rst:439
msgid "Installing Scripts"
-msgstr ""
+msgstr "Installation des scripts"
#: ../Doc/distutils/setupscript.rst:441
msgid ""
"So far we have been dealing with pure and non-pure Python modules, which are "
"usually not run by themselves but imported by scripts."
msgstr ""
+"Jusqu'à présent nous avons interagi avec des modules Python purs ou non, qui "
+"ne sont habituellement pas lancés par eux-mêmes mais importés par des "
+"scripts."
#: ../Doc/distutils/setupscript.rst:444
msgid ""
@@ -578,22 +822,35 @@ msgid ""
"`!--executable` (or :option:`!-e`) option will allow the interpreter path to "
"be explicitly overridden."
msgstr ""
+"Les scripts sont des fichiers contenant du code source Python prévus pour "
+"être lancés en ligne de commande. Les scripts n'ont pas besoin des "
+"*Distutils* pour faire quoi que ce soit de très compliqué. La seule "
+"fonctionnalité astucieuse est que la première ligne du script commence par "
+"``#!`` et contient le mot « python », les *Distutils* ajusteront la première "
+"ligne pour faire référence à l'emplacement actuel de l'interpréteur. Par "
+"défaut, elle est remplacée par l'emplacement de l'interpréteur en fonction. "
+"L'option :option:`!--executable` (ou :option:`!-e`) permet de définir "
+"explicitement le chemin vers l'interpréteur."
#: ../Doc/distutils/setupscript.rst:452
msgid ""
"The ``scripts`` option simply is a list of files to be handled in this way. "
"From the PyXML setup script::"
msgstr ""
+"L'option ``scripts`` est simplement une liste de fichiers à utiliser de "
+"cette façon. Dans le script ``setup.py`` de PyML ::"
#: ../Doc/distutils/setupscript.rst:459
msgid ""
"All the scripts will also be added to the ``MANIFEST`` file if no template "
"is provided. See :ref:`manifest`."
msgstr ""
+"Tous les scripts seront aussi ajoutés au fichier ``MANIFEST`` si aucun "
+"modèle n'est fourni. Voir :ref:`manifest`."
#: ../Doc/distutils/setupscript.rst:467
msgid "Installing Package Data"
-msgstr ""
+msgstr "Installation de paquets de données"
#: ../Doc/distutils/setupscript.rst:469
msgid ""
@@ -602,6 +859,11 @@ msgid ""
"text files containing documentation that might be of interest to programmers "
"using the package. These files are called :dfn:`package data`."
msgstr ""
+"Souvent, des fichiers additionnels doivent être installés dans le paquet. "
+"Ces fichiers sont souvent de la donnée qui est intimement liée à "
+"l'implémentation du paquet, ou des fichiers textes contenant de la "
+"documentation intéressant le programmeur utilisant le paquet. Ces fichiers "
+"sont appelés :dfn:`paquets de données `."
#: ../Doc/distutils/setupscript.rst:474
msgid ""
@@ -613,32 +875,47 @@ msgid ""
"appropriate); that is, the files are expected to be part of the package in "
"the source directories. They may contain glob patterns as well."
msgstr ""
+"Les paquets de données peuvent être ajoutés en utilisant l'argument nommé "
+"``package_data`` dans la fonction :func:`setup`. La valeur doit être un "
+"tableau de correspondances entre le nom du paquet et une liste de chemins "
+"relatifs à copier dans le paquet. Les chemins sont interprétés relativement "
+"au répertoire contenant le paquet (l'information du mappage ``package_dir`` "
+"est utilisée le cas échéant) ; ceci étant, il convient que les fichiers "
+"fassent partie du répertoire source du paquet. Ils peuvent également "
+"contenir des motifs `glob`."
#: ../Doc/distutils/setupscript.rst:482
msgid ""
"The path names may contain directory portions; any necessary directories "
"will be created in the installation."
msgstr ""
+"Les chemins d'accès peuvent contenir une hiérarchie de répertoires ; tout "
+"répertoire nécessaire sera créé dans cette installation."
#: ../Doc/distutils/setupscript.rst:485
msgid ""
"For example, if a package should contain a subdirectory with several data "
"files, the files can be arranged like this in the source tree::"
msgstr ""
+"Par exemple, si un paquet doit inclure un sous-répertoire avec plusieurs "
+"fichiers de donnée, les fichiers peuvent être organisés dans l'arborescence "
+"de la façon suivante ::"
#: ../Doc/distutils/setupscript.rst:498
msgid "The corresponding call to :func:`setup` might be::"
-msgstr ""
+msgstr "L'appel correspondant à :func:`setup` peut s'écrire ::"
#: ../Doc/distutils/setupscript.rst:507
msgid ""
"All the files that match ``package_data`` will be added to the ``MANIFEST`` "
"file if no template is provided. See :ref:`manifest`."
msgstr ""
+"Tous les fichiers correspondant à ``package_data`` seront ajoutés au fichier "
+"``MANIFEST`` si aucun modèle n'est fourni. Voir :ref:`manifest`."
#: ../Doc/distutils/setupscript.rst:515
msgid "Installing Additional Files"
-msgstr ""
+msgstr "Installation de fichiers additionnels"
#: ../Doc/distutils/setupscript.rst:517
msgid ""
@@ -646,32 +923,60 @@ msgid ""
"the module distribution: configuration files, message catalogs, data files, "
"anything which doesn't fit in the previous categories."
msgstr ""
+"L'option ``data_files`` peut être utilisée pour définir des fichiers "
+"additionnels requis pour la distribution du module : fichiers de "
+"configuration, catalogues de messages, fichiers de donnée, tout ce qui ne "
+"rentre pas dans les catégories précédentes."
#: ../Doc/distutils/setupscript.rst:521
msgid ""
"``data_files`` specifies a sequence of (*directory*, *files*) pairs in the "
"following way::"
msgstr ""
+"``data_files`` définit une séquence de paires (*répertoires*, *fichiers*) de "
+"la façon suivante ::"
-#: ../Doc/distutils/setupscript.rst:530
+#: ../Doc/distutils/setupscript.rst:529
msgid ""
-"Note that you can specify the directory names where the data files will be "
-"installed, but you cannot rename the data files themselves."
+"Each (*directory*, *files*) pair in the sequence specifies the installation "
+"directory and the files to install there."
msgstr ""
+"Chaque paire (*répertoire*, *fichier*) dans la séquence définit le "
+"répertoire d'installation et les fichiers à y installer."
-#: ../Doc/distutils/setupscript.rst:533
+#: ../Doc/distutils/setupscript.rst:532
msgid ""
-"Each (*directory*, *files*) pair in the sequence specifies the installation "
-"directory and the files to install there. If *directory* is a relative "
-"path, it is interpreted relative to the installation prefix (Python's ``sys."
-"prefix`` for pure-Python packages, ``sys.exec_prefix`` for packages that "
-"contain extension modules). Each file name in *files* is interpreted "
-"relative to the :file:`setup.py` script at the top of the package source "
-"distribution. No directory information from *files* is used to determine "
-"the final location of the installed file; only the name of the file is used."
+"Each file name in *files* is interpreted relative to the :file:`setup.py` "
+"script at the top of the package source distribution. Note that you can "
+"specify the directory where the data files will be installed, but you cannot "
+"rename the data files themselves."
msgstr ""
+"Chaque nom de fichier dans *fichiers* est interprété relativement au script :"
+"file:`setup.py` à la racine du paquet de la distribution source. Notez que "
+"vous pouvez définir un répertoire où les fichiers de donnée seront "
+"installés, mais vous ne pouvez pas renommer les fichiers de donnée eux-mêmes."
-#: ../Doc/distutils/setupscript.rst:542
+#: ../Doc/distutils/setupscript.rst:537
+msgid ""
+"The *directory* should be a relative path. It is interpreted relative to the "
+"installation prefix (Python's ``sys.prefix`` for system installations; "
+"``site.USER_BASE`` for user installations). Distutils allows *directory* to "
+"be an absolute installation path, but this is discouraged since it is "
+"incompatible with the wheel packaging format. No directory information from "
+"*files* is used to determine the final location of the installed file; only "
+"the name of the file is used."
+msgstr ""
+"Le *répertoire* doit être un chemin relatif. Il est interprété relativement "
+"au préfixe d'installation (le ``sys.prefix`` de Python pour les "
+"installations ``système`` ; ``site.USER_BASE`` pour les installations "
+"``utilisateur``). *Distutils* permet à *répertoire* d'être un chemin "
+"d'installation absolu, mais cela est déconseillé dans la mesure où c'est "
+"incompatible avec la mise au format `wheel` du paquet. Aucune information de "
+"répertoire provenant de *fichiers* n'est utilisée pour déterminer "
+"l’emplacement final d'installation du fichier ; seul le nom du fichier est "
+"utilisé."
+
+#: ../Doc/distutils/setupscript.rst:545
msgid ""
"You can specify the ``data_files`` options as a simple sequence of files "
"without specifying a target directory, but this is not recommended, and the :"
@@ -679,280 +984,308 @@ msgid ""
"files directly in the target directory, an empty string should be given as "
"the directory."
msgstr ""
+"Vous pouvez définir les options ``data_files`` comme une simple succession "
+"de fichiers sans définir de répertoire cible, mais cela n'est pas "
+"recommandé, et la commande :command:`install` affichera un message d'alerte "
+"dans ce cas. Pour installer des fichiers de donnée directement dans le "
+"répertoire cible, une chaîne de caractère vide doit être donnée en tant que "
+"répertoire."
-#: ../Doc/distutils/setupscript.rst:548
+#: ../Doc/distutils/setupscript.rst:551
msgid ""
"All the files that match ``data_files`` will be added to the ``MANIFEST`` "
"file if no template is provided. See :ref:`manifest`."
msgstr ""
+"Tous les fichiers correspondant à ``data_files`` seront ajoutés au fichier "
+"``MANIFEST`` si aucun modèle n'est fourni. Voir :ref:`manifest`."
-#: ../Doc/distutils/setupscript.rst:556
+#: ../Doc/distutils/setupscript.rst:559
msgid "Additional meta-data"
-msgstr ""
+msgstr "Métadonnées additionnelles"
-#: ../Doc/distutils/setupscript.rst:558
+#: ../Doc/distutils/setupscript.rst:561
msgid ""
"The setup script may include additional meta-data beyond the name and "
"version. This information includes:"
msgstr ""
+"Le script ``setup.py`` peut inclure des métadonnées additionnelles en plus "
+"du nom et de la version. Cela inclut les informations suivantes :"
-#: ../Doc/distutils/setupscript.rst:562
+#: ../Doc/distutils/setupscript.rst:565
msgid "Meta-Data"
-msgstr ""
+msgstr "Métadonnées"
-#: ../Doc/distutils/setupscript.rst:562
+#: ../Doc/distutils/setupscript.rst:565
msgid "Description"
msgstr "Description"
-#: ../Doc/distutils/setupscript.rst:562
+#: ../Doc/distutils/setupscript.rst:565
msgid "Value"
msgstr "Valeur"
-#: ../Doc/distutils/setupscript.rst:562
+#: ../Doc/distutils/setupscript.rst:565
msgid "Notes"
msgstr "Notes"
-#: ../Doc/distutils/setupscript.rst:564
+#: ../Doc/distutils/setupscript.rst:567
msgid "``name``"
msgstr "``name``"
-#: ../Doc/distutils/setupscript.rst:564
+#: ../Doc/distutils/setupscript.rst:567
msgid "name of the package"
-msgstr ""
+msgstr "nom du paquet"
-#: ../Doc/distutils/setupscript.rst:564 ../Doc/distutils/setupscript.rst:566
-#: ../Doc/distutils/setupscript.rst:568 ../Doc/distutils/setupscript.rst:573
-#: ../Doc/distutils/setupscript.rst:580 ../Doc/distutils/setupscript.rst:596
+#: ../Doc/distutils/setupscript.rst:567 ../Doc/distutils/setupscript.rst:569
+#: ../Doc/distutils/setupscript.rst:571 ../Doc/distutils/setupscript.rst:576
+#: ../Doc/distutils/setupscript.rst:583 ../Doc/distutils/setupscript.rst:599
msgid "short string"
-msgstr ""
+msgstr "courte chaîne de caractères"
-#: ../Doc/distutils/setupscript.rst:564 ../Doc/distutils/setupscript.rst:578
+#: ../Doc/distutils/setupscript.rst:567 ../Doc/distutils/setupscript.rst:581
msgid "\\(1)"
msgstr "\\(1)"
-#: ../Doc/distutils/setupscript.rst:566
+#: ../Doc/distutils/setupscript.rst:569
msgid "``version``"
msgstr "``version``"
-#: ../Doc/distutils/setupscript.rst:566
+#: ../Doc/distutils/setupscript.rst:569
msgid "version of this release"
-msgstr ""
+msgstr "version de la publication"
-#: ../Doc/distutils/setupscript.rst:566
+#: ../Doc/distutils/setupscript.rst:569
msgid "(1)(2)"
msgstr "(1)(2)"
-#: ../Doc/distutils/setupscript.rst:568
+#: ../Doc/distutils/setupscript.rst:571
msgid "``author``"
-msgstr ""
+msgstr "``author``"
-#: ../Doc/distutils/setupscript.rst:568
+#: ../Doc/distutils/setupscript.rst:571
msgid "package author's name"
-msgstr ""
+msgstr "nom de l'auteur du paquet"
-#: ../Doc/distutils/setupscript.rst:568 ../Doc/distutils/setupscript.rst:570
-#: ../Doc/distutils/setupscript.rst:573 ../Doc/distutils/setupscript.rst:575
+#: ../Doc/distutils/setupscript.rst:571 ../Doc/distutils/setupscript.rst:573
+#: ../Doc/distutils/setupscript.rst:576 ../Doc/distutils/setupscript.rst:578
msgid "\\(3)"
msgstr "\\(3)"
-#: ../Doc/distutils/setupscript.rst:570
+#: ../Doc/distutils/setupscript.rst:573
msgid "``author_email``"
-msgstr ""
+msgstr "``author_email``"
-#: ../Doc/distutils/setupscript.rst:570
+#: ../Doc/distutils/setupscript.rst:573
msgid "email address of the package author"
-msgstr ""
+msgstr "adresse courriel de l'auteur du paquet"
-#: ../Doc/distutils/setupscript.rst:570 ../Doc/distutils/setupscript.rst:575
+#: ../Doc/distutils/setupscript.rst:573 ../Doc/distutils/setupscript.rst:578
msgid "email address"
-msgstr ""
+msgstr "adresse de courriel"
-#: ../Doc/distutils/setupscript.rst:573
+#: ../Doc/distutils/setupscript.rst:576
msgid "``maintainer``"
-msgstr ""
+msgstr "``maintainer``"
-#: ../Doc/distutils/setupscript.rst:573
+#: ../Doc/distutils/setupscript.rst:576
msgid "package maintainer's name"
-msgstr ""
+msgstr "nom du mainteneur du paquet"
-#: ../Doc/distutils/setupscript.rst:575
+#: ../Doc/distutils/setupscript.rst:578
msgid "``maintainer_email``"
-msgstr ""
+msgstr "``maintainer_email``"
-#: ../Doc/distutils/setupscript.rst:575
+#: ../Doc/distutils/setupscript.rst:578
msgid "email address of the package maintainer"
-msgstr ""
+msgstr "adresse du courriel du mainteneur du paquet"
-#: ../Doc/distutils/setupscript.rst:578
+#: ../Doc/distutils/setupscript.rst:581
msgid "``url``"
msgstr "``url``"
-#: ../Doc/distutils/setupscript.rst:578
+#: ../Doc/distutils/setupscript.rst:581
msgid "home page for the package"
-msgstr ""
+msgstr "page d’accueil du paquet"
-#: ../Doc/distutils/setupscript.rst:578 ../Doc/distutils/setupscript.rst:587
+#: ../Doc/distutils/setupscript.rst:581 ../Doc/distutils/setupscript.rst:590
msgid "URL"
-msgstr ""
+msgstr "URL"
-#: ../Doc/distutils/setupscript.rst:580
+#: ../Doc/distutils/setupscript.rst:583
msgid "``description``"
msgstr "``description``"
-#: ../Doc/distutils/setupscript.rst:580
+#: ../Doc/distutils/setupscript.rst:583
msgid "short, summary description of the package"
-msgstr ""
+msgstr "bref résumé décrivant le paquet"
-#: ../Doc/distutils/setupscript.rst:584
+#: ../Doc/distutils/setupscript.rst:587
msgid "``long_description``"
msgstr "``long_description``"
-#: ../Doc/distutils/setupscript.rst:584
+#: ../Doc/distutils/setupscript.rst:587
msgid "longer description of the package"
-msgstr ""
+msgstr "description plus complète du paquet"
-#: ../Doc/distutils/setupscript.rst:584
+#: ../Doc/distutils/setupscript.rst:587
msgid "long string"
-msgstr ""
+msgstr "longue chaîne de caractères"
-#: ../Doc/distutils/setupscript.rst:584
+#: ../Doc/distutils/setupscript.rst:587
msgid "\\(4)"
msgstr "\\(4)"
-#: ../Doc/distutils/setupscript.rst:587
+#: ../Doc/distutils/setupscript.rst:590
msgid "``download_url``"
-msgstr ""
+msgstr "``download_url``"
-#: ../Doc/distutils/setupscript.rst:587
+#: ../Doc/distutils/setupscript.rst:590
msgid "location where the package may be downloaded"
-msgstr ""
+msgstr "endroit où le paquet peut être téléchargé"
-#: ../Doc/distutils/setupscript.rst:590
+#: ../Doc/distutils/setupscript.rst:593
msgid "``classifiers``"
-msgstr ""
+msgstr "``classifiers``"
-#: ../Doc/distutils/setupscript.rst:590
+#: ../Doc/distutils/setupscript.rst:593
msgid "a list of classifiers"
-msgstr ""
+msgstr "une liste de classificateurs"
-#: ../Doc/distutils/setupscript.rst:590 ../Doc/distutils/setupscript.rst:592
-#: ../Doc/distutils/setupscript.rst:594
+#: ../Doc/distutils/setupscript.rst:593 ../Doc/distutils/setupscript.rst:595
+#: ../Doc/distutils/setupscript.rst:597
msgid "list of strings"
-msgstr ""
+msgstr "liste de chaînes de caractères"
-#: ../Doc/distutils/setupscript.rst:590
+#: ../Doc/distutils/setupscript.rst:593
msgid "(6)(7)"
msgstr "(6)(7)"
-#: ../Doc/distutils/setupscript.rst:592
+#: ../Doc/distutils/setupscript.rst:595
msgid "``platforms``"
-msgstr ""
+msgstr "``platforms``"
-#: ../Doc/distutils/setupscript.rst:592
+#: ../Doc/distutils/setupscript.rst:595
msgid "a list of platforms"
-msgstr ""
+msgstr "une liste de plateformes"
-#: ../Doc/distutils/setupscript.rst:592 ../Doc/distutils/setupscript.rst:594
+#: ../Doc/distutils/setupscript.rst:595 ../Doc/distutils/setupscript.rst:597
msgid "(6)(8)"
-msgstr ""
+msgstr "(6)(8)"
-#: ../Doc/distutils/setupscript.rst:594
+#: ../Doc/distutils/setupscript.rst:597
msgid "``keywords``"
-msgstr ""
+msgstr "``keywords``"
-#: ../Doc/distutils/setupscript.rst:594
+#: ../Doc/distutils/setupscript.rst:597
msgid "a list of keywords"
-msgstr ""
+msgstr "une liste de mots-clés"
-#: ../Doc/distutils/setupscript.rst:596
+#: ../Doc/distutils/setupscript.rst:599
msgid "``license``"
msgstr "``license``"
-#: ../Doc/distutils/setupscript.rst:596
+#: ../Doc/distutils/setupscript.rst:599
msgid "license for the package"
-msgstr ""
+msgstr "licence du paquet"
-#: ../Doc/distutils/setupscript.rst:596
+#: ../Doc/distutils/setupscript.rst:599
msgid "\\(5)"
msgstr "\\(5)"
-#: ../Doc/distutils/setupscript.rst:599
+#: ../Doc/distutils/setupscript.rst:602
msgid "Notes:"
msgstr "Notes :"
-#: ../Doc/distutils/setupscript.rst:602
+#: ../Doc/distutils/setupscript.rst:605
msgid "These fields are required."
-msgstr ""
+msgstr "Ces champs sont requis."
-#: ../Doc/distutils/setupscript.rst:605
+#: ../Doc/distutils/setupscript.rst:608
msgid ""
"It is recommended that versions take the form *major.minor[.patch[.sub]]*."
msgstr ""
+"Il est recommandé que les versions prennent la forme *majeure.mineure[."
+"correctif[.sous-correctif]]*."
-#: ../Doc/distutils/setupscript.rst:608
+#: ../Doc/distutils/setupscript.rst:611
msgid ""
"Either the author or the maintainer must be identified. If maintainer is "
"provided, distutils lists it as the author in :file:`PKG-INFO`."
msgstr ""
+"L'auteur ou un mainteneur doit être identifié. Si un mainteneur est fourni, "
+"*distutils* l'indique en tant qu'auteur dans le fichier :file:`PKG-INFO`."
-#: ../Doc/distutils/setupscript.rst:612
+#: ../Doc/distutils/setupscript.rst:615
msgid ""
-"The ``long_description`` field is used by PyPI when you are :ref:"
-"`registering ` a package, to :ref:`build its home page "
-"`."
+"The ``long_description`` field is used by PyPI when you publish a package, "
+"to build its project page."
msgstr ""
+"Le champ ``long_description`` est utilisé par PyPI quand vous publiez un "
+"paquet pour construire sa page de projet."
-#: ../Doc/distutils/setupscript.rst:617
+#: ../Doc/distutils/setupscript.rst:619
msgid ""
"The ``license`` field is a text indicating the license covering the package "
"where the license is not a selection from the \"License\" Trove classifiers. "
"See the ``Classifier`` field. Notice that there's a ``licence`` distribution "
"option which is deprecated but still acts as an alias for ``license``."
msgstr ""
+"Le champ ``license`` est un texte indiquant la licence du paquet quand la "
+"licence n'est pas indiquée dans les classificateurs de type « Licence » "
+"Trove. Voir le champ ``Classifier``. À noter qu'il y a une option de "
+"distribution ``licence`` qui est obsolète mais agit toujours comme un alias "
+"pour ``license``."
-#: ../Doc/distutils/setupscript.rst:624
+#: ../Doc/distutils/setupscript.rst:626
msgid "This field must be a list."
-msgstr ""
+msgstr "Ce champ doit être une liste."
-#: ../Doc/distutils/setupscript.rst:627
+#: ../Doc/distutils/setupscript.rst:629
msgid ""
"The valid classifiers are listed on `PyPI `_."
msgstr ""
+"Les classificateurs valides sont listés sur `PyPI `_."
-#: ../Doc/distutils/setupscript.rst:631
+#: ../Doc/distutils/setupscript.rst:633
msgid ""
"To preserve backward compatibility, this field also accepts a string. If you "
"pass a comma-separated string ``'foo, bar'``, it will be converted to "
"``['foo', 'bar']``, Otherwise, it will be converted to a list of one string."
msgstr ""
+"Pour préserver la rétrocompatibilité, ce champ accepte aussi une chaîne de "
+"caractères. Si vous passez une chaine de caractères séparée par des virgules "
+"``'truc, machin'``, elle sera convertie en ``['truc', 'machin']``, "
+"Autrement, elle sera convertie en une liste d'une chaîne de caractères."
-#: ../Doc/distutils/setupscript.rst:637
+#: ../Doc/distutils/setupscript.rst:639
msgid "'short string'"
msgstr "'chaîne courte'"
-#: ../Doc/distutils/setupscript.rst:637
+#: ../Doc/distutils/setupscript.rst:639
msgid "A single line of text, not more than 200 characters."
-msgstr ""
+msgstr "Une simple ligne de texte ne dépassant par 200 caractères."
-#: ../Doc/distutils/setupscript.rst:641
+#: ../Doc/distutils/setupscript.rst:643
msgid "'long string'"
msgstr "'chaîne longue'"
-#: ../Doc/distutils/setupscript.rst:640
+#: ../Doc/distutils/setupscript.rst:642
msgid ""
"Multiple lines of plain text in reStructuredText format (see http://docutils."
"sourceforge.net/)."
msgstr ""
+"De multiples lignes de texte au format ReStructuredText (voir http://"
+"docutils.sourceforge.net/)."
-#: ../Doc/distutils/setupscript.rst:644
+#: ../Doc/distutils/setupscript.rst:646
msgid "'list of strings'"
msgstr "'liste de chaînes'"
-#: ../Doc/distutils/setupscript.rst:644
+#: ../Doc/distutils/setupscript.rst:646
msgid "See below."
-msgstr ""
+msgstr "Voir ci-dessous."
-#: ../Doc/distutils/setupscript.rst:646
+#: ../Doc/distutils/setupscript.rst:648
msgid ""
"Encoding the version information is an art in itself. Python packages "
"generally adhere to the version format *major.minor[.patch][sub]*. The major "
@@ -966,44 +1299,61 @@ msgid ""
"which only fix bugs) and \"pr1,pr2,...,prN\" (for final pre-release release "
"testing). Some examples:"
msgstr ""
-
-#: ../Doc/distutils/setupscript.rst:658
+"Encoder les informations de version est un art en soi. Les paquets Python "
+"adhèrent généralement au format de version *majeure.mineure[.correctif]"
+"[sous]*. Le numéro majeur 0 est utilisé pour les publications "
+"expérimentales, initiales d'un logiciel. Il est incrémenté pour les "
+"publications qui représentent des étapes majeures pour le paquet. Le nombre "
+"mineur est incrémenté quand d'importantes nouvelles fonctionnalités sont "
+"ajoutées au paquet. Le numéro de correctif s'incrémente lors de la "
+"publication d'une correction de bogue est faite. Celles-ci sont \"*a1,a2,...,"
+"aN*\" (pour les publications alpha, où les fonctionnalités et l'API peut "
+"changer), \"*b1,b2,...,bN*\" (pour les publications *beta*, qui corrigent "
+"seulement les bogues) et \"*pr1,pr2,...,prN*\" (pour les ultimes pré-"
+"publication et publications de test). Quelques exemples :"
+
+#: ../Doc/distutils/setupscript.rst:660
msgid "0.1.0"
-msgstr ""
+msgstr "0.1.0"
-#: ../Doc/distutils/setupscript.rst:658
+#: ../Doc/distutils/setupscript.rst:660
msgid "the first, experimental release of a package"
-msgstr ""
+msgstr "la première, publication expérimentale du paquet"
-#: ../Doc/distutils/setupscript.rst:661
+#: ../Doc/distutils/setupscript.rst:663
msgid "1.0.1a2"
-msgstr ""
+msgstr "1.0.1a2"
-#: ../Doc/distutils/setupscript.rst:661
+#: ../Doc/distutils/setupscript.rst:663
msgid "the second alpha release of the first patch version of 1.0"
-msgstr ""
+msgstr "la seconde publication alpha du premier correctif de la version 1.0"
-#: ../Doc/distutils/setupscript.rst:663
+#: ../Doc/distutils/setupscript.rst:665
msgid "``classifiers`` must be specified in a list::"
-msgstr ""
+msgstr "les ``classifiers`` doivent être définis dans une liste ::"
-#: ../Doc/distutils/setupscript.rst:684
+#: ../Doc/distutils/setupscript.rst:686
msgid ""
":class:`~distutils.core.setup` now warns when ``classifiers``, ``keywords`` "
"or ``platforms`` fields are not specified as a list or a string."
msgstr ""
+":class:`~distutils.core.setup` alerte maintenant lorsque les champs "
+"``classifiers``, ``keywords`` ou ``platforms`` ne sont pas définis en tant "
+"que liste ou chaîne de caractères."
-#: ../Doc/distutils/setupscript.rst:691
+#: ../Doc/distutils/setupscript.rst:693
msgid "Debugging the setup script"
-msgstr ""
+msgstr "Débogage du script ``setup.py``"
-#: ../Doc/distutils/setupscript.rst:693
+#: ../Doc/distutils/setupscript.rst:695
msgid ""
"Sometimes things go wrong, and the setup script doesn't do what the "
"developer wants."
msgstr ""
+"Parfois les choses tournent mal et le script ``setup.py`` ne fait pas ce que "
+"le développeur veut."
-#: ../Doc/distutils/setupscript.rst:696
+#: ../Doc/distutils/setupscript.rst:698
msgid ""
"Distutils catches any exceptions when running the setup script, and print a "
"simple error message before the script is terminated. The motivation for "
@@ -1013,8 +1363,16 @@ msgid ""
"or the Python installation is broken because they don't read all the way "
"down to the bottom and see that it's a permission problem."
msgstr ""
+"*Distutils* intercepte toute exception lors de l'exécution du script ``setup."
+"py`` et affiche un message d'erreur simple avant d'arrêter le script. L'idée "
+"est de ne pas embrouiller les administrateurs qui ne savent pas grand-chose "
+"de Python et qui essayent d'installer un paquet. S'ils reçoivent une grosse "
+"et longue trace d'appels provenant des entrailles de *Distutils*, ils "
+"peuvent penser que le paquet ou que l'installation de Python est corrompue "
+"car, ils ne lisent pas tout jusqu'en bas alors que c'est un problème de "
+"droits."
-#: ../Doc/distutils/setupscript.rst:704
+#: ../Doc/distutils/setupscript.rst:706
msgid ""
"On the other hand, this doesn't help the developer to find the cause of the "
"failure. For this purpose, the :envvar:`DISTUTILS_DEBUG` environment "
@@ -1023,6 +1381,13 @@ msgid ""
"traceback when an exception occurs, and print the whole command line when an "
"external program (like a C compiler) fails."
msgstr ""
+"D'un autre côté, cela n'aide pas le développeur à trouver la cause du "
+"problème. À cette fin, la variable d'environnement :envvar:`DISTUTILS_DEBUG` "
+"peut être assignée à n'importe quoi sauf une chaîne de caractères vide, et "
+"*distutils* affichera maintenant une information détaillée à propos de ce "
+"qu'il fait, déversera la trace d'appels complète lors d'une exception, et "
+"affichera la ligne de commande complète quand un programme externe (comme un "
+"compilateur C) échoue."
#~ msgid "\\(6)"
#~ msgstr "\\(6)"
diff --git a/distutils/uploading.po b/distutils/uploading.po
index 794d6bca4..575c2bcc0 100644
--- a/distutils/uploading.po
+++ b/distutils/uploading.po
@@ -5,14 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: 2017-10-18 09:24+0200\n"
-"Last-Translator: Julien Palard \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-08-21 12:22+0200\n"
+"Last-Translator: Zepmanbc \n"
"Language-Team: FRENCH \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"
#: ../Doc/distutils/uploading.rst:5
msgid "Uploading Packages to the Package Index"
@@ -20,6 +21,13 @@ msgstr "Téléverser des paquets dans *Python Package Index*"
#: ../Doc/distutils/uploading.rst:7
msgid ""
-"The contents of this page have moved to the section :ref:`package-index`."
+"References to up to date PyPI documentation can be found at :ref:`publishing-"
+"python-packages`."
msgstr ""
-"Le contenu de cette page à déménagé dans la section :ref:`package-index`."
+"Des références actualisées à la documentation de PyPI sont disponibles sur :"
+"ref:`publishing-python-packages`."
+
+#~ msgid ""
+#~ "The contents of this page have moved to the section :ref:`package-index`."
+#~ msgstr ""
+#~ "Le contenu de cette page à déménagé dans la section :ref:`package-index`."
diff --git a/extending/building.po b/extending/building.po
index 7d0fcab43..0841ae991 100644
--- a/extending/building.po
+++ b/extending/building.po
@@ -67,7 +67,7 @@ msgstr ""
"Dans ce cas, le nom de la fonction d'initialisation est "
"``PyInitU_``, où ``modulename`` est encodé avec l'encodage "
"*punyencode* de Python, dont les tirets sont remplacés par des tirets-bas. "
-"En Python ça donne : ::"
+"En Python ça donne ::"
#: ../Doc/extending/building.rst:39
msgid ""
@@ -109,7 +109,7 @@ msgstr ""
#: ../Doc/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 ::"
#: ../Doc/extending/building.rst:77
msgid ""
@@ -212,14 +212,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 ::"
#: ../Doc/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 ::"
#: ../Doc/extending/building.rst:158
msgid ""
diff --git a/extending/embedding.po b/extending/embedding.po
index 11720639e..144691ee1 100644
--- a/extending/embedding.po
+++ b/extending/embedding.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-27 19:40+0200\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: 2018-10-04 16:18+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -114,7 +114,7 @@ msgstr ""
"sans avoir à interagir avec directement. C'est utile, par exemple, pour "
"effectuer une opération sur un fichier. ::"
-#: ../Doc/extending/embedding.rst:77
+#: ../Doc/extending/embedding.rst:78
msgid ""
"The :c:func:`Py_SetProgramName` function should be called before :c:func:"
"`Py_Initialize` to inform the interpreter about paths to Python run-time "
@@ -140,11 +140,11 @@ msgstr ""
"`PyRun_SimplFile`, qui vous économise le travail d'allouer de la mémoire et "
"de charger le contenu du fichier."
-#: ../Doc/extending/embedding.rst:92
+#: ../Doc/extending/embedding.rst:93
msgid "Beyond Very High Level Embedding: An overview"
msgstr "Au delà de l'intégration de haut niveau: survol"
-#: ../Doc/extending/embedding.rst:94
+#: ../Doc/extending/embedding.rst:95
msgid ""
"The high level interface gives you the ability to execute arbitrary pieces "
"of Python code from your application, but exchanging data values is quite "
@@ -158,7 +158,7 @@ msgstr ""
"appels de niveau plus bas. Il vous en coûtera plus de lignes de C à écrire, "
"mais vous pourrez presque tout faire."
-#: ../Doc/extending/embedding.rst:99
+#: ../Doc/extending/embedding.rst:100
msgid ""
"It should be noted that extending Python and embedding Python is quite the "
"same activity, despite the different intent. Most topics discussed in the "
@@ -170,27 +170,27 @@ msgstr ""
"dans les chapitres précédents sont toujours valides. Pour le prouver, "
"regardez ce qu'un code d'extension de Python vers C fait réellement :"
-#: ../Doc/extending/embedding.rst:104
+#: ../Doc/extending/embedding.rst:105
msgid "Convert data values from Python to C,"
msgstr "Convertir des valeurs de Python vers le C,"
-#: ../Doc/extending/embedding.rst:106
+#: ../Doc/extending/embedding.rst:107
msgid "Perform a function call to a C routine using the converted values, and"
msgstr "Appeler une fonction C en utilisant les valeurs converties, et"
-#: ../Doc/extending/embedding.rst:108
+#: ../Doc/extending/embedding.rst:109
msgid "Convert the data values from the call from C to Python."
msgstr "Convertir les résultats de l'appel à la fonction C pour Python."
-#: ../Doc/extending/embedding.rst:110
+#: ../Doc/extending/embedding.rst:111
msgid "When embedding Python, the interface code does:"
msgstr "Lors de l'intégration de Python, le code de l'interface fait :"
-#: ../Doc/extending/embedding.rst:112
+#: ../Doc/extending/embedding.rst:113
msgid "Convert data values from C to Python,"
msgstr "Convertir les valeurs depuis le C vers Python,"
-#: ../Doc/extending/embedding.rst:114
+#: ../Doc/extending/embedding.rst:115
msgid ""
"Perform a function call to a Python interface routine using the converted "
"values, and"
@@ -198,11 +198,11 @@ msgstr ""
"Effectuer un appel de fonction de l'interface Python en utilisant les "
"valeurs converties, et"
-#: ../Doc/extending/embedding.rst:117
+#: ../Doc/extending/embedding.rst:118
msgid "Convert the data values from the call from Python to C."
msgstr "Convertir les valeurs de l'appel Python pour le C."
-#: ../Doc/extending/embedding.rst:119
+#: ../Doc/extending/embedding.rst:120
msgid ""
"As you can see, the data conversion steps are simply swapped to accommodate "
"the different direction of the cross-language transfer. The only difference "
@@ -215,7 +215,7 @@ msgstr ""
"données. Lors de l'extension, vous appelez une fonction C, lors de "
"l'intégration vous appelez une fonction Python."
-#: ../Doc/extending/embedding.rst:124
+#: ../Doc/extending/embedding.rst:125
msgid ""
"This chapter will not discuss how to convert data from Python to C and vice "
"versa. Also, proper use of references and dealing with errors is assumed to "
@@ -228,11 +228,11 @@ msgstr ""
"l'extension de l'interpréteur, vous pouvez vous référer aux chapitres "
"précédents."
-#: ../Doc/extending/embedding.rst:133
+#: ../Doc/extending/embedding.rst:134
msgid "Pure Embedding"
msgstr "Intégration pure"
-#: ../Doc/extending/embedding.rst:135
+#: ../Doc/extending/embedding.rst:136
msgid ""
"The first program aims to execute a function in a Python script. Like in the "
"section about the very high level interface, the Python interpreter does not "
@@ -244,11 +244,11 @@ msgstr ""
"l'interpréteur n'interagit pas directement avec l'application (mais le fera "
"dans la section suivante)."
-#: ../Doc/extending/embedding.rst:140
+#: ../Doc/extending/embedding.rst:141
msgid "The code to run a function defined in a Python script is:"
msgstr "Le code pour appeler une fonction définie dans un script Python est :"
-#: ../Doc/extending/embedding.rst:145
+#: ../Doc/extending/embedding.rst:146
msgid ""
"This code loads a Python script using ``argv[1]``, and calls the function "
"named in ``argv[2]``. Its integer arguments are the other values of the "
@@ -262,11 +262,11 @@ msgstr ""
"programme (appelons l'exécutable :program:`call`), et l'appelez pour "
"exécuter un script Python, tel que :"
-#: ../Doc/extending/embedding.rst:160
+#: ../Doc/extending/embedding.rst:161
msgid "then the result should be:"
msgstr "alors, le résultat sera:"
-#: ../Doc/extending/embedding.rst:168
+#: ../Doc/extending/embedding.rst:169
msgid ""
"Although the program is quite large for its functionality, most of the code "
"is for data conversion between Python and C, and for error reporting. The "
@@ -275,9 +275,9 @@ 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 ::"
-#: ../Doc/extending/embedding.rst:177
+#: ../Doc/extending/embedding.rst:178
msgid ""
"After initializing the interpreter, the script is loaded using :c:func:"
"`PyImport_Import`. This routine needs a Python string as its argument, "
@@ -289,7 +289,7 @@ msgstr ""
"argument, elle même construite en utilisant la fonction de conversion :c:"
"func:`PyUnicode_FromString`."
-#: ../Doc/extending/embedding.rst:190
+#: ../Doc/extending/embedding.rst:191
msgid ""
"Once the script is loaded, the name we're looking for is retrieved using :c:"
"func:`PyObject_GetAttrString`. If the name exists, and the object returned "
@@ -301,9 +301,9 @@ msgstr ""
"`PyObject_GetAttrString`. Si le nom existe, et que l'objet récupéré peut "
"être appelé, vous pouvez présumer sans risque que c'est une fonction. Le "
"programme continue, classiquement, par la construction de n-uplet "
-"d'arguments. L'appel à la fonction Python est alors effectué avec : ::"
+"d'arguments. L'appel à la fonction Python est alors effectué avec ::"
-#: ../Doc/extending/embedding.rst:198
+#: ../Doc/extending/embedding.rst:199
msgid ""
"Upon return of the function, ``pValue`` is either *NULL* or it contains a "
"reference to the return value of the function. Be sure to release the "
@@ -313,11 +313,11 @@ msgstr ""
"référence sur la valeur donnée par la fonction. Assurez-vous de libérer la "
"référence après avoir utilisé la valeur."
-#: ../Doc/extending/embedding.rst:206
+#: ../Doc/extending/embedding.rst:207
msgid "Extending Embedded Python"
msgstr "Étendre un Python intégré"
-#: ../Doc/extending/embedding.rst:208
+#: ../Doc/extending/embedding.rst:209
msgid ""
"Until now, the embedded Python interpreter had no access to functionality "
"from the application itself. The Python API allows this by extending the "
@@ -336,9 +336,9 @@ msgstr ""
"démarre l'interpréteur Python, au lieu de cela, voyez l'application comme un "
"ensemble de fonctions, et rédigez un peu de code pour exposer ces fonctions "
"à Python, tout comme vous écririez une extension Python normale. Par "
-"exemple : ::"
+"exemple ::"
-#: ../Doc/extending/embedding.rst:245
+#: ../Doc/extending/embedding.rst:246
msgid ""
"Insert the above code just above the :c:func:`main` function. Also, insert "
"the following two statements before the call to :c:func:`Py_Initialize`::"
@@ -347,7 +347,7 @@ msgstr ""
"aussi les deux instructions suivantes avant l'appel à :c:func:"
"`Py_Initialize` ::"
-#: ../Doc/extending/embedding.rst:251
+#: ../Doc/extending/embedding.rst:252
msgid ""
"These two lines initialize the ``numargs`` variable, and make the :func:`emb."
"numargs` function accessible to the embedded Python interpreter. With these "
@@ -357,7 +357,7 @@ msgstr ""
"func:`emb.numargs` accessible à l'interpréteur intégré. Avec ces ajouts, le "
"script Python petit maintenant faire des choses comme"
-#: ../Doc/extending/embedding.rst:260
+#: ../Doc/extending/embedding.rst:261
msgid ""
"In a real application, the methods will expose an API of the application to "
"Python."
@@ -365,11 +365,11 @@ msgstr ""
"Dans un cas réel, les méthodes exposeraient une API de l'application a "
"Python."
-#: ../Doc/extending/embedding.rst:270
+#: ../Doc/extending/embedding.rst:271
msgid "Embedding Python in C++"
msgstr "Intégrer Python dans du C++"
-#: ../Doc/extending/embedding.rst:272
+#: ../Doc/extending/embedding.rst:273
msgid ""
"It is also possible to embed Python in a C++ program; precisely how this is "
"done will depend on the details of the C++ system used; in general you will "
@@ -383,11 +383,11 @@ msgstr ""
"compilateur C++ pour compiler et lier votre programme. Il n'y a pas besoin "
"de recompiler Python en utilisant C++."
-#: ../Doc/extending/embedding.rst:281
+#: ../Doc/extending/embedding.rst:282
msgid "Compiling and Linking under Unix-like systems"
msgstr "Compiler et Lier en environnement Unix ou similaire"
-#: ../Doc/extending/embedding.rst:283
+#: ../Doc/extending/embedding.rst:284
msgid ""
"It is not necessarily trivial to find the right flags to pass to your "
"compiler (and linker) in order to embed the Python interpreter into your "
@@ -399,7 +399,7 @@ msgstr ""
"Python ayant besoin de charger des extensions sous forme de bibliothèques "
"dynamiques en C (des :file:`.so`) pour se lier avec."
-#: ../Doc/extending/embedding.rst:289
+#: ../Doc/extending/embedding.rst:290
msgid ""
"To find out the required compiler and linker flags, you can execute the :"
"file:`python{X.Y}-config` script which is generated as part of the "
@@ -412,7 +412,7 @@ msgstr ""
"(un script :file:`python3-config` peut aussi être disponible). Ce script a "
"quelques options, celles-ci vous seront utiles :"
-#: ../Doc/extending/embedding.rst:295
+#: ../Doc/extending/embedding.rst:296
msgid ""
"``pythonX.Y-config --cflags`` will give you the recommended flags when "
"compiling:"
@@ -420,7 +420,7 @@ msgstr ""
"``pythonX.Y-config --cflags`` vous donnera les options recommandées pour "
"compiler:"
-#: ../Doc/extending/embedding.rst:303
+#: ../Doc/extending/embedding.rst:304
msgid ""
"``pythonX.Y-config --ldflags`` will give you the recommended flags when "
"linking:"
@@ -428,7 +428,7 @@ msgstr ""
"``pythonX.Y-config --ldflags`` vous donnera les drapeaux recommandés lors de "
"l'édition de lien:"
-#: ../Doc/extending/embedding.rst:312
+#: ../Doc/extending/embedding.rst:313
msgid ""
"To avoid confusion between several Python installations (and especially "
"between the system Python and your own compiled Python), it is recommended "
@@ -440,7 +440,7 @@ msgstr ""
"recommandé d'utiliser un chemin absolu vers :file:`python{X.Y}-config`, "
"comme dans l'exemple précédent."
-#: ../Doc/extending/embedding.rst:317
+#: ../Doc/extending/embedding.rst:318
msgid ""
"If this procedure doesn't work for you (it is not guaranteed to work for all "
"Unix-like platforms; however, we welcome :ref:`bug reports \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -109,10 +109,10 @@ msgstr ""
"``spammify``, le nom du module peut être juste :file:`spammify.c`.)"
#: ../Doc/extending/extending.rst:58
-msgid "The first line of our file can be::"
-msgstr "La première ligne de notre fichier peut être : ::"
+msgid "The first two lines of our file can be::"
+msgstr "Les deux premières lignes de notre fichier peuvent être ::"
-#: ../Doc/extending/extending.rst:62
+#: ../Doc/extending/extending.rst:63
msgid ""
"which pulls in the Python API (you can add a comment describing the purpose "
"of the module and a copyright notice if you like)."
@@ -120,7 +120,7 @@ msgstr ""
"qui récupère l'API Python (vous pouvez ajouter un commentaire décrivant le "
"but du module et un avis de droit d'auteur si vous le souhaitez)."
-#: ../Doc/extending/extending.rst:67
+#: ../Doc/extending/extending.rst:68
msgid ""
"Since Python may define some pre-processor definitions which affect the "
"standard headers on some systems, you *must* include :file:`Python.h` before "
@@ -130,7 +130,16 @@ msgstr ""
"les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python."
"h` avant les en-têtes standards."
-#: ../Doc/extending/extending.rst:71
+#: ../Doc/extending/extending.rst:72
+msgid ""
+"It is recommended to always define ``PY_SSIZE_T_CLEAN`` before including "
+"``Python.h``. See :ref:`parsetuple` for a description of this macro."
+msgstr ""
+"Il est recommandé de toujours définir ``PY_SSIZE_T_CLEAN`` avant d'inclure "
+"``Python.h``. Lisez :ref:`parsetuple` pour avoir une description de cette "
+"macro."
+
+#: ../Doc/extending/extending.rst:75
msgid ""
"All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` "
"or ``PY``, except those defined in standard header files. For convenience, "
@@ -148,7 +157,7 @@ msgstr ""
"sur votre système, il déclare les fonctions :c:func:`malloc`, :c:func:`free` "
"et :c:func:`realloc` directement."
-#: ../Doc/extending/extending.rst:79
+#: ../Doc/extending/extending.rst:83
msgid ""
"The next thing we add to our module file is the C function that will be "
"called when the Python expression ``spam.system(string)`` is evaluated "
@@ -159,7 +168,7 @@ msgstr ""
"system(chaîne)`` sera évaluée (nous verrons bientôt comment elle finit par "
"être appelée) ::"
-#: ../Doc/extending/extending.rst:95
+#: ../Doc/extending/extending.rst:99
msgid ""
"There is a straightforward translation from the argument list in Python (for "
"example, the single expression ``\"ls -l\"``) to the arguments passed to the "
@@ -171,7 +180,7 @@ msgstr ""
"La fonction C a toujours deux arguments, appelés par convention *self* et "
"*args*."
-#: ../Doc/extending/extending.rst:100
+#: ../Doc/extending/extending.rst:104
msgid ""
"The *self* argument points to the module object for module-level functions; "
"for a method it would point to the object instance."
@@ -179,7 +188,7 @@ msgstr ""
"Pour les fonctions au niveau du module, l'argument *self* pointe sur l'objet "
"module, pour une méthode, il pointe sur l'instance de l'objet."
-#: ../Doc/extending/extending.rst:103
+#: ../Doc/extending/extending.rst:107
msgid ""
"The *args* argument will be a pointer to a Python tuple object containing "
"the arguments. Each item of the tuple corresponds to an argument in the "
@@ -200,7 +209,7 @@ msgstr ""
"ainsi que les types de variables C dans lequel stocker les valeurs "
"converties. Nous en verront plus, plus tard."
-#: ../Doc/extending/extending.rst:112
+#: ../Doc/extending/extending.rst:116
msgid ""
":c:func:`PyArg_ParseTuple` returns true (nonzero) if all arguments have the "
"right type and its components have been stored in the variables whose "
@@ -216,11 +225,11 @@ msgstr ""
"exception appropriée de sorte que la fonction d'appel puisse renvoyer *NULL* "
"immédiatement (comme nous l'avons vu dans l'exemple)."
-#: ../Doc/extending/extending.rst:122
+#: ../Doc/extending/extending.rst:126
msgid "Intermezzo: Errors and Exceptions"
msgstr "Intermezzo: Les erreurs et exceptions"
-#: ../Doc/extending/extending.rst:124
+#: ../Doc/extending/extending.rst:128
msgid ""
"An important convention throughout the Python interpreter is the following: "
"when a function fails, it should set an exception condition and return an "
@@ -247,7 +256,7 @@ msgstr ""
"Reference*). Il est important de les connaître pour comprendre comment les "
"erreurs sont propagées."
-#: ../Doc/extending/extending.rst:135
+#: ../Doc/extending/extending.rst:139
msgid ""
"The Python API defines a number of functions to set various types of "
"exceptions."
@@ -255,7 +264,7 @@ msgstr ""
"L'API Python définit un certain nombre de fonctions pour créer différents "
"types d'exceptions."
-#: ../Doc/extending/extending.rst:137
+#: ../Doc/extending/extending.rst:141
msgid ""
"The most common one is :c:func:`PyErr_SetString`. Its arguments are an "
"exception object and a C string. The exception object is usually a "
@@ -269,7 +278,7 @@ msgstr ""
"cause de l'erreur et est convertie en une chaîne Python puis stockée en tant "
"que \"valeur associée\" à l'exception."
-#: ../Doc/extending/extending.rst:143
+#: ../Doc/extending/extending.rst:147
msgid ""
"Another useful function is :c:func:`PyErr_SetFromErrno`, which only takes an "
"exception argument and constructs the associated value by inspection of the "
@@ -284,7 +293,7 @@ msgstr ""
"arguments: l'exception et sa valeur associée. Vous ne devez pas appliquer :c:"
"func:`Py_INCREF` aux objets transmis à ces fonctions."
-#: ../Doc/extending/extending.rst:150
+#: ../Doc/extending/extending.rst:154
msgid ""
"You can test non-destructively whether an exception has been set with :c:"
"func:`PyErr_Occurred`. This returns the current exception object, or *NULL* "
@@ -299,7 +308,7 @@ msgstr ""
"survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
"de le déterminer à partir de la valeur de retour."
-#: ../Doc/extending/extending.rst:156
+#: ../Doc/extending/extending.rst:160
msgid ""
"When a function *f* that calls another function *g* detects that the latter "
"fails, *f* should itself return an error value (usually *NULL* or ``-1``). "
@@ -324,7 +333,7 @@ msgstr ""
"d'exécution et essaie de trouver un gestionnaire d'exception spécifié par le "
"développeur Python."
-#: ../Doc/extending/extending.rst:166
+#: ../Doc/extending/extending.rst:170
msgid ""
"(There are situations where a module can actually give a more detailed error "
"message by calling another :c:func:`PyErr_\\*` function, and in such cases "
@@ -339,7 +348,7 @@ msgstr ""
"sur la cause de l'erreur: la plupart des opérations peuvent échouer pour "
"tout un tas de raisons)."
-#: ../Doc/extending/extending.rst:172
+#: ../Doc/extending/extending.rst:176
msgid ""
"To ignore an exception set by a function call that failed, the exception "
"condition must be cleared explicitly by calling :c:func:`PyErr_Clear`. The "
@@ -354,7 +363,7 @@ msgstr ""
"l'interpréteur, mais souhaite la gérer lui-même (peut-être en essayant "
"quelque chose d'autre, ou en prétendant que rien n'a mal tourné)."
-#: ../Doc/extending/extending.rst:178
+#: ../Doc/extending/extending.rst:182
msgid ""
"Every failing :c:func:`malloc` call must be turned into an exception --- the "
"direct caller of :c:func:`malloc` (or :c:func:`realloc`) must call :c:func:"
@@ -369,7 +378,7 @@ msgstr ""
"`PyLong_FromLong`) le font déjà, donc cette note ne concerne que ceux qui "
"appellent :c:func:`malloc` directement."
-#: ../Doc/extending/extending.rst:184
+#: ../Doc/extending/extending.rst:188
msgid ""
"Also note that, with the important exception of :c:func:`PyArg_ParseTuple` "
"and friends, functions that return an integer status usually return a "
@@ -381,7 +390,7 @@ msgstr ""
"donnent généralement une valeur positive ou zéro en cas de succès et ``-1`` "
"en cas d'échec, comme les appels du système Unix."
-#: ../Doc/extending/extending.rst:188
+#: ../Doc/extending/extending.rst:192
msgid ""
"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :"
"c:func:`Py_DECREF` calls for objects you have already created) when you "
@@ -391,7 +400,7 @@ msgstr ""
"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec "
"les objets que vous auriez déjà créés) !"
-#: ../Doc/extending/extending.rst:192
+#: ../Doc/extending/extending.rst:196
msgid ""
"The choice of which exception to raise is entirely yours. There are "
"predeclared C objects corresponding to all built-in Python exceptions, such "
@@ -415,16 +424,15 @@ msgstr ""
"satisfaire d'autres conditions, :c:data:`PyExc_ValueError` sera plus "
"appropriée."
-#: ../Doc/extending/extending.rst:202
+#: ../Doc/extending/extending.rst:206
msgid ""
"You can also define a new exception that is unique to your module. For this, "
"you usually declare a static object variable at the beginning of your file::"
msgstr ""
"Vous pouvez également créer une exception spécifique à votre module. Pour "
-"cela, déclarez simplement une variable statique au début de votre "
-"fichier : ::"
+"cela, déclarez simplement une variable statique au début de votre fichier ::"
-#: ../Doc/extending/extending.rst:207
+#: ../Doc/extending/extending.rst:211
msgid ""
"and initialize it in your module's initialization function (:c:func:"
"`PyInit_spam`) with an exception object (leaving out the error checking for "
@@ -434,7 +442,7 @@ msgstr ""
"`PyInit_spam`) avec un objet exception (Passons, pour le moment, la "
"vérification des codes d'erreur) ::"
-#: ../Doc/extending/extending.rst:225
+#: ../Doc/extending/extending.rst:229
msgid ""
"Note that the Python name for the exception object is :exc:`spam.error`. "
"The :c:func:`PyErr_NewException` function may create a class with the base "
@@ -446,7 +454,7 @@ msgstr ""
"`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de "
"*NULL*), voir :ref:`bltin-exceptions`."
-#: ../Doc/extending/extending.rst:230
+#: ../Doc/extending/extending.rst:234
msgid ""
"Note also that the :c:data:`SpamError` variable retains a reference to the "
"newly created exception class; this is intentional! Since the exception "
@@ -464,7 +472,7 @@ msgstr ""
"défaillant, le C code qui lève l'exception peut engendrer un rejet central "
"ou des effets secondaires inattendus."
-#: ../Doc/extending/extending.rst:237
+#: ../Doc/extending/extending.rst:241
msgid ""
"We discuss the use of ``PyMODINIT_FUNC`` as a function return type later in "
"this sample."
@@ -472,7 +480,7 @@ msgstr ""
"Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de "
"retour de fonction plus tard dans cette section."
-#: ../Doc/extending/extending.rst:240
+#: ../Doc/extending/extending.rst:244
msgid ""
"The :exc:`spam.error` exception can be raised in your extension module using "
"a call to :c:func:`PyErr_SetString` as shown below::"
@@ -480,11 +488,11 @@ msgstr ""
"L'exception :exc:`spam.error` peut être levée dans votre module d'extension "
"en appelant :c:func:`PyErr_SetString` comme montré ci-dessous ::"
-#: ../Doc/extending/extending.rst:263
+#: ../Doc/extending/extending.rst:267
msgid "Back to the Example"
msgstr "Retour vers l'exemple"
-#: ../Doc/extending/extending.rst:265
+#: ../Doc/extending/extending.rst:269
msgid ""
"Going back to our example function, you should now be able to understand "
"this statement::"
@@ -492,7 +500,7 @@ msgstr ""
"En revenant vers notre fonction exemple, vous devriez maintenant être "
"capable de comprendre cette affirmation ::"
-#: ../Doc/extending/extending.rst:271
+#: ../Doc/extending/extending.rst:275
msgid ""
"It returns *NULL* (the error indicator for functions returning object "
"pointers) if an error is detected in the argument list, relying on the "
@@ -511,7 +519,7 @@ msgstr ""
"la variable :c:data:`command` doit être clairement déclarée comme ``const "
"char *command``)."
-#: ../Doc/extending/extending.rst:279
+#: ../Doc/extending/extending.rst:283
msgid ""
"The next statement is a call to the Unix function :c:func:`system`, passing "
"it the string we just got from :c:func:`PyArg_ParseTuple`::"
@@ -520,7 +528,7 @@ msgstr ""
"en lui passant la chaîne que nous venons d'obtenir à partir de :c:func:"
"`PyArg_ParseTuple` ::"
-#: ../Doc/extending/extending.rst:284
+#: ../Doc/extending/extending.rst:288
msgid ""
"Our :func:`spam.system` function must return the value of :c:data:`sts` as a "
"Python object. This is done using the function :c:func:`PyLong_FromLong`. ::"
@@ -529,7 +537,7 @@ msgstr ""
"comme un objet Python. Cela est effectué par l'utilisation de la fonction :c:"
"func:`PyLong_FromLong`. ::"
-#: ../Doc/extending/extending.rst:289
+#: ../Doc/extending/extending.rst:293
msgid ""
"In this case, it will return an integer object. (Yes, even integers are "
"objects on the heap in Python!)"
@@ -537,7 +545,7 @@ msgstr ""
"Dans ce cas, elle renverra un objet entier. (Oui, même les entiers sont des "
"objets dans le tas en Python!)"
-#: ../Doc/extending/extending.rst:292
+#: ../Doc/extending/extending.rst:296
msgid ""
"If you have a C function that returns no useful argument (a function "
"returning :c:type:`void`), the corresponding Python function must return "
@@ -549,7 +557,7 @@ msgstr ""
"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est "
"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::"
-#: ../Doc/extending/extending.rst:300
+#: ../Doc/extending/extending.rst:304
msgid ""
":c:data:`Py_None` is the C name for the special Python object ``None``. It "
"is a genuine Python object rather than a *NULL* pointer, which means \"error"
@@ -560,17 +568,20 @@ msgstr ""
"qu'une erreur est survenue, dans la plupart des situations, comme nous "
"l'avons vu."
-#: ../Doc/extending/extending.rst:308
+#: ../Doc/extending/extending.rst:312
msgid "The Module's Method Table and Initialization Function"
-msgstr ""
+msgstr "La fonction d'initialisation et le tableau des méthodes du module"
-#: ../Doc/extending/extending.rst:310
+#: ../Doc/extending/extending.rst:314
msgid ""
"I promised to show how :c:func:`spam_system` is called from Python programs. "
"First, we need to list its name and address in a \"method table\"::"
msgstr ""
+"Nous avons promis de montrer comment :c:func:`spam_system` est appelée "
+"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et "
+"son adresse dans un « tableau des méthodes » ::"
-#: ../Doc/extending/extending.rst:321
+#: ../Doc/extending/extending.rst:325
msgid ""
"Note the third entry (``METH_VARARGS``). This is a flag telling the "
"interpreter the calling convention to be used for the C function. It should "
@@ -578,15 +589,24 @@ msgid ""
"value of ``0`` means that an obsolete variant of :c:func:`PyArg_ParseTuple` "
"is used."
msgstr ""
+"Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de "
+"convention à utiliser pour la fonction C, à destination de l'interpréteur. "
+"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | "
+"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:"
+"func:`PyArg_ParseTuple` est utilisée."
-#: ../Doc/extending/extending.rst:326
+#: ../Doc/extending/extending.rst:330
msgid ""
"When using only ``METH_VARARGS``, the function should expect the Python-"
"level parameters to be passed in as a tuple acceptable for parsing via :c:"
"func:`PyArg_ParseTuple`; more information on this function is provided below."
msgstr ""
+"Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les "
+"paramètres Python soient passés comme un n-uplet que l'on peut analyser "
+"*via* :c:func:`PyArg_ParseTuple` ; des informations supplémentaires sont "
+"fournies plus bas."
-#: ../Doc/extending/extending.rst:330
+#: ../Doc/extending/extending.rst:334
msgid ""
"The :const:`METH_KEYWORDS` bit may be set in the third field if keyword "
"arguments should be passed to the function. In this case, the C function "
@@ -594,28 +614,43 @@ msgid ""
"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments "
"to such a function."
msgstr ""
+"Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si "
+"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, "
+"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un "
+"dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` "
+"pour analyser les arguments d'une telle fonction."
-#: ../Doc/extending/extending.rst:336
+#: ../Doc/extending/extending.rst:340
msgid ""
"The method table must be referenced in the module definition structure::"
msgstr ""
+"Le tableau des méthodes doit être référencé dans la structure de définition "
+"du module ::"
-#: ../Doc/extending/extending.rst:347
+#: ../Doc/extending/extending.rst:351
msgid ""
"This structure, in turn, must be passed to the interpreter in the module's "
"initialization function. The initialization function must be named :c:func:"
"`PyInit_name`, where *name* is the name of the module, and should be the "
"only non-\\ ``static`` item defined in the module file::"
msgstr ""
+"Cette structure, à son tour, doit être transmise à l'interpréteur dans la "
+"fonction d'initialisation du module. La fonction d'initialisation doit être "
+"nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le "
+"seul élément non ``static`` défini dans le fichier du module ::"
-#: ../Doc/extending/extending.rst:358
+#: ../Doc/extending/extending.rst:362
msgid ""
"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return "
"type, declares any special linkage declarations required by the platform, "
"and for C++ declares the function as ``extern \"C\"``."
msgstr ""
+"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de "
+"type ``PyObject *``, et déclare également toute déclaration de liaison "
+"spéciale requise par la plate-forme, et pour le C++ déclare la fonction "
+"comme un C ``extern``."
-#: ../Doc/extending/extending.rst:362
+#: ../Doc/extending/extending.rst:366
msgid ""
"When the Python program imports module :mod:`spam` for the first time, :c:"
"func:`PyInit_spam` is called. (See below for comments about embedding "
@@ -629,15 +664,20 @@ msgid ""
"gets inserted into ``sys.modules``."
msgstr ""
-#: ../Doc/extending/extending.rst:373
+#: ../Doc/extending/extending.rst:377
msgid ""
"When embedding Python, the :c:func:`PyInit_spam` function is not called "
"automatically unless there's an entry in the :c:data:`PyImport_Inittab` "
"table. To add the module to the initialization table, use :c:func:"
"`PyImport_AppendInittab`, optionally followed by an import of the module::"
msgstr ""
+"Lors de l'intégration de Python, la fonction :c:func:`PyInit_spam` n'est pas "
+"appelée automatiquement, sauf s'il y a une entrée dans la table :c:data:"
+"`PyImport_Inittab`. Pour ajouter le module à la table d'initialisation, "
+"utilisez :c:func:`PyImport_AppendInittab`, suivi éventuellement d'une "
+"importation du module ::"
-#: ../Doc/extending/extending.rst:409
+#: ../Doc/extending/extending.rst:413
msgid ""
"Removing entries from ``sys.modules`` or importing compiled modules into "
"multiple interpreters within a process (or following a :c:func:`fork` "
@@ -645,27 +685,41 @@ msgid ""
"extension modules. Extension module authors should exercise caution when "
"initializing internal data structures."
msgstr ""
+"Supprimer des entrées de ``sys.modules`` ou importer des modules compilés "
+"dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:"
+"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes "
+"pour certains modules d'extension. Les auteurs de modules d'extension "
+"doivent faire preuve de prudence lorsqu'ils initialisent des structures de "
+"données internes."
-#: ../Doc/extending/extending.rst:415
+#: ../Doc/extending/extending.rst:419
msgid ""
"A more substantial example module is included in the Python source "
"distribution as :file:`Modules/xxmodule.c`. This file may be used as a "
"template or simply read as an example."
msgstr ""
+"Un exemple de module plus substantiel est inclus dans la distribution des "
+"sources Python sous le nom :file:`Modules/xxmodule.c`. Ce fichier peut être "
+"utilisé comme modèle ou simplement lu comme exemple."
-#: ../Doc/extending/extending.rst:421
+#: ../Doc/extending/extending.rst:425
msgid ""
"Unlike our ``spam`` example, ``xxmodule`` uses *multi-phase initialization* "
"(new in Python 3.5), where a PyModuleDef structure is returned from "
"``PyInit_spam``, and creation of the module is left to the import machinery. "
"For details on multi-phase initialization, see :PEP:`489`."
msgstr ""
+"Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une "
+"*initialisation multi-phase* (nouveau en Python 3.5), où une structure "
+"*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du "
+"module est laissée au mécanisme d'importation. Pour plus de détails sur "
+"l'initialisation multi-phase, voir :PEP:`489`."
-#: ../Doc/extending/extending.rst:430
+#: ../Doc/extending/extending.rst:434
msgid "Compilation and Linkage"
-msgstr ""
+msgstr "Compilation et liaison"
-#: ../Doc/extending/extending.rst:432
+#: ../Doc/extending/extending.rst:436
msgid ""
"There are two more things to do before you can use your new extension: "
"compiling and linking it with the Python system. If you use dynamic "
@@ -675,7 +729,7 @@ msgid ""
"Windows (chapter :ref:`building-on-windows`) for more information about this."
msgstr ""
-#: ../Doc/extending/extending.rst:439
+#: ../Doc/extending/extending.rst:443
msgid ""
"If you can't use dynamic loading, or if you want to make your module a "
"permanent part of the Python interpreter, you will have to change the "
@@ -685,7 +739,7 @@ msgid ""
"line to the file :file:`Modules/Setup.local` describing your file:"
msgstr ""
-#: ../Doc/extending/extending.rst:450
+#: ../Doc/extending/extending.rst:454
msgid ""
"and rebuild the interpreter by running :program:`make` in the toplevel "
"directory. You can also run :program:`make` in the :file:`Modules/` "
@@ -694,17 +748,17 @@ msgid ""
"the :file:`Setup` file.)"
msgstr ""
-#: ../Doc/extending/extending.rst:456
+#: ../Doc/extending/extending.rst:460
msgid ""
"If your module requires additional libraries to link with, these can be "
"listed on the line in the configuration file as well, for instance:"
msgstr ""
-#: ../Doc/extending/extending.rst:467
+#: ../Doc/extending/extending.rst:471
msgid "Calling Python Functions from C"
-msgstr ""
+msgstr "Appeler des fonctions Python en C"
-#: ../Doc/extending/extending.rst:469
+#: ../Doc/extending/extending.rst:473
msgid ""
"So far we have concentrated on making C functions callable from Python. The "
"reverse is also useful: calling Python functions from C. This is especially "
@@ -715,7 +769,7 @@ msgid ""
"uses are also imaginable."
msgstr ""
-#: ../Doc/extending/extending.rst:477
+#: ../Doc/extending/extending.rst:481
msgid ""
"Fortunately, the Python interpreter is easily called recursively, and there "
"is a standard interface to call a Python function. (I won't dwell on how to "
@@ -724,7 +778,7 @@ msgid ""
"line option in :file:`Modules/main.c` from the Python source code.)"
msgstr ""
-#: ../Doc/extending/extending.rst:483
+#: ../Doc/extending/extending.rst:487
msgid ""
"Calling a Python function is easy. First, the Python program must somehow "
"pass you the Python function object. You should provide a function (or some "
@@ -734,15 +788,19 @@ msgid ""
"function might be part of a module definition::"
msgstr ""
-#: ../Doc/extending/extending.rst:513
+#: ../Doc/extending/extending.rst:517
msgid ""
"This function must be registered with the interpreter using the :const:"
"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :"
"c:func:`PyArg_ParseTuple` function and its arguments are documented in "
"section :ref:`parsetuple`."
msgstr ""
+"Cette fonction doit être déclarée en utilisant le drapeau :const:"
+"`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La "
+"fonction :c:func:`PyArg_ParseTuple` et ses arguments sont documentés dans la "
+"section :ref:`parsetuple`."
-#: ../Doc/extending/extending.rst:518
+#: ../Doc/extending/extending.rst:522
msgid ""
"The macros :c:func:`Py_XINCREF` and :c:func:`Py_XDECREF` increment/decrement "
"the reference count of an object and are safe in the presence of *NULL* "
@@ -750,7 +808,7 @@ msgid ""
"info on them in section :ref:`refcounts`."
msgstr ""
-#: ../Doc/extending/extending.rst:525
+#: ../Doc/extending/extending.rst:529
msgid ""
"Later, when it is time to call the function, you call the C function :c:func:"
"`PyObject_CallObject`. This function has two arguments, both pointers to "
@@ -762,7 +820,7 @@ msgid ""
"or more format codes between parentheses. For example::"
msgstr ""
-#: ../Doc/extending/extending.rst:545
+#: ../Doc/extending/extending.rst:549
msgid ""
":c:func:`PyObject_CallObject` returns a Python object pointer: this is the "
"return value of the Python function. :c:func:`PyObject_CallObject` is "
@@ -771,7 +829,7 @@ msgid ""
"`Py_DECREF`\\ -ed immediately after the :c:func:`PyObject_CallObject` call."
msgstr ""
-#: ../Doc/extending/extending.rst:552
+#: ../Doc/extending/extending.rst:556
msgid ""
"The return value of :c:func:`PyObject_CallObject` is \"new\": either it is a "
"brand new object, or it is an existing object whose reference count has been "
@@ -780,7 +838,7 @@ msgid ""
"not interested in its value."
msgstr ""
-#: ../Doc/extending/extending.rst:558
+#: ../Doc/extending/extending.rst:562
msgid ""
"Before you do this, however, it is important to check that the return value "
"isn't *NULL*. If it is, the Python function terminated by raising an "
@@ -791,7 +849,7 @@ msgid ""
"should be cleared by calling :c:func:`PyErr_Clear`. For example::"
msgstr ""
-#: ../Doc/extending/extending.rst:571
+#: ../Doc/extending/extending.rst:575
msgid ""
"Depending on the desired interface to the Python callback function, you may "
"also have to provide an argument list to :c:func:`PyObject_CallObject`. In "
@@ -802,8 +860,18 @@ msgid ""
"simplest way to do this is to call :c:func:`Py_BuildValue`. For example, if "
"you want to pass an integral event code, you might use the following code::"
msgstr ""
+"Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez "
+"peut-être aussi fournir une liste d'arguments à :c:func:"
+"`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également "
+"fournie par le programme Python, par l'intermédiaire de la même interface "
+"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et "
+"utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous "
+"pouvez avoir à construire un nouveau n-uplet à passer comme liste "
+"d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:"
+"`Py_BuildValue`. Par exemple, si vous voulez passer un code d'événement "
+"intégral, vous pouvez utiliser le code suivant ::"
-#: ../Doc/extending/extending.rst:590
+#: ../Doc/extending/extending.rst:594
msgid ""
"Note the placement of ``Py_DECREF(arglist)`` immediately after the call, "
"before the error check! Also note that strictly speaking this code is not "
@@ -811,22 +879,26 @@ msgid ""
"checked."
msgstr ""
-#: ../Doc/extending/extending.rst:594
+#: ../Doc/extending/extending.rst:598
msgid ""
"You may also call a function with keyword arguments by using :c:func:"
"`PyObject_Call`, which supports arguments and keyword arguments. As in the "
"above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::"
msgstr ""
+"Vous pouvez également appeler une fonction avec des arguments nommés en "
+"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les "
+"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:"
+"`Py_BuildValue` pour construire le dictionnaire. ::"
-#: ../Doc/extending/extending.rst:612
+#: ../Doc/extending/extending.rst:616
msgid "Extracting Parameters in Extension Functions"
-msgstr ""
+msgstr "Extraire des paramètres dans des fonctions d'extension"
-#: ../Doc/extending/extending.rst:616
+#: ../Doc/extending/extending.rst:620
msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::"
-msgstr ""
+msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::"
-#: ../Doc/extending/extending.rst:620
+#: ../Doc/extending/extending.rst:624
msgid ""
"The *arg* argument must be a tuple object containing an argument list passed "
"from Python to a C function. The *format* argument must be a format string, "
@@ -835,7 +907,7 @@ msgid ""
"whose type is determined by the format string."
msgstr ""
-#: ../Doc/extending/extending.rst:626
+#: ../Doc/extending/extending.rst:630
msgid ""
"Note that while :c:func:`PyArg_ParseTuple` checks that the Python arguments "
"have the required types, it cannot check the validity of the addresses of C "
@@ -843,7 +915,7 @@ msgid ""
"probably crash or at least overwrite random bits in memory. So be careful!"
msgstr ""
-#: ../Doc/extending/extending.rst:631
+#: ../Doc/extending/extending.rst:635
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
@@ -852,20 +924,21 @@ msgstr ""
"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
"compteur de références !"
-#: ../Doc/extending/extending.rst:634
+#: ../Doc/extending/extending.rst:638
msgid "Some example calls::"
-msgstr ""
+msgstr "Quelques exemples d'appels ::"
-#: ../Doc/extending/extending.rst:704
+#: ../Doc/extending/extending.rst:708
msgid "Keyword Parameters for Extension Functions"
-msgstr ""
+msgstr "Paramètres nommés pour des fonctions d'extension"
-#: ../Doc/extending/extending.rst:708
+#: ../Doc/extending/extending.rst:712
msgid ""
"The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::"
msgstr ""
+"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::"
-#: ../Doc/extending/extending.rst:713
+#: ../Doc/extending/extending.rst:717
msgid ""
"The *arg* and *format* parameters are identical to those of the :c:func:"
"`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of "
@@ -876,38 +949,50 @@ msgid ""
"returns true, otherwise it returns false and raises an appropriate exception."
msgstr ""
-#: ../Doc/extending/extending.rst:723
+#: ../Doc/extending/extending.rst:727
msgid ""
"Nested tuples cannot be parsed when using keyword arguments! Keyword "
"parameters passed in which are not present in the *kwlist* will cause :exc:"
"`TypeError` to be raised."
msgstr ""
+"Les n-uplets imbriqués ne peuvent pas être traités lorsqu'on utilise des "
+"arguments de type mot-clé ! Ceux-ci doivent apparaître dans dans *kwlist*, "
+"dans le cas contraire une exception :exc:`TypeError` est levée."
-#: ../Doc/extending/extending.rst:729
+#: ../Doc/extending/extending.rst:733
msgid ""
"Here is an example module which uses keywords, based on an example by Geoff "
"Philbrick (philbrick@hks.com)::"
msgstr ""
+"Voici un exemple de module qui utilise des mots-clés, basé sur un exemple de "
+"*Geoff Philbrick* (philbrick@hks.com) ::"
-#: ../Doc/extending/extending.rst:783
+#: ../Doc/extending/extending.rst:788
msgid "Building Arbitrary Values"
-msgstr ""
+msgstr "Créer des valeurs arbitraires"
-#: ../Doc/extending/extending.rst:785
+#: ../Doc/extending/extending.rst:790
msgid ""
"This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is "
"declared as follows::"
msgstr ""
+"Cette fonction est le complément de :c:func:`PyArg_ParseTuple`. Elle est "
+"déclarée comme suit ::"
-#: ../Doc/extending/extending.rst:790
+#: ../Doc/extending/extending.rst:795
msgid ""
"It recognizes a set of format units similar to the ones recognized by :c:"
"func:`PyArg_ParseTuple`, but the arguments (which are input to the function, "
"not output) must not be pointers, just values. It returns a new Python "
"object, suitable for returning from a C function called from Python."
msgstr ""
+"Il reconnaît un ensemble d'unités de format similaires à celles reconnues "
+"par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en "
+"entrée de fonction, et non de la sortie) ne doivent pas être des pointeurs, "
+"mais juste des valeurs. Il renvoie un nouvel objet Python, adapté pour être "
+"renvoyé par une fonction C appelée depuis Python."
-#: ../Doc/extending/extending.rst:795
+#: ../Doc/extending/extending.rst:800
msgid ""
"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires "
"its first argument to be a tuple (since Python argument lists are always "
@@ -919,16 +1004,17 @@ msgid ""
"parenthesize the format string."
msgstr ""
-#: ../Doc/extending/extending.rst:803
+#: ../Doc/extending/extending.rst:808
msgid ""
"Examples (to the left the call, to the right the resulting Python value):"
msgstr ""
+"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :"
-#: ../Doc/extending/extending.rst:829
+#: ../Doc/extending/extending.rst:834
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
-#: ../Doc/extending/extending.rst:831
+#: ../Doc/extending/extending.rst:836
msgid ""
"In languages like C or C++, the programmer is responsible for dynamic "
"allocation and deallocation of memory on the heap. In C, this is done using "
@@ -936,8 +1022,14 @@ msgid ""
"``new`` and ``delete`` are used with essentially the same meaning and we'll "
"restrict the following discussion to the C case."
msgstr ""
+"Dans les langages comme le C ou le C++, le développeur est responsable de "
+"l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En "
+"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. "
+"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec "
+"essentiellement la même signification et nous limiterons la discussion "
+"suivante au cas du C."
-#: ../Doc/extending/extending.rst:837
+#: ../Doc/extending/extending.rst:842
msgid ""
"Every block of memory allocated with :c:func:`malloc` should eventually be "
"returned to the pool of available memory by exactly one call to :c:func:"
@@ -952,7 +1044,7 @@ msgid ""
"crashes."
msgstr ""
-#: ../Doc/extending/extending.rst:848
+#: ../Doc/extending/extending.rst:853
msgid ""
"Common causes of memory leaks are unusual paths through the code. For "
"instance, a function may allocate a block of memory, do some calculation, "
@@ -969,7 +1061,7 @@ msgid ""
"of errors."
msgstr ""
-#: ../Doc/extending/extending.rst:861
+#: ../Doc/extending/extending.rst:866
msgid ""
"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it "
"needs a strategy to avoid memory leaks as well as the use of freed memory. "
@@ -979,8 +1071,16 @@ msgid ""
"reference to it is deleted. When the counter reaches zero, the last "
"reference to the object has been deleted and the object is freed."
msgstr ""
+"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:"
+"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi "
+"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:"
+"`reference counting`. Le principe est simple : chaque objet contient un "
+"compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée "
+"quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est "
+"supprimée. Lorsque le compteur atteint zéro, la dernière référence à l'objet "
+"a été supprimée et l'objet est libéré."
-#: ../Doc/extending/extending.rst:869
+#: ../Doc/extending/extending.rst:874
msgid ""
"An alternative strategy is called :dfn:`automatic garbage collection`. "
"(Sometimes, reference counting is also referred to as a garbage collection "
@@ -995,8 +1095,21 @@ msgid ""
"garbage collector will be available for C. Until then, we'll have to live "
"with reference counts."
msgstr ""
-
-#: ../Doc/extending/extending.rst:881
+"Une stratégie alternative est appelée :dfn:`automatic garbage collection` "
+"(ramasse-miettes). Parfois, le comptage des références est également appelé "
+"stratégie de ramasse-miettes, d'où l'utilisation du terme \"automatique\" "
+"pour distinguer les deux. Le grand avantage du ramasse-miettes est que "
+"l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un "
+"autre avantage important est l'amélioration de la vitesse ou de "
+"l'utilisation de la mémoire, ce n'est cependant pas un fait avéré). "
+"L'inconvénient est que pour C, il n'y a pas de ramasse-miettes portable "
+"proprement-dit, alors que le comptage des références peut être implémenté de "
+"façon portable (tant que les fonctions :c:func:`malloc` et :c:func:`free` "
+"soient disponibles, ce que la norme C garantit). Peut-être qu'un jour un "
+"ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous "
+"devrons utiliser les compteurs des références."
+
+#: ../Doc/extending/extending.rst:886
msgid ""
"While Python uses the traditional reference counting implementation, it also "
"offers a cycle detector that works to detect reference cycles. This allows "
@@ -1009,8 +1122,20 @@ msgid ""
"in a reference cycle, or referenced from the objects in the cycle, even "
"though there are no further references to the cycle itself."
msgstr ""
-
-#: ../Doc/extending/extending.rst:892
+"Bien que Python utilise l'implémentation traditionnelle de comptage de "
+"référence, il contient également un détecteur de cycles qui fonctionne pour "
+"détecter les cycles de référence. Cela permet aux applications d'empêcher la "
+"création de références circulaires directes ou indirectes ; ceci sont les "
+"faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement le "
+"comptage de référence. Les cycles de référence sont constitués d'objets qui "
+"contiennent des références (éventuellement indirectes) à eux-mêmes, de sorte "
+"que chaque objet du cycle a un comptage de référence qui n'est pas nul. Les "
+"implémentations typiques de comptage de référence ne sont pas capables de "
+"récupérer la mémoire appartenant à des objets dans un cycle de référence, ou "
+"référencés à partir des objets dans le cycle, même s'il n'y a pas d'autres "
+"références au cycle lui-même."
+
+#: ../Doc/extending/extending.rst:897
msgid ""
"The cycle detector is able to detect garbage cycles and can reclaim them. "
"The :mod:`gc` module exposes a way to run the detector (the :func:`~gc."
@@ -1022,11 +1147,11 @@ msgid ""
"detector is disabled in this way, the :mod:`gc` module will not be available."
msgstr ""
-#: ../Doc/extending/extending.rst:906
+#: ../Doc/extending/extending.rst:911
msgid "Reference Counting in Python"
-msgstr ""
+msgstr "Comptage de références en Python"
-#: ../Doc/extending/extending.rst:908
+#: ../Doc/extending/extending.rst:913
msgid ""
"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle "
"the incrementing and decrementing of the reference count. :c:func:"
@@ -1036,8 +1161,15 @@ msgid ""
"this purpose (and others), every object also contains a pointer to its type "
"object."
msgstr ""
+"Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent "
+"l'incrémentation et la décrémentation du comptage de référence. :c:func:"
+"`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour "
+"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, "
+"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type "
+"objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient "
+"également un pointeur vers son objet type."
-#: ../Doc/extending/extending.rst:915
+#: ../Doc/extending/extending.rst:920
msgid ""
"The big question now remains: when to use ``Py_INCREF(x)`` and "
"``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an "
@@ -1049,8 +1181,18 @@ msgid ""
"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned "
"reference creates a memory leak."
msgstr ""
+"La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et "
+"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne "
+"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le "
+"comptage de références d'un objet est maintenant défini comme étant le "
+"nombre de références à cet objet. Le propriétaire d'une référence est "
+"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus "
+"nécessaire. La propriété d'une référence peut être transférée. Il y a trois "
+"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :"
+"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite "
+"de mémoire."
-#: ../Doc/extending/extending.rst:924
+#: ../Doc/extending/extending.rst:929
msgid ""
"It is also possible to :dfn:`borrow` [#]_ a reference to an object. The "
"borrower of a reference should not call :c:func:`Py_DECREF`. The borrower "
@@ -1059,7 +1201,7 @@ msgid ""
"risks using freed memory and should be avoided completely [#]_."
msgstr ""
-#: ../Doc/extending/extending.rst:930
+#: ../Doc/extending/extending.rst:935
msgid ""
"The advantage of borrowing over owning a reference is that you don't need to "
"take care of disposing of the reference on all possible paths through the "
@@ -1069,8 +1211,16 @@ msgid ""
"code a borrowed reference can be used after the owner from which it was "
"borrowed has in fact disposed of it."
msgstr ""
+"L'avantage d'emprunter, plutôt qu'être propriétaire d'une référence est que "
+"vous n'avez pas à vous soucier de disposer de la référence sur tous les "
+"chemins possibles dans le code — en d'autres termes, avec une référence "
+"empruntée, vous ne courez pas le risque de fuites lors d'une sortie "
+"prématurée. L'inconvénient de l'emprunt par rapport à la possession est "
+"qu'il existe certaines situations subtiles où, dans un code apparemment "
+"correct, une référence empruntée peut être utilisée après que le "
+"propriétaire auquel elle a été empruntée l'a en fait éliminée."
-#: ../Doc/extending/extending.rst:938
+#: ../Doc/extending/extending.rst:943
msgid ""
"A borrowed reference can be changed into an owned reference by calling :c:"
"func:`Py_INCREF`. This does not affect the status of the owner from which "
@@ -1079,18 +1229,22 @@ msgid ""
"properly, as well as the previous owner)."
msgstr ""
-#: ../Doc/extending/extending.rst:948
+#: ../Doc/extending/extending.rst:953
msgid "Ownership Rules"
-msgstr ""
+msgstr "Règles concernant la propriété de références"
-#: ../Doc/extending/extending.rst:950
+#: ../Doc/extending/extending.rst:955
msgid ""
"Whenever an object reference is passed into or out of a function, it is part "
"of the function's interface specification whether ownership is transferred "
"with the reference or not."
msgstr ""
+"Chaque fois qu'une référence d'objet est passée à l'intérieur ou à "
+"l'extérieur d'une fonction, elle fait partie de la spécification de "
+"l'interface de la fonction, peu importe que la propriété soit transférée "
+"avec la référence ou non."
-#: ../Doc/extending/extending.rst:954
+#: ../Doc/extending/extending.rst:959
msgid ""
"Most functions that return a reference to an object pass on ownership with "
"the reference. In particular, all functions whose function it is to create "
@@ -1101,7 +1255,7 @@ msgid ""
"reference to a cached item."
msgstr ""
-#: ../Doc/extending/extending.rst:962
+#: ../Doc/extending/extending.rst:967
msgid ""
"Many functions that extract objects from other objects also transfer "
"ownership with the reference, for instance :c:func:"
@@ -1112,14 +1266,14 @@ msgid ""
"list or dictionary."
msgstr ""
-#: ../Doc/extending/extending.rst:969
+#: ../Doc/extending/extending.rst:974
msgid ""
"The function :c:func:`PyImport_AddModule` also returns a borrowed reference, "
"even though it may actually create the object it returns: this is possible "
"because an owned reference to the object is stored in ``sys.modules``."
msgstr ""
-#: ../Doc/extending/extending.rst:973
+#: ../Doc/extending/extending.rst:978
msgid ""
"When you pass an object reference into another function, in general, the "
"function borrows the reference from you --- if it needs to store it, it will "
@@ -1130,7 +1284,7 @@ msgid ""
"don't take over ownership --- they are \"normal.\")"
msgstr ""
-#: ../Doc/extending/extending.rst:981
+#: ../Doc/extending/extending.rst:986
msgid ""
"When a C function is called from Python, it borrows references to its "
"arguments from the caller. The caller owns a reference to the object, so "
@@ -1139,40 +1293,50 @@ msgid ""
"turned into an owned reference by calling :c:func:`Py_INCREF`."
msgstr ""
-#: ../Doc/extending/extending.rst:987
+#: ../Doc/extending/extending.rst:992
msgid ""
"The object reference returned from a C function that is called from Python "
"must be an owned reference --- ownership is transferred from the function to "
"its caller."
msgstr ""
-#: ../Doc/extending/extending.rst:995
+#: ../Doc/extending/extending.rst:1000
msgid "Thin Ice"
-msgstr ""
+msgstr "Terrain dangereux"
-#: ../Doc/extending/extending.rst:997
+#: ../Doc/extending/extending.rst:1002
msgid ""
"There are a few situations where seemingly harmless use of a borrowed "
"reference can lead to problems. These all have to do with implicit "
"invocations of the interpreter, which can cause the owner of a reference to "
"dispose of it."
msgstr ""
+"Il existe quelques situations où l'utilisation apparemment inoffensive d'une "
+"référence empruntée peut entraîner des problèmes. Tous ces problèmes sont en "
+"lien avec des invocations implicites de l’interpréteur, et peuvent amener le "
+"propriétaire d'une référence à s'en défaire."
-#: ../Doc/extending/extending.rst:1001
+#: ../Doc/extending/extending.rst:1006
msgid ""
"The first and most important case to know about is using :c:func:`Py_DECREF` "
"on an unrelated object while borrowing a reference to a list item. For "
"instance::"
msgstr ""
+"Le premier cas, et le plus important à connaître, est celui de l'application "
+"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une "
+"référence à un élément de liste. Par exemple ::"
-#: ../Doc/extending/extending.rst:1013
+#: ../Doc/extending/extending.rst:1018
msgid ""
"This function first borrows a reference to ``list[0]``, then replaces "
"``list[1]`` with the value ``0``, and finally prints the borrowed reference. "
"Looks harmless, right? But it's not!"
msgstr ""
+"Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace "
+"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. "
+"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !"
-#: ../Doc/extending/extending.rst:1017
+#: ../Doc/extending/extending.rst:1022
msgid ""
"Let's follow the control flow into :c:func:`PyList_SetItem`. The list owns "
"references to all its items, so when item 1 is replaced, it has to dispose "
@@ -1181,8 +1345,15 @@ msgid ""
"defined a :meth:`__del__` method. If this class instance has a reference "
"count of 1, disposing of it will call its :meth:`__del__` method."
msgstr ""
+"Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède "
+"des références à tous ses éléments, donc quand l'élément 1 est remplacé, "
+"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que "
+"l'élément 1 original était une instance d'une classe définie par "
+"l'utilisateur, et supposons en outre que la classe définisse une méthode :"
+"meth:`__del__`. Si l'instance de cette classe a un nombre des références de "
+"1, sa destruction appellera sa méthode :meth:`__del__`."
-#: ../Doc/extending/extending.rst:1024
+#: ../Doc/extending/extending.rst:1029
msgid ""
"Since it is written in Python, the :meth:`__del__` method can execute "
"arbitrary Python code. Could it perhaps do something to invalidate the "
@@ -1192,21 +1363,28 @@ msgid ""
"this was the last reference to that object, it would free the memory "
"associated with it, thereby invalidating ``item``."
msgstr ""
+"Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du "
+"code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la "
+"référence à ``item`` dans :c:func:`bug` ? Bien sûr ! En supposant que la "
+"liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, "
+"elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en "
+"supposant que ce soit la dernière référence à cet objet, elle libérerait la "
+"mémoire qui lui est associée, invalidant ainsi ``item``."
-#: ../Doc/extending/extending.rst:1032
+#: ../Doc/extending/extending.rst:1037
msgid ""
"The solution, once you know the source of the problem, is easy: temporarily "
"increment the reference count. The correct version of the function reads::"
msgstr ""
-#: ../Doc/extending/extending.rst:1046
+#: ../Doc/extending/extending.rst:1051
msgid ""
"This is a true story. An older version of Python contained variants of this "
"bug and someone spent a considerable amount of time in a C debugger to "
"figure out why his :meth:`__del__` methods would fail..."
msgstr ""
-#: ../Doc/extending/extending.rst:1050
+#: ../Doc/extending/extending.rst:1055
msgid ""
"The second case of problems with a borrowed reference is a variant involving "
"threads. Normally, multiple threads in the Python interpreter can't get in "
@@ -1218,12 +1396,22 @@ msgid ""
"complete. Obviously, the following function has the same problem as the "
"previous one::"
msgstr ""
-
-#: ../Doc/extending/extending.rst:1073
+"Le deuxième cas de problèmes liés à une référence empruntée est une variante "
+"impliquant des fils de discussion. Normalement, plusieurs threads dans "
+"l'interpréteur Python ne peuvent pas se gêner mutuellement, car il existe un "
+"verrou global protégeant tout l'espace objet de Python. Cependant, il est "
+"possible de libérer temporairement ce verrou en utilisant la macro :c:macro:"
+"`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:"
+"`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels "
+"d'entrées/sorties, afin de permettre aux autres threads d'utiliser le "
+"processeur en attendant que les E/S soient terminées. Évidemment, la "
+"fonction suivante a le même problème que la précédente ::"
+
+#: ../Doc/extending/extending.rst:1078
msgid "NULL Pointers"
-msgstr ""
+msgstr "Pointeurs ``NULL``"
-#: ../Doc/extending/extending.rst:1075
+#: ../Doc/extending/extending.rst:1080
msgid ""
"In general, functions that take object references as arguments do not expect "
"you to pass them *NULL* pointers, and will dump core (or cause later core "
@@ -1235,21 +1423,21 @@ msgid ""
"slowly."
msgstr ""
-#: ../Doc/extending/extending.rst:1083
+#: ../Doc/extending/extending.rst:1088
msgid ""
"It is better to test for *NULL* only at the \"source:\" when a pointer that "
"may be *NULL* is received, for example, from :c:func:`malloc` or from a "
"function that may raise an exception."
msgstr ""
-#: ../Doc/extending/extending.rst:1087
+#: ../Doc/extending/extending.rst:1092
msgid ""
"The macros :c:func:`Py_INCREF` and :c:func:`Py_DECREF` do not check for "
"*NULL* pointers --- however, their variants :c:func:`Py_XINCREF` and :c:func:"
"`Py_XDECREF` do."
msgstr ""
-#: ../Doc/extending/extending.rst:1091
+#: ../Doc/extending/extending.rst:1096
msgid ""
"The macros for checking for a particular object type (``Pytype_Check()``) "
"don't check for *NULL* pointers --- again, there is much code that calls "
@@ -1258,24 +1446,24 @@ msgid ""
"variants with *NULL* checking."
msgstr ""
-#: ../Doc/extending/extending.rst:1097
+#: ../Doc/extending/extending.rst:1102
msgid ""
"The C function calling mechanism guarantees that the argument list passed to "
"C functions (``args`` in the examples) is never *NULL* --- in fact it "
"guarantees that it is always a tuple [#]_."
msgstr ""
-#: ../Doc/extending/extending.rst:1101
+#: ../Doc/extending/extending.rst:1106
msgid ""
"It is a severe error to ever let a *NULL* pointer \"escape\" to the Python "
"user."
msgstr ""
-#: ../Doc/extending/extending.rst:1112
+#: ../Doc/extending/extending.rst:1117
msgid "Writing Extensions in C++"
-msgstr ""
+msgstr "Écrire des extensions en C++"
-#: ../Doc/extending/extending.rst:1114
+#: ../Doc/extending/extending.rst:1119
msgid ""
"It is possible to write extension modules in C++. Some restrictions apply. "
"If the main program (the Python interpreter) is compiled and linked by the C "
@@ -1287,12 +1475,23 @@ msgid ""
"`` --- they use this form already if the symbol ``__cplusplus`` is defined "
"(all recent C++ compilers define this symbol)."
msgstr ""
+"C'est possible d'écrire des modules d'extension en C++, mais sous certaines "
+"conditions. Si le programme principal (l'interpréteur Python) est compilé et "
+"lié par le compilateur C, les objets globaux ou statiques avec les "
+"constructeurs ne peuvent pas être utilisés. Ceci n'est pas un problème si le "
+"programme principal est relié par le compilateur C++. Les fonctions qui "
+"seront appelées par l'interpréteur Python (en particulier, les fonctions "
+"d'initialisation des modules) doivent être déclarées en utilisant ``extern "
+"\"C\"``. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python "
+"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole "
+"``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce "
+"symbole)."
-#: ../Doc/extending/extending.rst:1128
+#: ../Doc/extending/extending.rst:1133
msgid "Providing a C API for an Extension Module"
-msgstr ""
+msgstr "Fournir une API en langage C pour un module d'extension"
-#: ../Doc/extending/extending.rst:1133
+#: ../Doc/extending/extending.rst:1138
msgid ""
"Many extension modules just provide new functions and types to be used from "
"Python, but sometimes the code in an extension module can be useful for "
@@ -1302,8 +1501,17 @@ msgid ""
"create and manipulate lists, this new collection type should have a set of C "
"functions for direct manipulation from other extension modules."
msgstr ""
+"De nombreux modules d'extension fournissent simplement de nouvelles "
+"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois "
+"le code d'un module d'extension peut être utile pour d'autres modules "
+"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type "
+"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le "
+"type de liste Python standard possède une API C qui permet aux modules "
+"d'extension de créer et de manipuler des listes, ce nouveau type de "
+"collection devrait posséder un ensemble de fonctions C pour une manipulation "
+"directe à partir d'autres modules d'extension."
-#: ../Doc/extending/extending.rst:1141
+#: ../Doc/extending/extending.rst:1146
msgid ""
"At first sight this seems easy: just write the functions (without declaring "
"them ``static``, of course), provide an appropriate header file, and "
@@ -1318,8 +1526,22 @@ msgid ""
"if symbols are globally visible, the module whose functions one wishes to "
"call might not have been loaded yet!"
msgstr ""
-
-#: ../Doc/extending/extending.rst:1153
+"À première vue, cela semble facile : il suffit d'écrire les fonctions (sans "
+"les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête "
+"approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous "
+"les modules d'extension étaient toujours liés statiquement avec "
+"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme "
+"des bibliothèques partagées, les symboles définis dans un module peuvent ne "
+"pas être visibles par un autre module. Les détails de la visibilité "
+"dépendent du système d'exploitation ; certains systèmes utilisent un espace "
+"de noms global pour l'interpréteur Python et tous les modules d'extension "
+"(Windows, par exemple), tandis que d'autres exigent une liste explicite des "
+"symboles importés au moment de la liaison des modules (AIX en est un "
+"exemple), ou offrent un choix de stratégies différentes (la plupart des "
+"*Unix*). Et même si les symboles sont globalement visibles, le module dont "
+"on souhaite appeler les fonctions n'est peut-être pas encore chargé !"
+
+#: ../Doc/extending/extending.rst:1158
msgid ""
"Portability therefore requires not to make any assumptions about symbol "
"visibility. This means that all symbols in extension modules should be "
@@ -1328,8 +1550,16 @@ msgid ""
"section :ref:`methodtable`). And it means that symbols that *should* be "
"accessible from other extension modules must be exported in a different way."
msgstr ""
+"La portabilité exige donc de ne faire aucune supposition sur la visibilité "
+"des symboles. Cela signifie que tous les symboles des modules d'extension "
+"doivent être déclarés ``static``, à l'exception de la fonction "
+"d'initialisation du module, afin d'éviter les conflits de noms avec les "
+"autres modules d'extension (comme discuté dans la section :ref:"
+"`methodtable`). Et cela signifie que les symboles qui *devraient* être "
+"accessibles à partir d'autres modules d'extension doivent être exportés "
+"d'une manière différente."
-#: ../Doc/extending/extending.rst:1160
+#: ../Doc/extending/extending.rst:1165
msgid ""
"Python provides a special mechanism to pass C-level information (pointers) "
"from one extension module to another one: Capsules. A Capsule is a Python "
@@ -1341,7 +1571,7 @@ msgid ""
"the Capsule."
msgstr ""
-#: ../Doc/extending/extending.rst:1168
+#: ../Doc/extending/extending.rst:1173
msgid ""
"There are many ways in which Capsules can be used to export the C API of an "
"extension module. Each function could get its own Capsule, or all C API "
@@ -1350,8 +1580,15 @@ msgid ""
"distributed in different ways between the module providing the code and the "
"client modules."
msgstr ""
+"Il existe de nombreuses façons d'utiliser les Capsules pour exporter l'API C "
+"d'un module d'extension. Chaque fonction peut obtenir sa propre Capsule, ou "
+"tous les pointeurs de l'API C peuvent être stockés dans un tableau dont "
+"l'adresse est inscrite dans une Capsule. Et les différentes tâches de "
+"stockage et de récupération des pointeurs peuvent être réparties de "
+"différentes manières entre le module fournissant le code et les modules "
+"clients."
-#: ../Doc/extending/extending.rst:1174
+#: ../Doc/extending/extending.rst:1179
msgid ""
"Whichever method you choose, it's important to name your Capsules properly. "
"The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const "
@@ -1361,13 +1598,13 @@ msgid ""
"from another."
msgstr ""
-#: ../Doc/extending/extending.rst:1181
+#: ../Doc/extending/extending.rst:1186
msgid ""
"In particular, Capsules used to expose C APIs should be given a name "
"following this convention::"
msgstr ""
-#: ../Doc/extending/extending.rst:1186
+#: ../Doc/extending/extending.rst:1191
msgid ""
"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a "
"C API provided via a Capsule, but only if the Capsule's name matches this "
@@ -1375,7 +1612,7 @@ msgid ""
"the Capsule they load contains the correct C API."
msgstr ""
-#: ../Doc/extending/extending.rst:1191
+#: ../Doc/extending/extending.rst:1196
msgid ""
"The following example demonstrates an approach that puts most of the burden "
"on the writer of the exporting module, which is appropriate for commonly "
@@ -1385,8 +1622,16 @@ msgid ""
"takes care of importing the module and retrieving its C API pointers; client "
"modules only have to call this macro before accessing the C API."
msgstr ""
+"L'exemple suivant montre une approche qui fait peser la plus grande partie "
+"de la charge sur le rédacteur du module d'exportation, ce qui est approprié "
+"pour les modules de bibliothèque couramment utilisés. Il stocke tous les "
+"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de "
+"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier "
+"d'en-tête correspondant au module fournit une macro qui se charge d'importer "
+"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont "
+"qu'à appeler cette macro avant d'accéder à l'API C."
-#: ../Doc/extending/extending.rst:1199
+#: ../Doc/extending/extending.rst:1204
msgid ""
"The exporting module is a modification of the :mod:`spam` module from "
"section :ref:`extending-simpleexample`. The function :func:`spam.system` "
@@ -1395,60 +1640,82 @@ msgid ""
"complicated in reality (such as adding \"spam\" to every command). This "
"function :c:func:`PySpam_System` is also exported to other extension modules."
msgstr ""
+"Le module d'exportation est une modification du module :mod:`spam` de la "
+"section :ref:`extending-simpleexample`. La fonction :func:`spam.system` "
+"n'appelle pas directement la fonction de la bibliothèque C :c:func:`system`, "
+"mais une fonction :c:func:`PySpam_System`, qui ferait bien sûr quelque chose "
+"de plus compliqué en réalité (comme ajouter du *spam* à chaque commande). "
+"Cette fonction :c:func:`PySpam_System` est également exportée vers d'autres "
+"modules d'extension."
-#: ../Doc/extending/extending.rst:1206
+#: ../Doc/extending/extending.rst:1211
msgid ""
"The function :c:func:`PySpam_System` is a plain C function, declared "
"``static`` like everything else::"
msgstr ""
-#: ../Doc/extending/extending.rst:1215
+#: ../Doc/extending/extending.rst:1220
msgid "The function :c:func:`spam_system` is modified in a trivial way::"
-msgstr ""
+msgstr "La fonction :c:func:`spam_system` est modifiée de manière simple ::"
-#: ../Doc/extending/extending.rst:1229
+#: ../Doc/extending/extending.rst:1234
msgid "In the beginning of the module, right after the line ::"
-msgstr ""
+msgstr "Au début du module, immédiatement après la ligne ::"
-#: ../Doc/extending/extending.rst:1233
+#: ../Doc/extending/extending.rst:1238
msgid "two more lines must be added::"
-msgstr ""
+msgstr "on doit ajouter deux lignes supplémentaires ::"
-#: ../Doc/extending/extending.rst:1238
+#: ../Doc/extending/extending.rst:1243
msgid ""
"The ``#define`` is used to tell the header file that it is being included in "
"the exporting module, not a client module. Finally, the module's "
"initialization function must take care of initializing the C API pointer "
"array::"
msgstr ""
+"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête "
+"qu'il est inclus dans le module d'exportation, et non dans un module client. "
+"Enfin, la fonction d'initialisation du module doit prendre en charge "
+"l'initialisation du tableau de pointeurs de l'API C ::"
-#: ../Doc/extending/extending.rst:1264
+#: ../Doc/extending/extending.rst:1269
msgid ""
"Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array "
"would disappear when :func:`PyInit_spam` terminates!"
msgstr ""
+"Notez que ``PySpam_API`` est déclaré ``static`` ; sinon le tableau de "
+"pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !"
-#: ../Doc/extending/extending.rst:1267
+#: ../Doc/extending/extending.rst:1272
msgid ""
"The bulk of the work is in the header file :file:`spammodule.h`, which looks "
"like this::"
msgstr ""
+"L'essentiel du travail se trouve dans le fichier d'en-tête :file:`spammodule."
+"h`, qui ressemble à ceci ::"
-#: ../Doc/extending/extending.rst:1318
+#: ../Doc/extending/extending.rst:1323
msgid ""
"All that a client module must do in order to have access to the function :c:"
"func:`PySpam_System` is to call the function (or rather macro) :c:func:"
"`import_spam` in its initialization function::"
msgstr ""
+"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:"
+"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:"
+"`import_spam` dans sa fonction d'initialisation ::"
-#: ../Doc/extending/extending.rst:1336
+#: ../Doc/extending/extending.rst:1341
msgid ""
"The main disadvantage of this approach is that the file :file:`spammodule.h` "
"is rather complicated. However, the basic structure is the same for each "
"function that is exported, so it has to be learned only once."
msgstr ""
+"Le principal inconvénient de cette approche est que le fichier :file:"
+"`spammodule.h` est assez compliqué. Cependant, la structure de base est la "
+"même pour chaque fonction exportée, ce qui fait qu'elle ne doit être apprise "
+"qu'une seule fois."
-#: ../Doc/extending/extending.rst:1340
+#: ../Doc/extending/extending.rst:1345
msgid ""
"Finally it should be mentioned that Capsules offer additional functionality, "
"which is especially useful for memory allocation and deallocation of the "
@@ -1457,32 +1724,49 @@ msgid ""
"Capsules (files :file:`Include/pycapsule.h` and :file:`Objects/pycapsule.c` "
"in the Python source code distribution)."
msgstr ""
+"Enfin, il convient de mentionner que Capsules offrent des fonctionnalités "
+"supplémentaires, qui sont particulièrement utiles pour l'allocation de la "
+"mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les "
+"détails sont décrits dans le manuel de référence de l'API Python/C dans la "
+"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :"
+"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la "
+"distribution du code source Python)."
-#: ../Doc/extending/extending.rst:1348
+#: ../Doc/extending/extending.rst:1353
msgid "Footnotes"
msgstr "Notes"
-#: ../Doc/extending/extending.rst:1349
+#: ../Doc/extending/extending.rst:1354
msgid ""
"An interface for this function already exists in the standard module :mod:"
"`os` --- it was chosen as a simple and straightforward example."
msgstr ""
+"Une interface pour cette fonction existe déjà dans le module standard :mod:"
+"`os`, elle a été choisie comme un exemple simple et direct."
-#: ../Doc/extending/extending.rst:1352
+#: ../Doc/extending/extending.rst:1357
msgid ""
"The metaphor of \"borrowing\" a reference is not completely correct: the "
"owner still has a copy of the reference."
msgstr ""
+"L'expression « emprunter une référence » n'est pas tout à fait correcte, car "
+"le propriétaire a toujours une copie de la référence."
-#: ../Doc/extending/extending.rst:1355
+#: ../Doc/extending/extending.rst:1360
msgid ""
"Checking that the reference count is at least 1 **does not work** --- the "
"reference count itself could be in freed memory and may thus be reused for "
"another object!"
msgstr ""
+"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne "
+"pas**, le compte de référence lui-même pourrait être en mémoire libérée et "
+"peut donc être réutilisé pour un autre objet !"
-#: ../Doc/extending/extending.rst:1359
+#: ../Doc/extending/extending.rst:1364
msgid ""
"These guarantees don't hold when you use the \"old\" style calling "
"convention --- this is still found in much existing code."
msgstr ""
+"Ces garanties ne sont pas valables lorsqu'on emploie les conventions de "
+"nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code "
+"existant."
diff --git a/extending/newtypes.po b/extending/newtypes.po
index a1d0418cd..cb28a8c18 100644
--- a/extending/newtypes.po
+++ b/extending/newtypes.po
@@ -16,7 +16,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:5
msgid "Defining Extension Types: Assorted Topics"
-msgstr ""
+msgstr "Définir les types d'extension : divers sujets"
#: ../Doc/extending/newtypes.rst:9
msgid ""
@@ -68,16 +68,21 @@ msgid ""
"Here you can put a string (or its address) that you want returned when the "
"Python script references ``obj.__doc__`` to retrieve the doc string."
msgstr ""
+"Ici vous pouvez mettre une chaîne (ou son adresse) que vous voulez renvoyer "
+"lorsque le script Python référence ``obj.__doc__`` pour récupérer le "
+"*docstring*."
#: ../Doc/extending/newtypes.rst:47
msgid ""
"Now we come to the basic type methods -- the ones most extension types will "
"implement."
msgstr ""
+"Nous en arrivons maintenant aux méthodes de type basiques -- celles que la "
+"plupart des types d'extension mettront en œuvre."
#: ../Doc/extending/newtypes.rst:52
msgid "Finalization and De-allocation"
-msgstr ""
+msgstr "Finalisation et de-allocation"
#: ../Doc/extending/newtypes.rst:64
msgid ""
@@ -125,11 +130,11 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:134
msgid ":pep:`442` explains the new finalization scheme."
-msgstr ""
+msgstr ":pep:`442` explique le nouveau schéma de finalisation."
#: ../Doc/extending/newtypes.rst:141
msgid "Object Presentation"
-msgstr ""
+msgstr "Présentation de l'objet"
#: ../Doc/extending/newtypes.rst:143
msgid ""
@@ -165,11 +170,11 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:174
msgid "Here is a simple example::"
-msgstr ""
+msgstr "Voici un exemple simple ::"
#: ../Doc/extending/newtypes.rst:186
msgid "Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs"
#: ../Doc/extending/newtypes.rst:188
msgid ""
@@ -203,7 +208,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:217
msgid "Generic Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs génériques"
#: ../Doc/extending/newtypes.rst:219
msgid ""
@@ -216,6 +221,8 @@ msgid ""
"The name of the attributes must be known when :c:func:`PyType_Ready` is "
"called."
msgstr ""
+"Le nom des attributs doivent être déjà connus lorsqu'on lance :c:func:"
+"`PyType_Ready`."
#: ../Doc/extending/newtypes.rst:225
msgid ""
@@ -244,6 +251,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:239
msgid "The tables are declared as three fields of the type object::"
msgstr ""
+"Les tables sont déclarées sous la forme de trois champs de type objet ::"
#: ../Doc/extending/newtypes.rst:245
msgid ""
@@ -295,35 +303,35 @@ msgstr "Signification"
#: ../Doc/extending/newtypes.rst:286
msgid ":const:`READONLY`"
-msgstr ""
+msgstr ":const:`READONLY`"
#: ../Doc/extending/newtypes.rst:286
msgid "Never writable."
-msgstr ""
+msgstr "Jamais disponible en écriture."
#: ../Doc/extending/newtypes.rst:288
msgid ":const:`READ_RESTRICTED`"
-msgstr ""
+msgstr ":const:`READ_RESTRICTED`"
#: ../Doc/extending/newtypes.rst:288
msgid "Not readable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture, dans le mode restreint."
#: ../Doc/extending/newtypes.rst:290
msgid ":const:`WRITE_RESTRICTED`"
-msgstr ""
+msgstr ":const:`WRITE_RESTRICTED`"
#: ../Doc/extending/newtypes.rst:290
msgid "Not writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en écriture dans le mode restreint."
#: ../Doc/extending/newtypes.rst:292
msgid ":const:`RESTRICTED`"
-msgstr ""
+msgstr ":const:`RESTRICTED`"
#: ../Doc/extending/newtypes.rst:292
msgid "Not readable or writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture ou écriture, en mode restreint."
#: ../Doc/extending/newtypes.rst:301
msgid ""
@@ -334,6 +342,13 @@ msgid ""
"the descriptor from the class object, and get the doc string using its :attr:"
"`__doc__` attribute."
msgstr ""
+"Un avantage intéressant de l'utilisation de la table :c:member:"
+"`~PyTypeObject.tp_members` pour construire les descripteurs qui sont "
+"utilisés à l'exécution, est que à tout attribut défini de cette façon on "
+"peut associer un *docstring*, en écrivant simplement le texte dans la table. "
+"Une application peut utiliser l'API d'introspection pour récupérer le "
+"descripteur de l'objet de classe, et utiliser son attribut :attr:`__doc__` "
+"pour renvoyer le *docstring*."
#: ../Doc/extending/newtypes.rst:307
msgid ""
@@ -343,7 +358,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:321
msgid "Type-specific Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs de type spécifiques"
#: ../Doc/extending/newtypes.rst:323
msgid ""
@@ -379,7 +394,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:365
msgid "Object Comparison"
-msgstr ""
+msgstr "Comparaison des objets"
#: ../Doc/extending/newtypes.rst:371
msgid ""
@@ -408,7 +423,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:414
msgid "Abstract Protocol Support"
-msgstr ""
+msgstr "Support pour le protocole abstrait"
#: ../Doc/extending/newtypes.rst:416
msgid ""
@@ -466,7 +481,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:470
msgid "This function takes three arguments:"
-msgstr ""
+msgstr "Cette fonction prend trois arguments :"
#: ../Doc/extending/newtypes.rst:472
msgid ""
@@ -491,7 +506,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:484
msgid "Here is a toy ``tp_call`` implementation::"
-msgstr ""
+msgstr "Ceci est une implémentation ``tp_call`` très simple ::"
#: ../Doc/extending/newtypes.rst:510
msgid ""
@@ -509,6 +524,10 @@ msgid ""
"tp_iter` handler, which must return an :term:`iterator` object. Here the "
"same guidelines apply as for Python classes:"
msgstr ""
+"Tout objet :term:`iterable` doit implémenter le gestionnaire :c:member:"
+"`~PyTypeObject.tp_iter`, qui doit renvoyer un objet de type :term:"
+"`iterator`. Ici, les mêmes directives s'appliquent de la même façon que "
+"pour les classes *Python* :"
#: ../Doc/extending/newtypes.rst:521
msgid ""
@@ -516,6 +535,9 @@ msgid ""
"independent iterators, a new iterator should be created and returned by each "
"call to :c:member:`~PyTypeObject.tp_iter`."
msgstr ""
+"Pour les collections (telles que les listes et les n-uplets) qui peuvent "
+"implémenter plusieurs itérateurs indépendants, un nouvel itérateur doit être "
+"créé et renvoyé par chaque appel de type :c:member:`~PyTypeObject.tp_iter`."
#: ../Doc/extending/newtypes.rst:524
msgid ""
@@ -541,7 +563,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:545
msgid "Weak Reference Support"
-msgstr ""
+msgstr "Prise en charge de la référence faible"
#: ../Doc/extending/newtypes.rst:547
msgid ""
@@ -549,16 +571,22 @@ msgid ""
"type to participate in the weak reference mechanism without incurring the "
"overhead on performance-critical objects (such as numbers)."
msgstr ""
+"L'un des objectifs de l'implémentation de la référence faible de *Python* "
+"est de permettre à tout type d'objet de participer au mécanisme de référence "
+"faible sans avoir à supporter le surcoût de la performance critique des "
+"certains objets, tels que les nombres."
#: ../Doc/extending/newtypes.rst:552
msgid "Documentation for the :mod:`weakref` module."
-msgstr ""
+msgstr "Documentation pour le module :mod:`weakref`."
#: ../Doc/extending/newtypes.rst:554
msgid ""
"For an object to be weakly referencable, the extension type must do two "
"things:"
msgstr ""
+"Pour qu'un objet soit faiblement référençable, le type d'extension doit "
+"faire deux choses :"
#: ../Doc/extending/newtypes.rst:556
msgid ""
@@ -574,16 +602,23 @@ msgid ""
"offset of the aforementioned field in the C object structure, so that the "
"interpreter knows how to access and modify that field."
msgstr ""
+"Définissez le membre de type :c:member:`~PyTypeObject.tp_weaklistoffset` à "
+"la valeur de décalage (*offset*) du champ susmentionné dans la structure de "
+"l'objet *C*, afin que l'interpréteur sache comment accéder à ce champ et le "
+"modifier."
#: ../Doc/extending/newtypes.rst:565
msgid ""
"Concretely, here is how a trivial object structure would be augmented with "
"the required field::"
msgstr ""
+"Concrètement, voici comment une structure d'objet simple serait complétée "
+"par le champ requis ::"
#: ../Doc/extending/newtypes.rst:573
msgid "And the corresponding member in the statically-declared type object::"
msgstr ""
+"Et le membre correspondant dans l'objet de type déclaré statiquement ::"
#: ../Doc/extending/newtypes.rst:581
msgid ""
@@ -594,7 +629,7 @@ msgstr ""
#: ../Doc/extending/newtypes.rst:597
msgid "More Suggestions"
-msgstr ""
+msgstr "Plus de suggestions"
#: ../Doc/extending/newtypes.rst:599
msgid ""
@@ -604,6 +639,12 @@ msgid ""
"want (for example, ``tp_richcompare``). You will find examples of the "
"function you want to implement."
msgstr ""
+"Pour savoir comment mettre en œuvre une méthode spécifique pour votre "
+"nouveau type de données, téléchargez le code source :term:`CPython`. Allez "
+"dans le répertoire :file:`Objects`, puis cherchez dans les fichiers sources "
+"*C* la fonction ``tp_`` plus la fonction que vous voulez (par exemple, "
+"``tp_richcompare``). Vous trouverez des exemples de la fonction que vous "
+"voulez implémenter."
#: ../Doc/extending/newtypes.rst:605
msgid ""
@@ -611,23 +652,27 @@ msgid ""
"you are implementing, use the :c:func:`PyObject_TypeCheck` function. A "
"sample of its use might be something like the following::"
msgstr ""
+"Lorsque vous avez besoin de vérifier qu'un objet est une instance concrète "
+"du type que vous implémentez, utilisez la fonction :c:func:"
+"`PyObject_TypeCheck`. Voici un exemple de son utilisation ::"
#: ../Doc/extending/newtypes.rst:616
msgid "Download CPython source releases."
-msgstr ""
+msgstr "Télécharger les versions sources de *CPython*."
#: ../Doc/extending/newtypes.rst:616
msgid "https://www.python.org/downloads/source/"
-msgstr ""
+msgstr "https://www.python.org/downloads/source/"
#: ../Doc/extending/newtypes.rst:618
msgid ""
"The CPython project on GitHub, where the CPython source code is developed."
msgstr ""
+"Le projet *CPython* sur *GitHub*, où se trouve le code source *CPython*."
#: ../Doc/extending/newtypes.rst:619
msgid "https://github.com/python/cpython"
-msgstr ""
+msgstr "https://github.com/python/cpython"
#~ msgid "Footnotes"
#~ msgstr "Notes"
diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po
index aaadbb32f..8b3684702 100644
--- a/extending/newtypes_tutorial.po
+++ b/extending/newtypes_tutorial.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-05-02 00:10+0200\n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
"PO-Revision-Date: 2018-06-17 10:15+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -120,14 +120,14 @@ msgstr ""
msgid "The second bit is the definition of the type object. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:99
+#: ../Doc/extending/newtypes_tutorial.rst:100
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:103
+#: ../Doc/extending/newtypes_tutorial.rst:104
msgid ""
"The actual definition of :c:type:`PyTypeObject` in :file:`object.h` has many "
"more :ref:`fields ` than the definition above. The remaining "
@@ -135,23 +135,23 @@ msgid ""
"to not specify them explicitly unless you need them."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:108
+#: ../Doc/extending/newtypes_tutorial.rst:109
msgid "We're going to pick it apart, one field at a time::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:112
+#: ../Doc/extending/newtypes_tutorial.rst:113
msgid ""
"This line is mandatory boilerplate to initialize the ``ob_base`` field "
"mentioned above. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:117
+#: ../Doc/extending/newtypes_tutorial.rst:118
msgid ""
"The name of our type. This will appear in the default textual "
"representation of our objects and in some error messages, for example:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:127
+#: ../Doc/extending/newtypes_tutorial.rst:128
msgid ""
"Note that the name is a dotted name that includes both the module name and "
"the name of the type within the module. The module in this case is :mod:"
@@ -160,14 +160,14 @@ msgid ""
"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:136
+#: ../Doc/extending/newtypes_tutorial.rst:137
msgid ""
"This is so that Python knows how much memory to allocate when creating new :"
"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
"used for variable-sized objects and should otherwise be zero."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:142
+#: ../Doc/extending/newtypes_tutorial.rst:143
msgid ""
"If you want your type to be subclassable from Python, and your type has the "
"same :c:member:`~PyTypeObject.tp_basicsize` as its base type, you may have "
@@ -181,23 +181,23 @@ msgid ""
"your base type, and therefore increasing its size."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:152
+#: ../Doc/extending/newtypes_tutorial.rst:153
msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:156
+#: ../Doc/extending/newtypes_tutorial.rst:157
msgid ""
"All types should include this constant in their flags. It enables all of "
"the members defined until at least Python 3.3. If you need further members, "
"you will need to OR the corresponding flags."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:160
+#: ../Doc/extending/newtypes_tutorial.rst:161
msgid ""
"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:164
+#: ../Doc/extending/newtypes_tutorial.rst:165
msgid ""
"To enable object creation, we have to provide a :c:member:`~PyTypeObject."
"tp_new` handler. This is the equivalent of the Python method :meth:"
@@ -206,53 +206,53 @@ msgid ""
"`PyType_GenericNew`. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:171
+#: ../Doc/extending/newtypes_tutorial.rst:172
msgid ""
"Everything else in the file should be familiar, except for some code in :c:"
"func:`PyInit_custom`::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:177
+#: ../Doc/extending/newtypes_tutorial.rst:178
msgid ""
"This initializes the :class:`Custom` type, filling in a number of members to "
"the appropriate default values, including :attr:`ob_type` that we initially "
"set to *NULL*. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:183
+#: ../Doc/extending/newtypes_tutorial.rst:184
msgid ""
"This adds the type to the module dictionary. This allows us to create :"
"class:`Custom` instances by calling the :class:`Custom` class:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:191
+#: ../Doc/extending/newtypes_tutorial.rst:192
msgid ""
"That's it! All that remains is to build it; put the above code in a file "
"called :file:`custom.c` and:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:200
+#: ../Doc/extending/newtypes_tutorial.rst:201
msgid "in a file called :file:`setup.py`; then typing"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:206
+#: ../Doc/extending/newtypes_tutorial.rst:207
msgid ""
"at a shell should produce a file :file:`custom.so` in a subdirectory; move "
"to that directory and fire up Python --- you should be able to ``import "
"custom`` and play around with Custom objects."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:210
+#: ../Doc/extending/newtypes_tutorial.rst:211
msgid "That wasn't so hard, was it?"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:212
+#: ../Doc/extending/newtypes_tutorial.rst:213
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:216
+#: ../Doc/extending/newtypes_tutorial.rst:217
msgid ""
"While this documentation showcases the standard :mod:`distutils` module for "
"building C extensions, it is recommended in real-world use cases to use the "
@@ -262,32 +262,32 @@ msgid ""
"packages/>`_."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:224
+#: ../Doc/extending/newtypes_tutorial.rst:225
msgid "Adding data and methods to the Basic example"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:226
+#: ../Doc/extending/newtypes_tutorial.rst:227
msgid ""
"Let's extend the basic example to add some data and methods. Let's also "
"make the type usable as a base class. We'll create a new module, :mod:"
"`custom2` that adds these capabilities:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:233
+#: ../Doc/extending/newtypes_tutorial.rst:234
msgid "This version of the module has a number of changes."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:235
+#: ../Doc/extending/newtypes_tutorial.rst:236
msgid "We've added an extra include::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:239
+#: ../Doc/extending/newtypes_tutorial.rst:240
msgid ""
"This include provides declarations that we use to handle attributes, as "
"described a bit later."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:242
+#: ../Doc/extending/newtypes_tutorial.rst:243
msgid ""
"The :class:`Custom` type now has three data attributes in its C struct, "
"*first*, *last*, and *number*. The *first* and *last* variables are Python "
@@ -295,21 +295,21 @@ msgid ""
"integer."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:246
+#: ../Doc/extending/newtypes_tutorial.rst:247
msgid "The object structure is updated accordingly::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:255
+#: ../Doc/extending/newtypes_tutorial.rst:256
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:266
+#: ../Doc/extending/newtypes_tutorial.rst:267
msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:270
+#: ../Doc/extending/newtypes_tutorial.rst:271
msgid ""
"This method first clears the reference counts of the two Python attributes. :"
"c:func:`Py_XDECREF` correctly handles the case where its argument is *NULL* "
@@ -320,7 +320,7 @@ msgid ""
"subclass."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:279
+#: ../Doc/extending/newtypes_tutorial.rst:280
msgid ""
"The explicit cast to ``destructor`` above is needed because we defined "
"``Custom_dealloc`` to take a ``CustomObject *`` argument, but the "
@@ -329,17 +329,17 @@ msgid ""
"oriented polymorphism, in C!"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:285
+#: ../Doc/extending/newtypes_tutorial.rst:286
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:309
+#: ../Doc/extending/newtypes_tutorial.rst:310
msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:313
+#: ../Doc/extending/newtypes_tutorial.rst:314
msgid ""
"The ``tp_new`` handler is responsible for creating (as opposed to "
"initializing) objects of the type. It is exposed in Python as the :meth:"
@@ -350,7 +350,7 @@ msgid ""
"attributes to non-*NULL* default values."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:321
+#: ../Doc/extending/newtypes_tutorial.rst:322
msgid ""
"``tp_new`` is passed the type being instantiated (not necessarily "
"``CustomType``, if a subclass is instantiated) and any arguments passed when "
@@ -360,25 +360,25 @@ msgid ""
"k.a. ``tp_init`` in C or ``__init__`` in Python) methods."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:329
+#: ../Doc/extending/newtypes_tutorial.rst:330
msgid ""
"``tp_new`` shouldn't call ``tp_init`` explicitly, as the interpreter will do "
"it itself."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:332
+#: ../Doc/extending/newtypes_tutorial.rst:333
msgid ""
"The ``tp_new`` implementation calls the :c:member:`~PyTypeObject.tp_alloc` "
"slot to allocate memory::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:337
+#: ../Doc/extending/newtypes_tutorial.rst:338
msgid ""
"Since memory allocation may fail, we must check the :c:member:`~PyTypeObject."
"tp_alloc` result against *NULL* before proceeding."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:341
+#: ../Doc/extending/newtypes_tutorial.rst:342
msgid ""
"We didn't fill the :c:member:`~PyTypeObject.tp_alloc` slot ourselves. "
"Rather :c:func:`PyType_Ready` fills it for us by inheriting it from our base "
@@ -386,7 +386,7 @@ msgid ""
"allocation strategy."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:347
+#: ../Doc/extending/newtypes_tutorial.rst:348
msgid ""
"If you are creating a co-operative :c:member:`~PyTypeObject.tp_new` (one "
"that calls a base type's :c:member:`~PyTypeObject.tp_new` or :meth:"
@@ -399,17 +399,17 @@ msgid ""
"subclasses without getting a :exc:`TypeError`.)"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:357
+#: ../Doc/extending/newtypes_tutorial.rst:358
msgid ""
"We also define an initialization function which accepts arguments to provide "
"initial values for our instance::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:386
+#: ../Doc/extending/newtypes_tutorial.rst:387
msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:390
+#: ../Doc/extending/newtypes_tutorial.rst:391
msgid ""
"The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:"
"`__init__` method. It is used to initialize an object after it's created. "
@@ -417,7 +417,7 @@ msgid ""
"return either ``0`` on success or ``-1`` on error."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:395
+#: ../Doc/extending/newtypes_tutorial.rst:396
msgid ""
"Unlike the ``tp_new`` handler, there is no guarantee that ``tp_init`` is "
"called at all (for example, the :mod:`pickle` module by default doesn't "
@@ -428,7 +428,7 @@ msgid ""
"``first`` member like this::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:409
+#: ../Doc/extending/newtypes_tutorial.rst:410
msgid ""
"But this would be risky. Our type doesn't restrict the type of the "
"``first`` member, so it could be any kind of object. It could have a "
@@ -438,49 +438,49 @@ msgid ""
"and modifies our object."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:416
+#: ../Doc/extending/newtypes_tutorial.rst:417
msgid ""
"To be paranoid and protect ourselves against this possibility, we almost "
"always reassign members before decrementing their reference counts. When "
"don't we have to do this?"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:420
+#: ../Doc/extending/newtypes_tutorial.rst:421
msgid "when we absolutely know that the reference count is greater than 1;"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:422
+#: ../Doc/extending/newtypes_tutorial.rst:423
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:425
+#: ../Doc/extending/newtypes_tutorial.rst:426
msgid ""
"when decrementing a reference count in a :c:member:`~PyTypeObject."
"tp_dealloc` handler on a type which doesn't support cyclic garbage "
"collection [#]_."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:428
+#: ../Doc/extending/newtypes_tutorial.rst:429
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:441
+#: ../Doc/extending/newtypes_tutorial.rst:442
msgid ""
"and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:445
+#: ../Doc/extending/newtypes_tutorial.rst:446
msgid ""
"Each member definition has a member name, type, offset, access flags and "
"documentation string. See the :ref:`Generic-Attribute-Management` section "
"below for details."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:449
+#: ../Doc/extending/newtypes_tutorial.rst:450
msgid ""
"A disadvantage of this approach is that it doesn't provide a way to restrict "
"the types of objects that can be assigned to the Python attributes. We "
@@ -491,13 +491,13 @@ msgid ""
"deleted."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:456
+#: ../Doc/extending/newtypes_tutorial.rst:457
msgid ""
"We define a single method, :meth:`Custom.name()`, that outputs the objects "
"name as the concatenation of the first and last names. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:473
+#: ../Doc/extending/newtypes_tutorial.rst:474
msgid ""
"The method is implemented as a C function that takes a :class:`Custom` (or :"
"class:`Custom` subclass) instance as the first argument. Methods always "
@@ -507,7 +507,7 @@ msgid ""
"method is equivalent to the Python method:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:485
+#: ../Doc/extending/newtypes_tutorial.rst:486
msgid ""
"Note that we have to check for the possibility that our :attr:`first` and :"
"attr:`last` members are *NULL*. This is because they can be deleted, in "
@@ -516,23 +516,23 @@ msgid ""
"We'll see how to do that in the next section."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:491
+#: ../Doc/extending/newtypes_tutorial.rst:492
msgid ""
"Now that we've defined the method, we need to create an array of method "
"definitions::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:501
+#: ../Doc/extending/newtypes_tutorial.rst:502
msgid ""
"(note that we used the :const:`METH_NOARGS` flag to indicate that the method "
"is expecting no arguments other than *self*)"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:504
+#: ../Doc/extending/newtypes_tutorial.rst:505
msgid "and assign it to the :c:member:`~PyTypeObject.tp_methods` slot::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:508
+#: ../Doc/extending/newtypes_tutorial.rst:509
msgid ""
"Finally, we'll make our type usable as a base class for subclassing. We've "
"written our methods carefully so far so that they don't make any assumptions "
@@ -540,22 +540,22 @@ msgid ""
"to add the :const:`Py_TPFLAGS_BASETYPE` to our class flag definition::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:515
+#: ../Doc/extending/newtypes_tutorial.rst:516
msgid ""
"We rename :c:func:`PyInit_custom` to :c:func:`PyInit_custom2`, update the "
"module name in the :c:type:`PyModuleDef` struct, and update the full class "
"name in the :c:type:`PyTypeObject` struct."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:519
+#: ../Doc/extending/newtypes_tutorial.rst:520
msgid "Finally, we update our :file:`setup.py` file to build the new module:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:532
+#: ../Doc/extending/newtypes_tutorial.rst:533
msgid "Providing finer control over data attributes"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:534
+#: ../Doc/extending/newtypes_tutorial.rst:535
msgid ""
"In this section, we'll provide finer control over how the :attr:`first` and :"
"attr:`last` attributes are set in the :class:`Custom` example. In the "
@@ -564,14 +564,14 @@ msgid ""
"make sure that these attributes always contain strings."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:543
+#: ../Doc/extending/newtypes_tutorial.rst:544
msgid ""
"To provide greater control, over the :attr:`first` and :attr:`last` "
"attributes, we'll use custom getter and setter functions. Here are the "
"functions for getting and setting the :attr:`first` attribute::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:574
+#: ../Doc/extending/newtypes_tutorial.rst:575
msgid ""
"The getter function is passed a :class:`Custom` object and a \"closure\", "
"which is a void pointer. In this case, the closure is ignored. (The "
@@ -581,7 +581,7 @@ msgid ""
"data in the closure.)"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:580
+#: ../Doc/extending/newtypes_tutorial.rst:581
msgid ""
"The setter function is passed the :class:`Custom` object, the new value, and "
"the closure. The new value may be *NULL*, in which case the attribute is "
@@ -589,32 +589,32 @@ msgid ""
"or if its new value is not a string."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:585
+#: ../Doc/extending/newtypes_tutorial.rst:586
msgid "We create an array of :c:type:`PyGetSetDef` structures::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:595
+#: ../Doc/extending/newtypes_tutorial.rst:596
msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:599
+#: ../Doc/extending/newtypes_tutorial.rst:600
msgid ""
"The last item in a :c:type:`PyGetSetDef` structure is the \"closure\" "
"mentioned above. In this case, we aren't using a closure, so we just pass "
"*NULL*."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:602
+#: ../Doc/extending/newtypes_tutorial.rst:603
msgid "We also remove the member definitions for these attributes::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:610
+#: ../Doc/extending/newtypes_tutorial.rst:611
msgid ""
"We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only "
"allow strings [#]_ to be passed::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:639
+#: ../Doc/extending/newtypes_tutorial.rst:640
msgid ""
"With these changes, we can assure that the ``first`` and ``last`` members "
"are never *NULL* so we can remove checks for *NULL* values in almost all "
@@ -624,25 +624,25 @@ msgid ""
"possibility that the initialization of these members failed in ``tp_new``."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:646
+#: ../Doc/extending/newtypes_tutorial.rst:647
msgid ""
"We also rename the module initialization function and module name in the "
"initialization function, as we did before, and we add an extra definition to "
"the :file:`setup.py` file."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:652
+#: ../Doc/extending/newtypes_tutorial.rst:653
msgid "Supporting cyclic garbage collection"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:654
+#: ../Doc/extending/newtypes_tutorial.rst:655
msgid ""
"Python has a :term:`cyclic garbage collector (GC) ` that "
"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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:664
+#: ../Doc/extending/newtypes_tutorial.rst:665
msgid ""
"In this example, we create a list that contains itself. When we delete it, "
"it still has a reference from itself. Its reference count doesn't drop to "
@@ -650,7 +650,7 @@ msgid ""
"out that the list is garbage and free it."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:669
+#: ../Doc/extending/newtypes_tutorial.rst:670
msgid ""
"In the second version of the :class:`Custom` example, we allowed any kind of "
"object to be stored in the :attr:`first` or :attr:`last` attributes [#]_. "
@@ -659,7 +659,7 @@ msgid ""
"reasons, :class:`Custom` objects can participate in cycles:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:683
+#: ../Doc/extending/newtypes_tutorial.rst:684
msgid ""
"To allow a :class:`Custom` instance participating in a reference cycle to be "
"properly detected and collected by the cyclic GC, our :class:`Custom` type "
@@ -667,13 +667,13 @@ msgid ""
"slots:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:690
+#: ../Doc/extending/newtypes_tutorial.rst:691
msgid ""
"First, the traversal method lets the cyclic GC know about subobjects that "
"could participate in cycles::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:710
+#: ../Doc/extending/newtypes_tutorial.rst:711
msgid ""
"For each subobject that can participate in cycles, we need to call the :c:"
"func:`visit` function, which is passed to the traversal method. The :c:func:"
@@ -682,26 +682,26 @@ msgid ""
"be returned if it is non-zero."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:716
+#: ../Doc/extending/newtypes_tutorial.rst:717
msgid ""
"Python provides a :c:func:`Py_VISIT` macro that automates calling visit "
"functions. With :c:func:`Py_VISIT`, we can minimize the amount of "
"boilerplate in ``Custom_traverse``::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:729
+#: ../Doc/extending/newtypes_tutorial.rst:730
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:732
+#: ../Doc/extending/newtypes_tutorial.rst:733
msgid ""
"Second, we need to provide a method for clearing any subobjects that can "
"participate in cycles::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:743
+#: ../Doc/extending/newtypes_tutorial.rst:744
msgid ""
"Notice the use of the :c:func:`Py_CLEAR` macro. It is the recommended and "
"safe way to clear data attributes of arbitrary types while decrementing "
@@ -711,18 +711,18 @@ msgid ""
"again (*especially* if there is a reference cycle)."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:751
+#: ../Doc/extending/newtypes_tutorial.rst:752
msgid "You could emulate :c:func:`Py_CLEAR` by writing::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:758
+#: ../Doc/extending/newtypes_tutorial.rst:759
msgid ""
"Nevertheless, it is much easier and less error-prone to always use :c:func:"
"`Py_CLEAR` when deleting an attribute. Don't try to micro-optimize at the "
"expense of robustness!"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:762
+#: ../Doc/extending/newtypes_tutorial.rst:763
msgid ""
"The deallocator ``Custom_dealloc`` may call arbitrary code when clearing "
"attributes. It means the circular GC can be triggered inside the function. "
@@ -732,12 +732,12 @@ msgid ""
"`PyObject_GC_UnTrack` and ``Custom_clear``::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:777
+#: ../Doc/extending/newtypes_tutorial.rst:778
msgid ""
"Finally, we add the :const:`Py_TPFLAGS_HAVE_GC` flag to the class flags::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:781
+#: ../Doc/extending/newtypes_tutorial.rst:782
msgid ""
"That's pretty much it. If we had written custom :c:member:`~PyTypeObject."
"tp_alloc` or :c:member:`~PyTypeObject.tp_free` handlers, we'd need to modify "
@@ -745,11 +745,11 @@ msgid ""
"automatically provided."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:787
+#: ../Doc/extending/newtypes_tutorial.rst:788
msgid "Subclassing other types"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:789
+#: ../Doc/extending/newtypes_tutorial.rst:790
msgid ""
"It is possible to create new extension types that are derived from existing "
"types. It is easiest to inherit from the built in types, since an extension "
@@ -757,7 +757,7 @@ msgid ""
"share these :c:type:`PyTypeObject` structures between extension modules."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:794
+#: ../Doc/extending/newtypes_tutorial.rst:795
msgid ""
"In this example we will create a :class:`SubList` type that inherits from "
"the built-in :class:`list` type. The new type will be completely compatible "
@@ -765,34 +765,34 @@ msgid ""
"that increases an internal counter:"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:814
+#: ../Doc/extending/newtypes_tutorial.rst:815
msgid ""
"As you can see, the source code closely resembles the :class:`Custom` "
"examples in previous sections. We will break down the main differences "
"between them. ::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:822
+#: ../Doc/extending/newtypes_tutorial.rst:823
msgid ""
"The primary difference for derived type objects is that the base type's "
"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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:826
+#: ../Doc/extending/newtypes_tutorial.rst:827
msgid ""
"When a Python object is a :class:`SubList` instance, its ``PyObject *`` "
"pointer can be safely cast to both ``PyListObject *`` and ``SubListObject "
"*``::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:838
+#: ../Doc/extending/newtypes_tutorial.rst:839
msgid ""
"We see above how to call through to the :attr:`__init__` method of the base "
"type."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:841
+#: ../Doc/extending/newtypes_tutorial.rst:842
msgid ""
"This pattern is important when writing a type with custom :c:member:"
"`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_dealloc` members. "
@@ -801,7 +801,7 @@ msgid ""
"the base class handle it by calling its own :c:member:`~PyTypeObject.tp_new`."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:847
+#: ../Doc/extending/newtypes_tutorial.rst:848
msgid ""
"The :c:type:`PyTypeObject` struct supports a :c:member:`~PyTypeObject."
"tp_base` specifying the type's concrete base class. Due to cross-platform "
@@ -810,7 +810,7 @@ msgid ""
"function::"
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:870
+#: ../Doc/extending/newtypes_tutorial.rst:871
msgid ""
"Before calling :c:func:`PyType_Ready`, the type structure must have the :c:"
"member:`~PyTypeObject.tp_base` slot filled in. When we are deriving an "
@@ -819,29 +819,29 @@ msgid ""
"from the base type will be inherited."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:876
+#: ../Doc/extending/newtypes_tutorial.rst:877
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:881
+#: ../Doc/extending/newtypes_tutorial.rst:882
msgid "Footnotes"
msgstr "Notes"
-#: ../Doc/extending/newtypes_tutorial.rst:882
+#: ../Doc/extending/newtypes_tutorial.rst:883
msgid ""
"This is true when we know that the object is a basic type, like a string or "
"a float."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:885
+#: ../Doc/extending/newtypes_tutorial.rst:886
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 ""
-#: ../Doc/extending/newtypes_tutorial.rst:888
+#: ../Doc/extending/newtypes_tutorial.rst:889
msgid ""
"We now know that the first and last members are strings, so perhaps we could "
"be less careful about decrementing their reference counts, however, we "
@@ -851,7 +851,7 @@ msgid ""
"objects."
msgstr ""
-#: ../Doc/extending/newtypes_tutorial.rst:894
+#: ../Doc/extending/newtypes_tutorial.rst:895
msgid ""
"Also, even with our attributes restricted to strings instances, the user "
"could pass arbitrary :class:`str` subclasses and therefore still create "
diff --git a/extending/windows.po b/extending/windows.po
index 205ee38ae..c818f3a3e 100644
--- a/extending/windows.po
+++ b/extending/windows.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-21 09:15+0200\n"
-"PO-Revision-Date: 2018-10-04 17:24+0200\n"
+"PO-Revision-Date: 2019-06-01 23:38+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -167,17 +167,17 @@ msgid ""
"application or DLL."
msgstr ""
"Sur Windows, il y a deux types de bibliothèques, une bibliothèque statique "
-"et une bibliothèque d'import (toutes deux appelées :file:`.lib`). Une "
+"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 "
-"du code pouvant être inclus si nécessaire. Une bibliothèque d'import 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é. Comme ça "
-"le lieur utilise les informations provenant de la bibliothèque d'import pour "
-"construire la table de conversion pour utiliser les identificateurs qui ne "
-"sont pas inclus dans la DLL. Quand une application ou une DLL est lié, une "
-"bibliothèque d'import peut être générée, qui devra être utilisée pour tous "
-"les futures DLL dépendantes aux symboles provenant de l'application ou de la "
-"DLL."
+"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 "
+"ça le lieur utilise les informations provenant de la bibliothèque "
+"d'importation pour construire la table de conversion pour utiliser les "
+"identificateurs qui ne sont pas inclus dans la DLL. Quand une application ou "
+"une DLL est liée, une bibliothèque d'importation peut être générée, qui "
+"devra être utilisée pour toutes les futures DLL dépendantes aux symboles "
+"provenant de l'application ou de la DLL."
#: ../Doc/extending/windows.rst:86
msgid ""
@@ -205,10 +205,10 @@ msgid ""
"On Unix, linking with a library is more like ``from spam import *``; it does "
"create a separate copy."
msgstr ""
-"Sur Windows, utiliser une bibliothèque d'import est comme utiliser ``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éé une copie séparée."
+"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 "
+"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."
#: ../Doc/extending/windows.rst:103
msgid "Using DLLs in Practice"
@@ -276,8 +276,8 @@ msgid ""
"the Project Settings dialog, Link tab, to specify *ignore default "
"libraries*. Add the correct :file:`msvcrtxx.lib` to the list of libraries."
msgstr ""
-"\\ Developer Studio apportera beaucoup de bibliothèques d'import dont vous "
-"n'avez pas vraiment besoin, augmentant d'environ 100ko votre exécutable. "
-"Pour s'en débarrasser, allez dans les Paramètres du Projet, onglet Lien, "
-"pour préciser *ignorer les bibliothèques par défaut*. Et la :file:`msvcrtxx."
-"lib` correcte à la liste des bibliothèques."
+"\\ Developer Studio apportera beaucoup de bibliothèques d'importation dont "
+"vous n'avez pas vraiment besoin, augmentant d'environ 100ko votre "
+"exécutable. Pour s'en débarrasser, allez dans les Paramètres du Projet, "
+"onglet Lien, pour préciser *ignorer les bibliothèques par défaut*. Et la :"
+"file:`msvcrtxx.lib` correcte à la liste des bibliothèques."
diff --git a/faq/design.po b/faq/design.po
index d9568157a..0c6abcda3 100644
--- a/faq/design.po
+++ b/faq/design.po
@@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-29 16:06+0100\n"
-"PO-Revision-Date: 2018-12-14 15:10+0100\n"
+"PO-Revision-Date: 2019-03-21 21:04+0100\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \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\n"
+"X-Generator: Poedit 2.2.1\n"
#: ../Doc/faq/design.rst:3
msgid "Design and History FAQ"
@@ -159,7 +159,7 @@ msgid ""
msgstr ""
"la valeur stockée pour ``x`` est une (très bonne) approximation de la valeur "
"décimale ``1.2``, mais cette valeur n'est pas exacte. Sur une machine "
-"typique, la valeur stockée est en fait : ::"
+"typique, la valeur stockée est en fait ::"
#: ../Doc/faq/design.rst:81
msgid "which is exactly::"
@@ -303,7 +303,7 @@ msgstr ""
"les références vers des noms non-qualifiés au sein d'une méthode n'ont pas à "
"être cherchés dans l'annuaire d'instances. En d'autres termes, les variables "
"locales et les variables d'instance vivent dans deux différents espaces de "
-"noms, et vous devez dire à Python quel espace de noms utiliser."
+"nommage, et vous devez dire à Python quel espace de nommage utiliser."
#: ../Doc/faq/design.rst:150
msgid "Why can't I use an assignment in an expression?"
@@ -504,7 +504,7 @@ msgstr ""
"train de dire à une séquence de joindre ses membres avec une constante de "
"chaîne\". Malheureusement, vous ne l'êtes pas. Pour quelque raison, il "
"semble être bien moins difficile d'avoir :meth:`~str.split` en tant que "
-"méthode de chaîne, puisque dans ce cas il est facile de voir que ::"
+"méthode de chaîne, puisque dans ce cas il est facile de voir que ::"
#: ../Doc/faq/design.rst:269
msgid ""
@@ -823,8 +823,8 @@ msgid ""
"about these). Python is, however, aggressive about cleaning up memory on "
"exit and does try to destroy every single object."
msgstr ""
-"Les objets référencés depuis les espaces de noms globaux des modules Python "
-"ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
+"Les objets référencés depuis les espaces de nommage globaux des modules "
+"Python ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
"produire s'il y a des références circulaires. Il y a aussi certaines parties "
"de mémoire qui sont alloués par la bibliothèque C qui sont impossibles à "
"libérer (par exemple un outil comme *Purify* s'en plaindra). Python est, "
@@ -1094,7 +1094,7 @@ msgstr ""
"`__eq__` et :meth:`__hash__`. Vous devez ensuite vous assurer que la valeur "
"de hachage pour tous ces objets *wrapper* qui résident dans un dictionnaire "
"(ou une autre structure basée sur le hachage), restent fixes pendant que "
-"l'objet est dans le dictionnaire (ou une autre structure). ::"
+"l'objet est dans le dictionnaire (ou une autre structure). ::"
#: ../Doc/faq/design.rst:574
msgid ""
@@ -1102,9 +1102,9 @@ msgid ""
"members of the list may be unhashable and also by the possibility of "
"arithmetic overflow."
msgstr ""
-"Notez que le calcul de hachage peut être compliqué car il est possible que certains "
-"membres de la liste peuvent être impossible à hacher et aussi par la "
-"possibilité de débordement arithmétique."
+"Notez que le calcul de hachage peut être compliqué car il est possible que "
+"certains membres de la liste peuvent être impossible à hacher et aussi par "
+"la possibilité de débordement arithmétique."
#: ../Doc/faq/design.rst:578
msgid ""
@@ -1114,6 +1114,11 @@ msgid ""
"not. If you fail to meet these restrictions dictionaries and other hash "
"based structures will misbehave."
msgstr ""
+"De plus, il faut toujours que, si ``o1 == o2`` (par exemple ``o1.__eq__(o2) "
+"vaut True``) alors ``hash(o1) == hash(o2)`` (par exemple, ``o1.__hash__() == "
+"o2.__hash__()``), que l’objet se trouve dans un dictionnaire ou pas. Si vous "
+"ne remplissez pas ces conditions, les dictionnaires et autres structures "
+"basées sur le hachage se comporteront mal."
#: ../Doc/faq/design.rst:583
msgid ""
@@ -1122,6 +1127,11 @@ msgid ""
"you are prepared to think hard about the requirements and the consequences "
"of not meeting them correctly. Consider yourself warned."
msgstr ""
+"Dans le cas de *ListWrapper*, chaque fois que l'objet *wrapper* est dans un "
+"dictionnaire, la liste encapsulée ne doit pas changer pour éviter les "
+"anomalies. Ne faites pas cela à moins que vous n’ayez pensé aux potentielles "
+"conséquences de ne pas satisfaire entièrement ces conditions. Vous avez été "
+"prévenus."
#: ../Doc/faq/design.rst:590
msgid "Why doesn't list.sort() return the sorted list?"
@@ -1168,6 +1178,10 @@ msgid ""
"module. Many feel that compile-time enforcement of interface specifications "
"helps in the construction of large programs."
msgstr ""
+"Une spécification d'interface pour un module fourni par des langages tels "
+"que C++ et Java décrit les prototypes pour les méthodes et les fonctions du "
+"module. Beaucoup estiment que la vérification au moment de la compilation "
+"des spécifications d'interface aide à la construction de grands programmes."
#: ../Doc/faq/design.rst:615
msgid ""
@@ -1178,6 +1192,13 @@ msgid ""
"`~collections.abc.Iterable`, :class:`~collections.abc.Container`, and :class:"
"`~collections.abc.MutableMapping`."
msgstr ""
+"Python 2.6 ajoute un module :mod:`abc` qui vous permet de définir des "
+"classes de base abstraites (ABCs). Vous pouvez ensuite utiliser :func:"
+"`isinstance` et :func:`issubclass` pour vérifier si une instance ou une "
+"classe implémente une ABC particulière. Le module :mod:`collections.abc` "
+"définit un ensemble d'ABCs utiles telles que :class:`~collections.abc."
+"Iterable`, :class:`~collections.abc.Container` et :class:`collections.abc."
+"MutableMapping`."
#: ../Doc/faq/design.rst:622
msgid ""
@@ -1185,6 +1206,10 @@ msgid ""
"obtained by an appropriate test discipline for components. There is also a "
"tool, PyChecker, which can be used to find problems due to subclassing."
msgstr ""
+"Pour Python, la plupart des avantages des spécifications d'interface peuvent "
+"être obtenus par une discipline de test appropriée pour les composants. Il "
+"existe aussi un outil, PyChecker, qui peut être utilisé pour trouver des "
+"problèmes d'héritage."
#: ../Doc/faq/design.rst:626
msgid ""
@@ -1197,6 +1222,15 @@ msgid ""
"be used to construct exhaustive test suites that exercise every line of code "
"in a module."
msgstr ""
+"Une bonne suite de tests pour un module peut à la fois fournir un test de "
+"non régression et servir de spécification d'interface de module ainsi qu'un "
+"ensemble d'exemples. De nombreux modules Python peuvent être exécutés en "
+"tant que script pour fournir un simple « auto-test ». Même les modules qui "
+"utilisent des interfaces externes complexes peuvent souvent être testés "
+"isolément à l'aide d'émulations triviales embryonnaires de l'interface "
+"externe. Les modules :mod:`doctest` et :mod:`UnitTest` ou des frameworks de "
+"test tiers peuvent être utilisés pour construire des suites de tests "
+"exhaustives qui éprouvent chaque ligne de code dans un module."
#: ../Doc/faq/design.rst:634
msgid ""
@@ -1208,6 +1242,15 @@ msgid ""
"test that your :meth:`append` implementation will actually do this "
"correctly, but it's trivial to check this property in a test suite."
msgstr ""
+"Une discipline de test appropriée peut aider à construire des applications "
+"complexes de grande taille en Python aussi bien que le feraient des "
+"spécifications d'interface. En fait, c'est peut être même mieux parce qu'une "
+"spécification d'interface ne peut pas tester certaines propriétés d'un "
+"programme. Par exemple, la méthode :meth:`Append` est censée ajouter de "
+"nouveaux éléments à la fin d'une liste « sur place » ; une spécification "
+"d'interface ne peut pas tester que votre implémentation de :meth:`append` va "
+"réellement le faire correctement, mais il est trivial de vérifier cette "
+"propriété dans une suite de tests."
#: ../Doc/faq/design.rst:642
msgid ""
@@ -1217,6 +1260,12 @@ msgid ""
"before you write any of the actual code. Of course Python allows you to be "
"sloppy and not write test cases at all."
msgstr ""
+"L'écriture des suites de tests est très utile, et vous voudrez peut-être "
+"concevoir votre code de manière à le rendre facilement testable. Une "
+"technique de plus en plus populaire, le développement dirigé par les tests, "
+"requiert d'écrire d'abord des éléments de la suite de tests, avant d'écrire "
+"le code réel. Bien sûr, Python vous permet d'être laxiste et de ne pas "
+"écrire de test du tout."
#: ../Doc/faq/design.rst:650
msgid "Why is there no goto?"
@@ -1292,7 +1341,7 @@ msgid ""
"If you're trying to build a pathname for a DOS command, try e.g. one of ::"
msgstr ""
"Si vous essayez de construire un chemin d'accès pour une commande DOS, "
-"essayez par exemple l'un de ceux-là ::"
+"essayez par exemple l'un de ceux-là ::"
#: ../Doc/faq/design.rst:698
msgid "Why doesn't Python have a \"with\" statement for attribute assignments?"
@@ -1399,7 +1448,7 @@ msgstr ""
#: ../Doc/faq/design.rst:761
msgid "versus ::"
-msgstr "versus ::"
+msgstr "versus ::"
#: ../Doc/faq/design.rst:766
msgid ""
diff --git a/faq/extending.po b/faq/extending.po
index 1d2c8f693..2bf610334 100644
--- a/faq/extending.po
+++ b/faq/extending.po
@@ -5,14 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-17 21:38+0100\n"
-"PO-Revision-Date: 2018-02-15 00:37+0100\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2019-05-23 16:48+0200\n"
+"PO-Revision-Date: 2019-08-31 11:36+0200\n"
+"Last-Translator: Zepmanbc \n"
"Language-Team: FRENCH \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"
#: ../Doc/faq/extending.rst:3
msgid "Extending/Embedding FAQ"
@@ -32,10 +33,15 @@ msgid ""
"exceptions and even new types in C. This is explained in the document :ref:"
"`extending-index`."
msgstr ""
+"Oui, vous pouvez créer des modules intégrés contenant des fonctions, des "
+"variables, des exceptions et même de nouveaux types en C. Ceci est expliqué "
+"dans le document :ref:`extending-index`."
#: ../Doc/faq/extending.rst:22
msgid "Most intermediate or advanced Python books will also cover this topic."
msgstr ""
+"La plupart des livres Python intermédiaires ou avancés couvrent également ce "
+"sujet."
#: ../Doc/faq/extending.rst:26
msgid "Can I create my own functions in C++?"
@@ -74,6 +80,11 @@ msgid ""
"Cython and Pyrex make it possible to write an extension without having to "
"learn Python's C API."
msgstr ""
+"`Cython `_ et son cousin `Pyrex `_ sont des compilateurs qui "
+"acceptent une forme légèrement modifiée de Python et produisent du code C "
+"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir "
+"à connaître l'API C de Python."
#: ../Doc/faq/extending.rst:50
msgid ""
@@ -85,10 +96,19 @@ msgid ""
"html>`_, or `Weave `_ are also alternatives "
"for wrapping C++ libraries."
msgstr ""
+"Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour "
+"laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer "
+"d'encapsuler les types de données et fonctions de la bibliothèque avec un "
+"outil tel que `SWIG `_. `SIP `__, `CXX `_, `Boost `_ ou "
+"`Weave `_ sont également des alternatives "
+"pour encapsuler des bibliothèques C++."
#: ../Doc/faq/extending.rst:61
msgid "How can I execute arbitrary Python statements from C?"
msgstr ""
+"Comment puis-je exécuter des instructions quelconques Python à partir de C ?"
#: ../Doc/faq/extending.rst:63
msgid ""
@@ -99,10 +119,18 @@ msgid ""
"func:`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` in "
"``Python/pythonrun.c``."
msgstr ""
+"La fonction de plus haut niveau pour ce faire est :c:func:"
+"`PyRun_SimpleStringString` qui prend une chaîne pour seul argument afin de "
+"l'exécuter dans le contexte du module ``__main__`` et renvoie ``0`` en cas "
+"de succès et ``-1`` quand une exception se produit (incluant :exc:"
+"`SyntaxError`). Pour une meilleure maîtrise, utilisez :c:func:"
+"`PyRun_String` ; voir le code source pour :c:func:`PyRun_SimpleString` dans "
+"``Python/pythonrun.c``."
#: ../Doc/faq/extending.rst:72
msgid "How can I evaluate an arbitrary Python expression from C?"
msgstr ""
+"Comment puis-je évaluer une expression quelconque de Python à partir de C ?"
#: ../Doc/faq/extending.rst:74
msgid ""
@@ -110,10 +138,13 @@ msgid ""
"start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it "
"and returns its value."
msgstr ""
+"Appelez la fonction :c:func:`PyRun_String` de la question précédente avec le "
+"symbole de départ :c:data:`Py_eval_input` ; il analyse une expression, "
+"l'évalue et renvoie sa valeur."
#: ../Doc/faq/extending.rst:80
msgid "How do I extract C values from a Python object?"
-msgstr ""
+msgstr "Comment puis-je extraire des donnés en C d'un objet Python ?"
#: ../Doc/faq/extending.rst:82
msgid ""
@@ -122,6 +153,10 @@ msgid ""
"specified index. Lists have similar functions, :c:func:`PyListSize` and :c:"
"func:`PyList_GetItem`."
msgstr ""
+"Cela dépend du type d'objet. Si c'est un tuple, :c:func:`PyTuple_Size` "
+"renvoie sa longueur et :c:func:`PyTuple_GetItem` renvoie l'élément à l'index "
+"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :"
+"c:func:`PyList_GetItem`."
#: ../Doc/faq/extending.rst:87
msgid ""
@@ -130,6 +165,10 @@ msgid ""
"Note that Python bytes objects may contain null bytes so C's :c:func:"
"`strlen` should not be used."
msgstr ""
+"Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:"
+"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa longueur. "
+"Notez que les objets bytes en Python peuvent contenir des valeurs nulles, "
+"c'est pourquoi il ne faut pas utiliser la fonction C :c:func:`strlen`."
#: ../Doc/faq/extending.rst:92
msgid ""
@@ -137,6 +176,9 @@ msgid ""
"use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:"
"`PyList_Check`, etc."
msgstr ""
+"Pour tester le type d'un objet, assurez-vous d'abord qu'il n'est pas *NULL*, "
+"puis utilisez :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:"
+"`PyList_Check`, etc."
#: ../Doc/faq/extending.rst:95
msgid ""
@@ -147,18 +189,26 @@ msgid ""
"as many other useful protocols such as numbers (:c:func:`PyNumber_Index` et "
"al.) and mappings in the PyMapping APIs."
msgstr ""
+"Il y a aussi une API de haut niveau pour les objets Python qui est fournie "
+"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus "
+"de détails. Elle permet l'interfaçage avec tout type de séquence Python en "
+"utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:"
+"`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles "
+"tels que les nombres (:c:func:`PyNumber_Index` et autres) et les "
+"correspondances dans les APIs PyMapping."
#: ../Doc/faq/extending.rst:104
msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?"
msgstr ""
+"Comment utiliser Py_BuildValue() pour créer un tuple de longueur définie ?"
#: ../Doc/faq/extending.rst:106
msgid "You can't. Use :c:func:`PyTuple_Pack` instead."
-msgstr ""
+msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place."
#: ../Doc/faq/extending.rst:110
msgid "How do I call an object's method from C?"
-msgstr ""
+msgstr "Comment puis-je appeler la méthode d'un objet à partir de C ?"
#: ../Doc/faq/extending.rst:112
msgid ""
@@ -167,6 +217,10 @@ msgid ""
"to call, a format string like that used with :c:func:`Py_BuildValue`, and "
"the argument values::"
msgstr ""
+"La fonction :c:func:`PyObject_CallMethod` peut être utilisée pour appeler la "
+"méthode d'un objet. Les paramètres sont l'objet, le nom de la méthode à "
+"appeler, une chaîne de caractères comme celle utilisée pour :c:func:"
+"`Py_BuildValue` et les valeurs des arguments ::"
#: ../Doc/faq/extending.rst:121
msgid ""
@@ -174,12 +228,17 @@ msgid ""
"defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the "
"return value."
msgstr ""
+"Cela fonctionne pour tous les objets qui ont des méthodes — qu'elles soient "
+"intégrées ou définies par l'utilisateur. Vous êtes responsable de « :c:func:"
+"`Py_DECREF`\\ *er* » la valeur de retour à la fin."
#: ../Doc/faq/extending.rst:124
msgid ""
"To call, e.g., a file object's \"seek\" method with arguments 10, 0 "
"(assuming the file object pointer is \"f\")::"
msgstr ""
+"Pour appeler, p. ex., la méthode *seek* d'un objet *file* avec les arguments "
+"10, 0 (en supposant que le pointeur de l'objet fichier est *f*) ::"
#: ../Doc/faq/extending.rst:135
msgid ""
@@ -188,12 +247,18 @@ msgid ""
"format, and to call a function with one argument, surround the argument in "
"parentheses, e.g. \"(i)\"."
msgstr ""
+"Notez que :c:func:`PyObject_CallObject` veut *toujours* un tuple comme liste "
+"d'arguments. Aussi, pour appeler une fonction sans arguments, utilisez "
+"\"()\" pour être conforme au type et, pour appeler une fonction avec un "
+"paramètre, entourez-le de parenthèses, p. ex. \"(i)\"."
#: ../Doc/faq/extending.rst:142
msgid ""
"How do I catch the output from PyErr_Print() (or anything that prints to "
"stdout/stderr)?"
msgstr ""
+"Comment puis-je récupérer la sortie de ``PyErr_Print()`` (ou tout ce qui "
+"s'affiche sur *stdout*/*stderr*) ?"
#: ../Doc/faq/extending.rst:144
msgid ""
@@ -202,22 +267,29 @@ msgid ""
"print_error, or just allow the standard traceback mechanism to work. Then, "
"the output will go wherever your ``write()`` method sends it."
msgstr ""
+"Dans le code Python, définissez un objet qui possède la méthode ``write()``. "
+"Affectez cet objet à :data:`sys.stdout` et :data:`sys.stderr`. Appelez "
+"*print_error* ou faites simplement en sorte que le mécanisme standard de "
+"remontée des erreurs fonctionne. Ensuite, la sortie sera dirigée vers "
+"l'endroit où votre méthode ``write()`` écrit."
#: ../Doc/faq/extending.rst:149
msgid "The easiest way to do this is to use the :class:`io.StringIO` class:"
msgstr ""
+"La façon la plus simple consiste à utiliser la classe :class:`io.StringIO` :"
#: ../Doc/faq/extending.rst:161
msgid "A custom object to do the same would look like this:"
msgstr ""
+"Le code d'un objet à la fonctionnalité similaire ressemblerait à ceci :"
#: ../Doc/faq/extending.rst:182
msgid "How do I access a module written in Python from C?"
-msgstr ""
+msgstr "Comment accéder à un module écrit en Python à partir de C ?"
#: ../Doc/faq/extending.rst:184
msgid "You can get a pointer to the module object as follows::"
-msgstr ""
+msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit ::"
#: ../Doc/faq/extending.rst:188
msgid ""
@@ -227,22 +299,32 @@ msgid ""
"module into any namespace -- it only ensures it has been initialized and is "
"stored in :data:`sys.modules`."
msgstr ""
+"Si le module n'a pas encore été importé (c.-à-d. qu'il n'est pas encore "
+"présent dans :data:`sys.modules`), cela initialise le module ; sinon il "
+"renvoie simplement la valeur de ``sys.modules[\"\"]``. Notez "
+"qu'il n'inscrit le module dans aucun espace de nommage — il s'assure "
+"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys."
+"modules`."
#: ../Doc/faq/extending.rst:194
msgid ""
"You can then access the module's attributes (i.e. any name defined in the "
"module) as follows::"
msgstr ""
+"Vous pouvez alors accéder aux attributs du module (c.-à-d. à tout nom défini "
+"dans le module) comme suit ::"
#: ../Doc/faq/extending.rst:199
msgid ""
"Calling :c:func:`PyObject_SetAttrString` to assign to variables in the "
"module also works."
msgstr ""
+"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux "
+"variables du module fonctionne également."
#: ../Doc/faq/extending.rst:204
msgid "How do I interface to C++ objects from Python?"
-msgstr ""
+msgstr "Comment s'interfacer avec les objets C++ depuis Python ?"
#: ../Doc/faq/extending.rst:206
msgid ""
@@ -253,14 +335,22 @@ msgid ""
"building a new Python type around a C structure (pointer) type will also "
"work for C++ objects."
msgstr ""
+"Selon vos besoins, de nombreuses approches sont possibles. Pour le faire "
+"manuellement, commencez par lire :ref:`le document \"Extension et intégration"
+"\" `. Sachez que pour le système d'exécution Python, il n'y "
+"a pas beaucoup de différence entre C et C++ — donc la méthode pour "
+"construire un nouveau type Python à partir d'une structure C (pointeur) "
+"fonctionne également avec des objets en C++."
#: ../Doc/faq/extending.rst:212
msgid "For C++ libraries, see :ref:`c-wrapper-software`."
-msgstr ""
+msgstr "Pour les bibliothèques C++, voir :ref:`c-wrapper-software`."
#: ../Doc/faq/extending.rst:216
msgid "I added a module using the Setup file and the make fails; why?"
msgstr ""
+"J'ai ajouté un module en utilisant le fichier *Setup* et la compilation "
+"échoue ; pourquoi ?"
#: ../Doc/faq/extending.rst:218
msgid ""
@@ -268,30 +358,40 @@ msgid ""
"fails. (Fixing this requires some ugly shell script hackery, and this bug "
"is so minor that it doesn't seem worth the effort.)"
msgstr ""
+"Le fichier *Setup* doit se terminer par une ligne vide, s'il n'y a pas de "
+"ligne vide, le processus de compilation échoue (ce problème peut se régler "
+"en bidouillant un script shell, et ce bogue est si mineur qu'il ne mérite "
+"pas qu'on s'y attarde)."
#: ../Doc/faq/extending.rst:224
msgid "How do I debug an extension?"
-msgstr ""
+msgstr "Comment déboguer une extension ?"
#: ../Doc/faq/extending.rst:226
msgid ""
"When using GDB with dynamically loaded extensions, you can't set a "
"breakpoint in your extension until your extension is loaded."
msgstr ""
+"Lorsque vous utilisez GDB avec des extensions chargées dynamiquement, vous "
+"ne pouvez pas placer de point d'arrêt dans votre extension tant que celle-ci "
+"n'est pas chargée."
#: ../Doc/faq/extending.rst:229
msgid "In your ``.gdbinit`` file (or interactively), add the command:"
msgstr ""
+"Dans votre fichier ``.gdbinit`` (ou manuellement), ajoutez la commande :"
#: ../Doc/faq/extending.rst:235
msgid "Then, when you run GDB:"
-msgstr ""
+msgstr "Ensuite, lorsque vous exécutez GDB :"
#: ../Doc/faq/extending.rst:247
msgid ""
"I want to compile a Python module on my Linux system, but some files are "
"missing. Why?"
msgstr ""
+"Je veux compiler un module Python sur mon système Linux, mais il manque "
+"certains fichiers. Pourquoi ?"
#: ../Doc/faq/extending.rst:249
msgid ""
@@ -299,18 +399,25 @@ msgid ""
"{x}/config/` directory, which contains various files required for compiling "
"Python extensions."
msgstr ""
+"La plupart des versions pré-compilées de Python n'incluent pas le "
+"répertoire :file:`/usr/lib/python2.{x}/config/`, qui contient les différents "
+"fichiers nécessaires à la compilation des extensions Python."
#: ../Doc/faq/extending.rst:253
msgid "For Red Hat, install the python-devel RPM to get the necessary files."
msgstr ""
+"Pour Red Hat, installez le RPM *python-devel* pour obtenir les fichiers "
+"nécessaires."
#: ../Doc/faq/extending.rst:255
msgid "For Debian, run ``apt-get install python-dev``."
-msgstr ""
+msgstr "Pour Debian, exécutez ``apt-get install python-dev``."
#: ../Doc/faq/extending.rst:259
msgid "How do I tell \"incomplete input\" from \"invalid input\"?"
msgstr ""
+"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une "
+"« entrée invalide » (*invalid input*) ?"
#: ../Doc/faq/extending.rst:261
msgid ""
@@ -320,12 +427,19 @@ msgid ""
"parentheses or triple string quotes), but it gives you a syntax error "
"message immediately when the input is invalid."
msgstr ""
+"Parfois vous souhaitez émuler le comportement de l'interpréteur interactif "
+"Python, quand il vous donne une invite de continuation lorsque l'entrée est "
+"incomplète (par exemple, vous avez tapé le début d'une instruction \"if\" ou "
+"vous n'avez pas fermé vos parenthèses ou triple guillemets) mais il vous "
+"renvoie immédiatement une erreur syntaxique quand la saisie est incorrecte."
#: ../Doc/faq/extending.rst:267
msgid ""
"In Python you can use the :mod:`codeop` module, which approximates the "
"parser's behavior sufficiently. IDLE uses this, for example."
msgstr ""
+"En Python, vous pouvez utiliser le module :mod:`codeop`, qui se rapproche "
+"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise."
#: ../Doc/faq/extending.rst:270
msgid ""
@@ -335,6 +449,12 @@ msgid ""
"to point at your custom input function. See ``Modules/readline.c`` and "
"``Parser/myreadline.c`` for more hints."
msgstr ""
+"La façon la plus simple de le faire en C est d'appeler :c:func:"
+"`PyRun_InteractiveLoop` (peut-être dans un autre fil d'exécution) et laisser "
+"l'interpréteur Python gérer l'entrée pour vous. Vous pouvez également "
+"définir :c:func:`PyOS_ReadlineFunctionPointer` pour pointer vers votre "
+"fonction d'entrée personnalisée. Voir ``Modules/readline.c`` et ``Parser/"
+"myreadline.c`` pour plus de conseils."
#: ../Doc/faq/extending.rst:276
msgid ""
@@ -345,8 +465,15 @@ msgid ""
"error`` equal to ``E_EOF``, which means the input is incomplete. Here's a "
"sample code fragment, untested, inspired by code from Alex Farber::"
msgstr ""
+"Cependant, vous devez parfois exécuter l'interpréteur Python intégré dans le "
+"même fil d’exécution que le reste de votre application et vous ne pouvez pas "
+"laisser :c:func:`PyRun_InteractiveLoop` attendre les entrées utilisateur. La "
+"seule solution est alors d'appeler :c:func:`PyParser_ParseString` et de "
+"tester si ``e.error`` égale ``E_EOF``, ce qui signifie que l'entrée est "
+"incomplète. Voici un exemple de code, non testé, inspiré d'un code écrit par "
+"Alex Farber ::"
-#: ../Doc/faq/extending.rst:309
+#: ../Doc/faq/extending.rst:310
msgid ""
"Another solution is trying to compile the received string with :c:func:"
"`Py_CompileString`. If it compiles without errors, try to execute the "
@@ -357,33 +484,56 @@ msgid ""
"\". Here is a complete example using the GNU readline library (you may want "
"to ignore **SIGINT** while calling readline())::"
msgstr ""
+"Une autre solution est d'essayer de compiler la chaîne reçue avec :c:func:"
+"`Py_CompileString`. Si cela se compile sans erreur, essayez d'exécuter "
+"l'objet code renvoyé en appelant :c:func:`PyEval_EvalCode`. Sinon, "
+"enregistrez l'entrée pour plus tard. Si la compilation échoue, vérifiez s'il "
+"s'agit d'une erreur ou s'il faut juste plus de données — en extrayant la "
+"chaîne de message du tuple d'exception et en la comparant à la chaîne *"
+"\"unexpected EOF while parsing\"*. Voici un exemple complet d'utilisation de "
+"la bibliothèque *readline* de GNU (il vous est possible d'ignorer **SIGINT** "
+"lors de l'appel à ``readline()``) ::"
-#: ../Doc/faq/extending.rst:430
+#: ../Doc/faq/extending.rst:432
msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?"
msgstr ""
+"Comment puis-je trouver les symboles g++ indéfinis ``__builtin_new`` ou "
+"``__pure_virtual`` ?"
-#: ../Doc/faq/extending.rst:432
+#: ../Doc/faq/extending.rst:434
msgid ""
"To dynamically load g++ extension modules, you must recompile Python, relink "
"it using g++ (change LINKCC in the Python Modules Makefile), and link your "
"extension module using g++ (e.g., ``g++ -shared -o mymodule.so mymodule.o``)."
msgstr ""
+"Pour charger dynamiquement les modules d'extension g++, vous devez "
+"recompiler Python, effectuer l'édition de liens en utilisant g++ (modifiez "
+"*LINKCC* dans le *Python Modules Makefile*), et effectuer l'édition de liens "
+"de votre module d'extension avec g++ (par exemple, ``g++ -shared -o mymodule."
+"so mymodule.o``)."
-#: ../Doc/faq/extending.rst:438
+#: ../Doc/faq/extending.rst:440
msgid ""
"Can I create an object class with some methods implemented in C and others "
"in Python (e.g. through inheritance)?"
msgstr ""
+"Puis-je créer une classe d'objets avec certaines méthodes implémentées en C "
+"et d'autres en Python (p. ex. en utilisant l'héritage) ?"
-#: ../Doc/faq/extending.rst:440
+#: ../Doc/faq/extending.rst:442
msgid ""
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
"`list`, :class:`dict`, etc."
msgstr ""
+"Oui, vous pouvez hériter de classes intégrées telles que :class:`int`, :"
+"class:`list`, :class:`dict`, etc."
-#: ../Doc/faq/extending.rst:443
+#: ../Doc/faq/extending.rst:445
msgid ""
"The Boost Python Library (BPL, http://www.boost.org/libs/python/doc/index."
"html) provides a way of doing this from C++ (i.e. you can inherit from an "
"extension class written in C++ using the BPL)."
msgstr ""
+"La bibliothèque *Boost Python Library* (BPL, http://www.boost.org/libs/"
+"python/doc/index.html) fournit un moyen de le faire depuis C++ (c.-à-d. que "
+"vous pouvez hériter d'une classe d'extension écrite en C++ en utilisant BPL)."
diff --git a/faq/general.po b/faq/general.po
index f8da8d60d..1ecfe1bb7 100644
--- a/faq/general.po
+++ b/faq/general.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-12 18:59+0200\n"
-"PO-Revision-Date: 2018-10-15 00:22+0200\n"
-"Last-Translator: Julien Palard \n"
+"POT-Creation-Date: 2019-04-10 09:35+0200\n"
+"PO-Revision-Date: 2019-06-10 15:36+0200\n"
+"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.2\n"
+"X-Generator: Poedit 2.2.1\n"
#: ../Doc/faq/general.rst:5
msgid "General Python FAQ"
@@ -268,10 +268,11 @@ msgstr ""
"protocoles Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, script CGI), "
"ingénierie logicielle (tests unitaires, enregistrement, analyse de code "
"Python), et interfaces pour systèmes d'exploitation (appels système, système "
-"de fichiers, *socket* TCP/IP). Regardez la table des matières :ref:`library-"
-"index` pour avoir une idée de ce qui est disponible. Une grande variété de "
-"greffons tiers existent aussi. Consultez `le sommaire des paquets Python "
-"`_ pour trouver les paquets qui pourraient vous intéresser."
+"de fichiers, connecteurs TCP/IP). Regardez la table des matières :ref:"
+"`library-index` pour avoir une idée de ce qui est disponible. Une grande "
+"variété de greffons tiers existent aussi. Consultez `le sommaire des paquets "
+"Python `_ pour trouver les paquets qui pourraient vous "
+"intéresser."
#: ../Doc/faq/general.rst:125
msgid "How does the Python version numbering scheme work?"
@@ -409,7 +410,7 @@ msgid ""
"source for the documentation is part of the Python source distribution."
msgstr ""
"La documentation est écrite au format *reStructuredText* et traitée par "
-"l'outil de documentation Sphinx `__. La source du "
+"l'outil de documentation `Sphinx `__. La source du "
"*reStructuredText* pour la documentation constitue une partie des sources de "
"Python."
@@ -597,26 +598,19 @@ msgstr "Où www.python.org est-il localisé dans le monde ?"
#: ../Doc/faq/general.rst:271
msgid ""
-"The Python project's infrastructure is located all over the world. `www."
-"python.org `_ is graciously hosted by `Rackspace "
-"`_, with CDN caching provided by `Fastly `_. `Upfront Systems `_ "
-"hosts `bugs.python.org `_. Many other Python "
-"services like `the Wiki `_ are hosted by `Oregon "
-"State University Open Source Lab `_."
-msgstr ""
-"L'infrastructure du projet Python est localisé dans le monde entier. `www."
-"python.org `_ est gracieusement hébergé par "
-"`Rackspace `_, avec un cache *CDN* fourni par "
-"`Fastly `_. `Upfront Systems `_ héberge `bugs.python.org `_."
-
-#: ../Doc/faq/general.rst:282
+"The Python project's infrastructure is located all over the world and is "
+"managed by the Python Infrastructure Team. Details `here `__."
+msgstr ""
+"L'infrastructure du projet Python est située dans le monde entier et est "
+"gérée par l'équipe de l'infrastructure Python. Plus de détails `ici `__."
+
+#: ../Doc/faq/general.rst:276
msgid "Why is it called Python?"
msgstr "Pourquoi le nom Python ?"
-#: ../Doc/faq/general.rst:284
+#: ../Doc/faq/general.rst:278
msgid ""
"When he began implementing Python, Guido van Rossum was also reading the "
"published scripts from `\"Monty Python's Flying Circus\" `_. There are two production-ready "
-"version of Python: 2.x and 3.x, but the recommended one at this times is "
-"Python 3.x. Although Python 2.x is still widely used, `it will not be "
-"maintained after January 1, 2020 `_. Python 2.x was known for having more third-party libraries available, "
-"however, by the time of this writing, most of the widely used libraries "
-"support Python 3.x, and some are even dropping the Python 2.x support."
+"versions of Python: 2.x and 3.x. The recommended version is 3.x, which is "
+"supported by most widely used libraries. Although 2.x is still widely used, "
+"`it will not be maintained after January 1, 2020 `_."
msgstr ""
"Les dernières versions stables peuvent toujours être trouvées sur la `page "
"de téléchargement Python `_. Il existe "
"deux versions stables de Python : 2.x et 3.x, mais seule la version 3 est "
-"recommandée. Bien que Python 2 soit encore utilisé, `il ne sera plus "
+"recommandée, c'est celle qui est compatible avec les bibliothèques les plus "
+"largement utilisées. Bien que Python 2 soit encore utilisé, `il ne sera plus "
"maintenu après le 1er janvier 2020 `_. Python 2.x avait la réputation d'avoir plus de bibliothèques tierces "
-"que Python 3.x, cependant la tendance s'est inversée et la plupart des "
-"bibliothèques les plus utilisées abandonnent même le support de Python 2.x."
+">`_."
-#: ../Doc/faq/general.rst:325
+#: ../Doc/faq/general.rst:315
msgid "How many people are using Python?"
msgstr "Combien de personnes utilisent Python ?"
-#: ../Doc/faq/general.rst:327
+#: ../Doc/faq/general.rst:317
msgid ""
"There are probably tens of thousands of users, though it's difficult to "
"obtain an exact count."
@@ -705,7 +696,7 @@ msgstr ""
"Il y a probablement des dizaines de milliers d'utilisateurs, cependant c'est "
"difficile d'obtenir un nombre exact."
-#: ../Doc/faq/general.rst:330
+#: ../Doc/faq/general.rst:320
msgid ""
"Python is available for free download, so there are no sales figures, and "
"it's available from many different sites and packaged with many Linux "
@@ -716,7 +707,7 @@ msgstr ""
"il est inclus avec de beaucoup de distributions Linux, donc les statistiques "
"de téléchargement ne donnent pas la totalité non plus."
-#: ../Doc/faq/general.rst:334
+#: ../Doc/faq/general.rst:324
msgid ""
"The comp.lang.python newsgroup is very active, but not all Python users post "
"to the group or even read it."
@@ -724,11 +715,11 @@ msgstr ""
"Le forum *comp.lang.python* est très actif, mais tous les utilisateurs de "
"Python ne laissent pas de messages dessus ou même ne le lisent pas."
-#: ../Doc/faq/general.rst:339
+#: ../Doc/faq/general.rst:329
msgid "Have any significant projects been done in Python?"
msgstr "Y a-t-il un nombre de projets significatif réalisés en Python ?"
-#: ../Doc/faq/general.rst:341
+#: ../Doc/faq/general.rst:331
msgid ""
"See https://www.python.org/about/success for a list of projects that use "
"Python. Consulting the proceedings for `past Python conferences `_ and `the Zope application server `_."
@@ -784,12 +775,12 @@ msgstr ""
"Le nouveau développement est discuté sur `la liste de diffusion python-dev "
"`_."
-#: ../Doc/faq/general.rst:368
+#: ../Doc/faq/general.rst:358
msgid "Is it reasonable to propose incompatible changes to Python?"
msgstr ""
"Est-il raisonnable de proposer des changements incompatibles dans Python ?"
-#: ../Doc/faq/general.rst:370
+#: ../Doc/faq/general.rst:360
msgid ""
"In general, no. There are already millions of lines of Python code around "
"the world, so any change in the language that invalidates more than a very "
@@ -806,7 +797,7 @@ msgstr ""
"documentations, beaucoup de livres ont été écrits au sujet de Python, et "
"nous ne voulons pas les rendre invalides soudainement."
-#: ../Doc/faq/general.rst:377
+#: ../Doc/faq/general.rst:367
msgid ""
"Providing a gradual upgrade path is necessary if a feature has to be "
"changed. :pep:`5` describes the procedure followed for introducing backward-"
@@ -815,17 +806,17 @@ msgstr ""
"En fournissant un rythme de mise à jour progressif qui est obligatoire si "
"une fonctionnalité doit être changée."
-#: ../Doc/faq/general.rst:383
+#: ../Doc/faq/general.rst:373
msgid "Is Python a good language for beginning programmers?"
msgstr ""
"Existe-t-il un meilleur langage de programmation pour les programmeurs "
"débutants ?"
-#: ../Doc/faq/general.rst:385
+#: ../Doc/faq/general.rst:375
msgid "Yes."
msgstr "Oui."
-#: ../Doc/faq/general.rst:387
+#: ../Doc/faq/general.rst:377
msgid ""
"It is still common to start students with a procedural and statically typed "
"language such as Pascal, C, or a subset of C++ or Java. Students may be "
@@ -849,7 +840,7 @@ msgstr ""
"peuvent même probablement travailler avec des objets définis dans leurs "
"premiers cours."
-#: ../Doc/faq/general.rst:397
+#: ../Doc/faq/general.rst:387
msgid ""
"For a student who has never programmed before, using a statically typed "
"language seems unnatural. It presents additional complexity that the "
@@ -869,7 +860,7 @@ msgstr ""
"terme, ce n'est pas nécessairement la meilleure idée pour s'adresser aux "
"étudiants durant leur tout premier cours."
-#: ../Doc/faq/general.rst:405
+#: ../Doc/faq/general.rst:395
msgid ""
"Many other aspects of Python make it a good first language. Like Java, "
"Python has a large standard library so that students can be assigned "
@@ -892,7 +883,7 @@ msgstr ""
"réutilisation de code. Les modules tiers tels que PyGame sont aussi très "
"utiles pour étendre les compétences des étudiants."
-#: ../Doc/faq/general.rst:414
+#: ../Doc/faq/general.rst:404
msgid ""
"Python's interactive interpreter enables students to test language features "
"while they're programming. They can keep a window with the interpreter "
@@ -906,7 +897,7 @@ msgstr ""
"souvenir des méthodes pour une liste, ils peuvent faire quelque chose comme "
"ça ::"
-#: ../Doc/faq/general.rst:443
+#: ../Doc/faq/general.rst:433
msgid ""
"With the interpreter, documentation is never far from the student as they "
"are programming."
@@ -914,7 +905,7 @@ msgstr ""
"Avec l'interpréteur, la documentation n'est jamais loin des étudiants quand "
"ils travaillent."
-#: ../Doc/faq/general.rst:446
+#: ../Doc/faq/general.rst:436
msgid ""
"There are also good IDEs for Python. IDLE is a cross-platform IDE for "
"Python that is written in Python using Tkinter. PythonWin is a Windows-"
@@ -934,7 +925,7 @@ msgstr ""
"`_ pour une liste complète des "
"environnements de développement intégrés."
-#: ../Doc/faq/general.rst:454
+#: ../Doc/faq/general.rst:444
msgid ""
"If you want to discuss Python's use in education, you may be interested in "
"joining `the edu-sig mailing list \n"
+"Language-Team: \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"
#: ../Doc/faq/gui.rst:5
msgid "Graphic User Interface FAQ"
@@ -26,7 +29,9 @@ msgstr "Questions générales sur l'interface graphique"
#: ../Doc/faq/gui.rst:18
msgid "What platform-independent GUI toolkits exist for Python?"
-msgstr "Quelles boites à outils multi-plateforme existe-t-il sur Python ?"
+msgstr ""
+"Quelles bibliothèques d'interfaces graphiques multi-plateformes existent en "
+"Python ?"
#: ../Doc/faq/gui.rst:20
msgid ""
@@ -35,12 +40,12 @@ msgid ""
"known to be Python 3-compatible."
msgstr ""
"Selon les plateformes que vous comptez utiliser, il en existe plusieurs. "
-"Certaines ne sont cependant pas encore disponible en Python 3. A minima, "
-"`Tkinter`_ et `Qt`_ sont connus pour être compatible avec Python 3."
+"Certaines ne sont cependant pas encore disponibles en Python 3. A minima, "
+"`Tkinter`_ et `Qt`_ sont connus pour être compatibles avec Python 3."
#: ../Doc/faq/gui.rst:27
msgid "Tkinter"
-msgstr "Tkinter"
+msgstr "*Tkinter*"
#: ../Doc/faq/gui.rst:29
msgid ""
@@ -52,6 +57,14 @@ msgid ""
"tk>`_. Tcl/Tk is fully portable to the Mac OS X, Windows, and Unix "
"platforms."
msgstr ""
+"Les versions standards de Python incluent une interface orientée objet pour "
+"le jeu d'objets graphiques *Tcl/Tk*, appelée :ref:`tkinter `. "
+"C'est probablement la plus facile à installer (puisqu'elle est incluse avec "
+"la plupart des `distributions binaires `_ "
+"de Python) et à utiliser. Pour plus d'informations sur *Tk*, y compris les "
+"liens vers les sources, voir la page d'accueil `Tcl/Tk `_. *Tcl/Tk* est entièrement portable sur les plates-formes Mac OS X, "
+"Windows et Unix."
#: ../Doc/faq/gui.rst:38
msgid "wxWidgets"
@@ -65,6 +78,11 @@ msgid ""
"targets. Language bindings are available for a number of languages "
"including Python, Perl, Ruby, etc."
msgstr ""
+"`wxWidgets` (https://www.wxwidgets.org) est une librairie de classe IUG "
+"portable et gratuite écrite en C++ qui fournit une apparence native sur un "
+"certain nombre de plates-formes, elle est notamment en version stable pour "
+"Windows, Mac OS X, GTK et X11. Des clients sont disponibles pour un certain "
+"nombre de langages, y compris Python, Perl, Ruby, etc."
#: ../Doc/faq/gui.rst:46
msgid ""
@@ -77,8 +95,8 @@ msgstr ""
"`wxPython `_ est le portage Python de *wxWidgets*. "
"Bien qu’il soit légèrement en retard sur les versions officielles de "
"*wxWidgets*, il offre également des fonctionnalités propres à Python qui ne "
-"sont pas disponibles pour les autres langages. *WxPython* dispose de plus, "
-"d’une communauté d’utilisateurs et de développeurs active."
+"sont pas disponibles pour les clients d'autres langages. *WxPython* dispose "
+"de plus, d’une communauté d’utilisateurs et de développeurs active."
#: ../Doc/faq/gui.rst:52
msgid ""
@@ -86,10 +104,14 @@ msgid ""
"licences that allow their use in commercial products as well as in freeware "
"or shareware."
msgstr ""
+"*wxWidgets* et *wxPython* sont tous deux des logiciels libres, open source, "
+"avec des licences permissives qui permettent leur utilisation dans des "
+"produits commerciaux ainsi que dans des logiciels gratuits ou contributifs "
+"(*shareware*)."
#: ../Doc/faq/gui.rst:58
msgid "Qt"
-msgstr ""
+msgstr "*Qt*"
#: ../Doc/faq/gui.rst:60
msgid ""
@@ -101,16 +123,26 @@ msgid ""
"com/commercial/license-faq>`_ if you want to write proprietary "
"applications. PySide is free for all applications."
msgstr ""
+"Il existe des liens disponibles pour la boîte à outils *Qt* (en utilisant "
+"soit `PyQt `_ ou `PySide "
+"`_) et pour *KDE* (`PyKDE4 `__). *PyQt* est actuellement plus mûre "
+"que *PySide*, mais*PyQt* nécessite d'acheter une licence de `Riverbank "
+"Computing `_ si "
+"vous voulez écrire des applications propriétaires. *PySide* est gratuit "
+"pour toutes les applications."
#: ../Doc/faq/gui.rst:67
msgid ""
"Qt 4.5 upwards is licensed under the LGPL license; also, commercial licenses "
"are available from `The Qt Company `_."
msgstr ""
+"*Qt >= 4.5* est sous licence LGPL ; de plus, des licences commerciales sont "
+"disponibles auprès de `The Qt Company `_."
#: ../Doc/faq/gui.rst:71
msgid "Gtk+"
-msgstr ""
+msgstr "*Gtk+*"
#: ../Doc/faq/gui.rst:73
msgid ""
@@ -119,16 +151,23 @@ msgid ""
"also a `Python GTK+ 3 Tutorial `_."
msgstr ""
+"Les `GObject introspection bindings `_ pour Python vous permettent d'écrire des applications GTK+ 3. "
+"Il y a aussi un tutoriel `Python GTK+ 3 `_."
#: ../Doc/faq/gui.rst:77
msgid ""
"The older PyGtk bindings for the `Gtk+ 2 toolkit `_ "
"have been implemented by James Henstridge; see ."
msgstr ""
+"Les anciennes versions de *PyGtk* pour le `Gtk+ 2 toolkit `_ ont été implémentées par James Henstridge ; voir ."
#: ../Doc/faq/gui.rst:81
msgid "Kivy"
-msgstr ""
+msgstr "*Kivy*"
#: ../Doc/faq/gui.rst:83
msgid ""
@@ -137,15 +176,20 @@ msgid ""
"(Android, iOS). It is written in Python and Cython, and can use a range of "
"windowing backends."
msgstr ""
+"`*Kivy* `_ est une bibliothèque GUI multi-plateformes "
+"disponible à la fois sur les systèmes d'exploitation de bureau (Windows, "
+"MacOS, Linux) et les appareils mobiles (Android, iOS). Elle est écrite en "
+"Python et Cython, et peut utiliser une série de fenêtres de *backends*."
#: ../Doc/faq/gui.rst:88
msgid ""
"Kivy is free and open source software distributed under the MIT license."
msgstr ""
+"*Kivy* est un logiciel libre et open source distribué sous licence MIT."
#: ../Doc/faq/gui.rst:91
msgid "FLTK"
-msgstr ""
+msgstr "*FLTK*"
#: ../Doc/faq/gui.rst:93
msgid ""
@@ -153,24 +197,33 @@ msgid ""
"powerful and mature cross-platform windowing system, are available from `the "
"PyFLTK project `_."
msgstr ""
+"Les liaisons Python pour `the FLTK toolkit `_, un "
+"système de fenêtrage multi-plateformes simple mais puissant et mûr, sont "
+"disponibles auprès de `the PyFLTK project `_."
#: ../Doc/faq/gui.rst:98
msgid "OpenGL"
-msgstr ""
+msgstr "*OpenGL*"
#: ../Doc/faq/gui.rst:100
msgid "For OpenGL bindings, see `PyOpenGL `_."
msgstr ""
+"Pour les clients OpenGL, voir `PyOpenGL `_."
#: ../Doc/faq/gui.rst:104
msgid "What platform-specific GUI toolkits exist for Python?"
msgstr ""
+"Quelles boîtes à outils IUG spécifiques à la plate-forme existent pour "
+"Python ?"
#: ../Doc/faq/gui.rst:106
msgid ""
-"By installing the `PyObjc Objective-C bridge `_, Python programs can use Mac OS X's Cocoa libraries."
msgstr ""
+"En installant le `PyObjc Objective-C bridge `_, les programmes Python peuvent utiliser les bibliothèques Cocoa de Mac "
+"OS X."
#: ../Doc/faq/gui.rst:110
msgid ""
@@ -178,14 +231,17 @@ msgid ""
"Microsoft Foundation Classes and a Python programming environment that's "
"written mostly in Python using the MFC classes."
msgstr ""
+":ref:`Pythonwin ` de Mark Hammond inclut une interface vers les "
+"classes `Microsoft Foundation Classes` et un environnement de programmation "
+"Python qui est écrit principalement en Python utilisant les classes *MFC*."
#: ../Doc/faq/gui.rst:116
msgid "Tkinter questions"
-msgstr ""
+msgstr "Questions à propos de *Tkinter*"
#: ../Doc/faq/gui.rst:119
msgid "How do I freeze Tkinter applications?"
-msgstr ""
+msgstr "Comment puis-je geler (*freezer*) les applications *Tkinter* ?"
#: ../Doc/faq/gui.rst:121
msgid ""
@@ -193,6 +249,10 @@ msgid ""
"applications, the applications will not be truly stand-alone, as the "
"application will still need the Tcl and Tk libraries."
msgstr ""
+"*Freeze* est un outil pour créer des applications autonomes. Lors du "
+"*freezage* des applications Tkinter, les applications ne seront pas vraiment "
+"autonomes, car l'application aura toujours besoin des bibliothèques Tcl et "
+"Tk."
#: ../Doc/faq/gui.rst:125
msgid ""
@@ -200,6 +260,9 @@ msgid ""
"point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:"
"`TK_LIBRARY` environment variables."
msgstr ""
+"Une solution consiste à empaqueter les bibliothèques *Tcl* et *Tk* dans "
+"l'application et de les retrouver à l'exécution en utilisant les variables "
+"d'environnement :envvar:`TCL_LIBRARY` et :envvar:`TK_LIBRARY`."
#: ../Doc/faq/gui.rst:129
msgid ""
@@ -208,6 +271,10 @@ msgid ""
"is SAM (stand-alone modules), which is part of the Tix distribution (http://"
"tix.sourceforge.net/)."
msgstr ""
+"Pour obtenir des applications vraiment autonomes, les scripts *Tcl* qui "
+"forment la bibliothèque doivent également être intégrés dans l'application. "
+"Un outil supportant cela est *SAM* (modules autonomes), qui fait partie de "
+"la distribution *Tix* (http://tix.sourceforge.net/)."
#: ../Doc/faq/gui.rst:134
msgid ""
@@ -215,10 +282,14 @@ msgid ""
"`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link "
"with libtclsam and libtksam (you might include the Tix libraries as well)."
msgstr ""
+"Compilez Tix avec SAM activé, exécutez l'appel approprié à :c:func:"
+"`Tclsam_init`, etc. dans le fichier :file:`Modules/tkappinit.c` de Python, "
+"et liez avec *libtclsam* et *libtksam* (il est également possible d'inclure "
+"les bibliothèques *Tix*)."
#: ../Doc/faq/gui.rst:141
msgid "Can I have Tk events handled while waiting for I/O?"
-msgstr ""
+msgstr "Puis-je modifier des événements *Tk* pendant l'écoute des *E/S* ?"
#: ../Doc/faq/gui.rst:143
msgid ""
@@ -228,10 +299,18 @@ msgid ""
"function which will be called from the Tk mainloop when I/O is possible on a "
"file descriptor. See :ref:`tkinter-file-handlers`."
msgstr ""
+"Sur d'autres plates-formes que Windows, oui, et vous n'avez même pas besoin "
+"de fils d'exécution multiples ! Mais vous devrez restructurer un peu votre "
+"code *E/S*. *Tk* possède l'équivalent de l'appel :c:func:`XtAddInput()` de "
+"*Xt*, qui vous permet d'enregistrer une fonction de *callback* qui sera "
+"appelée par la boucle principale *Tk* lorsque des *E/S* sont disponibles sur "
+"un descripteur de fichier. Voir :ref:`tkinter-file-handlers`."
#: ../Doc/faq/gui.rst:151
msgid "I can't get key bindings to work in Tkinter: why?"
msgstr ""
+"Je n'arrive pas à faire fonctionner les raccourcis clavier dans *Tkinter* : "
+"pourquoi ?"
#: ../Doc/faq/gui.rst:153
msgid ""
@@ -239,6 +318,9 @@ msgid ""
"meth:`bind` method don't get handled even when the appropriate key is "
"pressed."
msgstr ""
+"Une raison récurrente est que les gestionnaires d’évènements liés à des "
+"évènements avec la méthode :meth:`bind` ne sont pas pris en charge même "
+"lorsque la touche appropriée est activée."
#: ../Doc/faq/gui.rst:156
msgid ""
@@ -247,3 +329,8 @@ msgid ""
"focus command. Usually a widget is given the keyboard focus by clicking in "
"it (but not for labels; see the takefocus option)."
msgstr ""
+"La cause la plus fréquente est que l'objet graphique auquel s'applique la "
+"liaison n'a pas de « focus clavier ». Consultez la documentation *Tk* pour "
+"la commande *focus*. Habituellement, un objet graphique reçoit le focus du "
+"clavier en cliquant dessus (mais pas pour les étiquettes ; voir l'option "
+"*takefocus*)."
diff --git a/faq/installed.po b/faq/installed.po
index 089fdfaa2..2c39ba32e 100644
--- a/faq/installed.po
+++ b/faq/installed.po
@@ -17,7 +17,7 @@ msgstr ""
#: ../Doc/faq/installed.rst:3
msgid "\"Why is Python Installed on my Computer?\" FAQ"
-msgstr "\"Pourquoi Python est installé sur mon ordinateur ?\" FAQ"
+msgstr "FAQ \"Pourquoi Python est installé sur mon ordinateur ?\""
#: ../Doc/faq/installed.rst:6
msgid "What is Python?"
@@ -78,7 +78,7 @@ msgstr ""
"Une application tierce installée sur votre machine écrite en Python "
"installera Python. Il existe de nombreuses applications de ce type, allant "
"de programme avec interface graphique, jusqu'aux scripts d'administration, "
-"en passant par les serveurs ."
+"en passant par les serveurs."
#: ../Doc/faq/installed.rst:29
msgid ""
@@ -98,7 +98,7 @@ msgid ""
"installation."
msgstr ""
"Python est installé par défaut et à l'installation par de nombreux systèmes "
-"Unix, comme Mac OS X et certaines distributions Linux."
+"Unix, comme Mac OS X et certaines distributions Linux."
#: ../Doc/faq/installed.rst:38
msgid "Can I delete Python?"
@@ -106,7 +106,7 @@ msgstr "Puis-je supprimer Python ?"
#: ../Doc/faq/installed.rst:40
msgid "That depends on where Python came from."
-msgstr "Cela dépend de l'origine de Python ."
+msgstr "Cela dépend de l'origine de Python."
#: ../Doc/faq/installed.rst:42
msgid ""
diff --git a/faq/library.po b/faq/library.po
index ffc862053..ae422f258 100644
--- a/faq/library.po
+++ b/faq/library.po
@@ -6,17 +6,18 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-06-28 15:29+0200\n"
-"PO-Revision-Date: 2018-10-04 17:49+0200\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2019-08-22 22:17+0200\n"
+"Last-Translator: Antoine Wecxsteen\n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.6\n"
#: ../Doc/faq/library.rst:5
msgid "Library and Extension FAQ"
-msgstr "FAQ sur la bibliothèque et les extension"
+msgstr "FAQ sur la bibliothèque et les extensions"
#: ../Doc/faq/library.rst:8
msgid "Contents"
@@ -29,8 +30,7 @@ msgstr "Questions générales sur la bibliothèque"
#: ../Doc/faq/library.rst:15
msgid "How do I find a module or application to perform task X?"
msgstr ""
-"Comment puis-je trouver un module ou une application pour exécuter la tâche "
-"X?"
+"Comment trouver un module ou une application pour effectuer la tâche X ?"
#: ../Doc/faq/library.rst:17
msgid ""
@@ -38,6 +38,9 @@ msgid ""
"relevant standard library module. (Eventually you'll learn what's in the "
"standard library and will be able to skip this step.)"
msgstr ""
+"Regardez si la :ref:`bibliothèque standard ` contient un "
+"module approprié (avec l'expérience, vous connaitrez le contenu de la "
+"bibliothèque standard et pourrez sauter cette étape)."
#: ../Doc/faq/library.rst:21
msgid ""
@@ -46,11 +49,17 @@ msgid ""
"engine. Searching for \"Python\" plus a keyword or two for your topic of "
"interest will usually find something helpful."
msgstr ""
+"Pour des paquets tiers, regardez dans `l'index des paquets Python `_ ou essayez `Google `_ ou un autre moteur "
+"de recherche (NDT : comme le moteur français `Qwant `_). Rechercher « Python » accompagné d'un ou deux mots-clés se "
+"rapportant à ce qui vous intéresse donne souvent de bons résultats."
#: ../Doc/faq/library.rst:28
msgid "Where is the math.py (socket.py, regex.py, etc.) source file?"
msgstr ""
-"Où se situe le fichier source *math.py* (*socket.py*, *regex.py*, etc.) ?"
+"Où sont stockés les fichiers sources *math.py*, *socket.py*, *regex.py*, "
+"etc ?"
#: ../Doc/faq/library.rst:30
msgid ""
@@ -60,31 +69,39 @@ msgid ""
"file:`mathmodule.c`, somewhere in a C source directory (not on the Python "
"Path)."
msgstr ""
+"Si vous ne parvenez pas à trouver le fichier source d'un module, c'est peut-"
+"être parce que celui-ci est un module natif ou bien un module implémenté en "
+"C, C++, ou autre langage compilé, qui est chargé dynamiquement. Dans ce cas, "
+"vous ne possédez peut-être pas le fichier source ou celui-ci est en réalité "
+"stocké quelque part dans un dossier de fichiers source C (qui ne sera pas "
+"dans le chemin Python), comme par exemple :file:`mathmodule.c`."
#: ../Doc/faq/library.rst:35
msgid "There are (at least) three kinds of modules in Python:"
-msgstr "Il y a (au moins) trois types de modules dans Python"
+msgstr "Il y a (au moins) trois types de modules dans Python :"
#: ../Doc/faq/library.rst:37
msgid "modules written in Python (.py);"
-msgstr "modules écrits en Python (*.py*) ;"
+msgstr "les modules écrits en Python (*.py*) ;"
#: ../Doc/faq/library.rst:38
msgid ""
"modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc);"
msgstr ""
-"modules écrits en C et chargés dynamiquement (*.dll*, *.pyd*, *.so*, *.sl*, "
-"*.etc*) ;"
+"les modules écrits en C et chargés dynamiquement (*.dll*, *.pyd*, *.so*, *."
+"sl*, *etc.*) ;"
#: ../Doc/faq/library.rst:39
msgid ""
"modules written in C and linked with the interpreter; to get a list of "
"these, type::"
msgstr ""
+"les modules écrits en C et liés à l'interpréteur ; pour obtenir leur liste, "
+"entrez ::"
#: ../Doc/faq/library.rst:47
msgid "How do I make a Python script executable on Unix?"
-msgstr ""
+msgstr "Comment rendre un script Python exécutable sous Unix ?"
#: ../Doc/faq/library.rst:49
msgid ""
@@ -92,24 +109,31 @@ msgid ""
"first line must begin with ``#!`` followed by the path of the Python "
"interpreter."
msgstr ""
+"Deux conditions doivent être remplies : les droits d'accès au fichier "
+"doivent permettre son exécution et la première ligne du script doit "
+"commencer par ``#!`` suivi du chemin vers l'interpréteur Python."
#: ../Doc/faq/library.rst:53
msgid ""
"The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod "
"755 scriptfile``."
msgstr ""
+"La première condition est remplie en exécutant ``chmod +x scriptfile`` ou "
+"``chmod 755 scriptfile``."
#: ../Doc/faq/library.rst:56
msgid ""
"The second can be done in a number of ways. The most straightforward way is "
"to write ::"
msgstr ""
+"Il y a plusieurs façons de remplir la seconde. La plus simple consiste à "
+"écrire au tout début du fichier ::"
#: ../Doc/faq/library.rst:61
msgid ""
"as the very first line of your file, using the pathname for where the Python "
"interpreter is installed on your platform."
-msgstr ""
+msgstr "en utilisant le chemin de l'interpréteur Python sur votre machine."
#: ../Doc/faq/library.rst:64
msgid ""
@@ -118,6 +142,11 @@ msgid ""
"variants support the following, assuming the Python interpreter is in a "
"directory on the user's :envvar:`PATH`::"
msgstr ""
+"Pour rendre ce script indépendant de la localisation de l'interpréteur "
+"Python, il faut utiliser le programme :program:`env`. La ligne ci-dessous "
+"fonctionne sur la quasi-totalité des dérivés de Unix, à condition que "
+"l'interpréteur Python soit dans un dossier référencé dans la variable :"
+"envvar:`PATH` de l'utilisateur ::"
#: ../Doc/faq/library.rst:71
msgid ""
@@ -125,6 +154,9 @@ msgid ""
"scripts is often very minimal, so you need to use the actual absolute "
"pathname of the interpreter."
msgstr ""
+"Ne faites *pas* ceci pour des scripts CGI. La variable :envvar:`PATH` des "
+"scripts CGI est souvent très succincte, il faut par conséquent préciser le "
+"chemin absolu réel de l'interpréteur."
#: ../Doc/faq/library.rst:75
msgid ""
@@ -132,16 +164,22 @@ msgid ""
"env` program fails; or there's no env program at all. In that case, you can "
"try the following hack (due to Alex Rezinsky):"
msgstr ""
+"Il peut arriver que l'environnement d'un utilisateur soit si chargé que le "
+"programme :program:`/usr/bin/env` échoue ; ou que le programme *env* "
+"n'existe pas du tout. Dans ce cas, vous pouvez utiliser l'astuce suivante, "
+"élaborée par Alex Rezinsky :"
#: ../Doc/faq/library.rst:86
msgid ""
"The minor disadvantage is that this defines the script's __doc__ string. "
"However, you can fix that by adding ::"
msgstr ""
+"Le léger inconvénient est que cela définit la variable *__doc__* du script. "
+"Cependant, il est possible de corriger cela en ajoutant ::"
#: ../Doc/faq/library.rst:94
msgid "Is there a curses/termcap package for Python?"
-msgstr ""
+msgstr "Existe-t'il un module *curse* ou *termcap* en Python ?"
#: ../Doc/faq/library.rst:98
msgid ""
@@ -150,6 +188,10 @@ msgid ""
"compiled by default. (Note that this is not available in the Windows "
"distribution -- there is no curses module for Windows.)"
msgstr ""
+"Pour les dérivés d'Unix : la distribution standard de Python contient un "
+"module *curses* dans le sous-dossier :source:`Modules`, bien qu'il ne soit "
+"pas compilé par défaut. Il n'est pas disponible en Windows — le module "
+"*curses* n'existant pas en Windows."
#: ../Doc/faq/library.rst:103
msgid ""
@@ -160,44 +202,57 @@ msgid ""
"but there don't seem to be any currently maintained OSes that fall into this "
"category."
msgstr ""
+"Le module :mod:`curses` comprend les fonctionnalités de base de *curses* et "
+"beaucoup de fonctionnalités supplémentaires provenant de *ncurses* et de "
+"*SYSV curses* comme la couleur, la gestion des ensembles de caractères "
+"alternatifs, la prise en charge du pavé tactile et de la souris. Cela "
+"implique que le module n'est pas compatible avec des systèmes d'exploitation "
+"qui n'ont que le *curses* de BSD mais, de nos jours, de tels systèmes "
+"d'exploitation ne semblent plus exister ou être maintenus."
#: ../Doc/faq/library.rst:109
msgid ""
"For Windows: use `the consolelib module `_."
msgstr ""
+"Pour Windows : utilisez le module `consolelib `_."
#: ../Doc/faq/library.rst:114
msgid "Is there an equivalent to C's onexit() in Python?"
-msgstr ""
+msgstr "Existe-t'il un équivalent à la fonction C ``onexit()`` en Python ?"
#: ../Doc/faq/library.rst:116
msgid ""
"The :mod:`atexit` module provides a register function that is similar to "
"C's :c:func:`onexit`."
msgstr ""
+"Le module :mod:`atexit` fournit une fonction d'enregistrement similaire à la "
+"fonction C :c:func:`onexit`."
#: ../Doc/faq/library.rst:121
msgid "Why don't my signal handlers work?"
-msgstr ""
+msgstr "Pourquoi mes gestionnaires de signaux ne fonctionnent-t'ils pas ?"
#: ../Doc/faq/library.rst:123
msgid ""
"The most common problem is that the signal handler is declared with the "
"wrong argument list. It is called as ::"
msgstr ""
+"Le problème le plus courant est d'appeler le gestionnaire de signaux avec "
+"les mauvais arguments. Un gestionnaire est appelé de la façon suivante ::"
#: ../Doc/faq/library.rst:128
msgid "so it should be declared with two arguments::"
-msgstr ""
+msgstr "donc il doit être déclaré avec deux paramètres ::"
#: ../Doc/faq/library.rst:135
msgid "Common tasks"
-msgstr ""
+msgstr "Tâches fréquentes"
#: ../Doc/faq/library.rst:138
msgid "How do I test a Python program or component?"
-msgstr ""
+msgstr "Comment tester un programme ou un composant Python ?"
#: ../Doc/faq/library.rst:140
msgid ""
@@ -205,12 +260,17 @@ msgid ""
"examples in the docstrings for a module and runs them, comparing the output "
"with the expected output given in the docstring."
msgstr ""
+"Python fournit deux cadriciels de test. Le module :mod:`doctest` cherche des "
+"exemples dans les *docstrings* d'un module et les exécute. Il compare alors "
+"la sortie avec la sortie attendue, telle que définie dans la *docstring*."
#: ../Doc/faq/library.rst:144
msgid ""
"The :mod:`unittest` module is a fancier testing framework modelled on Java "
"and Smalltalk testing frameworks."
msgstr ""
+"Le module :mod:`unittest` est un cadriciel un peu plus élaboré basé sur les "
+"cadriciels de test de Java et de Smalltalk."
#: ../Doc/faq/library.rst:147
msgid ""
@@ -222,14 +282,23 @@ msgid ""
"avoid depending on mutating global variables, since this makes testing much "
"more difficult to do."
msgstr ""
+"Pour rendre le test plus aisé, il est nécessaire de bien découper le code "
+"d'un programme. Votre programme doit avoir la quasi-totalité des "
+"fonctionnalités dans des fonctions ou des classes — et ceci a parfois "
+"l'avantage aussi plaisant qu'inattendu de rendre le programme plus rapide, "
+"les accès aux variables locales étant en effet plus rapides que les accès "
+"aux variables globales. De plus le programme doit éviter au maximum de "
+"manipuler des variables globales, car ceci rend le test beaucoup plus "
+"difficile."
#: ../Doc/faq/library.rst:155
msgid "The \"global main logic\" of your program may be as simple as ::"
msgstr ""
+"La « logique générale » d'un programme devrait être aussi simple que ::"
#: ../Doc/faq/library.rst:160
msgid "at the bottom of the main module of your program."
-msgstr ""
+msgstr "à la fin du module principal du programme."
#: ../Doc/faq/library.rst:162
msgid ""
@@ -242,12 +311,24 @@ msgid ""
"the \"production code\", since this makes it easy to find bugs and even "
"design flaws earlier."
msgstr ""
+"Une fois que la logique du programme est implémentée par un ensemble de "
+"fonctions et de comportements de classes, il faut écrire des fonctions de "
+"test qui vont éprouver cette logique. À chaque module, il est possible "
+"d'associer une suite de tests qui joue de manière automatique un ensemble de "
+"tests. Au premier abord, il semble qu'il faille fournir un effort "
+"conséquent, mais comme Python est un langage concis et flexible, c'est "
+"surprenamment aisé. Écrire simultanément le code « de production » et les "
+"fonctions de test associées rend le développement plus agréable et plus "
+"amusant, car ceci permet de trouver des bogues, voire des défauts de "
+"conception, plus facilement."
#: ../Doc/faq/library.rst:170
msgid ""
"\"Support modules\" that are not intended to be the main module of a program "
"may include a self-test of the module. ::"
msgstr ""
+"Les « modules auxiliaires » qui n'ont pas vocation à être le module "
+"principal du programme peuvent inclure un test pour se vérifier eux-mêmes. ::"
#: ../Doc/faq/library.rst:176
msgid ""
@@ -255,10 +336,13 @@ msgid ""
"when the external interfaces are unavailable by using \"fake\" interfaces "
"implemented in Python."
msgstr ""
+"Les programmes qui interagissent avec des interfaces externes complexes "
+"peuvent être testés même quand ces interfaces ne sont pas disponibles, en "
+"utilisant des interfaces « simulacres » implémentées en Python."
#: ../Doc/faq/library.rst:182
msgid "How do I create documentation from doc strings?"
-msgstr ""
+msgstr "Comment générer la documentation à partir des *docstrings* ?"
#: ../Doc/faq/library.rst:184
msgid ""
@@ -267,24 +351,32 @@ msgid ""
"docstrings is `epydoc `_. `Sphinx `_ can also include docstring content."
msgstr ""
+"Le module :mod:`pydoc` peut générer du HTML à partir des *docstrings* du "
+"code source Python. Il est aussi possible de documenter une API uniquement à "
+"partir des *docstrings* à l'aide de `epydoc `_. `Sphinx `_ peut également inclure du contenu "
+"provenant de *docstrings*."
#: ../Doc/faq/library.rst:191
msgid "How do I get a single keypress at a time?"
-msgstr ""
+msgstr "Comment détecter qu'une touche est pressée ?"
#: ../Doc/faq/library.rst:193
msgid ""
"For Unix variants there are several solutions. It's straightforward to do "
"this using curses, but curses is a fairly large module to learn."
msgstr ""
+"Pour les dérivés d'Unix, plusieurs solutions s'offrent à vous. C'est facile "
+"en utilisant le module *curses*, mais *curses* est un module assez "
+"conséquent à apprendre."
#: ../Doc/faq/library.rst:237
msgid "Threads"
-msgstr ""
+msgstr "Fils d'exécution"
#: ../Doc/faq/library.rst:240
msgid "How do I program using threads?"
-msgstr ""
+msgstr "Comment programmer avec des fils d'exécution ?"
#: ../Doc/faq/library.rst:242
msgid ""
@@ -292,28 +384,38 @@ msgid ""
"module. The :mod:`threading` module builds convenient abstractions on top of "
"the low-level primitives provided by the :mod:`_thread` module."
msgstr ""
+"Veillez à bien utiliser le module :mod:`threading` et non le module :mod:"
+"`_thread`. Le module :mod:`threading` fournit une abstraction plus facile à "
+"manipuler que les primitives de bas-niveau du module :mod:`_thread`."
#: ../Doc/faq/library.rst:246
msgid ""
"Aahz has a set of slides from his threading tutorial that are helpful; see "
"http://www.pythoncraft.com/OSCON2001/."
msgstr ""
+"Un ensemble de diapositives issues du didacticiel de Aahz sur les fils "
+"d'exécution est disponible à http://www.pythoncraft.com/OSCON2001/."
#: ../Doc/faq/library.rst:251
msgid "None of my threads seem to run: why?"
-msgstr ""
+msgstr "Aucun de mes fils ne semble s'exécuter : pourquoi ?"
#: ../Doc/faq/library.rst:253
msgid ""
"As soon as the main thread exits, all threads are killed. Your main thread "
"is running too quickly, giving the threads no time to do any work."
msgstr ""
+"Dès que le fil d'exécution principal se termine, tous les fils sont tués. Le "
+"fil principal s'exécute trop rapidement, sans laisser le temps aux autres "
+"fils de faire quoi que ce soit."
#: ../Doc/faq/library.rst:256
msgid ""
"A simple fix is to add a sleep to the end of the program that's long enough "
"for all the threads to finish::"
msgstr ""
+"Une correction simple consiste à ajouter un temps d'attente suffisamment "
+"long à la fin du programme pour que tous les fils puissent se terminer ::"
#: ../Doc/faq/library.rst:271
msgid ""
@@ -321,10 +423,16 @@ msgid ""
"run sequentially, one at a time! The reason is that the OS thread scheduler "
"doesn't start a new thread until the previous thread is blocked."
msgstr ""
+"Mais à présent, sur beaucoup de plates-formes, les fils ne s'exécutent pas "
+"en parallèle, mais semblent s'exécuter de manière séquentielle, l'un après "
+"l'autre ! En réalité, l'ordonnanceur de fils du système d'exploitation ne "
+"démarre pas de nouveau fil avant que le précédent ne soit bloqué."
#: ../Doc/faq/library.rst:275
msgid "A simple fix is to add a tiny sleep to the start of the run function::"
msgstr ""
+"Une correction simple consiste à ajouter un petit temps d'attente au début "
+"de la fonction ::"
#: ../Doc/faq/library.rst:288
msgid ""
@@ -334,16 +442,27 @@ msgid ""
"the queue when it finishes, and let the main thread read as many tokens from "
"the queue as there are threads."
msgstr ""
+"Au lieu d'essayer de trouver une bonne valeur d'attente pour la fonction :"
+"func:`time.sleep`, il vaut mieux utiliser un mécanisme basé sur les "
+"sémaphores. Une solution consiste à utiliser le module :mod:`queue` pour "
+"créer un objet file, faire en sorte que chaque fil ajoute un jeton à la file "
+"quand il se termine, et que le fil principal retire autant de jetons de la "
+"file qu'il y a de fils."
#: ../Doc/faq/library.rst:296
msgid "How do I parcel out work among a bunch of worker threads?"
msgstr ""
+"Comment découper et répartir une tâche au sein d'un ensemble de fils "
+"d'exécutions ?"
#: ../Doc/faq/library.rst:298
msgid ""
"The easiest way is to use the new :mod:`concurrent.futures` module, "
"especially the :mod:`~concurrent.futures.ThreadPoolExecutor` class."
msgstr ""
+"La manière la plus simple est d'utiliser le nouveau module :mod:`concurrent."
+"futures`, en particulier la classe :mod:`~concurrent.futures."
+"ThreadPoolExecutor`."
#: ../Doc/faq/library.rst:301
msgid ""
@@ -354,24 +473,35 @@ msgid ""
"``.get()`` method to return them. The class will take care of the locking "
"necessary to ensure that each job is handed out exactly once."
msgstr ""
+"Ou bien, si vous désirez contrôler plus finement l'algorithme de "
+"distribution, vous pouvez écrire votre propre logique « à la main ». "
+"Utilisez le module :mod:`queue` pour créer une file de tâches ; la classe :"
+"class:`~queue.Queue` gère une liste d'objets et a une méthode ``."
+"put(objet)`` pour ajouter un élément à la file, et une méthode ``.get()`` "
+"pour les récupérer. La classe s'occupe de gérer les verrous pour que chaque "
+"tâche soit exécutée une et une seule fois."
#: ../Doc/faq/library.rst:308
msgid "Here's a trivial example::"
-msgstr ""
+msgstr "Voici un exemple trivial ::"
#: ../Doc/faq/library.rst:346
msgid "When run, this will produce the following output:"
-msgstr ""
+msgstr "Quand celui-ci est exécuté, il produit la sortie suivante :"
#: ../Doc/faq/library.rst:364
msgid ""
"Consult the module's documentation for more details; the :class:`~queue."
"Queue` class provides a featureful interface."
msgstr ""
+"Consultez la documentation du module pour plus de détails ; la classe :class:"
+"`~queue.Queue` fournit une interface pleine de fonctionnalités."
#: ../Doc/faq/library.rst:369
msgid "What kinds of global value mutation are thread-safe?"
msgstr ""
+"Quels types de mutations sur des variables globales sont compatibles avec "
+"les programmes à fils d'exécution multiples ? sécurisé ?"
#: ../Doc/faq/library.rst:371
msgid ""
@@ -382,6 +512,14 @@ msgid ""
"instruction and therefore all the C implementation code reached from each "
"instruction is therefore atomic from the point of view of a Python program."
msgstr ""
+"Le :term:`verrou global de l'interpréteur ` (GIL "
+"pour *global interpreter lock*) est utilisé en interne pour s'assurer que la "
+"machine virtuelle Python (MVP) n'exécute qu'un seul fil à la fois. De "
+"manière générale, Python ne change de fil qu'entre les instructions du code "
+"intermédiaire ; :func:`sys.setswitchinterval` permet de contrôler la "
+"fréquence de bascule entre les fils. Chaque instruction du code "
+"intermédiaire, et, par conséquent, tout le code C appelé par cette "
+"instruction est donc atomique du point de vue d'un programme Python."
#: ../Doc/faq/library.rst:378
msgid ""
@@ -390,16 +528,24 @@ msgid ""
"shared variables of built-in data types (ints, lists, dicts, etc) that "
"\"look atomic\" really are."
msgstr ""
+"En théorie, cela veut dire qu'un décompte exact nécessite une connaissance "
+"parfaite de l'implémentation de la MVP. En pratique, cela veut dire que les "
+"opérations sur des variables partagées de type natif (les entier, les "
+"listes, les dictionnaires etc.) qui « semblent atomiques » le sont "
+"réellement."
#: ../Doc/faq/library.rst:383
msgid ""
"For example, the following operations are all atomic (L, L1, L2 are lists, "
"D, D1, D2 are dicts, x, y are objects, i, j are ints)::"
msgstr ""
+"Par exemple, les opérations suivantes sont toutes atomiques (*L*, *L1* et "
+"*L2* sont des listes, *D*, *D1* et *D2* sont des dictionnaires, *x* et *y* "
+"sont des objets, *i* et *j* des entiers) ::"
#: ../Doc/faq/library.rst:398
msgid "These aren't::"
-msgstr ""
+msgstr "Les suivantes ne le sont pas ::"
#: ../Doc/faq/library.rst:405
msgid ""
@@ -408,10 +554,15 @@ msgid ""
"affect things. This is especially true for the mass updates to dictionaries "
"and lists. When in doubt, use a mutex!"
msgstr ""
+"Les opérations qui remplacent d'autres objets peuvent invoquer la méthode :"
+"meth:`__del__` de ces objets quand leur compteur de référence passe à zéro, "
+"et cela peut avoir de l'impact. C'est tout particulièrement vrai pour les "
+"des changements massifs sur des dictionnaires ou des listes. En cas de "
+"doute, il vaut mieux utiliser un mutex."
#: ../Doc/faq/library.rst:412
msgid "Can't we get rid of the Global Interpreter Lock?"
-msgstr ""
+msgstr "Pourquoi ne pas se débarrasser du verrou global de l'interpréteur ?"
#: ../Doc/faq/library.rst:416
msgid ""
@@ -420,6 +571,12 @@ msgid ""
"multi-threaded Python program effectively only uses one CPU, due to the "
"insistence that (almost) all Python code can only run while the GIL is held."
msgstr ""
+"Le :term:`verrou global de l'interpréteur ` (GIL) "
+"est souvent vu comme un obstacle au déploiement de code Python sur des "
+"serveurs puissants avec de nombreux processeurs, car un programme Python à "
+"fils d'exécutions multiples n'utilise en réalité qu'un seul processeur. "
+"Presque tout le code Python ne peut en effet être exécuté qu'avec le GIL "
+"acquis."
#: ../Doc/faq/library.rst:421
msgid ""
@@ -432,6 +589,14 @@ msgid ""
"due to the amount of fine-grained locking necessary to compensate for the "
"removal of the GIL."
msgstr ""
+"À l'époque de Python 1.5, Greg Stein a bien implémenté un ensemble complet "
+"de correctifs (les correctifs « fils d'exécution libres ») qui remplaçaient "
+"le GIL par des verrous plus granulaires. Adam Olsen a conduit une expérience "
+"similaire dans son projet `python-safethread `_. Malheureusement, ces deux tentatives ont "
+"induit une baisse significative (d'au moins 30%) des performances du code à "
+"un seul fil d'exécution, à cause de la quantité de verrouillage plus "
+"granulaire nécessaire pour contrebalancer la suppression du GIL."
#: ../Doc/faq/library.rst:429
msgid ""
@@ -443,6 +608,13 @@ msgid ""
"module provides a lower-level API in case you want more control over "
"dispatching of tasks."
msgstr ""
+"Cela ne signifie pas qu'il est impossible de tirer profit de Python sur des "
+"machines à plusieurs cœurs ! Il faut seulement être malin et diviser le "
+"travail à faire entre plusieurs *processus* plutôt qu'entre plusieurs *fils "
+"d'exécution*. La classe :class:`~concurrent.futures.ProcessPoolExecutor` du "
+"nouveau module :mod:`concurrent.futures` permet de faire cela facilement ; "
+"le module :mod:`multiprocessing` fournit une API de plus bas-niveau pour un "
+"meilleur contrôle sur la distribution des tâches."
#: ../Doc/faq/library.rst:437
msgid ""
@@ -452,6 +624,11 @@ msgid ""
"work done. Some standard library modules such as :mod:`zlib` and :mod:"
"`hashlib` already do this."
msgstr ""
+"Des extensions C appropriées peuvent aussi aider ; en utilisant une "
+"extension C pour effectuer une tâche longue, l'extension peut relâcher le "
+"GIL pendant que le fil est en train d'exécuter ce code et laisser les autres "
+"fils travailler. Des modules de la bibliothèque standard comme :mod:`zlib` "
+"ou :mod:`hashlib` utilisent cette technique."
#: ../Doc/faq/library.rst:443
msgid ""
@@ -464,6 +641,15 @@ msgid ""
"types have their own free list; these free lists would have to be moved to "
"the interpreter state. And so on."
msgstr ""
+"On a déjà proposé de restreindre le GIL par interpréteur, et non plus d'être "
+"complétement global ; les interpréteurs ne seraient plus en mesure de "
+"partager des objets. Malheureusement, cela n'a pas beaucoup de chance non "
+"plus d'arriver. Cela nécessiterait un travail considérable, car la façon "
+"dont beaucoup d'objets sont implémentés rend leur état global. Par exemple, "
+"les entiers et les chaînes de caractères courts sont mis en cache ; ces "
+"caches devraient être déplacés au niveau de l'interpréteur. D'autres objets "
+"ont leur propre liste de suppression, ces listes devraient être déplacées au "
+"niveau de l'interpréteur et ainsi de suite."
#: ../Doc/faq/library.rst:452
msgid ""
@@ -472,12 +658,19 @@ msgid ""
"extensions are being written at a faster rate than you can convert them to "
"store all their global state in the interpreter state."
msgstr ""
+"C'est une tâche sans fin, car les extensions tierces ont le même problème, "
+"et il est probable que les extensions tierces soient développées plus vite "
+"qu'il ne soit possible de les corriger pour les faire stocker leur état au "
+"niveau de l'interpréteur et non plus au niveau global."
#: ../Doc/faq/library.rst:457
msgid ""
"And finally, once you have multiple interpreters not sharing any state, what "
"have you gained over running each interpreter in a separate process?"
msgstr ""
+"Et enfin, quel intérêt y-a t'il à avoir plusieurs interpréteurs qui ne "
+"partagent pas d'état, par rapport à faire tourner chaque interpréteur dans "
+"un processus différent ?"
#: ../Doc/faq/library.rst:462
msgid "Input and Output"
@@ -485,7 +678,7 @@ msgstr "Les entrées/sorties"
#: ../Doc/faq/library.rst:465
msgid "How do I delete a file? (And other file questions...)"
-msgstr ""
+msgstr "Comment supprimer un fichier ? (et autres questions sur les fichiers…)"
#: ../Doc/faq/library.rst:467
msgid ""
@@ -493,6 +686,10 @@ msgid ""
"see the :mod:`os` module. The two functions are identical; :func:`~os."
"unlink` is simply the name of the Unix system call for this function."
msgstr ""
+"Utilisez ``os.remove(filename)`` ou ``os.unlink(filename)`` ; pour la "
+"documentation, référez-vous au module :mod:`os`. Ces deux fonctions sont "
+"identiques, :func:`~os.unlink` n'est tout simplement que le nom de l'appel "
+"système à cette fonction sous Unix."
#: ../Doc/faq/library.rst:471
msgid ""
@@ -502,10 +699,16 @@ msgid ""
"directories as long as they're empty; if you want to delete an entire "
"directory tree and its contents, use :func:`shutil.rmtree`."
msgstr ""
+"Utilisez :func:`os.rmdir` pour supprimer un dossier et :func:`os.mkdir` pour "
+"en créer un nouveau. ``os.makedirs(chemin)`` crée les dossiers "
+"intermédiaires de ``chemin`` qui n'existent pas et ``os.removedirs(chemin)`` "
+"supprime les dossiers intermédiaires si ceux-ci sont vides. Pour supprimer "
+"une arborescence et tout son contenu, utilisez :func:`shutil.rmtree`."
#: ../Doc/faq/library.rst:477
msgid "To rename a file, use ``os.rename(old_path, new_path)``."
msgstr ""
+"``os.rename(ancien_chemin, nouveau_chemin)`` permet de renommer un fichier."
#: ../Doc/faq/library.rst:479
msgid ""
@@ -514,6 +717,11 @@ msgid ""
"There's also ``os.ftruncate(fd, offset)`` for files opened with :func:`os."
"open`, where *fd* is the file descriptor (a small integer)."
msgstr ""
+"Pour supprimer le contenu d'un fichier, ouvrez celui-ci avec ``f = "
+"open(nom_du_fichier, \"rb+\")``, puis exécutez ``f.truncate(décalage)`` où "
+"*décalage* est par défaut la position actuelle de la tête de lecture. Il "
+"existe aussi ``os.ftruncate(df, décalage)`` pour les fichiers ouverts avec :"
+"func:`os.open`, où *df* est le descripteur de fichier (un entier court)."
#: ../Doc/faq/library.rst:484
msgid ""
@@ -521,20 +729,26 @@ msgid ""
"files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :"
"func:`~shutil.rmtree`."
msgstr ""
+"Le module :mod:`shutil` propose aussi un grand nombre de fonctions pour "
+"effectuer des opérations sur des fichiers comme :func:`~shutil.copyfile`, :"
+"func:`~shutil.copytree` et :func:`~shutil.rmtree`."
#: ../Doc/faq/library.rst:490
msgid "How do I copy a file?"
-msgstr ""
+msgstr "Comment copier un fichier ?"
#: ../Doc/faq/library.rst:492
msgid ""
"The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note "
"that on MacOS 9 it doesn't copy the resource fork and Finder info."
msgstr ""
+"Le module :mod:`shutil` fournit la fonction :func:`~shutil.copyfile`. Sous "
+"MacOS 9, celle-ci ne copie pas le clonage de ressources ni les informations "
+"du chercheur."
#: ../Doc/faq/library.rst:497
msgid "How do I read (or write) binary data?"
-msgstr ""
+msgstr "Comment lire (ou écrire) des données binaires ?"
#: ../Doc/faq/library.rst:499
msgid ""
@@ -542,12 +756,18 @@ msgid ""
"`struct` module. It allows you to take a string containing binary data "
"(usually numbers) and convert it to Python objects; and vice versa."
msgstr ""
+"Pour lire ou écrire des formats de données complexes en binaire, il est "
+"recommandé d'utiliser le module :mod:`struct`. Celui-ci permet de convertir "
+"une chaîne de caractères qui contient des données binaires, souvent des "
+"nombres, en objets Python, et vice-versa."
#: ../Doc/faq/library.rst:503
msgid ""
"For example, the following code reads two 2-byte integers and one 4-byte "
"integer in big-endian format from a file::"
msgstr ""
+"Par exemple, le code suivant lit, depuis un fichier, deux entiers codés sur "
+"2 octets et un entier codé sur 4 octets, en format gros-boutiste ::"
#: ../Doc/faq/library.rst:512
msgid ""
@@ -555,12 +775,18 @@ msgid ""
"one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 "
"bytes) from the string."
msgstr ""
+"« > » dans la chaîne de formatage indique que la donnée doit être lue en "
+"mode gros-boutiste, la lettre « h » indique un entier court (2 octets) et la "
+"lettre « l » indique un entier long (4 octets)."
#: ../Doc/faq/library.rst:516
msgid ""
"For data that is more regular (e.g. a homogeneous list of ints or floats), "
"you can also use the :mod:`array` module."
msgstr ""
+"Pour une donnée plus régulière (p. ex. une liste homogène d'entiers ou de "
+"nombres à virgule flottante), il est possible d'utiliser le module :mod:"
+"`array`."
#: ../Doc/faq/library.rst:521
msgid ""
@@ -569,10 +795,17 @@ msgid ""
"instead (the default), the file will be open in text mode and ``f.read()`` "
"will return :class:`str` objects rather than :class:`bytes` objects."
msgstr ""
+"Pour lire et écrire de la donnée binaire, il est obligatoire d'ouvrir le "
+"fichier en mode binaire également (ici, en passant ``\"rb\"`` à :func:"
+"`open`). En utilisant ``\"r\"`` (valeur par défaut), le fichier est ouvert "
+"en mode textuel et ``f.read()`` renvoie des objets :class:`str` au lieu "
+"d'objets :class:`bytes`."
#: ../Doc/faq/library.rst:529
msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?"
msgstr ""
+"Il me semble impossible d'utiliser ``os.read()`` sur un tube créé avec ``os."
+"popen()`` ; pourquoi ?"
#: ../Doc/faq/library.rst:531
msgid ""
@@ -582,36 +815,47 @@ msgid ""
"function. Thus, to read *n* bytes from a pipe *p* created with :func:`os."
"popen`, you need to use ``p.read(n)``."
msgstr ""
+":func:`os.read` est une fonction de bas niveau qui prend en paramètre un "
+"descripteur de fichier — un entier court qui représente le fichier ouvert. :"
+"func:`os.popen` crée un objet fichier de haut niveau, du même type que celui "
+"renvoyé par la fonction native :func:`open`. Par conséquent, pour lire *n* "
+"octets d'un tube *p* créé avec :func:`os.popen`, il faut utiliser ``p."
+"read(n)``."
#: ../Doc/faq/library.rst:618
msgid "How do I access the serial (RS232) port?"
-msgstr ""
+msgstr "Comment accéder au port de transmission en série (RS-232) ?"
#: ../Doc/faq/library.rst:620
msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:"
-msgstr ""
+msgstr "Pour Win32, POSIX (Linux, BSD, etc.) et Jython :"
#: ../Doc/faq/library.rst:622
msgid "http://pyserial.sourceforge.net"
-msgstr ""
+msgstr "http://pyserial.sourceforge.net"
#: ../Doc/faq/library.rst:624
msgid "For Unix, see a Usenet post by Mitch Chapman:"
msgstr ""
+"Pour Unix, référez-vous à une publication sur Usenet de Mitch Chapman :"
#: ../Doc/faq/library.rst:626
msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
-msgstr ""
+msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
#: ../Doc/faq/library.rst:630
msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?"
msgstr ""
+"Pourquoi fermer *sys.stdout*, *sys.stdin*, *sys.stderr* ne les ferme pas "
+"réellement ?"
#: ../Doc/faq/library.rst:632
msgid ""
"Python :term:`file objects ` are a high-level layer of "
"abstraction on low-level C file descriptors."
msgstr ""
+"Les :term:`objets fichiers ` en Python sont des abstractions de "
+"haut niveau sur les descripteurs de fichier C de bas niveau."
#: ../Doc/faq/library.rst:635
msgid ""
@@ -621,6 +865,11 @@ msgid ""
"descriptor. This also happens automatically in ``f``'s destructor, when "
"``f`` becomes garbage."
msgstr ""
+"Pour la plupart des objets fichiers créés en Python avec la fonction native :"
+"func:`open`, ``f.close()`` marque le fichier comme fermé du point de vue de "
+"Python et ferme aussi le descripteur C sous-jacent. Le même mécanisme est "
+"enclenché automatiquement dans le destructeur de ``f``, lorsque ``f`` est "
+"recyclé."
#: ../Doc/faq/library.rst:641
msgid ""
@@ -629,6 +878,10 @@ msgid ""
"marks the Python-level file object as being closed, but does *not* close the "
"associated C file descriptor."
msgstr ""
+"Mais *stdin*, *stdout* et *stderr* ont droit à un traitement spécial en "
+"Python, car leur statut en C est lui-aussi spécial. Exécuter ``sys.stdout."
+"close()`` marque l'objet fichier comme fermé du point de vue de Python, mais "
+"le descripteur de fichier C associé n'est *pas* fermé."
#: ../Doc/faq/library.rst:646
msgid ""
@@ -636,18 +889,24 @@ msgid ""
"first be sure that's what you really want to do (e.g., you may confuse "
"extension modules trying to do I/O). If it is, use :func:`os.close`::"
msgstr ""
+"Pour fermer le descripteur de fichier sous-jacent C de l'une de ces trois "
+"sorties, demandez-vous avant tout si vous êtes sûr de vous (cela peut, par "
+"exemple, perturber le bon fonctionnement de modules qui font des opérations "
+"d'entrée-sortie). Si c'est le cas, utilisez :func:`os.close` ::"
#: ../Doc/faq/library.rst:654
msgid "Or you can use the numeric constants 0, 1 and 2, respectively."
msgstr ""
+"Il est aussi possible de fermer respectivement les constantes numériques 0, "
+"1 ou 2."
#: ../Doc/faq/library.rst:658
msgid "Network/Internet Programming"
-msgstr ""
+msgstr "Programmation réseau et Internet"
#: ../Doc/faq/library.rst:661
msgid "What WWW tools are there for Python?"
-msgstr ""
+msgstr "Quels sont les outils Python dédiés à la Toile ?"
#: ../Doc/faq/library.rst:663
msgid ""
@@ -655,32 +914,42 @@ msgid ""
"Reference Manual. Python has many modules that will help you build server-"
"side and client-side web systems."
msgstr ""
+"Référez-vous aux chapitres intitulés :ref:`internet` et :ref:`netdata` dans "
+"le manuel de référence de la bibliothèque. Python a de nombreux modules pour "
+"construire des applications de Toile côté client comme côté serveur."
#: ../Doc/faq/library.rst:669
msgid ""
"A summary of available frameworks is maintained by Paul Boddie at https://"
"wiki.python.org/moin/WebProgramming\\ ."
msgstr ""
+"Un résumé des cadriciels disponibles est maintenu par Paul Boddie à "
+"l'adresse https://wiki.python.org/moin/WebProgramming\\ ."
#: ../Doc/faq/library.rst:672
msgid ""
"Cameron Laird maintains a useful set of pages about Python web technologies "
"at http://phaseit.net/claird/comp.lang.python/web_python."
msgstr ""
+"Cameron Laird maintient un ensemble intéressant d'articles sur les "
+"technologies Python dédiées à la Toile à l'adresse http://phaseit.net/claird/"
+"comp.lang.python/web_python."
#: ../Doc/faq/library.rst:677
msgid "How can I mimic CGI form submission (METHOD=POST)?"
-msgstr ""
+msgstr "Comment reproduire un envoi de formulaire CGI (``METHOD=POST``) ?"
#: ../Doc/faq/library.rst:679
msgid ""
"I would like to retrieve web pages that are the result of POSTing a form. Is "
"there existing code that would let me do this easily?"
msgstr ""
+"J'aimerais récupérer la page de retour d'un envoi de formulaire sur la "
+"Toile. Existe-t'il déjà du code qui pourrait m'aider à le faire facilement ?"
#: ../Doc/faq/library.rst:682
msgid "Yes. Here's a simple example that uses urllib.request::"
-msgstr ""
+msgstr "Oui. Voici un exemple simple d'utilisation de *urllib.request* ::"
#: ../Doc/faq/library.rst:697
msgid ""
@@ -688,34 +957,42 @@ msgid ""
"be quoted using :func:`urllib.parse.urlencode`. For example, to send "
"``name=Guy Steele, Jr.``::"
msgstr ""
+"Remarquez qu'en général, la chaîne de caractères d'une requête POST encodée "
+"avec des des signes « % » doit être mise entre guillemets à l'aide de :func:"
+"`urllib.parse.urlencode`. Par exemple pour envoyer ``name=Guy Steele, Jr."
+"`` ::"
#: ../Doc/faq/library.rst:705
msgid ":ref:`urllib-howto` for extensive examples."
-msgstr ""
+msgstr ":ref:`urllib-howto` pour des exemples complets."
#: ../Doc/faq/library.rst:709
msgid "What module should I use to help with generating HTML?"
-msgstr ""
+msgstr "Quel module utiliser pour générer du HTML ?"
#: ../Doc/faq/library.rst:713
msgid ""
"You can find a collection of useful links on the `Web Programming wiki page "
"`_."
msgstr ""
+"La `page wiki de la programmation Toile `_ (en anglais) répertorie un ensemble de liens pertinents."
#: ../Doc/faq/library.rst:718
msgid "How do I send mail from a Python script?"
-msgstr ""
+msgstr "Comment envoyer un courriel avec un script Python ?"
#: ../Doc/faq/library.rst:720
msgid "Use the standard library module :mod:`smtplib`."
-msgstr ""
+msgstr "Utilisez le module :mod:`smtplib` de la bibliothèque standard."
#: ../Doc/faq/library.rst:722
msgid ""
"Here's a very simple interactive mail sender that uses it. This method will "
"work on any host that supports an SMTP listener. ::"
msgstr ""
+"Voici un exemple très simple d'un envoyeur de courriel qui l'utilise. Cette "
+"méthode fonctionne sur tous les serveurs qui implémentent SMTP. ::"
#: ../Doc/faq/library.rst:742
msgid ""
@@ -724,16 +1001,24 @@ msgid ""
"usr/sbin/sendmail``. The sendmail manual page will help you out. Here's "
"some sample code::"
msgstr ""
+"Sous Unix, il est possible d'utiliser *sendmail*. La localisation de "
+"l'exécutable *sendmail* dépend du système ; cela peut-être ``/usr/lib/"
+"sendmail`` ou ``/usr/sbin/sendmail``, la page de manuel de *sendmail* peut "
+"vous aider. Par exemple ::"
#: ../Doc/faq/library.rst:762
msgid "How do I avoid blocking in the connect() method of a socket?"
msgstr ""
+"Comment éviter de bloquer dans la méthode ``connect()`` d'un connecteur "
+"réseau ?"
#: ../Doc/faq/library.rst:764
msgid ""
"The :mod:`select` module is commonly used to help with asynchronous I/O on "
"sockets."
msgstr ""
+"Le module :mod:`select` est fréquemment utilisé pour effectuer des entrées-"
+"sorties asynchrones sur des connecteurs réseaux."
#: ../Doc/faq/library.rst:767
msgid ""
@@ -744,6 +1029,13 @@ msgid ""
"progress, but hasn't finished yet. Different OSes will return different "
"values, so you're going to have to check what's returned on your system."
msgstr ""
+"Pour empêcher une connexion TCP de se bloquer, il est possible de mettre le "
+"connecteur en mode lecture seule. Avec cela, au moment du ``connect()``, la "
+"connexion pourra être immédiate (peu probable) ou bien vous obtiendrez une "
+"exception qui contient le numéro d'erreur dans ``.errno``. ``errno."
+"EINPROGRESS`` indique que la connexion est en cours, mais qu'elle n'a pas "
+"encore aboutie. La valeur dépend du système d'exploitation, donc renseignez-"
+"vous sur la valeur utilisée par votre système."
#: ../Doc/faq/library.rst:774
msgid ""
@@ -752,6 +1044,12 @@ msgid ""
"again later -- ``0`` or ``errno.EISCONN`` indicate that you're connected -- "
"or you can pass this socket to select to check if it's writable."
msgstr ""
+"``connect_ex()`` permet d'éviter la création de l'exception, et de ne "
+"renvoyer que la valeur de *errno*. Pour vérifier l'état de la connexion, "
+"utilisez encore une fois ``connect_ex()`` — ``0`` ou ``errno.EISCONN`` "
+"indiquent que la connexion est active — ou passez le connecteur en argument "
+"de ``select()`` pour vérifier si le connecteur est prêt à recevoir des "
+"entrées."
#: ../Doc/faq/library.rst:780
msgid ""
@@ -759,14 +1057,19 @@ msgid ""
"of writing non-blocking networking code. The third-party `Twisted `_ library is a popular and feature-rich alternative."
msgstr ""
+"Le module :mod:`asyncore` propose une approche en cadriciel pour écrire du "
+"code réseau non-bloquant. La bibliothèque tierce `Twisted `_ en est une alternative plébiscitée, avec un grand "
+"nombre de fonctionnalités."
#: ../Doc/faq/library.rst:787
msgid "Databases"
-msgstr ""
+msgstr "Bases de données"
#: ../Doc/faq/library.rst:790
msgid "Are there any interfaces to database packages in Python?"
msgstr ""
+"Existe-t'il des modules Python pour s'interfacer avec des bases de données ?"
#: ../Doc/faq/library.rst:792
msgid "Yes."
@@ -779,6 +1082,10 @@ msgid ""
"`sqlite3` module, which provides a lightweight disk-based relational "
"database."
msgstr ""
+"La distribution standard de Python fournit aussi des interfaces à des bases "
+"de données comme :mod:`DBM ` ou :mod:`GDBM `. Il existe "
+"aussi le module :mod:`sqlite3` qui implémente une base de données "
+"relationelle légère sur disque."
#: ../Doc/faq/library.rst:799
msgid ""
@@ -786,10 +1093,13 @@ msgid ""
"`DatabaseProgramming wiki page `_ for details."
msgstr ""
+"La gestion de la plupart des bases de données relationnelles est assurée. "
+"Voir la page wiki `DatabaseProgramming `_ pour plus de détails."
#: ../Doc/faq/library.rst:805
msgid "How do you implement persistent objects in Python?"
-msgstr ""
+msgstr "Comment implémenter la persistance d'objets en Python ?"
#: ../Doc/faq/library.rst:807
msgid ""
@@ -798,57 +1108,72 @@ msgid ""
"mod:`shelve` library module uses pickle and (g)dbm to create persistent "
"mappings containing arbitrary Python objects."
msgstr ""
+"Le module :mod:`pickle` répond à cela de manière large (bien qu'il ne soit "
+"pas possible de stocker des fichiers ouverts, des connecteurs ou des "
+"fenêtres par exemple), et le module :mod:`shelve` de la bibliothèque utilise "
+"*pickle* et *(g)dbm* pour créer des liens persistants vers des objets Python."
#: ../Doc/faq/library.rst:814
msgid "Mathematics and Numerics"
-msgstr ""
+msgstr "Mathématiques et calcul numérique"
#: ../Doc/faq/library.rst:817
msgid "How do I generate random numbers in Python?"
-msgstr ""
+msgstr "Comment générer des nombres aléatoires en Python ?"
#: ../Doc/faq/library.rst:819
msgid ""
"The standard module :mod:`random` implements a random number generator. "
"Usage is simple::"
msgstr ""
+"Le module :mod:`random` de la bibliothèque standard comprend un générateur "
+"de nombres aléatoires. Son utilisation est simple ::"
#: ../Doc/faq/library.rst:825
msgid "This returns a random floating point number in the range [0, 1)."
msgstr ""
+"Le code précédent renvoie un nombre à virgule flottante aléatoire dans "
+"l'intervalle [0, 1[."
#: ../Doc/faq/library.rst:827
msgid ""
"There are also many other specialized generators in this module, such as:"
-msgstr ""
+msgstr "Ce module fournit beaucoup d'autres générateurs spécialisés comme :"
#: ../Doc/faq/library.rst:829
msgid "``randrange(a, b)`` chooses an integer in the range [a, b)."
-msgstr ""
+msgstr "``randrange(a, b)`` génère un entier dans l'intervalle [a, b[."
#: ../Doc/faq/library.rst:830
msgid "``uniform(a, b)`` chooses a floating point number in the range [a, b)."
msgstr ""
+"``uniform(a, b)`` génère un nombre à virgule flottante aléatoire dans "
+"l'intervalle [a, b[."
#: ../Doc/faq/library.rst:831
msgid ""
"``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution."
-msgstr ""
+msgstr "``normalvariate(mean, sdev)`` simule la loi normale (Gaussienne)."
#: ../Doc/faq/library.rst:833
msgid "Some higher-level functions operate on sequences directly, such as:"
msgstr ""
+"Des fonctions de haut niveau opèrent directement sur des séquences comme :"
#: ../Doc/faq/library.rst:835
msgid "``choice(S)`` chooses random element from a given sequence"
-msgstr ""
+msgstr "``choice(S)`` sélectionne au hasard un élément d'une séquence donnée"
#: ../Doc/faq/library.rst:836
msgid "``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly"
msgstr ""
+"``shuffle(L)`` mélange une liste en-place, c-à-d lui applique une "
+"permutation aléatoire"
#: ../Doc/faq/library.rst:838
msgid ""
"There's also a ``Random`` class you can instantiate to create independent "
"multiple random number generators."
msgstr ""
+"Il existe aussi une classe ``Random`` qu'il est possible d'instancier pour "
+"créer des générateurs aléatoires indépendants."
diff --git a/faq/programming.po b/faq/programming.po
index f3957d2ab..9f6da9491 100644
--- a/faq/programming.po
+++ b/faq/programming.po
@@ -6,18 +6,18 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-21 09:48+0100\n"
-"PO-Revision-Date: 2018-11-13 09:44+0100\n"
-"Last-Translator: \n"
+"PO-Revision-Date: 2019-09-16 11:03+0200\n"
+"Last-Translator: Antoine Wecxsteen\n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.6\n"
#: ../Doc/faq/programming.rst:5
msgid "Programming FAQ"
-msgstr ""
+msgstr "FAQ de programmation"
#: ../Doc/faq/programming.rst:8
msgid "Contents"
@@ -25,34 +25,51 @@ msgstr "Sommaire"
#: ../Doc/faq/programming.rst:12
msgid "General Questions"
-msgstr ""
+msgstr "Questions générales"
#: ../Doc/faq/programming.rst:15
msgid ""
"Is there a source code level debugger with breakpoints, single-stepping, "
"etc.?"
msgstr ""
+"Existe-t-il un débogueur de code source avec points d'arrêts, exécution pas-"
+"à-pas, etc. ?"
-#: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:60
+#: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:63
msgid "Yes."
msgstr "Oui."
#: ../Doc/faq/programming.rst:19
msgid ""
+"Several debuggers for Python are described below, and the built-in function :"
+"func:`breakpoint` allows you to drop into any of them."
+msgstr ""
+"Plusieurs débogueurs sont décrits ci-dessous et la fonction native :func:"
+"`breakpoint` permet d'utiliser n'importe lequel d'entre eux."
+
+#: ../Doc/faq/programming.rst:22
+msgid ""
"The pdb module is a simple but adequate console-mode debugger for Python. It "
"is part of the standard Python library, and is :mod:`documented in the "
"Library Reference Manual `. You can also write your own debugger by "
"using the code for pdb as an example."
msgstr ""
+"Le module ``pdb`` est un débogueur console simple, mais parfaitement adapté "
+"à Python. Il fait partie de la bibliothèque standard de Python, sa "
+"documentation se trouve dans le :mod:`manuel de référence `. Vous "
+"pouvez vous inspirer du code de ``pdb`` pour écrire votre propre débogueur."
-#: ../Doc/faq/programming.rst:24
+#: ../Doc/faq/programming.rst:27
msgid ""
"The IDLE interactive development environment, which is part of the standard "
"Python distribution (normally available as Tools/scripts/idle), includes a "
"graphical debugger."
msgstr ""
+"L'environnement de développement interactif IDLE, qui est fourni avec la "
+"distribution standard de Python (normalement disponible dans ``Tools/scripts/"
+"idle``) contient un débogueur graphique."
-#: ../Doc/faq/programming.rst:28
+#: ../Doc/faq/programming.rst:31
msgid ""
"PythonWin is a Python IDE that includes a GUI debugger based on pdb. The "
"Pythonwin debugger colors breakpoints and has quite a few cool features such "
@@ -61,8 +78,16 @@ msgid ""
">`__ project and as a part of the ActivePython distribution (see https://www."
"activestate.com/activepython\\ )."
msgstr ""
+"*PythonWin* est un environnement de développement intégré (EDI) Python qui "
+"embarque un débogueur graphique basé sur ``pdb``. Le débogueur *PythonWin* "
+"colore les points d'arrêts et possède quelques fonctionnalités sympathiques, "
+"comme la possibilité de déboguer des programmes développés sans "
+"*PythonWin*. *PythonWin* est disponible dans le projet `Extensions Python "
+"pour Windows `__ et fait partie "
+"de la distribution ActivePython (voir https://www.activestate.com/"
+"activepython\\ )."
-#: ../Doc/faq/programming.rst:35
+#: ../Doc/faq/programming.rst:38
msgid ""
"`Boa Constructor `_ is an IDE and "
"GUI builder that uses wxWidgets. It offers visual frame creation and "
@@ -70,51 +95,72 @@ msgid ""
"browsers, inheritance hierarchies, doc string generated html documentation, "
"an advanced debugger, integrated help, and Zope support."
msgstr ""
+"`Boa Constructor `_ est un EDI et "
+"un constructeur d'interface homme-machine basé sur *wxWidgets*. Il propose "
+"la création et la manipulation de fenêtres, un inspecteur d'objets, de "
+"nombreuses façons de visualiser des sources comme un navigateur d'objets, "
+"les hiérarchies d'héritage, la documentation html générée par les "
+"docstrings, un débogueur avancé, une aide intégrée et la prise en charge de "
+"Zope."
-#: ../Doc/faq/programming.rst:41
+#: ../Doc/faq/programming.rst:44
msgid ""
"`Eric `_ is an IDE built on PyQt and "
"the Scintilla editing component."
msgstr ""
+"`Eric `_ est un EDI basé sur PyQt et "
+"l'outil d'édition Scintilla."
-#: ../Doc/faq/programming.rst:44
+#: ../Doc/faq/programming.rst:47
msgid ""
"Pydb is a version of the standard Python debugger pdb, modified for use with "
"DDD (Data Display Debugger), a popular graphical debugger front end. Pydb "
"can be found at http://bashdb.sourceforge.net/pydb/ and DDD can be found at "
"https://www.gnu.org/software/ddd."
msgstr ""
+"Pydb est une version du débogueur standard Python pdb, modifié pour être "
+"utilisé avec DDD (Data Display Debugger), un célèbre débogueur graphique. "
+"Pydb est disponible sur http://bashdb.sourceforge.net/pydb/ et DDD est "
+"disponible sur https://www.gnu.org/software/ddd."
-#: ../Doc/faq/programming.rst:49
+#: ../Doc/faq/programming.rst:52
msgid ""
"There are a number of commercial Python IDEs that include graphical "
"debuggers. They include:"
msgstr ""
+"Il existe de nombreux EDI Python propriétaires qui embarquent un débogueur "
+"graphique. Notamment :"
-#: ../Doc/faq/programming.rst:52
+#: ../Doc/faq/programming.rst:55
msgid "Wing IDE (https://wingware.com/)"
-msgstr ""
+msgstr "Wing IDE (https://wingware.com/)"
-#: ../Doc/faq/programming.rst:53
+#: ../Doc/faq/programming.rst:56
msgid "Komodo IDE (https://komodoide.com/)"
-msgstr ""
+msgstr "Komodo IDE (https://komodoide.com/)"
-#: ../Doc/faq/programming.rst:54
+#: ../Doc/faq/programming.rst:57
msgid "PyCharm (https://www.jetbrains.com/pycharm/)"
-msgstr ""
+msgstr "PyCharm (https://www.jetbrains.com/pycharm/)"
-#: ../Doc/faq/programming.rst:58
+#: ../Doc/faq/programming.rst:61
msgid "Is there a tool to help find bugs or perform static analysis?"
msgstr ""
+"Existe-t-il des outils pour aider à trouver des bogues ou faire de l'analyse "
+"statique de code ?"
-#: ../Doc/faq/programming.rst:62
+#: ../Doc/faq/programming.rst:65
msgid ""
"PyChecker is a static analysis tool that finds bugs in Python source code "
"and warns about code complexity and style. You can get PyChecker from "
"http://pychecker.sourceforge.net/."
msgstr ""
+"*PyChecker* est un outil d'analyse statique qui trouve les bogues dans le "
+"code source Python et émet des avertissements relatifs à la complexité et au "
+"style du code. *PyChecker* est disponible sur http://pychecker.sourceforge."
+"net/."
-#: ../Doc/faq/programming.rst:66
+#: ../Doc/faq/programming.rst:69
msgid ""
"`Pylint `_ is another tool that checks if a module "
"satisfies a coding standard, and also makes it possible to write plug-ins to "
@@ -124,19 +170,31 @@ msgid ""
"standard, whether declared interfaces are fully implemented, and more. "
"https://docs.pylint.org/ provides a full list of Pylint's features."
msgstr ""
+"Pylint `_ est un autre outil qui vérifie si un "
+"module satisfait aux normes de développement, et qui permet en plus d'écrire "
+"des greffons pour ajouter des fonctionnalités personnalisées. En plus de la "
+"vérification des bogues effectuée par PyChecker, Pylint effectue quelques "
+"vérifications supplémentaires comme la longueur des lignes, les conventions "
+"de nommage des variables, que les interfaces déclarées sont implémentées en "
+"totalité, et plus encore. https://docs.pylint.org/ fournit la liste complète "
+"des fonctionnalités de Pylint."
-#: ../Doc/faq/programming.rst:74
+#: ../Doc/faq/programming.rst:77
msgid ""
"Static type checkers such as `Mypy `_, `Pyre `_, and `Pytype `_ can "
"check type hints in Python source code."
msgstr ""
+"Les vérificateurs statiques de typage comme `Mypy `_, "
+"`Pyre `_, et `Pytype `_ peuvent vérifier les indications de type dans du code source "
+"Python."
-#: ../Doc/faq/programming.rst:81
+#: ../Doc/faq/programming.rst:84
msgid "How can I create a stand-alone binary from a Python script?"
-msgstr ""
+msgstr "Comment créer un binaire autonome à partir d'un script Python ?"
-#: ../Doc/faq/programming.rst:83
+#: ../Doc/faq/programming.rst:86
msgid ""
"You don't need the ability to compile Python to C code if all you want is a "
"stand-alone program that users can download and run without having to "
@@ -144,16 +202,27 @@ msgid ""
"determine the set of modules required by a program and bind these modules "
"together with a Python binary to produce a single executable."
msgstr ""
+"Pour créer un programme autonome, c'est-à-dire un programme que n'importe "
+"qui peut télécharger et exécuter sans avoir à installer une distribution "
+"Python au préalable, il n'est pas nécessaire de compiler du code Python en "
+"code C. Il existe en effet plusieurs outils qui déterminent les modules "
+"requis par un programme et lient ces modules avec un binaire Python pour "
+"produire un seul exécutable."
-#: ../Doc/faq/programming.rst:89
+#: ../Doc/faq/programming.rst:92
msgid ""
"One is to use the freeze tool, which is included in the Python source tree "
"as ``Tools/freeze``. It converts Python byte code to C arrays; a C compiler "
"you can embed all your modules into a new program, which is then linked with "
"the standard Python modules."
msgstr ""
+"Un de ces outils est freeze, qui se trouve dans ``Tools/freeze`` de "
+"l'arborescence des sources de Python. Il convertit le code intermédiaire "
+"(*bytecode*) Python en tableaux C ; un compilateur C permet d'intégrer tous "
+"vos modules dans un nouveau programme, qui est ensuite lié aux modules "
+"standards Python."
-#: ../Doc/faq/programming.rst:94
+#: ../Doc/faq/programming.rst:97
msgid ""
"It works by scanning your source recursively for import statements (in both "
"forms) and looking for the modules in the standard Python path as well as in "
@@ -165,61 +234,84 @@ msgid ""
"rest of the Python interpreter to form a self-contained binary which acts "
"exactly like your script."
msgstr ""
+"Il fonctionne en cherchant de manière récursive les instructions d'import "
+"(sous les deux formes) dans le code source et en recherchant ces modules "
+"dans le chemin Python standard ainsi que dans le répertoire source (pour les "
+"modules natifs). Il transforme ensuite le code intermédiaire des modules "
+"écrits en Python en code C (des tableaux pré-remplis qui peuvent être "
+"transformés en objets code à l'aide du module *marshal*) et crée un fichier "
+"de configuration personnalisé qui contient uniquement les modules natifs qui "
+"sont réellement utilisés dans le programme. Il compile ensuite le code C "
+"généré et le lie au reste de l'interpréteur Python pour former un binaire "
+"autonome qui fait exactement la même chose que le script."
-#: ../Doc/faq/programming.rst:103
+#: ../Doc/faq/programming.rst:106
msgid ""
"Obviously, freeze requires a C compiler. There are several other utilities "
"which don't. One is Thomas Heller's py2exe (Windows only) at"
msgstr ""
+"Bien évidemment, freeze nécessite un compilateur C. Il existe d'autres "
+"outils qui peuvent s'en passer. Un de ceux-ci est py2exe de Thomas Heller "
+"(pour Windows uniquement) disponible sur"
-#: ../Doc/faq/programming.rst:106
+#: ../Doc/faq/programming.rst:109
msgid "http://www.py2exe.org/"
-msgstr ""
+msgstr "http://www.py2exe.org/"
-#: ../Doc/faq/programming.rst:108
+#: ../Doc/faq/programming.rst:111
msgid ""
"Another tool is Anthony Tuininga's `cx_Freeze `_."
msgstr ""
+"Un autre de ces outils est `cx_Freeze `_ d'Anthony Tuininga."
-#: ../Doc/faq/programming.rst:112
+#: ../Doc/faq/programming.rst:115
msgid "Are there coding standards or a style guide for Python programs?"
msgstr ""
+"Existe-t-il des normes de développement ou un guide de style pour écrire des "
+"programmes Python ?"
-#: ../Doc/faq/programming.rst:114
+#: ../Doc/faq/programming.rst:117
msgid ""
"Yes. The coding style required for standard library modules is documented "
"as :pep:`8`."
msgstr ""
+"Oui. Le style de développement que les modules de la bibliothèque standard "
+"doivent obligatoirement respecter est documenté dans la :pep:`8`."
-#: ../Doc/faq/programming.rst:119
+#: ../Doc/faq/programming.rst:122
msgid "Core Language"
-msgstr ""
+msgstr "Fondamentaux"
-#: ../Doc/faq/programming.rst:122
+#: ../Doc/faq/programming.rst:125
msgid "Why am I getting an UnboundLocalError when the variable has a value?"
msgstr ""
+"Pourquoi une UnboundLocalError est levée alors qu'une variable a une valeur ?"
-#: ../Doc/faq/programming.rst:124
+#: ../Doc/faq/programming.rst:127
msgid ""
"It can be a surprise to get the UnboundLocalError in previously working code "
"when it is modified by adding an assignment statement somewhere in the body "
"of a function."
msgstr ""
+"Il est parfois surprenant d'obtenir une UnboundLocalError dans du code "
+"jusqu'à présent correct, quand celui-ci est modifié en ajoutant une "
+"instruction d'affectation quelque part dans le corps d'une fonction."
-#: ../Doc/faq/programming.rst:128
+#: ../Doc/faq/programming.rst:131
msgid "This code:"
-msgstr ""
+msgstr "Le code suivant :"
-#: ../Doc/faq/programming.rst:136
+#: ../Doc/faq/programming.rst:139
msgid "works, but this code:"
-msgstr ""
+msgstr "fonctionne, mais le suivant :"
-#: ../Doc/faq/programming.rst:143
+#: ../Doc/faq/programming.rst:146
msgid "results in an UnboundLocalError:"
-msgstr ""
+msgstr "lève une UnboundLocalError :"
-#: ../Doc/faq/programming.rst:150
+#: ../Doc/faq/programming.rst:153
msgid ""
"This is because when you make an assignment to a variable in a scope, that "
"variable becomes local to that scope and shadows any similarly named "
@@ -228,39 +320,58 @@ msgid ""
"Consequently when the earlier ``print(x)`` attempts to print the "
"uninitialized local variable and an error results."
msgstr ""
+"Cela est dû au fait que, quand une variable est affectée dans un contexte, "
+"cette variable devient locale à ce contexte et remplace toute variable du "
+"même nom du contexte appelant. Vu que la dernière instruction dans *foo* "
+"affecte une nouvelle valeur à ``x``, le compilateur la traite comme une "
+"nouvelle variable. Par conséquent, quand le ``print(x)`` essaye d'afficher "
+"la variable non initialisée, une erreur se produit."
-#: ../Doc/faq/programming.rst:157
+#: ../Doc/faq/programming.rst:160
msgid ""
"In the example above you can access the outer scope variable by declaring it "
"global:"
msgstr ""
+"Dans l'exemple ci-dessus, la variable du contexte appelant reste accessible "
+"en la déclarant globale :"
-#: ../Doc/faq/programming.rst:168
+#: ../Doc/faq/programming.rst:171
msgid ""
"This explicit declaration is required in order to remind you that (unlike "
"the superficially analogous situation with class and instance variables) you "
"are actually modifying the value of the variable in the outer scope:"
msgstr ""
+"Cette déclaration explicite est obligatoire pour se rappeler que "
+"(contrairement au cas à peu près similaire avec des variables de classe et "
+"d'instance), c'est la valeur de la variable du contexte appelant qui est "
+"modifiée :"
-#: ../Doc/faq/programming.rst:175
+#: ../Doc/faq/programming.rst:178
msgid ""
"You can do a similar thing in a nested scope using the :keyword:`nonlocal` "
"keyword:"
msgstr ""
+"Une alternative dans un contexte imbriqué consiste à utiliser le mot-clé :"
+"keyword:`nonlocal` :"
-#: ../Doc/faq/programming.rst:192
+#: ../Doc/faq/programming.rst:195
msgid "What are the rules for local and global variables in Python?"
msgstr ""
+"Quelles sont les règles pour les variables locales et globales en Python ?"
-#: ../Doc/faq/programming.rst:194
+#: ../Doc/faq/programming.rst:197
msgid ""
"In Python, variables that are only referenced inside a function are "
"implicitly global. If a variable is assigned a value anywhere within the "
"function's body, it's assumed to be a local unless explicitly declared as "
"global."
msgstr ""
+"En Python, si une variable n'est pas modifiée dans une fonction mais "
+"seulement lue, elle est implicitement considérée comme globale. Si une "
+"valeur lui est affectée, elle est considérée locale (sauf si elle est "
+"explicitement déclarée globale)."
-#: ../Doc/faq/programming.rst:198
+#: ../Doc/faq/programming.rst:201
msgid ""
"Though a bit surprising at first, a moment's consideration explains this. "
"On one hand, requiring :keyword:`global` for assigned variables provides a "
@@ -270,28 +381,43 @@ msgid ""
"a component of an imported module. This clutter would defeat the usefulness "
"of the ``global`` declaration for identifying side-effects."
msgstr ""
+"Bien que surprenant au premier abord, ce choix s'explique facilement. D'une "
+"part, exiger :keyword:`global` pour des variables affectées est une "
+"protection contre des effets de bord inattendus. D'autre part, si ``global`` "
+"était obligatoire pour toutes les références à des objets globaux, il "
+"faudrait mettre ``global`` partout, car il faudrait dans ce cas déclarer "
+"globale chaque référence à une fonction native ou à un composant d'un module "
+"importé. Le codé serait alors truffé de déclarations ``global``, ce qui "
+"nuirait à leur raison d'être : identifier les effets de bords."
-#: ../Doc/faq/programming.rst:208
+#: ../Doc/faq/programming.rst:211
msgid ""
"Why do lambdas defined in a loop with different values all return the same "
"result?"
msgstr ""
+"Pourquoi des expressions lambda définies dans une boucle avec des valeurs "
+"différentes retournent-elles le même résultat ?"
-#: ../Doc/faq/programming.rst:210
+#: ../Doc/faq/programming.rst:213
msgid ""
"Assume you use a for loop to define a few different lambdas (or even plain "
"functions), e.g.::"
msgstr ""
+"Supposons que l'on utilise une boucle itérative pour définir des expressions "
+"lambda (voire même des fonctions) différentes, par exemple ::"
-#: ../Doc/faq/programming.rst:217
+#: ../Doc/faq/programming.rst:220
msgid ""
"This gives you a list that contains 5 lambdas that calculate ``x**2``. You "
"might expect that, when called, they would return, respectively, ``0``, "
"``1``, ``4``, ``9``, and ``16``. However, when you actually try you will "
"see that they all return ``16``::"
msgstr ""
+"Le code précédent crée une liste de 5 expressions lambda qui calculent "
+"chacune ``x**2``. En les exécutant, on pourrait s'attendre à obtenir ``0``, "
+"``1``, ``4``, ``9`` et ``16``. Elles renvoient en réalité toutes ``16`` ::"
-#: ../Doc/faq/programming.rst:227
+#: ../Doc/faq/programming.rst:230
msgid ""
"This happens because ``x`` is not local to the lambdas, but is defined in "
"the outer scope, and it is accessed when the lambda is called --- not when "
@@ -299,14 +425,23 @@ msgid ""
"the functions now return ``4**2``, i.e. ``16``. You can also verify this by "
"changing the value of ``x`` and see how the results of the lambdas change::"
msgstr ""
+"Ceci s'explique par le fait que ``x`` n'est pas une variable locale aux "
+"expressions, mais est définie dans le contexte appelant. Elle est lue à "
+"l'appel de l'expression lambda – et non au moment où cette expression est "
+"définie. À la fin de la boucle, ``x`` vaut ``4``, donc toutes les fonctions "
+"renvoient ``4*2``, i.e. ``16``. Ceci se vérifie également en changeant la "
+"valeur de ``x`` et en constatant que les résultats sont modifiés ::"
-#: ../Doc/faq/programming.rst:237
+#: ../Doc/faq/programming.rst:240
msgid ""
"In order to avoid this, you need to save the values in variables local to "
"the lambdas, so that they don't rely on the value of the global ``x``::"
msgstr ""
+"Pour éviter ce phénomène, les valeurs doivent être stockées dans des "
+"variables locales aux expressions lambda pour que celles-ci ne se basent "
+"plus sur la variable globale ``x`` ::"
-#: ../Doc/faq/programming.rst:244
+#: ../Doc/faq/programming.rst:247
msgid ""
"Here, ``n=x`` creates a new variable ``n`` local to the lambda and computed "
"when the lambda is defined so that it has the same value that ``x`` had at "
@@ -314,18 +449,26 @@ msgid ""
"the first lambda, ``1`` in the second, ``2`` in the third, and so on. "
"Therefore each lambda will now return the correct result::"
msgstr ""
+"Dans ce code, ``n=x`` crée une nouvelle variable ``n``, locale à "
+"l'expression. Cette variable est évaluée quand l'expression est définie donc "
+"``n`` a la même valeur que ``x`` à ce moment. La valeur de ``n`` est donc "
+"``0`` dans la première lambda, ``1`` dans la deuxième, ``2`` dans la "
+"troisième et ainsi de suite. Chaque expression lambda renvoie donc le "
+"résultat correct ::"
-#: ../Doc/faq/programming.rst:255
+#: ../Doc/faq/programming.rst:258
msgid ""
"Note that this behaviour is not peculiar to lambdas, but applies to regular "
"functions too."
msgstr ""
+"Ce comportement n'est pas propre aux expressions lambda, mais s'applique "
+"aussi aux fonctions normales."
-#: ../Doc/faq/programming.rst:260
+#: ../Doc/faq/programming.rst:263
msgid "How do I share global variables across modules?"
-msgstr ""
+msgstr "Comment partager des variables globales entre modules ?"
-#: ../Doc/faq/programming.rst:262
+#: ../Doc/faq/programming.rst:265
msgid ""
"The canonical way to share information across modules within a single "
"program is to create a special module (often called config or cfg). Just "
@@ -334,69 +477,93 @@ msgid ""
"each module, any changes made to the module object get reflected "
"everywhere. For example:"
msgstr ""
+"La manière standard de partager des informations entre modules d'un même "
+"programme est de créer un module spécial (souvent appelé *config* ou *cfg*) "
+"et de l'importer dans tous les modules de l'application ; le module devient "
+"accessible depuis l'espace de nommage global. Vu qu'il n'y a qu'une instance "
+"de chaque module, tout changement dans l'instance est propagé partout. Par "
+"exemple :"
-#: ../Doc/faq/programming.rst:268
+#: ../Doc/faq/programming.rst:271
msgid "config.py::"
-msgstr ""
+msgstr "*config.py* ::"
-#: ../Doc/faq/programming.rst:272
+#: ../Doc/faq/programming.rst:275
msgid "mod.py::"
-msgstr ""
+msgstr "*mod.py* ::"
-#: ../Doc/faq/programming.rst:277
+#: ../Doc/faq/programming.rst:280
msgid "main.py::"
-msgstr ""
+msgstr "*main.py* ::"
-#: ../Doc/faq/programming.rst:283
+#: ../Doc/faq/programming.rst:286
msgid ""
"Note that using a module is also the basis for implementing the Singleton "
"design pattern, for the same reason."
msgstr ""
+"Pour les mêmes raisons, l'utilisation d'un module est aussi à la base de "
+"l'implémentation du patron de conception singleton."
-#: ../Doc/faq/programming.rst:288
+#: ../Doc/faq/programming.rst:291
msgid "What are the \"best practices\" for using import in a module?"
msgstr ""
+"Quelles sont les « bonnes pratiques » pour utiliser import dans un module ?"
-#: ../Doc/faq/programming.rst:290
+#: ../Doc/faq/programming.rst:293
msgid ""
"In general, don't use ``from modulename import *``. Doing so clutters the "
"importer's namespace, and makes it much harder for linters to detect "
"undefined names."
msgstr ""
+"De manière générale, il ne faut pas faire ``from modulename import *``. Ceci "
+"encombre l'espace de nommage de l'importateur et rend la détection de noms "
+"non-définis beaucoup plus ardue pour les analyseurs de code."
-#: ../Doc/faq/programming.rst:294
+#: ../Doc/faq/programming.rst:297
msgid ""
"Import modules at the top of a file. Doing so makes it clear what other "
"modules your code requires and avoids questions of whether the module name "
"is in scope. Using one import per line makes it easy to add and delete "
"module imports, but using multiple imports per line uses less screen space."
msgstr ""
+"Les modules doivent être importés au début d'un fichier. Ceci permet "
+"d'afficher clairement de quels modules le code à besoin et évite de se "
+"demander si le module est dans le contexte. Faire un seul `import` par ligne "
+"rend l'ajout et la suppression d'une importation de module plus aisé, mais "
+"importer plusieurs modules sur une même ligne prend moins d'espace."
-#: ../Doc/faq/programming.rst:299
+#: ../Doc/faq/programming.rst:302
msgid "It's good practice if you import modules in the following order:"
-msgstr ""
+msgstr "Il est recommandé d'importer les modules dans l'ordre suivant :"
-#: ../Doc/faq/programming.rst:301
+#: ../Doc/faq/programming.rst:304
msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``"
msgstr ""
+"les modules de la bibliothèque standard — e.g. ``sys``, ``os``, ``getopt``, "
+"``re``"
-#: ../Doc/faq/programming.rst:302
+#: ../Doc/faq/programming.rst:305
msgid ""
"third-party library modules (anything installed in Python's site-packages "
"directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc."
msgstr ""
+"les modules externes (tout ce qui est installé dans le dossier *site-"
+"packages* de Python) — e.g. *mx.DateTime, ZODB, PIL.Image*, etc."
-#: ../Doc/faq/programming.rst:304
+#: ../Doc/faq/programming.rst:307
msgid "locally-developed modules"
-msgstr ""
+msgstr "les modules développés en local"
-#: ../Doc/faq/programming.rst:306
+#: ../Doc/faq/programming.rst:309
msgid ""
"It is sometimes necessary to move imports to a function or class to avoid "
"problems with circular imports. Gordon McMillan says:"
msgstr ""
+"Il est parfois nécessaire de déplacer des importations dans une fonction ou "
+"une classe pour éviter les problèmes d'importations circulaires. Comme le "
+"souligne Gordon McMillan :"
-#: ../Doc/faq/programming.rst:309
+#: ../Doc/faq/programming.rst:312
msgid ""
"Circular imports are fine where both modules use the \"import \" "
"form of import. They fail when the 2nd module wants to grab a name out of "
@@ -404,16 +571,26 @@ msgid ""
"That's because names in the 1st are not yet available, because the first "
"module is busy importing the 2nd."
msgstr ""
+"Il n'y a aucun souci à faire des importations circulaires tant que les deux "
+"modules utilisent la forme ``import ``. Ça ne pose problème que si "
+"le second module cherche à récupérer un nom du premier module (*\"from "
+"module import name\"*) et que l'importation est dans l'espace de nommage du "
+"fichier. Les noms du premier module ne sont en effet pas encore disponibles "
+"car le premier module est occupé à importer le second."
-#: ../Doc/faq/programming.rst:315
+#: ../Doc/faq/programming.rst:318
msgid ""
"In this case, if the second module is only used in one function, then the "
"import can easily be moved into that function. By the time the import is "
"called, the first module will have finished initializing, and the second "
"module can do its import."
msgstr ""
+"Dans ce cas, si le second module n'est utilisé que dans une fonction, "
+"l'importation peut facilement être déplacée dans cette fonction. Au moment "
+"où l'importation sera appelée, le premier module aura fini de s'initialiser "
+"et le second pourra faire son importation."
-#: ../Doc/faq/programming.rst:320
+#: ../Doc/faq/programming.rst:323
msgid ""
"It may also be necessary to move imports out of the top level of code if "
"some of the modules are platform-specific. In that case, it may not even be "
@@ -421,8 +598,14 @@ msgid ""
"importing the correct modules in the corresponding platform-specific code is "
"a good option."
msgstr ""
+"Il peut parfois être nécessaire de déplacer des importations de modules hors "
+"de l'espace de plus haut niveau du code si certains de ces modules dépendent "
+"de la machine utilisée. Dans ce cas de figure, il est parfois impossible "
+"d'importer tous les modules au début du fichier. Dans ce cas, il est "
+"recommandé d'importer les modules adéquats dans le code spécifique à la "
+"machine."
-#: ../Doc/faq/programming.rst:325
+#: ../Doc/faq/programming.rst:328
msgid ""
"Only move imports into a local scope, such as inside a function definition, "
"if it's necessary to solve a problem such as avoiding a circular import or "
@@ -435,25 +618,42 @@ msgid ""
"only a couple of dictionary lookups. Even if the module name has gone out "
"of scope, the module is probably available in :data:`sys.modules`."
msgstr ""
-
-#: ../Doc/faq/programming.rst:338
+"Les imports ne devraient être déplacés dans un espace local, comme dans la "
+"définition d'une fonction, que si cela est nécessaire pour résoudre un "
+"problème comme éviter des dépendances circulaires ou réduire le temps "
+"d'initialisation d'un module. Cette technique est particulièrement utile si "
+"la majorité des imports est superflue selon le flux d'exécution du "
+"programme. Il est également pertinent de déplacer des importations dans une "
+"fonction si le module n'est utilisé qu'au sein de cette fonction. Le premier "
+"chargement d'un module peut être coûteux à cause du coût fixe "
+"d'initialisation d'un module, mais charger un module plusieurs fois est "
+"quasiment gratuit, cela ne coûte que quelques indirections dans un "
+"dictionnaire. Même si le nom du module est sorti du contexte courant, le "
+"module est probablement disponible dans :data:`sys.modules`."
+
+#: ../Doc/faq/programming.rst:341
msgid "Why are default values shared between objects?"
-msgstr ""
+msgstr "Pourquoi les arguments par défaut sont-ils partagés entre les objets ?"
-#: ../Doc/faq/programming.rst:340
+#: ../Doc/faq/programming.rst:343
msgid ""
"This type of bug commonly bites neophyte programmers. Consider this "
"function::"
msgstr ""
+"C'est un problème que rencontrent souvent les programmeurs débutants. "
+"Examinons la fonction suivante ::"
-#: ../Doc/faq/programming.rst:347
+#: ../Doc/faq/programming.rst:350
msgid ""
"The first time you call this function, ``mydict`` contains a single item. "
"The second time, ``mydict`` contains two items because when ``foo()`` begins "
"executing, ``mydict`` starts out with an item already in it."
msgstr ""
+"Au premier appel de cette fonction, ``mydict`` ne contient qu'un seul "
+"élément. Au second appel, ``mydict`` contient deux éléments car quand "
+"``foo()`` commence son exécution, ``mydict`` contient déjà un élément."
-#: ../Doc/faq/programming.rst:351
+#: ../Doc/faq/programming.rst:354
msgid ""
"It is often expected that a function call creates new objects for default "
"values. This is not what happens. Default values are created exactly once, "
@@ -461,27 +661,41 @@ msgid ""
"dictionary in this example, subsequent calls to the function will refer to "
"this changed object."
msgstr ""
+"On est souvent amené à croire qu'un appel de fonction créé des nouveaux "
+"objets pour les valeurs par défaut. Ce n'est pas le cas. Les valeurs par "
+"défaut ne sont créées qu'une et une seule fois, au moment où la fonction est "
+"définie. Si l'objet est modifié, comme le dictionnaire dans cet exemple, les "
+"appels suivants à cette fonction font référence à l'objet ainsi modifié."
-#: ../Doc/faq/programming.rst:356
+#: ../Doc/faq/programming.rst:359
msgid ""
"By definition, immutable objects such as numbers, strings, tuples, and "
"``None``, are safe from change. Changes to mutable objects such as "
"dictionaries, lists, and class instances can lead to confusion."
msgstr ""
+"Par définition, les objets immuables comme les nombres, les chaînes de "
+"caractères, les n-uplets et ``None`` ne sont pas modifiés. Les changements "
+"sur des objets muables comme les dictionnaires, les listes et les instances "
+"de classe peuvent porter à confusion."
-#: ../Doc/faq/programming.rst:360
+#: ../Doc/faq/programming.rst:363
msgid ""
"Because of this feature, it is good programming practice to not use mutable "
"objects as default values. Instead, use ``None`` as the default value and "
"inside the function, check if the parameter is ``None`` and create a new "
"list/dictionary/whatever if it is. For example, don't write::"
msgstr ""
+"En raison de cette fonctionnalité, il vaut mieux ne pas utiliser d'objets "
+"muables comme valeurs par défaut. Il vaut mieux utiliser ``None`` comme "
+"valeur par défaut et, à l'intérieur de la fonction, vérifier si le paramètre "
+"est à ``None`` et créer une nouvelle liste, dictionnaire ou autre, le cas "
+"échéant. Par exemple, il ne faut pas écrire ::"
-#: ../Doc/faq/programming.rst:368
+#: ../Doc/faq/programming.rst:371
msgid "but::"
-msgstr ""
+msgstr "mais plutôt ::"
-#: ../Doc/faq/programming.rst:374
+#: ../Doc/faq/programming.rst:377
msgid ""
"This feature can be useful. When you have a function that's time-consuming "
"to compute, a common technique is to cache the parameters and the resulting "
@@ -489,31 +703,44 @@ msgid ""
"value is requested again. This is called \"memoizing\", and can be "
"implemented like this::"
msgstr ""
+"Cette fonctionnalité a une utilité. Il est courant de mettre en cache les "
+"paramètres et la valeur de retour de chacun des appels d'une fonction "
+"coûteuse à exécuter, et de renvoyer la valeur stockée en cache si le même "
+"appel est ré-effectué. C'est la technique dite de « mémoïsation », qui "
+"s'implémente de la manière suivante ::"
-#: ../Doc/faq/programming.rst:389
+#: ../Doc/faq/programming.rst:392
msgid ""
"You could use a global variable containing a dictionary instead of the "
"default value; it's a matter of taste."
msgstr ""
+"Il est possible d'utiliser une variable globale contenant un dictionnaire à "
+"la place de la valeur par défaut ; ce n'est qu'une question de goût."
-#: ../Doc/faq/programming.rst:394
+#: ../Doc/faq/programming.rst:397
msgid ""
"How can I pass optional or keyword parameters from one function to another?"
msgstr ""
+"Comment passer des paramètres optionnels ou nommés d'une fonction à l'autre ?"
-#: ../Doc/faq/programming.rst:396
+#: ../Doc/faq/programming.rst:399
msgid ""
"Collect the arguments using the ``*`` and ``**`` specifiers in the "
"function's parameter list; this gives you the positional arguments as a "
"tuple and the keyword arguments as a dictionary. You can then pass these "
"arguments when calling another function by using ``*`` and ``**``::"
msgstr ""
+"Il faut récupérer les arguments en utilisant les sélecteurs ``*`` et ``**`` "
+"dans la liste des paramètres de la fonction ; ceci donne les arguments "
+"positionnels sous la forme d'un n-uplet et les arguments nommés sous forme "
+"de dictionnaire. Ces arguments peuvent être passés à une autre fonction en "
+"utilisant ``*`` et ``**`` ::"
-#: ../Doc/faq/programming.rst:415
+#: ../Doc/faq/programming.rst:418
msgid "What is the difference between arguments and parameters?"
-msgstr ""
+msgstr "Quelle est la différence entre les arguments et les paramètres ?"
-#: ../Doc/faq/programming.rst:417
+#: ../Doc/faq/programming.rst:420
msgid ""
":term:`Parameters ` are defined by the names that appear in a "
"function definition, whereas :term:`arguments ` are the values "
@@ -521,59 +748,78 @@ msgid ""
"of arguments a function can accept. For example, given the function "
"definition::"
msgstr ""
+"Les :term:`paramètres ` sont les noms qui apparaissent dans une "
+"définition de fonction, alors que les :term:`arguments ` sont les "
+"valeurs qui sont réellement passées à une fonction lors de l'appel de celle-"
+"ci. Les paramètres définissent les types des arguments qu'une fonction "
+"accepte. Ainsi, avec la définition de fonction suivante ::"
-#: ../Doc/faq/programming.rst:425
+#: ../Doc/faq/programming.rst:428
msgid ""
"*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling "
"``func``, for example::"
msgstr ""
+"*foo*, *bar* et *kwargs* sont des paramètres de ``func``. Mais à l'appel de "
+"``func`` avec, par exemple ::"
-#: ../Doc/faq/programming.rst:430
+#: ../Doc/faq/programming.rst:433
msgid "the values ``42``, ``314``, and ``somevar`` are arguments."
-msgstr ""
+msgstr "les valeurs ``42``, ``314``, et ``somevar`` sont des arguments."
-#: ../Doc/faq/programming.rst:434
+#: ../Doc/faq/programming.rst:437
msgid "Why did changing list 'y' also change list 'x'?"
-msgstr ""
+msgstr "Pourquoi modifier la liste 'y' modifie aussi la liste 'x' ?"
-#: ../Doc/faq/programming.rst:436
+#: ../Doc/faq/programming.rst:439
msgid "If you wrote code like::"
-msgstr "Si vous avez écrit du code comme : ::"
+msgstr "Si vous avez écrit du code comme ::"
-#: ../Doc/faq/programming.rst:446
+#: ../Doc/faq/programming.rst:449
msgid ""
"you might be wondering why appending an element to ``y`` changed ``x`` too."
msgstr ""
+"vous vous demandez peut-être pourquoi l'ajout d'un élément à ``y`` a aussi "
+"changé ``x``."
-#: ../Doc/faq/programming.rst:448
+#: ../Doc/faq/programming.rst:451
msgid "There are two factors that produce this result:"
-msgstr ""
+msgstr "Il y a deux raisons qui conduisent à ce comportement :"
-#: ../Doc/faq/programming.rst:450
+#: ../Doc/faq/programming.rst:453
msgid ""
"Variables are simply names that refer to objects. Doing ``y = x`` doesn't "
"create a copy of the list -- it creates a new variable ``y`` that refers to "
"the same object ``x`` refers to. This means that there is only one object "
"(the list), and both ``x`` and ``y`` refer to it."
msgstr ""
+"Les variables ne sont que des noms qui font référence à des objets. La ligne "
+"``y = x`` ne crée pas une copie de la liste — elle crée une nouvelle "
+"variable ``y`` qui pointe sur le même objet que ``x``. Ceci signifie qu'il "
+"n'existe qu'un seul objet (la liste) auquel ``x`` et ``y`` font référence."
-#: ../Doc/faq/programming.rst:454
+#: ../Doc/faq/programming.rst:457
msgid ""
"Lists are :term:`mutable`, which means that you can change their content."
msgstr ""
+"Les listes sont des :term:`muable`, ce qui signifie que leur contenu peut "
+"être modifié."
-#: ../Doc/faq/programming.rst:456
+#: ../Doc/faq/programming.rst:459
msgid ""
"After the call to :meth:`~list.append`, the content of the mutable object "
"has changed from ``[]`` to ``[10]``. Since both the variables refer to the "
"same object, using either name accesses the modified value ``[10]``."
msgstr ""
+"Après l'appel de :meth:`~list.append`, le contenu de l'objet muable est "
+"passé de ``[]`` à ``[10]``. Vu que les deux variables font référence au même "
+"objet, il est possible d'accéder à la valeur modifiée ``[10]`` avec chacun "
+"des noms."
-#: ../Doc/faq/programming.rst:460
+#: ../Doc/faq/programming.rst:463
msgid "If we instead assign an immutable object to ``x``::"
-msgstr ""
+msgstr "Si au contraire, on affecte un objet immuable à ``x`` ::"
-#: ../Doc/faq/programming.rst:470
+#: ../Doc/faq/programming.rst:473
msgid ""
"we can see that in this case ``x`` and ``y`` are not equal anymore. This is "
"because integers are :term:`immutable`, and when we do ``x = x + 1`` we are "
@@ -583,8 +829,16 @@ msgid ""
"objects (the ints ``6`` and ``5``) and two variables that refer to them "
"(``x`` now refers to ``6`` but ``y`` still refers to ``5``)."
msgstr ""
+"on observe que ``x`` et ``y`` ne sont ici plus égales. Les entiers sont des "
+"immuables (:term:`immutable`), et ``x = x + 1`` ne change pas l'entier ``5`` "
+"en incrémentant sa valeur. Au contraire, un nouvel objet est créé (l'entier "
+"``6``) et affecté à ``x`` (c'est à dire qu'on change l'objet auquel fait "
+"référence ``x``). Après cette affectation on a deux objets (les entiers "
+"``6`` et ``5``) et deux variables qui font référence à ces deux objets "
+"(``x`` fait désormais référence à ``6`` mais ``y`` fait toujours référence à "
+"``5``)."
-#: ../Doc/faq/programming.rst:478
+#: ../Doc/faq/programming.rst:481
msgid ""
"Some operations (for example ``y.append(10)`` and ``y.sort()``) mutate the "
"object, whereas superficially similar operations (for example ``y = y + "
@@ -595,8 +849,16 @@ msgid ""
"copy of ``y``, you'll instead end up with ``None``, which will likely cause "
"your program to generate an easily diagnosed error."
msgstr ""
+"Certaines opérations (par exemple, ``y.append(10)`` et ``y.sort()``) "
+"modifient l'objet, alors que des opérations identiques en apparence (par "
+"exemple ``y = y + [10]`` et ``sorted(y)``) créent un nouvel objet. En "
+"général, en Python, une méthode qui modifie un objet renvoie ``None`` (c'est "
+"même systématique dans la bibliothèque standard) pour éviter la confusion "
+"entre les deux opérations. Donc écrire par erreur ``y.sort()`` en pensant "
+"obtenir une copie triée de ``y`` donne ``None``, ce qui conduit très souvent "
+"le programme à générer une erreur facile à diagnostiquer."
-#: ../Doc/faq/programming.rst:487
+#: ../Doc/faq/programming.rst:490
msgid ""
"However, there is one class of operations where the same operation sometimes "
"has different behaviors with different types: the augmented assignment "
@@ -605,112 +867,133 @@ msgid ""
"mutates ``a_list``, whereas ``some_tuple += (1, 2, 3)`` and ``some_int += "
"1`` create new objects)."
msgstr ""
+"Il existe cependant une classe d'opérations qui se comporte différemment "
+"selon le type : les opérateurs d'affectation incrémentaux. Par exemple, ``"
+"+=`` modifie les listes mais pas les n-uplets ni les entiers (``a_list += "
+"[1, 2, 3]`` équivaut à ``a_list.extend([1, 2, 3])`` et modifie ``a_list``, "
+"alors que ``some_tuple += (1, 2, 3)`` et ``some_int += 1`` créent de "
+"nouveaux objets)."
-#: ../Doc/faq/programming.rst:494
+#: ../Doc/faq/programming.rst:497
msgid "In other words:"
-msgstr ""
+msgstr "En d'autres termes :"
-#: ../Doc/faq/programming.rst:496
+#: ../Doc/faq/programming.rst:499
msgid ""
"If we have a mutable object (:class:`list`, :class:`dict`, :class:`set`, "
"etc.), we can use some specific operations to mutate it and all the "
"variables that refer to it will see the change."
msgstr ""
+"Il est possible d'appliquer des opérations qui modifient un objet muable (:"
+"class:`list`, :class:`dict`, :class:`set`, etc.) et toutes les variables qui "
+"y font référence verront le changement."
-#: ../Doc/faq/programming.rst:499
+#: ../Doc/faq/programming.rst:502
msgid ""
"If we have an immutable object (:class:`str`, :class:`int`, :class:`tuple`, "
"etc.), all the variables that refer to it will always see the same value, "
"but operations that transform that value into a new value always return a "
"new object."
msgstr ""
+"Toutes les variables qui font référence à un objet immuable (:class:`str`, :"
+"class:`int`, :class:`tuple`, etc.) renvoient la même valeur, mais les "
+"opérations qui transforment cette valeur en une nouvelle valeur renvoient "
+"toujours un nouvel objet."
-#: ../Doc/faq/programming.rst:504
+#: ../Doc/faq/programming.rst:507
msgid ""
"If you want to know if two variables refer to the same object or not, you "
"can use the :keyword:`is` operator, or the built-in function :func:`id`."
msgstr ""
+"L'opérateur :keyword:`is` ou la fonction native :func:`id` permettent de "
+"savoir si deux variables font référence au même objet."
-#: ../Doc/faq/programming.rst:509
+#: ../Doc/faq/programming.rst:512
msgid "How do I write a function with output parameters (call by reference)?"
msgstr ""
+"Comment écrire une fonction qui modifie ses paramètres ? (passage par "
+"référence)"
-#: ../Doc/faq/programming.rst:511
+#: ../Doc/faq/programming.rst:514
msgid ""
"Remember that arguments are passed by assignment in Python. Since "
"assignment just creates references to objects, there's no alias between an "
"argument name in the caller and callee, and so no call-by-reference per se. "
"You can achieve the desired effect in a number of ways."
msgstr ""
+"En Python, les arguments sont passés comme des affectations de variables. Vu "
+"qu'une affectation crée des références à des objets, il n'y a pas de lien "
+"entre un argument dans l'appel de la fonction et sa définition, et donc pas "
+"de passage par référence en soi. Il y a cependant plusieurs façons d'en "
+"émuler un."
-#: ../Doc/faq/programming.rst:516
+#: ../Doc/faq/programming.rst:519
msgid "By returning a tuple of the results::"
-msgstr ""
+msgstr "En renvoyant un n-uplet de résultats ::"
-#: ../Doc/faq/programming.rst:527
+#: ../Doc/faq/programming.rst:530
msgid "This is almost always the clearest solution."
-msgstr ""
+msgstr "C'est presque toujours la meilleure solution."
-#: ../Doc/faq/programming.rst:529
+#: ../Doc/faq/programming.rst:532
msgid ""
"By using global variables. This isn't thread-safe, and is not recommended."
msgstr ""
-"En utilisant des variables globales. Ce qui n'est pas *thread-safe*, et "
-"n'est donc pas recommandé."
+"En utilisant des variables globales. Cette approche ne fonctionne pas dans "
+"des contextes à plusieurs fils d'exécution (elle n'est pas *thread-safe*), "
+"et n'est donc pas recommandée."
-#: ../Doc/faq/programming.rst:531
+#: ../Doc/faq/programming.rst:534
msgid "By passing a mutable (changeable in-place) object::"
msgstr "En passant un objet muable (modifiable sur place) ::"
-#: ../Doc/faq/programming.rst:541
+#: ../Doc/faq/programming.rst:544
msgid "By passing in a dictionary that gets mutated::"
-msgstr "En passant un dictionnaire, qui sera modifié : ::"
+msgstr "En passant un dictionnaire, qui sera modifié ::"
-#: ../Doc/faq/programming.rst:551
+#: ../Doc/faq/programming.rst:554
msgid "Or bundle up values in a class instance::"
msgstr "Ou regrouper les valeurs dans une instance de classe ::"
-#: ../Doc/faq/programming.rst:567
+#: ../Doc/faq/programming.rst:570
msgid "There's almost never a good reason to get this complicated."
-msgstr ""
-"Il n'y a pratiquement jamais de bonne raison de faire quelque chose d'aussi "
-"compliqué."
+msgstr "Faire quelque chose d'aussi compliqué est rarement une bonne idée."
-#: ../Doc/faq/programming.rst:569
+#: ../Doc/faq/programming.rst:572
msgid "Your best choice is to return a tuple containing the multiple results."
msgstr ""
-"Votre meilleure option est de renvoyer un *tuple* contenant les multiples "
+"La meilleure option reste de renvoyer un n-uplet contenant les différents "
"résultats."
-#: ../Doc/faq/programming.rst:573
+#: ../Doc/faq/programming.rst:576
msgid "How do you make a higher order function in Python?"
msgstr "Comment construire une fonction d'ordre supérieur en Python ?"
-#: ../Doc/faq/programming.rst:575
+#: ../Doc/faq/programming.rst:578
msgid ""
"You have two choices: you can use nested scopes or you can use callable "
"objects. For example, suppose you wanted to define ``linear(a,b)`` which "
"returns a function ``f(x)`` that computes the value ``a*x+b``. Using nested "
"scopes::"
msgstr ""
-"Vous avez deux choix : vous pouvez utiliser les portées imbriquées ou vous "
-"pouvez utiliser des objets appelables. Par exemple, supposons que vous "
-"vouliez définir ``linear(a, b)`` qui renvoie une fonction ``f(x)`` qui "
-"calcule la valeur ``a*x+b``. En utilisant les portées imbriquées : ::"
+"Deux possibilités : on peut utiliser des portées imbriquées ou bien des "
+"objets appelables. Par exemple, supposons que l'on souhaite définir "
+"``linear(a, b)`` qui renvoie une fonction ``f(x)`` qui calcule la valeur "
+"``a*x+b``. En utilisant les portées imbriquées ::"
-#: ../Doc/faq/programming.rst:584
+#: ../Doc/faq/programming.rst:587
msgid "Or using a callable object::"
-msgstr "Ou en utilisant un objet appelable : ::"
+msgstr "Ou en utilisant un objet appelable ::"
-#: ../Doc/faq/programming.rst:594
+#: ../Doc/faq/programming.rst:597
msgid "In both cases, ::"
-msgstr "dans les deux cas, ::"
+msgstr "Dans les deux cas ::"
-#: ../Doc/faq/programming.rst:598
+#: ../Doc/faq/programming.rst:601
msgid "gives a callable object where ``taxes(10e6) == 0.3 * 10e6 + 2``."
msgstr "donne un objet appelable où ``taxes(10e6) == 0.3 * 10e6 + 2``."
-#: ../Doc/faq/programming.rst:600
+#: ../Doc/faq/programming.rst:603
msgid ""
"The callable object approach has the disadvantage that it is a bit slower "
"and results in slightly longer code. However, note that a collection of "
@@ -718,14 +1001,14 @@ msgid ""
msgstr ""
"L'approche par objet appelable a le désavantage d'être légèrement plus lente "
"et de produire un code légèrement plus long. Cependant, il faut noter qu'une "
-"collection d'objet appelables peuvent partager leur signatures par "
-"héritage : ::"
+"collection d'objet appelables peuvent partager leurs signatures par "
+"héritage ::"
-#: ../Doc/faq/programming.rst:609
+#: ../Doc/faq/programming.rst:612
msgid "Object can encapsulate state for several methods::"
msgstr "Les objets peuvent encapsuler un état pour plusieurs méthodes ::"
-#: ../Doc/faq/programming.rst:627
+#: ../Doc/faq/programming.rst:630
msgid ""
"Here ``inc()``, ``dec()`` and ``reset()`` act like functions which share the "
"same counting variable."
@@ -733,36 +1016,35 @@ msgstr ""
"Ici ``inc()``, ``dec()`` et ``reset()`` agissent comme des fonctions "
"partageant une même variable compteur."
-#: ../Doc/faq/programming.rst:632
+#: ../Doc/faq/programming.rst:635
msgid "How do I copy an object in Python?"
-msgstr "Comment copier un objet en Python?"
+msgstr "Comment copier un objet en Python ?"
-#: ../Doc/faq/programming.rst:634
+#: ../Doc/faq/programming.rst:637
msgid ""
"In general, try :func:`copy.copy` or :func:`copy.deepcopy` for the general "
"case. Not all objects can be copied, but most can."
msgstr ""
-"En général, essayez :func:`copy.copy` ou :func:`copy.deepcopy` pour le cas "
-"général. Tout les objets ne peuvent pas être copiés, mais la plupart le "
-"peuvent."
+"En général, essayez :func:`copy.copy` ou :func:`copy.deepcopy`. Tous les "
+"objets ne peuvent pas être copiés, mais la plupart le peuvent."
-#: ../Doc/faq/programming.rst:637
+#: ../Doc/faq/programming.rst:640
msgid ""
"Some objects can be copied more easily. Dictionaries have a :meth:`~dict."
"copy` method::"
msgstr ""
-"Certains objets peuvent être copiés plus facilement. Les Dictionnaires ont "
-"une méthode :meth:`~dict.copy` ::"
+"Certains objets peuvent être copiés plus facilement que d'autres. Les "
+"dictionnaires ont une méthode :meth:`~dict.copy` ::"
-#: ../Doc/faq/programming.rst:642
+#: ../Doc/faq/programming.rst:645
msgid "Sequences can be copied by slicing::"
msgstr "Les séquences peuvent être copiées via la syntaxe des tranches ::"
-#: ../Doc/faq/programming.rst:648
+#: ../Doc/faq/programming.rst:651
msgid "How can I find the methods or attributes of an object?"
-msgstr "Comment puis-je trouver les méthodes ou les attribues d'un objet?"
+msgstr "Comment récupérer les méthodes ou les attributs d'un objet ?"
-#: ../Doc/faq/programming.rst:650
+#: ../Doc/faq/programming.rst:653
msgid ""
"For an instance x of a user-defined class, ``dir(x)`` returns an "
"alphabetized list of the names containing the instance attributes and "
@@ -772,200 +1054,249 @@ msgstr ""
"renvoie une liste alphabétique des noms contenants les attributs de "
"l'instance, et les attributs et méthodes définies par sa classe."
-#: ../Doc/faq/programming.rst:656
+#: ../Doc/faq/programming.rst:659
msgid "How can my code discover the name of an object?"
-msgstr "Comment mon code peut il découvrir le nom d'un objet?"
+msgstr "Comment un code peut-il obtenir le nom d'un objet ?"
-#: ../Doc/faq/programming.rst:658
+#: ../Doc/faq/programming.rst:661
msgid ""
"Generally speaking, it can't, because objects don't really have names. "
"Essentially, assignment always binds a name to a value; The same is true of "
"``def`` and ``class`` statements, but in that case the value is a callable. "
"Consider the following code::"
msgstr ""
-"De façon générale, il ne peut pas, par ce que les objets n'ont pas "
-"réellement de noms. Essentiellement, l'assignation attache un nom à une "
-"valeur; C'est vrai aussi pour les instructions ``def`` et ``class``, à la "
-"différence que dans ce cas la valeur est appelable. Par exemple, dans le "
-"code suivant : ::"
+"C'est impossible en général, parce qu'un objet n'a pas de nom à proprement "
+"parler. Schématiquement, l'affectation fait correspondre un nom à une "
+"valeur ; c'est vrai aussi pour les instructions ``def`` et ``class``, à la "
+"différence près que, dans ce cas, la valeur est un appelable. Par exemple, "
+"dans le code suivant ::"
-#: ../Doc/faq/programming.rst:674
+#: ../Doc/faq/programming.rst:677
msgid ""
"Arguably the class has a name: even though it is bound to two names and "
"invoked through the name B the created instance is still reported as an "
"instance of class A. However, it is impossible to say whether the "
"instance's name is a or b, since both names are bound to the same value."
msgstr ""
-"Le fait que la classe ait un nom est discutable, bien qu'elles soit liée à "
-"deux noms, et qu'elle soit appelée via le nom B, l'instance crée déclare "
-"tout de même être une instance de la classe A. De même Il est impossible de "
-"dire si le nom de l'instance est a ou b, les deux noms sont attachés à la "
+"Affirmer que la classe a un nom est discutable. Bien qu'elle soit liée à "
+"deux noms, et qu'elle soit appelée via le nom B, l'instance créée déclare "
+"tout de même être une instance de la classe A. De même, il est impossible de "
+"dire si le nom de l'instance est a ou b, les deux noms étant attachés à la "
"même valeur."
-#: ../Doc/faq/programming.rst:679
+#: ../Doc/faq/programming.rst:682
msgid ""
"Generally speaking it should not be necessary for your code to \"know the "
"names\" of particular values. Unless you are deliberately writing "
"introspective programs, this is usually an indication that a change of "
"approach might be beneficial."
msgstr ""
-"De façon général, il ne devrait pas être nécessaire pour votre application "
-"de \"connaître le nom\" d'une valeur particulière. À moins que vous soyez "
-"délibérément en train d'écrire un programme introspectif, c'est souvent une "
-"indication qu'un changement d'approche pourrait être bénéfique."
+"De façon générale, une application ne devrait pas avoir besoin de « "
+"connaître le nom » d'une valeur particulière. À moins d'être délibérément en "
+"train d'écrire un programme introspectif, c'est souvent l'indication qu'un "
+"changement d'approche serait bénéfique."
-#: ../Doc/faq/programming.rst:684
+#: ../Doc/faq/programming.rst:687
msgid ""
"In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer "
"to this question:"
msgstr ""
"Sur *comp.lang.python*, Fredrik Lundh a donné un jour une excellente "
-"analogie pour répondre à cette question:"
+"analogie pour répondre à cette question :"
-#: ../Doc/faq/programming.rst:687
+#: ../Doc/faq/programming.rst:690
msgid ""
"The same way as you get the name of that cat you found on your porch: the "
"cat (object) itself cannot tell you its name, and it doesn't really care -- "
"so the only way to find out what it's called is to ask all your neighbours "
"(namespaces) if it's their cat (object)..."
msgstr ""
-"C'est pareil que trouver le nom du chat qui traîne devant votre porte : Le "
-"chat (objet) ne peux pas vous dire lui même son nom, et il s'en moque un peu "
-"-- alors le meilleur moyen de savoir comment il s'appelle est de demander à "
-"tous vos voisins (espaces de noms) si c'est leur chat (objet)…."
+"C'est pareil que trouver le nom du chat qui traîne devant votre porte : le "
+"chat (objet) ne peut pas vous dire lui-même son nom, et il s'en moque un peu "
+"– alors le meilleur moyen de savoir comment il s'appelle est de demander à "
+"tous vos voisins (espaces de nommage) si c'est leur chat (objet)…"
-#: ../Doc/faq/programming.rst:692
+#: ../Doc/faq/programming.rst:695
msgid ""
"....and don't be surprised if you'll find that it's known by many names, or "
"no name at all!"
msgstr ""
-"…et ne soyez pas surpris si vous découvrez qu'il est connus sous plusieurs "
-"noms différents, ou pas de nom du tout!"
+"…et ne soyez pas surpris si vous découvrez qu'il est connu sous plusieurs "
+"noms, ou s'il n'a pas de nom du tout !"
-#: ../Doc/faq/programming.rst:697
+#: ../Doc/faq/programming.rst:700
msgid "What's up with the comma operator's precedence?"
msgstr "Qu'en est-il de la précédence de l'opérateur virgule ?"
-#: ../Doc/faq/programming.rst:699
+#: ../Doc/faq/programming.rst:702
msgid "Comma is not an operator in Python. Consider this session::"
msgstr ""
-"La virgule n'est pas un opérateur en Python. Observez la session suivante ::"
+"La virgule n'est pas un opérateur en Python. Observez le code suivant ::"
-#: ../Doc/faq/programming.rst:704
+#: ../Doc/faq/programming.rst:707
msgid ""
"Since the comma is not an operator, but a separator between expressions the "
"above is evaluated as if you had entered::"
msgstr ""
"Comme la virgule n'est pas un opérateur, mais un séparateur entre deux "
-"expression, l'expression ci dessus, est évaluée de la même façon que si vous "
+"expressions, l'expression ci-dessus est évaluée de la même façon que si vous "
"aviez écrit ::"
-#: ../Doc/faq/programming.rst:709
+#: ../Doc/faq/programming.rst:712
msgid "not::"
msgstr "et non ::"
-#: ../Doc/faq/programming.rst:713
+#: ../Doc/faq/programming.rst:716
msgid ""
"The same is true of the various assignment operators (``=``, ``+=`` etc). "
"They are not truly operators but syntactic delimiters in assignment "
"statements."
msgstr ""
-"Ceci est vrai pour tous les opérateurs d'assignations (``=``, ``+=`` etc). "
-"Ce ne sont pas vraiment des opérateurs mais des délimiteurs syntaxiques dans "
-"les instructions d'assignation."
+"Ceci est vrai pour tous les opérateurs d'affectation (``=``, ``+=`` etc). Ce "
+"ne sont pas vraiment des opérateurs mais plutôt des délimiteurs syntaxiques "
+"dans les instructions d'affectation."
-#: ../Doc/faq/programming.rst:718
+#: ../Doc/faq/programming.rst:721
msgid "Is there an equivalent of C's \"?:\" ternary operator?"
msgstr "Existe-t-il un équivalent à l'opérateur ternaire \"?:\" du C ?"
-#: ../Doc/faq/programming.rst:720
+#: ../Doc/faq/programming.rst:723
msgid "Yes, there is. The syntax is as follows::"
-msgstr "Oui, il y en a un. Sa syntaxe est la suivante : ::"
+msgstr "Oui. Sa syntaxe est la suivante ::"
-#: ../Doc/faq/programming.rst:727
+#: ../Doc/faq/programming.rst:730
msgid ""
"Before this syntax was introduced in Python 2.5, a common idiom was to use "
"logical operators::"
msgstr ""
+"Avant l'introduction de cette syntaxe dans Python 2.5, il était courant "
+"d'utiliser les opérateurs de logique ::"
-#: ../Doc/faq/programming.rst:732
+#: ../Doc/faq/programming.rst:735
msgid ""
"However, this idiom is unsafe, as it can give wrong results when *on_true* "
"has a false boolean value. Therefore, it is always better to use the ``... "
"if ... else ...`` form."
msgstr ""
+"Cet idiome est dangereux, car il donne un résultat erroné quand *on_true* a "
+"la valeur booléenne fausse. Il faut donc toujours utiliser la forme ``... "
+"if ... else ...``."
-#: ../Doc/faq/programming.rst:738
+#: ../Doc/faq/programming.rst:741
msgid "Is it possible to write obfuscated one-liners in Python?"
msgstr ""
"Est-il possible d'écrire des programmes obscurcis (*obfuscated*) d'une ligne "
"en Python ?"
-#: ../Doc/faq/programming.rst:740
-#, fuzzy
+#: ../Doc/faq/programming.rst:743
msgid ""
"Yes. Usually this is done by nesting :keyword:`lambda` within :keyword:`!"
"lambda`. See the following three examples, due to Ulf Bartelt::"
msgstr ""
-"Oui. Cela est généralement réalisé en imbriquant les :keyword:`lambda` dans "
-"des :keyword:`lambda`. Observez les trois exemples suivants de Ulf Bartelt ::"
+"Oui. C'est souvent le cas en imbriquant des :keyword:`lambda` dans des :"
+"keyword:`!lambda`. Par exemple les trois morceaux de code suivants, créés "
+"par Ulf Bartelt ::"
-#: ../Doc/faq/programming.rst:767
+#: ../Doc/faq/programming.rst:770
msgid "Don't try this at home, kids!"
-msgstr "Les enfants, ne faîtes pas ça chez vous !"
+msgstr "Les enfants, ne faites pas ça chez vous !"
+
+#: ../Doc/faq/programming.rst:776
+msgid "What does the slash(/) in the parameter list of a function mean?"
+msgstr ""
+"Que signifie la barre oblique (/) dans la liste des paramètres d'une "
+"fonction ?"
+
+#: ../Doc/faq/programming.rst:778
+msgid ""
+"A slash in the argument list of a function denotes that the parameters prior "
+"to it are positional-only. Positional-only parameters are the ones without "
+"an externally-usable name. Upon calling a function that accepts positional-"
+"only parameters, arguments are mapped to parameters based solely on their "
+"position. For example, :func:`pow` is a function that accepts positional-"
+"only parameters. Its documentation looks like this::"
+msgstr ""
+"Une barre oblique dans la liste des arguments d'une fonction indique que les "
+"paramètres la précédant sont uniquement positionnels. Les paramètres "
+"uniquement positionnels ne peuvent pas être référencés par leur nom depuis "
+"l'extérieur. Lors de l'appel d'une fonction qui accepte des paramètres "
+"uniquement positionnels, les arguments sont affectés aux paramètres en "
+"fonction de leur position. Par exemple, la fonction :func:`pow` n'accepte "
+"que des paramètres uniquement positionnels. Sa documentation est la "
+"suivante ::"
+
+#: ../Doc/faq/programming.rst:794
+msgid ""
+"The slash at the end of the parameter list means that all three parameters "
+"are positional-only. Thus, calling :func:`pow` with keyword aguments would "
+"lead to an error::"
+msgstr ""
+"La barre oblique à la fin de la liste des paramètres signifie que les trois "
+"paramètres sont uniquement positionnels. Et donc, appeler :func:`pow` avec "
+"des arguments nommés provoque une erreur ::"
+
+#: ../Doc/faq/programming.rst:803
+msgid ""
+"Note that as of this writing this is only documentational and no valid "
+"syntax in Python, although there is :pep:`570`, which proposes a syntax for "
+"position-only parameters in Python."
+msgstr ""
+"Notez que cet exemple n'est fourni qu'à titre informatif et n'est pas une "
+"syntaxe Python valide, bien que la :pep:`570` propose une syntaxe pour les "
+"paramètres uniquement positionnels en Python."
-#: ../Doc/faq/programming.rst:771
+#: ../Doc/faq/programming.rst:809
msgid "Numbers and strings"
msgstr "Nombres et chaînes de caractères"
-#: ../Doc/faq/programming.rst:774
+#: ../Doc/faq/programming.rst:812
msgid "How do I specify hexadecimal and octal integers?"
-msgstr "Comment puis-je écrire des entiers hexadécimaux ou octaux ?"
+msgstr "Comment écrire des entiers hexadécimaux ou octaux ?"
-#: ../Doc/faq/programming.rst:776
+#: ../Doc/faq/programming.rst:814
msgid ""
"To specify an octal digit, precede the octal value with a zero, and then a "
"lower or uppercase \"o\". For example, to set the variable \"a\" to the "
"octal value \"10\" (8 in decimal), type::"
msgstr ""
"Pour écrire un entier octal, faites précéder la valeur octale par un zéro, "
-"puis un \"o\" majuscule ou minuscule. Par exemple assigner la valeur octale "
-"\"10\" (8 en décimal) à la variable \"a\", tapez ::"
+"puis un \"o\" majuscule ou minuscule. Par exemple pour affecter la valeur "
+"octale \"10\" (8 en décimal) à la variable \"a\", tapez ::"
-#: ../Doc/faq/programming.rst:784
+#: ../Doc/faq/programming.rst:822
msgid ""
"Hexadecimal is just as easy. Simply precede the hexadecimal number with a "
"zero, and then a lower or uppercase \"x\". Hexadecimal digits can be "
"specified in lower or uppercase. For example, in the Python interpreter::"
msgstr ""
-"L'hexadécimal est tout aussi simple, faîtes précéder le nombre hexadécimal "
+"L'hexadécimal est tout aussi simple, faites précéder le nombre hexadécimal "
"par un zéro, puis un \"x\" majuscule ou minuscule. Les nombres hexadécimaux "
-"peuvent être écrit en majuscules ou en minuscules. Par exemple, dans "
+"peuvent être écrits en majuscules ou en minuscules. Par exemple, dans "
"l'interpréteur Python ::"
-#: ../Doc/faq/programming.rst:797
+#: ../Doc/faq/programming.rst:835
msgid "Why does -22 // 10 return -3?"
msgstr "Pourquoi ``-22 // 10`` donne-t-il ``-3`` ?"
-#: ../Doc/faq/programming.rst:799
+#: ../Doc/faq/programming.rst:837
msgid ""
"It's primarily driven by the desire that ``i % j`` have the same sign as "
"``j``. If you want that, and also want::"
msgstr ""
-"Cela est principalement due à la volonté que ``i % j`` ait le même signe que "
-"j. Si vous voulez cela, vous voulez aussi : ::"
+"Cela est principalement dû à la volonté que ``i % j`` ait le même signe que "
+"j. Si vous voulez en plus que ::"
-#: ../Doc/faq/programming.rst:804
+#: ../Doc/faq/programming.rst:842
msgid ""
"then integer division has to return the floor. C also requires that "
"identity to hold, and then compilers that truncate ``i // j`` need to make "
"``i % j`` have the same sign as ``i``."
msgstr ""
-"Alors la division entière doit renvoyer l'entier inférieur. Le C demande "
-"aussi à ce que cette égalité soit vérifiée, et donc les compilateur qui "
+"alors la division entière doit renvoyer l'entier inférieur. Le C impose "
+"également que cette égalité soit vérifiée, et donc les compilateurs qui "
"tronquent ``i // j`` ont besoin que ``i % j`` ait le même signe que ``i``."
-#: ../Doc/faq/programming.rst:808
+#: ../Doc/faq/programming.rst:846
msgid ""
"There are few real use cases for ``i % j`` when ``j`` is negative. When "
"``j`` is positive, there are many, and in virtually all of them it's more "
@@ -973,27 +1304,27 @@ msgid ""
"say 200 hours ago? ``-190 % 12 == 2`` is useful; ``-190 % 12 == -10`` is a "
"bug waiting to bite."
msgstr ""
-"Il y a peu de cas d'utilisation réels pour ``i%j`` quand ``j`` est négatif. "
-"Quand ``j`` est positif, il y en a beaucoup, et dans pratiquement tous, il "
-"est plus utile que ``i % j`` soit ``>=0``. Si l'horloge dit *10h* "
-"maintenant, que disait-elle il y a 200 heures? ``-190%12 == 2`` est utile; "
-"``-192 % 12 == -10`` est un bug qui attends pour mordre."
+"Il y a peu de cas d'utilisation réels pour ``i % j`` quand ``j`` est "
+"négatif. Quand ``j`` est positif, il y en a beaucoup, et dans pratiquement "
+"tous, il est plus utile que ``i % j`` soit ``>=0``. Si l'horloge affiche "
+"10 h maintenant, qu'affichait-elle il y a 200 heures ? ``-190 % 12 == 2`` "
+"est utile ; ``-190 % 12 == -10`` est un bogue en puissance."
-#: ../Doc/faq/programming.rst:816
+#: ../Doc/faq/programming.rst:854
msgid "How do I convert a string to a number?"
-msgstr "Comment puis-je convertir une chaine de caractère en nombre?"
+msgstr "Comment convertir une chaîne de caractères en nombre ?"
-#: ../Doc/faq/programming.rst:818
+#: ../Doc/faq/programming.rst:856
msgid ""
"For integers, use the built-in :func:`int` type constructor, e.g. "
"``int('144') == 144``. Similarly, :func:`float` converts to floating-point, "
"e.g. ``float('144') == 144.0``."
msgstr ""
-"Pour les entiers, utilisez la fonction native :func:`int` de type "
-"constructeur, par exemple ``int('144') == 144``. De façon similaire, :func:"
-"`float` convertit en valeur flottante, par exemple ``float('144') == 144.0``."
+"Pour les entiers, utilisez le constructeur natif de :func:`int`, par exemple "
+"``int('144') == 144``. De façon similaire, :func:`float` donne la valeur "
+"flottante, par exemple ``float('144') == 144.0``."
-#: ../Doc/faq/programming.rst:822
+#: ../Doc/faq/programming.rst:860
msgid ""
"By default, these interpret the number as decimal, so that ``int('0144') == "
"144`` and ``int('0x144')`` raises :exc:`ValueError`. ``int(string, base)`` "
@@ -1002,15 +1333,14 @@ msgid ""
"interpreted using Python's rules: a leading '0o' indicates octal, and '0x' "
"indicates a hex number."
msgstr ""
-"Par défaut, ces fonctions interprètent les nombre en tant que décimaux, de "
-"telles façons que ``int('0144') == 144`` et ``int('0x144')`` lève une :exc:"
-"`ValueError`. ``int(string, base)`` prends la base depuis laquelle il faut "
-"convertir dans le second argument, optionnel, donc ``int('0x144', 16) == "
-"324``. Si la base donnée est 0, le nombre est interprété selon les règles "
-"Python: un préfixe ``0o`` indique de l'octal, et ``0x`` indique de "
-"l'hexadécimal."
+"Par défaut, ces fonctions interprètent les nombres comme des décimaux, de "
+"telle façon que ``int('0144') == 144`` et ``int('0x144')`` lève une :exc:"
+"`ValueError`. Le second argument (optionnel) de ``int(string, base)`` est la "
+"base dans laquelle convertir, donc ``int('0x144', 16) == 324``. Si la base "
+"donnée est 0, le nombre est interprété selon les règles Python : un préfixe "
+"``0o`` indique de l'octal et ``0x`` indique de l'hexadécimal."
-#: ../Doc/faq/programming.rst:828
+#: ../Doc/faq/programming.rst:866
msgid ""
"Do not use the built-in function :func:`eval` if all you need is to convert "
"strings to numbers. :func:`eval` will be significantly slower and it "
@@ -1019,30 +1349,29 @@ msgid ""
"``__import__('os').system(\"rm -rf $HOME\")`` which would erase your home "
"directory."
msgstr ""
-"N'utilisez pas la fonction native :func:`eval` si tout ce que vous avez "
-"besoin est de convertir des chaines en nombres. :func:`eval` sera "
-"significativement plus lent et implique des risque de sécurité: quelqu'un "
-"pourrait vous envoyez une expression Python pouvant avoir des effets de bord "
-"indésirables. Par exemple, quelqu'un pourrait passer ``__import__('os')."
-"system(\"rm -rf $HOME\")`` ce qui aurait pour effet d'effacer votre "
-"répertoire personnel."
+"N'utilisez pas la fonction native :func:`eval` pour convertir des chaînes de "
+"caractères en nombres. :func:`eval` est beaucoup plus lente et pose des "
+"problèmes de sécurité : quelqu'un pourrait vous envoyer une expression "
+"Python pouvant avoir des effets de bord indésirables. Par exemple, quelqu'un "
+"pourrait passer ``__import__('os').system(\"rm -rf $HOME\")`` ce qui "
+"effacerait votre répertoire personnel."
-#: ../Doc/faq/programming.rst:835
+#: ../Doc/faq/programming.rst:873
msgid ""
":func:`eval` also has the effect of interpreting numbers as Python "
"expressions, so that e.g. ``eval('09')`` gives a syntax error because Python "
"does not allow leading '0' in a decimal number (except '0')."
msgstr ""
-":func:`eval` a aussi pour effet d'interpréter les nombres comme comme des "
-"expression Python, ainsi ``eval('09')`` produit une erreur de syntaxe par ce "
-"que Python ne permet pas les '0' en tête d'un nombre décimal (à l'exception "
-"du nombre '0')."
+":func:`eval` a aussi pour effet d'interpréter les nombres comme des "
+"expressions Python. Ainsi ``eval('09')`` produit une erreur de syntaxe, "
+"parce que Python ne permet pas les '0' en tête d'un nombre décimal (à "
+"l'exception du nombre '0')."
-#: ../Doc/faq/programming.rst:841
+#: ../Doc/faq/programming.rst:879
msgid "How do I convert a number to a string?"
-msgstr "Comment convertir un nombre en chaine de caractère?"
+msgstr "Comment convertir un nombre en chaîne de caractères ?"
-#: ../Doc/faq/programming.rst:843
+#: ../Doc/faq/programming.rst:881
msgid ""
"To convert, e.g., the number 144 to the string '144', use the built-in type "
"constructor :func:`str`. If you want a hexadecimal or octal representation, "
@@ -1051,12 +1380,19 @@ msgid ""
"``\"{:04d}\".format(144)`` yields ``'0144'`` and ``\"{:.3f}\"."
"format(1.0/3.0)`` yields ``'0.333'``."
msgstr ""
+"Pour transformer, par exemple, le nombre 144 en la chaîne de caractères "
+"'144', il faut utiliser la fonction native :func:`str`. Pour obtenir la "
+"représentation hexadécimale ou octale, il faut utiliser les fonctions "
+"natives :func:`hex` ou :func:`oct`. Pour des représentations non-"
+"conventionnelles, se référer aux sections :ref:`f-strings` et :ref:"
+"`formatstrings`, e.g. ``\"{:04d}\".format(144)`` produit ``'0144'`` et ``"
+"\"{:.3f}\".format(1.0/3.0)`` produit ``'0.333'``."
-#: ../Doc/faq/programming.rst:852
+#: ../Doc/faq/programming.rst:890
msgid "How do I modify a string in place?"
-msgstr "Comment modifier une chaine de caractère \"en place\"?"
+msgstr "Comment modifier une chaîne de caractères « sur place » ?"
-#: ../Doc/faq/programming.rst:854
+#: ../Doc/faq/programming.rst:892
msgid ""
"You can't, because strings are immutable. In most situations, you should "
"simply construct a new string from the various parts you want to assemble it "
@@ -1064,18 +1400,23 @@ msgid ""
"unicode data, try using an :class:`io.StringIO` object or the :mod:`array` "
"module::"
msgstr ""
+"C'est impossible car les chaînes de caractères sont immuables. Dans la "
+"plupart des cas, il faut tout simplement construire une nouvelle chaîne à "
+"partir des morceaux de l'ancienne. Si toutefois vous avez besoin d'un objet "
+"capable de modifier de la donnée Unicode « sur place », essayez d'utiliser "
+"un objet :class:`io.StringIO` ou le module :mod:`array` ::"
-#: ../Doc/faq/programming.rst:884
+#: ../Doc/faq/programming.rst:922
msgid "How do I use strings to call functions/methods?"
msgstr ""
-"Comment utiliser des chaines de caractères pour appeler des fonctions/"
-"méthodes?"
+"Comment utiliser des chaînes de caractères pour appeler des fonctions/"
+"méthodes ?"
-#: ../Doc/faq/programming.rst:886
+#: ../Doc/faq/programming.rst:924
msgid "There are various techniques."
-msgstr "Il y a différentes techniques."
+msgstr "Il y a plusieurs façons de faire."
-#: ../Doc/faq/programming.rst:888
+#: ../Doc/faq/programming.rst:926
msgid ""
"The best is to use a dictionary that maps strings to functions. The primary "
"advantage of this technique is that the strings do not need to match the "
@@ -1083,16 +1424,16 @@ msgid ""
"a case construct::"
msgstr ""
"La meilleure est d'utiliser un dictionnaire qui fait correspondre les "
-"chaines de caractères à des fonctions. Le principal avantage de cette "
-"technique est que les chaines n'ont pas besoin d'être égales aux noms de "
-"fonctions. C'est aussi la principale façon d'imiter la construction \"case"
+"chaînes de caractères à des fonctions. Le principal avantage de cette "
+"technique est que les chaînes n'ont pas besoin d'être égales aux noms de "
+"fonctions. C'est aussi la façon principale d'imiter la construction \"case"
"\" ::"
-#: ../Doc/faq/programming.rst:903
+#: ../Doc/faq/programming.rst:941
msgid "Use the built-in function :func:`getattr`::"
msgstr "Utiliser la fonction :func:`getattr` ::"
-#: ../Doc/faq/programming.rst:908
+#: ../Doc/faq/programming.rst:946
msgid ""
"Note that :func:`getattr` works on any object, including classes, class "
"instances, modules, and so on."
@@ -1100,37 +1441,38 @@ msgstr ""
"Notez que :func:`getattr` marche sur n'importe quel objet, ceci inclut les "
"classes, les instances de classes, les modules et ainsi de suite."
-#: ../Doc/faq/programming.rst:911
+#: ../Doc/faq/programming.rst:949
msgid "This is used in several places in the standard library, like this::"
msgstr ""
-"Ceci est utilisé dans plusieurs endroit de la bibliothèque standard, de "
+"Ceci est utilisé à plusieurs reprises dans la bibliothèque standard, de "
"cette façon ::"
-#: ../Doc/faq/programming.rst:924
+#: ../Doc/faq/programming.rst:962
msgid "Use :func:`locals` or :func:`eval` to resolve the function name::"
msgstr ""
-"Utilisez :func:`locals` ou :func:`eval` pour résoudre le nom de fonction ::"
+"Utilisez :func:`locals` ou :func:`eval` pour résoudre le nom de la "
+"fonction ::"
-#: ../Doc/faq/programming.rst:937
+#: ../Doc/faq/programming.rst:975
msgid ""
"Note: Using :func:`eval` is slow and dangerous. If you don't have absolute "
"control over the contents of the string, someone could pass a string that "
"resulted in an arbitrary function being executed."
msgstr ""
-"Note: En utilisant :func:`eval` est lent est dangereux. Si vous n'avez pas "
-"un contrôle absolu sur le contenu de la chaine de caractère, quelqu'un peut "
-"passer une chaine de caractère pouvant résulter en l'exécution de code "
-"arbitraire."
+"Note : utiliser :func:`eval` est lent est dangereux. Si vous n'avez pas un "
+"contrôle absolu sur le contenu de la chaîne de caractères, quelqu'un "
+"pourrait passer une chaîne de caractères pouvant appeler n'importe quelle "
+"fonction."
-#: ../Doc/faq/programming.rst:942
+#: ../Doc/faq/programming.rst:980
msgid ""
"Is there an equivalent to Perl's chomp() for removing trailing newlines from "
"strings?"
msgstr ""
"Existe-t-il un équivalent à la fonction ``chomp()`` de Perl, pour retirer "
-"les caractères de fin de ligne d'une chaine de caractère ?"
+"les caractères de fin de ligne d'une chaîne de caractères ?"
-#: ../Doc/faq/programming.rst:944
+#: ../Doc/faq/programming.rst:982
msgid ""
"You can use ``S.rstrip(\"\\r\\n\")`` to remove all occurrences of any line "
"terminator from the end of the string ``S`` without removing other trailing "
@@ -1138,29 +1480,29 @@ msgid ""
"empty lines at the end, the line terminators for all the blank lines will be "
"removed::"
msgstr ""
-"Vous pouvez utiliser ``S.rstrip(\"\\r\\n\")`` pour retirer toute occurrence "
-"de tout marqueur de fin de ligne, à la fin d'une chaîne de caractère ``S``, "
-"sans en retirer aucun espace. Si la chaîne ``S`` représente plus d'une "
-"ligne, avec plusieurs lignes vides, les marqueurs de fin de de lignes de "
-"chaque lignes vides seront retirés : ::"
+"Vous pouvez utiliser ``S.rstrip(\"\\r\\n\")`` pour retirer toutes les "
+"occurrences de tout marqueur de fin de ligne à la fin d'une chaîne de "
+"caractère ``S``, sans en enlever aucune espace. Si la chaîne ``S`` "
+"représente plus d'une ligne, avec plusieurs lignes vides, les marqueurs de "
+"fin de ligne de chaque ligne vide seront retirés ::"
-#: ../Doc/faq/programming.rst:956
+#: ../Doc/faq/programming.rst:994
msgid ""
"Since this is typically only desired when reading text one line at a time, "
"using ``S.rstrip()`` this way works well."
msgstr ""
-"Du fait que ce soit principalement utile en lisant un texte ligne à ligne, "
-"utiliser ``S.rstrip()`` devrait marcher correctement."
+"Vu que cela ne sert presque qu'à lire un texte ligne à ligne, utiliser ``S."
+"rstrip()`` de cette manière fonctionne correctement."
-#: ../Doc/faq/programming.rst:961
+#: ../Doc/faq/programming.rst:999
msgid "Is there a scanf() or sscanf() equivalent?"
msgstr "Existe-t-il un équivalent à ``scanf()`` ou ``sscanf()`` ?"
-#: ../Doc/faq/programming.rst:963
+#: ../Doc/faq/programming.rst:1001
msgid "Not as such."
msgstr "Pas exactement."
-#: ../Doc/faq/programming.rst:965
+#: ../Doc/faq/programming.rst:1003
msgid ""
"For simple input parsing, the easiest approach is usually to split the line "
"into whitespace-delimited words using the :meth:`~str.split` method of "
@@ -1169,98 +1511,121 @@ msgid ""
"parameter which is useful if the line uses something other than whitespace "
"as a separator."
msgstr ""
-"Pour une simple analyse de chaine, l'approche la plus simple est "
+"Pour une simple analyse de chaîne, l'approche la plus simple est "
"généralement de découper la ligne en mots délimités par des espaces, en "
-"utilisant la méthode :meth:`~str.split` des objets chaine de caractères, et "
-"ensuite de convertir les chaines de décimales en valeurs numériques en "
-"utilisant la fonction :func:`int` ou :func:`float`, ``split()`` supporte un "
+"utilisant la méthode :meth:`~str.split` des objets chaîne de caractères, et "
+"ensuite de convertir les chaînes de décimaux en valeurs numériques en "
+"utilisant la fonction :func:`int` ou :func:`float`. ``split()`` possède un "
"paramètre optionnel \"sep\" qui est utile si la ligne utilise autre chose "
-"que des espaces comme séparateur."
+"que des espaces comme séparateurs."
-#: ../Doc/faq/programming.rst:971
+#: ../Doc/faq/programming.rst:1009
msgid ""
"For more complicated input parsing, regular expressions are more powerful "
"than C's :c:func:`sscanf` and better suited for the task."
msgstr ""
-"Pour les analyses plus compliquées, les expressions rationnelles sont plus "
+"Pour des analyses plus compliquées, les expressions rationnelles sont plus "
"puissantes que la fonction :c:func:`sscanf` de C et mieux adaptées à la "
"tâche."
-#: ../Doc/faq/programming.rst:976
+#: ../Doc/faq/programming.rst:1014
msgid "What does 'UnicodeDecodeError' or 'UnicodeEncodeError' error mean?"
msgstr ""
"Que signifient les erreurs ``UnicodeDecodeError`` ou ``UnicodeEncodeError`` ?"
-#: ../Doc/faq/programming.rst:978
+#: ../Doc/faq/programming.rst:1016
msgid "See the :ref:`unicode-howto`."
-msgstr "Regardez :ref:`unicode-howto`."
+msgstr "Voir :ref:`unicode-howto`."
-#: ../Doc/faq/programming.rst:982
+#: ../Doc/faq/programming.rst:1020
msgid "Performance"
-msgstr ""
+msgstr "Performances"
-#: ../Doc/faq/programming.rst:985
+#: ../Doc/faq/programming.rst:1023
msgid "My program is too slow. How do I speed it up?"
-msgstr ""
+msgstr "Mon programme est trop lent. Comment l'accélérer ?"
-#: ../Doc/faq/programming.rst:987
+#: ../Doc/faq/programming.rst:1025
msgid ""
"That's a tough one, in general. First, here are a list of things to "
"remember before diving further:"
msgstr ""
+"Question difficile en général. Il faut garder en tête les points suivants "
+"avant d'aller plus loin :"
-#: ../Doc/faq/programming.rst:990
+#: ../Doc/faq/programming.rst:1028
msgid ""
"Performance characteristics vary across Python implementations. This FAQ "
"focusses on :term:`CPython`."
msgstr ""
+"Les performances varient en fonction des implémentations de Python. Cette "
+"FAQ ne traite que de :term:`CPython`."
-#: ../Doc/faq/programming.rst:992
+#: ../Doc/faq/programming.rst:1030
msgid ""
"Behaviour can vary across operating systems, especially when talking about I/"
"O or multi-threading."
msgstr ""
+"Les comportements peuvent différer d'un système d'exploitation à l'autre, "
+"tout particulièrement quand il s'agit d'entrée/sortie ou de fils d'exécution "
+"multiples."
-#: ../Doc/faq/programming.rst:994
+#: ../Doc/faq/programming.rst:1032
msgid ""
"You should always find the hot spots in your program *before* attempting to "
"optimize any code (see the :mod:`profile` module)."
msgstr ""
+"Il faut toujours essayer de trouver où sont les points de contention d'un "
+"programme *avant* d'essayer d'optimiser du code (voir le module :mod:"
+"`profile`)."
-#: ../Doc/faq/programming.rst:996
+#: ../Doc/faq/programming.rst:1034
msgid ""
"Writing benchmark scripts will allow you to iterate quickly when searching "
"for improvements (see the :mod:`timeit` module)."
msgstr ""
+"Écrire des scripts d'évaluation de performances permet de progresser "
+"rapidement dans la recherche d'améliorations (voir le module :mod:`timeit`)."
-#: ../Doc/faq/programming.rst:998
+#: ../Doc/faq/programming.rst:1036
msgid ""
"It is highly recommended to have good code coverage (through unit testing or "
"any other technique) before potentially introducing regressions hidden in "
"sophisticated optimizations."
msgstr ""
+"Il est très fortement recommandé d'avoir une bonne couverture de code (avec "
+"des tests unitaires ou autre) avant d'ajouter des erreurs dans des "
+"optimisations sophistiquées."
-#: ../Doc/faq/programming.rst:1002
+#: ../Doc/faq/programming.rst:1040
msgid ""
"That being said, there are many tricks to speed up Python code. Here are "
"some general principles which go a long way towards reaching acceptable "
"performance levels:"
msgstr ""
+"Ceci étant dit, il y a beaucoup d'astuces pour accélérer du code Python. "
+"Voici quelques principes généraux qui peuvent aider à atteindre des niveaux "
+"de performance satisfaisants :"
-#: ../Doc/faq/programming.rst:1006
+#: ../Doc/faq/programming.rst:1044
msgid ""
"Making your algorithms faster (or changing to faster ones) can yield much "
"larger benefits than trying to sprinkle micro-optimization tricks all over "
"your code."
msgstr ""
+"Améliorer les algorithmes (ou en changer pour des plus performants) peut "
+"produire de bien meilleurs résultats que d'optimiser ça et là de petites "
+"portions du code."
-#: ../Doc/faq/programming.rst:1010
+#: ../Doc/faq/programming.rst:1048
msgid ""
"Use the right data structures. Study documentation for the :ref:`bltin-"
"types` and the :mod:`collections` module."
msgstr ""
+"Utiliser les structures de données adaptées. Se référer à la documentation "
+"des :ref:`bltin-types` et du module :mod:`collections`."
-#: ../Doc/faq/programming.rst:1013
+#: ../Doc/faq/programming.rst:1051
msgid ""
"When the standard library provides a primitive for doing something, it is "
"likely (although not guaranteed) to be faster than any alternative you may "
@@ -1270,8 +1635,16 @@ msgid ""
"do sorting (and see the :ref:`sortinghowto` for examples of moderately "
"advanced usage)."
msgstr ""
+"Quand la bibliothèque standard fournit une implémentation pour quelque "
+"chose, il y a de fortes chances (même si ce n'est pas systématique) que "
+"cette implémentation soit plus rapide que la votre. C'est d'autant plus vrai "
+"pour les routines écrites en C, comme les routines natives et certaines "
+"extensions de types. Par exemple, il faut utiliser la méthode native :meth:"
+"`list.sort` ou la fonction :func:`sorted` similaire pour classer (et se "
+"référer à la section :ref:`sortinghowto` pour des exemples d'utilisation "
+"courante)."
-#: ../Doc/faq/programming.rst:1021
+#: ../Doc/faq/programming.rst:1059
msgid ""
"Abstractions tend to create indirections and force the interpreter to work "
"more. If the levels of indirection outweigh the amount of useful work done, "
@@ -1279,8 +1652,13 @@ msgid ""
"especially under the form of tiny functions or methods (which are also often "
"detrimental to readability)."
msgstr ""
+"Les abstractions ont tendance à créer des indirections et obligent "
+"l'interpréteur à faire plus d'efforts. Si le niveau d'indirection dépasse la "
+"quantité de travail effectif, le programme sera ralenti. Il faut toujours "
+"éviter trop d'indirections, en particulier sous la forme de fonctions ou "
+"méthodes trop petites (qui nuisent aussi souvent à la clarté du code)."
-#: ../Doc/faq/programming.rst:1027
+#: ../Doc/faq/programming.rst:1065
msgid ""
"If you have reached the limit of what pure Python can allow, there are tools "
"to take you further away. For example, `Cython `_ can "
@@ -1291,72 +1669,99 @@ msgid ""
"skills, you can also :ref:`write a C extension module ` "
"yourself."
msgstr ""
+"Si vous atteignez les limites de ce que du Python « pur » permet de faire, "
+"il y a des outils qui permettent d'aller plus loin. Par exemple, `Cython "
+"`_ peut compiler une version légèrement modifiée de code "
+"Python en une extension C et est disponible sur de nombreuses plate-formes. "
+"Cython peut bénéficier de la compilation (et de l'annotation, optionnelle, "
+"des types) pour rendre votre code beaucoup plus rapide que s'il était "
+"interprété. Si vous avez confiance en vos capacités de programmation en C, "
+"vous pouvez aussi :ref:`écrire un module d'extension en C` "
+"vous-même."
-#: ../Doc/faq/programming.rst:1037
+#: ../Doc/faq/programming.rst:1075
msgid ""
"The wiki page devoted to `performance tips `_."
msgstr ""
+"La page wiki dédiée aux `astuces de performance `_."
-#: ../Doc/faq/programming.rst:1043
+#: ../Doc/faq/programming.rst:1081
msgid "What is the most efficient way to concatenate many strings together?"
msgstr ""
+"Quelle est la manière la plus efficace de concaténer un grand nombre de "
+"chaînes de caractères ?"
-#: ../Doc/faq/programming.rst:1045
+#: ../Doc/faq/programming.rst:1083
msgid ""
":class:`str` and :class:`bytes` objects are immutable, therefore "
"concatenating many strings together is inefficient as each concatenation "
"creates a new object. In the general case, the total runtime cost is "
"quadratic in the total string length."
msgstr ""
+"Les objets :class:`str` et :class:`bytes` sont immuables, par conséquent "
+"concaténer un grand nombre de chaînes de caractères entre elles n'est pas "
+"très efficace car chaque concaténation crée un nouvel objet. Dans le cas "
+"général, la complexité est quadratique par rapport à la taille totale de la "
+"chaîne."
-#: ../Doc/faq/programming.rst:1050
+#: ../Doc/faq/programming.rst:1088
msgid ""
"To accumulate many :class:`str` objects, the recommended idiom is to place "
"them into a list and call :meth:`str.join` at the end::"
msgstr ""
+"Pour mettre bout-à-bout un grand nombre d'objets :class:`str`, la technique "
+"recommandée consiste à toutes les mettre dans une liste et appeler la "
+"méthode :meth:`str.join` à la fin ::"
-#: ../Doc/faq/programming.rst:1058
+#: ../Doc/faq/programming.rst:1096
msgid "(another reasonably efficient idiom is to use :class:`io.StringIO`)"
msgstr ""
+"(une autre technique relativement efficace consiste à utiliser :class:`io."
+"StringIO`)"
-#: ../Doc/faq/programming.rst:1060
+#: ../Doc/faq/programming.rst:1098
msgid ""
"To accumulate many :class:`bytes` objects, the recommended idiom is to "
"extend a :class:`bytearray` object using in-place concatenation (the ``+=`` "
"operator)::"
msgstr ""
+"Pour concaténer un grand nombre d'objets :class:`bytes`, la technique "
+"recommandée consiste à étendre un objet :class:`bytearray` en utilisant la "
+"concaténation en-place (l'opérateur ``+=``) ::"
-#: ../Doc/faq/programming.rst:1069
+#: ../Doc/faq/programming.rst:1107
msgid "Sequences (Tuples/Lists)"
-msgstr "Sequences (Tuples/Lists)"
+msgstr "Séquences (n-uplets / listes)"
-#: ../Doc/faq/programming.rst:1072
+#: ../Doc/faq/programming.rst:1110
msgid "How do I convert between tuples and lists?"
-msgstr "Comment convertir les listes en tuples et inversement?"
+msgstr "Comment convertir les listes en n-uplets et inversement ?"
-#: ../Doc/faq/programming.rst:1074
+#: ../Doc/faq/programming.rst:1112
msgid ""
"The type constructor ``tuple(seq)`` converts any sequence (actually, any "
"iterable) into a tuple with the same items in the same order."
msgstr ""
-"Le constructeur de type ``tuple(seq)`` convertit toute séquence (en fait "
-"tout itérable) en un tuple avec les mêmes éléments dans le même ordre…."
+"Le constructeur de type ``tuple(seq)`` convertit toute séquence (plus "
+"précisément, tout itérable) en un n-uplet avec les mêmes éléments dans le "
+"même ordre."
-#: ../Doc/faq/programming.rst:1077
+#: ../Doc/faq/programming.rst:1115
msgid ""
"For example, ``tuple([1, 2, 3])`` yields ``(1, 2, 3)`` and ``tuple('abc')`` "
"yields ``('a', 'b', 'c')``. If the argument is a tuple, it does not make a "
"copy but returns the same object, so it is cheap to call :func:`tuple` when "
"you aren't sure that an object is already a tuple."
msgstr ""
-"Par exemple ``tuple([1, 2, 3])`` renvoi ``(1, 2, 3)`` et ``tuple('abc')`` "
-"renvoi ``('a', 'b', 'c')``. Si l'argument est un tuple, cela ne crée pas une "
-"copie, mais renvoi le même objet, ce qui fait de :func:`tuple` un fonction "
-"économique à appeler quand vous ne savez pas si votre objet est déjà un "
-"tuple."
+"Par exemple ``tuple([1, 2, 3])`` renvoie ``(1, 2, 3)`` et ``tuple('abc')`` "
+"renvoie ``('a', 'b', 'c')``. Si l'argument est un n-uplet, cela ne crée pas "
+"de copie, mais renvoie le même objet, ce qui fait de :func:`tuple` une "
+"fonction économique à appeler quand vous ne savez pas si votre objet est "
+"déjà un n-uplet."
-#: ../Doc/faq/programming.rst:1082
+#: ../Doc/faq/programming.rst:1120
msgid ""
"The type constructor ``list(seq)`` converts any sequence or iterable into a "
"list with the same items in the same order. For example, ``list((1, 2, "
@@ -1369,11 +1774,11 @@ msgstr ""
"``['a','b','c']``. Si l'argument est une liste, il renvoie une copie, de la "
"même façon que ``seq[:]``."
-#: ../Doc/faq/programming.rst:1089
+#: ../Doc/faq/programming.rst:1127
msgid "What's a negative index?"
-msgstr "Qu'est-ce qu'un indexe négatif?"
+msgstr "Qu'est-ce qu'un index négatif ?"
-#: ../Doc/faq/programming.rst:1091
+#: ../Doc/faq/programming.rst:1129
msgid ""
"Python sequences are indexed with positive numbers and negative numbers. "
"For positive numbers 0 is the first index 1 is the second index and so "
@@ -1382,104 +1787,104 @@ msgid ""
"``seq[len(seq)-n]``."
msgstr ""
"Les séquences Python sont indexées avec des nombres positifs aussi bien que "
-"négatifs. Pour les nombres positifs, 0 est le premier index, 1 est le "
-"second, et ainsi de suite. Pour les indexes négatifs, ``-1`` est le dernier "
-"index, ``-2`` est le pénultième (avant dernier), et ainsi de suite. On peut "
-"aussi dire que ``seq[-n]`` est équivalent à ``seq[len(seq)-n]``."
+"négatifs. Pour les nombres positifs, 0 est le premier indice, 1 est le "
+"deuxième, et ainsi de suite. Pour les indices négatifs, ``-1`` est le "
+"dernier index, ``-2`` est le pénultième (avant-dernier), et ainsi de suite. "
+"On peut aussi dire que ``seq[-n]`` est équivalent à ``seq[len(seq)-n]``."
-#: ../Doc/faq/programming.rst:1096
+#: ../Doc/faq/programming.rst:1134
msgid ""
"Using negative indices can be very convenient. For example ``S[:-1]`` is "
"all of the string except for its last character, which is useful for "
"removing the trailing newline from a string."
msgstr ""
-"Utiliser des indexes négatifs peut être très pratique. Par exemple "
-"``S[:-1]`` indique la chaine entière a l'exception du dernier caractère, ce "
-"qui est pratique pour retirer un caractère de fin de ligne en fin d'une "
-"chaine."
+"Utiliser des indices négatifs peut être très pratique. Par exemple "
+"``S[:-1]`` représente la chaîne tout entière à l'exception du dernier "
+"caractère, ce qui est pratique pour retirer un caractère de fin de ligne à "
+"la fin d'une chaîne."
-#: ../Doc/faq/programming.rst:1102
+#: ../Doc/faq/programming.rst:1140
msgid "How do I iterate over a sequence in reverse order?"
-msgstr "Comment itérer à rebours sur une séquence?"
+msgstr "Comment itérer à rebours sur une séquence ?"
-#: ../Doc/faq/programming.rst:1104
+#: ../Doc/faq/programming.rst:1142
msgid ""
"Use the :func:`reversed` built-in function, which is new in Python 2.4::"
msgstr ""
-"Utilisez la fonction embarquée :func:`reversed`, qui est apparue en Python "
+"Utilisez la fonction native :func:`reversed`, qui a été introduite en Python "
"2.4 ::"
-#: ../Doc/faq/programming.rst:1109
+#: ../Doc/faq/programming.rst:1147
msgid ""
"This won't touch your original sequence, but build a new copy with reversed "
"order to iterate over."
msgstr ""
-"Cela ne modifiera pas votre séquence initiale, mais construira à la place "
-"une copie en ordre inverse pour itérer dessus."
+"Cela ne modifie pas la séquence initiale, mais construit à la place une "
+"copie en ordre inverse pour itérer dessus."
-#: ../Doc/faq/programming.rst:1112
+#: ../Doc/faq/programming.rst:1150
msgid "With Python 2.3, you can use an extended slice syntax::"
msgstr "Avec Python 2.3 vous pouvez utiliser la syntaxe étendue de tranches ::"
-#: ../Doc/faq/programming.rst:1119
+#: ../Doc/faq/programming.rst:1157
msgid "How do you remove duplicates from a list?"
-msgstr "Comment retirer les doublons d'une liste?"
+msgstr "Comment retirer les doublons d'une liste ?"
-#: ../Doc/faq/programming.rst:1121
+#: ../Doc/faq/programming.rst:1159
msgid "See the Python Cookbook for a long discussion of many ways to do this:"
msgstr ""
-"Lisez le Python Cookbook pour trouver une longue discussion sur les "
-"nombreuses façons de faire cela:"
+"Lisez le « livre de recettes » Python pour trouver une longue discussion sur "
+"les nombreuses approches possibles :"
-#: ../Doc/faq/programming.rst:1123
+#: ../Doc/faq/programming.rst:1161
msgid "https://code.activestate.com/recipes/52560/"
-msgstr ""
+msgstr "https://code.activestate.com/recipes/52560/"
-#: ../Doc/faq/programming.rst:1125
+#: ../Doc/faq/programming.rst:1163
msgid ""
"If you don't mind reordering the list, sort it and then scan from the end of "
"the list, deleting duplicates as you go::"
msgstr ""
-"Si changer l'ordre de la liste ne vous dérange pas, commencez par trier "
-"celle ci, puis parcourez la d'un bout à l'autre, en supprimant les doublons "
+"Si changer l'ordre de la liste ne vous dérange pas, commencez par ordonner "
+"celle-ci, puis parcourez-la d'un bout à l'autre, en supprimant les doublons "
"trouvés en chemin ::"
-#: ../Doc/faq/programming.rst:1137
+#: ../Doc/faq/programming.rst:1175
msgid ""
"If all elements of the list may be used as set keys (i.e. they are all :term:"
"`hashable`) this is often faster ::"
msgstr ""
"Si tous les éléments de la liste peuvent être utilisés comme des clés de "
"dictionnaire (c'est à dire, qu'elles sont toutes :term:`hachables "
-"`) ceci est souvent plus rapide : ::"
+"