diff --git a/.gitignore b/.gitignore
index 34ccc22d79..6d4d663da4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,4 @@ venv/
.pospell/
.potodo/
locales/
+.venv/
diff --git a/.potodoignore b/.potodoignore
index f7275bbbd0..734b522417 100644
--- a/.potodoignore
+++ b/.potodoignore
@@ -1 +1,2 @@
venv/
+locales/
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 18d8138380..1cf595a078 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -1,5 +1,5 @@
-Guide de contribution à la documention via GitHub
-=================================================
+Guide de contribution à la documentation via GitHub
+===================================================
Instructions
------------
@@ -96,7 +96,9 @@ dans les tickets et les *pull requests*.
`discuss de l'AFPy `_ dans la section Traduction
en indiquant sur quoi vous travaillez et l'URL de votre dépôt.
-* Soit sur IRC en venant sur le canal `#python-docs-fr `_ pour nous le signaler.
+* Soit sur IRC en venant sur le canal
+ `irc://irc.libera.chat/#python-docs-fr `_
+ pour nous le signaler.
Vous êtes maintenant prêt. Chaque fois que vous commencerez un nouveau fichier,
suivez cette procédure :
@@ -233,6 +235,21 @@ Mettez dans le commentaire de la *pull request* le texte suivant :
« Closes #XXXX » où XXXX est le numéro du ticket GitHub créé pour réserver le fichier traduit.
Cela permet à Github de lier la *pull request* au ticket de réservation.
+Il peut arriver que vous ayez besoin de reprendre votre PR sur votre
+ordinateur après avoir fait des modifications en ligne sur GitHub,
+par exemple lorsque GitHub vous offre la possibilité de faire un commit
+automatique contenant les suggestions proposées pendant la revue.
+Cela fonctionne bien, mais le résultat n'est pas toujours accepté par
+``powrap``. Si cela arrive, vous pouvez récupérer le commit fait par
+GitHub puis relancer ``powrap`` :
+
+.. code-block:: bash
+
+ git pull
+ powrap
+ git add
+ git commit -m "Formatage après commit automatique"
+ git push
Sur une autre forge
+++++++++++++++++++
@@ -500,6 +517,7 @@ mutable muable
namespace espace de nommage
(sauf pour le XML où c'est espace de noms)
parameter paramètre
+parse, parser analyser, analyseur syntaxique
pickle (v.) sérialiser
prompt invite
raise lever
@@ -531,11 +549,11 @@ whitespace caractère d'espacement
Ressources de traduction
------------------------
-- les canaux IRC sur freenode :
+- les canaux IRC sur irc.libera.chat :
- - `#python-docs-fr `_ — communauté python autour de la documentation française,
- - `#python-fr `_ — communauté python francophone,
- - `#python-doc `_ — communauté python autour de la documentation anglophone ;
+ - `#python-docs-fr `_ — communauté python autour de la documentation française,
+ - `#python-fr `_ — communauté python francophone,
+ - `#python-doc `_ — communauté python autour de la documentation anglophone ;
- les listes de diffusion relatives à la documentation (courriel) :
- `de l'AFPy `_,
@@ -714,7 +732,7 @@ Potodo
| Permet de d'identifier les parties de la documention qu'il reste à traduire.
| Installez-le à l'aide de *pip* (``pip install potodo``) dans un environnement
``python3.6`` ou plus.
-| `Lien vers le dépôt `__
+| `Lien vers le dépôt `__
Pogrep
~~~~~~
@@ -723,7 +741,7 @@ Pogrep
sur comment traduire un terme ou chercher la traduction d'un terme dans
d'autres fichiers.
| Installez-le à l'aide de *pip* (``pip install pogrep``).
-| `Lien vers le dépôt `__
+| `Lien vers le dépôt `__
Padpo (beta)
~~~~~~~~~~~~
@@ -732,14 +750,14 @@ Padpo (beta)
du fichier .po.
| Installez-le à l'aide de *pip* (``pip install padpo``) dans un environnement
``python3.7`` ou plus.
-| `Lien vers le dépôt `__
+| `Lien vers le dépôt `__
Powrap
~~~~~~
| Formateur de fichier .po.
| Installez-le à l'aide de *pip* (``pip install powrap``).
-| `Lien vers le dépôt `__
+| `Lien vers le dépôt `__
Affichage des modifications par Git
@@ -772,4 +790,3 @@ ce qui suit après vous être assuré que ``~/.local/bin/`` se trouve dans votre
Pas d'inquiétude, cela ne change la façon dont Git affiche les changements que sur
les fichiers de la traduction, sans incidence sur les autres.
-
diff --git a/Makefile b/Makefile
index 8340dcdeff..f598de64c8 100644
--- a/Makefile
+++ b/Makefile
@@ -3,13 +3,12 @@
# Here is what you can do:
#
# - make # Automatically build an HTML local version
-# - make todo # To list remaining tasks
+# - make todo # To list remaining tasks and show current progression
# - make verifs # To check for correctness: wrapping, spelling
-# - make wrap # To check for wrapping
+# - make wrap # To rewrap modified files
# - make spell # To check for spelling
-# - make merge # To merge pot from upstream
+# - make clean # To remove build artifacts
# - make fuzzy # To find fuzzy strings
-# - make progress # To compute current progression
#
# Modes are: autobuild-stable, autobuild-dev, and autobuild-html,
# documented in gen/src/3.6/Doc/Makefile as we're only delegating the
@@ -21,14 +20,42 @@
# from which we generated our po files. We use it here so when we
# test build, we're building with the .rst files that generated our
# .po files.
-CPYTHON_CURRENT_COMMIT := 895591c1f0bdec5ad357fe6a5fd0875990061357
-
-CPYTHON_PATH := ../cpython/
-
+CPYTHON_CURRENT_COMMIT := cb0b009cfb4ae2a87a8737250c526b8f95d0551f
LANGUAGE := fr
BRANCH := 3.9
-EXCLUDED := whatsnew/ c-api/
+EXCLUDED := \
+ whatsnew/2.?.po \
+ whatsnew/3.[0-8].po \
+ c-api/ \
+ distutils/ \
+ install/ \
+ library/2to3.po \
+ library/distutils.po \
+ library/imp.po \
+ library/tkinter.tix.po \
+ library/test.po \
+ library/aifc.po \
+ library/asynchat.po \
+ library/asyncore.po \
+ library/audioop.po \
+ library/cgi.po \
+ library/cgitb.po \
+ library/chunk.po \
+ library/crypt.po \
+ library/imghdr.po \
+ library/msilib.po \
+ library/nntplib.po \
+ library/nis.po \
+ library/ossaudiodev.po \
+ library/pipes.po \
+ library/smtpd.po \
+ library/sndhdr.po \
+ library/spwd.po \
+ library/sunau.po \
+ library/telnetlib.po \
+ library/uu.po \
+ library/xdrlib.po
# Internal variables
@@ -38,6 +65,7 @@ PYTHON := $(shell which python3)
MODE := html
POSPELL_TMP_DIR := .pospell/
JOBS := auto
+SPHINXERRORHANDLING = -W
# Detect OS
@@ -58,69 +86,50 @@ endif
.PHONY: all
all: ensure_prerequisites
- git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT)
+ git -C venv/cpython checkout $(CPYTHON_CURRENT_COMMIT) || (git -C venv/cpython fetch && git -C venv/cpython checkout $(CPYTHON_CURRENT_COMMIT))
mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/
$(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/
- $(MAKE) -C $(CPYTHON_PATH)/Doc/ \
- SPHINXOPTS='-qW -j$(JOBS) \
- -D locale_dirs=$(abspath locales) \
+ $(MAKE) -C venv/cpython/Doc/ \
+ JOBS='$(JOBS)' \
+ SPHINXOPTS='-D locale_dirs=$(abspath locales) \
-D language=$(LANGUAGE) \
- -D gettext_compact=0 \
+ -D gettext_compact=0 \
-D latex_engine=xelatex \
-D latex_elements.inputenc= \
-D latex_elements.fontenc=' \
+ SPHINXERRORHANDLING=$(SPHINXERRORHANDLING) \
$(MODE)
- git -C $(CPYTHON_PATH) checkout -
- @echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them."
+ @echo "Build success, open file://$(abspath venv/cpython/)/Doc/build/html/index.html or run 'make htmlview' to see them."
+
+
+# We clone cpython/ inside venv/ because venv/ is the only directory
+# excluded by cpython' Sphinx configuration.
+venv/cpython/.git/HEAD:
+ git clone https://github.com/python/cpython venv/cpython
.PHONY: ensure_prerequisites
-ensure_prerequisites:
- @if [ -z $(CPYTHON_PATH) ]; then \
- echo "Your CPYTHON_PATH is empty, please provide one."; \
- exit 1; \
- fi
- @if ! [ -d $(CPYTHON_PATH) ]; then \
- echo "Building the translation requires a cpython clone."; \
- echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \
- echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \
- echo "So you may want to run:"; \
- echo ""; \
- echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \
- exit 1; \
- fi
- @if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \
- echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \
- echo "In order to avoid breaking things, please clean it first."; \
- exit 1; \
- fi
+ensure_prerequisites: venv/cpython/.git/HEAD
@if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \
- echo "You're missing dependencies, please enable a venv and install:"; \
+ git -C venv/cpython/ checkout $(BRANCH); \
+ echo "You're missing dependencies please install:"; \
echo ""; \
- echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \
+ echo " python -m pip install -r requirements.txt -r venv/cpython/Doc/requirements.txt"; \
exit 1; \
fi
-.PHONY: serve
-serve:
- $(MAKE) -C $(CPYTHON_PATH)/Doc/ serve
-
-
-.PHONY: progress
-progress:
- @$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
- $(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
- $(shell msgcat *.po */*.po | grep -c '^msgid')
-
+.PHONY: htmlview
+htmlview: MODE=htmlview
+htmlview: all
.PHONY: todo
todo: ensure_prerequisites
- potodo --exclude venv .venv $(EXCLUDED)
+ potodo --api-url 'https://git.afpy.org/api/v1/repos/AFPy/python-docs-fr/issues?state=open&type=issues' --exclude venv .venv $(EXCLUDED)
.PHONY: wrap
wrap: ensure_prerequisites
- @echo "Verify wrapping"
- powrap --check --quiet *.po **/*.po
+ @echo "Re wrapping modified files"
+ powrap -m
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
@@ -129,45 +138,51 @@ DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
.PHONY: spell
spell: ensure_prerequisites $(DESTS)
+.PHONY: line-length
+line-length:
+ @echo "Searching for long lines..."
+ @awk '{if (length(gensub(/శ్రీనివాస్/, ".", "g", $$0)) > 80 && length(gensub(/[^ ]/, "", "g")) > 1) {print FILENAME ":" FNR, "line too long:", $$0; ERRORS+=1}} END {if (ERRORS>0) {exit 1}}' *.po */*.po
+
+.PHONY: sphinx-lint
+sphinx-lint:
+ @echo "Checking all files using sphinx-lint..."
+ @sphinx-lint --enable all --disable line-too-long *.po */*.po
+
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
@echo "Pospell checking $<..."
- mkdir -p $(@D)
+ @mkdir -p $(@D)
pospell -p dict -l fr_FR $< && touch $@
.PHONY: fuzzy
fuzzy: ensure_prerequisites
- potodo -f --exclude venv .venv $(EXCLUDED)
+ potodo --only-fuzzy --api-url 'https://git.afpy.org/api/v1/repos/AFPy/python-docs-fr/issues?state=open&type=issues' --exclude venv .venv $(EXCLUDED)
+
+.PHONY: check-headers
+check-headers:
+ @grep -L '^# Copyright (C) [0-9-]*, Python Software Foundation' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the po comment in $$file"; \
+ done
+ @grep -L '^"Project-Id-Version: Python 3\\n"$$' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Project-Id-Version' header in $$file"; \
+ done
+ @grep -L '^"Language: fr\\n"$$' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Language' header in $$file"; \
+ done
+ @grep -L '^"Language-Team: FRENCH \\n"' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Language-Team' header in $$file"; \
+ done
.PHONY: verifs
-verifs: wrap spell
-
-.PHONY: merge
-merge: ensure_prerequisites
- @echo "Merge from $(UPSTREAM)"
- git -C $(CPYTHON_PATH) checkout $(BRANCH)
- git -C $(CPYTHON_PATH) pull --ff-only
- (cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
- find $(CPYTHON_PATH)/pot/ -name '*.pot' |\
- while read -r POT; \
- do \
- PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \
- mkdir -p "$$(dirname "$$PO")"; \
- if [ -f "$$PO" ]; \
- then \
- msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \
- else \
- msgcat -o "$$PO" "$$POT"; \
- fi \
- done
- rm -fr $(CPYTHON_PATH)/pot/
- @echo "Replacing CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
- sed -i 's/^CPYTHON_CURRENT_COMMIT :=.*/CPYTHON_CURRENT_COMMIT := $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)/' Makefile
- sed -i 's|^#: .*Doc/|#: |' *.po */*.po
- powrap -m
- @printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done'
+verifs: spell line-length sphinx-lint check-headers
.PHONY: clean
clean:
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
- rm -fr $(POSPELL_TMP_DIR)
+ rm -fr $(POSPELL_TMP_DIR) locales/$(LANGUAGE)/LC_MESSAGES/
find -name '*.mo' -delete
+ @echo "Cleaning build directory"
+ $(MAKE) -C venv/cpython/Doc/ clean
diff --git a/README.rst b/README.rst
index 4de7036d0e..fe4ba11903 100644
--- a/README.rst
+++ b/README.rst
@@ -10,11 +10,11 @@ Traduction française de la documentation Python
.. |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%
-Ce projet se fait en collaboration avec l'`AFPy
-`_ (Association Francophone Python) qui fait la
+Ce projet est réalisé en collaboration avec l'`AFPy
+`_ (Association Francophone Python), dont le but est la
promotion du langage de développement Python dans l'ensemble des
nations francophones à travers des événements accessibles à tous comme
-l'édition francophone de la PyCon nommée la `PyConFR
+l'édition francophone de la PyCon, la `PyConFR
`_, de nombreux meetups dans plusieurs villes et le
maintien de nombreux projets communautaires pour enrichir
l'écosystème.
@@ -25,21 +25,23 @@ Contribuer à la traduction
Vous pouvez contribuer :
- en proposant des *pull requests* Github (solution recommandée) ;
-- en nous remontant des erreurs et propositions d'amélioration sur
- `discuss.afpy.org `_ ou la `ml
- `_;
-- en devenant `membre `_ de l'AFPy et
- en devenant `sponsor `_ du
- repo.
+- en remontant des erreurs et propositions d'amélioration sur
+ le `forum de l'AFPy `_ ou sur la
+ `liste de diffusion `_ ;
+- en devenant `membre `_ de l'AFPy ou
+ `mécène `_ du projet.
Consultez le
`guide `_
pour apprendre les conventions à respecter.
-Le coordinateur de cette traduction est `Julien Palard (mdk) `_.
-Vous pouvez obtenir de l'aide sur le canal ``#python-fr`` sur `freenode
-`_ (ne nécessite pas d'inscription) ou poser vos questions sur la
-`liste de diffusion `_ des traductions de l'AFPy.
+Le `coordinateur ` de
+cette traduction est `Julien Palard (mdk) `_.
+Vous pouvez obtenir de l'aide sur le canal
+`irc://irc.libera.chat/#python-fr `_
+(ne nécessite pas d'inscription) ou poser vos questions sur la
+`liste de diffusion `_
+des traductions de l'AFPy.
Accord de contribution à la documentation
diff --git a/TRANSLATORS b/TRANSLATORS
index cf632af70e..6df8140bf5 100644
--- a/TRANSLATORS
+++ b/TRANSLATORS
@@ -18,3 +18,6 @@ Sascha Salles
Valériane Venance
Loc Cosnier
Yannick Gingras
+Martin Chlumsky
+Stephan Michaud
+Edith Viau
diff --git a/about.po b/about.po
index abd282341b..a6be5aed00 100644
--- a/about.po
+++ b/about.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-07-23 17:55+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -61,17 +61,17 @@ msgstr ""
#: about.rst:26
msgid ""
-"Fredrik Lundh for his `Alternative Python Reference `_ project from which Sphinx got many good ideas."
+"Fredrik Lundh for his Alternative Python Reference project from which Sphinx "
+"got many good ideas."
msgstr ""
-"Fredrik Lundh pour son projet `Alternative Python Reference `_, dont Sphinx a pris beaucoup de bonnes idées."
+"Fredrik Lundh pour son projet *Alternative Python Reference*, dont Sphinx a "
+"pris beaucoup de bonnes idées."
-#: about.rst:32
+#: about.rst:31
msgid "Contributors to the Python Documentation"
msgstr "Contributeurs de la documentation Python"
-#: about.rst:34
+#: about.rst:33
msgid ""
"Many people have contributed to the Python language, the Python standard "
"library, and the Python documentation. See :source:`Misc/ACKS` in the "
@@ -82,7 +82,7 @@ msgstr ""
"sources de la distribution Python pour avoir une liste partielle des "
"contributeurs."
-#: about.rst:38
+#: about.rst:37
msgid ""
"It is only with the input and contributions of the Python community that "
"Python has such wonderful documentation -- Thank You!"
diff --git a/bugs.po b/bugs.po
index bd3a82323c..b1c4362c28 100644
--- a/bugs.po
+++ b/bugs.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
-"PO-Revision-Date: 2019-12-10 16:04+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-05-26 23:13+0200\n"
"Last-Translator: Antoine Wecxsteen\n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -55,8 +55,9 @@ msgstr ""
"décrivant en anglais le bogue et où vous l'avez trouvé. Si le problème ne "
"touche que la traduction en français, ouvrez un ticket sur https://github."
"com/python/python-docs-fr/issues, ou venez nous en toucher un mot sur le "
-"canal #python-fr sur *freenode* (https://webchat.freenode.net/). Si vous "
-"avez une suggestion de correction, merci de l'inclure également."
+"canal #python-fr sur *libera.chat* (https://kiwiirc.com/nextclient/#irc://"
+"irc.libera.chat/#python-fr). Si vous avez une suggestion de correction, "
+"merci de l'inclure également."
#: bugs.rst:22
msgid ""
@@ -94,7 +95,7 @@ msgstr ""
"Vue d'ensemble du processus pour proposer une amélioration avec l'outil de "
"suivi."
-#: bugs.rst:35
+#: bugs.rst:36
msgid ""
"`Helping with Documentation `_"
@@ -108,77 +109,91 @@ msgid ""
"Python documentation."
msgstr "Guide complet pour qui souhaite contribuer à la documentation Python."
-#: bugs.rst:41
+#: bugs.rst:38
+msgid ""
+"`Documentation Translations `_"
+msgstr ""
+"`Aider avec la documentation `_"
+
+#: bugs.rst:39
+msgid ""
+"A list of GitHub pages for documentation translation and their primary "
+"contacts."
+msgstr ""
+"Liste de dépôts GitHub où la documentation est traduite, avec les personnes "
+"à contacter."
+
+#: bugs.rst:45
msgid "Using the Python issue tracker"
msgstr "Utilisation du gestionnaire de tickets Python"
-#: bugs.rst:43
+#: bugs.rst:47
msgid ""
-"Bug reports for Python itself should be submitted via the Python Bug Tracker "
-"(https://bugs.python.org/). The bug tracker offers a Web form which allows "
-"pertinent information to be entered and submitted to the developers."
+"Issue reports for Python itself should be submitted via the GitHub issues "
+"tracker (https://github.com/python/cpython/issues). The GitHub issues "
+"tracker offers a web form which allows pertinent information to be entered "
+"and submitted to the developers."
msgstr ""
-"Les rapports de bogues pour Python lui-même devraient être soumis via le "
-"l'outil de suivi des bogues (*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."
+"Les rapports concernant un problème relatif à Python lui-même doivent être "
+"soumis *via* l'outil de suivi des problèmes de GitHub (https://github.com/"
+"python/cpython/issues). Le gestionnaire de tickets propose un formulaire Web "
+"permettant de saisir des informations pertinentes à soumettre aux "
+"développeurs."
-#: bugs.rst:47
+#: bugs.rst:52
msgid ""
"The first step in filing a report is to determine whether the problem has "
"already been reported. The advantage in doing so, aside from saving the "
-"developers time, is that you learn what has been done to fix it; it may be "
+"developers' time, is that you learn what has been done to fix it; it may be "
"that the problem has already been fixed for the next release, or additional "
"information is needed (in which case you are welcome to provide it if you "
-"can!). To do this, search the bug database using the search box on the top "
-"of the page."
+"can!). To do this, search the tracker using the search box at the top of the "
+"page."
msgstr ""
"La première étape pour remplir un rapport est de déterminer si le problème a "
"déjà été rapporté. L'avantage de cette approche, en plus d'économiser du "
-"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; "
+"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; "
"il se peut que le problème soit déjà résolu dans la prochaine version, ou "
"que des informations complémentaires soient attendues (auquel cas votre "
-"contribution est la bienvenue !). Pour ce faire, cherchez dans la base de "
-"données de bogues grâce à la boîte de recherche en haut de la page."
+"contribution est la bienvenue !). Pour ce faire, cherchez dans le "
+"gestionnaire de tickets grâce à la boîte de recherche en haut de la page."
-#: bugs.rst:54
+#: bugs.rst:59
msgid ""
-"If the problem you're reporting is not already in the bug tracker, go back "
-"to the Python Bug Tracker and log in. If you don't already have a tracker "
-"account, select the \"Register\" link or, if you use OpenID, one of the "
-"OpenID provider logos in the sidebar. It is not possible to submit a bug "
-"report anonymously."
+"If the problem you're reporting is not already in the list, log in to "
+"GitHub. If you don't already have a GitHub account, create a new account "
+"using the \"Sign up\" link. It is not possible to submit a bug report "
+"anonymously."
msgstr ""
-"Si le problème que vous soumettez n'est pas déjà dans l'outil de suivi des "
-"bogues, 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 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 "
-"bogue de manière anonyme."
+"Si le problème que vous soumettez n'est pas déjà dans la liste, connectez-"
+"vous à GitHub. Si vous n'avez pas déjà un compte GitHub, créez un nouveau "
+"compte en cliquant sur le lien « Sign Up ». Il n'est pas possible de "
+"soumettre un rapport de bogue de manière anonyme."
-#: bugs.rst:59
+#: bugs.rst:64
msgid ""
-"Being now logged in, you can submit a bug. Select the \"Create New\" link "
-"in the sidebar to open the bug reporting form."
+"Being now logged in, you can submit an issue. Click on the \"New issue\" "
+"button in the top bar to report a new issue."
msgstr ""
-"Une fois identifié, pour pouvez rapporter un bogue. Sélectionnez le lien "
-"*Create New* dans la barre latérale pour ouvrir un nouveau formulaire de "
-"rapport de bogue."
+"Une fois connecté, vous pouvez rapporter un problème. Sélectionnez le bouton "
+"*New issue* dans la barre en haut pour ouvrir un nouveau formulaire de "
+"rapport."
+
+#: bugs.rst:67
+msgid "The submission form has two fields, \"Title\" and \"Comment\"."
+msgstr "Le formulaire de rapport contient deux champs, *Title* et *Comment*."
-#: bugs.rst:62
+#: bugs.rst:69
msgid ""
-"The submission form has a number of fields. For the \"Title\" field, enter "
-"a *very* short description of the problem; less than ten words is good. In "
-"the \"Type\" field, select the type of your problem; also select the "
-"\"Component\" and \"Versions\" to which the bug relates."
+"For the \"Title\" field, enter a *very* short description of the problem; "
+"less than ten words is good."
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 "
-"le bogue."
+"Dans le champ *Title*, entrez une *très* brève description du problème "
+"rencontré ; tâchez de vous limiter à dix mots."
-#: bugs.rst:67
+#: bugs.rst:72
msgid ""
"In the \"Comment\" field, describe the problem in detail, including what you "
"expected to happen and what did happen. Be sure to include whether any "
@@ -191,17 +206,17 @@ msgstr ""
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
"informations de versions)."
-#: bugs.rst:72
+#: bugs.rst:77
msgid ""
-"Each bug report will be assigned to a developer who will determine what "
-"needs to be done to correct the problem. You will receive an update each "
-"time action is taken on the bug."
+"Each issue report will be reviewed by a developer who will determine what "
+"needs to be done to correct the problem. You will receive an update each "
+"time an action is taken on the issue."
msgstr ""
-"Chaque bogue sera attribué à un développeur qui déterminera ce qui est "
+"Chaque rapport sera attribué à un développeur qui déterminera ce qui est "
"nécessaire d'entreprendre pour corriger le problème. Vous recevrez une "
-"notification à chaque action effectuée sur le bogue."
+"notification à chaque action concernant le rapport."
-#: bugs.rst:81
+#: bugs.rst:86
msgid ""
"`How to Report Bugs Effectively `_"
@@ -209,7 +224,7 @@ msgstr ""
"`Comment signaler des bogues de manière efficace `_ (en anglais)"
-#: bugs.rst:80
+#: bugs.rst:85
msgid ""
"Article which goes into some detail about how to create a useful bug report. "
"This describes what kind of information is useful and why it is useful."
@@ -218,15 +233,15 @@ msgstr ""
"bogue utile. Il décrit quel genre d'information est utile et pourquoi elle "
"est utile."
-#: bugs.rst:84
+#: bugs.rst:89
msgid ""
-"`Bug Report Writing Guidelines `_"
+"`Bug Writing Guidelines `_"
msgstr ""
-"`Guide pour la rédaction de rapports de bogues `_"
+"`Guide pour la rédaction de rapports de bogues `_"
-#: bugs.rst:84
+#: bugs.rst:89
msgid ""
"Information about writing a good bug report. Some of this is specific to "
"the Mozilla project, but describes general good practices."
@@ -234,11 +249,11 @@ msgstr ""
"Conseils pour écrire un bon rapport de bogue. Certains sont spécifiques au "
"projet Mozilla mais présentent des bonnes pratiques générales."
-#: bugs.rst:90
+#: bugs.rst:95
msgid "Getting started contributing to Python yourself"
msgstr "Commencer à contribuer à Python vous-même"
-#: bugs.rst:92
+#: bugs.rst:97
msgid ""
"Beyond just reporting bugs that you find, you are also welcome to submit "
"patches to fix them. You can find more information on how to get started "
@@ -252,3 +267,15 @@ msgstr ""
"Developer's Guide`_. Si vous avez des questions, le `core-mentorship mailing "
"list`_ est un endroit amical pour obtenir des réponses à toutes les "
"questions à propos du processus de corrections de bugs dans Python."
+
+#~ msgid ""
+#~ "The submission form has a number of fields. For the \"Title\" field, "
+#~ "enter a *very* short description of the problem; less than ten words is "
+#~ "good. In the \"Type\" field, select the type of your problem; also "
+#~ "select the \"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 le bogue."
diff --git a/c-api/arg.po b/c-api/arg.po
index 82c7982aa5..deca4e6122 100644
--- a/c-api/arg.po
+++ b/c-api/arg.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-12-10 16:23+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -533,8 +533,8 @@ msgstr "Il existe deux modes de fonctionnement :"
#: c-api/arg.rst:233
msgid ""
"If *\\*buffer* points a ``NULL`` pointer, the function will allocate a "
-"buffer of the needed size, copy the encoded data into this buffer and set *"
-"\\*buffer* to reference the newly allocated storage. The caller is "
+"buffer of the needed size, copy the encoded data into this buffer and set "
+"*\\*buffer* to reference the newly allocated storage. The caller is "
"responsible for calling :c:func:`PyMem_Free` to free the allocated buffer "
"after usage."
msgstr ""
@@ -683,7 +683,8 @@ msgstr ""
"le débordement."
#: c-api/arg.rst:618
-msgid "``n`` (:class:`int`) [Py_ssize_t]"
+#, fuzzy
+msgid "``n`` (:class:`int`) [:c:type:`Py_ssize_t`]"
msgstr "``n`` (:class:`int`) [``Py_ssize_t``]"
#: c-api/arg.rst:292
diff --git a/c-api/bool.po b/c-api/bool.po
index f5f5c1b8a4..58dae39fbc 100644
--- a/c-api/bool.po
+++ b/c-api/bool.po
@@ -32,11 +32,12 @@ msgstr ""
"disponibles."
#: c-api/bool.rst:16
-#, fuzzy
msgid ""
"Return true if *o* is of type :c:data:`PyBool_Type`. This function always "
"succeeds."
-msgstr "Renvoie vrai si *o* est de type :c:data:`PyBook_Type`."
+msgstr ""
+"Renvoie vrai si *o* est de type :c:data:`PyBook_Type`. Cette fonction "
+"réussit systématiquement."
#: c-api/bool.rst:22
msgid ""
diff --git a/c-api/buffer.po b/c-api/buffer.po
index d0d9ee4659..ad16daf629 100644
--- a/c-api/buffer.po
+++ b/c-api/buffer.po
@@ -455,7 +455,7 @@ msgstr "oui"
#: c-api/buffer.rst:323 c-api/buffer.rst:325
msgid "if needed"
-msgstr ""
+msgstr "si nécessaire"
#: c-api/buffer.rst:278 c-api/buffer.rst:298 c-api/buffer.rst:302
#: c-api/buffer.rst:327 c-api/buffer.rst:331 c-api/buffer.rst:335
@@ -513,7 +513,7 @@ msgstr ""
#: c-api/buffer.rst:321
msgid "readonly"
-msgstr ""
+msgstr "lecture seule"
#: c-api/buffer.rst:321
msgid "format"
@@ -529,7 +529,7 @@ msgstr "0"
#: c-api/buffer.rst:329 c-api/buffer.rst:337
msgid "1 or 0"
-msgstr ""
+msgstr "0 ou 1"
#: c-api/buffer.rst:342
msgid "Complex arrays"
@@ -642,6 +642,8 @@ msgid ""
"Return the implied :c:data:`~Py_buffer.itemsize` from :c:data:`~Py_buffer."
"format`. On error, raise an exception and return -1."
msgstr ""
+"Retourne l'\\ :c:data:`~Py_buffer.itemsize` du :c:data:`~Py_buffer.format`. "
+"En cas d'erreur, lève une exception et retourne -1."
#: c-api/buffer.rst:475
msgid ""
diff --git a/c-api/bytearray.po b/c-api/bytearray.po
index 1e74d73072..bdab1641cf 100644
--- a/c-api/bytearray.po
+++ b/c-api/bytearray.po
@@ -6,13 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-27 19:26+0100\n"
-"PO-Revision-Date: 2018-10-04 12:21+0200\n"
-"Last-Translator: Julien Palard \n"
+"PO-Revision-Date: 2021-05-05 14:32+0200\n"
+"Last-Translator: Mindiell \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"
#: c-api/bytearray.rst:6
msgid "Byte Array Objects"
@@ -37,22 +38,20 @@ msgid "Type check macros"
msgstr "Macros de vérification de type"
#: c-api/bytearray.rst:27
-#, fuzzy
msgid ""
"Return true if the object *o* is a bytearray object or an instance of a "
"subtype of the bytearray type. This function always succeeds."
msgstr ""
"Renvoie vrai si l'objet *o* est un ``bytearray`` ou une instance d'un sous-"
-"type du type ``bytearray``."
+"type du type ``bytearray``. Cette méthode réussit toujours."
#: c-api/bytearray.rst:33
-#, fuzzy
msgid ""
"Return true if the object *o* is a bytearray object, but not an instance of "
"a subtype of the bytearray type. This function always succeeds."
msgstr ""
"Renvoie vrai si l'objet *o* est un ``bytearray``, mais pas une instance d'un "
-"sous-type du type ``bytearray``."
+"sous-type du type ``bytearray``. Cette méthode réussit toujours."
#: c-api/bytearray.rst:38
msgid "Direct API functions"
@@ -67,13 +66,12 @@ msgstr ""
"implémente le :ref:`protocole buffer `."
#: c-api/bytearray.rst:50
-#, fuzzy
msgid ""
"Create a new bytearray object from *string* and its length, *len*. On "
"failure, ``NULL`` is returned."
msgstr ""
"Crée un nouvel objet ``bytearray`` à partir d'un objet *string* et de sa "
-"longueur, *len*. En cas d'échec, *NULL* est renvoyé."
+"longueur, *len*. En cas d'échec, ``NULL`` est renvoyé."
#: c-api/bytearray.rst:56
msgid ""
@@ -83,21 +81,19 @@ msgstr ""
"avec le résultat."
#: c-api/bytearray.rst:61
-#, fuzzy
msgid "Return the size of *bytearray* after checking for a ``NULL`` pointer."
msgstr ""
"Renvoie la taille de *bytearray* après vérification de la présence d'un "
-"pointeur *NULL*."
+"pointeur ``NULL``."
#: c-api/bytearray.rst:66
-#, fuzzy
msgid ""
"Return the contents of *bytearray* as a char array after checking for a "
"``NULL`` pointer. The returned array always has an extra null byte appended."
msgstr ""
"Renvoie le contenu de *bytearray* sous forme d'un tableau de caractères, en "
-"vérifiant que ce n'est pas un pointeur *NULL*. Le tableau renvoyé se termine "
-"toujours par un octet *null*."
+"vérifiant que ce n'est pas un pointeur ``NULL``. Le tableau renvoyé a "
+"toujours un caractère *null* rajouté."
#: c-api/bytearray.rst:73
msgid "Resize the internal buffer of *bytearray* to *len*."
diff --git a/c-api/bytes.po b/c-api/bytes.po
index a616a8e83f..d1898ad54d 100644
--- a/c-api/bytes.po
+++ b/c-api/bytes.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-07-03 11:50+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -21,7 +21,7 @@ msgstr "Objets *bytes*"
#: c-api/bytes.rst:8
msgid ""
"These functions raise :exc:`TypeError` when expecting a bytes parameter and "
-"are called with a non-bytes parameter."
+"called with a non-bytes parameter."
msgstr ""
#: c-api/bytes.rst:16
@@ -96,7 +96,7 @@ msgstr "Commentaires"
#: c-api/bytes.rst:70
msgid ":attr:`%%`"
-msgstr ""
+msgstr ":attr:`%%`"
#: c-api/bytes.rst:70
msgid "*n/a*"
@@ -108,7 +108,7 @@ msgstr ""
#: c-api/bytes.rst:72
msgid ":attr:`%c`"
-msgstr ""
+msgstr ":attr:`%c`"
#: c-api/bytes.rst:75 c-api/bytes.rst:96
msgid "int"
@@ -120,7 +120,7 @@ msgstr ""
#: c-api/bytes.rst:75
msgid ":attr:`%d`"
-msgstr ""
+msgstr ":attr:`%d`"
#: c-api/bytes.rst:75
msgid "Equivalent to ``printf(\"%d\")``. [1]_"
@@ -128,7 +128,7 @@ msgstr ""
#: c-api/bytes.rst:78
msgid ":attr:`%u`"
-msgstr ""
+msgstr ":attr:`%u`"
#: c-api/bytes.rst:78
msgid "unsigned int"
@@ -140,7 +140,7 @@ msgstr ""
#: c-api/bytes.rst:81
msgid ":attr:`%ld`"
-msgstr ""
+msgstr ":attr:`%ld`"
#: c-api/bytes.rst:81
msgid "long"
@@ -152,7 +152,7 @@ msgstr ""
#: c-api/bytes.rst:84
msgid ":attr:`%lu`"
-msgstr ""
+msgstr ":attr:`%lu`"
#: c-api/bytes.rst:84
msgid "unsigned long"
@@ -164,10 +164,10 @@ msgstr ""
#: c-api/bytes.rst:87
msgid ":attr:`%zd`"
-msgstr ""
+msgstr ":attr:`%zd`"
#: c-api/bytes.rst:87
-msgid "Py_ssize_t"
+msgid ":c:type:`\\ Py_ssize_t`"
msgstr ""
#: c-api/bytes.rst:87
@@ -176,7 +176,7 @@ msgstr ""
#: c-api/bytes.rst:90
msgid ":attr:`%zu`"
-msgstr ""
+msgstr ":attr:`%zu`"
#: c-api/bytes.rst:90
msgid "size_t"
@@ -188,7 +188,7 @@ msgstr ""
#: c-api/bytes.rst:93
msgid ":attr:`%i`"
-msgstr ""
+msgstr ":attr:`%i`"
#: c-api/bytes.rst:93
msgid "Equivalent to ``printf(\"%i\")``. [1]_"
@@ -196,7 +196,7 @@ msgstr ""
#: c-api/bytes.rst:96
msgid ":attr:`%x`"
-msgstr ""
+msgstr ":attr:`%x`"
#: c-api/bytes.rst:96
msgid "Equivalent to ``printf(\"%x\")``. [1]_"
@@ -204,7 +204,7 @@ msgstr ""
#: c-api/bytes.rst:99
msgid ":attr:`%s`"
-msgstr ""
+msgstr ":attr:`%s`"
#: c-api/bytes.rst:99
msgid "const char\\*"
@@ -216,7 +216,7 @@ msgstr ""
#: c-api/bytes.rst:102
msgid ":attr:`%p`"
-msgstr ""
+msgstr ":attr:`%p`"
#: c-api/bytes.rst:102
msgid "const void\\*"
@@ -224,9 +224,9 @@ msgstr ""
#: c-api/bytes.rst:102
msgid ""
-"The hex representation of a C pointer. Mostly equivalent to ``printf(\"%p"
-"\")`` except that it is guaranteed to start with the literal ``0x`` "
-"regardless of what the platform's ``printf`` yields."
+"The hex representation of a C pointer. Mostly equivalent to "
+"``printf(\"%p\")`` except that it is guaranteed to start with the literal "
+"``0x`` regardless of what the platform's ``printf`` yields."
msgstr ""
#: c-api/bytes.rst:111
@@ -330,7 +330,7 @@ msgid ""
"address of an existing bytes object as an lvalue (it may be written into), "
"and the new size desired. On success, *\\*bytes* holds the resized bytes "
"object and ``0`` is returned; the address in *\\*bytes* may differ from its "
-"input value. If the reallocation fails, the original bytes object at *"
-"\\*bytes* is deallocated, *\\*bytes* is set to ``NULL``, :exc:`MemoryError` "
+"input value. If the reallocation fails, the original bytes object at "
+"*\\*bytes* is deallocated, *\\*bytes* is set to ``NULL``, :exc:`MemoryError` "
"is set, and ``-1`` is returned."
msgstr ""
diff --git a/c-api/call.po b/c-api/call.po
index 64002794d4..7115788544 100644
--- a/c-api/call.po
+++ b/c-api/call.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-07-20 15:07+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -49,8 +49,8 @@ msgstr ""
#: c-api/call.rst:29
msgid ""
-"To call an object, use :c:func:`PyObject_Call` or other :ref:`call API `."
+"To call an object, use :c:func:`PyObject_Call` or another :ref:`call API "
+"`."
msgstr ""
#: c-api/call.rst:36
@@ -250,7 +250,7 @@ msgstr ""
msgid ""
"Various functions are available for calling a Python object. Each converts "
"its arguments to a convention supported by the called object – either "
-"*tp_call* or vectorcall. In order to do as litle conversion as possible, "
+"*tp_call* or vectorcall. In order to do as little conversion as possible, "
"pick one that best fits the format of data you have available."
msgstr ""
@@ -266,7 +266,7 @@ msgstr "Fonction"
#: c-api/call.rst:195
msgid "callable"
-msgstr ""
+msgstr "appelable (*callable*)"
#: c-api/call.rst:195
msgid "args"
diff --git a/c-api/complex.po b/c-api/complex.po
index b1e78be08e..b04f207b45 100644
--- a/c-api/complex.po
+++ b/c-api/complex.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2019-01-14 20:31+0100\n"
"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
@@ -74,8 +74,9 @@ msgstr ""
"`Py_complex` en C."
#: c-api/complex.rst:51
+#, fuzzy
msgid ""
-"Return the negation of the complex number *complex*, using the C :c:type:"
+"Return the negation of the complex number *num*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
"Renvoie l'opposé du nombre complexe *complex*, sous la forme d'un :c:type:"
diff --git a/c-api/contextvars.po b/c-api/contextvars.po
index 615bbab5c1..36ac798c66 100644
--- a/c-api/contextvars.po
+++ b/c-api/contextvars.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2021-05-19 22:36+0200\n"
"PO-Revision-Date: 2018-08-03 23:47+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -124,8 +124,8 @@ msgstr ""
#: c-api/contextvars.rst:109
msgid ""
"Create a new ``ContextVar`` object. The *name* parameter is used for "
-"introspection and debug purposes. The *def* parameter may optionally "
-"specify the default value for the context variable. If an error has "
+"introspection and debug purposes. The *def* parameter specifies a default "
+"value for the context variable, or ``NULL`` for no default. If an error has "
"occurred, this function returns ``NULL``."
msgstr ""
@@ -155,16 +155,16 @@ msgid "``NULL``"
msgstr "``NULL``"
#: c-api/contextvars.rst:127
-msgid "If the value was found, the function will create a new reference to it."
+msgid "Except for ``NULL``, the function returns a new reference."
msgstr ""
#: c-api/contextvars.rst:131
msgid ""
-"Set the value of *var* to *value* in the current context. Returns a pointer "
-"to a :c:type:`PyObject` object, or ``NULL`` if an error has occurred."
+"Set the value of *var* to *value* in the current context. Returns a new "
+"token object for this change, or ``NULL`` if an error has occurred."
msgstr ""
-#: c-api/contextvars.rst:137
+#: c-api/contextvars.rst:136
msgid ""
"Reset the state of the *var* context variable to that it was in before :c:"
"func:`PyContextVar_Set` that returned the *token* was called. This function "
diff --git a/c-api/conversion.po b/c-api/conversion.po
index 5dc8405831..5a62d39893 100644
--- a/c-api/conversion.po
+++ b/c-api/conversion.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2021-02-24 17:33+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -28,14 +28,14 @@ msgstr ""
msgid ""
"Output not more than *size* bytes to *str* according to the format string "
"*format* and the extra arguments. See the Unix man page :manpage:"
-"`snprintf(2)`."
+"`snprintf(3)`."
msgstr ""
#: c-api/conversion.rst:19
msgid ""
"Output not more than *size* bytes to *str* according to the format string "
"*format* and the variable argument list *va*. Unix man page :manpage:"
-"`vsnprintf(2)`."
+"`vsnprintf(3)`."
msgstr ""
#: c-api/conversion.rst:23
@@ -48,7 +48,7 @@ msgstr ""
#: c-api/conversion.rst:28
msgid ""
-"The wrappers ensure that *str*[*size*-1] is always ``'\\0'`` upon return. "
+"The wrappers ensure that ``str[size-1]`` is always ``'\\0'`` upon return. "
"They never write more than *size* bytes (including the trailing ``'\\0'``) "
"into str. Both functions require that ``str != NULL``, ``size > 0`` and "
"``format != NULL``."
@@ -70,19 +70,19 @@ msgstr ""
msgid ""
"When ``0 <= rv < size``, the output conversion was successful and *rv* "
"characters were written to *str* (excluding the trailing ``'\\0'`` byte at "
-"*str*[*rv*])."
+"``str[rv]``)."
msgstr ""
#: c-api/conversion.rst:43
msgid ""
"When ``rv >= size``, the output conversion was truncated and a buffer with "
-"``rv + 1`` bytes would have been needed to succeed. *str*[*size*-1] is "
+"``rv + 1`` bytes would have been needed to succeed. ``str[size-1]`` is "
"``'\\0'`` in this case."
msgstr ""
#: c-api/conversion.rst:47
msgid ""
-"When ``rv < 0``, \"something bad happened.\" *str*[*size*-1] is ``'\\0'`` in "
+"When ``rv < 0``, \"something bad happened.\" ``str[size-1]`` is ``'\\0'`` in "
"this case too, but the rest of *str* is undefined. The exact cause of the "
"error depends on the underlying platform."
msgstr ""
diff --git a/c-api/datetime.po b/c-api/datetime.po
index cb0b0a25f5..14604dd3b6 100644
--- a/c-api/datetime.po
+++ b/c-api/datetime.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-06-28 15:17+0200\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
@@ -259,23 +259,28 @@ msgstr ""
"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é :"
-#: c-api/datetime.rst:200
+#: c-api/datetime.rst:207
msgid "Return the hour, as an int from 0 through 23."
msgstr "Renvoie l'heure, sous forme d'entier allant de 0 à 23."
-#: c-api/datetime.rst:205
+#: c-api/datetime.rst:212
msgid "Return the minute, as an int from 0 through 59."
msgstr "Renvoie la minute, sous forme d'entier allant de 0 à 59."
-#: c-api/datetime.rst:210
+#: c-api/datetime.rst:217
msgid "Return the second, as an int from 0 through 59."
msgstr "Renvoie la seconde, sous forme d'entier allant de 0 à 59."
-#: c-api/datetime.rst:215
+#: c-api/datetime.rst:222
msgid "Return the microsecond, as an int from 0 through 999999."
msgstr "Renvoie la microseconde, sous forme d'entier allant de 0 à 999999."
-#: c-api/datetime.rst:194
+#: c-api/datetime.rst:227
+#, fuzzy
+msgid "Return the fold, as an int from 0 through 1."
+msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
+
+#: c-api/datetime.rst:201
#, fuzzy
msgid ""
"Macros to extract fields from time objects. The argument must be an "
@@ -286,7 +291,7 @@ msgstr ""
"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é :"
-#: c-api/datetime.rst:218
+#: c-api/datetime.rst:232
#, fuzzy
msgid ""
"Macros to extract fields from time delta objects. The argument must be an "
@@ -297,26 +302,26 @@ msgstr ""
"ê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é :"
-#: c-api/datetime.rst:224
+#: c-api/datetime.rst:238
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``."
-#: c-api/datetime.rst:231
+#: c-api/datetime.rst:245
msgid "Return the number of seconds, as an int from 0 through 86399."
msgstr "Renvoie le nombre de secondes sous forme d'entier allant de 0 à 86399."
-#: c-api/datetime.rst:238
+#: c-api/datetime.rst:252
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."
-#: c-api/datetime.rst:243
+#: c-api/datetime.rst:257
msgid "Macros for the convenience of modules implementing the DB API:"
msgstr "Macros de confort pour les modules implémentant l'API DB :"
-#: c-api/datetime.rst:247
+#: c-api/datetime.rst:261
msgid ""
"Create and return a new :class:`datetime.datetime` object given an argument "
"tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`."
@@ -324,7 +329,7 @@ msgstr ""
"Crée et renvoie un nouvel objet :class:`datetime.datetime` à partir d'un n-"
"uplet qui peut être passé à :meth:`datetime.datetime.fromtimestamp()`."
-#: c-api/datetime.rst:253
+#: c-api/datetime.rst:267
msgid ""
"Create and return a new :class:`datetime.date` object given an argument "
"tuple suitable for passing to :meth:`datetime.date.fromtimestamp()`."
diff --git a/c-api/exceptions.po b/c-api/exceptions.po
index 19799c5f2a..60dc1ebba8 100644
--- a/c-api/exceptions.po
+++ b/c-api/exceptions.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-10-04 12:24+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -28,8 +28,8 @@ msgid ""
"occurred. Most C API functions don't clear this on success, but will set it "
"to indicate the cause of the error on failure. Most C API functions also "
"return an error indicator, usually ``NULL`` if they are supposed to return a "
-"pointer, or ``-1`` if they return an integer (exception: the :c:func:`PyArg_"
-"\\*` functions return ``1`` for success and ``0`` for failure)."
+"pointer, or ``-1`` if they return an integer (exception: the :c:func:"
+"`PyArg_\\*` functions return ``1`` for success and ``0`` for failure)."
msgstr ""
#: c-api/exceptions.rst:20
@@ -139,7 +139,7 @@ msgid ""
"specifies the exception type; it is normally one of the standard exceptions, "
"e.g. :c:data:`PyExc_RuntimeError`. You need not increment its reference "
"count. The second argument is an error message; it is decoded from "
-"``'utf-8``'."
+"``'utf-8'``."
msgstr ""
#: c-api/exceptions.rst:108
@@ -274,25 +274,31 @@ msgstr ""
#: c-api/exceptions.rst:258
msgid ""
+"Much like :c:func:`PyErr_SetImportError` but this function allows for "
+"specifying a subclass of :exc:`ImportError` to raise."
+msgstr ""
+
+#: c-api/exceptions.rst:266
+msgid ""
"Set file, line, and offset information for the current exception. If the "
"current exception is not a :exc:`SyntaxError`, then it sets additional "
"attributes, which make the exception printing subsystem think the exception "
"is a :exc:`SyntaxError`."
msgstr ""
-#: c-api/exceptions.rst:268
+#: c-api/exceptions.rst:276
msgid ""
"Like :c:func:`PyErr_SyntaxLocationObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: c-api/exceptions.rst:276
+#: c-api/exceptions.rst:284
msgid ""
-"Like :c:func:`PyErr_SyntaxLocationEx`, but the col_offset parameter is "
+"Like :c:func:`PyErr_SyntaxLocationEx`, but the *col_offset* parameter is "
"omitted."
msgstr ""
-#: c-api/exceptions.rst:282
+#: c-api/exceptions.rst:290
msgid ""
"This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``, "
"where *message* indicates that an internal operation (e.g. a Python/C API "
@@ -300,11 +306,11 @@ msgid ""
"use."
msgstr ""
-#: c-api/exceptions.rst:289
+#: c-api/exceptions.rst:297
msgid "Issuing warnings"
msgstr ""
-#: c-api/exceptions.rst:291
+#: c-api/exceptions.rst:299
msgid ""
"Use these functions to issue warnings from C code. They mirror similar "
"functions exported by the Python :mod:`warnings` module. They normally "
@@ -320,7 +326,7 @@ msgid ""
"return an error value)."
msgstr ""
-#: c-api/exceptions.rst:306
+#: c-api/exceptions.rst:314
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. "
@@ -330,7 +336,7 @@ msgid ""
"`PyErr_WarnEx`, 2 is the function above that, and so forth."
msgstr ""
-#: c-api/exceptions.rst:313
+#: c-api/exceptions.rst:321
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 "
@@ -339,65 +345,59 @@ msgid ""
"enumerated at :ref:`standardwarningcategories`."
msgstr ""
-#: c-api/exceptions.rst:319
+#: c-api/exceptions.rst:327
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 ""
-#: c-api/exceptions.rst:325
-msgid ""
-"Much like :c:func:`PyErr_SetImportError` but this function allows for "
-"specifying a subclass of :exc:`ImportError` to raise."
-msgstr ""
-
-#: c-api/exceptions.rst:333
+#: c-api/exceptions.rst:334
msgid ""
"Issue a warning message with explicit control over all warning attributes. "
"This is a straightforward wrapper around the Python function :func:`warnings."
-"warn_explicit`, see there for more information. The *module* and *registry* "
+"warn_explicit`; see there for more information. The *module* and *registry* "
"arguments may be set to ``NULL`` to get the default effect described there."
msgstr ""
-#: c-api/exceptions.rst:344
+#: c-api/exceptions.rst:345
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 ""
-#: c-api/exceptions.rst:351
+#: c-api/exceptions.rst:352
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 ""
-#: c-api/exceptions.rst:360
+#: c-api/exceptions.rst:361
msgid ""
"Function similar to :c:func:`PyErr_WarnFormat`, but *category* is :exc:"
"`ResourceWarning` and it passes *source* to :func:`warnings.WarningMessage`."
msgstr ""
-#: c-api/exceptions.rst:367
+#: c-api/exceptions.rst:368
msgid "Querying the error indicator"
msgstr ""
-#: c-api/exceptions.rst:371
+#: c-api/exceptions.rst:372
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"
-"\\*` functions or to :c:func:`PyErr_Restore`). If not set, return "
+"*type* (the first argument to the last call to one of the :c:func:"
+"`PyErr_Set\\*` functions or to :c:func:`PyErr_Restore`). If not set, return "
"``NULL``. You do not own a reference to the return value, so you do not "
"need to :c:func:`Py_DECREF` it."
msgstr ""
-#: c-api/exceptions.rst:377
+#: c-api/exceptions.rst:378
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/exceptions.rst:381
+#: c-api/exceptions.rst:382
msgid ""
"Do not compare the return value to a specific exception; use :c:func:"
"`PyErr_ExceptionMatches` instead, shown below. (The comparison could easily "
@@ -405,14 +405,14 @@ msgid ""
"of a class exception, or it may be a subclass of the expected exception.)"
msgstr ""
-#: c-api/exceptions.rst:389
+#: c-api/exceptions.rst:390
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 ""
-#: c-api/exceptions.rst:396
+#: c-api/exceptions.rst:397
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 "
@@ -420,7 +420,7 @@ msgid ""
"tuple (and recursively in subtuples) are searched for a match."
msgstr ""
-#: c-api/exceptions.rst:404
+#: c-api/exceptions.rst:405
msgid ""
"Retrieve the error indicator into three variables whose addresses are "
"passed. If the error indicator is not set, set all three variables to "
@@ -429,14 +429,14 @@ msgid ""
"the type object is not."
msgstr ""
-#: c-api/exceptions.rst:411
+#: c-api/exceptions.rst:412
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 ""
-#: c-api/exceptions.rst:426
+#: c-api/exceptions.rst:427
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 "
@@ -449,14 +449,14 @@ msgid ""
"function. I warned you.)"
msgstr ""
-#: c-api/exceptions.rst:438
+#: c-api/exceptions.rst:439
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 ""
-#: c-api/exceptions.rst:445
+#: c-api/exceptions.rst:446
msgid ""
"Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` "
"below can be \"unnormalized\", meaning that ``*exc`` is a class object but "
@@ -466,14 +466,14 @@ msgid ""
"improve performance."
msgstr ""
-#: c-api/exceptions.rst:453
+#: c-api/exceptions.rst:454
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 ""
-#: c-api/exceptions.rst:464
+#: c-api/exceptions.rst:465
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 "
@@ -481,7 +481,7 @@ msgid ""
"may be ``NULL``. Does not modify the exception info state."
msgstr ""
-#: c-api/exceptions.rst:471
+#: c-api/exceptions.rst:472
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 "
@@ -489,7 +489,7 @@ msgid ""
"exception state."
msgstr ""
-#: c-api/exceptions.rst:481
+#: c-api/exceptions.rst:482
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 "
@@ -498,7 +498,7 @@ msgid ""
"about the three arguments, see :c:func:`PyErr_Restore`."
msgstr ""
-#: c-api/exceptions.rst:489
+#: c-api/exceptions.rst:490
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 "
@@ -506,11 +506,11 @@ msgid ""
"state."
msgstr ""
-#: c-api/exceptions.rst:498
+#: c-api/exceptions.rst:499
msgid "Signal Handling"
msgstr "Traitement des signaux"
-#: c-api/exceptions.rst:508
+#: c-api/exceptions.rst:509
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 "
@@ -522,27 +522,27 @@ msgid ""
"may not be cleared if it was previously set."
msgstr ""
-#: c-api/exceptions.rst:524
+#: c-api/exceptions.rst:525
msgid ""
"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 ""
-#: c-api/exceptions.rst:528
+#: c-api/exceptions.rst:529
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 ""
-#: c-api/exceptions.rst:534
+#: c-api/exceptions.rst:535
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 ""
-#: c-api/exceptions.rst:538
+#: c-api/exceptions.rst:539
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 "
@@ -550,15 +550,15 @@ msgid ""
"be called from the main thread."
msgstr ""
-#: c-api/exceptions.rst:543
+#: c-api/exceptions.rst:544
msgid "On Windows, the function now also supports socket handles."
msgstr ""
-#: c-api/exceptions.rst:548
+#: c-api/exceptions.rst:549
msgid "Exception Classes"
msgstr ""
-#: c-api/exceptions.rst:552
+#: c-api/exceptions.rst:553
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 "
@@ -567,7 +567,7 @@ msgid ""
"(accessible in C as :c:data:`PyExc_Exception`)."
msgstr ""
-#: c-api/exceptions.rst:558
+#: c-api/exceptions.rst:559
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 "
@@ -577,31 +577,31 @@ msgid ""
"variables and methods."
msgstr ""
-#: c-api/exceptions.rst:567
+#: c-api/exceptions.rst:568
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 ""
-#: c-api/exceptions.rst:575
+#: c-api/exceptions.rst:576
msgid "Exception Objects"
msgstr "Objets exception"
-#: c-api/exceptions.rst:579
+#: c-api/exceptions.rst:580
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 ""
-#: c-api/exceptions.rst:586
+#: c-api/exceptions.rst:587
msgid ""
"Set the traceback associated with the exception to *tb*. Use ``Py_None`` to "
"clear it."
msgstr ""
-#: c-api/exceptions.rst:592
+#: c-api/exceptions.rst:593
msgid ""
"Return the context (another exception instance during whose handling *ex* "
"was raised) associated with the exception as a new reference, as accessible "
@@ -609,127 +609,127 @@ msgid ""
"this returns ``NULL``."
msgstr ""
-#: c-api/exceptions.rst:600
+#: c-api/exceptions.rst:601
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 ""
-#: c-api/exceptions.rst:607
+#: c-api/exceptions.rst:608
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 ""
-#: c-api/exceptions.rst:614
+#: c-api/exceptions.rst:615
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 ""
-#: c-api/exceptions.rst:618
+#: c-api/exceptions.rst:619
msgid ""
":attr:`__suppress_context__` is implicitly set to ``True`` by this function."
msgstr ""
-#: c-api/exceptions.rst:624
+#: c-api/exceptions.rst:625
msgid "Unicode Exception Objects"
msgstr "Objets exception Unicode"
-#: c-api/exceptions.rst:626
+#: c-api/exceptions.rst:627
msgid ""
"The following functions are used to create and modify Unicode exceptions "
"from C."
msgstr ""
-#: c-api/exceptions.rst:630
+#: c-api/exceptions.rst:631
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 ""
-#: c-api/exceptions.rst:636
+#: c-api/exceptions.rst:637
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 ""
-#: c-api/exceptions.rst:650
+#: c-api/exceptions.rst:651
msgid "3.11"
-msgstr ""
+msgstr "3.11"
-#: c-api/exceptions.rst:642
+#: c-api/exceptions.rst:643
msgid ""
"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``."
msgstr ""
-#: c-api/exceptions.rst:647
+#: c-api/exceptions.rst:648
msgid ""
"Create a :class:`UnicodeTranslateError` object with the attributes *object*, "
"*length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string."
msgstr ""
-#: c-api/exceptions.rst:652
+#: c-api/exceptions.rst:653
msgid ""
"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
"``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"Onns\", ...)``."
msgstr ""
-#: c-api/exceptions.rst:658
+#: c-api/exceptions.rst:659
msgid "Return the *encoding* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:664
+#: c-api/exceptions.rst:665
msgid "Return the *object* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:670
+#: c-api/exceptions.rst:671
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`` "
+"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 ""
-#: c-api/exceptions.rst:678
+#: c-api/exceptions.rst:679
msgid ""
"Set the *start* attribute of the given exception object to *start*. Return "
"``0`` on success, ``-1`` on failure."
msgstr ""
-#: c-api/exceptions.rst:685
+#: c-api/exceptions.rst:686
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 "
+"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 ""
-#: c-api/exceptions.rst:693
+#: c-api/exceptions.rst:694
msgid ""
"Set the *end* attribute of the given exception object to *end*. Return "
"``0`` on success, ``-1`` on failure."
msgstr ""
-#: c-api/exceptions.rst:700
+#: c-api/exceptions.rst:701
msgid "Return the *reason* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:706
+#: c-api/exceptions.rst:707
msgid ""
"Set the *reason* attribute of the given exception object to *reason*. "
"Return ``0`` on success, ``-1`` on failure."
msgstr ""
-#: c-api/exceptions.rst:713
+#: c-api/exceptions.rst:714
msgid "Recursion Control"
msgstr "Contrôle de la récursion"
-#: c-api/exceptions.rst:715
+#: c-api/exceptions.rst:716
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 "
@@ -739,42 +739,42 @@ msgid ""
"recursion handling."
msgstr ""
-#: c-api/exceptions.rst:724
+#: c-api/exceptions.rst:725
msgid "Marks a point where a recursive C-level call is about to be performed."
msgstr ""
-#: c-api/exceptions.rst:726
+#: c-api/exceptions.rst:727
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 ""
-#: c-api/exceptions.rst:730
+#: c-api/exceptions.rst:731
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 ""
-#: c-api/exceptions.rst:734
+#: c-api/exceptions.rst:735
msgid ""
"*where* should be a UTF-8 encoded string such as ``\" in instance check\"`` "
"to be concatenated to the :exc:`RecursionError` message caused by the "
"recursion depth limit."
msgstr ""
-#: c-api/exceptions.rst:746
+#: c-api/exceptions.rst:747
msgid "This function is now also available in the limited API."
msgstr ""
-#: c-api/exceptions.rst:743
+#: c-api/exceptions.rst:744
msgid ""
"Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each "
"*successful* invocation of :c:func:`Py_EnterRecursiveCall`."
msgstr ""
-#: c-api/exceptions.rst:749
+#: c-api/exceptions.rst:750
msgid ""
"Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types "
"requires special recursion handling. In addition to protecting the stack, :"
@@ -783,13 +783,13 @@ msgid ""
"Effectively, these are the C equivalent to :func:`reprlib.recursive_repr`."
msgstr ""
-#: c-api/exceptions.rst:757
+#: c-api/exceptions.rst:758
msgid ""
"Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` "
"implementation to detect cycles."
msgstr ""
-#: c-api/exceptions.rst:760
+#: c-api/exceptions.rst:761
msgid ""
"If the object has already been processed, the function returns a positive "
"integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation "
@@ -797,30 +797,30 @@ msgid ""
"`dict` objects return ``{...}`` and :class:`list` objects return ``[...]``."
msgstr ""
-#: c-api/exceptions.rst:766
+#: c-api/exceptions.rst:767
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 ""
-#: c-api/exceptions.rst:770
+#: c-api/exceptions.rst:771
msgid ""
"Otherwise, the function returns zero and the :c:member:`~PyTypeObject."
"tp_repr` implementation can continue normally."
msgstr ""
-#: c-api/exceptions.rst:775
+#: c-api/exceptions.rst:776
msgid ""
"Ends a :c:func:`Py_ReprEnter`. Must be called once for each invocation of :"
"c:func:`Py_ReprEnter` that returns zero."
msgstr ""
-#: c-api/exceptions.rst:782
+#: c-api/exceptions.rst:783
msgid "Standard Exceptions"
msgstr "Exceptions standards"
-#: c-api/exceptions.rst:784
+#: c-api/exceptions.rst:785
msgid ""
"All standard Python exceptions are available as global variables whose names "
"are ``PyExc_`` followed by the Python exception name. These have the type :"
@@ -828,452 +828,448 @@ msgid ""
"all the variables:"
msgstr ""
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:979 c-api/exceptions.rst:1024
msgid "C Name"
msgstr "Nom C"
-#: c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1024
msgid "Python Name"
msgstr "Nom Python"
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:979 c-api/exceptions.rst:1024
msgid "Notes"
msgstr "Notes"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:848
msgid ":c:data:`PyExc_BaseException`"
msgstr ":c:data:`PyExc_BaseException`"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:848
msgid ":exc:`BaseException`"
msgstr ":exc:`BaseException`"
-#: c-api/exceptions.rst:849 c-api/exceptions.rst:897 c-api/exceptions.rst:1025
-msgid "\\(1)"
-msgstr "\\(1)"
+#: c-api/exceptions.rst:850 c-api/exceptions.rst:898 c-api/exceptions.rst:910
+msgid "[1]_"
+msgstr ""
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:850
msgid ":c:data:`PyExc_Exception`"
msgstr ":c:data:`PyExc_Exception`"
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:850
msgid ":exc:`Exception`"
msgstr ":exc:`Exception`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:852
msgid ":c:data:`PyExc_ArithmeticError`"
msgstr ":c:data:`PyExc_ArithmeticError`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:852
msgid ":exc:`ArithmeticError`"
msgstr ":exc:`ArithmeticError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:854
msgid ":c:data:`PyExc_AssertionError`"
msgstr ":c:data:`PyExc_AssertionError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:854
msgid ":exc:`AssertionError`"
msgstr ":exc:`AssertionError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:856
msgid ":c:data:`PyExc_AttributeError`"
msgstr ":c:data:`PyExc_AttributeError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:856
msgid ":exc:`AttributeError`"
msgstr ":exc:`AttributeError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:858
msgid ":c:data:`PyExc_BlockingIOError`"
msgstr ":c:data:`PyExc_BlockingIOError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:858
msgid ":exc:`BlockingIOError`"
msgstr ":exc:`BlockingIOError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:860
msgid ":c:data:`PyExc_BrokenPipeError`"
msgstr ":c:data:`PyExc_BrokenPipeError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:860
msgid ":exc:`BrokenPipeError`"
msgstr ":exc:`BrokenPipeError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:862
msgid ":c:data:`PyExc_BufferError`"
msgstr ":c:data:`PyExc_BufferError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:862
msgid ":exc:`BufferError`"
msgstr ":exc:`BufferError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:864
msgid ":c:data:`PyExc_ChildProcessError`"
msgstr ":c:data:`PyExc_ChildProcessError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:864
msgid ":exc:`ChildProcessError`"
msgstr ":exc:`ChildProcessError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:866
msgid ":c:data:`PyExc_ConnectionAbortedError`"
msgstr ":c:data:`PyExc_ConnectionAbortedError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:866
msgid ":exc:`ConnectionAbortedError`"
msgstr ":exc:`ConnectionAbortedError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:868
msgid ":c:data:`PyExc_ConnectionError`"
msgstr ":c:data:`PyExc_ConnectionError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:868
msgid ":exc:`ConnectionError`"
msgstr ":exc:`ConnectionError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:870
msgid ":c:data:`PyExc_ConnectionRefusedError`"
msgstr ":c:data:`PyExc_ConnectionRefusedError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:870
msgid ":exc:`ConnectionRefusedError`"
msgstr ":exc:`ConnectionRefusedError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:872
msgid ":c:data:`PyExc_ConnectionResetError`"
msgstr ":c:data:`PyExc_ConnectionResetError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:872
msgid ":exc:`ConnectionResetError`"
msgstr ":exc:`ConnectionResetError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:874
msgid ":c:data:`PyExc_EOFError`"
msgstr ":c:data:`PyExc_EOFError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:874
msgid ":exc:`EOFError`"
msgstr ":exc:`EOFError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:876
msgid ":c:data:`PyExc_FileExistsError`"
msgstr ":c:data:`PyExc_FileExistsError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:876
msgid ":exc:`FileExistsError`"
msgstr ":exc:`FileExistsError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:878
msgid ":c:data:`PyExc_FileNotFoundError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:878
msgid ":exc:`FileNotFoundError`"
msgstr ":exc:`FileNotFoundError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:880
msgid ":c:data:`PyExc_FloatingPointError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:880
msgid ":exc:`FloatingPointError`"
msgstr ":exc:`FloatingPointError`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:882
msgid ":c:data:`PyExc_GeneratorExit`"
msgstr ":c:data:`PyExc_GeneratorExit`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:882
msgid ":exc:`GeneratorExit`"
msgstr ":exc:`GeneratorExit`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:884
msgid ":c:data:`PyExc_ImportError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:884
msgid ":exc:`ImportError`"
msgstr ":exc:`ImportError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:886
msgid ":c:data:`PyExc_IndentationError`"
msgstr ":c:data:`PyExc_IndentationError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:886
msgid ":exc:`IndentationError`"
msgstr ":exc:`IndentationError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:888
msgid ":c:data:`PyExc_IndexError`"
msgstr ":c:data:`PyExc_IndexError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:888
msgid ":exc:`IndexError`"
msgstr ":exc:`IndexError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:890
msgid ":c:data:`PyExc_InterruptedError`"
msgstr ":c:data:`PyExc_InterruptedError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:890
msgid ":exc:`InterruptedError`"
msgstr ":exc:`InterruptedError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:892
msgid ":c:data:`PyExc_IsADirectoryError`"
msgstr ":c:data:`PyExc_IsADirectoryError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:892
msgid ":exc:`IsADirectoryError`"
msgstr ":exc:`IsADirectoryError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:894
msgid ":c:data:`PyExc_KeyError`"
msgstr ":c:data:`PyExc_KeyError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:894
msgid ":exc:`KeyError`"
msgstr ":exc:`KeyError`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:896
msgid ":c:data:`PyExc_KeyboardInterrupt`"
msgstr ":c:data:`PyExc_KeyboardInterrupt`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:896
msgid ":exc:`KeyboardInterrupt`"
msgstr ":exc:`KeyboardInterrupt`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:898
msgid ":c:data:`PyExc_LookupError`"
msgstr ":c:data:`PyExc_LookupError`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:898
msgid ":exc:`LookupError`"
msgstr ":exc:`LookupError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:900
msgid ":c:data:`PyExc_MemoryError`"
msgstr ":c:data:`PyExc_MemoryError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:900
msgid ":exc:`MemoryError`"
msgstr ":exc:`MemoryError`"
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:902
#, fuzzy
msgid ":c:data:`PyExc_ModuleNotFoundError`"
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:902
msgid ":exc:`ModuleNotFoundError`"
-msgstr ""
+msgstr ":exc:`ModuleNotFoundError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:904
msgid ":c:data:`PyExc_NameError`"
msgstr ":c:data:`PyExc_NameError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:904
msgid ":exc:`NameError`"
msgstr ":exc:`NameError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:906
msgid ":c:data:`PyExc_NotADirectoryError`"
msgstr ":c:data:`PyExc_NotADirectoryError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:906
msgid ":exc:`NotADirectoryError`"
msgstr ":exc:`NotADirectoryError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:908
msgid ":c:data:`PyExc_NotImplementedError`"
msgstr ":c:data:`PyExc_NotImplementedError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:908
msgid ":exc:`NotImplementedError`"
msgstr ":exc:`NotImplementedError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:910
msgid ":c:data:`PyExc_OSError`"
msgstr ":c:data:`PyExc_OSError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:910
msgid ":exc:`OSError`"
msgstr ":exc:`OSError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:912
msgid ":c:data:`PyExc_OverflowError`"
msgstr ":c:data:`PyExc_OverflowError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:912
msgid ":exc:`OverflowError`"
msgstr ":exc:`OverflowError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:914
msgid ":c:data:`PyExc_PermissionError`"
msgstr ":c:data:`PyExc_PermissionError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:914
msgid ":exc:`PermissionError`"
msgstr ":exc:`PermissionError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:916
msgid ":c:data:`PyExc_ProcessLookupError`"
msgstr ":c:data:`PyExc_ProcessLookupError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:916
msgid ":exc:`ProcessLookupError`"
msgstr ":exc:`ProcessLookupError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:918
msgid ":c:data:`PyExc_RecursionError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:918
msgid ":exc:`RecursionError`"
-msgstr ""
+msgstr ":exc:`RecursionError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:920
msgid ":c:data:`PyExc_ReferenceError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:920
msgid ":exc:`ReferenceError`"
msgstr ":exc:`ReferenceError`"
-#: c-api/exceptions.rst:919
-msgid "\\(2)"
-msgstr "\\(2)"
-
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:922
msgid ":c:data:`PyExc_RuntimeError`"
msgstr ":c:data:`PyExc_RuntimeError`"
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:922
msgid ":exc:`RuntimeError`"
msgstr ":exc:`RuntimeError`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:924
msgid ":c:data:`PyExc_StopAsyncIteration`"
msgstr ":c:data:`PyExc_StopAsyncIteration`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:924
msgid ":exc:`StopAsyncIteration`"
msgstr ":exc:`StopAsyncIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:926
msgid ":c:data:`PyExc_StopIteration`"
msgstr ":c:data:`PyExc_StopIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:926
msgid ":exc:`StopIteration`"
msgstr ":exc:`StopIteration`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:928
msgid ":c:data:`PyExc_SyntaxError`"
msgstr ":c:data:`PyExc_SyntaxError`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:928
msgid ":exc:`SyntaxError`"
msgstr ":exc:`SyntaxError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:930
msgid ":c:data:`PyExc_SystemError`"
msgstr ":c:data:`PyExc_SystemError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:930
msgid ":exc:`SystemError`"
msgstr ":exc:`SystemError`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:932
msgid ":c:data:`PyExc_SystemExit`"
msgstr ":c:data:`PyExc_SystemExit`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:932
msgid ":exc:`SystemExit`"
msgstr ":exc:`SystemExit`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:934
msgid ":c:data:`PyExc_TabError`"
msgstr ":c:data:`PyExc_TabError`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:934
msgid ":exc:`TabError`"
msgstr ":exc:`TabError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:936
msgid ":c:data:`PyExc_TimeoutError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:936
msgid ":exc:`TimeoutError`"
msgstr ":exc:`TimeoutError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:938
msgid ":c:data:`PyExc_TypeError`"
msgstr ":c:data:`PyExc_TypeError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:938
msgid ":exc:`TypeError`"
msgstr ":exc:`TypeError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:940
msgid ":c:data:`PyExc_UnboundLocalError`"
msgstr ":c:data:`PyExc_UnboundLocalError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:940
msgid ":exc:`UnboundLocalError`"
msgstr ":exc:`UnboundLocalError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:942
msgid ":c:data:`PyExc_UnicodeDecodeError`"
msgstr ":c:data:`PyExc_UnicodeDecodeError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:942
msgid ":exc:`UnicodeDecodeError`"
msgstr ":exc:`UnicodeDecodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:944
msgid ":c:data:`PyExc_UnicodeEncodeError`"
msgstr ":c:data:`PyExc_UnicodeEncodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:944
msgid ":exc:`UnicodeEncodeError`"
msgstr ":exc:`UnicodeEncodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:946
msgid ":c:data:`PyExc_UnicodeError`"
msgstr ":c:data:`PyExc_UnicodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:946
msgid ":exc:`UnicodeError`"
msgstr ":exc:`UnicodeError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:948
msgid ":c:data:`PyExc_UnicodeTranslateError`"
msgstr ":c:data:`PyExc_UnicodeTranslateError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:948
msgid ":exc:`UnicodeTranslateError`"
msgstr ":exc:`UnicodeTranslateError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:950
msgid ":c:data:`PyExc_ValueError`"
msgstr ":c:data:`PyExc_ValueError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:950
msgid ":exc:`ValueError`"
msgstr ":exc:`ValueError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:952
msgid ":c:data:`PyExc_ZeroDivisionError`"
msgstr ":c:data:`PyExc_ZeroDivisionError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:952
msgid ":exc:`ZeroDivisionError`"
msgstr ":exc:`ZeroDivisionError`"
-#: c-api/exceptions.rst:954
+#: c-api/exceptions.rst:955
msgid ""
":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:"
"`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:"
@@ -1285,57 +1281,57 @@ msgid ""
"`PyExc_TimeoutError` were introduced following :pep:`3151`."
msgstr ""
-#: c-api/exceptions.rst:964
+#: c-api/exceptions.rst:965
msgid ":c:data:`PyExc_StopAsyncIteration` and :c:data:`PyExc_RecursionError`."
msgstr ":c:data:`PyExc_StopAsyncIteration` et :c:data:`PyExc_RecursionError`."
-#: c-api/exceptions.rst:967
+#: c-api/exceptions.rst:968
msgid ":c:data:`PyExc_ModuleNotFoundError`."
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:970
+#: c-api/exceptions.rst:971
msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:"
msgstr ""
-#: c-api/exceptions.rst:980
+#: c-api/exceptions.rst:981
msgid ":c:data:`PyExc_EnvironmentError`"
msgstr ":c:data:`PyExc_EnvironmentError`"
-#: c-api/exceptions.rst:982
+#: c-api/exceptions.rst:983
msgid ":c:data:`PyExc_IOError`"
msgstr ":c:data:`PyExc_IOError`"
-#: c-api/exceptions.rst:984
+#: c-api/exceptions.rst:985
msgid ":c:data:`PyExc_WindowsError`"
msgstr ":c:data:`PyExc_WindowsError`"
-#: c-api/exceptions.rst:984
-msgid "\\(3)"
-msgstr "\\(3)"
+#: c-api/exceptions.rst:985
+msgid "[2]_"
+msgstr ""
-#: c-api/exceptions.rst:987
+#: c-api/exceptions.rst:988
msgid "These aliases used to be separate exception types."
msgstr ""
-#: c-api/exceptions.rst:1051
+#: c-api/exceptions.rst:1052
msgid "Notes:"
msgstr "Notes :"
-#: c-api/exceptions.rst:993
+#: c-api/exceptions.rst:994
msgid "This is a base class for other standard exceptions."
msgstr "C'est la classe de base pour les autres exceptions standards."
-#: c-api/exceptions.rst:996
+#: c-api/exceptions.rst:997
msgid ""
"Only defined on Windows; protect code that uses this by testing that the "
"preprocessor macro ``MS_WINDOWS`` is defined."
msgstr ""
-#: c-api/exceptions.rst:1002
+#: c-api/exceptions.rst:1003
msgid "Standard Warning Categories"
msgstr ""
-#: c-api/exceptions.rst:1004
+#: c-api/exceptions.rst:1005
msgid ""
"All standard Python warning categories are available as global variables "
"whose names are ``PyExc_`` followed by the Python exception name. These have "
@@ -1343,98 +1339,111 @@ msgid ""
"here are all the variables:"
msgstr ""
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1026
msgid ":c:data:`PyExc_Warning`"
msgstr ":c:data:`PyExc_Warning`"
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1026
msgid ":exc:`Warning`"
msgstr ":exc:`Warning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1026
+msgid "[3]_"
+msgstr ""
+
+#: c-api/exceptions.rst:1028
msgid ":c:data:`PyExc_BytesWarning`"
msgstr ":c:data:`PyExc_BytesWarning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1028
msgid ":exc:`BytesWarning`"
msgstr ":exc:`BytesWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1030
msgid ":c:data:`PyExc_DeprecationWarning`"
msgstr ":c:data:`PyExc_DeprecationWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1030
msgid ":exc:`DeprecationWarning`"
msgstr ":exc:`DeprecationWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1032
msgid ":c:data:`PyExc_FutureWarning`"
msgstr ":c:data:`PyExc_FutureWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1032
msgid ":exc:`FutureWarning`"
msgstr ":exc:`FutureWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1034
msgid ":c:data:`PyExc_ImportWarning`"
msgstr ":c:data:`PyExc_ImportWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1034
msgid ":exc:`ImportWarning`"
msgstr ":exc:`ImportWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1036
msgid ":c:data:`PyExc_PendingDeprecationWarning`"
msgstr ":c:data:`PyExc_PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1036
msgid ":exc:`PendingDeprecationWarning`"
msgstr ":exc:`PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1038
msgid ":c:data:`PyExc_ResourceWarning`"
msgstr ":c:data:`PyExc_ResourceWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1038
msgid ":exc:`ResourceWarning`"
msgstr ":exc:`ResourceWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1040
msgid ":c:data:`PyExc_RuntimeWarning`"
msgstr ":c:data:`PyExc_RuntimeWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1040
msgid ":exc:`RuntimeWarning`"
msgstr ":exc:`RuntimeWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1042
msgid ":c:data:`PyExc_SyntaxWarning`"
msgstr ":c:data:`PyExc_SyntaxWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1042
msgid ":exc:`SyntaxWarning`"
msgstr ":exc:`SyntaxWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1044
msgid ":c:data:`PyExc_UnicodeWarning`"
msgstr ":c:data:`PyExc_UnicodeWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1044
msgid ":exc:`UnicodeWarning`"
msgstr ":exc:`UnicodeWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1046
msgid ":c:data:`PyExc_UserWarning`"
msgstr ":c:data:`PyExc_UserWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1046
msgid ":exc:`UserWarning`"
msgstr ":exc:`UserWarning`"
-#: c-api/exceptions.rst:1048
+#: c-api/exceptions.rst:1049
msgid ":c:data:`PyExc_ResourceWarning`."
msgstr ":c:data:`PyExc_ResourceWarning`."
-#: c-api/exceptions.rst:1054
+#: c-api/exceptions.rst:1055
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*."
+
+#~ msgid "\\(1)"
+#~ msgstr "\\(1)"
+
+#~ msgid "\\(2)"
+#~ msgstr "\\(2)"
+
+#~ msgid "\\(3)"
+#~ msgstr "\\(3)"
diff --git a/c-api/file.po b/c-api/file.po
index 069703744f..02cf0b7a6a 100644
--- a/c-api/file.po
+++ b/c-api/file.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-12-17 16:05+0100\n"
+"POT-Creation-Date: 2021-03-19 16:59+0100\n"
"PO-Revision-Date: 2018-10-18 09:48+0200\n"
"Last-Translator: \n"
"Language-Team: FRENCH \n"
@@ -149,7 +149,7 @@ msgstr ""
msgid "This function is safe to call before :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/file.rst:86
+#: c-api/file.rst:85
msgid ""
"Raises an :ref:`auditing event ` ``setopencodehook`` with no "
"arguments."
diff --git a/c-api/function.po b/c-api/function.po
index c60e6d04a3..21ba742b12 100644
--- a/c-api/function.po
+++ b/c-api/function.po
@@ -20,11 +20,11 @@ msgstr "Objets fonctions"
#: c-api/function.rst:10
msgid "There are a few functions specific to Python functions."
-msgstr ""
+msgstr "Certaines fonctions sont spécifiques aux fonctions Python."
#: c-api/function.rst:15
msgid "The C structure used for functions."
-msgstr ""
+msgstr "La structure C utilisée pour les fonctions."
#: c-api/function.rst:22
msgid ""
@@ -32,6 +32,8 @@ msgid ""
"function type. It is exposed to Python programmers as ``types."
"FunctionType``."
msgstr ""
+"C'est une instance de :c:type:`PyTypeObject` et représente le type fonction "
+"en Python. Il est exposé aux développeurs comme ``types.FunctionType``."
#: c-api/function.rst:28
msgid ""
@@ -39,6 +41,9 @@ msgid ""
"`PyFunction_Type`). The parameter must not be ``NULL``. This function "
"always succeeds."
msgstr ""
+"Renvoie vrai si *o* est un objet de type fonction (a comme type :c:data:"
+"`PyFunction_Type`). Le paramètre ne doit pas être ``NULL``. Cette fonction "
+"réussit toujours."
#: c-api/function.rst:34
msgid ""
@@ -46,6 +51,8 @@ msgid ""
"*globals* must be a dictionary with the global variables accessible to the "
"function."
msgstr ""
+"Renvoie une nouvelle fonction associée avec l'objet *code*. *globals* doit "
+"être un dictionnaire avec les variables globales accessibles à la fonction."
#: c-api/function.rst:37
msgid ""
@@ -65,11 +72,12 @@ msgstr ""
#: c-api/function.rst:54
msgid "Return the code object associated with the function object *op*."
-msgstr ""
+msgstr "Renvoie l'objet code associé avec l'objet de la fonction *op*."
#: c-api/function.rst:59
msgid "Return the globals dictionary associated with the function object *op*."
msgstr ""
+"Renvoie le dictionnaire global associé avec l'objet de la fonction *op*."
#: c-api/function.rst:64
msgid ""
@@ -83,37 +91,49 @@ msgid ""
"Return the argument default values of the function object *op*. This can be "
"a tuple of arguments or ``NULL``."
msgstr ""
+"Renvoie les valeurs par défaut de l'argument de l'objet de la fonction *op*. "
+"Cela peut être un tuple d'arguments ou ``NULL``."
#: c-api/function.rst:77
msgid ""
"Set the argument default values for the function object *op*. *defaults* "
"must be ``Py_None`` or a tuple."
msgstr ""
+"Définir les valeurs par défaut de l'argument pour l'objet de la fonction "
+"*op*. *defaults* doit être ``Py_None`` ou un tuple."
#: c-api/function.rst:94 c-api/function.rst:108
msgid "Raises :exc:`SystemError` and returns ``-1`` on failure."
-msgstr ""
+msgstr "Lève :exc:`SystemError` et renvoie ``-1`` en cas de d'échec."
#: c-api/function.rst:85
msgid ""
"Return the closure associated with the function object *op*. This can be "
"``NULL`` or a tuple of cell objects."
msgstr ""
+"Renvoie la fermeture associée avec l'objet de la fonction *op*. Cela peut "
+"être ``NULL`` ou un tuple d'objets cellule."
#: c-api/function.rst:91
msgid ""
"Set the closure associated with the function object *op*. *closure* must be "
"``Py_None`` or a tuple of cell objects."
msgstr ""
+"Définir la fermeture associée avec l'objet de la fonction *op*. *closure* "
+"doit être ``Py_None`` ou un tuple d'objets cellule."
#: c-api/function.rst:99
msgid ""
"Return the annotations of the function object *op*. This can be a mutable "
"dictionary or ``NULL``."
msgstr ""
+"Renvoie les annotations de l'objet de la fonction *op*. Cela peut être un "
+"dictionnaire mutable ou ``NULL``."
#: c-api/function.rst:105
msgid ""
"Set the annotations for the function object *op*. *annotations* must be a "
"dictionary or ``Py_None``."
msgstr ""
+"Définir les annotations pour l'objet de la fonction *op*. *annotations* doit "
+"être un dictionnaire ou ``Py_None``."
diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po
index da2c4feaac..7bd683892d 100644
--- a/c-api/gcsupport.po
+++ b/c-api/gcsupport.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -21,11 +21,11 @@ msgstr ""
#: c-api/gcsupport.rst:8
msgid ""
"Python's support for detecting and collecting garbage which involves "
-"circular references requires support from object types which are \"containers"
-"\" for other objects which may also be containers. Types which do not store "
-"references to other objects, or which only store references to atomic types "
-"(such as numbers or strings), do not need to provide any explicit support "
-"for garbage collection."
+"circular references requires support from object types which are "
+"\"containers\" for other objects which may also be containers. Types which "
+"do not store references to other objects, or which only store references to "
+"atomic types (such as numbers or strings), do not need to provide any "
+"explicit support for garbage collection."
msgstr ""
#: c-api/gcsupport.rst:15
@@ -60,26 +60,61 @@ msgid ""
"initialized, it must call :c:func:`PyObject_GC_Track`."
msgstr ""
+#: c-api/gcsupport.rst:36
+msgid ""
+"Similarly, the deallocator for the object must conform to a similar pair of "
+"rules:"
+msgstr ""
+
#: c-api/gcsupport.rst:39
msgid ""
+"Before fields which refer to other containers are invalidated, :c:func:"
+"`PyObject_GC_UnTrack` must be called."
+msgstr ""
+
+#: c-api/gcsupport.rst:42
+msgid ""
+"The object's memory must be deallocated using :c:func:`PyObject_GC_Del`."
+msgstr ""
+
+#: c-api/gcsupport.rst:45
+msgid ""
+"If a type adds the Py_TPFLAGS_HAVE_GC, then it *must* implement at least a :"
+"c:member:`~PyTypeObject.tp_traverse` handler or explicitly use one from its "
+"subclass or subclasses."
+msgstr ""
+
+#: c-api/gcsupport.rst:49
+msgid ""
+"When calling :c:func:`PyType_Ready` or some of the APIs that indirectly call "
+"it like :c:func:`PyType_FromSpecWithBases` or :c:func:`PyType_FromSpec` the "
+"interpreter will automatically populate the :c:member:`~PyTypeObject."
+"tp_flags`, :c:member:`~PyTypeObject.tp_traverse` and :c:member:"
+"`~PyTypeObject.tp_clear` fields if the type inherits from a class that "
+"implements the garbage collector protocol and the child class does *not* "
+"include the :const:`Py_TPFLAGS_HAVE_GC` flag."
+msgstr ""
+
+#: c-api/gcsupport.rst:59
+msgid ""
"Analogous to :c:func:`PyObject_New` but for container objects with the :"
"const:`Py_TPFLAGS_HAVE_GC` flag set."
msgstr ""
-#: c-api/gcsupport.rst:45
+#: c-api/gcsupport.rst:65
msgid ""
"Analogous to :c:func:`PyObject_NewVar` but for container objects with the :"
"const:`Py_TPFLAGS_HAVE_GC` flag set."
msgstr ""
-#: c-api/gcsupport.rst:51
+#: c-api/gcsupport.rst:71
msgid ""
"Resize an object allocated by :c:func:`PyObject_NewVar`. Returns the "
"resized object or ``NULL`` on failure. *op* must not be tracked by the "
"collector yet."
msgstr ""
-#: c-api/gcsupport.rst:57
+#: c-api/gcsupport.rst:77
msgid ""
"Adds the object *op* to the set of container objects tracked by the "
"collector. The collector can run at unexpected times so objects must be "
@@ -88,62 +123,45 @@ msgid ""
"usually near the end of the constructor."
msgstr ""
-#: c-api/gcsupport.rst:66
+#: c-api/gcsupport.rst:86
msgid ""
"Returns non-zero if the object implements the garbage collector protocol, "
"otherwise returns 0."
msgstr ""
-#: c-api/gcsupport.rst:69
+#: c-api/gcsupport.rst:89
msgid ""
"The object cannot be tracked by the garbage collector if this function "
"returns 0."
msgstr ""
-#: c-api/gcsupport.rst:74
+#: c-api/gcsupport.rst:94
msgid ""
"Returns 1 if the object type of *op* implements the GC protocol and *op* is "
"being currently tracked by the garbage collector and 0 otherwise."
msgstr ""
-#: c-api/gcsupport.rst:77
+#: c-api/gcsupport.rst:97
msgid "This is analogous to the Python function :func:`gc.is_tracked`."
msgstr ""
-#: c-api/gcsupport.rst:84
+#: c-api/gcsupport.rst:104
msgid ""
"Returns 1 if the object type of *op* implements the GC protocol and *op* has "
"been already finalized by the garbage collector and 0 otherwise."
msgstr ""
-#: c-api/gcsupport.rst:87
+#: c-api/gcsupport.rst:107
msgid "This is analogous to the Python function :func:`gc.is_finalized`."
msgstr ""
-#: c-api/gcsupport.rst:91
-msgid ""
-"Similarly, the deallocator for the object must conform to a similar pair of "
-"rules:"
-msgstr ""
-
-#: c-api/gcsupport.rst:94
-msgid ""
-"Before fields which refer to other containers are invalidated, :c:func:"
-"`PyObject_GC_UnTrack` must be called."
-msgstr ""
-
-#: c-api/gcsupport.rst:97
-msgid ""
-"The object's memory must be deallocated using :c:func:`PyObject_GC_Del`."
-msgstr ""
-
-#: c-api/gcsupport.rst:102
+#: c-api/gcsupport.rst:114
msgid ""
"Releases memory allocated to an object using :c:func:`PyObject_GC_New` or :c:"
"func:`PyObject_GC_NewVar`."
msgstr ""
-#: c-api/gcsupport.rst:108
+#: c-api/gcsupport.rst:120
msgid ""
"Remove the object *op* from the set of container objects tracked by the "
"collector. Note that :c:func:`PyObject_GC_Track` can be called again on "
@@ -153,19 +171,19 @@ msgid ""
"handler become invalid."
msgstr ""
-#: c-api/gcsupport.rst:117
+#: c-api/gcsupport.rst:129
msgid ""
"The :c:func:`_PyObject_GC_TRACK` and :c:func:`_PyObject_GC_UNTRACK` macros "
"have been removed from the public C API."
msgstr ""
-#: c-api/gcsupport.rst:120
+#: c-api/gcsupport.rst:132
msgid ""
"The :c:member:`~PyTypeObject.tp_traverse` handler accepts a function "
"parameter of this type:"
msgstr ""
-#: c-api/gcsupport.rst:125
+#: c-api/gcsupport.rst:137
msgid ""
"Type of the visitor function passed to the :c:member:`~PyTypeObject."
"tp_traverse` handler. The function should be called with an object to "
@@ -175,13 +193,13 @@ msgid ""
"users will need to write their own visitor functions."
msgstr ""
-#: c-api/gcsupport.rst:132
+#: c-api/gcsupport.rst:144
msgid ""
"The :c:member:`~PyTypeObject.tp_traverse` handler must have the following "
"type:"
msgstr ""
-#: c-api/gcsupport.rst:137
+#: c-api/gcsupport.rst:149
msgid ""
"Traversal function for a container object. Implementations must call the "
"*visit* function for each object directly contained by *self*, with the "
@@ -191,7 +209,7 @@ msgid ""
"returned immediately."
msgstr ""
-#: c-api/gcsupport.rst:144
+#: c-api/gcsupport.rst:156
msgid ""
"To simplify writing :c:member:`~PyTypeObject.tp_traverse` handlers, a :c:"
"func:`Py_VISIT` macro is provided. In order to use this macro, the :c:"
@@ -199,20 +217,20 @@ msgid ""
"exactly *visit* and *arg*:"
msgstr ""
-#: c-api/gcsupport.rst:151
+#: c-api/gcsupport.rst:163
msgid ""
"If *o* is not ``NULL``, call the *visit* callback, with arguments *o* and "
"*arg*. If *visit* returns a non-zero value, then return it. Using this "
"macro, :c:member:`~PyTypeObject.tp_traverse` handlers look like::"
msgstr ""
-#: c-api/gcsupport.rst:164
+#: c-api/gcsupport.rst:176
msgid ""
"The :c:member:`~PyTypeObject.tp_clear` handler must be of the :c:type:"
"`inquiry` type, or ``NULL`` if the object is immutable."
msgstr ""
-#: c-api/gcsupport.rst:170
+#: c-api/gcsupport.rst:182
msgid ""
"Drop references that may have created reference cycles. Immutable objects "
"do not have to define this method since they can never directly create "
diff --git a/c-api/import.po b/c-api/import.po
index 339895db92..985d717701 100644
--- a/c-api/import.po
+++ b/c-api/import.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -311,6 +311,13 @@ msgid ""
"`name` field; failure to provide the sentinel value can result in a memory "
"fault. Returns ``0`` on success or ``-1`` if insufficient memory could be "
"allocated to extend the internal table. In the event of failure, no modules "
-"are added to the internal table. This should be called before :c:func:"
+"are added to the internal table. This must be called before :c:func:"
"`Py_Initialize`."
msgstr ""
+
+#: c-api/import.rst:304
+msgid ""
+"If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` "
+"or :c:func:`PyImport_ExtendInittab` must be called before each Python "
+"initialization."
+msgstr ""
diff --git a/c-api/init.po b/c-api/init.po
index 6025e7dc19..b1f8a4e487 100644
--- a/c-api/init.po
+++ b/c-api/init.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-11-29 18:22+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -472,7 +472,7 @@ msgid ""
"than once."
msgstr ""
-#: c-api/init.rst:305
+#: c-api/init.rst:304
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"_PySys_ClearAuditHooks`` with no arguments."
@@ -626,7 +626,7 @@ msgid ""
"name (set by :c:func:`Py_SetProgramName` above) and some environment "
"variables. The returned string consists of a series of directory names "
"separated by a platform dependent delimiter character. The delimiter "
-"character is ``':'`` on Unix and Mac OS X, ``';'`` on Windows. The returned "
+"character is ``':'`` on Unix and macOS, ``';'`` on Windows. The returned "
"string points into static storage; the caller should not modify its value. "
"The list :data:`sys.path` is initialized with this value on interpreter "
"startup; it can be (and usually is) modified later to change the search path "
@@ -640,8 +640,8 @@ msgid ""
"default search path but uses the one provided instead. This is useful if "
"Python is embedded by an application that has full knowledge of the location "
"of all modules. The path components should be separated by the platform "
-"dependent delimiter character, which is ``':'`` on Unix and Mac OS X, "
-"``';'`` on Windows."
+"dependent delimiter character, which is ``':'`` on Unix and macOS, ``';'`` "
+"on Windows."
msgstr ""
#: c-api/init.rst:475
@@ -673,10 +673,10 @@ msgstr ""
#: c-api/init.rst:500
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 "
-"separated by a period. The returned string points into static storage; the "
-"caller should not modify its value. The value is available to Python code "
-"as :data:`sys.version`."
+"version; the first characters are the major and minor version separated by a "
+"period. The returned string points into static storage; the caller should "
+"not modify its value. The value is available to Python code as :data:`sys."
+"version`."
msgstr ""
#: c-api/init.rst:510
@@ -684,10 +684,10 @@ msgid ""
"Return the platform identifier for the current platform. On Unix, this is "
"formed from the \"official\" name of the operating system, converted to "
"lower case, followed by the major revision number; e.g., for Solaris 2.x, "
-"which is also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, "
-"it is ``'darwin'``. On Windows, it is ``'win'``. The returned string "
-"points into static storage; the caller should not modify its value. The "
-"value is available to Python code as ``sys.platform``."
+"which is also known as SunOS 5.x, the value is ``'sunos5'``. On macOS, it "
+"is ``'darwin'``. On Windows, it is ``'win'``. The returned string points "
+"into static storage; the caller should not modify its value. The value is "
+"available to Python code as ``sys.platform``."
msgstr ""
#: c-api/init.rst:521
@@ -1690,7 +1690,7 @@ msgstr ""
#: c-api/init.rst:1470
msgid ":const:`PyTrace_CALL`"
-msgstr ""
+msgstr ":const:`PyTrace_CALL`"
#: c-api/init.rst:1475 c-api/init.rst:1486
msgid "Always :c:data:`Py_None`."
@@ -1698,7 +1698,7 @@ msgstr ""
#: c-api/init.rst:1472
msgid ":const:`PyTrace_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_EXCEPTION`"
#: c-api/init.rst:1472
msgid "Exception information as returned by :func:`sys.exc_info`."
@@ -1706,11 +1706,11 @@ msgstr ""
#: c-api/init.rst:1475
msgid ":const:`PyTrace_LINE`"
-msgstr ""
+msgstr ":const:`PyTrace_LINE`"
#: c-api/init.rst:1477
msgid ":const:`PyTrace_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_RETURN`"
#: c-api/init.rst:1477
msgid ""
@@ -1719,7 +1719,7 @@ msgstr ""
#: c-api/init.rst:1480
msgid ":const:`PyTrace_C_CALL`"
-msgstr ""
+msgstr ":const:`PyTrace_C_CALL`"
#: c-api/init.rst:1482 c-api/init.rst:1484
msgid "Function object being called."
@@ -1727,15 +1727,15 @@ msgstr ""
#: c-api/init.rst:1482
msgid ":const:`PyTrace_C_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_C_EXCEPTION`"
#: c-api/init.rst:1484
msgid ":const:`PyTrace_C_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_C_RETURN`"
#: c-api/init.rst:1486
msgid ":const:`PyTrace_OPCODE`"
-msgstr ""
+msgstr ":const:`PyTrace_OPCODE`"
#: c-api/init.rst:1491
msgid ""
@@ -1955,7 +1955,7 @@ msgstr ""
#: c-api/init.rst:1691
msgid ""
-"A freed key becomes a dangling pointer, you should reset the key to `NULL`."
+"A freed key becomes a dangling pointer. You should reset the key to `NULL`."
msgstr ""
#: c-api/init.rst:1696
diff --git a/c-api/init_config.po b/c-api/init_config.po
index a54b179975..c5c1b860cc 100644
--- a/c-api/init_config.po
+++ b/c-api/init_config.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2019-09-04 11:42+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -976,41 +976,43 @@ msgstr ""
#: c-api/init_config.rst:733
msgid ""
-"If ``PyImport_FrozenModules``, ``PyImport_AppendInittab()`` or "
-"``PyImport_ExtendInittab()`` are used, they must be set or called after "
-"Python preinitialization and before the Python initialization."
+"If :c:func:`PyImport_FrozenModules`, :c:func:`PyImport_AppendInittab` or :c:"
+"func:`PyImport_ExtendInittab` are used, they must be set or called after "
+"Python preinitialization and before the Python initialization. If Python is "
+"initialized multiple times, :c:func:`PyImport_AppendInittab` or :c:func:"
+"`PyImport_ExtendInittab` must be called before each Python initialization."
msgstr ""
-#: c-api/init_config.rst:737
+#: c-api/init_config.rst:740
msgid "Example setting the program name::"
msgstr ""
-#: c-api/init_config.rst:765
+#: c-api/init_config.rst:768
msgid ""
"More complete example modifying the default configuration, read the "
"configuration, and then override some parameters::"
msgstr ""
-#: c-api/init_config.rst:816
+#: c-api/init_config.rst:819
msgid "Isolated Configuration"
msgstr ""
-#: c-api/init_config.rst:818
+#: c-api/init_config.rst:821
msgid ""
":c:func:`PyPreConfig_InitIsolatedConfig` and :c:func:"
"`PyConfig_InitIsolatedConfig` functions create a configuration to isolate "
"Python from the system. For example, to embed Python into an application."
msgstr ""
-#: c-api/init_config.rst:823
+#: c-api/init_config.rst:826
msgid ""
-"This configuration ignores global configuration variables, environments "
+"This configuration ignores global configuration variables, environment "
"variables, command line arguments (:c:member:`PyConfig.argv` is not parsed) "
"and user site directory. The C standard streams (ex: ``stdout``) and the "
"LC_CTYPE locale are left unchanged. Signal handlers are not installed."
msgstr ""
-#: c-api/init_config.rst:828
+#: c-api/init_config.rst:831
msgid ""
"Configuration files are still used with this configuration. Set the :ref:"
"`Path Configuration ` (\"output fields\") to ignore these "
@@ -1018,122 +1020,122 @@ msgid ""
"configuration."
msgstr ""
-#: c-api/init_config.rst:837
+#: c-api/init_config.rst:840
msgid "Python Configuration"
msgstr ""
-#: c-api/init_config.rst:839
+#: c-api/init_config.rst:842
msgid ""
":c:func:`PyPreConfig_InitPythonConfig` and :c:func:"
"`PyConfig_InitPythonConfig` functions create a configuration to build a "
"customized Python which behaves as the regular Python."
msgstr ""
-#: c-api/init_config.rst:843
+#: c-api/init_config.rst:846
msgid ""
"Environments variables and command line arguments are used to configure "
"Python, whereas global configuration variables are ignored."
msgstr ""
-#: c-api/init_config.rst:846
+#: c-api/init_config.rst:849
msgid ""
"This function enables C locale coercion (:pep:`538`) and UTF-8 Mode (:pep:"
"`540`) depending on the LC_CTYPE locale, :envvar:`PYTHONUTF8` and :envvar:"
"`PYTHONCOERCECLOCALE` environment variables."
msgstr ""
-#: c-api/init_config.rst:850
+#: c-api/init_config.rst:853
msgid "Example of customized Python always running in isolated mode::"
msgstr ""
-#: c-api/init_config.rst:889
+#: c-api/init_config.rst:892
msgid "Path Configuration"
msgstr ""
-#: c-api/init_config.rst:891
+#: c-api/init_config.rst:894
msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:"
msgstr ""
-#: c-api/init_config.rst:893
+#: c-api/init_config.rst:896
msgid "Path configuration inputs:"
msgstr ""
-#: c-api/init_config.rst:895
+#: c-api/init_config.rst:898
msgid ":c:member:`PyConfig.home`"
msgstr ""
-#: c-api/init_config.rst:896
+#: c-api/init_config.rst:899
msgid ":c:member:`PyConfig.platlibdir`"
msgstr ""
-#: c-api/init_config.rst:897
+#: c-api/init_config.rst:900
msgid ":c:member:`PyConfig.pathconfig_warnings`"
msgstr ""
-#: c-api/init_config.rst:898
+#: c-api/init_config.rst:901
msgid ":c:member:`PyConfig.program_name`"
msgstr ""
-#: c-api/init_config.rst:899
+#: c-api/init_config.rst:902
msgid ":c:member:`PyConfig.pythonpath_env`"
msgstr ""
-#: c-api/init_config.rst:900
+#: c-api/init_config.rst:903
msgid "current working directory: to get absolute paths"
msgstr ""
-#: c-api/init_config.rst:901
+#: c-api/init_config.rst:904
msgid ""
"``PATH`` environment variable to get the program full path (from :c:member:"
"`PyConfig.program_name`)"
msgstr ""
-#: c-api/init_config.rst:903
+#: c-api/init_config.rst:906
msgid "``__PYVENV_LAUNCHER__`` environment variable"
msgstr ""
-#: c-api/init_config.rst:904
+#: c-api/init_config.rst:907
msgid ""
-"(Windows only) Application paths in the registry under \"Software\\Python"
-"\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE "
-"(where X.Y is the Python version)."
+"(Windows only) Application paths in the registry under "
+"\"Software\\Python\\PythonCore\\X.Y\\PythonPath\" of HKEY_CURRENT_USER and "
+"HKEY_LOCAL_MACHINE (where X.Y is the Python version)."
msgstr ""
-#: c-api/init_config.rst:908
+#: c-api/init_config.rst:911
msgid "Path configuration output fields:"
msgstr ""
-#: c-api/init_config.rst:910
+#: c-api/init_config.rst:913
msgid ":c:member:`PyConfig.base_exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:911
+#: c-api/init_config.rst:914
msgid ":c:member:`PyConfig.base_executable`"
msgstr ""
-#: c-api/init_config.rst:912
+#: c-api/init_config.rst:915
msgid ":c:member:`PyConfig.base_prefix`"
msgstr ""
-#: c-api/init_config.rst:913
+#: c-api/init_config.rst:916
msgid ":c:member:`PyConfig.exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:914
+#: c-api/init_config.rst:917
msgid ":c:member:`PyConfig.executable`"
msgstr ""
-#: c-api/init_config.rst:915
+#: c-api/init_config.rst:918
msgid ""
":c:member:`PyConfig.module_search_paths_set`, :c:member:`PyConfig."
"module_search_paths`"
msgstr ""
-#: c-api/init_config.rst:917
+#: c-api/init_config.rst:920
msgid ":c:member:`PyConfig.prefix`"
msgstr ""
-#: c-api/init_config.rst:919
+#: c-api/init_config.rst:922
msgid ""
"If at least one \"output field\" is not set, Python calculates the path "
"configuration to fill unset fields. If :c:member:`~PyConfig."
@@ -1142,7 +1144,7 @@ msgid ""
"module_search_paths_set` is set to 1."
msgstr ""
-#: c-api/init_config.rst:925
+#: c-api/init_config.rst:928
msgid ""
"It is possible to completely ignore the function calculating the default "
"path configuration by setting explicitly all path configuration output "
@@ -1152,52 +1154,52 @@ msgid ""
"well."
msgstr ""
-#: c-api/init_config.rst:932
+#: c-api/init_config.rst:935
msgid ""
"Set :c:member:`~PyConfig.pathconfig_warnings` to 0 to suppress warnings when "
"calculating the path configuration (Unix only, Windows does not log any "
"warning)."
msgstr ""
-#: c-api/init_config.rst:935
+#: c-api/init_config.rst:938
msgid ""
"If :c:member:`~PyConfig.base_prefix` or :c:member:`~PyConfig."
"base_exec_prefix` fields are not set, they inherit their value from :c:"
"member:`~PyConfig.prefix` and :c:member:`~PyConfig.exec_prefix` respectively."
msgstr ""
-#: c-api/init_config.rst:939
+#: c-api/init_config.rst:942
msgid ":c:func:`Py_RunMain` and :c:func:`Py_Main` modify :data:`sys.path`:"
msgstr ""
-#: c-api/init_config.rst:941
+#: c-api/init_config.rst:944
msgid ""
"If :c:member:`~PyConfig.run_filename` is set and is a directory which "
"contains a ``__main__.py`` script, prepend :c:member:`~PyConfig."
"run_filename` to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:944
+#: c-api/init_config.rst:947
msgid "If :c:member:`~PyConfig.isolated` is zero:"
msgstr ""
-#: c-api/init_config.rst:946
+#: c-api/init_config.rst:949
msgid ""
"If :c:member:`~PyConfig.run_module` is set, prepend the current directory "
"to :data:`sys.path`. Do nothing if the current directory cannot be read."
msgstr ""
-#: c-api/init_config.rst:948
+#: c-api/init_config.rst:951
msgid ""
"If :c:member:`~PyConfig.run_filename` is set, prepend the directory of the "
"filename to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:950
+#: c-api/init_config.rst:953
msgid "Otherwise, prepend an empty string to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:952
+#: c-api/init_config.rst:955
msgid ""
"If :c:member:`~PyConfig.site_import` is non-zero, :data:`sys.path` can be "
"modified by the :mod:`site` module. If :c:member:`~PyConfig."
@@ -1206,152 +1208,152 @@ msgid ""
"data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:958
+#: c-api/init_config.rst:961
msgid "The following configuration files are used by the path configuration:"
msgstr ""
-#: c-api/init_config.rst:960
+#: c-api/init_config.rst:963
msgid "``pyvenv.cfg``"
msgstr ""
-#: c-api/init_config.rst:961
+#: c-api/init_config.rst:964
msgid "``python._pth`` (Windows only)"
msgstr ""
-#: c-api/init_config.rst:962
+#: c-api/init_config.rst:965
msgid "``pybuilddir.txt`` (Unix only)"
msgstr ""
-#: c-api/init_config.rst:964
+#: c-api/init_config.rst:967
msgid ""
"The ``__PYVENV_LAUNCHER__`` environment variable is used to set :c:member:"
"`PyConfig.base_executable`"
msgstr ""
-#: c-api/init_config.rst:969
+#: c-api/init_config.rst:972
msgid "Py_RunMain()"
msgstr ""
-#: c-api/init_config.rst:973
+#: c-api/init_config.rst:976
msgid ""
"Execute the command (:c:member:`PyConfig.run_command`), the script (:c:"
"member:`PyConfig.run_filename`) or the module (:c:member:`PyConfig."
"run_module`) specified on the command line or in the configuration."
msgstr ""
-#: c-api/init_config.rst:978
+#: c-api/init_config.rst:981
msgid "By default and when if :option:`-i` option is used, run the REPL."
msgstr ""
-#: c-api/init_config.rst:980
+#: c-api/init_config.rst:983
msgid ""
"Finally, finalizes Python and returns an exit status that can be passed to "
"the ``exit()`` function."
msgstr ""
-#: c-api/init_config.rst:983
+#: c-api/init_config.rst:986
msgid ""
"See :ref:`Python Configuration ` for an example of "
"customized Python always running in isolated mode using :c:func:`Py_RunMain`."
msgstr ""
-#: c-api/init_config.rst:989
+#: c-api/init_config.rst:992
msgid "Py_GetArgcArgv()"
msgstr ""
-#: c-api/init_config.rst:993
+#: c-api/init_config.rst:996
msgid "Get the original command line arguments, before Python modified them."
msgstr ""
-#: c-api/init_config.rst:997
+#: c-api/init_config.rst:1000
msgid "Multi-Phase Initialization Private Provisional API"
msgstr ""
-#: c-api/init_config.rst:999
+#: c-api/init_config.rst:1002
msgid ""
"This section is a private provisional API introducing multi-phase "
-"initialization, the core feature of the :pep:`432`:"
+"initialization, the core feature of :pep:`432`:"
msgstr ""
-#: c-api/init_config.rst:1002
+#: c-api/init_config.rst:1005
msgid "\"Core\" initialization phase, \"bare minimum Python\":"
msgstr ""
-#: c-api/init_config.rst:1004
+#: c-api/init_config.rst:1007
msgid "Builtin types;"
msgstr ""
-#: c-api/init_config.rst:1005
+#: c-api/init_config.rst:1008
msgid "Builtin exceptions;"
msgstr ""
-#: c-api/init_config.rst:1006
+#: c-api/init_config.rst:1009
msgid "Builtin and frozen modules;"
msgstr ""
-#: c-api/init_config.rst:1007
+#: c-api/init_config.rst:1010
msgid ""
"The :mod:`sys` module is only partially initialized (ex: :data:`sys.path` "
"doesn't exist yet)."
msgstr ""
-#: c-api/init_config.rst:1010
+#: c-api/init_config.rst:1013
msgid "\"Main\" initialization phase, Python is fully initialized:"
msgstr ""
-#: c-api/init_config.rst:1012
+#: c-api/init_config.rst:1015
msgid "Install and configure :mod:`importlib`;"
msgstr ""
-#: c-api/init_config.rst:1013
+#: c-api/init_config.rst:1016
msgid "Apply the :ref:`Path Configuration `;"
msgstr ""
-#: c-api/init_config.rst:1014
+#: c-api/init_config.rst:1017
msgid "Install signal handlers;"
msgstr ""
-#: c-api/init_config.rst:1015
+#: c-api/init_config.rst:1018
msgid ""
"Finish :mod:`sys` module initialization (ex: create :data:`sys.stdout` and :"
"data:`sys.path`);"
msgstr ""
-#: c-api/init_config.rst:1017
+#: c-api/init_config.rst:1020
msgid ""
"Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;"
msgstr ""
-#: c-api/init_config.rst:1018
+#: c-api/init_config.rst:1021
msgid "Import the :mod:`site` module;"
msgstr ""
-#: c-api/init_config.rst:1019
+#: c-api/init_config.rst:1022
msgid "etc."
msgstr ""
-#: c-api/init_config.rst:1021
+#: c-api/init_config.rst:1024
msgid "Private provisional API:"
msgstr ""
-#: c-api/init_config.rst:1023
+#: c-api/init_config.rst:1026
msgid ""
":c:member:`PyConfig._init_main`: if set to 0, :c:func:"
"`Py_InitializeFromConfig` stops at the \"Core\" initialization phase."
msgstr ""
-#: c-api/init_config.rst:1025
+#: c-api/init_config.rst:1028
msgid ""
":c:member:`PyConfig._isolated_interpreter`: if non-zero, disallow threads, "
"subprocesses and fork."
msgstr ""
-#: c-api/init_config.rst:1030
+#: c-api/init_config.rst:1033
msgid ""
"Move to the \"Main\" initialization phase, finish the Python initialization."
msgstr ""
-#: c-api/init_config.rst:1032
+#: c-api/init_config.rst:1035
msgid ""
"No module is imported during the \"Core\" phase and the ``importlib`` module "
"is not configured: the :ref:`Path Configuration ` is only "
@@ -1360,14 +1362,14 @@ msgid ""
"maybe install a custom :data:`sys.meta_path` importer or an import hook, etc."
msgstr ""
-#: c-api/init_config.rst:1038
+#: c-api/init_config.rst:1041
msgid ""
"It may become possible to calculatin the :ref:`Path Configuration ` in Python, after the Core phase and before the Main phase, which is "
"one of the :pep:`432` motivation."
msgstr ""
-#: c-api/init_config.rst:1042
+#: c-api/init_config.rst:1045
msgid ""
"The \"Core\" phase is not properly defined: what should be and what should "
"not be available at this phase is not specified yet. The API is marked as "
@@ -1375,7 +1377,7 @@ msgid ""
"until a proper public API is designed."
msgstr ""
-#: c-api/init_config.rst:1047
+#: c-api/init_config.rst:1050
msgid ""
"Example running Python code between \"Core\" and \"Main\" initialization "
"phases::"
diff --git a/c-api/intro.po b/c-api/intro.po
index c33437a1b3..314dec668f 100644
--- a/c-api/intro.po
+++ b/c-api/intro.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -297,7 +297,7 @@ msgstr ""
#: c-api/intro.rst:253
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
#: c-api/intro.rst:255
msgid ""
@@ -499,11 +499,19 @@ msgid ""
"that use them."
msgstr ""
-#: c-api/intro.rst:509
+#: c-api/intro.rst:507
+msgid ""
+"A signed integral type such that ``sizeof(Py_ssize_t) == sizeof(size_t)``. "
+"C99 doesn't define such a thing directly (size_t is an unsigned integral "
+"type). See :pep:`353` for details. ``PY_SSIZE_T_MAX`` is the largest "
+"positive value of type :c:type:`Py_ssize_t`."
+msgstr ""
+
+#: c-api/intro.rst:516
msgid "Exceptions"
msgstr "Exceptions"
-#: c-api/intro.rst:511
+#: c-api/intro.rst:518
msgid ""
"The Python programmer only needs to deal with exceptions if specific error "
"handling is required; unhandled exceptions are automatically propagated to "
@@ -512,7 +520,7 @@ msgid ""
"stack traceback."
msgstr ""
-#: c-api/intro.rst:519
+#: c-api/intro.rst:526
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 "
@@ -527,7 +535,7 @@ msgid ""
"explicitly documented."
msgstr ""
-#: c-api/intro.rst:534
+#: c-api/intro.rst:541
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 "
@@ -540,7 +548,7 @@ msgid ""
"clears the exception state."
msgstr ""
-#: c-api/intro.rst:544
+#: c-api/intro.rst:551
msgid ""
"The full exception state consists of three objects (all of which can be "
"``NULL``): the exception type, the corresponding exception value, and the "
@@ -553,7 +561,7 @@ msgid ""
"``sys.exc_info()`` and friends."
msgstr ""
-#: c-api/intro.rst:556
+#: c-api/intro.rst:563
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."
@@ -567,7 +575,7 @@ msgid ""
"referenced by the stack frames in the traceback."
msgstr ""
-#: c-api/intro.rst:567
+#: c-api/intro.rst:574
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 "
@@ -578,7 +586,7 @@ msgid ""
"of the error."
msgstr ""
-#: c-api/intro.rst:576
+#: c-api/intro.rst:583
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 "
@@ -587,11 +595,11 @@ msgid ""
"why you like Python, we show the equivalent Python code::"
msgstr ""
-#: c-api/intro.rst:591
+#: c-api/intro.rst:598
msgid "Here is the corresponding C code, in all its glory::"
msgstr ""
-#: c-api/intro.rst:643
+#: c-api/intro.rst:650
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:"
@@ -604,11 +612,11 @@ msgid ""
"success after the final call made is successful."
msgstr ""
-#: c-api/intro.rst:657
+#: c-api/intro.rst:664
msgid "Embedding Python"
msgstr "Embarquer Python"
-#: c-api/intro.rst:659
+#: c-api/intro.rst:666
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 "
@@ -616,7 +624,7 @@ msgid ""
"the interpreter can only be used after the interpreter has been initialized."
msgstr ""
-#: c-api/intro.rst:672
+#: c-api/intro.rst:679
msgid ""
"The basic initialization function is :c:func:`Py_Initialize`. This "
"initializes the table of loaded modules, and creates the fundamental "
@@ -624,7 +632,7 @@ msgid ""
"initializes the module search path (``sys.path``)."
msgstr ""
-#: c-api/intro.rst:679
+#: c-api/intro.rst:686
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 "
@@ -632,7 +640,7 @@ msgid ""
"argv, updatepath)`` after the call to :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/intro.rst:684
+#: c-api/intro.rst:691
msgid ""
"On most systems (in particular, on Unix and Windows, although the details "
"are slightly different), :c:func:`Py_Initialize` calculates the module "
@@ -644,7 +652,7 @@ msgid ""
"on the shell command search path (the environment variable :envvar:`PATH`)."
msgstr ""
-#: c-api/intro.rst:693
+#: c-api/intro.rst:700
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/"
@@ -655,7 +663,7 @@ msgid ""
"in front of the standard path by setting :envvar:`PYTHONPATH`."
msgstr ""
-#: c-api/intro.rst:708
+#: c-api/intro.rst:715
msgid ""
"The embedding application can steer the search by calling "
"``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note "
@@ -666,7 +674,7 @@ msgid ""
"func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)."
msgstr ""
-#: c-api/intro.rst:718
+#: c-api/intro.rst:725
msgid ""
"Sometimes, it is desirable to \"uninitialize\" Python. For instance, the "
"application may want to start over (make another call to :c:func:"
@@ -680,18 +688,18 @@ msgid ""
"released."
msgstr ""
-#: c-api/intro.rst:732
+#: c-api/intro.rst:739
msgid "Debugging Builds"
msgstr ""
-#: c-api/intro.rst:734
+#: c-api/intro.rst:741
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 ""
-#: c-api/intro.rst:738
+#: c-api/intro.rst:745
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 "
@@ -701,7 +709,7 @@ msgid ""
"section."
msgstr ""
-#: c-api/intro.rst:744
+#: c-api/intro.rst:751
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:"
@@ -711,61 +719,61 @@ msgid ""
"enabled in the Unix build, compiler optimization is disabled."
msgstr ""
-#: c-api/intro.rst:751
+#: c-api/intro.rst:758
msgid ""
"In addition to the reference count debugging described below, the following "
"extra checks are performed:"
msgstr ""
-#: c-api/intro.rst:754
+#: c-api/intro.rst:761
msgid "Extra checks are added to the object allocator."
msgstr ""
-#: c-api/intro.rst:756
+#: c-api/intro.rst:763
msgid "Extra checks are added to the parser and compiler."
msgstr ""
-#: c-api/intro.rst:758
+#: c-api/intro.rst:765
msgid ""
"Downcasts from wide types to narrow types are checked for loss of "
"information."
msgstr ""
-#: c-api/intro.rst:760
+#: c-api/intro.rst:767
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 ""
-#: c-api/intro.rst:763
+#: c-api/intro.rst:770
msgid "Sanity checks of the input arguments are added to frame creation."
msgstr ""
-#: c-api/intro.rst:765
+#: c-api/intro.rst:772
msgid ""
"The storage for ints is initialized with a known invalid pattern to catch "
"reference to uninitialized digits."
msgstr ""
-#: c-api/intro.rst:768
+#: c-api/intro.rst:775
msgid ""
"Low-level tracing and extra exception checking are added to the runtime "
"virtual machine."
msgstr ""
-#: c-api/intro.rst:771
+#: c-api/intro.rst:778
msgid "Extra checks are added to the memory arena implementation."
msgstr ""
-#: c-api/intro.rst:773
+#: c-api/intro.rst:780
msgid "Extra debugging is added to the thread module."
msgstr ""
-#: c-api/intro.rst:775
+#: c-api/intro.rst:782
msgid "There may be additional checks not mentioned here."
msgstr ""
-#: c-api/intro.rst:777
+#: c-api/intro.rst:784
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 "
@@ -775,7 +783,7 @@ msgid ""
"macro:`Py_DEBUG`."
msgstr ""
-#: c-api/intro.rst:783
+#: c-api/intro.rst:790
msgid ""
"Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source "
"distribution for more detailed information."
diff --git a/c-api/long.po b/c-api/long.po
index 6d9368fb4c..488441f14b 100644
--- a/c-api/long.po
+++ b/c-api/long.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -72,7 +72,7 @@ msgstr ""
#: c-api/long.rst:43
msgid ""
"The current implementation keeps an array of integer objects for all "
-"integers between ``-5`` and ``256``, when you create an int in that range "
+"integers between ``-5`` and ``256``. When you create an int in that range "
"you actually just get back a reference to the existing object."
msgstr ""
diff --git a/c-api/mapping.po b/c-api/mapping.po
index 4f1d3a2386..ba6a54e2c5 100644
--- a/c-api/mapping.po
+++ b/c-api/mapping.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2021-01-28 14:58+0100\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
@@ -32,11 +32,13 @@ msgstr ""
# → pas correct en VO !
# - "This function always succeeds." équivaut-il à "jamais d'erreur" ?
#: c-api/mapping.rst:14
+#, fuzzy
msgid ""
-"Return ``1`` if the object provides mapping protocol or supports slicing, "
-"and ``0`` otherwise. Note that it returns ``1`` for Python classes with a :"
-"meth:`__getitem__` method since in general case it is impossible to "
-"determine what type of keys it supports. This function always succeeds."
+"Return ``1`` if the object provides the mapping protocol or supports "
+"slicing, and ``0`` otherwise. Note that it returns ``1`` for Python classes "
+"with a :meth:`__getitem__` method, since in general it is impossible to "
+"determine what type of keys the class supports. This function always "
+"succeeds."
msgstr ""
"Renvoie ``1`` si l'objet prend en charge le protocole de correspondance ou "
"le découpage en tranches et ``0`` sinon. Notez qu'elle renvoie ``1`` pour "
diff --git a/c-api/memory.po b/c-api/memory.po
index 146a13f52b..d336ca0f2a 100644
--- a/c-api/memory.po
+++ b/c-api/memory.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -478,8 +478,8 @@ msgstr ""
#: c-api/memory.rst:364
msgid ""
-"Structure used to describe a memory block allocator. The structure has four "
-"fields:"
+"Structure used to describe a memory block allocator. The structure has the "
+"following fields:"
msgstr ""
#: c-api/memory.rst:513
@@ -750,8 +750,9 @@ msgid "allocate an arena of size bytes"
msgstr ""
#: 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)``"
+#, fuzzy
+msgid "``void free(void *ctx, void *ptr, size_t size)``"
+msgstr "``void free(void *ctx, void *ptr)``"
#: c-api/memory.rst:519
msgid "free an arena"
@@ -830,3 +831,6 @@ msgid ""
"These will be explained in the next chapter on defining and implementing new "
"object types in C."
msgstr ""
+
+#~ msgid "``void free(void *ctx, size_t size, void *ptr)``"
+#~ msgstr "``void free(void *ctx, size_t size, void *ptr)``"
diff --git a/c-api/method.po b/c-api/method.po
index 4519cfcf4d..583d3ea249 100644
--- a/c-api/method.po
+++ b/c-api/method.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -40,7 +40,7 @@ msgstr ""
#: c-api/method.rst:30
msgid ""
-"Return a new instance method object, with *func* being any callable object "
+"Return a new instance method object, with *func* being any callable object. "
"*func* is the function that will be called when the instance method is "
"called."
msgstr ""
diff --git a/c-api/module.po b/c-api/module.po
index fd4240f869..653b0fb10b 100644
--- a/c-api/module.po
+++ b/c-api/module.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -213,7 +213,7 @@ msgid ""
"``NULL`` if not needed."
msgstr ""
-#: c-api/module.rst:217 c-api/module.rst:232
+#: c-api/module.rst:217 c-api/module.rst:238
msgid ""
"This function is not called if the module state was requested but is not "
"allocated yet. This is the case immediately after the module is created and "
@@ -223,7 +223,7 @@ msgid ""
"``NULL``."
msgstr ""
-#: c-api/module.rst:224 c-api/module.rst:239
+#: c-api/module.rst:230 c-api/module.rst:245
msgid "No longer called before the module state is allocated."
msgstr ""
@@ -233,55 +233,64 @@ msgid ""
"``NULL`` if not needed."
msgstr ""
-#: c-api/module.rst:229
+#: c-api/module.rst:224
+msgid ""
+"Like :c:member:`PyTypeObject.tp_clear`, this function is not *always* called "
+"before a module is deallocated. For example, when reference counting is "
+"enough to determine that an object is no longer used, the cyclic garbage "
+"collector is not involved and :c:member:`~PyModuleDef.m_free` is called "
+"directly."
+msgstr ""
+
+#: c-api/module.rst:235
msgid ""
"A function to call during deallocation of the module object, or ``NULL`` if "
"not needed."
msgstr ""
-#: c-api/module.rst:243
+#: c-api/module.rst:249
msgid "Single-phase initialization"
msgstr ""
-#: c-api/module.rst:245
+#: c-api/module.rst:251
msgid ""
"The module initialization function may create and return the module object "
"directly. This is referred to as \"single-phase initialization\", and uses "
"one of the following two module creation functions:"
msgstr ""
-#: c-api/module.rst:251
+#: c-api/module.rst:257
msgid ""
"Create a new module object, given the definition in *def*. This behaves "
"like :c:func:`PyModule_Create2` with *module_api_version* set to :const:"
"`PYTHON_API_VERSION`."
msgstr ""
-#: c-api/module.rst:258
+#: c-api/module.rst:264
msgid ""
"Create a new module object, given the definition in *def*, assuming the API "
"version *module_api_version*. If that version does not match the version of "
"the running interpreter, a :exc:`RuntimeWarning` is emitted."
msgstr ""
-#: c-api/module.rst:264
+#: c-api/module.rst:270
msgid ""
"Most uses of this function should be using :c:func:`PyModule_Create` "
"instead; only use this if you are sure you need it."
msgstr ""
-#: c-api/module.rst:267
+#: c-api/module.rst:273
msgid ""
"Before it is returned from in the initialization function, the resulting "
"module object is typically populated using functions like :c:func:"
"`PyModule_AddObject`."
msgstr ""
-#: c-api/module.rst:273
+#: c-api/module.rst:279
msgid "Multi-phase initialization"
msgstr ""
-#: c-api/module.rst:275
+#: c-api/module.rst:281
msgid ""
"An alternate way to specify extensions is to request \"multi-phase "
"initialization\". Extension modules created this way behave more like Python "
@@ -291,7 +300,7 @@ msgid ""
"methods of classes."
msgstr ""
-#: c-api/module.rst:282
+#: c-api/module.rst:288
msgid ""
"Unlike modules created using single-phase initialization, these modules are "
"not singletons: if the *sys.modules* entry is removed and the module is re-"
@@ -304,14 +313,14 @@ msgid ""
"or individual classes created with :c:func:`PyType_FromSpec`)."
msgstr ""
-#: c-api/module.rst:292
+#: c-api/module.rst:298
msgid ""
"All modules created using multi-phase initialization are expected to "
"support :ref:`sub-interpreters `. Making sure "
"multiple modules are independent is typically enough to achieve this."
msgstr ""
-#: c-api/module.rst:296
+#: c-api/module.rst:302
msgid ""
"To request multi-phase initialization, the initialization function "
"(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty :"
@@ -319,65 +328,65 @@ msgid ""
"instance must be initialized with the following function:"
msgstr ""
-#: c-api/module.rst:303
+#: c-api/module.rst:309
msgid ""
"Ensures a module definition is a properly initialized Python object that "
"correctly reports its type and reference count."
msgstr ""
-#: c-api/module.rst:306
+#: c-api/module.rst:312
msgid "Returns *def* cast to ``PyObject*``, or ``NULL`` if an error occurred."
msgstr ""
-#: c-api/module.rst:310
+#: c-api/module.rst:316
msgid ""
"The *m_slots* member of the module definition must point to an array of "
"``PyModuleDef_Slot`` structures:"
msgstr ""
-#: c-api/module.rst:317
+#: c-api/module.rst:323
msgid "A slot ID, chosen from the available values explained below."
msgstr ""
-#: c-api/module.rst:321
+#: c-api/module.rst:327
msgid "Value of the slot, whose meaning depends on the slot ID."
msgstr ""
-#: c-api/module.rst:325
+#: c-api/module.rst:331
msgid "The *m_slots* array must be terminated by a slot with id 0."
msgstr ""
-#: c-api/module.rst:327
+#: c-api/module.rst:333
msgid "The available slot types are:"
msgstr ""
-#: c-api/module.rst:331
+#: c-api/module.rst:337
msgid ""
"Specifies a function that is called to create the module object itself. The "
"*value* pointer of this slot must point to a function of the signature:"
msgstr ""
-#: c-api/module.rst:336
+#: c-api/module.rst:342
msgid ""
"The function receives a :py:class:`~importlib.machinery.ModuleSpec` "
"instance, as defined in :PEP:`451`, and the module definition. It should "
"return a new module object, or set an error and return ``NULL``."
msgstr ""
-#: c-api/module.rst:341
+#: c-api/module.rst:347
msgid ""
"This function should be kept minimal. In particular, it should not call "
"arbitrary Python code, as trying to import the same module again may result "
"in an infinite loop."
msgstr ""
-#: c-api/module.rst:345
+#: c-api/module.rst:351
msgid ""
"Multiple ``Py_mod_create`` slots may not be specified in one module "
"definition."
msgstr ""
-#: c-api/module.rst:348
+#: c-api/module.rst:354
msgid ""
"If ``Py_mod_create`` is not specified, the import machinery will create a "
"normal module object using :c:func:`PyModule_New`. The name is taken from "
@@ -386,7 +395,7 @@ msgid ""
"through symlinks, all while sharing a single module definition."
msgstr ""
-#: c-api/module.rst:354
+#: c-api/module.rst:360
msgid ""
"There is no requirement for the returned object to be an instance of :c:type:"
"`PyModule_Type`. Any type can be used, as long as it supports setting and "
@@ -396,7 +405,7 @@ msgid ""
"``Py_mod_create``."
msgstr ""
-#: c-api/module.rst:363
+#: c-api/module.rst:369
msgid ""
"Specifies a function that is called to *execute* the module. This is "
"equivalent to executing the code of a Python module: typically, this "
@@ -404,21 +413,21 @@ msgid ""
"function is:"
msgstr ""
-#: c-api/module.rst:370
+#: c-api/module.rst:376
msgid ""
"If multiple ``Py_mod_exec`` slots are specified, they are processed in the "
"order they appear in the *m_slots* array."
msgstr ""
-#: c-api/module.rst:373
+#: c-api/module.rst:379
msgid "See :PEP:`489` for more details on multi-phase initialization."
msgstr ""
-#: c-api/module.rst:376
+#: c-api/module.rst:382
msgid "Low-level module creation functions"
msgstr ""
-#: c-api/module.rst:378
+#: c-api/module.rst:384
msgid ""
"The following functions are called under the hood when using multi-phase "
"initialization. They can be used directly, for example when creating module "
@@ -426,14 +435,14 @@ msgid ""
"``PyModule_ExecDef`` must be called to fully initialize a module."
msgstr ""
-#: c-api/module.rst:385
+#: c-api/module.rst:391
msgid ""
"Create a new module object, given the definition in *module* and the "
"ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2` "
"with *module_api_version* set to :const:`PYTHON_API_VERSION`."
msgstr ""
-#: c-api/module.rst:393
+#: c-api/module.rst:399
msgid ""
"Create a new module object, given the definition in *module* and the "
"ModuleSpec *spec*, assuming the API version *module_api_version*. If that "
@@ -441,24 +450,24 @@ msgid ""
"`RuntimeWarning` is emitted."
msgstr ""
-#: c-api/module.rst:400
+#: c-api/module.rst:406
msgid ""
"Most uses of this function should be using :c:func:`PyModule_FromDefAndSpec` "
"instead; only use this if you are sure you need it."
msgstr ""
-#: c-api/module.rst:407
+#: c-api/module.rst:413
msgid "Process any execution slots (:c:data:`Py_mod_exec`) given in *def*."
msgstr ""
-#: c-api/module.rst:413
+#: c-api/module.rst:419
msgid ""
"Set the docstring for *module* to *docstring*. This function is called "
"automatically when creating a module from ``PyModuleDef``, using either "
"``PyModule_Create`` or ``PyModule_FromDefAndSpec``."
msgstr ""
-#: c-api/module.rst:422
+#: c-api/module.rst:428
msgid ""
"Add the functions from the ``NULL`` terminated *functions* array to "
"*module*. Refer to the :c:type:`PyMethodDef` documentation for details on "
@@ -470,11 +479,11 @@ msgid ""
"``PyModule_FromDefAndSpec``."
msgstr ""
-#: c-api/module.rst:434
+#: c-api/module.rst:440
msgid "Support functions"
msgstr ""
-#: c-api/module.rst:436
+#: c-api/module.rst:442
msgid ""
"The module initialization function (if using single phase initialization) or "
"a function called from a module execution slot (if using multi-phase "
@@ -482,40 +491,40 @@ msgid ""
"module state:"
msgstr ""
-#: c-api/module.rst:443
+#: c-api/module.rst:449
msgid ""
"Add an object to *module* as *name*. This is a convenience function which "
"can be used from the module's initialization function. This steals a "
"reference to *value* on success. Return ``-1`` on error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:449
+#: c-api/module.rst:455
msgid ""
"Unlike other functions that steal references, ``PyModule_AddObject()`` only "
"decrements the reference count of *value* **on success**."
msgstr ""
-#: c-api/module.rst:452
+#: c-api/module.rst:458
msgid ""
"This means that its return value must be checked, and calling code must :c:"
"func:`Py_DECREF` *value* manually on error. Example usage::"
msgstr ""
-#: c-api/module.rst:464
+#: c-api/module.rst:470
msgid ""
"Add an integer constant to *module* as *name*. This convenience function "
"can be used from the module's initialization function. Return ``-1`` on "
"error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:471
+#: c-api/module.rst:477
msgid ""
"Add a string constant to *module* as *name*. This convenience function can "
"be used from the module's initialization function. The string *value* must "
"be ``NULL``-terminated. Return ``-1`` on error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:478
+#: c-api/module.rst:484
msgid ""
"Add an int constant to *module*. The name and the value are taken from "
"*macro*. For example ``PyModule_AddIntMacro(module, AF_INET)`` adds the int "
@@ -523,11 +532,11 @@ msgid ""
"error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:486
+#: c-api/module.rst:492
msgid "Add a string constant to *module*."
msgstr ""
-#: c-api/module.rst:490
+#: c-api/module.rst:496
msgid ""
"Add a type object to *module*. The type object is finalized by calling "
"internally :c:func:`PyType_Ready`. The name of the type object is taken from "
@@ -535,25 +544,25 @@ msgid ""
"``-1`` on error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:500
+#: c-api/module.rst:506
msgid "Module lookup"
msgstr ""
-#: c-api/module.rst:502
+#: c-api/module.rst:508
msgid ""
"Single-phase initialization creates singleton modules that can be looked up "
"in the context of the current interpreter. This allows the module object to "
"be retrieved later with only a reference to the module definition."
msgstr ""
-#: c-api/module.rst:506
+#: c-api/module.rst:512
msgid ""
"These functions will not work on modules created using multi-phase "
"initialization, since multiple such modules can be created from a single "
"definition."
msgstr ""
-#: c-api/module.rst:511
+#: c-api/module.rst:517
msgid ""
"Returns the module object that was created from *def* for the current "
"interpreter. This method requires that the module object has been attached "
@@ -562,18 +571,18 @@ msgid ""
"to the interpreter state yet, it returns ``NULL``."
msgstr ""
-#: c-api/module.rst:518
+#: c-api/module.rst:524
msgid ""
"Attaches the module object passed to the function to the interpreter state. "
"This allows the module object to be accessible via :c:func:"
"`PyState_FindModule`."
msgstr ""
-#: c-api/module.rst:521
+#: c-api/module.rst:527
msgid "Only effective on modules created using single-phase initialization."
msgstr ""
-#: c-api/module.rst:523
+#: c-api/module.rst:529
msgid ""
"Python calls ``PyState_AddModule`` automatically after importing a module, "
"so it is unnecessary (but harmless) to call it from module initialization "
@@ -584,15 +593,15 @@ msgid ""
"state updates)."
msgstr ""
-#: c-api/module.rst:542
+#: c-api/module.rst:548
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/module.rst:533
+#: c-api/module.rst:539
msgid "Return 0 on success or -1 on failure."
msgstr ""
-#: c-api/module.rst:539
+#: c-api/module.rst:545
msgid ""
"Removes the module object created from *def* from the interpreter state. "
"Return 0 on success or -1 on failure."
diff --git a/c-api/number.po b/c-api/number.po
index c024c83250..75d18ed196 100644
--- a/c-api/number.po
+++ b/c-api/number.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -55,7 +55,7 @@ msgstr ""
#: c-api/number.rst:46
msgid ""
"Return the floor of *o1* divided by *o2*, or ``NULL`` on failure. This is "
-"equivalent to the \"classic\" division of integers."
+"the equivalent of the Python expression ``o1 // o2``."
msgstr ""
#: c-api/number.rst:52
@@ -64,7 +64,8 @@ msgid ""
"by *o2*, or ``NULL`` on failure. The return value is \"approximate\" "
"because binary floating point numbers are approximate; it is not possible to "
"represent all real numbers in base two. This function can return a floating "
-"point value when passed two integers."
+"point value when passed two integers. This is the equivalent of the Python "
+"expression ``o1 / o2``."
msgstr ""
#: c-api/number.rst:61
@@ -183,17 +184,18 @@ msgid ""
"because binary floating point numbers are approximate; it is not possible to "
"represent all real numbers in base two. This function can return a floating "
"point value when passed two integers. The operation is done *in-place* when "
-"*o1* supports it."
+"*o1* supports it. This is the equivalent of the Python statement ``o1 /= "
+"o2``."
msgstr ""
-#: c-api/number.rst:187
+#: c-api/number.rst:188
msgid ""
"Returns the remainder of dividing *o1* by *o2*, or ``NULL`` on failure. The "
"operation is done *in-place* when *o1* supports it. This is the equivalent "
"of the Python statement ``o1 %= o2``."
msgstr ""
-#: c-api/number.rst:196
+#: c-api/number.rst:197
msgid ""
"See the built-in function :func:`pow`. Returns ``NULL`` on failure. The "
"operation is done *in-place* when *o1* supports it. This is the equivalent "
@@ -203,60 +205,60 @@ msgid ""
"an illegal memory access)."
msgstr ""
-#: c-api/number.rst:205
+#: c-api/number.rst:206
msgid ""
"Returns the result of left shifting *o1* by *o2* on success, or ``NULL`` on "
"failure. The operation is done *in-place* when *o1* supports it. This is "
"the equivalent of the Python statement ``o1 <<= o2``."
msgstr ""
-#: c-api/number.rst:212
+#: c-api/number.rst:213
msgid ""
"Returns the result of right shifting *o1* by *o2* on success, or ``NULL`` on "
"failure. The operation is done *in-place* when *o1* supports it. This is "
"the equivalent of the Python statement ``o1 >>= o2``."
msgstr ""
-#: c-api/number.rst:219
+#: c-api/number.rst:220
msgid ""
"Returns the \"bitwise and\" of *o1* and *o2* on success and ``NULL`` on "
"failure. The operation is done *in-place* when *o1* supports it. This is "
"the equivalent of the Python statement ``o1 &= o2``."
msgstr ""
-#: c-api/number.rst:226
+#: c-api/number.rst:227
msgid ""
"Returns the \"bitwise exclusive or\" of *o1* by *o2* on success, or ``NULL`` "
"on failure. The operation is done *in-place* when *o1* supports it. This "
"is the equivalent of the Python statement ``o1 ^= o2``."
msgstr ""
-#: c-api/number.rst:233
+#: c-api/number.rst:234
msgid ""
"Returns the \"bitwise or\" of *o1* and *o2* on success, or ``NULL`` on "
"failure. The operation is done *in-place* when *o1* supports it. This is "
"the equivalent of the Python statement ``o1 |= o2``."
msgstr ""
-#: c-api/number.rst:242
+#: c-api/number.rst:243
msgid ""
"Returns the *o* converted to an integer object on success, or ``NULL`` on "
"failure. This is the equivalent of the Python expression ``int(o)``."
msgstr ""
-#: c-api/number.rst:250
+#: c-api/number.rst:251
msgid ""
"Returns the *o* converted to a float object on success, or ``NULL`` on "
"failure. This is the equivalent of the Python expression ``float(o)``."
msgstr ""
-#: c-api/number.rst:256
+#: c-api/number.rst:257
msgid ""
"Returns the *o* converted to a Python int on success or ``NULL`` with a :exc:"
"`TypeError` exception raised on failure."
msgstr ""
-#: c-api/number.rst:262
+#: c-api/number.rst:263
msgid ""
"Returns the integer *n* converted to base *base* as a string. The *base* "
"argument must be one of 2, 8, 10, or 16. For base 2, 8, or 16, the returned "
@@ -265,25 +267,26 @@ msgid ""
"`PyNumber_Index` first."
msgstr ""
-#: c-api/number.rst:271
+#: c-api/number.rst:272
msgid ""
-"Returns *o* converted to a Py_ssize_t value if *o* can be interpreted as an "
-"integer. If the call fails, an exception is raised and ``-1`` is returned."
+"Returns *o* converted to a :c:type:`Py_ssize_t` value if *o* can be "
+"interpreted as an integer. If the call fails, an exception is raised and "
+"``-1`` is returned."
msgstr ""
-#: c-api/number.rst:274
+#: c-api/number.rst:275
msgid ""
-"If *o* can be converted to a Python int but the attempt to convert to a "
-"Py_ssize_t value would raise an :exc:`OverflowError`, then the *exc* "
+"If *o* can be converted to a Python int but the attempt to convert to a :c:"
+"type:`Py_ssize_t` value would raise an :exc:`OverflowError`, then the *exc* "
"argument is the type of exception that will be raised (usually :exc:"
"`IndexError` or :exc:`OverflowError`). If *exc* is ``NULL``, then the "
"exception is cleared and the value is clipped to ``PY_SSIZE_T_MIN`` for a "
"negative integer or ``PY_SSIZE_T_MAX`` for a positive integer."
msgstr ""
-#: c-api/number.rst:284
+#: c-api/number.rst:285
msgid ""
-"Returns ``1`` if *o* is an index integer (has the nb_index slot of the "
-"tp_as_number structure filled in), and ``0`` otherwise. This function always "
-"succeeds."
+"Returns ``1`` if *o* is an index integer (has the ``nb_index`` slot of the "
+"``tp_as_number`` structure filled in), and ``0`` otherwise. This function "
+"always succeeds."
msgstr ""
diff --git a/c-api/object.po b/c-api/object.po
index 10af58d834..654463c72e 100644
--- a/c-api/object.po
+++ b/c-api/object.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2019-08-16 22:56+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -118,7 +118,7 @@ msgstr ""
"attributs d'instance, contrairement aux autres descripteurs. Sinon, une :exc:"
"`AttributeError` est levée."
-#: c-api/object.rst:90
+#: c-api/object.rst:91
msgid ""
"Set the value of the attribute named *attr_name*, for object *o*, to the "
"value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on "
@@ -132,22 +132,23 @@ msgstr ""
#: c-api/object.rst:84
#, fuzzy
msgid ""
-"If *v* is ``NULL``, the attribute is deleted, however this feature is "
-"deprecated in favour of using :c:func:`PyObject_DelAttr`."
+"If *v* is ``NULL``, the attribute is deleted. This behaviour is deprecated "
+"in favour of using :c:func:`PyObject_DelAttr`, but there are currently no "
+"plans to remove it."
msgstr ""
"Si *v* est *NULL*, l'attribut est supprimé. Cette fonctionnalité est "
"obsolète,nous vous conseillons d'utiliser :c:func:`PyObject_DelAttr`."
-#: c-api/object.rst:95
+#: c-api/object.rst:96
#, fuzzy
msgid ""
-"If *v* is ``NULL``, the attribute is deleted, however this feature is "
-"deprecated in favour of using :c:func:`PyObject_DelAttrString`."
+"If *v* is ``NULL``, the attribute is deleted, but this feature is deprecated "
+"in favour of using :c:func:`PyObject_DelAttrString`."
msgstr ""
"Si *v* est *NULL*, l'attribut est supprimé. Cette fonctionnalité est "
"obsolète, nous vous conseillons d'utiliser :c:func:`PyObject_DelAttr`."
-#: c-api/object.rst:101
+#: c-api/object.rst:102
msgid ""
"Generic attribute setter and deleter function that is meant to be put into a "
"type object's :c:member:`~PyTypeObject.tp_setattro` slot. It looks for a "
@@ -167,7 +168,7 @@ msgstr ""
"attr:`~object.__dict__` de l'objet (si présent). En cas de succès, ``0`` est "
"renvoyé, sinon une :exc:`AttributeError` est levée et ``-1`` est renvoyé."
-#: c-api/object.rst:119
+#: c-api/object.rst:120
msgid ""
"Delete attribute named *attr_name*, for object *o*. Returns ``-1`` on "
"failure. This is the equivalent of the Python statement ``del o.attr_name``."
@@ -176,7 +177,7 @@ msgstr ""
"cas d'échec. Ceci est l'équivalent de l'expression Python ``del o."
"attr_name``."
-#: c-api/object.rst:125
+#: c-api/object.rst:126
msgid ""
"A generic implementation for the getter of a ``__dict__`` descriptor. It "
"creates the dictionary if necessary."
@@ -184,7 +185,7 @@ msgstr ""
"Une implémentation générique de l'accesseur d'un descripteur d'un "
"``__dict__``. Crée le dictionnaire si nécessaire."
-#: c-api/object.rst:133
+#: c-api/object.rst:134
msgid ""
"A generic implementation for the setter of a ``__dict__`` descriptor. This "
"implementation does not allow the dictionary to be deleted."
@@ -192,7 +193,7 @@ msgstr ""
"Une implémentation générique du mutateur d'un descripteur de ``__dict__``. "
"Cette implémentation n'autorise pas la suppression du dictionnaire."
-#: c-api/object.rst:141
+#: c-api/object.rst:142
#, fuzzy
msgid ""
"Compare the values of *o1* and *o2* using the operation specified by *opid*, "
@@ -211,7 +212,7 @@ msgstr ""
"*opid*. Renvoie la valeur de la comparaison en cas de succès, ou *NULL* en "
"cas d'échec."
-#: c-api/object.rst:151
+#: c-api/object.rst:152
msgid ""
"Compare the values of *o1* and *o2* using the operation specified by *opid*, "
"which must be one of :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:"
@@ -229,7 +230,7 @@ msgstr ""
"l'équivalent de l'expression Python ``o1 op o2``, où ``op`` est l'opérateur "
"correspondant à *opid*."
-#: c-api/object.rst:160
+#: c-api/object.rst:161
msgid ""
"If *o1* and *o2* are the same object, :c:func:`PyObject_RichCompareBool` "
"will always return ``1`` for :const:`Py_EQ` and ``0`` for :const:`Py_NE`."
@@ -237,7 +238,7 @@ msgstr ""
"Si *o1* et *o2* sont le même objet, :c:func:`PyObject_RichCompareBool` "
"renvoie toujours ``1`` pour :const:`Py_EQ` et ``0`` pour :const:`Py_NE`."
-#: c-api/object.rst:167
+#: c-api/object.rst:168
#, fuzzy
msgid ""
"Compute a string representation of object *o*. Returns the string "
@@ -250,7 +251,7 @@ msgstr ""
"d'échec. Ceci est l'équivalent de l'expression Python ``repr(o)``. Appelé "
"par la fonction native :func:`repr`."
-#: c-api/object.rst:195
+#: c-api/object.rst:196
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
@@ -258,7 +259,7 @@ msgstr ""
"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
"qu'elle ne passe pas sous silence une exception active."
-#: c-api/object.rst:179
+#: c-api/object.rst:180
msgid ""
"As :c:func:`PyObject_Repr`, compute a string representation of object *o*, "
"but escape the non-ASCII characters in the string returned by :c:func:"
@@ -268,12 +269,12 @@ msgid ""
msgstr ""
"Comme :c:Func:`PyObject_Repr`, calcule une représentation en chaîne de "
"caractères de l'objet *o*, mais échappe les caractères non ASCII dans la "
-"chaîne de caractères renvoyée par :c:Func:`PyObject_Repr` avec' ``\\x``, ``"
-"\\u`` ou ``\\U``. Cela génère une chaîne de caractères similaire à celle "
+"chaîne de caractères renvoyée par :c:Func:`PyObject_Repr` avec' ``\\x``, "
+"``\\u`` ou ``\\U``. Cela génère une chaîne de caractères similaire à celle "
"renvoyée par :c:func:`PyObject_Repr` en Python 2. Appelée par la fonction "
"native :func:`ascii`."
-#: c-api/object.rst:190
+#: c-api/object.rst:191
#, fuzzy
msgid ""
"Compute a string representation of object *o*. Returns the string "
@@ -287,7 +288,7 @@ msgstr ""
"par la fonction native :func:`str`, et, par conséquent, par la fonction :"
"func:`print`."
-#: c-api/object.rst:204
+#: c-api/object.rst:205
#, fuzzy
msgid ""
"Compute a bytes representation of object *o*. ``NULL`` is returned on "
@@ -302,7 +303,7 @@ msgstr ""
"entier. Contrairement à ``bytes(o)``, une exception *TypeError* est levée "
"lorsque *o* est un entier au lieu d'un objet octet initialisé avec des zéros."
-#: c-api/object.rst:213
+#: c-api/object.rst:214
msgid ""
"Return ``1`` if the class *derived* is identical to or derived from the "
"class *cls*, otherwise return ``0``. In case of an error, return ``-1``."
@@ -310,7 +311,7 @@ msgstr ""
"Renvoie ``1`` si la classe *derived* est identique à ou dérivée de la classe "
"*cls*, renvoie ``0`` sinon. En cas d'erreur, renvoie ``-1``."
-#: c-api/object.rst:235
+#: c-api/object.rst:236
msgid ""
"If *cls* is a tuple, the check will be done against every entry in *cls*. "
"The result will be ``1`` when at least one of the checks returns ``1``, "
@@ -320,7 +321,7 @@ msgstr ""
"*cls*. Le résultat sera ``1`` quand au moins une des vérifications renvoie "
"``1``, sinon ce sera ``0``."
-#: c-api/object.rst:220
+#: c-api/object.rst:221
msgid ""
"If *cls* has a :meth:`~class.__subclasscheck__` method, it will be called to "
"determine the subclass status as described in :pep:`3119`. Otherwise, "
@@ -332,7 +333,7 @@ msgstr ""
"Sinon, *derived* est une sous-classe de *cls* si c'est une sous-classe "
"directe ou indirecte, c'est-à-dire contenue dans ``cls.__mro__``."
-#: c-api/object.rst:225
+#: c-api/object.rst:226
msgid ""
"Normally only class objects, i.e. instances of :class:`type` or a derived "
"class, are considered classes. However, objects can override this by having "
@@ -343,7 +344,7 @@ msgstr ""
"les objets peuvent surcharger cela en ayant un attribut :attr:`__bases__` "
"(qui doit être un *n*-uplet de classes de bases)."
-#: c-api/object.rst:232
+#: c-api/object.rst:233
msgid ""
"Return ``1`` if *inst* is an instance of the class *cls* or a subclass of "
"*cls*, or ``0`` if not. On error, returns ``-1`` and sets an exception."
@@ -352,7 +353,7 @@ msgstr ""
"classe de *cls*, ou ``0`` sinon. En cas d'erreur, renvoie ``-1`` et "
"initialise une exception."
-#: c-api/object.rst:239
+#: c-api/object.rst:240
msgid ""
"If *cls* has a :meth:`~class.__instancecheck__` method, it will be called to "
"determine the subclass status as described in :pep:`3119`. Otherwise, "
@@ -363,7 +364,7 @@ msgstr ""
"Sinon, *inst* est une instance *cls* si sa classe est une sous-classe de "
"*cls*."
-#: c-api/object.rst:243
+#: c-api/object.rst:244
msgid ""
"An instance *inst* can override what is considered its class by having a :"
"attr:`__class__` attribute."
@@ -371,7 +372,7 @@ msgstr ""
"Une instance *inst* peut surcharger ce qui est considéré comme sa classe en "
"ayant un attribut :attr:`__class__`."
-#: c-api/object.rst:246
+#: c-api/object.rst:247
msgid ""
"An object *cls* can override if it is considered a class, and what its base "
"classes are, by having a :attr:`__bases__` attribute (which must be a tuple "
@@ -381,19 +382,19 @@ msgstr ""
"que ses classes de bases sont, en ayant un attribut :attr:`__bases__` (qui "
"doit être un *n*-uplet des classes de base)."
-#: c-api/object.rst:255
+#: c-api/object.rst:256
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 ""
-#: c-api/object.rst:258
+#: c-api/object.rst:259
msgid ""
-"The return type is now Py_hash_t. This is a signed integer the same size as "
-"Py_ssize_t."
+"The return type is now Py_hash_t. This is a signed integer the same size "
+"as :c:type:`Py_ssize_t`."
msgstr ""
-#: c-api/object.rst:265
+#: c-api/object.rst:266
msgid ""
"Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and "
"return ``-1``. This function receives special treatment when stored in a "
@@ -401,38 +402,38 @@ msgid ""
"that it is not hashable."
msgstr ""
-#: c-api/object.rst:273
+#: c-api/object.rst:274
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 ""
-#: c-api/object.rst:280
+#: c-api/object.rst:281
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 ""
-#: c-api/object.rst:289
+#: c-api/object.rst:290
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 "
"``NULL``. This is equivalent to the Python expression ``type(o)``. This "
"function increments the reference count of the return value. There's really "
-"no reason to use this function instead of the common expression ``o-"
-">ob_type``, which returns a pointer of type :c:type:`PyTypeObject*`, except "
-"when the incremented reference count is needed."
+"no reason to use this function instead of the :c:func:`Py_TYPE()` function, "
+"which returns a pointer of type :c:type:`PyTypeObject*`, except when the "
+"incremented reference count is needed."
msgstr ""
-#: c-api/object.rst:300
+#: c-api/object.rst:301
msgid ""
"Return true if the object *o* is of type *type* or a subtype of *type*. "
"Both parameters must be non-``NULL``."
msgstr ""
-#: c-api/object.rst:309
+#: c-api/object.rst:310
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, "
@@ -440,15 +441,16 @@ msgid ""
"``len(o)``."
msgstr ""
-#: c-api/object.rst:316
+#: c-api/object.rst:317
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 "
"finally return the default value. On error return ``-1``. This is the "
-"equivalent to the Python expression ``operator.length_hint(o, default)``."
+"equivalent to the Python expression ``operator.length_hint(o, "
+"defaultvalue)``."
msgstr ""
-#: c-api/object.rst:326
+#: c-api/object.rst:327
#, fuzzy
msgid ""
"Return element of *o* corresponding to the object *key* or ``NULL`` on "
@@ -458,7 +460,7 @@ msgstr ""
"l'attribut en cas de succès, ou *NULL* en cas d'échec. Ceci est équivalent à "
"l'expression Python ``o.attr_name``."
-#: c-api/object.rst:332
+#: c-api/object.rst:333
#, fuzzy
msgid ""
"Map the object *key* to the value *v*. Raise an exception and return ``-1`` "
@@ -470,7 +472,7 @@ msgstr ""
"``0`` en cas de succès. Ceci est équivalent à l'instruction Python ``o."
"attr_name = v``."
-#: c-api/object.rst:340
+#: c-api/object.rst:341
#, fuzzy
msgid ""
"Remove the mapping for the object *key* from the object *o*. Return ``-1`` "
@@ -480,7 +482,7 @@ msgstr ""
"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
"``del o[key]``."
-#: c-api/object.rst:346
+#: c-api/object.rst:347
msgid ""
"This is equivalent to the Python expression ``dir(o)``, returning a "
"(possibly empty) list of strings appropriate for the object argument, or "
@@ -490,7 +492,7 @@ msgid ""
"`PyErr_Occurred` will return false."
msgstr ""
-#: c-api/object.rst:355
+#: c-api/object.rst:356
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/refcounting.po b/c-api/refcounting.po
index 405d98f2c6..0823e5177c 100644
--- a/c-api/refcounting.po
+++ b/c-api/refcounting.po
@@ -23,6 +23,8 @@ msgid ""
"The macros in this section are used for managing reference counts of Python "
"objects."
msgstr ""
+"Les macros dans cette section permettent de gérer le compteur de références "
+"des objets Python."
#: c-api/refcounting.rst:16
msgid ""
@@ -36,6 +38,8 @@ msgid ""
"Increment the reference count for object *o*. The object may be ``NULL``, "
"in which case the macro has no effect."
msgstr ""
+"Incrémente le compteur de références de l'objet *o*. La macro n'a pas "
+"d'effet si l'objet est ``NULL``."
#: c-api/refcounting.rst:28
msgid ""
@@ -57,6 +61,15 @@ msgid ""
"update the list data structure, and then call :c:func:`Py_DECREF` for the "
"temporary variable."
msgstr ""
+"La fonction de dés-allocation peut invoquer du code Python arbitraire (par "
+"exemple quand une instance d'une classe avec une méthode :meth:`__del__` est "
+"supprimée). Le code exécuté a accès à toutes les variables Python globales "
+"mais les exceptions lors de l'exécution de ce code ne sont pas propagées. "
+"Tous les objets qui peuvent être atteints à partir d'une variable globale "
+"doivent être dans un état cohérent avant d'appeler :c:func:`Py_DECREF`. Par "
+"exemple le code pour supprimer un élément d'une liste doit copier une "
+"référence à l'objet dans une variable temporaire, mettre à jour la liste, et "
+"enfin appeler :c:func:`Py_DECREF` avec la variable temporaire."
#: c-api/refcounting.rst:47
msgid ""
@@ -64,6 +77,10 @@ msgid ""
"in which case the macro has no effect; otherwise the effect is the same as "
"for :c:func:`Py_DECREF`, and the same warning applies."
msgstr ""
+"Décrémente le compteur de références de l'objet *o*. L'objet peut être "
+"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le "
+"comportement est identique à :c:func:`Py_DECREF` et les mêmes avertissements "
+"sont de rigueur."
#: c-api/refcounting.rst:54
msgid ""
@@ -74,12 +91,20 @@ msgid ""
"object passed because the macro carefully uses a temporary variable and sets "
"the argument to ``NULL`` before decrementing its reference count."
msgstr ""
+"Décrémente le compteur de références de l'objet *o*. L'objet peut être "
+"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le "
+"comportement est identique à :c:func:`Py_DECREF`, puis l'argument est mis à "
+"``NULL``. L'avertissement au sujet de l'objet passé en argument à :c:func:"
+"`Py_DECREF` ne s'applique pas car la macro utilise une variable temporaire "
+"et met l'objet à ``NULL`` avant de décrémenter le compteur de références."
#: c-api/refcounting.rst:61
msgid ""
"It is a good idea to use this macro whenever decrementing the reference "
"count of an object that might be traversed during garbage collection."
msgstr ""
+"Il est recommandé d'utiliser cette macro lorsqu'on décrémente le compteur de "
+"référence d'un objet qui peut être parcouru par le ramasse-miette."
#: c-api/refcounting.rst:65
msgid ""
@@ -95,3 +120,7 @@ msgid ""
"core: :c:func:`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:"
"`_Py_NewReference`, as well as the global variable :c:data:`_Py_RefTotal`."
msgstr ""
+"Les fonctions ou macros suivantes doivent être uniquement utilisées au sein "
+"de l'interpréteur et ne font pas partie de l'API publique : :c:func:"
+"`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:`_Py_NewReference`, "
+"ainsi que la variable globale :c:data:`_Py_RefTotal`."
diff --git a/c-api/reflection.po b/c-api/reflection.po
index 10deec6abc..a53042a2bd 100644
--- a/c-api/reflection.po
+++ b/c-api/reflection.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2019-02-26 12:01+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -60,7 +60,7 @@ msgstr ""
#: c-api/reflection.rst:36
msgid "Get the *frame* next outer frame."
-msgstr ""
+msgstr "Renvoie la *frame* encadrant immédiatement à *frame*."
#: c-api/reflection.rst:38
msgid "Return a strong reference, or ``NULL`` if *frame* has no outer frame."
@@ -72,7 +72,7 @@ msgstr ""
#: c-api/reflection.rst:47
msgid "Get the *frame* code."
-msgstr ""
+msgstr "Obtenir le code *frame*."
#: c-api/reflection.rst:49
msgid "Return a strong reference."
@@ -104,6 +104,6 @@ msgid ""
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 "
+"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/sequence.po b/c-api/sequence.po
index 15b5b657ac..938b8d092c 100644
--- a/c-api/sequence.po
+++ b/c-api/sequence.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -20,11 +20,11 @@ msgstr ""
#: c-api/sequence.rst:11
msgid ""
-"Return ``1`` if the object provides sequence protocol, and ``0`` otherwise. "
-"Note that it returns ``1`` for Python classes with a :meth:`__getitem__` "
-"method unless they are :class:`dict` subclasses since in general case it is "
-"impossible to determine what the type of keys it supports. This function "
-"always succeeds."
+"Return ``1`` if the object provides the sequence protocol, and ``0`` "
+"otherwise. Note that it returns ``1`` for Python classes with a :meth:"
+"`__getitem__` method, unless they are :class:`dict` subclasses, since in "
+"general it is impossible to determine what type of keys the class supports. "
+"This function always succeeds."
msgstr ""
#: c-api/sequence.rst:23
@@ -85,8 +85,8 @@ msgstr ""
#: c-api/sequence.rst:72
msgid ""
-"If *v* is ``NULL``, the element is deleted, however this feature is "
-"deprecated in favour of using :c:func:`PySequence_DelItem`."
+"If *v* is ``NULL``, the element is deleted, but this feature is deprecated "
+"in favour of using :c:func:`PySequence_DelItem`."
msgstr ""
#: c-api/sequence.rst:78
@@ -166,8 +166,8 @@ msgstr ""
#: c-api/sequence.rst:148
msgid ""
"Returns the length of *o*, assuming that *o* was returned by :c:func:"
-"`PySequence_Fast` and that *o* is not ``NULL``. The size can also be gotten "
-"by calling :c:func:`PySequence_Size` on *o*, but :c:func:"
+"`PySequence_Fast` and that *o* is not ``NULL``. The size can also be "
+"retrieved by calling :c:func:`PySequence_Size` on *o*, but :c:func:"
"`PySequence_Fast_GET_SIZE` is faster because it can assume *o* is a list or "
"tuple."
msgstr ""
diff --git a/c-api/set.po b/c-api/set.po
index 3a076f7c9c..68d35e337e 100644
--- a/c-api/set.po
+++ b/c-api/set.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -21,14 +21,14 @@ msgstr ""
#: c-api/set.rst:15
msgid ""
"This section details the public API for :class:`set` and :class:`frozenset` "
-"objects. Any functionality not listed below is best accessed using the "
-"either the abstract object protocol (including :c:func:"
-"`PyObject_CallMethod`, :c:func:`PyObject_RichCompareBool`, :c:func:"
-"`PyObject_Hash`, :c:func:`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:"
-"`PyObject_Print`, and :c:func:`PyObject_GetIter`) or the abstract number "
-"protocol (including :c:func:`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:"
-"func:`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :"
-"c:func:`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:"
+"objects. Any functionality not listed below is best accessed using either "
+"the abstract object protocol (including :c:func:`PyObject_CallMethod`, :c:"
+"func:`PyObject_RichCompareBool`, :c:func:`PyObject_Hash`, :c:func:"
+"`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:`PyObject_Print`, and :c:"
+"func:`PyObject_GetIter`) or the abstract number protocol (including :c:func:"
+"`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:func:`PyNumber_Or`, :c:func:"
+"`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :c:func:"
+"`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:"
"`PyNumber_InPlaceXor`)."
msgstr ""
@@ -39,9 +39,9 @@ msgid ""
"`PyDictObject` in that it is a fixed size for small sets (much like tuple "
"storage) and will point to a separate, variable sized block of memory for "
"medium and large sized sets (much like list storage). None of the fields of "
-"this structure should be considered public and are subject to change. All "
-"access should be done through the documented API rather than by manipulating "
-"the values in the structure."
+"this structure should be considered public and all are subject to change. "
+"All access should be done through the documented API rather than by "
+"manipulating the values in the structure."
msgstr ""
#: c-api/set.rst:40
@@ -145,7 +145,7 @@ msgstr ""
#: c-api/set.rst:127
msgid ""
"Add *key* to a :class:`set` instance. Also works with :class:`frozenset` "
-"instances (like :c:func:`PyTuple_SetItem` it can be used to fill-in the "
+"instances (like :c:func:`PyTuple_SetItem` it can be used to fill in the "
"values of brand new frozensets before they are exposed to other code). "
"Return ``0`` on success or ``-1`` on failure. Raise a :exc:`TypeError` if "
"the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to "
diff --git a/c-api/stable.po b/c-api/stable.po
index 0acc383a21..8178a535db 100644
--- a/c-api/stable.po
+++ b/c-api/stable.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-10-04 12:26+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -54,10 +54,10 @@ msgstr ""
#: c-api/stable.rst:23
msgid ""
"Since Python 3.2, a subset of the API has been declared to guarantee a "
-"stable ABI. Extension modules wishing to use this API (called \"limited API"
-"\") need to define ``Py_LIMITED_API``. A number of interpreter details then "
-"become hidden from the extension module; in return, a module is built that "
-"works on any 3.x version (x>=2) without recompilation."
+"stable ABI. Extension modules wishing to use this API (called \"limited "
+"API\") need to define ``Py_LIMITED_API``. A number of interpreter details "
+"then become hidden from the extension module; in return, a module is built "
+"that works on any 3.x version (x>=2) without recompilation."
msgstr ""
"Depuis Python 3.2 il est garanti qu'une certaine partie de l'API gardera une "
"ABI stable. Les modules d'extension souhaitant utiliser cette API (Appellée "
diff --git a/c-api/structures.po b/c-api/structures.po
index a41d6e49f7..47af15dc8b 100644
--- a/c-api/structures.po
+++ b/c-api/structures.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -177,24 +177,24 @@ msgid ""
"has four fields:"
msgstr ""
-#: c-api/structures.rst:364 c-api/structures.rst:445
+#: c-api/structures.rst:364 c-api/structures.rst:460
msgid "Field"
msgstr "Champ"
-#: c-api/structures.rst:364 c-api/structures.rst:445
+#: c-api/structures.rst:364 c-api/structures.rst:460
msgid "C Type"
msgstr "Type C"
-#: c-api/structures.rst:364 c-api/structures.rst:445
+#: c-api/structures.rst:364 c-api/structures.rst:460
msgid "Meaning"
msgstr "Signification"
#: c-api/structures.rst:210
msgid ":attr:`ml_name`"
-msgstr ""
+msgstr ":attr:`ml_name`"
-#: c-api/structures.rst:218 c-api/structures.rst:379 c-api/structures.rst:447
-#: c-api/structures.rst:455
+#: c-api/structures.rst:218 c-api/structures.rst:379 c-api/structures.rst:462
+#: c-api/structures.rst:470
msgid "const char \\*"
msgstr ""
@@ -204,7 +204,7 @@ msgstr ""
#: c-api/structures.rst:212
msgid ":attr:`ml_meth`"
-msgstr ""
+msgstr ":attr:`ml_meth`"
#: c-api/structures.rst:212
msgid "PyCFunction"
@@ -216,7 +216,7 @@ msgstr ""
#: c-api/structures.rst:215
msgid ":attr:`ml_flags`"
-msgstr ""
+msgstr ":attr:`ml_flags`"
#: c-api/structures.rst:368 c-api/structures.rst:391
msgid "int"
@@ -228,7 +228,7 @@ msgstr ""
#: c-api/structures.rst:218
msgid ":attr:`ml_doc`"
-msgstr ""
+msgstr ":attr:`ml_doc`"
#: c-api/structures.rst:379
msgid "points to the contents of the docstring"
@@ -384,7 +384,7 @@ msgstr ""
#: c-api/structures.rst:366
msgid ":attr:`name`"
-msgstr ""
+msgstr ":attr:`name`"
#: c-api/structures.rst:366
msgid "name of the member"
@@ -392,7 +392,7 @@ msgstr ""
#: c-api/structures.rst:368
msgid ":attr:`!type`"
-msgstr ""
+msgstr ":attr:`!type`"
#: c-api/structures.rst:368
msgid "the type of the member in the C struct"
@@ -400,7 +400,7 @@ msgstr ""
#: c-api/structures.rst:371
msgid ":attr:`offset`"
-msgstr ""
+msgstr ":attr:`offset`"
#: c-api/structures.rst:407
msgid "Py_ssize_t"
@@ -413,7 +413,7 @@ msgstr ""
#: c-api/structures.rst:375
msgid ":attr:`flags`"
-msgstr ""
+msgstr ":attr:`flags`"
#: c-api/structures.rst:375
msgid "flag bits indicating if the field should be read-only or writable"
@@ -421,7 +421,7 @@ msgstr ""
#: c-api/structures.rst:379
msgid ":attr:`doc`"
-msgstr ""
+msgstr ":attr:`doc`"
#: c-api/structures.rst:383
msgid ""
@@ -588,86 +588,99 @@ msgid ""
"``T_PYSSIZET`` and ``READONLY``, for example::"
msgstr ""
-#: c-api/structures.rst:441
+#: c-api/structures.rst:442
+msgid ""
+"Get an attribute belonging to the object at address *obj_addr*. The "
+"attribute is described by ``PyMemberDef`` *m*. Returns ``NULL`` on error."
+msgstr ""
+
+#: c-api/structures.rst:449
+msgid ""
+"Set an attribute belonging to the object at address *obj_addr* to object "
+"*o*. The attribute to set is described by ``PyMemberDef`` *m*. Returns "
+"``0`` if successful and a negative value on failure."
+msgstr ""
+
+#: c-api/structures.rst:456
msgid ""
"Structure to define property-like access for a type. See also description of "
"the :c:member:`PyTypeObject.tp_getset` slot."
msgstr ""
-#: c-api/structures.rst:447
+#: c-api/structures.rst:462
msgid "name"
-msgstr ""
+msgstr "nom"
-#: c-api/structures.rst:447
+#: c-api/structures.rst:462
msgid "attribute name"
msgstr ""
-#: c-api/structures.rst:449
+#: c-api/structures.rst:464
msgid "get"
msgstr ""
-#: c-api/structures.rst:449
+#: c-api/structures.rst:464
msgid "getter"
msgstr ""
-#: c-api/structures.rst:449
-msgid "C Function to get the attribute"
+#: c-api/structures.rst:464
+msgid "C function to get the attribute"
msgstr ""
-#: c-api/structures.rst:451
+#: c-api/structures.rst:466
msgid "set"
msgstr ""
-#: c-api/structures.rst:451
+#: c-api/structures.rst:466
msgid "setter"
msgstr ""
-#: c-api/structures.rst:451
+#: c-api/structures.rst:466
msgid ""
"optional C function to set or delete the attribute, if omitted the attribute "
"is readonly"
msgstr ""
-#: c-api/structures.rst:455
+#: c-api/structures.rst:470
msgid "doc"
msgstr ""
-#: c-api/structures.rst:455
+#: c-api/structures.rst:470
msgid "optional docstring"
msgstr ""
-#: c-api/structures.rst:457
+#: c-api/structures.rst:472
msgid "closure"
msgstr ""
-#: c-api/structures.rst:457
+#: c-api/structures.rst:472
msgid "void \\*"
msgstr ""
-#: c-api/structures.rst:457
+#: c-api/structures.rst:472
msgid ""
"optional function pointer, providing additional data for getter and setter"
msgstr ""
-#: c-api/structures.rst:462
+#: c-api/structures.rst:477
msgid ""
"The ``get`` function takes one :c:type:`PyObject*` parameter (the instance) "
"and a function pointer (the associated ``closure``)::"
msgstr ""
-#: c-api/structures.rst:467
+#: c-api/structures.rst:482
msgid ""
"It should return a new reference on success or ``NULL`` with a set exception "
"on failure."
msgstr ""
-#: c-api/structures.rst:470
+#: c-api/structures.rst:485
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 ""
-#: c-api/structures.rst:475
+#: c-api/structures.rst:490
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/sys.po b/c-api/sys.po
index 8e55251620..7bf3e5e6cb 100644
--- a/c-api/sys.po
+++ b/c-api/sys.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -201,7 +201,7 @@ msgstr ""
msgid "The function now uses the UTF-8 encoding in the UTF-8 mode."
msgstr ""
-#: c-api/sys.rst:206
+#: c-api/sys.rst:162
msgid ""
"The function now uses the UTF-8 encoding on Windows if :c:data:"
"`Py_LegacyWindowsFSEncodingFlag` is zero;"
@@ -222,7 +222,7 @@ msgstr ""
msgid ""
"Return a pointer to a newly allocated byte string, use :c:func:`PyMem_Free` "
"to free the memory. Return ``NULL`` on encoding error or memory allocation "
-"error"
+"error."
msgstr ""
#: c-api/sys.rst:190
@@ -243,6 +243,12 @@ msgid ""
"functions."
msgstr ""
+#: c-api/sys.rst:206
+msgid ""
+"The function now uses the UTF-8 encoding on Windows if :c:data:"
+"`Py_LegacyWindowsFSEncodingFlag` is zero."
+msgstr ""
+
#: c-api/sys.rst:214
msgid "System Functions"
msgstr ""
@@ -374,8 +380,8 @@ msgstr ""
#: c-api/sys.rst:323
msgid ""
-"Note that ``#`` format characters should always be treated as "
-"``Py_ssize_t``, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined."
+"Note that ``#`` format characters should always be treated as :c:type:"
+"`Py_ssize_t`, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined."
msgstr ""
#: c-api/sys.rst:326
@@ -384,14 +390,14 @@ msgstr ""
#: c-api/sys.rst:332
msgid ""
-"Require ``Py_ssize_t`` for ``#`` format characters. Previously, an "
+"Require :c:type:`Py_ssize_t` for ``#`` format characters. Previously, an "
"unavoidable deprecation warning was raised."
msgstr ""
#: c-api/sys.rst:338
msgid ""
"Append the callable *hook* to the list of active auditing hooks. Return zero "
-"for success and non-zero on failure. If the runtime has been initialized, "
+"on success and non-zero on failure. If the runtime has been initialized, "
"also set an error on failure. Hooks added through this API are called for "
"all interpreters created by the runtime."
msgstr ""
@@ -426,7 +432,7 @@ msgid ""
"events table `. Details are in each function's documentation."
msgstr ""
-#: c-api/sys.rst:None
+#: c-api/sys.rst:363
msgid ""
"Raises an :ref:`auditing event ` ``sys.addaudithook`` with no "
"arguments."
diff --git a/c-api/type.po b/c-api/type.po
index 00971c6d5c..d8f11ff86b 100644
--- a/c-api/type.po
+++ b/c-api/type.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-02-15 00:33+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -110,7 +110,17 @@ msgid ""
"and sets an exception on error."
msgstr ""
-#: c-api/type.rst:102
+#: c-api/type.rst:101
+msgid ""
+"If some of the base classes implements the GC protocol and the provided type "
+"does not include the :const:`Py_TPFLAGS_HAVE_GC` in its flags, then the GC "
+"protocol will be automatically implemented from its parents. On the "
+"contrary, if the type being created does include :const:`Py_TPFLAGS_HAVE_GC` "
+"in its flags then it **must** implement the GC protocol itself by at least "
+"implementing the :c:member:`~PyTypeObject.tp_traverse` handle."
+msgstr ""
+
+#: c-api/type.rst:111
msgid ""
"Return the function pointer stored in the given slot. If the result is "
"``NULL``, this indicates that either the slot is ``NULL``, or that the "
@@ -118,28 +128,28 @@ msgid ""
"result pointer into the appropriate function type."
msgstr ""
-#: c-api/type.rst:108
+#: c-api/type.rst:117
msgid ""
"See :c:member:`PyType_Slot.slot` for possible values of the *slot* argument."
msgstr ""
-#: c-api/type.rst:110
+#: c-api/type.rst:119
msgid "An exception is raised if *type* is not a heap type."
msgstr ""
-#: c-api/type.rst:116
+#: c-api/type.rst:125
msgid ""
"Return the module object associated with the given type when the type was "
"created using :c:func:`PyType_FromModuleAndSpec`."
msgstr ""
-#: c-api/type.rst:137
+#: c-api/type.rst:146
msgid ""
"If no module is associated with the given type, sets :py:class:`TypeError` "
"and returns ``NULL``."
msgstr ""
-#: c-api/type.rst:122
+#: c-api/type.rst:131
msgid ""
"This function is usually used to get the module in which a method is "
"defined. Note that in such a method, ``PyType_GetModule(Py_TYPE(self))`` may "
@@ -149,110 +159,110 @@ msgid ""
"defines the method."
msgstr ""
-#: c-api/type.rst:133
+#: c-api/type.rst:142
msgid ""
"Return the state of the module object associated with the given type. This "
"is a shortcut for calling :c:func:`PyModule_GetState()` on the result of :c:"
"func:`PyType_GetModule`."
msgstr ""
-#: c-api/type.rst:140
+#: c-api/type.rst:149
msgid ""
"If the *type* has an associated module but its state is ``NULL``, returns "
"``NULL`` without setting an exception."
msgstr ""
-#: c-api/type.rst:147
+#: c-api/type.rst:156
msgid "Creating Heap-Allocated Types"
msgstr ""
-#: c-api/type.rst:149
+#: c-api/type.rst:158
msgid ""
"The following functions and structs are used to create :ref:`heap types "
"`."
msgstr ""
-#: c-api/type.rst:154
+#: c-api/type.rst:163
msgid ""
"Creates and returns a heap type object from the *spec* (:const:"
"`Py_TPFLAGS_HEAPTYPE`)."
msgstr ""
-#: c-api/type.rst:157
+#: c-api/type.rst:166
msgid ""
"If *bases* is a tuple, the created heap type contains all types contained in "
"it as base types."
msgstr ""
-#: c-api/type.rst:160
+#: c-api/type.rst:169
msgid ""
"If *bases* is ``NULL``, the *Py_tp_bases* slot is used instead. If that also "
"is ``NULL``, the *Py_tp_base* slot is used instead. If that also is "
"``NULL``, the new type derives from :class:`object`."
msgstr ""
-#: c-api/type.rst:164
+#: c-api/type.rst:173
msgid ""
"The *module* argument can be used to record the module in which the new "
"class is defined. It must be a module object or ``NULL``. If not ``NULL``, "
-"the module is associated with the new type and can later be retreived with :"
+"the module is associated with the new type and can later be retrieved with :"
"c:func:`PyType_GetModule`. The associated module is not inherited by "
"subclasses; it must be specified for each class individually."
msgstr ""
-#: c-api/type.rst:171
+#: c-api/type.rst:180
msgid "This function calls :c:func:`PyType_Ready` on the new type."
msgstr ""
-#: c-api/type.rst:177
+#: c-api/type.rst:186
msgid "Equivalent to ``PyType_FromModuleAndSpec(NULL, spec, bases)``."
msgstr ""
-#: c-api/type.rst:183
+#: c-api/type.rst:192
msgid "Equivalent to ``PyType_FromSpecWithBases(spec, NULL)``."
msgstr ""
-#: c-api/type.rst:187
+#: c-api/type.rst:196
msgid "Structure defining a type's behavior."
msgstr ""
-#: c-api/type.rst:191
+#: c-api/type.rst:200
msgid "Name of the type, used to set :c:member:`PyTypeObject.tp_name`."
msgstr ""
-#: c-api/type.rst:196
+#: c-api/type.rst:205
msgid ""
"Size of the instance in bytes, used to set :c:member:`PyTypeObject."
"tp_basicsize` and :c:member:`PyTypeObject.tp_itemsize`."
msgstr ""
-#: c-api/type.rst:202
+#: c-api/type.rst:211
msgid "Type flags, used to set :c:member:`PyTypeObject.tp_flags`."
msgstr ""
-#: c-api/type.rst:204
+#: c-api/type.rst:213
msgid ""
"If the ``Py_TPFLAGS_HEAPTYPE`` flag is not set, :c:func:"
"`PyType_FromSpecWithBases` sets it automatically."
msgstr ""
-#: c-api/type.rst:209
+#: c-api/type.rst:218
msgid ""
"Array of :c:type:`PyType_Slot` structures. Terminated by the special slot "
"value ``{0, NULL}``."
msgstr ""
-#: c-api/type.rst:214
+#: c-api/type.rst:223
msgid ""
"Structure defining optional functionality of a type, containing a slot ID "
"and a value pointer."
msgstr ""
-#: c-api/type.rst:219
+#: c-api/type.rst:228
msgid "A slot ID."
msgstr ""
-#: c-api/type.rst:221
+#: c-api/type.rst:230
msgid ""
"Slot IDs are named like the field names of the structures :c:type:"
"`PyTypeObject`, :c:type:`PyNumberMethods`, :c:type:`PySequenceMethods`, :c:"
@@ -260,97 +270,97 @@ msgid ""
"prefix. For example, use:"
msgstr ""
-#: c-api/type.rst:227
+#: c-api/type.rst:236
msgid "``Py_tp_dealloc`` to set :c:member:`PyTypeObject.tp_dealloc`"
msgstr ""
-#: c-api/type.rst:228
+#: c-api/type.rst:237
msgid "``Py_nb_add`` to set :c:member:`PyNumberMethods.nb_add`"
msgstr ""
-#: c-api/type.rst:229
+#: c-api/type.rst:238
msgid "``Py_sq_length`` to set :c:member:`PySequenceMethods.sq_length`"
msgstr ""
-#: c-api/type.rst:231
+#: c-api/type.rst:240
msgid ""
"The following fields cannot be set at all using :c:type:`PyType_Spec` and :c:"
"type:`PyType_Slot`:"
msgstr ""
-#: c-api/type.rst:234
+#: c-api/type.rst:243
msgid ":c:member:`~PyTypeObject.tp_dict`"
msgstr ""
-#: c-api/type.rst:235
+#: c-api/type.rst:244
msgid ":c:member:`~PyTypeObject.tp_mro`"
msgstr ""
-#: c-api/type.rst:236
+#: c-api/type.rst:245
msgid ":c:member:`~PyTypeObject.tp_cache`"
msgstr ""
-#: c-api/type.rst:237
+#: c-api/type.rst:246
msgid ":c:member:`~PyTypeObject.tp_subclasses`"
msgstr ""
-#: c-api/type.rst:238
+#: c-api/type.rst:247
msgid ":c:member:`~PyTypeObject.tp_weaklist`"
msgstr ""
-#: c-api/type.rst:239
+#: c-api/type.rst:248
msgid ":c:member:`~PyTypeObject.tp_vectorcall`"
msgstr ""
-#: c-api/type.rst:240
+#: c-api/type.rst:249
msgid ""
":c:member:`~PyTypeObject.tp_weaklistoffset` (see :ref:`PyMemberDef "
"`)"
msgstr ""
-#: c-api/type.rst:242
+#: c-api/type.rst:251
msgid ""
":c:member:`~PyTypeObject.tp_dictoffset` (see :ref:`PyMemberDef `)"
msgstr ""
-#: c-api/type.rst:244
+#: c-api/type.rst:253
msgid ""
":c:member:`~PyTypeObject.tp_vectorcall_offset` (see :ref:`PyMemberDef "
"`)"
msgstr ""
-#: c-api/type.rst:247
+#: c-api/type.rst:256
msgid ""
"The following fields cannot be set using :c:type:`PyType_Spec` and :c:type:"
"`PyType_Slot` under the limited API:"
msgstr ""
-#: c-api/type.rst:250
+#: c-api/type.rst:259
msgid ":c:member:`~PyBufferProcs.bf_getbuffer`"
msgstr ""
-#: c-api/type.rst:251
+#: c-api/type.rst:260
msgid ":c:member:`~PyBufferProcs.bf_releasebuffer`"
msgstr ""
-#: c-api/type.rst:253
+#: c-api/type.rst:262
msgid ""
"Setting :c:data:`Py_tp_bases` or :c:data:`Py_tp_base` may be problematic on "
"some platforms. To avoid issues, use the *bases* argument of :py:func:"
"`PyType_FromSpecWithBases` instead."
msgstr ""
-#: c-api/type.rst:260
-msgid "Slots in :c:type:`PyBufferProcs` in may be set in the unlimited API."
+#: c-api/type.rst:269
+msgid "Slots in :c:type:`PyBufferProcs` may be set in the unlimited API."
msgstr ""
-#: c-api/type.rst:264
+#: c-api/type.rst:273
msgid ""
"The desired value of the slot. In most cases, this is a pointer to a "
"function."
msgstr ""
-#: c-api/type.rst:267
+#: c-api/type.rst:276
msgid "May not be ``NULL``."
msgstr ""
diff --git a/c-api/typehints.po b/c-api/typehints.po
new file mode 100644
index 0000000000..cadb8396bd
--- /dev/null
+++ b/c-api/typehints.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2023, Python Software Foundation
+# This file is distributed under the same license as the Python package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Python 3.9\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../Doc/c-api/typehints.rst:6
+msgid "Objects for Type Hinting"
+msgstr ""
+
+#: ../Doc/c-api/typehints.rst:8
+msgid ""
+"Various built-in types for type hinting are provided. Only :ref:"
+"`GenericAlias ` is exposed to C."
+msgstr ""
+
+#: ../Doc/c-api/typehints.rst:13
+msgid ""
+"Create a :ref:`GenericAlias ` object. Equivalent to "
+"calling the Python class :class:`types.GenericAlias`. The *origin* and "
+"*args* arguments set the ``GenericAlias``\\ 's ``__origin__`` and "
+"``__args__`` attributes respectively. *origin* should be a :c:type:"
+"`PyTypeObject*`, and *args* can be a :c:type:`PyTupleObject*` or any "
+"``PyObject*``. If *args* passed is not a tuple, a 1-tuple is automatically "
+"constructed and ``__args__`` is set to ``(args,)``. Minimal checking is done "
+"for the arguments, so the function will succeed even if *origin* is not a "
+"type. The ``GenericAlias``\\ 's ``__parameters__`` attribute is constructed "
+"lazily from ``__args__``. On failure, an exception is raised and ``NULL`` "
+"is returned."
+msgstr ""
+
+#: ../Doc/c-api/typehints.rst:27
+msgid "Here's an example of how to make an extension type generic::"
+msgstr ""
+
+#: ../Doc/c-api/typehints.rst:37
+msgid "The data model method :meth:`__class_getitem__`."
+msgstr ""
+
+#: ../Doc/c-api/typehints.rst:43
+msgid ""
+"The C type of the object returned by :c:func:`Py_GenericAlias`. Equivalent "
+"to :class:`types.GenericAlias` in Python."
+msgstr ""
diff --git a/c-api/typeobj.po b/c-api/typeobj.po
index 170b5188ff..125d35bebb 100644
--- a/c-api/typeobj.po
+++ b/c-api/typeobj.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -22,11 +22,11 @@ msgstr "Objets type"
msgid ""
"Perhaps one of the most important structures of the Python object system is "
"the structure that defines a new type: the :c:type:`PyTypeObject` "
-"structure. Type objects can be handled using any of the :c:func:`PyObject_"
-"\\*` or :c:func:`PyType_\\*` functions, but do not offer much that's "
-"interesting to most Python applications. These objects are fundamental to "
-"how objects behave, so they are very important to the interpreter itself and "
-"to any extension module that implements new types."
+"structure. Type objects can be handled using any of the :c:func:"
+"`PyObject_\\*` or :c:func:`PyType_\\*` functions, but do not offer much "
+"that's interesting to most Python applications. These objects are "
+"fundamental to how objects behave, so they are very important to the "
+"interpreter itself and to any extension module that implements new types."
msgstr ""
#: c-api/typeobj.rst:16
@@ -113,7 +113,7 @@ msgstr ""
#: c-api/typeobj.rst:48 c-api/typeobj.rst:99 c-api/typeobj.rst:0
#: c-api/typeobj.rst:406
-msgid "Py_ssize_t"
+msgid ":c:type:`Py_ssize_t`"
msgstr ""
#: c-api/typeobj.rst:48
@@ -171,7 +171,7 @@ msgstr ""
#: c-api/typeobj.rst:64 c-api/typeobj.rst:68
msgid ":ref:`sub-slots`"
-msgstr ""
+msgstr ":ref:`sub-slots`"
#: c-api/typeobj.rst:64 c-api/typeobj.rst:68 c-api/typeobj.rst:82
msgid "%"
@@ -646,7 +646,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_subtract`"
msgstr ""
#: c-api/typeobj.rst:212
-msgid "__sub__"
+msgid "__isub__"
msgstr ""
#: c-api/typeobj.rst:214
@@ -661,8 +661,8 @@ msgstr ""
msgid ":c:member:`~PyNumberMethods.nb_inplace_multiply`"
msgstr ""
-#: c-api/typeobj.rst:303
-msgid "__mul__"
+#: c-api/typeobj.rst:314
+msgid "__imul__"
msgstr ""
#: c-api/typeobj.rst:219
@@ -678,7 +678,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_remainder`"
msgstr ""
#: c-api/typeobj.rst:222
-msgid "__mod__"
+msgid "__imod__"
msgstr ""
#: c-api/typeobj.rst:224
@@ -702,7 +702,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_power`"
msgstr ""
#: c-api/typeobj.rst:230
-msgid "__pow__"
+msgid "__ipow__"
msgstr ""
#: c-api/typeobj.rst:232
@@ -758,7 +758,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_lshift`"
msgstr ""
#: c-api/typeobj.rst:245
-msgid "__lshift__"
+msgid "__ilshift__"
msgstr ""
#: c-api/typeobj.rst:247
@@ -774,7 +774,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_rshift`"
msgstr ""
#: c-api/typeobj.rst:250
-msgid "__rshift__"
+msgid "__irshift__"
msgstr ""
#: c-api/typeobj.rst:252
@@ -790,7 +790,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_and`"
msgstr ""
#: c-api/typeobj.rst:255
-msgid "__and__"
+msgid "__iand__"
msgstr ""
#: c-api/typeobj.rst:257
@@ -806,7 +806,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_xor`"
msgstr ""
#: c-api/typeobj.rst:260
-msgid "__xor__"
+msgid "__ixor__"
msgstr ""
#: c-api/typeobj.rst:262
@@ -822,7 +822,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_or`"
msgstr ""
#: c-api/typeobj.rst:265
-msgid "__or__"
+msgid "__ior__"
msgstr ""
#: c-api/typeobj.rst:267
@@ -853,7 +853,7 @@ msgstr ""
msgid ":c:member:`~PyNumberMethods.nb_floor_divide`"
msgstr ""
-#: c-api/typeobj.rst:275
+#: c-api/typeobj.rst:273
msgid "__floordiv__"
msgstr ""
@@ -861,11 +861,15 @@ msgstr ""
msgid ":c:member:`~PyNumberMethods.nb_inplace_floor_divide`"
msgstr ""
+#: c-api/typeobj.rst:275
+msgid "__ifloordiv__"
+msgstr ""
+
#: c-api/typeobj.rst:277
msgid ":c:member:`~PyNumberMethods.nb_true_divide`"
msgstr ""
-#: c-api/typeobj.rst:279
+#: c-api/typeobj.rst:277
msgid "__truediv__"
msgstr ""
@@ -873,6 +877,10 @@ msgstr ""
msgid ":c:member:`~PyNumberMethods.nb_inplace_true_divide`"
msgstr ""
+#: c-api/typeobj.rst:279
+msgid "__itruediv__"
+msgstr ""
+
#: c-api/typeobj.rst:281
msgid ":c:member:`~PyNumberMethods.nb_index`"
msgstr ""
@@ -894,7 +902,7 @@ msgid ":c:member:`~PyNumberMethods.nb_inplace_matrix_multiply`"
msgstr ""
#: c-api/typeobj.rst:286
-msgid "__matmul__"
+msgid "__imatmul__"
msgstr ""
#: c-api/typeobj.rst:290
@@ -949,6 +957,10 @@ msgstr ""
msgid ":c:type:`ssizeargfunc`"
msgstr ""
+#: c-api/typeobj.rst:303
+msgid "__mul__"
+msgstr ""
+
#: c-api/typeobj.rst:305
msgid ":c:member:`~PySequenceMethods.sq_item`"
msgstr ""
@@ -985,10 +997,6 @@ msgstr ""
msgid ":c:member:`~PySequenceMethods.sq_inplace_repeat`"
msgstr ""
-#: c-api/typeobj.rst:314
-msgid "__imul__"
-msgstr ""
-
#: c-api/typeobj.rst:318
msgid ":c:member:`~PyBufferProcs.bf_getbuffer`"
msgstr ""
@@ -1073,11 +1081,10 @@ msgstr "Objets type"
#: c-api/typeobj.rst:476
msgid ""
"The type object structure extends the :c:type:`PyVarObject` structure. The :"
-"attr:`ob_size` field is used for dynamic types (created by :func:"
-"`type_new`, usually called from a class statement). Note that :c:data:"
-"`PyType_Type` (the metatype) initializes :c:member:`~PyTypeObject."
-"tp_itemsize`, which means that its instances (i.e. type objects) *must* have "
-"the :attr:`ob_size` field."
+"attr:`ob_size` field is used for dynamic types (created by :func:`type_new`, "
+"usually called from a class statement). Note that :c:data:`PyType_Type` (the "
+"metatype) initializes :c:member:`~PyTypeObject.tp_itemsize`, which means "
+"that its instances (i.e. type objects) *must* have the :attr:`ob_size` field."
msgstr ""
#: c-api/typeobj.rst:486
@@ -1093,15 +1100,15 @@ msgid ""
msgstr ""
#: c-api/typeobj.rst:508 c-api/typeobj.rst:544 c-api/typeobj.rst:629
-#: c-api/typeobj.rst:719 c-api/typeobj.rst:755 c-api/typeobj.rst:797
-#: c-api/typeobj.rst:826 c-api/typeobj.rst:871 c-api/typeobj.rst:909
-#: c-api/typeobj.rst:956 c-api/typeobj.rst:991 c-api/typeobj.rst:1039
-#: c-api/typeobj.rst:1059 c-api/typeobj.rst:1092 c-api/typeobj.rst:1162
-#: c-api/typeobj.rst:1245 c-api/typeobj.rst:1365 c-api/typeobj.rst:1427
-#: c-api/typeobj.rst:1463 c-api/typeobj.rst:1492 c-api/typeobj.rst:1542
-#: c-api/typeobj.rst:1586 c-api/typeobj.rst:1677 c-api/typeobj.rst:1732
-#: c-api/typeobj.rst:1785 c-api/typeobj.rst:1813 c-api/typeobj.rst:1832
-#: c-api/typeobj.rst:1856 c-api/typeobj.rst:1911
+#: c-api/typeobj.rst:731 c-api/typeobj.rst:767 c-api/typeobj.rst:809
+#: c-api/typeobj.rst:838 c-api/typeobj.rst:883 c-api/typeobj.rst:921
+#: c-api/typeobj.rst:968 c-api/typeobj.rst:1003 c-api/typeobj.rst:1051
+#: c-api/typeobj.rst:1071 c-api/typeobj.rst:1104 c-api/typeobj.rst:1174
+#: c-api/typeobj.rst:1257 c-api/typeobj.rst:1383 c-api/typeobj.rst:1445
+#: c-api/typeobj.rst:1481 c-api/typeobj.rst:1510 c-api/typeobj.rst:1560
+#: c-api/typeobj.rst:1604 c-api/typeobj.rst:1695 c-api/typeobj.rst:1750
+#: c-api/typeobj.rst:1803 c-api/typeobj.rst:1831 c-api/typeobj.rst:1850
+#: c-api/typeobj.rst:1874 c-api/typeobj.rst:1940
msgid "**Inheritance:**"
msgstr ""
@@ -1142,8 +1149,8 @@ msgid ""
"will not change this field if it is non-zero."
msgstr ""
-#: c-api/typeobj.rst:677 c-api/typeobj.rst:891 c-api/typeobj.rst:1429
-#: c-api/typeobj.rst:1570 c-api/typeobj.rst:1679 c-api/typeobj.rst:1896
+#: c-api/typeobj.rst:689 c-api/typeobj.rst:903 c-api/typeobj.rst:1447
+#: c-api/typeobj.rst:1588 c-api/typeobj.rst:1697 c-api/typeobj.rst:1925
msgid "This field is inherited by subtypes."
msgstr ""
@@ -1307,34 +1314,41 @@ msgstr ""
#: c-api/typeobj.rst:660
msgid ""
+"If the type supports garbage collection (has the :const:`Py_TPFLAGS_HAVE_GC` "
+"flag bit set), the destructor should call :c:func:`PyObject_GC_UnTrack` "
+"before clearing any member fields."
+msgstr ""
+
+#: c-api/typeobj.rst:672
+msgid ""
"Finally, if the type is heap allocated (:const:`Py_TPFLAGS_HEAPTYPE`), the "
"deallocator should decrement the reference count for its type object after "
"calling the type deallocator. In order to avoid dangling pointers, the "
"recommended way to achieve this is:"
msgstr ""
-#: c-api/typeobj.rst:682
+#: c-api/typeobj.rst:694
msgid ""
"An optional offset to a per-instance function that implements calling the "
"object using the :ref:`vectorcall protocol `, a more efficient "
"alternative of the simpler :c:member:`~PyTypeObject.tp_call`."
msgstr ""
-#: c-api/typeobj.rst:687
+#: c-api/typeobj.rst:699
msgid ""
"This field is only used if the flag :const:`Py_TPFLAGS_HAVE_VECTORCALL` is "
"set. If so, this must be a positive integer containing the offset in the "
"instance of a :c:type:`vectorcallfunc` pointer."
msgstr ""
-#: c-api/typeobj.rst:691
+#: c-api/typeobj.rst:703
msgid ""
"The *vectorcallfunc* pointer may be ``NULL``, in which case the instance "
"behaves as if :const:`Py_TPFLAGS_HAVE_VECTORCALL` was not set: calling the "
"instance falls back to :c:member:`~PyTypeObject.tp_call`."
msgstr ""
-#: c-api/typeobj.rst:695
+#: c-api/typeobj.rst:707
msgid ""
"Any class that sets ``Py_TPFLAGS_HAVE_VECTORCALL`` must also set :c:member:"
"`~PyTypeObject.tp_call` and make sure its behaviour is consistent with the "
@@ -1342,7 +1356,7 @@ msgid ""
"`PyVectorcall_Call`."
msgstr ""
-#: c-api/typeobj.rst:702
+#: c-api/typeobj.rst:714
msgid ""
"It is not recommended for :ref:`heap types ` to implement the "
"vectorcall protocol. When a user sets :attr:`__call__` in Python code, only "
@@ -1350,20 +1364,20 @@ msgid ""
"function."
msgstr ""
-#: c-api/typeobj.rst:709
+#: c-api/typeobj.rst:721
msgid ""
"The semantics of the ``tp_vectorcall_offset`` slot are provisional and "
"expected to be finalized in Python 3.9. If you use vectorcall, plan for "
"updating your code for Python 3.9."
msgstr ""
-#: c-api/typeobj.rst:715
+#: c-api/typeobj.rst:727
msgid ""
"Before version 3.8, this slot was named ``tp_print``. In Python 2.x, it was "
"used for printing to a file. In Python 3.0 to 3.7, it was unused."
msgstr ""
-#: c-api/typeobj.rst:721
+#: c-api/typeobj.rst:733
msgid ""
"This field is always inherited. However, the :const:"
"`Py_TPFLAGS_HAVE_VECTORCALL` flag is not always inherited. If it's not, then "
@@ -1372,11 +1386,11 @@ msgid ""
"`heap types`_ (including subclasses defined in Python)."
msgstr ""
-#: c-api/typeobj.rst:732
+#: c-api/typeobj.rst:744
msgid "An optional pointer to the get-attribute-string function."
msgstr ""
-#: c-api/typeobj.rst:734
+#: c-api/typeobj.rst:746
msgid ""
"This field is deprecated. When it is defined, it should point to a function "
"that acts the same as the :c:member:`~PyTypeObject.tp_getattro` function, "
@@ -1384,11 +1398,11 @@ msgid ""
"attribute name."
msgstr ""
-#: c-api/typeobj.rst:932
+#: c-api/typeobj.rst:944
msgid "Group: :attr:`tp_getattr`, :attr:`tp_getattro`"
msgstr ""
-#: c-api/typeobj.rst:742
+#: c-api/typeobj.rst:754
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_getattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` "
@@ -1397,12 +1411,12 @@ msgid ""
"tp_getattro` are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:945
+#: c-api/typeobj.rst:957
msgid ""
"An optional pointer to the function for setting and deleting attributes."
msgstr ""
-#: c-api/typeobj.rst:751
+#: c-api/typeobj.rst:763
msgid ""
"This field is deprecated. When it is defined, it should point to a function "
"that acts the same as the :c:member:`~PyTypeObject.tp_setattro` function, "
@@ -1410,11 +1424,11 @@ msgid ""
"attribute name."
msgstr ""
-#: c-api/typeobj.rst:958
+#: c-api/typeobj.rst:970
msgid "Group: :attr:`tp_setattr`, :attr:`tp_setattro`"
msgstr ""
-#: c-api/typeobj.rst:759
+#: c-api/typeobj.rst:771
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_setattro`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` "
@@ -1423,34 +1437,34 @@ msgid ""
"tp_setattro` are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:766
+#: c-api/typeobj.rst:778
msgid ""
"Pointer to an additional structure that contains fields relevant only to "
"objects which implement :term:`awaitable` and :term:`asynchronous iterator` "
"protocols at the C-level. See :ref:`async-structs` for details."
msgstr ""
-#: c-api/typeobj.rst:770
+#: c-api/typeobj.rst:782
msgid "Formerly known as ``tp_compare`` and ``tp_reserved``."
msgstr ""
-#: c-api/typeobj.rst:775
+#: c-api/typeobj.rst:787
msgid ""
"The :c:member:`~PyTypeObject.tp_as_async` field is not inherited, but the "
"contained fields are inherited individually."
msgstr ""
-#: c-api/typeobj.rst:783
+#: c-api/typeobj.rst:795
msgid ""
"An optional pointer to a function that implements the built-in function :"
"func:`repr`."
msgstr ""
-#: c-api/typeobj.rst:786
+#: c-api/typeobj.rst:798
msgid "The signature is the same as for :c:func:`PyObject_Repr`::"
msgstr ""
-#: c-api/typeobj.rst:790
+#: c-api/typeobj.rst:802
msgid ""
"The function must return a string or a Unicode object. Ideally, this "
"function should return a string that, when passed to :func:`eval`, given a "
@@ -1459,83 +1473,83 @@ msgid ""
"``'>'`` from which both the type and the value of the object can be deduced."
msgstr ""
-#: c-api/typeobj.rst:913 c-api/typeobj.rst:964 c-api/typeobj.rst:1374
-#: c-api/typeobj.rst:1547 c-api/typeobj.rst:1681 c-api/typeobj.rst:1737
-#: c-api/typeobj.rst:1789
+#: c-api/typeobj.rst:925 c-api/typeobj.rst:976 c-api/typeobj.rst:1392
+#: c-api/typeobj.rst:1565 c-api/typeobj.rst:1699 c-api/typeobj.rst:1755
+#: c-api/typeobj.rst:1807
msgid "**Default:**"
msgstr ""
-#: c-api/typeobj.rst:803
+#: c-api/typeobj.rst:815
msgid ""
"When this field is not set, a string of the form ``<%s object at %p>`` is "
"returned, where ``%s`` is replaced by the type name, and ``%p`` by the "
"object's memory address."
msgstr ""
-#: c-api/typeobj.rst:810
+#: c-api/typeobj.rst:822
msgid ""
"Pointer to an additional structure that contains fields relevant only to "
"objects which implement the number protocol. These fields are documented "
"in :ref:`number-structs`."
msgstr ""
-#: c-api/typeobj.rst:816
+#: c-api/typeobj.rst:828
msgid ""
"The :c:member:`~PyTypeObject.tp_as_number` field is not inherited, but the "
"contained fields are inherited individually."
msgstr ""
-#: c-api/typeobj.rst:822
+#: c-api/typeobj.rst:834
msgid ""
"Pointer to an additional structure that contains fields relevant only to "
"objects which implement the sequence protocol. These fields are documented "
"in :ref:`sequence-structs`."
msgstr ""
-#: c-api/typeobj.rst:828
+#: c-api/typeobj.rst:840
msgid ""
"The :c:member:`~PyTypeObject.tp_as_sequence` field is not inherited, but the "
"contained fields are inherited individually."
msgstr ""
-#: c-api/typeobj.rst:834
+#: c-api/typeobj.rst:846
msgid ""
"Pointer to an additional structure that contains fields relevant only to "
"objects which implement the mapping protocol. These fields are documented "
"in :ref:`mapping-structs`."
msgstr ""
-#: c-api/typeobj.rst:840
+#: c-api/typeobj.rst:852
msgid ""
"The :c:member:`~PyTypeObject.tp_as_mapping` field is not inherited, but the "
"contained fields are inherited individually."
msgstr ""
-#: c-api/typeobj.rst:848
+#: c-api/typeobj.rst:860
msgid ""
"An optional pointer to a function that implements the built-in function :"
"func:`hash`."
msgstr ""
-#: c-api/typeobj.rst:851
+#: c-api/typeobj.rst:863
msgid "The signature is the same as for :c:func:`PyObject_Hash`::"
msgstr ""
-#: c-api/typeobj.rst:855
+#: c-api/typeobj.rst:867
msgid ""
"The value ``-1`` should not be returned as a normal return value; when an "
"error occurs during the computation of the hash value, the function should "
"set an exception and return ``-1``."
msgstr ""
-#: c-api/typeobj.rst:859
+#: c-api/typeobj.rst:871
msgid ""
"When this field is not set (*and* :attr:`tp_richcompare` is not set), an "
"attempt to take the hash of the object raises :exc:`TypeError`. This is the "
"same as setting it to :c:func:`PyObject_HashNotImplemented`."
msgstr ""
-#: c-api/typeobj.rst:863
+#: c-api/typeobj.rst:875
msgid ""
"This field can be set explicitly to :c:func:`PyObject_HashNotImplemented` to "
"block inheritance of the hash method from a parent type. This is interpreted "
@@ -1546,11 +1560,11 @@ msgid ""
"`PyObject_HashNotImplemented`."
msgstr ""
-#: c-api/typeobj.rst:1367
+#: c-api/typeobj.rst:1385
msgid "Group: :attr:`tp_hash`, :attr:`tp_richcompare`"
msgstr ""
-#: c-api/typeobj.rst:875
+#: c-api/typeobj.rst:887
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_richcompare`: a subtype inherits both of :c:member:`~PyTypeObject."
@@ -1559,14 +1573,14 @@ msgid ""
"are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:883
+#: c-api/typeobj.rst:895
msgid ""
"An optional pointer to a function that implements calling the object. This "
"should be ``NULL`` if the object is not callable. The signature is the same "
"as for :c:func:`PyObject_Call`::"
msgstr ""
-#: c-api/typeobj.rst:896
+#: c-api/typeobj.rst:908
msgid ""
"An optional pointer to a function that implements the built-in operation :"
"func:`str`. (Note that :class:`str` is a type now, and :func:`str` calls "
@@ -1575,11 +1589,11 @@ msgid ""
"this handler.)"
msgstr ""
-#: c-api/typeobj.rst:901
+#: c-api/typeobj.rst:913
msgid "The signature is the same as for :c:func:`PyObject_Str`::"
msgstr ""
-#: c-api/typeobj.rst:905
+#: c-api/typeobj.rst:917
msgid ""
"The function must return a string or a Unicode object. It should be a "
"\"friendly\" string representation of the object, as this is the "
@@ -1587,28 +1601,28 @@ msgid ""
"function."
msgstr ""
-#: c-api/typeobj.rst:915
+#: c-api/typeobj.rst:927
msgid ""
"When this field is not set, :c:func:`PyObject_Repr` is called to return a "
"string representation."
msgstr ""
-#: c-api/typeobj.rst:921
+#: c-api/typeobj.rst:933
msgid "An optional pointer to the get-attribute function."
msgstr ""
-#: c-api/typeobj.rst:923
+#: c-api/typeobj.rst:935
msgid "The signature is the same as for :c:func:`PyObject_GetAttr`::"
msgstr ""
-#: c-api/typeobj.rst:927
+#: c-api/typeobj.rst:939
msgid ""
"It is usually convenient to set this field to :c:func:"
"`PyObject_GenericGetAttr`, which implements the normal way of looking for "
"object attributes."
msgstr ""
-#: c-api/typeobj.rst:934
+#: c-api/typeobj.rst:946
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_getattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_getattr` "
@@ -1617,15 +1631,15 @@ msgid ""
"tp_getattro` are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:940
+#: c-api/typeobj.rst:952
msgid ":c:type:`PyBaseObject_Type` uses :c:func:`PyObject_GenericGetAttr`."
msgstr ""
-#: c-api/typeobj.rst:947
+#: c-api/typeobj.rst:959
msgid "The signature is the same as for :c:func:`PyObject_SetAttr`::"
msgstr ""
-#: c-api/typeobj.rst:951
+#: c-api/typeobj.rst:963
msgid ""
"In addition, setting *value* to ``NULL`` to delete an attribute must be "
"supported. It is usually convenient to set this field to :c:func:"
@@ -1633,7 +1647,7 @@ msgid ""
"attributes."
msgstr ""
-#: c-api/typeobj.rst:960
+#: c-api/typeobj.rst:972
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_setattr`: a subtype inherits both :c:member:`~PyTypeObject.tp_setattr` "
@@ -1642,24 +1656,24 @@ msgid ""
"tp_setattro` are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:966
+#: c-api/typeobj.rst:978
msgid ":c:type:`PyBaseObject_Type` uses :c:func:`PyObject_GenericSetAttr`."
msgstr ""
-#: c-api/typeobj.rst:971
+#: c-api/typeobj.rst:983
msgid ""
"Pointer to an additional structure that contains fields relevant only to "
"objects which implement the buffer interface. These fields are documented "
"in :ref:`buffer-structs`."
msgstr ""
-#: c-api/typeobj.rst:977
+#: c-api/typeobj.rst:989
msgid ""
"The :c:member:`~PyTypeObject.tp_as_buffer` field is not inherited, but the "
"contained fields are inherited individually."
msgstr ""
-#: c-api/typeobj.rst:983
+#: c-api/typeobj.rst:995
msgid ""
"This field is a bit mask of various flags. Some flags indicate variant "
"semantics for certain situations; others are used to indicate that certain "
@@ -1671,7 +1685,7 @@ msgid ""
"accessed and must be considered to have a zero or ``NULL`` value instead."
msgstr ""
-#: c-api/typeobj.rst:993
+#: c-api/typeobj.rst:1005
msgid ""
"Inheritance of this field is complicated. Most flag bits are inherited "
"individually, i.e. if the base type has a flag bit set, the subtype inherits "
@@ -1686,17 +1700,17 @@ msgid ""
"the subtype exist and have ``NULL`` values."
msgstr ""
-#: c-api/typeobj.rst:1008
+#: c-api/typeobj.rst:1020
msgid ""
":c:type:`PyBaseObject_Type` uses ``Py_TPFLAGS_DEFAULT | "
"Py_TPFLAGS_BASETYPE``."
msgstr ""
-#: c-api/typeobj.rst:1011
+#: c-api/typeobj.rst:1023
msgid "**Bit Masks:**"
msgstr ""
-#: c-api/typeobj.rst:1013
+#: c-api/typeobj.rst:1025
msgid ""
"The following bit masks are currently defined; these can be ORed together "
"using the ``|`` operator to form the value of the :c:member:`~PyTypeObject."
@@ -1705,7 +1719,7 @@ msgid ""
"zero."
msgstr ""
-#: c-api/typeobj.rst:1020
+#: c-api/typeobj.rst:1032
msgid ""
"This bit is set when the type object itself is allocated on the heap, for "
"example, types created dynamically using :c:func:`PyType_FromSpec`. In this "
@@ -1716,30 +1730,30 @@ msgid ""
"gets INCREF'ed or DECREF'ed)."
msgstr ""
-#: c-api/typeobj.rst:1041 c-api/typeobj.rst:1061 c-api/typeobj.rst:1094
+#: c-api/typeobj.rst:1053 c-api/typeobj.rst:1073 c-api/typeobj.rst:1106
msgid "???"
msgstr ""
-#: c-api/typeobj.rst:1035
+#: c-api/typeobj.rst:1047
msgid ""
"This bit is set when the type can be used as the base type of another type. "
"If this bit is clear, the type cannot be subtyped (similar to a \"final\" "
"class in Java)."
msgstr ""
-#: c-api/typeobj.rst:1046
+#: c-api/typeobj.rst:1058
msgid ""
"This bit is set when the type object has been fully initialized by :c:func:"
"`PyType_Ready`."
msgstr ""
-#: c-api/typeobj.rst:1056
+#: c-api/typeobj.rst:1068
msgid ""
"This bit is set while :c:func:`PyType_Ready` is in the process of "
"initializing the type object."
msgstr ""
-#: c-api/typeobj.rst:1066
+#: c-api/typeobj.rst:1078
msgid ""
"This bit is set when the object supports garbage collection. If this bit is "
"set, instances must be created using :c:func:`PyObject_GC_New` and destroyed "
@@ -1749,12 +1763,12 @@ msgid ""
"tp_clear` are present in the type object."
msgstr ""
-#: c-api/typeobj.rst:1247 c-api/typeobj.rst:1308
+#: c-api/typeobj.rst:1259 c-api/typeobj.rst:1326
msgid ""
"Group: :const:`Py_TPFLAGS_HAVE_GC`, :attr:`tp_traverse`, :attr:`tp_clear`"
msgstr ""
-#: c-api/typeobj.rst:1077
+#: c-api/typeobj.rst:1089
msgid ""
"The :const:`Py_TPFLAGS_HAVE_GC` flag bit is inherited together with the :"
"attr:`tp_traverse` and :attr:`tp_clear` fields, i.e. if the :const:"
@@ -1763,7 +1777,7 @@ msgid ""
"``NULL`` values."
msgstr ""
-#: c-api/typeobj.rst:1087
+#: c-api/typeobj.rst:1099
msgid ""
"This is a bitmask of all the bits that pertain to the existence of certain "
"fields in the type object and its extension structures. Currently, it "
@@ -1771,40 +1785,40 @@ msgid ""
"const:`Py_TPFLAGS_HAVE_VERSION_TAG`."
msgstr ""
-#: c-api/typeobj.rst:1099
+#: c-api/typeobj.rst:1111
msgid "This bit indicates that objects behave like unbound methods."
msgstr ""
-#: c-api/typeobj.rst:1101
+#: c-api/typeobj.rst:1113
msgid "If this flag is set for ``type(meth)``, then:"
msgstr ""
-#: c-api/typeobj.rst:1103
+#: c-api/typeobj.rst:1115
msgid ""
"``meth.__get__(obj, cls)(*args, **kwds)`` (with ``obj`` not None) must be "
"equivalent to ``meth(obj, *args, **kwds)``."
msgstr ""
-#: c-api/typeobj.rst:1106
+#: c-api/typeobj.rst:1118
msgid ""
"``meth.__get__(None, cls)(*args, **kwds)`` must be equivalent to "
"``meth(*args, **kwds)``."
msgstr ""
-#: c-api/typeobj.rst:1109
+#: c-api/typeobj.rst:1121
msgid ""
"This flag enables an optimization for typical method calls like ``obj."
"meth()``: it avoids creating a temporary \"bound method\" object for ``obj."
"meth``."
msgstr ""
-#: c-api/typeobj.rst:1117
+#: c-api/typeobj.rst:1129
msgid ""
"This flag is never inherited by heap types. For extension types, it is "
"inherited whenever :c:member:`~PyTypeObject.tp_descr_get` is inherited."
msgstr ""
-#: c-api/typeobj.rst:1134
+#: c-api/typeobj.rst:1146
msgid ""
"These flags are used by functions such as :c:func:`PyLong_Check` to quickly "
"determine if a type is a subclass of a built-in type; such specific checks "
@@ -1814,57 +1828,57 @@ msgid ""
"behave differently depending on what kind of check is used."
msgstr ""
-#: c-api/typeobj.rst:1145
+#: c-api/typeobj.rst:1157
msgid ""
"This bit is set when the :c:member:`~PyTypeObject.tp_finalize` slot is "
"present in the type structure."
msgstr ""
-#: c-api/typeobj.rst:1150
+#: c-api/typeobj.rst:1162
msgid ""
"This flag isn't necessary anymore, as the interpreter assumes the :c:member:"
"`~PyTypeObject.tp_finalize` slot is always present in the type structure."
msgstr ""
-#: c-api/typeobj.rst:1158
+#: c-api/typeobj.rst:1170
msgid ""
"This bit is set when the class implements the :ref:`vectorcall protocol "
"`. See :c:member:`~PyTypeObject.tp_vectorcall_offset` for "
"details."
msgstr ""
-#: c-api/typeobj.rst:1164
+#: c-api/typeobj.rst:1176
msgid ""
"This bit is inherited for *static* subtypes if :c:member:`~PyTypeObject."
"tp_call` is also inherited. `Heap types`_ do not inherit "
"``Py_TPFLAGS_HAVE_VECTORCALL``."
msgstr ""
-#: c-api/typeobj.rst:1173
+#: c-api/typeobj.rst:1185
msgid ""
"An optional pointer to a NUL-terminated C string giving the docstring for "
"this type object. This is exposed as the :attr:`__doc__` attribute on the "
"type and instances of the type."
msgstr ""
-#: c-api/typeobj.rst:1179
+#: c-api/typeobj.rst:1191
msgid "This field is *not* inherited by subtypes."
msgstr ""
-#: c-api/typeobj.rst:1184
+#: c-api/typeobj.rst:1196
msgid ""
"An optional pointer to a traversal function for the garbage collector. This "
"is only used if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is set. The "
"signature is::"
msgstr ""
-#: c-api/typeobj.rst:1303
+#: c-api/typeobj.rst:1321
msgid ""
"More information about Python's garbage collection scheme can be found in "
"section :ref:`supporting-cycle-detection`."
msgstr ""
-#: c-api/typeobj.rst:1192
+#: c-api/typeobj.rst:1204
msgid ""
"The :c:member:`~PyTypeObject.tp_traverse` pointer is used by the garbage "
"collector to detect reference cycles. A typical implementation of a :c:"
@@ -1874,7 +1888,7 @@ msgid ""
"`_thread` extension module::"
msgstr ""
-#: c-api/typeobj.rst:1207
+#: c-api/typeobj.rst:1219
msgid ""
"Note that :c:func:`Py_VISIT` is called only on those members that can "
"participate in reference cycles. Although there is also a ``self->key`` "
@@ -1882,14 +1896,14 @@ msgid ""
"part of a reference cycle."
msgstr ""
-#: c-api/typeobj.rst:1211
+#: c-api/typeobj.rst:1223
msgid ""
"On the other hand, even if you know a member can never be part of a cycle, "
"as a debugging aid you may want to visit it anyway just so the :mod:`gc` "
"module's :func:`~gc.get_referents` function will include it."
msgstr ""
-#: c-api/typeobj.rst:1216
+#: c-api/typeobj.rst:1228
msgid ""
"When implementing :c:member:`~PyTypeObject.tp_traverse`, only the members "
"that the instance *owns* (by having strong references to them) must be "
@@ -1902,14 +1916,14 @@ msgid ""
"removed even if the instance is still alive)."
msgstr ""
-#: c-api/typeobj.rst:1226
+#: c-api/typeobj.rst:1238
msgid ""
"Note that :c:func:`Py_VISIT` requires the *visit* and *arg* parameters to :c:"
"func:`local_traverse` to have these specific names; don't name them just "
"anything."
msgstr ""
-#: c-api/typeobj.rst:1230
+#: c-api/typeobj.rst:1242
msgid ""
"Heap-allocated types (:const:`Py_TPFLAGS_HEAPTYPE`, such as those created "
"with :c:func:`PyType_FromSpec` and similar APIs) hold a reference to their "
@@ -1919,14 +1933,14 @@ msgid ""
"superclass). If they do not, the type object may not be garbage-collected."
msgstr ""
-#: c-api/typeobj.rst:1240
+#: c-api/typeobj.rst:1252
msgid ""
"Heap-allocated types are expected to visit ``Py_TYPE(self)`` in "
"``tp_traverse``. In earlier versions of Python, due to `bug 40217 `_, doing this may lead to crashes in subclasses."
msgstr ""
-#: c-api/typeobj.rst:1249
+#: c-api/typeobj.rst:1261
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_clear` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:"
@@ -1934,14 +1948,14 @@ msgid ""
"are all inherited from the base type if they are all zero in the subtype."
msgstr ""
-#: c-api/typeobj.rst:1257
+#: c-api/typeobj.rst:1269
msgid ""
"An optional pointer to a clear function for the garbage collector. This is "
"only used if the :const:`Py_TPFLAGS_HAVE_GC` flag bit is set. The signature "
"is::"
msgstr ""
-#: c-api/typeobj.rst:1262
+#: c-api/typeobj.rst:1274
msgid ""
"The :c:member:`~PyTypeObject.tp_clear` member function is used to break "
"reference cycles in cyclic garbage detected by the garbage collector. Taken "
@@ -1956,7 +1970,7 @@ msgid ""
"good reason to avoid implementing :c:member:`~PyTypeObject.tp_clear`."
msgstr ""
-#: c-api/typeobj.rst:1272
+#: c-api/typeobj.rst:1284
msgid ""
"Implementations of :c:member:`~PyTypeObject.tp_clear` should drop the "
"instance's references to those of its members that may be Python objects, "
@@ -1964,7 +1978,7 @@ msgid ""
"example::"
msgstr ""
-#: c-api/typeobj.rst:1286
+#: c-api/typeobj.rst:1298
msgid ""
"The :c:func:`Py_CLEAR` macro should be used, because clearing references is "
"delicate: the reference to the contained object must not be decremented "
@@ -1979,7 +1993,15 @@ msgid ""
"in a safe order."
msgstr ""
-#: c-api/typeobj.rst:1297
+#: c-api/typeobj.rst:1309
+msgid ""
+"Note that :c:member:`~PyTypeObject.tp_clear` is not *always* called before "
+"an instance is deallocated. For example, when reference counting is enough "
+"to determine that an object is no longer used, the cyclic garbage collector "
+"is not involved and :c:member:`~PyTypeObject.tp_dealloc` is called directly."
+msgstr ""
+
+#: c-api/typeobj.rst:1315
msgid ""
"Because the goal of :c:member:`~PyTypeObject.tp_clear` functions is to break "
"reference cycles, it's not necessary to clear contained objects like Python "
@@ -1989,7 +2011,7 @@ msgid ""
"invoke :c:member:`~PyTypeObject.tp_clear`."
msgstr ""
-#: c-api/typeobj.rst:1310
+#: c-api/typeobj.rst:1328
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_traverse` and the :const:`Py_TPFLAGS_HAVE_GC` flag bit: the flag bit, :c:"
@@ -1997,18 +2019,18 @@ msgid ""
"are all inherited from the base type if they are all zero in the subtype."
msgstr ""
-#: c-api/typeobj.rst:1318
+#: c-api/typeobj.rst:1336
msgid ""
"An optional pointer to the rich comparison function, whose signature is::"
msgstr ""
-#: c-api/typeobj.rst:1322
+#: c-api/typeobj.rst:1340
msgid ""
"The first parameter is guaranteed to be an instance of the type that is "
"defined by :c:type:`PyTypeObject`."
msgstr ""
-#: c-api/typeobj.rst:1325
+#: c-api/typeobj.rst:1343
msgid ""
"The function should return the result of the comparison (usually ``Py_True`` "
"or ``Py_False``). If the comparison is undefined, it must return "
@@ -2016,74 +2038,74 @@ msgid ""
"set an exception condition."
msgstr ""
-#: c-api/typeobj.rst:1330
+#: c-api/typeobj.rst:1348
msgid ""
"The following constants are defined to be used as the third argument for :c:"
"member:`~PyTypeObject.tp_richcompare` and for :c:func:`PyObject_RichCompare`:"
msgstr ""
-#: c-api/typeobj.rst:1334
+#: c-api/typeobj.rst:1352
msgid "Constant"
msgstr "Constante"
-#: c-api/typeobj.rst:1334
+#: c-api/typeobj.rst:1352
msgid "Comparison"
msgstr "Comparaison"
-#: c-api/typeobj.rst:1336
+#: c-api/typeobj.rst:1354
msgid ":const:`Py_LT`"
-msgstr ""
+msgstr ":const:`Py_LT`"
-#: c-api/typeobj.rst:1336
+#: c-api/typeobj.rst:1354
msgid "``<``"
msgstr "``<``"
-#: c-api/typeobj.rst:1338
+#: c-api/typeobj.rst:1356
msgid ":const:`Py_LE`"
-msgstr ""
+msgstr ":const:`Py_LE`"
-#: c-api/typeobj.rst:1338
+#: c-api/typeobj.rst:1356
msgid "``<=``"
msgstr "``<=``"
-#: c-api/typeobj.rst:1340
+#: c-api/typeobj.rst:1358
msgid ":const:`Py_EQ`"
-msgstr ""
+msgstr ":const:`Py_EQ`"
-#: c-api/typeobj.rst:1340
+#: c-api/typeobj.rst:1358
msgid "``==``"
msgstr "``==``"
-#: c-api/typeobj.rst:1342
+#: c-api/typeobj.rst:1360
msgid ":const:`Py_NE`"
-msgstr ""
+msgstr ":const:`Py_NE`"
-#: c-api/typeobj.rst:1342
+#: c-api/typeobj.rst:1360
msgid "``!=``"
msgstr "``!=``"
-#: c-api/typeobj.rst:1344
+#: c-api/typeobj.rst:1362
msgid ":const:`Py_GT`"
-msgstr ""
+msgstr ":const:`Py_GT`"
-#: c-api/typeobj.rst:1344
+#: c-api/typeobj.rst:1362
msgid "``>``"
msgstr "``>``"
-#: c-api/typeobj.rst:1346
+#: c-api/typeobj.rst:1364
msgid ":const:`Py_GE`"
-msgstr ""
+msgstr ":const:`Py_GE`"
-#: c-api/typeobj.rst:1346
+#: c-api/typeobj.rst:1364
msgid "``>=``"
msgstr "``>=``"
-#: c-api/typeobj.rst:1349
+#: c-api/typeobj.rst:1367
msgid ""
"The following macro is defined to ease writing rich comparison functions:"
msgstr ""
-#: c-api/typeobj.rst:1353
+#: c-api/typeobj.rst:1371
msgid ""
"Return ``Py_True`` or ``Py_False`` from the function, depending on the "
"result of a comparison. VAL_A and VAL_B must be orderable by C comparison "
@@ -2091,15 +2113,15 @@ msgid ""
"specifies the requested operation, as for :c:func:`PyObject_RichCompare`."
msgstr ""
-#: c-api/typeobj.rst:1359
+#: c-api/typeobj.rst:1377
msgid "The return value's reference count is properly incremented."
msgstr ""
-#: c-api/typeobj.rst:1361
+#: c-api/typeobj.rst:1379
msgid "On error, sets an exception and returns ``NULL`` from the function."
msgstr ""
-#: c-api/typeobj.rst:1369
+#: c-api/typeobj.rst:1387
msgid ""
"This field is inherited by subtypes together with :c:member:`~PyTypeObject."
"tp_hash`: a subtype inherits :c:member:`~PyTypeObject.tp_richcompare` and :c:"
@@ -2107,7 +2129,7 @@ msgid ""
"tp_richcompare` and :c:member:`~PyTypeObject.tp_hash` are both ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:1376
+#: c-api/typeobj.rst:1394
msgid ""
":c:type:`PyBaseObject_Type` provides a :attr:`tp_richcompare` "
"implementation, which may be inherited. However, if only :attr:`tp_hash` is "
@@ -2115,7 +2137,7 @@ msgid ""
"will not be able to participate in any comparisons."
msgstr ""
-#: c-api/typeobj.rst:1385
+#: c-api/typeobj.rst:1403
msgid ""
"If the instances of this type are weakly referenceable, this field is "
"greater than zero and contains the offset in the instance structure of the "
@@ -2125,13 +2147,13 @@ msgid ""
"`PyObject*` which is initialized to ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:1392
+#: c-api/typeobj.rst:1410
msgid ""
"Do not confuse this field with :c:member:`~PyTypeObject.tp_weaklist`; that "
"is the list head for weak references to the type object itself."
msgstr ""
-#: c-api/typeobj.rst:1397
+#: c-api/typeobj.rst:1415
msgid ""
"This field is inherited by subtypes, but see the rules listed below. A "
"subtype may override this offset; this means that the subtype uses a "
@@ -2140,7 +2162,7 @@ msgid ""
"not be a problem."
msgstr ""
-#: c-api/typeobj.rst:1402
+#: c-api/typeobj.rst:1420
msgid ""
"When a type defined by a class statement has no :attr:`~object.__slots__` "
"declaration, and none of its base types are weakly referenceable, the type "
@@ -2149,7 +2171,7 @@ msgid ""
"tp_weaklistoffset` of that slot's offset."
msgstr ""
-#: c-api/typeobj.rst:1407
+#: c-api/typeobj.rst:1425
msgid ""
"When a type's :attr:`__slots__` declaration contains a slot named :attr:"
"`__weakref__`, that slot becomes the weak reference list head for instances "
@@ -2157,31 +2179,31 @@ msgid ""
"`~PyTypeObject.tp_weaklistoffset`."
msgstr ""
-#: c-api/typeobj.rst:1412
+#: c-api/typeobj.rst:1430
msgid ""
"When a type's :attr:`__slots__` declaration does not contain a slot named :"
"attr:`__weakref__`, the type inherits its :c:member:`~PyTypeObject."
"tp_weaklistoffset` from its base type."
msgstr ""
-#: c-api/typeobj.rst:1419
+#: c-api/typeobj.rst:1437
msgid ""
"An optional pointer to a function that returns an iterator for the object. "
"Its presence normally signals that the instances of this type are iterable "
"(although sequences may be iterable without this function)."
msgstr ""
-#: c-api/typeobj.rst:1423
+#: c-api/typeobj.rst:1441
msgid "This function has the same signature as :c:func:`PyObject_GetIter`::"
msgstr ""
-#: c-api/typeobj.rst:1434
+#: c-api/typeobj.rst:1452
msgid ""
"An optional pointer to a function that returns the next item in an iterator. "
"The signature is::"
msgstr ""
-#: c-api/typeobj.rst:1439
+#: c-api/typeobj.rst:1457
msgid ""
"When the iterator is exhausted, it must return ``NULL``; a :exc:"
"`StopIteration` exception may or may not be set. When another error occurs, "
@@ -2189,74 +2211,74 @@ msgid ""
"this type are iterators."
msgstr ""
-#: c-api/typeobj.rst:1444
+#: c-api/typeobj.rst:1462
msgid ""
"Iterator types should also define the :c:member:`~PyTypeObject.tp_iter` "
"function, and that function should return the iterator instance itself (not "
"a new iterator instance)."
msgstr ""
-#: c-api/typeobj.rst:1448
+#: c-api/typeobj.rst:1466
msgid "This function has the same signature as :c:func:`PyIter_Next`."
msgstr ""
-#: c-api/typeobj.rst:1457
+#: c-api/typeobj.rst:1475
msgid ""
"An optional pointer to a static ``NULL``-terminated array of :c:type:"
"`PyMethodDef` structures, declaring regular methods of this type."
msgstr ""
-#: c-api/typeobj.rst:1460
+#: c-api/typeobj.rst:1478
msgid ""
"For each entry in the array, an entry is added to the type's dictionary "
"(see :c:member:`~PyTypeObject.tp_dict` below) containing a method descriptor."
msgstr ""
-#: c-api/typeobj.rst:1465
+#: c-api/typeobj.rst:1483
msgid ""
"This field is not inherited by subtypes (methods are inherited through a "
"different mechanism)."
msgstr ""
-#: c-api/typeobj.rst:1471
+#: c-api/typeobj.rst:1489
msgid ""
"An optional pointer to a static ``NULL``-terminated array of :c:type:"
"`PyMemberDef` structures, declaring regular data members (fields or slots) "
"of instances of this type."
msgstr ""
-#: c-api/typeobj.rst:1475
+#: c-api/typeobj.rst:1493
msgid ""
"For each entry in the array, an entry is added to the type's dictionary "
"(see :c:member:`~PyTypeObject.tp_dict` below) containing a member descriptor."
msgstr ""
-#: c-api/typeobj.rst:1480
+#: c-api/typeobj.rst:1498
msgid ""
"This field is not inherited by subtypes (members are inherited through a "
"different mechanism)."
msgstr ""
-#: c-api/typeobj.rst:1486
+#: c-api/typeobj.rst:1504
msgid ""
"An optional pointer to a static ``NULL``-terminated array of :c:type:"
"`PyGetSetDef` structures, declaring computed attributes of instances of this "
"type."
msgstr ""
-#: c-api/typeobj.rst:1489
+#: c-api/typeobj.rst:1507
msgid ""
"For each entry in the array, an entry is added to the type's dictionary "
"(see :c:member:`~PyTypeObject.tp_dict` below) containing a getset descriptor."
msgstr ""
-#: c-api/typeobj.rst:1494
+#: c-api/typeobj.rst:1512
msgid ""
"This field is not inherited by subtypes (computed attributes are inherited "
"through a different mechanism)."
msgstr ""
-#: c-api/typeobj.rst:1500
+#: c-api/typeobj.rst:1518
msgid ""
"An optional pointer to a base type from which type properties are "
"inherited. At this level, only single inheritance is supported; multiple "
@@ -2264,7 +2286,7 @@ msgid ""
"metatype."
msgstr ""
-#: c-api/typeobj.rst:1508
+#: c-api/typeobj.rst:1526
msgid ""
"Slot initialization is subject to the rules of initializing globals. C99 "
"requires the initializers to be \"address constants\". Function designators "
@@ -2272,7 +2294,7 @@ msgid ""
"valid C99 address constants."
msgstr ""
-#: c-api/typeobj.rst:1513
+#: c-api/typeobj.rst:1531
msgid ""
"However, the unary '&' operator applied to a non-static variable like :c:"
"func:`PyBaseObject_Type` is not required to produce an address constant. "
@@ -2280,27 +2302,27 @@ msgid ""
"strictly standard conforming in this particular behavior."
msgstr ""
-#: c-api/typeobj.rst:1519
+#: c-api/typeobj.rst:1537
msgid ""
"Consequently, :c:member:`~PyTypeObject.tp_base` should be set in the "
"extension module's init function."
msgstr ""
-#: c-api/typeobj.rst:1524
+#: c-api/typeobj.rst:1542
msgid "This field is not inherited by subtypes (obviously)."
msgstr ""
-#: c-api/typeobj.rst:1528
+#: c-api/typeobj.rst:1546
msgid ""
"This field defaults to ``&PyBaseObject_Type`` (which to Python programmers "
"is known as the type :class:`object`)."
msgstr ""
-#: c-api/typeobj.rst:1534
+#: c-api/typeobj.rst:1552
msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`."
msgstr ""
-#: c-api/typeobj.rst:1536
+#: c-api/typeobj.rst:1554
msgid ""
"This field should normally be initialized to ``NULL`` before PyType_Ready is "
"called; it may also be initialized to a dictionary containing initial "
@@ -2309,43 +2331,43 @@ msgid ""
"they don't correspond to overloaded operations (like :meth:`__add__`)."
msgstr ""
-#: c-api/typeobj.rst:1544
+#: c-api/typeobj.rst:1562
msgid ""
"This field is not inherited by subtypes (though the attributes defined in "
"here are inherited through a different mechanism)."
msgstr ""
-#: c-api/typeobj.rst:1549
+#: c-api/typeobj.rst:1567
msgid ""
"If this field is ``NULL``, :c:func:`PyType_Ready` will assign a new "
"dictionary to it."
msgstr ""
-#: c-api/typeobj.rst:1554
+#: c-api/typeobj.rst:1572
msgid ""
"It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify :c:"
"member:`~PyTypeObject.tp_dict` with the dictionary C-API."
msgstr ""
-#: c-api/typeobj.rst:1560
+#: c-api/typeobj.rst:1578
msgid "An optional pointer to a \"descriptor get\" function."
msgstr ""
-#: c-api/typeobj.rst:1578 c-api/typeobj.rst:1690 c-api/typeobj.rst:1714
+#: c-api/typeobj.rst:1596 c-api/typeobj.rst:1708 c-api/typeobj.rst:1732
msgid "The function signature is::"
msgstr ""
-#: c-api/typeobj.rst:1575
+#: c-api/typeobj.rst:1593
msgid ""
"An optional pointer to a function for setting and deleting a descriptor's "
"value."
msgstr ""
-#: c-api/typeobj.rst:1582
+#: c-api/typeobj.rst:1600
msgid "The *value* argument is set to ``NULL`` to delete the value."
msgstr ""
-#: c-api/typeobj.rst:1593
+#: c-api/typeobj.rst:1611
msgid ""
"If the instances of this type have a dictionary containing instance "
"variables, this field is non-zero and contains the offset in the instances "
@@ -2353,13 +2375,13 @@ msgid ""
"func:`PyObject_GenericGetAttr`."
msgstr ""
-#: c-api/typeobj.rst:1598
+#: c-api/typeobj.rst:1616
msgid ""
"Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is "
"the dictionary for attributes of the type object itself."
msgstr ""
-#: c-api/typeobj.rst:1601
+#: c-api/typeobj.rst:1619
msgid ""
"If the value of this field is greater than zero, it specifies the offset "
"from the start of the instance structure. If the value is less than zero, "
@@ -2375,13 +2397,13 @@ msgid ""
"the very end of the structure."
msgstr ""
-#: c-api/typeobj.rst:1613
+#: c-api/typeobj.rst:1631
msgid ""
"The real dictionary offset in an instance can be computed from a negative :c:"
"member:`~PyTypeObject.tp_dictoffset` as follows::"
msgstr ""
-#: c-api/typeobj.rst:1620
+#: c-api/typeobj.rst:1638
msgid ""
"where :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject."
"tp_itemsize` and :c:member:`~PyTypeObject.tp_dictoffset` are taken from the "
@@ -2391,7 +2413,7 @@ msgid ""
"it is done for you by :c:func:`_PyObject_GetDictPtr`.)"
msgstr ""
-#: c-api/typeobj.rst:1628
+#: c-api/typeobj.rst:1646
msgid ""
"This field is inherited by subtypes, but see the rules listed below. A "
"subtype may override this offset; this means that the subtype instances "
@@ -2400,7 +2422,7 @@ msgid ""
"should not be a problem."
msgstr ""
-#: c-api/typeobj.rst:1633
+#: c-api/typeobj.rst:1651
msgid ""
"When a type defined by a class statement has no :attr:`~object.__slots__` "
"declaration, and none of its base types has an instance variable dictionary, "
@@ -2408,14 +2430,14 @@ msgid ""
"`~PyTypeObject.tp_dictoffset` is set to that slot's offset."
msgstr ""
-#: c-api/typeobj.rst:1638
+#: c-api/typeobj.rst:1656
msgid ""
"When a type defined by a class statement has a :attr:`__slots__` "
"declaration, the type inherits its :c:member:`~PyTypeObject.tp_dictoffset` "
"from its base type."
msgstr ""
-#: c-api/typeobj.rst:1641
+#: c-api/typeobj.rst:1659
msgid ""
"(Adding a slot named :attr:`~object.__dict__` to the :attr:`__slots__` "
"declaration does not have the expected effect, it just causes confusion. "
@@ -2423,17 +2445,17 @@ msgid ""
"though.)"
msgstr ""
-#: c-api/typeobj.rst:1647
+#: c-api/typeobj.rst:1665
msgid ""
"This slot has no default. For static types, if the field is ``NULL`` then "
"no :attr:`__dict__` gets created for instances."
msgstr ""
-#: c-api/typeobj.rst:1653
+#: c-api/typeobj.rst:1671
msgid "An optional pointer to an instance initialization function."
msgstr ""
-#: c-api/typeobj.rst:1655
+#: c-api/typeobj.rst:1673
msgid ""
"This function corresponds to the :meth:`__init__` method of classes. Like :"
"meth:`__init__`, it is possible to create an instance without calling :meth:"
@@ -2441,14 +2463,14 @@ msgid ""
"meth:`__init__` method again."
msgstr ""
-#: c-api/typeobj.rst:1664
+#: c-api/typeobj.rst:1682
msgid ""
"The self argument is the instance to be initialized; the *args* and *kwds* "
"arguments represent positional and keyword arguments of the call to :meth:"
"`__init__`."
msgstr ""
-#: c-api/typeobj.rst:1668
+#: c-api/typeobj.rst:1686
msgid ""
"The :c:member:`~PyTypeObject.tp_init` function, if not ``NULL``, is called "
"when an instance is created normally by calling its type, after the type's :"
@@ -2460,42 +2482,42 @@ msgid ""
"subtype's :c:member:`~PyTypeObject.tp_init` is called."
msgstr ""
-#: c-api/typeobj.rst:1675
+#: c-api/typeobj.rst:1693
msgid "Returns ``0`` on success, ``-1`` and sets an exception on error."
msgstr ""
-#: c-api/typeobj.rst:1683
+#: c-api/typeobj.rst:1701
msgid "For static types this field does not have a default."
msgstr ""
-#: c-api/typeobj.rst:1688
+#: c-api/typeobj.rst:1706
msgid "An optional pointer to an instance allocation function."
msgstr ""
-#: c-api/typeobj.rst:1696
+#: c-api/typeobj.rst:1714
msgid ""
"This field is inherited by static subtypes, but not by dynamic subtypes "
"(subtypes created by a class statement)."
msgstr ""
-#: c-api/typeobj.rst:1701
+#: c-api/typeobj.rst:1719
msgid ""
"For dynamic subtypes, this field is always set to :c:func:"
"`PyType_GenericAlloc`, to force a standard heap allocation strategy."
msgstr ""
-#: c-api/typeobj.rst:1705
+#: c-api/typeobj.rst:1723
msgid ""
"For static subtypes, :c:type:`PyBaseObject_Type` uses :c:func:"
"`PyType_GenericAlloc`. That is the recommended value for all statically "
"defined types."
msgstr ""
-#: c-api/typeobj.rst:1712
+#: c-api/typeobj.rst:1730
msgid "An optional pointer to an instance creation function."
msgstr ""
-#: c-api/typeobj.rst:1718
+#: c-api/typeobj.rst:1736
msgid ""
"The *subtype* argument is the type of the object being created; the *args* "
"and *kwds* arguments represent positional and keyword arguments of the call "
@@ -2504,7 +2526,7 @@ msgid ""
"that type (but not an unrelated type)."
msgstr ""
-#: c-api/typeobj.rst:1724
+#: c-api/typeobj.rst:1742
msgid ""
"The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-"
">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do "
@@ -2516,14 +2538,14 @@ msgid ""
"be deferred to :c:member:`~PyTypeObject.tp_init`."
msgstr ""
-#: c-api/typeobj.rst:1734
+#: c-api/typeobj.rst:1752
msgid ""
"This field is inherited by subtypes, except it is not inherited by static "
"types whose :c:member:`~PyTypeObject.tp_base` is ``NULL`` or "
"``&PyBaseObject_Type``."
msgstr ""
-#: c-api/typeobj.rst:1739
+#: c-api/typeobj.rst:1757
msgid ""
"For static types this field has no default. This means if the slot is "
"defined as ``NULL``, the type cannot be called to create new instances; "
@@ -2531,39 +2553,39 @@ msgid ""
"function."
msgstr ""
-#: c-api/typeobj.rst:1747
+#: c-api/typeobj.rst:1765
msgid ""
"An optional pointer to an instance deallocation function. Its signature is::"
msgstr ""
-#: c-api/typeobj.rst:1751
+#: c-api/typeobj.rst:1769
msgid ""
"An initializer that is compatible with this signature is :c:func:"
"`PyObject_Free`."
msgstr ""
-#: c-api/typeobj.rst:1755
+#: c-api/typeobj.rst:1773
msgid ""
"This field is inherited by static subtypes, but not by dynamic subtypes "
"(subtypes created by a class statement)"
msgstr ""
-#: c-api/typeobj.rst:1760
+#: c-api/typeobj.rst:1778
msgid ""
"In dynamic subtypes, this field is set to a deallocator suitable to match :c:"
"func:`PyType_GenericAlloc` and the value of the :const:`Py_TPFLAGS_HAVE_GC` "
"flag bit."
msgstr ""
-#: c-api/typeobj.rst:1764
+#: c-api/typeobj.rst:1782
msgid "For static subtypes, :c:type:`PyBaseObject_Type` uses PyObject_Del."
msgstr ""
-#: c-api/typeobj.rst:1769
+#: c-api/typeobj.rst:1787
msgid "An optional pointer to a function called by the garbage collector."
msgstr ""
-#: c-api/typeobj.rst:1771
+#: c-api/typeobj.rst:1789
msgid ""
"The garbage collector needs to know whether a particular object is "
"collectible or not. Normally, it is sufficient to look at the object's "
@@ -2575,74 +2597,74 @@ msgid ""
"instance. The signature is::"
msgstr ""
-#: c-api/typeobj.rst:1781
+#: c-api/typeobj.rst:1799
msgid ""
"(The only example of this are types themselves. The metatype, :c:data:"
"`PyType_Type`, defines this function to distinguish between statically and "
"dynamically allocated types.)"
msgstr ""
-#: c-api/typeobj.rst:1791
+#: c-api/typeobj.rst:1809
msgid ""
"This slot has no default. If this field is ``NULL``, :const:"
"`Py_TPFLAGS_HAVE_GC` is used as the functional equivalent."
msgstr ""
-#: c-api/typeobj.rst:1797
+#: c-api/typeobj.rst:1815
msgid "Tuple of base types."
msgstr ""
-#: c-api/typeobj.rst:1799
+#: c-api/typeobj.rst:1817
msgid ""
"This is set for types created by a class statement. It should be ``NULL`` "
"for statically defined types."
msgstr ""
-#: c-api/typeobj.rst:1825 c-api/typeobj.rst:1844 c-api/typeobj.rst:1858
+#: c-api/typeobj.rst:1843 c-api/typeobj.rst:1862 c-api/typeobj.rst:1876
msgid "This field is not inherited."
msgstr ""
-#: c-api/typeobj.rst:1809
+#: c-api/typeobj.rst:1827
msgid ""
"Tuple containing the expanded set of base types, starting with the type "
"itself and ending with :class:`object`, in Method Resolution Order."
msgstr ""
-#: c-api/typeobj.rst:1815
+#: c-api/typeobj.rst:1833
msgid ""
"This field is not inherited; it is calculated fresh by :c:func:"
"`PyType_Ready`."
msgstr ""
-#: c-api/typeobj.rst:1821
+#: c-api/typeobj.rst:1839
msgid "Unused. Internal use only."
msgstr ""
-#: c-api/typeobj.rst:1830
+#: c-api/typeobj.rst:1848
msgid "List of weak references to subclasses. Internal use only."
msgstr ""
-#: c-api/typeobj.rst:1839
+#: c-api/typeobj.rst:1857
msgid ""
"Weak reference list head, for weak references to this type object. Not "
"inherited. Internal use only."
msgstr ""
-#: c-api/typeobj.rst:1849
+#: c-api/typeobj.rst:1867
msgid ""
"This field is deprecated. Use :c:member:`~PyTypeObject.tp_finalize` instead."
msgstr ""
-#: c-api/typeobj.rst:1854
+#: c-api/typeobj.rst:1872
msgid "Used to index into the method cache. Internal use only."
msgstr ""
-#: c-api/typeobj.rst:1863
+#: c-api/typeobj.rst:1881
msgid ""
"An optional pointer to an instance finalization function. Its signature is::"
msgstr ""
-#: c-api/typeobj.rst:1867
+#: c-api/typeobj.rst:1885
msgid ""
"If :c:member:`~PyTypeObject.tp_finalize` is set, the interpreter calls it "
"once when finalizing an instance. It is called either from the garbage "
@@ -2652,24 +2674,37 @@ msgid ""
"object in a sane state."
msgstr ""
-#: c-api/typeobj.rst:1874
+#: c-api/typeobj.rst:1892
msgid ""
":c:member:`~PyTypeObject.tp_finalize` should not mutate the current "
"exception status; therefore, a recommended way to write a non-trivial "
"finalizer is::"
msgstr ""
-#: c-api/typeobj.rst:1891
+#: c-api/typeobj.rst:1909
msgid ""
"For this field to be taken into account (even through inheritance), you must "
"also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit."
msgstr ""
-#: c-api/typeobj.rst:1900
+#: c-api/typeobj.rst:1912
+msgid ""
+"Also, note that, in a garbage collected Python, :c:member:`~PyTypeObject."
+"tp_dealloc` may be called from any Python thread, not just the thread which "
+"created the object (if the object becomes part of a refcount cycle, that "
+"cycle might be collected by a garbage collection on any thread). This is "
+"not a problem for Python API calls, since the thread on which tp_dealloc is "
+"called will own the Global Interpreter Lock (GIL). However, if the object "
+"being destroyed in turn destroys objects from some other C or C++ library, "
+"care should be taken to ensure that destroying those objects on the thread "
+"which called tp_dealloc will not violate any assumptions of the library."
+msgstr ""
+
+#: c-api/typeobj.rst:1929
msgid "\"Safe object finalization\" (:pep:`442`)"
msgstr ""
-#: c-api/typeobj.rst:1905
+#: c-api/typeobj.rst:1934
msgid ""
"Vectorcall function to use for calls of this type object. In other words, it "
"is used to implement :ref:`vectorcall ` for ``type.__call__``. "
@@ -2677,98 +2712,85 @@ msgid ""
"attr:`__new__` and :attr:`__init__` is used."
msgstr ""
-#: c-api/typeobj.rst:1913
+#: c-api/typeobj.rst:1942
msgid "This field is never inherited."
msgstr ""
-#: c-api/typeobj.rst:1915
+#: c-api/typeobj.rst:1944
msgid "(the field exists since 3.8 but it's only used since 3.9)"
msgstr ""
-#: c-api/typeobj.rst:1918
-msgid ""
-"Also, note that, in a garbage collected Python, :c:member:`~PyTypeObject."
-"tp_dealloc` may be called from any Python thread, not just the thread which "
-"created the object (if the object becomes part of a refcount cycle, that "
-"cycle might be collected by a garbage collection on any thread). This is "
-"not a problem for Python API calls, since the thread on which tp_dealloc is "
-"called will own the Global Interpreter Lock (GIL). However, if the object "
-"being destroyed in turn destroys objects from some other C or C++ library, "
-"care should be taken to ensure that destroying those objects on the thread "
-"which called tp_dealloc will not violate any assumptions of the library."
-msgstr ""
-
-#: c-api/typeobj.rst:1932
+#: c-api/typeobj.rst:1950
msgid "Heap Types"
msgstr ""
-#: c-api/typeobj.rst:1934
+#: c-api/typeobj.rst:1952
msgid ""
"Traditionally, types defined in C code are *static*, that is, a static :c:"
"type:`PyTypeObject` structure is defined directly in code and initialized "
"using :c:func:`PyType_Ready`."
msgstr ""
-#: c-api/typeobj.rst:1938
+#: c-api/typeobj.rst:1956
msgid ""
"This results in types that are limited relative to types defined in Python:"
msgstr ""
-#: c-api/typeobj.rst:1940
+#: c-api/typeobj.rst:1958
msgid ""
"Static types are limited to one base, i.e. they cannot use multiple "
"inheritance."
msgstr ""
-#: c-api/typeobj.rst:1942
+#: c-api/typeobj.rst:1960
msgid ""
"Static type objects (but not necessarily their instances) are immutable. It "
"is not possible to add or modify the type object's attributes from Python."
msgstr ""
-#: c-api/typeobj.rst:1944
+#: c-api/typeobj.rst:1962
msgid ""
"Static type objects are shared across :ref:`sub-interpreters `, so they should not include any subinterpreter-"
"specific state."
msgstr ""
-#: c-api/typeobj.rst:1948
+#: c-api/typeobj.rst:1966
msgid ""
"Also, since :c:type:`PyTypeObject` is not part of the :ref:`stable ABI "
"`, any extension modules using static types must be compiled for a "
"specific Python minor version."
msgstr ""
-#: c-api/typeobj.rst:1952
+#: c-api/typeobj.rst:1970
msgid ""
"An alternative to static types is *heap-allocated types*, or *heap types* "
"for short, which correspond closely to classes created by Python's ``class`` "
"statement."
msgstr ""
-#: c-api/typeobj.rst:1956
+#: c-api/typeobj.rst:1974
msgid ""
"This is done by filling a :c:type:`PyType_Spec` structure and calling :c:"
"func:`PyType_FromSpecWithBases`."
msgstr ""
-#: c-api/typeobj.rst:1963
+#: c-api/typeobj.rst:1981
msgid "Number Object Structures"
msgstr ""
-#: c-api/typeobj.rst:1970
+#: c-api/typeobj.rst:1988
msgid ""
"This structure holds pointers to the functions which an object uses to "
"implement the number protocol. Each function is used by the function of "
"similar name documented in the :ref:`number` section."
msgstr ""
-#: c-api/typeobj.rst:2300
+#: c-api/typeobj.rst:2318
msgid "Here is the structure definition::"
msgstr ""
-#: c-api/typeobj.rst:2023
+#: c-api/typeobj.rst:2041
msgid ""
"Binary and ternary functions must check the type of all their operands, and "
"implement the necessary conversions (at least one of the operands is an "
@@ -2778,30 +2800,30 @@ msgid ""
"and set an exception."
msgstr ""
-#: c-api/typeobj.rst:2032
+#: c-api/typeobj.rst:2050
msgid ""
"The :c:data:`nb_reserved` field should always be ``NULL``. It was "
"previously called :c:data:`nb_long`, and was renamed in Python 3.0.1."
msgstr ""
-#: c-api/typeobj.rst:2077
+#: c-api/typeobj.rst:2095
msgid "Mapping Object Structures"
msgstr ""
-#: c-api/typeobj.rst:2084
+#: c-api/typeobj.rst:2102
msgid ""
"This structure holds pointers to the functions which an object uses to "
"implement the mapping protocol. It has three members:"
msgstr ""
-#: c-api/typeobj.rst:2089
+#: c-api/typeobj.rst:2107
msgid ""
"This function is used by :c:func:`PyMapping_Size` and :c:func:"
"`PyObject_Size`, and has the same signature. This slot may be set to "
"``NULL`` if the object has no defined length."
msgstr ""
-#: c-api/typeobj.rst:2095
+#: c-api/typeobj.rst:2113
msgid ""
"This function is used by :c:func:`PyObject_GetItem` and :c:func:"
"`PySequence_GetSlice`, and has the same signature as :c:func:`!"
@@ -2809,7 +2831,7 @@ msgid ""
"`PyMapping_Check` function to return ``1``, it can be ``NULL`` otherwise."
msgstr ""
-#: c-api/typeobj.rst:2103
+#: c-api/typeobj.rst:2121
msgid ""
"This function is used by :c:func:`PyObject_SetItem`, :c:func:"
"`PyObject_DelItem`, :c:func:`PyObject_SetSlice` and :c:func:"
@@ -2819,17 +2841,17 @@ msgid ""
"deletion."
msgstr ""
-#: c-api/typeobj.rst:2114
+#: c-api/typeobj.rst:2132
msgid "Sequence Object Structures"
msgstr ""
-#: c-api/typeobj.rst:2121
+#: c-api/typeobj.rst:2139
msgid ""
"This structure holds pointers to the functions which an object uses to "
"implement the sequence protocol."
msgstr ""
-#: c-api/typeobj.rst:2126
+#: c-api/typeobj.rst:2144
msgid ""
"This function is used by :c:func:`PySequence_Size` and :c:func:"
"`PyObject_Size`, and has the same signature. It is also used for handling "
@@ -2837,21 +2859,21 @@ msgid ""
"member:`~PySequenceMethods.sq_ass_item` slots."
msgstr ""
-#: c-api/typeobj.rst:2133
+#: c-api/typeobj.rst:2151
msgid ""
"This function is used by :c:func:`PySequence_Concat` and has the same "
"signature. It is also used by the ``+`` operator, after trying the numeric "
"addition via the :c:member:`~PyNumberMethods.nb_add` slot."
msgstr ""
-#: c-api/typeobj.rst:2139
+#: c-api/typeobj.rst:2157
msgid ""
"This function is used by :c:func:`PySequence_Repeat` and has the same "
"signature. It is also used by the ``*`` operator, after trying numeric "
"multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot."
msgstr ""
-#: c-api/typeobj.rst:2145
+#: c-api/typeobj.rst:2163
msgid ""
"This function is used by :c:func:`PySequence_GetItem` and has the same "
"signature. It is also used by :c:func:`PyObject_GetItem`, after trying the "
@@ -2860,7 +2882,7 @@ msgid ""
"``1``, it can be ``NULL`` otherwise."
msgstr ""
-#: c-api/typeobj.rst:2151
+#: c-api/typeobj.rst:2169
msgid ""
"Negative indexes are handled as follows: if the :attr:`sq_length` slot is "
"filled, it is called and the sequence length is used to compute a positive "
@@ -2868,7 +2890,7 @@ msgid ""
"the index is passed as is to the function."
msgstr ""
-#: c-api/typeobj.rst:2158
+#: c-api/typeobj.rst:2176
msgid ""
"This function is used by :c:func:`PySequence_SetItem` and has the same "
"signature. It is also used by :c:func:`PyObject_SetItem` and :c:func:"
@@ -2877,14 +2899,14 @@ msgid ""
"``NULL`` if the object does not support item assignment and deletion."
msgstr ""
-#: c-api/typeobj.rst:2167
+#: c-api/typeobj.rst:2185
msgid ""
"This function may be used by :c:func:`PySequence_Contains` and has the same "
"signature. This slot may be left to ``NULL``, in this case :c:func:`!"
"PySequence_Contains` simply traverses the sequence until it finds a match."
msgstr ""
-#: c-api/typeobj.rst:2174
+#: c-api/typeobj.rst:2192
msgid ""
"This function is used by :c:func:`PySequence_InPlaceConcat` and has the same "
"signature. It should modify its first operand, and return it. This slot "
@@ -2894,7 +2916,7 @@ msgid ""
"c:member:`~PyNumberMethods.nb_inplace_add` slot."
msgstr ""
-#: c-api/typeobj.rst:2183
+#: c-api/typeobj.rst:2201
msgid ""
"This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same "
"signature. It should modify its first operand, and return it. This slot "
@@ -2904,70 +2926,70 @@ msgid ""
"via the :c:member:`~PyNumberMethods.nb_inplace_multiply` slot."
msgstr ""
-#: c-api/typeobj.rst:2194
+#: c-api/typeobj.rst:2212
msgid "Buffer Object Structures"
msgstr ""
-#: c-api/typeobj.rst:2202
+#: c-api/typeobj.rst:2220
msgid ""
"This structure holds pointers to the functions required by the :ref:`Buffer "
"protocol `. The protocol defines how an exporter object can "
"expose its internal data to consumer objects."
msgstr ""
-#: c-api/typeobj.rst:2257 c-api/typeobj.rst:2321 c-api/typeobj.rst:2332
+#: c-api/typeobj.rst:2275 c-api/typeobj.rst:2339 c-api/typeobj.rst:2351
msgid "The signature of this function is::"
msgstr ""
-#: c-api/typeobj.rst:2212
+#: c-api/typeobj.rst:2230
msgid ""
"Handle a request to *exporter* to fill in *view* as specified by *flags*. "
"Except for point (3), an implementation of this function MUST take these "
"steps:"
msgstr ""
-#: c-api/typeobj.rst:2216
+#: c-api/typeobj.rst:2234
msgid ""
"Check if the request can be met. If not, raise :c:data:`PyExc_BufferError`, "
"set :c:data:`view->obj` to ``NULL`` and return ``-1``."
msgstr ""
-#: c-api/typeobj.rst:2219
+#: c-api/typeobj.rst:2237
msgid "Fill in the requested fields."
msgstr ""
-#: c-api/typeobj.rst:2221
+#: c-api/typeobj.rst:2239
msgid "Increment an internal counter for the number of exports."
msgstr ""
-#: c-api/typeobj.rst:2223
+#: c-api/typeobj.rst:2241
msgid ""
"Set :c:data:`view->obj` to *exporter* and increment :c:data:`view->obj`."
msgstr ""
-#: c-api/typeobj.rst:2225
+#: c-api/typeobj.rst:2243
msgid "Return ``0``."
msgstr ""
-#: c-api/typeobj.rst:2227
+#: c-api/typeobj.rst:2245
msgid ""
"If *exporter* is part of a chain or tree of buffer providers, two main "
"schemes can be used:"
msgstr ""
-#: c-api/typeobj.rst:2230
+#: c-api/typeobj.rst:2248
msgid ""
"Re-export: Each member of the tree acts as the exporting object and sets :c:"
"data:`view->obj` to a new reference to itself."
msgstr ""
-#: c-api/typeobj.rst:2233
+#: c-api/typeobj.rst:2251
msgid ""
"Redirect: The buffer request is redirected to the root object of the tree. "
"Here, :c:data:`view->obj` will be a new reference to the root object."
msgstr ""
-#: c-api/typeobj.rst:2237
+#: c-api/typeobj.rst:2255
msgid ""
"The individual fields of *view* are described in section :ref:`Buffer "
"structure `, the rules how an exporter must react to "
@@ -2975,7 +2997,7 @@ msgid ""
"types>`."
msgstr ""
-#: c-api/typeobj.rst:2242
+#: c-api/typeobj.rst:2260
msgid ""
"All memory pointed to in the :c:type:`Py_buffer` structure belongs to the "
"exporter and must remain valid until there are no consumers left. :c:member:"
@@ -2984,19 +3006,19 @@ msgid ""
"internal` are read-only for the consumer."
msgstr ""
-#: c-api/typeobj.rst:2249
+#: c-api/typeobj.rst:2267
msgid ""
":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes "
"buffer while dealing correctly with all request types."
msgstr ""
-#: c-api/typeobj.rst:2252
+#: c-api/typeobj.rst:2270
msgid ""
":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps "
"this function."
msgstr ""
-#: c-api/typeobj.rst:2261
+#: c-api/typeobj.rst:2279
msgid ""
"Handle a request to release the resources of the buffer. If no resources "
"need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be "
@@ -3004,15 +3026,15 @@ msgid ""
"these optional steps:"
msgstr ""
-#: c-api/typeobj.rst:2266
+#: c-api/typeobj.rst:2284
msgid "Decrement an internal counter for the number of exports."
msgstr ""
-#: c-api/typeobj.rst:2268
+#: c-api/typeobj.rst:2286
msgid "If the counter is ``0``, free all memory associated with *view*."
msgstr ""
-#: c-api/typeobj.rst:2270
+#: c-api/typeobj.rst:2288
msgid ""
"The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep "
"track of buffer-specific resources. This field is guaranteed to remain "
@@ -3020,62 +3042,63 @@ msgid ""
"*view* argument."
msgstr ""
-#: c-api/typeobj.rst:2276
+#: c-api/typeobj.rst:2294
msgid ""
"This function MUST NOT decrement :c:data:`view->obj`, since that is done "
"automatically in :c:func:`PyBuffer_Release` (this scheme is useful for "
"breaking reference cycles)."
msgstr ""
-#: c-api/typeobj.rst:2281
+#: c-api/typeobj.rst:2299
msgid ""
":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this "
"function."
msgstr ""
-#: c-api/typeobj.rst:2289
+#: c-api/typeobj.rst:2307
msgid "Async Object Structures"
msgstr ""
-#: c-api/typeobj.rst:2297
+#: c-api/typeobj.rst:2315
msgid ""
"This structure holds pointers to the functions required to implement :term:"
"`awaitable` and :term:`asynchronous iterator` objects."
msgstr ""
-#: c-api/typeobj.rst:2314
+#: c-api/typeobj.rst:2332
msgid ""
"The returned object must be an iterator, i.e. :c:func:`PyIter_Check` must "
"return ``1`` for it."
msgstr ""
-#: c-api/typeobj.rst:2317
+#: c-api/typeobj.rst:2335
msgid ""
"This slot may be set to ``NULL`` if an object is not an :term:`awaitable`."
msgstr ""
-#: c-api/typeobj.rst:2325
+#: c-api/typeobj.rst:2343
msgid ""
-"Must return an :term:`awaitable` object. See :meth:`__anext__` for details."
+"Must return an :term:`asynchronous iterator` object. See :meth:`__anext__` "
+"for details."
msgstr ""
-#: c-api/typeobj.rst:2327
+#: c-api/typeobj.rst:2346
msgid ""
"This slot may be set to ``NULL`` if an object does not implement "
"asynchronous iteration protocol."
msgstr ""
-#: c-api/typeobj.rst:2336
+#: c-api/typeobj.rst:2355
msgid ""
"Must return an :term:`awaitable` object. See :meth:`__anext__` for details. "
"This slot may be set to ``NULL``."
msgstr ""
-#: c-api/typeobj.rst:2343
+#: c-api/typeobj.rst:2362
msgid "Slot Type typedefs"
msgstr ""
-#: c-api/typeobj.rst:2347
+#: c-api/typeobj.rst:2366
msgid ""
"The purpose of this function is to separate memory allocation from memory "
"initialization. It should return a pointer to a block of memory of adequate "
@@ -3089,76 +3112,76 @@ msgid ""
"member:`~PyTypeObject.tp_basicsize`."
msgstr ""
-#: c-api/typeobj.rst:2357
+#: c-api/typeobj.rst:2376
msgid ""
"This function should not do any other instance initialization, not even to "
"allocate additional memory; that should be done by :c:member:`~PyTypeObject."
"tp_new`."
msgstr ""
-#: c-api/typeobj.rst:2364
+#: c-api/typeobj.rst:2383
msgid "See :c:member:`~PyTypeObject.tp_free`."
msgstr ""
-#: c-api/typeobj.rst:2368
+#: c-api/typeobj.rst:2387
msgid "See :c:member:`~PyTypeObject.tp_new`."
msgstr ""
-#: c-api/typeobj.rst:2372
+#: c-api/typeobj.rst:2391
msgid "See :c:member:`~PyTypeObject.tp_init`."
msgstr ""
-#: c-api/typeobj.rst:2376
+#: c-api/typeobj.rst:2395
msgid "See :c:member:`~PyTypeObject.tp_repr`."
msgstr ""
-#: c-api/typeobj.rst:2389
+#: c-api/typeobj.rst:2408
msgid "Return the value of the named attribute for the object."
msgstr ""
-#: c-api/typeobj.rst:2395
+#: c-api/typeobj.rst:2414
msgid ""
"Set the value of the named attribute for the object. The value argument is "
"set to ``NULL`` to delete the attribute."
msgstr ""
-#: c-api/typeobj.rst:2391
+#: c-api/typeobj.rst:2410
msgid "See :c:member:`~PyTypeObject.tp_getattro`."
msgstr ""
-#: c-api/typeobj.rst:2398
+#: c-api/typeobj.rst:2417
msgid "See :c:member:`~PyTypeObject.tp_setattro`."
msgstr ""
-#: c-api/typeobj.rst:2402
+#: c-api/typeobj.rst:2421
msgid "See :c:member:`~PyTypeObject.tp_descrget`."
msgstr ""
-#: c-api/typeobj.rst:2406
+#: c-api/typeobj.rst:2425
msgid "See :c:member:`~PyTypeObject.tp_descrset`."
msgstr ""
-#: c-api/typeobj.rst:2410
+#: c-api/typeobj.rst:2429
msgid "See :c:member:`~PyTypeObject.tp_hash`."
msgstr ""
-#: c-api/typeobj.rst:2414
+#: c-api/typeobj.rst:2433
msgid "See :c:member:`~PyTypeObject.tp_richcompare`."
msgstr ""
-#: c-api/typeobj.rst:2418
+#: c-api/typeobj.rst:2437
msgid "See :c:member:`~PyTypeObject.tp_iter`."
msgstr ""
-#: c-api/typeobj.rst:2422
+#: c-api/typeobj.rst:2441
msgid "See :c:member:`~PyTypeObject.tp_iternext`."
msgstr ""
-#: c-api/typeobj.rst:2448
+#: c-api/typeobj.rst:2467
msgid "Examples"
msgstr "Exemples"
-#: c-api/typeobj.rst:2450
+#: c-api/typeobj.rst:2469
msgid ""
"The following are simple examples of Python type definitions. They include "
"common usage you may encounter. Some demonstrate tricky corner cases. For "
@@ -3166,30 +3189,30 @@ msgid ""
"and :ref:`new-types-topics`."
msgstr ""
-#: c-api/typeobj.rst:2455
+#: c-api/typeobj.rst:2474
msgid "A basic static type::"
msgstr ""
-#: c-api/typeobj.rst:2472
+#: c-api/typeobj.rst:2491
msgid ""
"You may also find older code (especially in the CPython code base) with a "
"more verbose initializer::"
msgstr ""
-#: c-api/typeobj.rst:2516
+#: c-api/typeobj.rst:2535
msgid "A type that supports weakrefs, instance dicts, and hashing::"
msgstr ""
-#: c-api/typeobj.rst:2543
+#: c-api/typeobj.rst:2562
msgid ""
"A str subclass that cannot be subclassed and cannot be called to create "
"instances (e.g. uses a separate factory func)::"
msgstr ""
-#: c-api/typeobj.rst:2562
+#: c-api/typeobj.rst:2581
msgid "The simplest static type (with fixed-length instances)::"
msgstr ""
-#: c-api/typeobj.rst:2573
+#: c-api/typeobj.rst:2592
msgid "The simplest static type (with variable-length instances)::"
msgstr ""
diff --git a/c-api/unicode.po b/c-api/unicode.po
index 37f332eba7..a926f68cb0 100644
--- a/c-api/unicode.po
+++ b/c-api/unicode.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-10-04 12:27+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -16,11 +16,11 @@ msgstr ""
#: c-api/unicode.rst:6
msgid "Unicode Objects and Codecs"
-msgstr ""
+msgstr "Objets Unicode et Codecs"
#: c-api/unicode.rst:12
msgid "Unicode Objects"
-msgstr ""
+msgstr "Objets Unicode"
#: c-api/unicode.rst:14
msgid ""
@@ -31,29 +31,40 @@ msgid ""
"65536; otherwise, code points must be below 1114112 (which is the full "
"Unicode range)."
msgstr ""
+"Depuis l'implémentation de :pep:`393` dans Python 3.3, les objets Unicode "
+"utilisent une variété de représentations internes, pour permettre de gérer "
+"l'intervalle complet des caractères Unicode en restant efficace en termes de "
+"mémoire. Il y a des cas spéciaux pour les chaînes où tous les points de code "
+"sont inférieurs à 128, 256, ou 65536 ; sinon, les points de code doivent "
+"être inférieurs à 1114112 (qui est l'intervalle Unicode complet)."
#: c-api/unicode.rst:20
msgid ""
":c:type:`Py_UNICODE*` and UTF-8 representations are created on demand and "
"cached in the Unicode object. The :c:type:`Py_UNICODE*` representation is "
-"deprecated and inefficient; it should be avoided in performance- or memory-"
-"sensitive situations."
+"deprecated and inefficient."
msgstr ""
-#: c-api/unicode.rst:25
+#: c-api/unicode.rst:24
msgid ""
"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 ""
+"En raison de la transition des anciennes APIs vers les nouvelles APIs, les "
+"objets Unicode peuvent être dans deux états internes selon comment ils ont "
+"été créés :"
-#: c-api/unicode.rst:28
+#: c-api/unicode.rst:27
msgid ""
"\"canonical\" Unicode objects are all objects created by a non-deprecated "
"Unicode API. They use the most efficient representation allowed by the "
"implementation."
msgstr ""
+"Les objets Unicode « canoniques » sont tous les objets créés par une API "
+"Unicode non-dépréciée. Ils utilisent la représentation la plus efficace "
+"permise par l'implémentation."
-#: c-api/unicode.rst:32
+#: c-api/unicode.rst:31
msgid ""
"\"legacy\" Unicode objects have been created through one of the deprecated "
"APIs (typically :c:func:`PyUnicode_FromUnicode`) and only bear the :c:type:"
@@ -61,97 +72,108 @@ msgid ""
"`PyUnicode_READY` on them before calling any other API."
msgstr ""
-#: c-api/unicode.rst:38
+#: c-api/unicode.rst:37
msgid ""
"The \"legacy\" Unicode object will be removed in Python 3.12 with deprecated "
"APIs. All Unicode objects will be \"canonical\" since then. See :pep:`623` "
"for more information."
msgstr ""
+"Les objets Unicode « historiques » vont être supprimés de Python 3.12 avec "
+"les APIs dépréciées. Tous les objets Unicode vont être « canoniques » à "
+"partir de là. Voir :pep:`623` pour plus d'information."
-#: c-api/unicode.rst:44
+#: c-api/unicode.rst:43
msgid "Unicode Type"
-msgstr ""
+msgstr "Type Unicode"
-#: c-api/unicode.rst:46
+#: c-api/unicode.rst:45
msgid ""
"These are the basic Unicode object types used for the Unicode implementation "
"in Python:"
msgstr ""
+"Voici les types d'objets Unicode utilisés pour l'implémentation Unicode en "
+"Python :"
-#: c-api/unicode.rst:53
+#: c-api/unicode.rst:52
msgid ""
"These types are typedefs for unsigned integer types wide enough to contain "
"characters of 32 bits, 16 bits and 8 bits, respectively. When dealing with "
"single Unicode characters, use :c:type:`Py_UCS4`."
msgstr ""
+"Voici les *typedefs* pour les types entiers non signés suffisamment large "
+"pour contenir des caractères de 32 bits, 16 bits et 8 bits, respectivement. "
+"Pour traiter des caractères uniques, utilisez :c:type:`Py_UCS4`."
-#: c-api/unicode.rst:62
+#: c-api/unicode.rst:61
msgid ""
"This is a typedef of :c:type:`wchar_t`, which is a 16-bit type or 32-bit "
"type depending on the platform."
msgstr ""
-#: c-api/unicode.rst:65
+#: c-api/unicode.rst:64
msgid ""
"In previous versions, this was a 16-bit type or a 32-bit type depending on "
"whether you selected a \"narrow\" or \"wide\" Unicode version of Python at "
"build time."
msgstr ""
+"Dans les versions précédentes, ceci était un type 16-bit ou un type 32-bit "
+"selon que vous choisissiez une version Unicode *narrow* ou *wide* de Python "
+"à la compilation."
-#: c-api/unicode.rst:75
+#: c-api/unicode.rst:74
msgid ""
"These subtypes of :c:type:`PyObject` represent a Python Unicode object. In "
"almost all cases, they shouldn't be used directly, since all API functions "
"that deal with Unicode objects take and return :c:type:`PyObject` pointers."
msgstr ""
-#: c-api/unicode.rst:84
+#: c-api/unicode.rst:83
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python Unicode type. "
"It is exposed to Python code as ``str``."
msgstr ""
-#: c-api/unicode.rst:88
+#: c-api/unicode.rst:87
msgid ""
"The following APIs are really C macros and can be used to do fast checks and "
"to access internal read-only data of Unicode objects:"
msgstr ""
-#: c-api/unicode.rst:93
+#: c-api/unicode.rst:92
msgid ""
"Return true if the object *o* is a Unicode object or an instance of a "
"Unicode subtype. This function always succeeds."
msgstr ""
-#: c-api/unicode.rst:99
+#: c-api/unicode.rst:98
msgid ""
"Return true if the object *o* is a Unicode object, but not an instance of a "
"subtype. This function always succeeds."
msgstr ""
-#: c-api/unicode.rst:105
+#: c-api/unicode.rst:104
msgid ""
"Ensure the string object *o* is in the \"canonical\" representation. This "
"is required before using any of the access macros described below."
msgstr ""
-#: c-api/unicode.rst:110
+#: c-api/unicode.rst:109
msgid ""
"Returns ``0`` on success and ``-1`` with an exception set on failure, which "
"in particular happens if memory allocation fails."
msgstr ""
-#: c-api/unicode.rst:116
+#: c-api/unicode.rst:115
msgid "This API will be removed with :c:func:`PyUnicode_FromUnicode`."
msgstr ""
-#: c-api/unicode.rst:121
+#: c-api/unicode.rst:120
msgid ""
"Return the length of the Unicode string, in code points. *o* has to be a "
"Unicode object in the \"canonical\" representation (not checked)."
msgstr ""
-#: c-api/unicode.rst:131
+#: c-api/unicode.rst:130
msgid ""
"Return a pointer to the canonical representation cast to UCS1, UCS2 or UCS4 "
"integer types for direct character access. No checks are performed if the "
@@ -160,28 +182,28 @@ msgid ""
"`PyUnicode_READY` has been called before accessing this."
msgstr ""
-#: c-api/unicode.rst:145
+#: c-api/unicode.rst:144
msgid "Return values of the :c:func:`PyUnicode_KIND` macro."
msgstr ""
-#: c-api/unicode.rst:150
+#: c-api/unicode.rst:149
msgid "``PyUnicode_WCHAR_KIND`` is deprecated."
msgstr ""
-#: c-api/unicode.rst:155
+#: c-api/unicode.rst:154
msgid ""
"Return one of the PyUnicode kind constants (see above) that indicate how "
"many bytes per character this Unicode object uses to store its data. *o* "
"has to be a Unicode object in the \"canonical\" representation (not checked)."
msgstr ""
-#: c-api/unicode.rst:166
+#: c-api/unicode.rst:165
msgid ""
"Return a void pointer to the raw Unicode buffer. *o* has to be a Unicode "
"object in the \"canonical\" representation (not checked)."
msgstr ""
-#: c-api/unicode.rst:175
+#: c-api/unicode.rst:174
msgid ""
"Write into a canonical representation *data* (as obtained with :c:func:"
"`PyUnicode_DATA`). This macro does not do any sanity checks and is intended "
@@ -191,46 +213,46 @@ msgid ""
"written to that location."
msgstr ""
-#: c-api/unicode.rst:187
+#: c-api/unicode.rst:186
msgid ""
"Read a code point from a canonical representation *data* (as obtained with :"
"c:func:`PyUnicode_DATA`). No checks or ready calls are performed."
msgstr ""
-#: c-api/unicode.rst:195
+#: c-api/unicode.rst:194
msgid ""
-"Read a character from a Unicode object *o*, which must be in the \"canonical"
-"\" representation. This is less efficient than :c:func:`PyUnicode_READ` if "
-"you do multiple consecutive reads."
+"Read a character from a Unicode object *o*, which must be in the "
+"\"canonical\" representation. This is less efficient than :c:func:"
+"`PyUnicode_READ` if you do multiple consecutive reads."
msgstr ""
-#: c-api/unicode.rst:204
+#: c-api/unicode.rst:203
msgid ""
"Return the maximum code point that is suitable for creating another string "
"based on *o*, which must be in the \"canonical\" representation. This is "
"always an approximation but more efficient than iterating over the string."
msgstr ""
-#: c-api/unicode.rst:213
+#: c-api/unicode.rst:212
msgid ""
"Return the size of the deprecated :c:type:`Py_UNICODE` representation, in "
"code units (this includes surrogate pairs as 2 units). *o* has to be a "
"Unicode object (not checked)."
msgstr ""
-#: c-api/unicode.rst:229 c-api/unicode.rst:769
+#: c-api/unicode.rst:228 c-api/unicode.rst:772
msgid ""
"Part of the old-style Unicode API, please migrate to using :c:func:"
"`PyUnicode_GET_LENGTH`."
msgstr ""
-#: c-api/unicode.rst:224
+#: c-api/unicode.rst:223
msgid ""
"Return the size of the deprecated :c:type:`Py_UNICODE` representation in "
"bytes. *o* has to be a Unicode object (not checked)."
msgstr ""
-#: c-api/unicode.rst:235
+#: c-api/unicode.rst:234
msgid ""
"Return a pointer to a :c:type:`Py_UNICODE` representation of the object. "
"The returned buffer is always terminated with an extra null code point. It "
@@ -240,7 +262,7 @@ msgid ""
"object (not checked)."
msgstr ""
-#: c-api/unicode.rst:242
+#: c-api/unicode.rst:241
msgid ""
"This macro is now inefficient -- because in many cases the :c:type:"
"`Py_UNICODE` representation does not exist and needs to be created -- and "
@@ -249,83 +271,83 @@ msgid ""
"`PyUnicode_WRITE` or :c:func:`PyUnicode_READ`."
msgstr ""
-#: c-api/unicode.rst:251
+#: c-api/unicode.rst:250
msgid ""
"Part of the old-style Unicode API, please migrate to using the :c:func:"
"`PyUnicode_nBYTE_DATA` family of macros."
msgstr ""
-#: c-api/unicode.rst:256
+#: c-api/unicode.rst:255
msgid ""
"Return ``1`` if the string is a valid identifier according to the language "
"definition, section :ref:`identifiers`. Return ``0`` otherwise."
msgstr ""
-#: c-api/unicode.rst:259
+#: c-api/unicode.rst:258
msgid ""
"The function does not call :c:func:`Py_FatalError` anymore if the string is "
"not ready."
msgstr ""
-#: c-api/unicode.rst:265
+#: c-api/unicode.rst:264
msgid "Unicode Character Properties"
msgstr ""
-#: c-api/unicode.rst:267
+#: c-api/unicode.rst:266
msgid ""
"Unicode provides many different character properties. The most often needed "
"ones are available through these macros which are mapped to C functions "
"depending on the Python configuration."
msgstr ""
-#: c-api/unicode.rst:274
+#: c-api/unicode.rst:273
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is a whitespace character."
msgstr ""
-#: c-api/unicode.rst:279
+#: c-api/unicode.rst:278
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is a lowercase character."
msgstr ""
-#: c-api/unicode.rst:284
+#: c-api/unicode.rst:283
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is an uppercase character."
msgstr ""
-#: c-api/unicode.rst:289
+#: c-api/unicode.rst:288
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is a titlecase character."
msgstr ""
-#: c-api/unicode.rst:294
+#: c-api/unicode.rst:293
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is a linebreak character."
msgstr ""
-#: c-api/unicode.rst:299
+#: c-api/unicode.rst:298
msgid "Return ``1`` or ``0`` depending on whether *ch* is a decimal character."
msgstr ""
-#: c-api/unicode.rst:304
+#: c-api/unicode.rst:303
msgid "Return ``1`` or ``0`` depending on whether *ch* is a digit character."
msgstr ""
-#: c-api/unicode.rst:309
+#: c-api/unicode.rst:308
msgid "Return ``1`` or ``0`` depending on whether *ch* is a numeric character."
msgstr ""
-#: c-api/unicode.rst:314
+#: c-api/unicode.rst:313
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is an alphabetic character."
msgstr ""
-#: c-api/unicode.rst:319
+#: c-api/unicode.rst:318
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is an alphanumeric character."
msgstr ""
-#: c-api/unicode.rst:324
+#: c-api/unicode.rst:323
msgid ""
"Return ``1`` or ``0`` depending on whether *ch* is a printable character. "
"Nonprintable characters are those characters defined in the Unicode "
@@ -336,91 +358,91 @@ msgid ""
"to :data:`sys.stdout` or :data:`sys.stderr`.)"
msgstr ""
-#: c-api/unicode.rst:333
+#: c-api/unicode.rst:332
msgid "These APIs can be used for fast direct character conversions:"
msgstr ""
-#: c-api/unicode.rst:338
+#: c-api/unicode.rst:337
msgid "Return the character *ch* converted to lower case."
msgstr ""
-#: c-api/unicode.rst:348 c-api/unicode.rst:356
+#: c-api/unicode.rst:347 c-api/unicode.rst:355
msgid "This function uses simple case mappings."
msgstr ""
-#: c-api/unicode.rst:346
+#: c-api/unicode.rst:345
msgid "Return the character *ch* converted to upper case."
msgstr ""
-#: c-api/unicode.rst:354
+#: c-api/unicode.rst:353
msgid "Return the character *ch* converted to title case."
msgstr ""
-#: c-api/unicode.rst:362
+#: c-api/unicode.rst:361
msgid ""
"Return the character *ch* converted to a decimal positive integer. Return "
"``-1`` if this is not possible. This macro does not raise exceptions."
msgstr ""
-#: c-api/unicode.rst:368
+#: c-api/unicode.rst:367
msgid ""
"Return the character *ch* converted to a single digit integer. Return ``-1`` "
"if this is not possible. This macro does not raise exceptions."
msgstr ""
-#: c-api/unicode.rst:374
+#: c-api/unicode.rst:373
msgid ""
"Return the character *ch* converted to a double. Return ``-1.0`` if this is "
"not possible. This macro does not raise exceptions."
msgstr ""
-#: c-api/unicode.rst:378
+#: c-api/unicode.rst:377
msgid "These APIs can be used to work with surrogates:"
msgstr ""
-#: c-api/unicode.rst:382
+#: c-api/unicode.rst:381
msgid "Check if *ch* is a surrogate (``0xD800 <= ch <= 0xDFFF``)."
msgstr ""
-#: c-api/unicode.rst:386
+#: c-api/unicode.rst:385
msgid "Check if *ch* is a high surrogate (``0xD800 <= ch <= 0xDBFF``)."
msgstr ""
-#: c-api/unicode.rst:390
+#: c-api/unicode.rst:389
msgid "Check if *ch* is a low surrogate (``0xDC00 <= ch <= 0xDFFF``)."
msgstr ""
-#: c-api/unicode.rst:394
+#: c-api/unicode.rst:393
msgid ""
"Join two surrogate characters and return a single Py_UCS4 value. *high* and "
"*low* are respectively the leading and trailing surrogates in a surrogate "
"pair."
msgstr ""
-#: c-api/unicode.rst:400
+#: c-api/unicode.rst:399
msgid "Creating and accessing Unicode strings"
msgstr ""
-#: c-api/unicode.rst:402
+#: c-api/unicode.rst:401
msgid ""
"To create Unicode objects and access their basic sequence properties, use "
"these APIs:"
msgstr ""
-#: c-api/unicode.rst:407
+#: c-api/unicode.rst:406
msgid ""
"Create a new Unicode object. *maxchar* should be the true maximum code "
"point to be placed in the string. As an approximation, it can be rounded up "
"to the nearest value in the sequence 127, 255, 65535, 1114111."
msgstr ""
-#: c-api/unicode.rst:411
+#: c-api/unicode.rst:410
msgid ""
"This is the recommended way to allocate a new Unicode object. Objects "
"created using this function are not resizable."
msgstr ""
-#: c-api/unicode.rst:420
+#: c-api/unicode.rst:419
msgid ""
"Create a new Unicode object with the given *kind* (possible values are :c:"
"macro:`PyUnicode_1BYTE_KIND` etc., as returned by :c:func:"
@@ -428,7 +450,7 @@ msgid ""
"1, 2 or 4 bytes per character, as given by the kind."
msgstr ""
-#: c-api/unicode.rst:430
+#: c-api/unicode.rst:429
msgid ""
"Create a Unicode object from the char buffer *u*. The bytes will be "
"interpreted as being UTF-8 encoded. The buffer is copied into the new "
@@ -436,19 +458,20 @@ msgid ""
"object, i.e. modification of the data is not allowed."
msgstr ""
-#: c-api/unicode.rst:435
+#: c-api/unicode.rst:434
msgid ""
"If *u* is ``NULL``, this function behaves like :c:func:"
"`PyUnicode_FromUnicode` with the buffer set to ``NULL``. This usage is "
-"deprecated in favor of :c:func:`PyUnicode_New`."
+"deprecated in favor of :c:func:`PyUnicode_New`, and will be removed in "
+"Python 3.12."
msgstr ""
-#: c-api/unicode.rst:442
+#: c-api/unicode.rst:441
msgid ""
"Create a Unicode object from a UTF-8 encoded null-terminated char buffer *u*."
msgstr ""
-#: c-api/unicode.rst:448
+#: c-api/unicode.rst:447
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 "
@@ -457,261 +480,261 @@ msgid ""
"*format* ASCII-encoded string. The following format characters are allowed:"
msgstr ""
-#: c-api/unicode.rst:463
+#: c-api/unicode.rst:462
msgid "Format Characters"
msgstr "Caractères de format"
-#: c-api/unicode.rst:463
+#: c-api/unicode.rst:462
msgid "Type"
msgstr "Type"
-#: c-api/unicode.rst:463
+#: c-api/unicode.rst:462
#, fuzzy
msgid "Comment"
msgstr "Commentaires"
-#: c-api/unicode.rst:465
+#: c-api/unicode.rst:464
msgid ":attr:`%%`"
-msgstr ""
+msgstr ":attr:`%%`"
-#: c-api/unicode.rst:465
+#: c-api/unicode.rst:464
msgid "*n/a*"
msgstr ""
-#: c-api/unicode.rst:465
+#: c-api/unicode.rst:464
msgid "The literal % character."
msgstr ""
-#: c-api/unicode.rst:467
+#: c-api/unicode.rst:466
msgid ":attr:`%c`"
-msgstr ""
+msgstr ":attr:`%c`"
-#: c-api/unicode.rst:470 c-api/unicode.rst:506
+#: c-api/unicode.rst:469 c-api/unicode.rst:505
msgid "int"
msgstr "*int*"
-#: c-api/unicode.rst:467
+#: c-api/unicode.rst:466
msgid "A single character, represented as a C int."
msgstr ""
-#: c-api/unicode.rst:470
+#: c-api/unicode.rst:469
msgid ":attr:`%d`"
-msgstr ""
+msgstr ":attr:`%d`"
-#: c-api/unicode.rst:470
+#: c-api/unicode.rst:469
msgid "Equivalent to ``printf(\"%d\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:473
+#: c-api/unicode.rst:472
msgid ":attr:`%u`"
-msgstr ""
+msgstr ":attr:`%u`"
-#: c-api/unicode.rst:473
+#: c-api/unicode.rst:472
msgid "unsigned int"
msgstr "``unsigned int``"
-#: c-api/unicode.rst:473
+#: c-api/unicode.rst:472
msgid "Equivalent to ``printf(\"%u\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:476
+#: c-api/unicode.rst:475
msgid ":attr:`%ld`"
-msgstr ""
+msgstr ":attr:`%ld`"
-#: c-api/unicode.rst:479
+#: c-api/unicode.rst:478
msgid "long"
msgstr ""
-#: c-api/unicode.rst:476
+#: c-api/unicode.rst:475
msgid "Equivalent to ``printf(\"%ld\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:479
+#: c-api/unicode.rst:478
msgid ":attr:`%li`"
-msgstr ""
+msgstr ":attr:`%li`"
-#: c-api/unicode.rst:479
+#: c-api/unicode.rst:478
msgid "Equivalent to ``printf(\"%li\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:482
+#: c-api/unicode.rst:481
msgid ":attr:`%lu`"
-msgstr ""
+msgstr ":attr:`%lu`"
-#: c-api/unicode.rst:482
+#: c-api/unicode.rst:481
msgid "unsigned long"
msgstr "``unsigned long``"
-#: c-api/unicode.rst:482
+#: c-api/unicode.rst:481
msgid "Equivalent to ``printf(\"%lu\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:485
+#: c-api/unicode.rst:484
msgid ":attr:`%lld`"
-msgstr ""
+msgstr ":attr:`%lld`"
-#: c-api/unicode.rst:488
+#: c-api/unicode.rst:487
msgid "long long"
msgstr ""
-#: c-api/unicode.rst:485
+#: c-api/unicode.rst:484
msgid "Equivalent to ``printf(\"%lld\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:488
+#: c-api/unicode.rst:487
msgid ":attr:`%lli`"
-msgstr ""
+msgstr ":attr:`%lli`"
-#: c-api/unicode.rst:488
+#: c-api/unicode.rst:487
msgid "Equivalent to ``printf(\"%lli\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:491
+#: c-api/unicode.rst:490
msgid ":attr:`%llu`"
-msgstr ""
+msgstr ":attr:`%llu`"
-#: c-api/unicode.rst:491
+#: c-api/unicode.rst:490
msgid "unsigned long long"
msgstr "``unsigned long long``"
-#: c-api/unicode.rst:491
+#: c-api/unicode.rst:490
msgid "Equivalent to ``printf(\"%llu\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:494
+#: c-api/unicode.rst:493
msgid ":attr:`%zd`"
-msgstr ""
+msgstr ":attr:`%zd`"
-#: c-api/unicode.rst:497
-msgid "Py_ssize_t"
+#: c-api/unicode.rst:496
+msgid ":c:type:`\\ Py_ssize_t`"
msgstr ""
-#: c-api/unicode.rst:494
+#: c-api/unicode.rst:493
msgid "Equivalent to ``printf(\"%zd\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:497
+#: c-api/unicode.rst:496
msgid ":attr:`%zi`"
-msgstr ""
+msgstr ":attr:`%zi`"
-#: c-api/unicode.rst:497
+#: c-api/unicode.rst:496
msgid "Equivalent to ``printf(\"%zi\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:500
+#: c-api/unicode.rst:499
msgid ":attr:`%zu`"
-msgstr ""
+msgstr ":attr:`%zu`"
-#: c-api/unicode.rst:500
+#: c-api/unicode.rst:499
msgid "size_t"
msgstr ""
-#: c-api/unicode.rst:500
+#: c-api/unicode.rst:499
msgid "Equivalent to ``printf(\"%zu\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:503
+#: c-api/unicode.rst:502
msgid ":attr:`%i`"
-msgstr ""
+msgstr ":attr:`%i`"
-#: c-api/unicode.rst:503
+#: c-api/unicode.rst:502
msgid "Equivalent to ``printf(\"%i\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:506
+#: c-api/unicode.rst:505
msgid ":attr:`%x`"
-msgstr ""
+msgstr ":attr:`%x`"
-#: c-api/unicode.rst:506
+#: c-api/unicode.rst:505
msgid "Equivalent to ``printf(\"%x\")``. [1]_"
msgstr ""
-#: c-api/unicode.rst:509
+#: c-api/unicode.rst:508
msgid ":attr:`%s`"
-msgstr ""
+msgstr ":attr:`%s`"
-#: c-api/unicode.rst:509
+#: c-api/unicode.rst:508
msgid "const char\\*"
msgstr ""
-#: c-api/unicode.rst:509
+#: c-api/unicode.rst:508
msgid "A null-terminated C character array."
msgstr ""
-#: c-api/unicode.rst:512
+#: c-api/unicode.rst:511
msgid ":attr:`%p`"
-msgstr ""
+msgstr ":attr:`%p`"
-#: c-api/unicode.rst:512
+#: c-api/unicode.rst:511
msgid "const void\\*"
msgstr ""
-#: c-api/unicode.rst:512
+#: c-api/unicode.rst:511
msgid ""
-"The hex representation of a C pointer. Mostly equivalent to ``printf(\"%p"
-"\")`` except that it is guaranteed to start with the literal ``0x`` "
-"regardless of what the platform's ``printf`` yields."
+"The hex representation of a C pointer. Mostly equivalent to "
+"``printf(\"%p\")`` except that it is guaranteed to start with the literal "
+"``0x`` regardless of what the platform's ``printf`` yields."
msgstr ""
-#: c-api/unicode.rst:520
+#: c-api/unicode.rst:519
msgid ":attr:`%A`"
-msgstr ""
+msgstr ":attr:`%A`"
-#: c-api/unicode.rst:523 c-api/unicode.rst:535
+#: c-api/unicode.rst:522 c-api/unicode.rst:534
msgid "PyObject\\*"
msgstr "PyObject\\*"
-#: c-api/unicode.rst:520
+#: c-api/unicode.rst:519
msgid "The result of calling :func:`ascii`."
msgstr ""
-#: c-api/unicode.rst:523
+#: c-api/unicode.rst:522
msgid ":attr:`%U`"
-msgstr ""
+msgstr ":attr:`%U`"
-#: c-api/unicode.rst:523
+#: c-api/unicode.rst:522
#, fuzzy
msgid "A Unicode object."
msgstr "Un objet Unicode."
-#: c-api/unicode.rst:525
+#: c-api/unicode.rst:524
msgid ":attr:`%V`"
-msgstr ""
+msgstr ":attr:`%V`"
-#: c-api/unicode.rst:525
+#: c-api/unicode.rst:524
msgid "PyObject\\*, const char\\*"
msgstr ""
-#: c-api/unicode.rst:525
+#: c-api/unicode.rst:524
msgid ""
"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 ""
-#: c-api/unicode.rst:532
+#: c-api/unicode.rst:531
msgid ":attr:`%S`"
-msgstr ""
+msgstr ":attr:`%S`"
-#: c-api/unicode.rst:532
+#: c-api/unicode.rst:531
msgid "The result of calling :c:func:`PyObject_Str`."
msgstr ""
-#: c-api/unicode.rst:535
+#: c-api/unicode.rst:534
msgid ":attr:`%R`"
-msgstr ""
+msgstr ":attr:`%R`"
-#: c-api/unicode.rst:535
+#: c-api/unicode.rst:534
msgid "The result of calling :c:func:`PyObject_Repr`."
msgstr ""
-#: c-api/unicode.rst:539
+#: c-api/unicode.rst:538
msgid ""
"An unrecognized format character causes all the rest of the format string to "
"be copied as-is to the result string, and any extra arguments discarded."
msgstr ""
-#: c-api/unicode.rst:543
+#: c-api/unicode.rst:542
msgid ""
"The width formatter unit is number of characters rather than bytes. The "
"precision formatter unit is number of bytes for ``\"%s\"`` and ``\"%V\"`` "
@@ -720,37 +743,37 @@ msgid ""
"``PyObject*`` argument is not ``NULL``)."
msgstr ""
-#: c-api/unicode.rst:549
+#: c-api/unicode.rst:548
msgid ""
"For integer specifiers (d, u, ld, li, lu, lld, lli, llu, zd, zi, zu, i, x): "
"the 0-conversion flag has effect even when a precision is given."
msgstr ""
-#: c-api/unicode.rst:552
+#: c-api/unicode.rst:551
msgid "Support for ``\"%lld\"`` and ``\"%llu\"`` added."
msgstr ""
-#: c-api/unicode.rst:555
+#: c-api/unicode.rst:554
msgid "Support for ``\"%li\"``, ``\"%lli\"`` and ``\"%zi\"`` added."
msgstr ""
-#: c-api/unicode.rst:558
+#: c-api/unicode.rst:557
msgid ""
-"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, ``\"%U"
-"\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added."
+"Support width and precision formatter for ``\"%s\"``, ``\"%A\"``, "
+"``\"%U\"``, ``\"%V\"``, ``\"%S\"``, ``\"%R\"`` added."
msgstr ""
-#: c-api/unicode.rst:565
+#: c-api/unicode.rst:564
msgid ""
"Identical to :c:func:`PyUnicode_FromFormat` except that it takes exactly two "
"arguments."
msgstr ""
-#: c-api/unicode.rst:572
+#: c-api/unicode.rst:571
msgid "Decode an encoded object *obj* to a Unicode object."
msgstr ""
-#: c-api/unicode.rst:574
+#: c-api/unicode.rst:573
msgid ""
":class:`bytes`, :class:`bytearray` and other :term:`bytes-like objects "
"` are decoded according to the given *encoding* and using "
@@ -758,23 +781,23 @@ msgid ""
"interface use the default values (see :ref:`builtincodecs` for details)."
msgstr ""
-#: c-api/unicode.rst:580
+#: c-api/unicode.rst:579
msgid ""
"All other objects, including Unicode objects, cause a :exc:`TypeError` to be "
"set."
msgstr ""
-#: c-api/unicode.rst:583
+#: c-api/unicode.rst:582
msgid ""
"The API returns ``NULL`` if there was an error. The caller is responsible "
"for decref'ing the returned objects."
msgstr ""
-#: c-api/unicode.rst:589
+#: c-api/unicode.rst:588
msgid "Return the length of the Unicode object, in code points."
msgstr ""
-#: c-api/unicode.rst:600
+#: c-api/unicode.rst:599
msgid ""
"Copy characters from one Unicode object into another. This function "
"performs character conversion when necessary and falls back to :c:func:"
@@ -782,52 +805,52 @@ msgid ""
"otherwise returns the number of copied characters."
msgstr ""
-#: c-api/unicode.rst:611
+#: c-api/unicode.rst:610
msgid ""
-"Fill a string with a character: write *fill_char* into ``unicode[start:start"
-"+length]``."
+"Fill a string with a character: write *fill_char* into ``unicode[start:"
+"start+length]``."
msgstr ""
-#: c-api/unicode.rst:614
+#: c-api/unicode.rst:613
msgid ""
"Fail if *fill_char* is bigger than the string maximum character, or if the "
"string has more than 1 reference."
msgstr ""
-#: c-api/unicode.rst:617
+#: c-api/unicode.rst:616
msgid ""
"Return the number of written character, or return ``-1`` and raise an "
"exception on error."
msgstr ""
-#: c-api/unicode.rst:626
+#: c-api/unicode.rst:625
msgid ""
"Write a character to a string. The string must have been created through :c:"
"func:`PyUnicode_New`. Since Unicode strings are supposed to be immutable, "
"the string must not be shared, or have been hashed yet."
msgstr ""
-#: c-api/unicode.rst:630
+#: c-api/unicode.rst:629
msgid ""
"This function checks that *unicode* is a Unicode object, that the index is "
"not out of bounds, and that the object can be modified safely (i.e. that it "
"its reference count is one)."
msgstr ""
-#: c-api/unicode.rst:639
+#: c-api/unicode.rst:638
msgid ""
"Read a character from a string. This function checks that *unicode* is a "
"Unicode object and the index is not out of bounds, in contrast to the macro "
"version :c:func:`PyUnicode_READ_CHAR`."
msgstr ""
-#: c-api/unicode.rst:649
+#: c-api/unicode.rst:648
msgid ""
"Return a substring of *str*, from character index *start* (included) to "
"character index *end* (excluded). Negative indices are not supported."
msgstr ""
-#: c-api/unicode.rst:658
+#: c-api/unicode.rst:657
msgid ""
"Copy the string *u* into a UCS4 buffer, including a null character, if "
"*copy_null* is set. Returns ``NULL`` and sets an exception on error (in "
@@ -835,7 +858,7 @@ msgid ""
"*u*). *buffer* is returned on success."
msgstr ""
-#: c-api/unicode.rst:668
+#: c-api/unicode.rst:667
msgid ""
"Copy the string *u* into a new UCS4 buffer that is allocated using :c:func:"
"`PyMem_Malloc`. If this fails, ``NULL`` is returned with a :exc:"
@@ -843,11 +866,11 @@ msgid ""
"appended."
msgstr ""
-#: c-api/unicode.rst:677
+#: c-api/unicode.rst:676
msgid "Deprecated Py_UNICODE APIs"
msgstr ""
-#: c-api/unicode.rst:681
+#: c-api/unicode.rst:680
msgid ""
"These API functions are deprecated with the implementation of :pep:`393`. "
"Extension modules can continue using them, as they will not be removed in "
@@ -855,7 +878,7 @@ msgid ""
"and memory hits."
msgstr ""
-#: c-api/unicode.rst:688
+#: c-api/unicode.rst:687
msgid ""
"Create a Unicode object from the Py_UNICODE buffer *u* of the given size. "
"*u* may be ``NULL`` which causes the contents to be undefined. It is the "
@@ -863,28 +886,28 @@ msgid ""
"the new object."
msgstr ""
-#: c-api/unicode.rst:693
+#: c-api/unicode.rst:692
msgid ""
"If the buffer is not ``NULL``, the return value might be a shared object. "
"Therefore, modification of the resulting Unicode object is only allowed when "
"*u* is ``NULL``."
msgstr ""
-#: c-api/unicode.rst:697
+#: c-api/unicode.rst:696
msgid ""
"If the buffer is ``NULL``, :c:func:`PyUnicode_READY` must be called once the "
"string content has been filled before using any of the access macros such "
"as :c:func:`PyUnicode_KIND`."
msgstr ""
-#: c-api/unicode.rst:704
+#: c-api/unicode.rst:703
msgid ""
"Part of the old-style Unicode API, please migrate to using :c:func:"
"`PyUnicode_FromKindAndData`, :c:func:`PyUnicode_FromWideChar`, or :c:func:"
"`PyUnicode_New`."
msgstr ""
-#: c-api/unicode.rst:709
+#: c-api/unicode.rst:708
msgid ""
"Return a read-only pointer to the Unicode object's internal :c:type:"
"`Py_UNICODE` buffer, or ``NULL`` on error. This will create the :c:type:"
@@ -895,21 +918,27 @@ msgid ""
"functions."
msgstr ""
-#: c-api/unicode.rst:745
+#: c-api/unicode.rst:748
msgid ""
"Part of the old-style Unicode API, please migrate to using :c:func:"
"`PyUnicode_AsUCS4`, :c:func:`PyUnicode_AsWideChar`, :c:func:"
"`PyUnicode_ReadChar` or similar new APIs."
msgstr ""
-#: c-api/unicode.rst:727
+#: c-api/unicode.rst:726
msgid ""
"Create a Unicode object by replacing all decimal digits in :c:type:"
"`Py_UNICODE` buffer of the given *size* by ASCII digits 0--9 according to "
"their decimal value. Return ``NULL`` if an exception occurs."
msgstr ""
-#: c-api/unicode.rst:734
+#: c-api/unicode.rst:732
+msgid ""
+"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
+"func:`Py_UNICODE_TODECIMAL`."
+msgstr ""
+
+#: c-api/unicode.rst:737
msgid ""
"Like :c:func:`PyUnicode_AsUnicode`, but also saves the :c:func:`Py_UNICODE` "
"array length (excluding the extra null terminator) in *size*. Note that the "
@@ -918,7 +947,7 @@ msgid ""
"functions."
msgstr ""
-#: c-api/unicode.rst:750
+#: c-api/unicode.rst:753
msgid ""
"Create a copy of a Unicode string ending with a null code point. Return "
"``NULL`` and raise a :exc:`MemoryError` exception on memory allocation "
@@ -928,64 +957,64 @@ msgid ""
"truncated when used in most C functions."
msgstr ""
-#: c-api/unicode.rst:759
+#: c-api/unicode.rst:762
msgid ""
"Please migrate to using :c:func:`PyUnicode_AsUCS4Copy` or similar new APIs."
msgstr ""
-#: c-api/unicode.rst:764
+#: c-api/unicode.rst:767
msgid ""
"Return the size of the deprecated :c:type:`Py_UNICODE` representation, in "
"code units (this includes surrogate pairs as 2 units)."
msgstr ""
-#: c-api/unicode.rst:774
+#: c-api/unicode.rst:777
msgid ""
"Copy an instance of a Unicode subtype to a new true Unicode object if "
"necessary. If *obj* is already a true Unicode object (not a subtype), return "
"the reference with incremented refcount."
msgstr ""
-#: c-api/unicode.rst:778
+#: c-api/unicode.rst:781
msgid ""
"Objects other than Unicode or its subtypes will cause a :exc:`TypeError`."
msgstr ""
-#: c-api/unicode.rst:782
+#: c-api/unicode.rst:785
msgid "Locale Encoding"
msgstr ""
-#: c-api/unicode.rst:784
+#: c-api/unicode.rst:787
msgid ""
"The current locale encoding can be used to decode text from the operating "
"system."
msgstr ""
-#: c-api/unicode.rst:791
+#: c-api/unicode.rst:794
msgid ""
"Decode a string from UTF-8 on Android and VxWorks, or from the current "
-"locale encoding on other platforms. The supported error handlers are ``"
-"\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The decoder uses ``"
-"\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with a "
+"locale encoding on other platforms. The supported error handlers are "
+"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The decoder uses "
+"``\"strict\"`` error handler if *errors* is ``NULL``. *str* must end with a "
"null character but cannot contain embedded null characters."
msgstr ""
-#: c-api/unicode.rst:798
+#: c-api/unicode.rst:801
msgid ""
"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` to decode a string from :c:"
"data:`Py_FileSystemDefaultEncoding` (the locale encoding read at Python "
"startup)."
msgstr ""
-#: c-api/unicode.rst:838
+#: c-api/unicode.rst:841
msgid "This function ignores the Python UTF-8 mode."
msgstr ""
-#: c-api/unicode.rst:910
+#: c-api/unicode.rst:913
msgid "The :c:func:`Py_DecodeLocale` function."
msgstr ""
-#: c-api/unicode.rst:810
+#: c-api/unicode.rst:813
msgid ""
"The function now also uses the current locale encoding for the "
"``surrogateescape`` error handler, except on Android. Previously, :c:func:"
@@ -993,32 +1022,32 @@ msgid ""
"locale encoding was used for ``strict``."
msgstr ""
-#: c-api/unicode.rst:819
+#: c-api/unicode.rst:822
msgid ""
"Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string "
"length using :c:func:`strlen`."
msgstr ""
-#: c-api/unicode.rst:827
+#: c-api/unicode.rst:830
msgid ""
"Encode a Unicode object to UTF-8 on Android and VxWorks, or to the current "
-"locale encoding on other platforms. The supported error handlers are ``"
-"\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The encoder uses ``"
-"\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:`bytes` "
-"object. *unicode* cannot contain embedded null characters."
+"locale encoding on other platforms. The supported error handlers are "
+"``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The encoder uses "
+"``\"strict\"`` error handler if *errors* is ``NULL``. Return a :class:"
+"`bytes` object. *unicode* cannot contain embedded null characters."
msgstr ""
-#: c-api/unicode.rst:834
+#: c-api/unicode.rst:837
msgid ""
"Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to :c:data:"
"`Py_FileSystemDefaultEncoding` (the locale encoding read at Python startup)."
msgstr ""
-#: c-api/unicode.rst:946
+#: c-api/unicode.rst:949
msgid "The :c:func:`Py_EncodeLocale` function."
msgstr ""
-#: c-api/unicode.rst:846
+#: c-api/unicode.rst:849
msgid ""
"The function now also uses the current locale encoding for the "
"``surrogateescape`` error handler, except on Android. Previously, :c:func:"
@@ -1026,11 +1055,11 @@ msgid ""
"locale encoding was used for ``strict``."
msgstr ""
-#: c-api/unicode.rst:855
+#: c-api/unicode.rst:858
msgid "File System Encoding"
msgstr ""
-#: c-api/unicode.rst:857
+#: c-api/unicode.rst:860
msgid ""
"To encode and decode file names and other environment strings, :c:data:"
"`Py_FileSystemDefaultEncoding` should be used as the encoding, and :c:data:"
@@ -1040,7 +1069,7 @@ msgid ""
"`PyUnicode_FSConverter` as the conversion function:"
msgstr ""
-#: c-api/unicode.rst:866
+#: c-api/unicode.rst:869
msgid ""
"ParseTuple converter: encode :class:`str` objects -- obtained directly or "
"through the :class:`os.PathLike` interface -- to :class:`bytes` using :c:"
@@ -1049,18 +1078,18 @@ msgid ""
"is no longer used."
msgstr ""
-#: c-api/unicode.rst:891
+#: c-api/unicode.rst:894
msgid "Accepts a :term:`path-like object`."
msgstr "Accepte un :term:`path-like object`."
-#: c-api/unicode.rst:877
+#: c-api/unicode.rst:880
msgid ""
"To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` "
"converter should be used, passing :c:func:`PyUnicode_FSDecoder` as the "
"conversion function:"
msgstr ""
-#: c-api/unicode.rst:883
+#: c-api/unicode.rst:886
msgid ""
"ParseTuple converter: decode :class:`bytes` objects -- obtained either "
"directly or indirectly through the :class:`os.PathLike` interface -- to :"
@@ -1069,19 +1098,19 @@ msgid ""
"which must be released when it is no longer used."
msgstr ""
-#: c-api/unicode.rst:897
+#: c-api/unicode.rst:900
msgid ""
"Decode a string using :c:data:`Py_FileSystemDefaultEncoding` and the :c:data:"
"`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: c-api/unicode.rst:921 c-api/unicode.rst:937
+#: c-api/unicode.rst:924 c-api/unicode.rst:940
msgid ""
"If :c:data:`Py_FileSystemDefaultEncoding` is not set, fall back to the "
"locale encoding."
msgstr ""
-#: c-api/unicode.rst:903
+#: c-api/unicode.rst:906
msgid ""
":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the "
"locale encoding and cannot be modified later. If you need to decode a string "
@@ -1089,22 +1118,22 @@ msgid ""
"`PyUnicode_DecodeLocaleAndSize`."
msgstr ""
-#: c-api/unicode.rst:926 c-api/unicode.rst:950
+#: c-api/unicode.rst:929 c-api/unicode.rst:953
msgid "Use :c:data:`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: c-api/unicode.rst:918
+#: c-api/unicode.rst:921
msgid ""
"Decode a null-terminated string using :c:data:`Py_FileSystemDefaultEncoding` "
"and the :c:data:`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: c-api/unicode.rst:924
+#: c-api/unicode.rst:927
msgid ""
"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` if you know the string length."
msgstr ""
-#: c-api/unicode.rst:932
+#: c-api/unicode.rst:935
msgid ""
"Encode a Unicode object to :c:data:`Py_FileSystemDefaultEncoding` with the :"
"c:data:`Py_FileSystemDefaultEncodeErrors` error handler, and return :class:"
@@ -1112,29 +1141,29 @@ msgid ""
"bytes."
msgstr ""
-#: c-api/unicode.rst:940
+#: c-api/unicode.rst:943
msgid ""
":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the "
"locale encoding and cannot be modified later. If you need to encode a string "
"to the current locale encoding, use :c:func:`PyUnicode_EncodeLocale`."
msgstr ""
-#: c-api/unicode.rst:954
+#: c-api/unicode.rst:957
msgid "wchar_t Support"
msgstr ""
-#: c-api/unicode.rst:956
+#: c-api/unicode.rst:959
msgid ":c:type:`wchar_t` support for platforms which support it:"
msgstr ""
-#: c-api/unicode.rst:960
+#: c-api/unicode.rst:963
msgid ""
"Create a Unicode object from the :c:type:`wchar_t` buffer *w* of the given "
"*size*. Passing ``-1`` as the *size* indicates that the function must itself "
"compute the length, using wcslen. Return ``NULL`` on failure."
msgstr ""
-#: c-api/unicode.rst:968
+#: c-api/unicode.rst:971
msgid ""
"Copy the Unicode object contents into the :c:type:`wchar_t` buffer *w*. At "
"most *size* :c:type:`wchar_t` characters are copied (excluding a possibly "
@@ -1147,7 +1176,7 @@ msgid ""
"would cause the string to be truncated when used with most C functions."
msgstr ""
-#: c-api/unicode.rst:981
+#: c-api/unicode.rst:984
msgid ""
"Convert the Unicode object to a wide character string. The output string "
"always ends with a null character. If *size* is not ``NULL``, write the "
@@ -1158,38 +1187,38 @@ msgid ""
"`wchar_t*` string contains null characters a :exc:`ValueError` is raised."
msgstr ""
-#: c-api/unicode.rst:989
+#: c-api/unicode.rst:992
msgid ""
"Returns a buffer allocated by :c:func:`PyMem_Alloc` (use :c:func:"
-"`PyMem_Free` to free it) on success. On error, returns ``NULL`` and *"
-"\\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation is "
+"`PyMem_Free` to free it) on success. On error, returns ``NULL`` and "
+"*\\*size* is undefined. Raises a :exc:`MemoryError` if memory allocation is "
"failed."
msgstr ""
-#: c-api/unicode.rst:996
+#: c-api/unicode.rst:999
msgid ""
"Raises a :exc:`ValueError` if *size* is ``NULL`` and the :c:type:`wchar_t*` "
"string contains null characters."
msgstr ""
-#: c-api/unicode.rst:1004
+#: c-api/unicode.rst:1007
msgid "Built-in Codecs"
msgstr ""
-#: c-api/unicode.rst:1006
+#: c-api/unicode.rst:1009
msgid ""
"Python provides a set of built-in codecs which are written in C for speed. "
"All of these codecs are directly usable via the following functions."
msgstr ""
-#: c-api/unicode.rst:1009
+#: c-api/unicode.rst:1012
msgid ""
"Many of the following APIs take two arguments encoding and errors, and they "
"have the same semantics as the ones of the built-in :func:`str` string "
"object constructor."
msgstr ""
-#: c-api/unicode.rst:1013
+#: c-api/unicode.rst:1016
msgid ""
"Setting encoding to ``NULL`` causes the default encoding to be used which is "
"UTF-8. The file system calls should use :c:func:`PyUnicode_FSConverter` for "
@@ -1200,28 +1229,28 @@ msgid ""
"setlocale)."
msgstr ""
-#: c-api/unicode.rst:1021
+#: c-api/unicode.rst:1024
msgid ""
"Error handling is set by errors which may also be set to ``NULL`` meaning to "
"use the default handling defined for the codec. Default error handling for "
"all built-in codecs is \"strict\" (:exc:`ValueError` is raised)."
msgstr ""
-#: c-api/unicode.rst:1025
+#: c-api/unicode.rst:1028
msgid ""
-"The codecs all use a similar interface. Only deviation from the following "
+"The codecs all use a similar interface. Only deviations from the following "
"generic ones are documented for simplicity."
msgstr ""
-#: c-api/unicode.rst:1030
+#: c-api/unicode.rst:1033
msgid "Generic Codecs"
msgstr ""
-#: c-api/unicode.rst:1032
+#: c-api/unicode.rst:1035
msgid "These are the generic codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1038
+#: c-api/unicode.rst:1041
msgid ""
"Create a Unicode object by decoding *size* bytes of the encoded string *s*. "
"*encoding* and *errors* have the same meaning as the parameters of the same "
@@ -1230,7 +1259,7 @@ msgid ""
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1048
+#: c-api/unicode.rst:1051
msgid ""
"Encode a Unicode object and return the result as Python bytes object. "
"*encoding* and *errors* have the same meaning as the parameters of the same "
@@ -1239,7 +1268,7 @@ msgid ""
"was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1058
+#: c-api/unicode.rst:1061
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* and return a "
"Python bytes object. *encoding* and *errors* have the same meaning as the "
@@ -1248,27 +1277,27 @@ msgid ""
"``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1323
+#: c-api/unicode.rst:1327
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1070
+#: c-api/unicode.rst:1073
msgid "UTF-8 Codecs"
msgstr ""
-#: c-api/unicode.rst:1072
+#: c-api/unicode.rst:1075
msgid "These are the UTF-8 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1077
+#: c-api/unicode.rst:1080
msgid ""
"Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string "
"*s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1084
+#: c-api/unicode.rst:1087
msgid ""
"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF8`. If "
"*consumed* is not ``NULL``, trailing incomplete UTF-8 byte sequences will "
@@ -1276,14 +1305,14 @@ msgid ""
"of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1092
+#: c-api/unicode.rst:1095
msgid ""
"Encode a Unicode object using UTF-8 and return the result as Python bytes "
"object. Error handling is \"strict\". Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1099
+#: c-api/unicode.rst:1102
msgid ""
"Return a pointer to the UTF-8 encoding of the Unicode object, and store the "
"size of the encoded representation (in bytes) in *size*. The *size* "
@@ -1292,63 +1321,65 @@ msgid ""
"regardless of whether there are any other null code points."
msgstr ""
-#: c-api/unicode.rst:1105
+#: c-api/unicode.rst:1108
msgid ""
"In the case of an error, ``NULL`` is returned with an exception set and no "
"*size* is stored."
msgstr ""
-#: c-api/unicode.rst:1108
+#: c-api/unicode.rst:1111
msgid ""
"This caches the UTF-8 representation of the string in the Unicode object, "
"and subsequent calls will return a pointer to the same buffer. The caller "
-"is not responsible for deallocating the buffer."
+"is not responsible for deallocating the buffer. The buffer is deallocated "
+"and pointers to it become invalid when the Unicode object is garbage "
+"collected."
msgstr ""
-#: c-api/unicode.rst:1124
+#: c-api/unicode.rst:1128
msgid "The return type is now ``const char *`` rather of ``char *``."
msgstr ""
-#: c-api/unicode.rst:1120
+#: c-api/unicode.rst:1124
msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size."
msgstr ""
-#: c-api/unicode.rst:1130
+#: c-api/unicode.rst:1134
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* using UTF-8 "
"and return a Python bytes object. Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1137
+#: c-api/unicode.rst:1141
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF8String`, :c:func:`PyUnicode_AsUTF8AndSize` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1141
+#: c-api/unicode.rst:1145
msgid "UTF-32 Codecs"
msgstr ""
-#: c-api/unicode.rst:1143
+#: c-api/unicode.rst:1147
msgid "These are the UTF-32 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1149
+#: c-api/unicode.rst:1153
msgid ""
"Decode *size* bytes from a UTF-32 encoded buffer string and return the "
"corresponding Unicode object. *errors* (if non-``NULL``) defines the error "
"handling. It defaults to \"strict\"."
msgstr ""
-#: c-api/unicode.rst:1226
+#: c-api/unicode.rst:1230
msgid ""
"If *byteorder* is non-``NULL``, the decoder starts decoding using the given "
"byte order::"
msgstr ""
-#: c-api/unicode.rst:1160
+#: c-api/unicode.rst:1164
msgid ""
"If ``*byteorder`` is zero, and the first four bytes of the input data are a "
"byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1356,21 +1387,21 @@ msgid ""
"``-1`` or ``1``, any byte order mark is copied to the output."
msgstr ""
-#: c-api/unicode.rst:1239
+#: c-api/unicode.rst:1169
msgid ""
"After completion, *\\*byteorder* is set to the current byte order at the end "
"of input data."
msgstr ""
-#: c-api/unicode.rst:1242
+#: c-api/unicode.rst:1246
msgid "If *byteorder* is ``NULL``, the codec starts in native order mode."
msgstr ""
-#: c-api/unicode.rst:1206 c-api/unicode.rst:1281
+#: c-api/unicode.rst:1210 c-api/unicode.rst:1285
msgid "Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1176
+#: c-api/unicode.rst:1180
msgid ""
"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF32`. If "
"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF32Stateful` will not "
@@ -1379,53 +1410,53 @@ msgid ""
"number of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1185
+#: c-api/unicode.rst:1189
msgid ""
"Return a Python byte string using the UTF-32 encoding in native byte order. "
"The string always starts with a BOM mark. Error handling is \"strict\". "
"Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1193
+#: c-api/unicode.rst:1197
msgid ""
"Return a Python bytes object holding the UTF-32 encoded value of the Unicode "
"data in *s*. Output is written according to the following byte order::"
msgstr ""
-#: c-api/unicode.rst:1274
+#: c-api/unicode.rst:1278
msgid ""
"If byteorder is ``0``, the output string will always start with the Unicode "
"BOM mark (U+FEFF). In the other two modes, no BOM mark is prepended."
msgstr ""
-#: c-api/unicode.rst:1203
+#: c-api/unicode.rst:1207
msgid ""
"If ``Py_UNICODE_WIDE`` is not defined, surrogate pairs will be output as a "
"single code point."
msgstr ""
-#: c-api/unicode.rst:1210
+#: c-api/unicode.rst:1214
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF32String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1214
+#: c-api/unicode.rst:1218
msgid "UTF-16 Codecs"
msgstr ""
-#: c-api/unicode.rst:1216
+#: c-api/unicode.rst:1220
msgid "These are the UTF-16 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1222
+#: c-api/unicode.rst:1226
msgid ""
"Decode *size* bytes from a UTF-16 encoded buffer string and return the "
"corresponding Unicode object. *errors* (if non-``NULL``) defines the error "
"handling. It defaults to \"strict\"."
msgstr ""
-#: c-api/unicode.rst:1233
+#: c-api/unicode.rst:1237
msgid ""
"If ``*byteorder`` is zero, and the first two bytes of the input data are a "
"byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1434,7 +1465,13 @@ msgid ""
"result in either a ``\\ufeff`` or a ``\\ufffe`` character)."
msgstr ""
-#: c-api/unicode.rst:1250
+#: c-api/unicode.rst:1243
+msgid ""
+"After completion, ``*byteorder`` is set to the current byte order at the end "
+"of input data."
+msgstr ""
+
+#: c-api/unicode.rst:1254
msgid ""
"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF16`. If "
"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeUTF16Stateful` will not "
@@ -1444,47 +1481,47 @@ msgid ""
"*consumed*."
msgstr ""
-#: c-api/unicode.rst:1259
+#: c-api/unicode.rst:1263
msgid ""
"Return a Python byte string using the UTF-16 encoding in native byte order. "
"The string always starts with a BOM mark. Error handling is \"strict\". "
"Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1267
+#: c-api/unicode.rst:1271
msgid ""
"Return a Python bytes object holding the UTF-16 encoded value of the Unicode "
"data in *s*. Output is written according to the following byte order::"
msgstr ""
-#: c-api/unicode.rst:1277
+#: c-api/unicode.rst:1281
msgid ""
"If ``Py_UNICODE_WIDE`` is defined, a single :c:type:`Py_UNICODE` value may "
"get represented as a surrogate pair. If it is not defined, each :c:type:"
"`Py_UNICODE` values is interpreted as a UCS-2 character."
msgstr ""
-#: c-api/unicode.rst:1285
+#: c-api/unicode.rst:1289
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF16String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1289
+#: c-api/unicode.rst:1293
msgid "UTF-7 Codecs"
msgstr ""
-#: c-api/unicode.rst:1291
+#: c-api/unicode.rst:1295
msgid "These are the UTF-7 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1296
+#: c-api/unicode.rst:1300
msgid ""
"Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string "
"*s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1303
+#: c-api/unicode.rst:1307
msgid ""
"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeUTF7`. If "
"*consumed* is not ``NULL``, trailing incomplete UTF-7 base-64 sections will "
@@ -1492,14 +1529,14 @@ msgid ""
"of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1312
+#: c-api/unicode.rst:1316
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given size using UTF-7 and "
"return a Python bytes object. Return ``NULL`` if an exception was raised by "
"the codec."
msgstr ""
-#: c-api/unicode.rst:1316
+#: c-api/unicode.rst:1320
msgid ""
"If *base64SetO* is nonzero, \"Set O\" (punctuation that has no otherwise "
"special meaning) will be encoded in base-64. If *base64WhiteSpace* is "
@@ -1507,173 +1544,173 @@ msgid ""
"the Python \"utf-7\" codec."
msgstr ""
-#: c-api/unicode.rst:1327
+#: c-api/unicode.rst:1331
msgid "Unicode-Escape Codecs"
msgstr ""
-#: c-api/unicode.rst:1329
+#: c-api/unicode.rst:1333
msgid "These are the \"Unicode Escape\" codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1335
+#: c-api/unicode.rst:1339
msgid ""
"Create a Unicode object by decoding *size* bytes of the Unicode-Escape "
"encoded string *s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1341
+#: c-api/unicode.rst:1345
msgid ""
"Encode a Unicode object using Unicode-Escape and return the result as a "
"bytes object. Error handling is \"strict\". Return ``NULL`` if an "
"exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1348
+#: c-api/unicode.rst:1352
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Unicode-"
"Escape and return a bytes object. Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1353
+#: c-api/unicode.rst:1357
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUnicodeEscapeString`."
msgstr ""
-#: c-api/unicode.rst:1357
+#: c-api/unicode.rst:1361
msgid "Raw-Unicode-Escape Codecs"
msgstr ""
-#: c-api/unicode.rst:1359
+#: c-api/unicode.rst:1363
msgid "These are the \"Raw Unicode Escape\" codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1365
+#: c-api/unicode.rst:1369
msgid ""
"Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape "
"encoded string *s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1371
+#: c-api/unicode.rst:1375
msgid ""
"Encode a Unicode object using Raw-Unicode-Escape and return the result as a "
"bytes object. Error handling is \"strict\". Return ``NULL`` if an "
"exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1379
+#: c-api/unicode.rst:1383
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Raw-Unicode-"
"Escape and return a bytes object. Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1385
+#: c-api/unicode.rst:1389
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsRawUnicodeEscapeString` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1389
+#: c-api/unicode.rst:1393
msgid "Latin-1 Codecs"
msgstr ""
-#: c-api/unicode.rst:1391
+#: c-api/unicode.rst:1395
msgid ""
"These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 "
"Unicode ordinals and only these are accepted by the codecs during encoding."
msgstr ""
-#: c-api/unicode.rst:1397
+#: c-api/unicode.rst:1401
msgid ""
"Create a Unicode object by decoding *size* bytes of the Latin-1 encoded "
"string *s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1403
+#: c-api/unicode.rst:1407
msgid ""
"Encode a Unicode object using Latin-1 and return the result as Python bytes "
"object. Error handling is \"strict\". Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1410
+#: c-api/unicode.rst:1414
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Latin-1 and "
"return a Python bytes object. Return ``NULL`` if an exception was raised by "
"the codec."
msgstr ""
-#: c-api/unicode.rst:1417
+#: c-api/unicode.rst:1421
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsLatin1String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1421
+#: c-api/unicode.rst:1425
msgid "ASCII Codecs"
msgstr ""
-#: c-api/unicode.rst:1423
+#: c-api/unicode.rst:1427
msgid ""
"These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All "
"other codes generate errors."
msgstr ""
-#: c-api/unicode.rst:1429
+#: c-api/unicode.rst:1433
msgid ""
"Create a Unicode object by decoding *size* bytes of the ASCII encoded string "
"*s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1435
+#: c-api/unicode.rst:1439
msgid ""
"Encode a Unicode object using ASCII and return the result as Python bytes "
"object. Error handling is \"strict\". Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1442
+#: c-api/unicode.rst:1446
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using ASCII and "
"return a Python bytes object. Return ``NULL`` if an exception was raised by "
"the codec."
msgstr ""
-#: c-api/unicode.rst:1449
+#: c-api/unicode.rst:1453
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsASCIIString` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1453
+#: c-api/unicode.rst:1457
msgid "Character Map Codecs"
msgstr ""
-#: c-api/unicode.rst:1455
+#: c-api/unicode.rst:1459
msgid ""
"This codec is special in that it can be used to implement many different "
"codecs (and this is in fact what was done to obtain most of the standard "
-"codecs included in the :mod:`encodings` package). The codec uses mapping to "
+"codecs included in the :mod:`encodings` package). The codec uses mappings to "
"encode and decode characters. The mapping objects provided must support "
"the :meth:`__getitem__` mapping interface; dictionaries and sequences work "
"well."
msgstr ""
-#: c-api/unicode.rst:1461
+#: c-api/unicode.rst:1465
msgid "These are the mapping codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1466
+#: c-api/unicode.rst:1470
msgid ""
"Create a Unicode object by decoding *size* bytes of the encoded string *s* "
"using the given *mapping* object. Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1470
+#: c-api/unicode.rst:1474
msgid ""
"If *mapping* is ``NULL``, Latin-1 decoding will be applied. Else *mapping* "
"must map bytes ordinals (integers in the range from 0 to 255) to Unicode "
@@ -1683,14 +1720,14 @@ msgid ""
"treated as undefined mappings and cause an error."
msgstr ""
-#: c-api/unicode.rst:1481
+#: c-api/unicode.rst:1485
msgid ""
"Encode a Unicode object using the given *mapping* object and return the "
"result as a bytes object. Error handling is \"strict\". Return ``NULL`` if "
"an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1485
+#: c-api/unicode.rst:1489
msgid ""
"The *mapping* object must map Unicode ordinal integers to bytes objects, "
"integers in the range from 0 to 255 or ``None``. Unmapped character "
@@ -1698,68 +1735,68 @@ msgid ""
"``None`` are treated as \"undefined mapping\" and cause an error."
msgstr ""
-#: c-api/unicode.rst:1494
+#: c-api/unicode.rst:1498
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using the given "
"*mapping* object and return the result as a bytes object. Return ``NULL`` "
"if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1501
+#: c-api/unicode.rst:1505
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsCharmapString` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1504
+#: c-api/unicode.rst:1508
msgid "The following codec API is special in that maps Unicode to Unicode."
msgstr ""
-#: c-api/unicode.rst:1508
+#: c-api/unicode.rst:1512
msgid ""
"Translate a string by applying a character mapping table to it and return "
"the resulting Unicode object. Return ``NULL`` if an exception was raised by "
"the codec."
msgstr ""
-#: c-api/unicode.rst:1512
+#: c-api/unicode.rst:1516
msgid ""
"The mapping table must map Unicode ordinal integers to Unicode ordinal "
"integers or ``None`` (causing deletion of the character)."
msgstr ""
-#: c-api/unicode.rst:1515
+#: c-api/unicode.rst:1519
msgid ""
"Mapping tables need only provide the :meth:`__getitem__` interface; "
"dictionaries and sequences work well. Unmapped character ordinals (ones "
"which cause a :exc:`LookupError`) are left untouched and are copied as-is."
msgstr ""
-#: c-api/unicode.rst:1519
+#: c-api/unicode.rst:1523
msgid ""
"*errors* has the usual meaning for codecs. It may be ``NULL`` which "
"indicates to use the default error handling."
msgstr ""
-#: c-api/unicode.rst:1526
+#: c-api/unicode.rst:1530
msgid ""
"Translate a :c:type:`Py_UNICODE` buffer of the given *size* by applying a "
"character *mapping* table to it and return the resulting Unicode object. "
"Return ``NULL`` when an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1533
+#: c-api/unicode.rst:1537
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_Translate`. or :ref:`generic codec based API `"
msgstr ""
-#: c-api/unicode.rst:1537
+#: c-api/unicode.rst:1541
msgid "MBCS codecs for Windows"
msgstr ""
-#: c-api/unicode.rst:1539
+#: c-api/unicode.rst:1543
msgid ""
"These are the MBCS codec APIs. They are currently only available on Windows "
"and use the Win32 MBCS converters to implement the conversions. Note that "
@@ -1767,13 +1804,13 @@ msgid ""
"is defined by the user settings on the machine running the codec."
msgstr ""
-#: c-api/unicode.rst:1546
+#: c-api/unicode.rst:1550
msgid ""
"Create a Unicode object by decoding *size* bytes of the MBCS encoded string "
"*s*. Return ``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1553
+#: c-api/unicode.rst:1557
msgid ""
"If *consumed* is ``NULL``, behave like :c:func:`PyUnicode_DecodeMBCS`. If "
"*consumed* is not ``NULL``, :c:func:`PyUnicode_DecodeMBCSStateful` will not "
@@ -1781,58 +1818,58 @@ msgid ""
"will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1561
+#: c-api/unicode.rst:1565
msgid ""
"Encode a Unicode object using MBCS and return the result as Python bytes "
"object. Error handling is \"strict\". Return ``NULL`` if an exception was "
"raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1568
+#: c-api/unicode.rst:1572
msgid ""
"Encode the Unicode object using the specified code page and return a Python "
"bytes object. Return ``NULL`` if an exception was raised by the codec. Use :"
"c:data:`CP_ACP` code page to get the MBCS encoder."
msgstr ""
-#: c-api/unicode.rst:1577
+#: c-api/unicode.rst:1581
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using MBCS and "
"return a Python bytes object. Return ``NULL`` if an exception was raised by "
"the codec."
msgstr ""
-#: c-api/unicode.rst:1584
+#: c-api/unicode.rst:1588
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: c-api/unicode.rst:1588
+#: c-api/unicode.rst:1592
msgid "Methods & Slots"
msgstr ""
-#: c-api/unicode.rst:1594
+#: c-api/unicode.rst:1598
msgid "Methods and Slot Functions"
msgstr ""
-#: c-api/unicode.rst:1596
+#: c-api/unicode.rst:1600
msgid ""
"The following APIs are capable of handling Unicode objects and strings on "
"input (we refer to them as strings in the descriptions) and return Unicode "
"objects or integers as appropriate."
msgstr ""
-#: c-api/unicode.rst:1600
+#: c-api/unicode.rst:1604
msgid "They all return ``NULL`` or ``-1`` if an exception occurs."
msgstr ""
-#: c-api/unicode.rst:1605
+#: c-api/unicode.rst:1609
msgid "Concat two strings giving a new Unicode string."
msgstr ""
-#: c-api/unicode.rst:1610
+#: c-api/unicode.rst:1614
msgid ""
"Split a string giving a list of Unicode strings. If *sep* is ``NULL``, "
"splitting will be done at all whitespace substrings. Otherwise, splits "
@@ -1841,27 +1878,27 @@ msgid ""
"list."
msgstr ""
-#: c-api/unicode.rst:1618
+#: c-api/unicode.rst:1622
msgid ""
"Split a Unicode string at line breaks, returning a list of Unicode strings. "
-"CRLF is considered to be one line break. If *keepend* is ``0``, the Line "
+"CRLF is considered to be one line break. If *keepend* is ``0``, the line "
"break characters are not included in the resulting strings."
msgstr ""
-#: c-api/unicode.rst:1625
+#: c-api/unicode.rst:1629
msgid ""
"Join a sequence of strings using the given *separator* and return the "
"resulting Unicode string."
msgstr ""
-#: c-api/unicode.rst:1632
+#: c-api/unicode.rst:1636
msgid ""
"Return ``1`` if *substr* matches ``str[start:end]`` at the given tail end "
"(*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` a "
"suffix match), ``0`` otherwise. Return ``-1`` if an error occurred."
msgstr ""
-#: c-api/unicode.rst:1640
+#: c-api/unicode.rst:1644
msgid ""
"Return the first position of *substr* in ``str[start:end]`` using the given "
"*direction* (*direction* == ``1`` means to do a forward search, *direction* "
@@ -1870,7 +1907,7 @@ msgid ""
"indicates that an error occurred and an exception has been set."
msgstr ""
-#: c-api/unicode.rst:1650
+#: c-api/unicode.rst:1654
msgid ""
"Return the first position of the character *ch* in ``str[start:end]`` using "
"the given *direction* (*direction* == ``1`` means to do a forward search, "
@@ -1879,36 +1916,36 @@ msgid ""
"``-2`` indicates that an error occurred and an exception has been set."
msgstr ""
-#: c-api/unicode.rst:1658
+#: c-api/unicode.rst:1662
msgid "*start* and *end* are now adjusted to behave like ``str[start:end]``."
msgstr ""
-#: c-api/unicode.rst:1665
+#: c-api/unicode.rst:1669
msgid ""
"Return the number of non-overlapping occurrences of *substr* in ``str[start:"
"end]``. Return ``-1`` if an error occurred."
msgstr ""
-#: c-api/unicode.rst:1672
+#: c-api/unicode.rst:1676
msgid ""
"Replace at most *maxcount* occurrences of *substr* in *str* with *replstr* "
"and return the resulting Unicode object. *maxcount* == ``-1`` means replace "
"all occurrences."
msgstr ""
-#: c-api/unicode.rst:1679
+#: c-api/unicode.rst:1683
msgid ""
"Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, "
"and greater than, respectively."
msgstr ""
-#: c-api/unicode.rst:1682
+#: c-api/unicode.rst:1686
msgid ""
"This function returns ``-1`` upon failure, so one should call :c:func:"
"`PyErr_Occurred` to check for errors."
msgstr ""
-#: c-api/unicode.rst:1688
+#: c-api/unicode.rst:1692
msgid ""
"Compare a Unicode object, *uni*, with *string* and return ``-1``, ``0``, "
"``1`` for less than, equal, and greater than, respectively. It is best to "
@@ -1916,56 +1953,56 @@ msgid ""
"string as ISO-8859-1 if it contains non-ASCII characters."
msgstr ""
-#: c-api/unicode.rst:1693
+#: c-api/unicode.rst:1697
msgid "This function does not raise exceptions."
msgstr ""
-#: c-api/unicode.rst:1698
+#: c-api/unicode.rst:1702
msgid "Rich compare two Unicode strings and return one of the following:"
msgstr ""
-#: c-api/unicode.rst:1700
+#: c-api/unicode.rst:1704
msgid "``NULL`` in case an exception was raised"
msgstr ""
-#: c-api/unicode.rst:1701
+#: c-api/unicode.rst:1705
msgid ":const:`Py_True` or :const:`Py_False` for successful comparisons"
msgstr ""
-#: c-api/unicode.rst:1702
+#: c-api/unicode.rst:1706
msgid ":const:`Py_NotImplemented` in case the type combination is unknown"
msgstr ""
-#: c-api/unicode.rst:1704
+#: c-api/unicode.rst:1708
msgid ""
"Possible values for *op* are :const:`Py_GT`, :const:`Py_GE`, :const:"
"`Py_EQ`, :const:`Py_NE`, :const:`Py_LT`, and :const:`Py_LE`."
msgstr ""
-#: c-api/unicode.rst:1710
+#: c-api/unicode.rst:1714
msgid ""
"Return a new string object from *format* and *args*; this is analogous to "
"``format % args``."
msgstr ""
-#: c-api/unicode.rst:1716
+#: c-api/unicode.rst:1720
msgid ""
"Check whether *element* is contained in *container* and return true or false "
"accordingly."
msgstr ""
-#: c-api/unicode.rst:1719
+#: c-api/unicode.rst:1723
msgid ""
"*element* has to coerce to a one element Unicode string. ``-1`` is returned "
"if there was an error."
msgstr ""
-#: c-api/unicode.rst:1725
+#: c-api/unicode.rst:1729
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 "
-"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 "
+"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), "
"otherwise it leaves *\\*string* alone and interns it (incrementing its "
"reference count). (Clarification: even though there is a lot of talk about "
@@ -1973,7 +2010,7 @@ msgid ""
"the object after the call if and only if you owned it before the call.)"
msgstr ""
-#: c-api/unicode.rst:1738
+#: c-api/unicode.rst:1742
msgid ""
"A combination of :c:func:`PyUnicode_FromString` and :c:func:"
"`PyUnicode_InternInPlace`, returning either a new Unicode string object that "
diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po
index 0fe7861b5c..e823aa424a 100644
--- a/c-api/veryhigh.po
+++ b/c-api/veryhigh.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -94,16 +94,17 @@ msgid ""
"`PyRun_InteractiveLoop`, otherwise return the result of :c:func:"
"`PyRun_SimpleFile`. *filename* is decoded from the filesystem encoding (:"
"func:`sys.getfilesystemencoding`). If *filename* is ``NULL``, this function "
-"uses ``\"???\"`` as the filename."
+"uses ``\"???\"`` as the filename. If *closeit* is true, the file is closed "
+"before ``PyRun_SimpleFileExFlags()`` returns."
msgstr ""
-#: c-api/veryhigh.rst:82
+#: c-api/veryhigh.rst:84
msgid ""
"This is a simplified interface to :c:func:`PyRun_SimpleStringFlags` below, "
"leaving the :c:type:`PyCompilerFlags`\\* argument set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:88
+#: c-api/veryhigh.rst:90
msgid ""
"Executes the Python source code from *command* in the :mod:`__main__` module "
"according to the *flags* argument. If :mod:`__main__` does not already "
@@ -112,26 +113,26 @@ msgid ""
"information. For the meaning of *flags*, see below."
msgstr ""
-#: c-api/veryhigh.rst:94
+#: c-api/veryhigh.rst:96
msgid ""
"Note that if an otherwise unhandled :exc:`SystemExit` is raised, this "
"function will not return ``-1``, but exit the process, as long as "
"``Py_InspectFlag`` is not set."
msgstr ""
-#: c-api/veryhigh.rst:101
+#: c-api/veryhigh.rst:103
msgid ""
"This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, "
"leaving *closeit* set to ``0`` and *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:107
+#: c-api/veryhigh.rst:109
msgid ""
"This is a simplified interface to :c:func:`PyRun_SimpleFileExFlags` below, "
"leaving *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:113
+#: c-api/veryhigh.rst:115
msgid ""
"Similar to :c:func:`PyRun_SimpleStringFlags`, but the Python source code is "
"read from *fp* instead of an in-memory string. *filename* should be the name "
@@ -140,20 +141,20 @@ msgid ""
"PyRun_SimpleFileExFlags returns."
msgstr ""
-#: c-api/veryhigh.rst:120
+#: c-api/veryhigh.rst:122
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 "
+"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 ""
-#: c-api/veryhigh.rst:126
+#: c-api/veryhigh.rst:128
msgid ""
"This is a simplified interface to :c:func:`PyRun_InteractiveOneFlags` below, "
"leaving *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:132
+#: c-api/veryhigh.rst:134
msgid ""
"Read and execute a single statement from a file associated with an "
"interactive device according to the *flags* argument. The user will be "
@@ -161,7 +162,7 @@ msgid ""
"filesystem encoding (:func:`sys.getfilesystemencoding`)."
msgstr ""
-#: c-api/veryhigh.rst:137
+#: c-api/veryhigh.rst:139
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 "
@@ -170,13 +171,13 @@ msgid ""
"specifically if needed.)"
msgstr ""
-#: c-api/veryhigh.rst:146
+#: c-api/veryhigh.rst:148
msgid ""
"This is a simplified interface to :c:func:`PyRun_InteractiveLoopFlags` "
"below, leaving *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:152
+#: c-api/veryhigh.rst:154
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`` "
@@ -185,7 +186,7 @@ msgid ""
"upon failure."
msgstr ""
-#: c-api/veryhigh.rst:161
+#: c-api/veryhigh.rst:163
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 "
@@ -195,7 +196,7 @@ msgid ""
"the Python source code."
msgstr ""
-#: c-api/veryhigh.rst:172
+#: c-api/veryhigh.rst:174
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 "
@@ -206,34 +207,34 @@ msgid ""
"line-editing and tab-completion features."
msgstr ""
-#: c-api/veryhigh.rst:181
+#: c-api/veryhigh.rst:183
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 ""
-#: c-api/veryhigh.rst:184
+#: c-api/veryhigh.rst:186
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 ""
-#: c-api/veryhigh.rst:192
+#: c-api/veryhigh.rst:194
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"``NULL`` and *flags* set to ``0``."
msgstr ""
-#: c-api/veryhigh.rst:201
+#: c-api/veryhigh.rst:203
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:210
+#: c-api/veryhigh.rst:212
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 "
@@ -242,25 +243,25 @@ msgid ""
"(:func:`sys.getfilesystemencoding`)."
msgstr ""
-#: c-api/veryhigh.rst:221
+#: c-api/veryhigh.rst:223
msgid ""
"This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` "
"below, leaving *flags* set to ``0``."
msgstr ""
-#: c-api/veryhigh.rst:229
+#: c-api/veryhigh.rst:231
msgid ""
"Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python "
"source code is read from *fp* instead of an in-memory string."
msgstr ""
-#: c-api/veryhigh.rst:237
+#: c-api/veryhigh.rst:239
msgid ""
"This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving "
"*flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:243
+#: c-api/veryhigh.rst:245
msgid ""
"Execute Python source code from *str* in the context specified by the "
"objects *globals* and *locals* with the compiler flags specified by "
@@ -269,31 +270,31 @@ msgid ""
"token that should be used to parse the source code."
msgstr ""
-#: c-api/veryhigh.rst:249
+#: c-api/veryhigh.rst:251
msgid ""
"Returns the result of executing the code as a Python object, or ``NULL`` if "
"an exception was raised."
msgstr ""
-#: c-api/veryhigh.rst:255
+#: c-api/veryhigh.rst:257
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0`` and *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:261
+#: c-api/veryhigh.rst:263
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:267
+#: c-api/veryhigh.rst:269
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0``."
msgstr ""
-#: c-api/veryhigh.rst:273
+#: c-api/veryhigh.rst:275
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 "
@@ -302,19 +303,19 @@ msgid ""
"func:`PyRun_FileExFlags` returns."
msgstr ""
-#: c-api/veryhigh.rst:282
+#: c-api/veryhigh.rst:284
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringFlags` below, "
"leaving *flags* set to ``NULL``."
msgstr ""
-#: c-api/veryhigh.rst:288
+#: c-api/veryhigh.rst:290
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringExFlags` below, "
"with *optimize* set to ``-1``."
msgstr ""
-#: c-api/veryhigh.rst:294
+#: c-api/veryhigh.rst:296
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 "
@@ -325,7 +326,7 @@ msgid ""
"returns ``NULL`` if the code cannot be parsed or compiled."
msgstr ""
-#: c-api/veryhigh.rst:302
+#: c-api/veryhigh.rst:304
msgid ""
"The integer *optimize* specifies the optimization level of the compiler; a "
"value of ``-1`` selects the optimization level of the interpreter as given "
@@ -334,20 +335,20 @@ msgid ""
"or ``2`` (docstrings are removed too)."
msgstr ""
-#: c-api/veryhigh.rst:313
+#: c-api/veryhigh.rst:315
msgid ""
"Like :c:func:`Py_CompileStringObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: c-api/veryhigh.rst:320
+#: c-api/veryhigh.rst:322
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 ""
-#: c-api/veryhigh.rst:327
+#: c-api/veryhigh.rst:329
msgid ""
"Evaluate a precompiled code object, given a particular environment for its "
"evaluation. This environment consists of a dictionary of global variables, "
@@ -356,7 +357,7 @@ msgid ""
"only_parameter>` arguments and a closure tuple of cells."
msgstr ""
-#: c-api/veryhigh.rst:336
+#: c-api/veryhigh.rst:338
#, fuzzy
msgid ""
"The C structure of the objects used to describe frame objects. The fields of "
@@ -365,13 +366,13 @@ msgstr ""
"La structure C utilisée pour décrire les objets *Code*. Les attributs de "
"cette structure sont sujets à changer à tout moment."
-#: c-api/veryhigh.rst:342
+#: c-api/veryhigh.rst:344
msgid ""
"Evaluate an execution frame. This is a simplified interface to :c:func:"
"`PyEval_EvalFrameEx`, for backward compatibility."
msgstr ""
-#: c-api/veryhigh.rst:348
+#: c-api/veryhigh.rst:350
msgid ""
"This is the main, unvarnished function of Python interpretation. The code "
"object associated with the execution frame *f* is executed, interpreting "
@@ -381,7 +382,7 @@ msgid ""
"of generator objects."
msgstr ""
-#: c-api/veryhigh.rst:355
+#: c-api/veryhigh.rst:357
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
@@ -389,33 +390,33 @@ msgstr ""
"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
"qu'elle ne passe pas sous silence une exception active."
-#: c-api/veryhigh.rst:362
+#: c-api/veryhigh.rst:364
msgid ""
"This function changes the flags of the current evaluation frame, and returns "
"true on success, false on failure."
msgstr ""
-#: c-api/veryhigh.rst:370
+#: c-api/veryhigh.rst:372
msgid ""
"The start symbol from the Python grammar for isolated expressions; for use "
"with :c:func:`Py_CompileString`."
msgstr ""
-#: c-api/veryhigh.rst:378
+#: c-api/veryhigh.rst:380
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 ""
-#: c-api/veryhigh.rst:387
+#: c-api/veryhigh.rst:389
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 ""
-#: c-api/veryhigh.rst:394
+#: c-api/veryhigh.rst:396
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 "
@@ -423,34 +424,34 @@ msgid ""
"case, ``from __future__ import`` can modify *flags*."
msgstr ""
-#: c-api/veryhigh.rst:399
+#: c-api/veryhigh.rst:401
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 ""
-#: c-api/veryhigh.rst:405
+#: c-api/veryhigh.rst:407
msgid "Compiler flags."
msgstr ""
-#: c-api/veryhigh.rst:409
+#: c-api/veryhigh.rst:411
msgid ""
"*cf_feature_version* is the minor Python version. It should be initialized "
"to ``PY_MINOR_VERSION``."
msgstr ""
-#: c-api/veryhigh.rst:412
+#: c-api/veryhigh.rst:414
msgid ""
"The field is ignored by default, it is used if and only if ``PyCF_ONLY_AST`` "
"flag is set in *cf_flags*."
msgstr ""
-#: c-api/veryhigh.rst:415
+#: c-api/veryhigh.rst:417
msgid "Added *cf_feature_version* field."
msgstr ""
-#: c-api/veryhigh.rst:421
+#: c-api/veryhigh.rst:423
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/copyright.po b/copyright.po
index 6ea9226979..079866e533 100644
--- a/copyright.po
+++ b/copyright.po
@@ -5,14 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
-"PO-Revision-Date: 2019-01-03 16:59+0100\n"
-"Last-Translator: Julien Palard \n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-01-28 14:22+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.4.2\n"
#: copyright.rst:3
msgid "Copyright"
@@ -24,9 +25,9 @@ msgstr "Python et cette documentation sont :"
#: copyright.rst:7
#, fuzzy
-msgid "Copyright © 2001-2021 Python Software Foundation. All rights reserved."
+msgid "Copyright © 2001-2023 Python Software Foundation. All rights reserved."
msgstr ""
-"Copyright © 2001-2020 Python Software Foundation. Tous droits réservés."
+"Copyright © 2001-2021 Python Software Foundation. Tous droits réservés."
#: copyright.rst:9
msgid "Copyright © 2000 BeOpen.com. All rights reserved."
diff --git a/dict b/dict
index 7c40273328..b967430053 100644
--- a/dict
+++ b/dict
@@ -60,6 +60,7 @@ désérialise
désérialiser
désérialisé
désérialisées
+Distutils
encodable
ethnomathématiques
farrugia
@@ -121,6 +122,7 @@ n-ième
namespace
non-hachable
non-hachables
+POSIX
pdb
pip
pourcent
diff --git a/distributing/index.po b/distributing/index.po
index 209183aef8..e8a297e60b 100644
--- a/distributing/index.po
+++ b/distributing/index.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-02-04 09:33+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -78,12 +78,12 @@ msgstr "Vocabulaire"
#: distributing/index.rst:34
msgid ""
-"the `Python Packaging Index `__ is a public repository of "
+"the `Python Package Index `__ is a public repository of "
"open source licensed packages made available for use by other Python users"
msgstr ""
-"le `Python Packaging Index `__ est un dépôt public de "
+"Le `Python Package Index `__ est un dépôt public de "
"paquets sous licence libre rendus disponibles par d'autres utilisateurs "
-"Python"
+"Python."
#: distributing/index.rst:37
msgid ""
@@ -227,12 +227,12 @@ msgstr ""
#: distributing/index.rst:104
msgid ""
-"For POSIX users (including Mac OS X and Linux users), these instructions "
-"assume the use of a :term:`virtual environment`."
+"For POSIX users (including macOS and Linux users), these instructions assume "
+"the use of a :term:`virtual environment`."
msgstr ""
-"Pour les utilisateurs d'environnements POSIX (incluant Mac OS X et les "
-"utilisateurs de Linux), ces instructions supposent l'utilisation d'un :term:"
-"`environnement virtuel`."
+"Pour les utilisateurs d'environnements POSIX (dont macOS et Linux), ces "
+"instructions supposent l'utilisation d'un :term:`environnement virtuel "
+"`."
#: distributing/index.rst:107
msgid ""
@@ -274,14 +274,14 @@ msgstr ""
"project_>`_"
#: distributing/index.rst:130
-msgid "`Uploading the project to the Python Packaging Index`_"
+msgid "`Uploading the project to the Python Package Index`_"
msgstr ""
"`(en) Téléverser le projet sur le Python Packaging Index `_"
+"project to the Python Packaging Index_>`_ ;"
#: distributing/index.rst:131
msgid "`The .pypirc file`_"
-msgstr ""
+msgstr "`(en) Le fichier .pypirc `_."
#: distributing/index.rst:144
msgid "How do I...?"
@@ -301,8 +301,8 @@ 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 :"
#: distributing/index.rst:153
-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é"
+msgid "check the Python Package Index to see if the name is already in use"
+msgstr "vérifiez dans le *Python Package Index* si le nom est déjà utilisé ;"
#: distributing/index.rst:154
msgid ""
diff --git a/distutils/apiref.po b/distutils/apiref.po
index bf3adc8587..2180adea18 100644
--- a/distutils/apiref.po
+++ b/distutils/apiref.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
-"PO-Revision-Date: 2020-10-15 09:06+0200\n"
-"Last-Translator: ZepmanBC \n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-03-29 15:44+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.4.2\n"
#: distutils/apiref.rst:5
msgid "API Reference"
@@ -21,7 +21,7 @@ msgstr "Référence de l'API"
#: distutils/apiref.rst:11
msgid "`New and changed setup.py arguments in setuptools`_"
-msgstr "`Arguments nouveaux et modifiés de setup.py dans setuptools`_"
+msgstr "`Arguments nouveaux et modifiés de *setup.py* dans setuptools`_"
#: distutils/apiref.rst:10
msgid ""
@@ -251,7 +251,7 @@ msgstr "la classe :class:`Distribution` à utiliser"
#: distutils/apiref.rst:93
msgid "a subclass of :class:`distutils.core.Distribution`"
-msgstr "une sous classe de :class:`distutils.core.Distribution`"
+msgstr "une sous-classe de :class:`distutils.core.Distribution`"
#: distutils/apiref.rst:96
msgid "*script_name*"
@@ -259,7 +259,7 @@ msgstr "*script_name*"
#: distutils/apiref.rst:96
msgid "The name of the setup.py script - defaults to ``sys.argv[0]``"
-msgstr "Le nom du script *setup.py* . Initialisé par ``sys.argv[0]``"
+msgstr "Le nom du script *setup.py*. Initialisé par ``sys.argv[0]``"
#: distutils/apiref.rst:100
msgid "*script_args*"
@@ -360,13 +360,13 @@ msgid ""
msgstr ""
"*script_name* est un fichier qui sera lu et exécuté avec :func:`exec`. ``sys."
"argv[0]`` sera remplacé par *script* par la durée de l'appel. *script_args* "
-"est une liste de chaînes de caractères; si fourni, ``sys.argv[1:]`` sera "
-"remplacé par *script_args* pour la durée de l'appel."
+"est une liste de chaînes de caractères ; s'il est fourni, ``sys.argv[1:]`` "
+"sera remplacé par *script_args* pour la durée de l'appel."
#: distutils/apiref.rst:138
msgid ""
"*stop_after* tells :func:`setup` when to stop processing; possible values:"
-msgstr "*stop_after* dit à :func:`setup` quand s'arrêter; valeurs possibles:"
+msgstr "*stop_after* dit à :func:`setup` quand s'arrêter ; valeurs possibles :"
#: distutils/apiref.rst:562 distutils/apiref.rst:1601
msgid "description"
@@ -382,7 +382,7 @@ msgid ""
"populated with the keyword arguments to :func:`setup`"
msgstr ""
"S'arrête une fois que l'instance :class:`Distribution` a été créée et "
-"renseignée avec les arguments-clés de :func:`setup`"
+"renseignée avec les arguments nommés de :func:`setup`"
#: distutils/apiref.rst:149
msgid "*config*"
@@ -393,8 +393,8 @@ msgid ""
"Stop after config files have been parsed (and their data stored in the :"
"class:`Distribution` instance)"
msgstr ""
-"S'arrête une fois que les fichiers de configuration ont été parcouru (et que "
-"leurs données ont été stockées dans l'instance :class:`Distribution`)"
+"S'arrête une fois que les fichiers de configuration ont été parcourus (et "
+"que leurs données ont été stockées dans l'instance :class:`Distribution`)"
#: distutils/apiref.rst:153
msgid "*commandline*"
@@ -457,7 +457,7 @@ msgid ""
msgstr ""
"La classe *Extension* décrit un seul module d'extension C ou C++ dans un "
"script d'installation. Elle accepte dans son constructeur les arguments "
-"nommés suivants:"
+"nommés suivants :"
#: distutils/apiref.rst:187
msgid ""
@@ -510,7 +510,7 @@ msgid ""
"define it without a particular value (equivalent of ``#define FOO`` in "
"source or :option:`!-DFOO` on Unix C compiler command line)"
msgstr ""
-"Liste de macros à définir ; chaque macro est définie à l'aide d'un couple "
+"Liste de macros à définir ; chaque macro est définie à l'aide d'un couple "
"``(name, value)``, où *value* correspond soit à la chaîne sur laquelle la "
"macro doit être définie, soit à ``None`` pour définir la macro sur aucune "
"valeur particulière (équivalent à ``#define TRUC`` dans la source ou à :"
@@ -559,7 +559,7 @@ msgid ""
msgstr ""
"Liste de répertoires à parcourir pour les bibliothèques C/C++ lors de la "
"phase d'exécution. Pour les extensions partagées, c'est à ce moment que "
-"l'extension est chargée. "
+"l'extension est chargée."
#: distutils/apiref.rst:240
msgid "*extra_objects*"
@@ -573,7 +573,7 @@ msgid ""
msgstr ""
"Liste des fichiers supplémentaires à lier (par exemple les fichiers d'objets "
"non explicités dans les 'sources', bibliothèque statique qui doit être "
-"explicitement spécifiée, fichiers de ressources binaires, etc. )."
+"explicitement spécifiée, fichiers de ressources binaires, etc.)."
#: distutils/apiref.rst:247
msgid "*extra_compile_args*"
@@ -735,7 +735,7 @@ msgstr ""
"Génère des options de liaison pour chercher dans les répertoires des "
"bibliothèques et pour effectuer les liaisons avec des bibliothèques "
"spécifiques. *libraries* et *library_dirs* sont, respectivement, des listes "
-"de noms de bibliothèques (pas de noms de fichiers !) et de répertoires à "
+"de noms de bibliothèques (pas de noms de fichiers !) et de répertoires à "
"rechercher. Renvoie une liste d'options de ligne de commande utilisables "
"avec certains compilateurs (en fonction des deux chaînes de format "
"transmises)."
@@ -752,18 +752,18 @@ msgid ""
"suitable for either Unix compilers or Visual C++."
msgstr ""
"Génère les options du préprocesseur C (:option:`!-D`, :option:`!-U`, :option:"
-"`!-I`) utilisées par au moins deux types de compilateurs : les compilateurs "
-"type Unix et Visual C++. *macros* est une liste de couples où ``(name,)`` "
-"est traité comme *non définie* (:option:`!-U`); ``(name, value)`` est traité "
-"comme *définie* (:option:`!-D`). *include_dirs* est la liste de noms de "
-"répertoires à ajouter au chemin de recherche du fichier d'en-tête (:option:"
-"`!-I`). Renvoie une liste d'options de ligne de commande pour les "
-"compilateurs Unix ou Visual C+++."
+"`!-I`) utilisées par au moins deux types de compilateurs : le compilateur "
+"Unix classique et Visual C++. *macros* est une liste de couples où "
+"``(name,)`` est traité comme *non définie* (:option:`!-U`) ; ``(name, "
+"value)`` est traité comme *définie* (:option:`!-D`). *include_dirs* est la "
+"liste de noms de répertoires à ajouter au chemin de recherche du fichier "
+"d'en-tête (:option:`!-I`). Renvoie une liste d'options de ligne de commande "
+"pour les compilateurs Unix ou Visual C++."
#: distutils/apiref.rst:354
msgid "Determine the default compiler to use for the given platform."
msgstr ""
-"Détermine le compilateur par défaut a utiliser par une plateforme donnée."
+"Détermine le compilateur par défaut à utiliser par une plateforme donnée."
#: distutils/apiref.rst:356
msgid ""
@@ -772,8 +772,8 @@ msgid ""
"platform`` for the platform in question."
msgstr ""
"*osname* doit être l'un des noms d'OS Python standard (c'est-à-dire un des "
-"noms renvoyés par ``os.name``) et *platform* la valeur commune renvoyés par "
-"``sys.platform`` pour la plate-forme en question."
+"noms renvoyés par ``os.name``) et *platform* la valeur ordinaire renvoyée "
+"par ``sys.platform`` pour la plate-forme en question."
#: distutils/apiref.rst:360
msgid ""
@@ -893,7 +893,7 @@ msgid ""
msgstr ""
"Affecte la liste des répertoires qui seront recherchés à la valeur de *dirs* "
"(une liste de chaînes). Remplace tous les appels précédents de :meth:"
-"`add_include_dir` ; les appels suivants de :meth:`add_include_dir` "
+"`add_include_dir` ; les appels suivants de :meth:`add_include_dir` "
"s'ajoutent à la liste transmise par :meth:`set_include_dirs`. Ceci n'affecte "
"pas la liste des répertoires d'inclusion standard que le compilateur peut "
"rechercher par défaut."
@@ -922,8 +922,8 @@ msgstr ""
"L'éditeur de liens est chargé de lier les bibliothèques dans l'ordre dans "
"lequel elles sont fournies à :meth:`add_library` et/ou :meth:"
"`set_libraries`. Il est parfaitement valide de dupliquer les noms de "
-"bibliothèques ; l'éditeur de liens est chargé de créer des liens avec les "
-"bibliothèques autant de fois que les noms sont mentionnées."
+"bibliothèques ; l'éditeur de liens est chargé de créer des liens avec les "
+"bibliothèques autant de fois que les noms sont mentionnés."
#: distutils/apiref.rst:443
msgid ""
@@ -988,7 +988,7 @@ msgid ""
msgstr ""
"Définit une macro de préprocesseur pour toutes les compilations gérées par "
"cet objet compilateur. Le paramètre optionnel *value* doit être une chaîne "
-"de caractères ; s'il n'est pas fourni, alors la macro sera définie sans "
+"de caractères ; s'il n'est pas fourni, alors la macro sera définie sans "
"valeur explicite et le résultat exact dépendra du compilateur utilisé."
#: distutils/apiref.rst:488
@@ -1034,9 +1034,9 @@ msgid ""
"The following methods implement methods for autodetection of compiler "
"options, providing some functionality similar to GNU :program:`autoconf`."
msgstr ""
-"Les méthodes suivantes offre des services pour l'auto-détection des options "
-"du compilateur. Elles offrent des fonctionnalités similaires à celles du "
-"programme GNU :program:`autoconf`."
+"Les méthodes suivantes offrent des services pour l'auto-détection des "
+"options du compilateur. Elles offrent des fonctionnalités similaires à "
+"celles du programme GNU :program:`autoconf`."
#: distutils/apiref.rst:515
msgid ""
@@ -1109,7 +1109,7 @@ msgstr ""
"effectuer les différentes étapes de compilation. L'ensemble exact des "
"exécutables qui peuvent être spécifiés ici dépend de la classe du "
"compilateur (via l'attribut de classe *executables*), mais la plupart "
-"utilisent :"
+"utilisent :"
#: distutils/apiref.rst:562
msgid "attribute"
@@ -1160,10 +1160,10 @@ msgstr ""
"Sur les plates-formes disposant d'un outil de ligne de commande (Unix, DOS/"
"Windows), chacun de ces éléments est une chaîne qui sera fractionnée en un "
"nom exécutable et, éventuellement, une liste d'arguments. Le fractionnement "
-"de la chaîne est réalisée selon la même procédure que celle appliquée par "
-"les *shells* Unix : les mots sont délimités par des espaces, mais les "
-"guillemets et les antislashs permettent de les ignorer. Voir :func:"
-"`distutils.util.split_quoted`."
+"de la chaîne est réalisé selon la même procédure que celle appliquée par les "
+"*shells* Unix : les mots sont délimités par des espaces, mais les guillemets "
+"et les antislashs permettent de les ignorer. Voir :func:`distutils.util."
+"split_quoted`."
#: distutils/apiref.rst:580
msgid "The following methods invoke stages in the build process."
@@ -1206,7 +1206,7 @@ msgstr ""
"Si *output_dir* est donné, les fichiers objets seront placés à l'intérieur, "
"tout en conservant leurs chemins relatifs. Par exemple, le :file:`truc/"
"machin.c` compile normalement en :file:`truc/machin.o` (pour une "
-"implémentation Unix) ; si *output_dir* a la valeur *build*, alors il "
+"implémentation Unix) ; si *output_dir* a la valeur *build*, alors il "
"compilera en :file:`build/truc/machin.o`."
#: distutils/apiref.rst:600
@@ -1219,7 +1219,7 @@ msgid ""
msgstr ""
"Le paramètre *macros*, s'il est donné, doit être une liste de définitions de "
"macros. Une définition de macro est soit un couple ``(nom, valeur)``, ou un "
-"singleton ``(nom,)``. Le premier définit une macro ; si la valeur est "
+"singleton ``(nom,)``. Le premier définit une macro ; si la valeur est "
"``None``, la macro est définie sans valeur explicite. L'utilisation d'un "
"singleton désactive la macro. Les définitions, redéfinitions ou "
"désactivations ultérieures priment."
@@ -1238,7 +1238,7 @@ msgid ""
"*debug* is a boolean; if true, the compiler will be instructed to output "
"debug symbols in (or alongside) the object file(s)."
msgstr ""
-"*debug* est un booléen ; si sa valeur est *vraie*, le compilateur est chargé "
+"*debug* est un booléen ; si sa valeur est *vraie*, le compilateur est chargé "
"d'afficher les symboles de débogage dans (ou à côté) du ou des fichiers "
"objets."
@@ -1270,7 +1270,7 @@ msgstr ""
"*depends* est une liste de noms de fichiers dont dépendent toutes les "
"cibles. Si un fichier source est plus ancien qu'un fichier dans *depends*, "
"alors le fichier source sera recompilé. Cela permet un suivi des "
-"dépendances à un niveau macro. "
+"dépendances à un niveau macro."
#: distutils/apiref.rst:624
msgid "Raises :exc:`CompileError` on failure."
@@ -1297,7 +1297,7 @@ msgid ""
"be inferred from the library name. *output_dir* is the directory where the "
"library file will be put."
msgstr ""
-"*output_libname* doit être un nom de bibliothèque et non un nom de fichier ; "
+"*output_libname* doit être un nom de bibliothèque et non un nom de fichier ; "
"le nom de fichier sera déduit du nom de bibliothèque. *output_dir* est le "
"répertoire dans lequel le fichier bibliothèque sera placé."
@@ -1307,7 +1307,7 @@ msgid ""
"library (note that on most platforms, it is the compile step where this "
"matters: the *debug* flag is included here just for consistency)."
msgstr ""
-"*debug* est un booléen ; si sa valeur est *vraie*, les informations de "
+"*debug* est un booléen ; si sa valeur est *vraie*, les informations de "
"débogage seront incluses dans la bibliothèque (notez que sur la plupart des "
"plateformes, c'est à l'étape de compilation que ce paramètre est pris en "
"compte : le paramètre *debug* est inclus ici pour assurer une cohérence)."
@@ -1341,9 +1341,9 @@ msgid ""
"provide directory components if needed)."
msgstr ""
"L'ensemble d'éléments se compose de la liste des fichiers objets fournis "
-"comme *objets*. *output_filename* devrait être un nom de fichier. Si "
+"comme *objects*. *output_filename* doit être un nom de fichier. Si "
"*output_dir* est fourni, *output_filename* lui est relatif (c'est-à-dire que "
-"*output_filename* peut être un chemin vers un fichier )."
+"*output_filename* peut être un chemin relatif vers un fichier)."
#: distutils/apiref.rst:660
msgid ""
@@ -1369,8 +1369,8 @@ msgid ""
"component). These are on top of the system default and those supplied to :"
"meth:`add_library_dir` and/or :meth:`set_library_dirs`. "
"*runtime_library_dirs* is a list of directories that will be embedded into "
-"the shared library and used to search for other shared libraries that \\*it"
-"\\* depends on at run-time. (This may only be relevant on Unix.)"
+"the shared library and used to search for other shared libraries that "
+"\\*it\\* depends on at run-time. (This may only be relevant on Unix.)"
msgstr ""
"*library_dirs*, s'il est fourni, doit être une liste de répertoires à "
"rechercher pour les bibliothèques qui ont été spécifiées comme des "
@@ -1388,7 +1388,7 @@ msgid ""
"(This appears to be relevant only on Windows.)"
msgstr ""
"*export_symbols* est une liste de symboles que la bibliothèque partagée va "
-"exporter. (Ceci est probablement valable uniquement sous Window.)"
+"exporter. (Ceci est probablement valable uniquement sous Windows.)"
#: distutils/apiref.rst:678
msgid ""
@@ -1519,7 +1519,7 @@ msgid ""
"into account the *dry_run* flag."
msgstr ""
"Invoque :func:`distutils.util.execute`. Cette méthode invoque une fonction "
-"Python *func* avec les arguments *args* , après journalisation et prise en "
+"Python *func* avec les arguments *args*, après journalisation et prise en "
"compte de l'option *dry_run*."
#: distutils/apiref.rst:764
@@ -1570,7 +1570,7 @@ msgid ""
msgstr ""
"Ce module fournit la classe :class:`UnixCCompiler`, une sous-classe de la "
"classe :class:`CCompiler` qui gère les compilateurs C ayant une interface en "
-"ligne de commande conforme au standard Unix :"
+"ligne de commande conforme au standard Unix :"
#: distutils/apiref.rst:812
msgid "macros defined with :option:`!-Dname[=value]`"
@@ -1653,7 +1653,7 @@ msgstr ""
"définies. *MSSdk* indique que l'environnement courant a été configuré par le "
"script ``SetEnv.Cmd`` du kit de développement logiciel (*SDK*), ou que les "
"variables d'environnement ont été enregistrées lorsque le kit a été "
-"installé ; *DISTUTILS_USE_SDK* indique que l'utilisateur de *distutils* a "
+"installé ; *DISTUTILS_USE_SDK* indique que l'utilisateur de *distutils* a "
"choisi explicitement de remplacer le compilateur utilisé par :class:"
"`MSVCCompiler`."
@@ -1713,9 +1713,9 @@ msgstr ""
"le nom du fichier à créer, sans extension spécifique indiquant le format. "
"*format* est le format d'archive : un parmi ``zip``, ``tar``, ``gztar``, "
"``bztar``, ``xztar``, ``xztar``, ou ``ztar``. *root_dir* est un répertoire "
-"qui sera le répertoire racine de l'archive ; c'est-à-dire que le programme "
+"qui sera le répertoire racine de l'archive ; c'est-à-dire que le programme "
"se positionne dans *root_dir* avant de créer l'archive. *base_dir* est le "
-"répertoire à partir duquel se lance l'archivage ; par exemple, *base_dir* "
+"répertoire à partir duquel se lance l'archivage ; par exemple, *base_dir* "
"est le préfixe commun à tous les fichiers et répertoires de l'archive. "
"*root_dir* et *base_dir* sont tous deux par défaut dans le répertoire "
"courant. Renvoie le nom du fichier archive."
@@ -1819,9 +1819,9 @@ msgstr ""
"Renvoie la valeur *True* si *target* a une date dépassée par rapport à un "
"fichier figurant dans *sources* En d'autres termes, si *target* existe et "
"est plus récente que chaque fichier dans *sources*, renvoie la valeur "
-"*False* ; sinon renvoie la valeur *True*. *missing* contrôle ce qui se passe "
-"lorsqu'un fichier source est manquant ; la valeur par défaut (``'error'``) "
-"est de lever une exception :exc:`OSError` à l'intérieur de :func:`os.stat` ; "
+"*False* ; sinon renvoie la valeur *True*. *missing* contrôle ce qui se passe "
+"lorsqu'un fichier source est manquant ; la valeur par défaut (``'error'``) "
+"est de lever une exception :exc:`OSError` à l'intérieur de :func:`os.stat` ; "
"si *missing* vaut ``'ignore'``,tout fichier source manquant est ignoré. Si "
"*missing* vaut ``'newer'``, tout fichier source manquant indique que "
"*target* n'est plus à jour (ce qui est utile en mode *dry-run* : cela permet "
@@ -1853,7 +1853,7 @@ msgid ""
msgstr ""
"Crée un répertoire et tous les répertoires parents manquants. Si le "
"répertoire existe déjà (ou si *name* est la chaîne vide, c'est-à-dire le "
-"répertoire courant, qui existe bien sûr), alors ne fait rien. Lève :exc:"
+"répertoire courant, qui existe bien sûr), alors ne fait rien. Lève :exc:"
"`DistutilsFileError` s'il n'est pas possible de créer un répertoire en cours "
"de route (par exemple, un sous-chemin existe, mais est un fichier plutôt "
"qu'un répertoire). Si *verbose* est vrai, affiche un résumé d'une ligne de "
@@ -1871,7 +1871,7 @@ msgid ""
msgstr ""
"Crée tous les répertoires vides sous *base_dir* nécessaires pour placer "
"*files*. *base_dir* est le nom d'un répertoire qui n'existe pas encore "
-"nécessairement ; *files* est une liste de noms de fichiers relatifs à "
+"nécessairement ; *files* est une liste de noms de fichiers relatifs à "
"*base_dir*. *base_dir* + la partie répertoire de chaque fichier dans *files* "
"est créée si elle n'existe pas déjà. Les options *mode*, *verbose* et "
"*dry_run* sont les mêmes que pour :func:`mkpath`."
@@ -1910,10 +1910,10 @@ msgid ""
"same as for :func:`copy_file`."
msgstr ""
"Les modes *preserve_mode* et *preserve_times* sont les mêmes que pour :func:"
-"`distutils.file_util.copy_file` ; il faut savoir que cela ne concerne que "
+"`distutils.file_util.copy_file` ; il faut savoir que cela ne concerne que "
"les fichiers réguliers, et non les dossiers. Si *preserve_symlinks* est "
"vrai, les liens symboliques seront copiés en tant que liens symboliques (sur "
-"les plateformes qui les gèrent !); sinon (par défaut), la destination du "
+"les plateformes qui les gèrent !); sinon (par défaut), la destination du "
"lien sera copiée. *update* et *verbose* sont les mêmes que pour :func:"
"`copy_file`."
@@ -1965,7 +1965,7 @@ msgid ""
"if *dst* does exist but is older than *src*."
msgstr ""
"Copie le fichier *src* dans *dst*. Si *dst* est un répertoire, alors *src* y "
-"est copié avec le même nom ; sinon, il faut que ce soit un nom de fichier. "
+"est copié avec le même nom ; sinon, il faut que ce soit un nom de fichier. "
"Si *preserve_mode* est vrai (par défaut), le mode du fichier (son type et "
"ses bits de permission, ou ce qui est analogue sur la plate-forme actuelle) "
"sont copiés. Si *preserve_times* est vrai (par défaut), les horodatages de "
@@ -1984,7 +1984,7 @@ msgid ""
msgstr ""
"*link* permets de créer des liens physiques (en utilisant :func:`os.link`) "
"ou symboliques (en utilisant :func:`os.symlink`) au lieu de les copier : "
-"paramétrez la valeur a ``'hard'`` ou ``'sym'`` ; si elle vaut ``None`` (par "
+"paramétrez la valeur a ``'hard'`` ou ``'sym'`` ; si elle vaut ``None`` (par "
"défaut), les fichiers sont copiés. Ne définissez pas *link* sur les systèmes "
"qui ne les gèrent pas : :func:`copy_file` ne vérifie pas si des liens "
"symboliques ou physiques sont disponibles. La fonction :func:"
@@ -2007,7 +2007,7 @@ msgid ""
"Returns the new full name of the file."
msgstr ""
"Déplace le fichier *src* vers *dst*. Si *dst* est un répertoire, le fichier "
-"y est déplacé avec le même nom ; sinon, *src* est simplement renommé *dst*. "
+"y est déplacé avec le même nom ; sinon, *src* est simplement renommé *dst*. "
"Renvoie le nouveau nom complet du fichier."
#: distutils/apiref.rst:1084
@@ -2016,7 +2016,7 @@ msgid ""
"other systems?"
msgstr ""
"Gère les déplacements inter-périphériques sous Unix en utilisant :func:"
-"`copy_file`. Qu'en est-il sur les autres systèmes ?"
+"`copy_file`. Qu'en est-il sur les autres systèmes ?"
#: distutils/apiref.rst:1090
msgid ""
@@ -2051,13 +2051,13 @@ msgstr ""
"pour distinguer les répertoires de compilation spécifiques aux plates-formes "
"et les distributions construites spécifiques aux plates-formes. Cette "
"chaîne inclut en règle générale le nom et la version de l'OS et "
-"l'architecture (tels que fournis par la fonction ``os.uname()`` ). Bien que "
+"l'architecture (tels que fournis par la fonction ``os.uname()``). Bien que "
"l'information exacte dépend de l'OS, par exemple, sous Linux, la version "
"noyau ne joue pas un grand rôle."
#: distutils/apiref.rst:1114
msgid "Examples of returned values:"
-msgstr "Exemples de valeurs renvoyées :"
+msgstr "Exemples de valeurs renvoyées :"
#: distutils/apiref.rst:1116
msgid "``linux-i586``"
@@ -2078,8 +2078,9 @@ msgstr ""
"platform``."
#: distutils/apiref.rst:1122
+#, fuzzy
msgid ""
-"For Mac OS X systems the OS version reflects the minimal version on which "
+"For macOS systems the OS version reflects the minimal version on which "
"binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET`` during "
"the build of Python), not the OS version of the current system."
msgstr ""
@@ -2089,8 +2090,9 @@ msgstr ""
"compilation de Python), et non la version du système actuel."
#: distutils/apiref.rst:1126
+#, fuzzy
msgid ""
-"For universal binary builds on Mac OS X the architecture value reflects the "
+"For universal binary builds on macOS the architecture value reflects the "
"universal binary status instead of the architecture of the current "
"processor. For 32-bit universal binaries the architecture is ``fat``, for 64-"
"bit universal binaries the architecture is ``fat64``, and for 4-way "
@@ -2104,14 +2106,15 @@ msgstr ""
"l'architecture du processeur en cours. Pour les binaires universels 32 bits, "
"l'architecture est ``fat``, pour les binaires universels 64 bits, "
"l'architecture est ``fat64``, et pour les binaires universels 4 voies, "
-"l'architecture est ``universelle``. A partir de Python 2.7 et Python 3.2, "
+"l'architecture est ``universelle``. À partir de Python 2.7 et Python 3.2, "
"l'architecture ``fat3`` est utilisée pour une compilation universelle à 3 "
"voies (*ppc*, *i386*, *x86_64*) et ``intel`` est utilisée pour une "
"compilation universelle avec les architectures *i386* et *x86_64*"
#: distutils/apiref.rst:1135
-msgid "Examples of returned values on Mac OS X:"
-msgstr "Exemples de valeurs renvoyées sous Mac OS X :"
+#, fuzzy
+msgid "Examples of returned values on macOS:"
+msgstr "Exemples de valeurs renvoyées sous Mac OS X :"
#: distutils/apiref.rst:1137
msgid "``macosx-10.3-ppc``"
@@ -2138,31 +2141,43 @@ msgid ""
"earlier returned only a single additional field with the AIX Version and "
"Release."
msgstr ""
+"Pour AIX, à partir de Python 3.9, une chaîne de caractères est renvoyée "
+"commençant par ``aix``, puis des champs additionnels (séparés par ``'-'``) "
+"qui représentent les valeurs combinées de `AIX Version`, `Release and "
+"Technology Level` (premier champ), `Build Date` (deuxième champ) et taille "
+"en bits (troisième champ). En Python 3.8 et avant, seul un champ additionnel "
+"avec la version d'AIX et la `Release` étaient renvoyés."
#: distutils/apiref.rst:1151
-#, fuzzy
msgid "Examples of returned values on AIX:"
-msgstr "Exemples de valeurs renvoyées :"
+msgstr "Exemples de valeurs renvoyées sur AIX :"
#: distutils/apiref.rst:1153
msgid ""
"``aix-5307-0747-32`` # 32-bit build on AIX ``oslevel -s``: 5300-07-00-0000"
msgstr ""
+"``aix-5307-0747-32`` # build 32-bit sur AIX ``oslevel -s``: 5300-07-00-0000"
#: distutils/apiref.rst:1155
msgid ""
"``aix-7105-1731-64`` # 64-bit build on AIX ``oslevel -s``: 7100-05-01-1731"
msgstr ""
+"``aix-7105-1731-64`` # build 64-bit sur AIX ``oslevel -s``: 7100-05-01-1731"
#: distutils/apiref.rst:1157
msgid "``aix-7.2`` # Legacy form reported in Python 3.8 and earlier"
msgstr ""
+"``aix-7.2`` # Ancienne forme renvoyée par Python 3.8 et version "
+"précédentes"
#: distutils/apiref.rst:1159
msgid ""
"The AIX platform string format now also includes the technology level, build "
"date, and ABI bit-size."
msgstr ""
+"Le format de chaîne de caractères de plateforme AIX inclut désormais la "
+"génération, la date de construction et la taille en bits de l'architecture "
+"matérielle de l'ABI."
#: distutils/apiref.rst:1166
msgid ""
@@ -2202,7 +2217,7 @@ msgid ""
msgstr ""
"Vérifie que 'os.environ' possède toutes les variables d'environnement "
"utilisables dans les fichiers de configuration, les options en ligne de "
-"commande, etc. À l'heure actuelle, cela comprend :"
+"commande, etc. À l'heure actuelle, cela comprend :"
#: distutils/apiref.rst:1187
msgid ":envvar:`HOME` - user's home directory (Unix only)"
@@ -2296,9 +2311,9 @@ msgid ""
"values are ``n``, ``no``, ``f``, ``false``, ``off`` and ``0``. Raises :exc:"
"`ValueError` if *val* is anything else."
msgstr ""
-"Les valeurs *vraies* sont , ``y``, ``yes``, ``t``, ``true``, ``on`` et "
-"``1``. Les valeurs *fausses* sont ``n``, ``no``, ``f``, ``false``, ``off`` "
-"et ``0``. Lève :exc:`ValueError` si *val* est autre chose."
+"Les valeurs *vraies* sont ``y``, ``yes``, ``t``, ``true``, ``on`` et ``1``. "
+"Les valeurs *fausses* sont ``n``, ``no``, ``f``, ``false``, ``off`` et "
+"``0``. Lève :exc:`ValueError` si *val* est autre chose."
#: distutils/apiref.rst:1239
msgid ""
@@ -2308,23 +2323,23 @@ msgid ""
"silently skipped. *optimize* must be one of the following:"
msgstr ""
"Effectue une compilation vers du *bytecode* Python à partir d'un ensemble de "
-"fichiers sources Python dans un fichier :file:`.pyc` dans un sous "
+"fichiers sources Python dans un fichier :file:`.pyc` dans un sous-"
"répertoire :file:`__pycache__` (voir :pep:`3147` et :pep:`488`). *py_files* "
-"est une liste de fichiers à compiler ; tous les fichiers qui ne se terminent "
+"est une liste de fichiers à compiler ; tous les fichiers qui ne se terminent "
"pas par :file:`.py` sont ignorés en silence. *optimize* doit être l'un des "
-"éléments suivants :"
+"éléments suivants :"
#: distutils/apiref.rst:1244
msgid "``0`` - don't optimize"
-msgstr "``0``: ne pas optimiser"
+msgstr "``0`` — ne pas optimiser"
#: distutils/apiref.rst:1245
msgid "``1`` - normal optimization (like ``python -O``)"
-msgstr "``1``: optimisation normale (comme ``python -O``)"
+msgstr "``1`` — optimisation normale (comme ``python -O``)"
#: distutils/apiref.rst:1246
msgid "``2`` - extra optimization (like ``python -OO``)"
-msgstr "``2``: optimisation supplémentaire (comme ``python -OO``)"
+msgstr "``2`` — optimisation supplémentaire (comme ``python -OO``)"
#: distutils/apiref.rst:1248
msgid "If *force* is true, all files are recompiled regardless of timestamps."
@@ -2342,7 +2357,7 @@ msgid ""
"*prefix* and *base_dir*, as you wish."
msgstr ""
"Le nom du fichier source encodé dans chaque fichier :term:`bytecode` est par "
-"défaut le nom présent dans la liste des noms de fichiers source *py_files* ; "
+"défaut le nom présent dans la liste des noms de fichiers source *py_files* ; "
"vous pouvez modifier dynamiquement ses noms avec *prefix* et *basedir*. "
"*prefix* est une chaîne de caractères qui sera supprimée de chaque nom de "
"fichier source, et *base_dir* est un nom de répertoire qui sera préfixé au "
@@ -2371,7 +2386,7 @@ msgstr ""
"script temporaire et en l'exécutant. Normalement, vous devez laisser :func:"
"`byte_compile` choisir d'utiliser la compilation directe ou non (voir le "
"code-source pour les détails). Le paramètre *direct* est utilisé par le "
-"script généré en mode indirect ; à moins que vous ne sachiez ce que vous "
+"script généré en mode indirect ; à moins que vous ne sachiez ce que vous "
"faites, laissez le paramètre à ``None`` (Aucun)."
#: distutils/apiref.rst:1267
@@ -2381,7 +2396,7 @@ msgid ""
"tag in the current directory."
msgstr ""
"Crée des fichiers ``.pyc`` avec un sous-répertoire :func:`import magic tag "
-"` dans leur nom, dans le sous répertoire :file:`__pycache__` "
+"` dans leur nom, dans le sous-répertoire :file:`__pycache__` "
"plutôt que dans le répertoire courant, sans tag."
#: distutils/apiref.rst:1272
@@ -2444,7 +2459,7 @@ msgid ""
"line arguments)."
msgstr ""
"Fournit les exceptions utilisées par les modules de *Distutils*. Notez que "
-"les modules *Distutils* peuvent soulever des exceptions standard ; en "
+"les modules *Distutils* peuvent soulever des exceptions standards ; en "
"particulier, ``SystemExit`` est généralement levée pour les erreurs qui sont "
"manifestement de la responsabilité de l'utilisateur final (ex : mauvais "
"argument en ligne de commande)."
@@ -2454,9 +2469,9 @@ msgid ""
"This module is safe to use in ``from ... import *`` mode; it only exports "
"symbols whose names start with ``Distutils`` and end with ``Error``."
msgstr ""
-"Ce module est utilisable avec la syntaxe ``from ... import *`` ; il "
-"n'exporte que des symboles dont le nom commence par ``Distutils`` et se "
-"termine par ``Error``."
+"Ce module est utilisable avec la syntaxe ``from … import *`` ; il n'exporte "
+"que des symboles dont le nom commence par ``Distutils`` et se termine par "
+"``Error``."
#: distutils/apiref.rst:1340
msgid ""
@@ -2470,7 +2485,7 @@ msgid ""
"that provides the following additional features:"
msgstr ""
"Ce module est une encapsulation du module standard :mod:`getopt` qui apporte "
-"les fonctionnalités supplémentaires suivantes :"
+"les fonctionnalités supplémentaires suivantes :"
#: distutils/apiref.rst:1349
msgid "short and long options are tied together"
@@ -2540,9 +2555,9 @@ msgid ""
msgstr ""
"Si une option prend un argument, sa *long_option* doit se terminer par "
"``'='``. *short_option* doit être un seul caractère, jamais ``':'`'. "
-"*option_courte* doit être ``None`` si *long_option* n'a pas de "
-"*short_option* correspondante. Tous les triplets d'options doivent avoir des "
-"options longues."
+"*short_option* doit être ``None`` si l'option n'a pas de forme courte "
+"correspondante. Tous les triplets d'options doivent avoir des options "
+"longues."
#: distutils/apiref.rst:1386
msgid "The :class:`FancyGetopt` class provides the following methods:"
@@ -2564,12 +2579,12 @@ msgid ""
"passed-in *args* list, which is left untouched."
msgstr ""
"Si *args* est ``None`` ou n'est pas définie, utilise ``sys.argv[1:]``. Si "
-"*object* est ``None`` ou n'est pas définie, créer une nouvelle instance de "
-"la classe :class:`OptionDummy` , stocke les valeurs d'options dans "
-"l'instance et renvoie un couple ``(args, object)``. Si *objet* est fourni, "
-"il est modifié sur place et :func:`getopt` renvoie simplement *args*; dans "
-"les deux cas, Les arguments *args* renvoyés sont une copie modifiée de la "
-"liste *args* transmise, qui est n'est pas modifiée."
+"*object* est ``None`` ou n'est pas définie, crée une nouvelle instance de la "
+"classe :class:`OptionDummy`, stocke les valeurs d'options dans l'instance et "
+"renvoie un couple ``(args, object)``. Si *object* est fourni, il est modifié "
+"sur place et :func:`getopt` renvoie simplement *args* ; dans les deux cas, "
+"Les arguments *args* renvoyés sont une copie modifiée de la liste *args* "
+"transmise, qui n'est pas elle-même modifiée."
#: distutils/apiref.rst:1405
msgid ""
@@ -2674,7 +2689,7 @@ msgid ""
"Return the value of a single variable. This is equivalent to "
"``get_config_vars().get(name)``."
msgstr ""
-"Retourne la valeur d'une seule variable. C'est l'équivalent de "
+"Renvoie la valeur d'une seule variable. C'est l'équivalent de "
"``get_config_vars().get(name)``."
#: distutils/apiref.rst:1491
@@ -2700,7 +2715,7 @@ msgid ""
"distribution. The file is a platform-specific text file."
msgstr ""
"Renvoie le nom complet du chemin d'accès de l'en-tête de configuration. "
-"Pour Unix, c'est l'en-tête généré par le script :program:`configure` ; pour "
+"Pour Unix, c'est l'en-tête généré par le script :program:`configure` ; pour "
"les autres plates-formes, l'en-tête provient directement de la distribution "
"source Python. Le fichier est un fichier texte spécifique à la plate-forme."
@@ -2728,7 +2743,7 @@ msgid ""
msgstr ""
"Renvoie le répertoire pour les fichiers d'inclusion C standards ou "
"dépendants de la plate-forme. Si *plat_specific* est vrai, le répertoire "
-"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *faux* "
+"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *False* "
"ou *None*, le répertoire indépendant de la plate-forme est renvoyé. Si "
"*prefix* est donné, il est utilisé soit comme préfixe au lieu de :const:"
"`PREFIX`, soit comme préfixe d'exécution au lieu de :const:`EXEC_PREFIX` si "
@@ -2747,7 +2762,7 @@ msgid ""
msgstr ""
"Renvoie le répertoire pour l'installation de la bibliothèque standard ou "
"dépendante de la plate-forme. Si *plat_specific* est vrai, le répertoire "
-"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *faux* "
+"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *False* "
"ou *None*, le répertoire indépendant de la plate-forme est renvoyé. Si "
"*prefix* est donné, il est utilisé soit comme préfixe au lieu de :const:"
"`PREFIX`, soit comme préfixe d'exécution au lieu de :const:`EXEC_PREFIX` si "
@@ -2819,7 +2834,7 @@ msgid ""
msgstr ""
"Ce module fournit la classe :class:`TextFile`, qui donne une interface aux "
"fichiers texte qui s'occupe (optionnellement) de supprimer les commentaires, "
-"d'ignorer les lignes vides et de joindre les lignes avec des antislash."
+"d'ignorer les lignes vides et de joindre les lignes avec des antislashs."
#: distutils/apiref.rst:1576
msgid ""
@@ -2832,12 +2847,11 @@ msgid ""
msgstr ""
"Cette classe fournit un objet de type fichier qui se charge de tout ce que "
"vous voulez généralement faire lors du traitement d'un fichier texte ayant "
-"une syntaxe ligne par ligne : Suppression des commentaires (tant que ``#`` "
-"est votre caractère de commentaire), passer les lignes vides, joindre des "
-"lignes adjacentes en échappant la nouvelle ligne (les lignes se terminant "
-"par une antislash), supprime les espace blancs avant et après le texte etc. "
-"Toutes ces fonctions sont optionnelles et peuvent être commandées "
-"indépendamment."
+"une syntaxe ligne par ligne : supprimer les commentaires (tant que ``#`` est "
+"votre caractère de commentaire), passer des lignes vides, joindre les lignes "
+"adjacentes (les lignes se terminant par un antislash) en une seule nouvelle "
+"ligne, supprimer les blancs avant et après le texte. Toutes ces fonctions "
+"sont optionnelles et peuvent être commandées indépendamment."
#: distutils/apiref.rst:1583
msgid ""
@@ -2897,7 +2911,7 @@ msgid ""
msgstr ""
"Supprime les caractères à partir de ``'#'`` jusqu'à la fin de la ligne, "
"ainsi que tout espace blanc menant au premier ``'#'`` — à moins qu'il ne "
-"soit échappé par une antislash"
+"soit échappé par un antislash"
#: distutils/apiref.rst:1612 distutils/apiref.rst:1617
msgid "true"
@@ -2926,7 +2940,7 @@ msgid ""
"returning it."
msgstr ""
"Efface les espaces blancs de fin de ligne (y compris le terminateur de "
-"ligne !) de chaque ligne avant de la renvoyer."
+"ligne !) de chaque ligne avant de la renvoyer."
#: distutils/apiref.rst:1617
msgid "*skip_blanks*"
@@ -2955,10 +2969,10 @@ msgid ""
"line; if N consecutive lines end with a backslash, then N+1 physical lines "
"will be joined to form one logical line."
msgstr ""
-"Si sur la ligne, une antislash est le dernier caractère et que ce caractère "
+"Si sur la ligne, un antislash est le dernier caractère et que ce caractère "
"n'est pas le caractère de nouvelle ligne. Joint la ligne suivante pour "
-"former une ligne logique. Si N lignes consécutives se terminent par une "
-"antislash, alors N+1 lignes physiques seront liées pour former une seul "
+"former une ligne logique. Si N lignes consécutives se terminent par un "
+"antislash, alors N+1 lignes physiques seront liées pour former une seule "
"ligne logique."
#: distutils/apiref.rst:1638
@@ -2970,8 +2984,8 @@ msgid ""
"strip leading whitespace from lines that are joined to their predecessor; "
"only matters if ``(join_lines and not lstrip_ws)``"
msgstr ""
-"Supprime les espaces blancs des lignes qui sont jointes à leur prédécesseur. "
-"n'est utile que que si ``(join_lines and not lstrip_ws)``."
+"Supprime les espaces blancs des lignes qui sont jointes à leur "
+"prédécesseur ; n'est utile que si ``(join_lines and not lstrip_ws)``."
#: distutils/apiref.rst:1645
msgid ""
@@ -2983,8 +2997,8 @@ msgid ""
msgstr ""
"Notez que puisque *rstrip_ws* peut effacer la fin de la ligne, la sémantique "
"de :meth:`readline` doit être différente de celle de la méthode standard :"
-"meth:`readline` des objets fichier ! En particulier, :meth:`readline` "
-"renvoie ``None`` pour indiquer la fin du fichier: une chaîne vide peut être "
+"meth:`readline` des objets fichiers ! En particulier, :meth:`readline` "
+"renvoie ``None`` pour indiquer la fin du fichier : une chaîne vide peut être "
"juste une ligne blanche (ou une ligne entièrement blanche), si *rstrip_ws* "
"est vrai mais pas si *skip_blanks* est faux."
@@ -3017,7 +3031,7 @@ msgstr ""
"courante dans le fichier courant. Si la ligne logique courante dans le "
"fichier s'étend sur plusieurs lignes physiques, l'avertissement se réfère à "
"une plage de lignes physiques, telles que ``\"lignes 3-5\"``. Si *line* est "
-"fourni, il remplace le numéro de la ligne courante ; il peut s'agir d'une "
+"fourni, il remplace le numéro de la ligne courante ; il peut s'agir d'une "
"liste ou d'un couple pour indiquer une plage de lignes physiques, ou d'un "
"entier pour une seule ligne physique."
@@ -3033,8 +3047,8 @@ msgid ""
"*strip_blanks* is not."
msgstr ""
"Lit et renvoie une seule ligne logique à partir du fichier courant (ou à "
-"partir d'un tampon interne si les lignes ont déjà été marqué comme non lue "
-"avec :meth:`unreadline`). Si l'option *join_lines* est vraie, cela peut "
+"partir d'un tampon interne si les lignes ont déjà été marquées comme non "
+"lues avec :meth:`unreadline`). Si l'option *join_lines* est vraie, cela peut "
"impliquer la lecture de plusieurs lignes physiques concaténées en une seule "
"chaîne. Met à jour le numéro de la ligne courante. Appeler :meth:`warn` "
"après :meth:`readline` émet donc un avertissement sur la ou les lignes "
@@ -3107,7 +3121,7 @@ msgstr ""
"meth:`finalize_options`, qui doivent être définies pour chaque classe de "
"commande. La distinction entre les deux est nécessaire parce que les "
"valeurs des options peuvent venir de l'extérieur (ligne de commande, fichier "
-"de configuration, ....), et toutes les options dépendantes d'autres options "
+"de configuration…), et toutes les options dépendantes d'autres options "
"doivent être calculées après que ces options externes aient été traitées — "
"ce qui explique :meth:`finalize_options`. Le corps de la sous-routine, où "
"s'effectue tout le travail est basé sur les valeurs de ses options, est la "
@@ -3225,7 +3239,7 @@ msgstr ""
"*sub_commands* formalise la notion de \"famille\" de commandes, par exemple. "
"``install`` est le parent des sous-commandes ``install_lib``, "
"``install_headers``, etc. Le parent d'une famille de commandes définit "
-"*sub_commands* en tant qu'attribut de classe ; c'est une liste de couples "
+"*sub_commands* en tant qu'attribut de classe ; c'est une liste de couples "
"``(command_name, predicate)``, avec *command_name* le nom de la commande et "
"*predicate* une fonction, une chaîne ou ``None``. *predicate* est une "
"méthode de la commande parent qui détermine si la commande correspondante "
diff --git a/distutils/builtdist.po b/distutils/builtdist.po
index d924a0c1dd..97318e76e8 100644
--- a/distutils/builtdist.po
+++ b/distutils/builtdist.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
-"PO-Revision-Date: 2020-06-28 15:17+0200\n"
-"Last-Translator: ZepmanBC \n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-01-28 15:11+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.4\n"
+"X-Generator: Poedit 2.4.2\n"
#: distutils/builtdist.rst:5
msgid "Creating Built Distributions"
@@ -39,12 +39,12 @@ msgid ""
"word is already spoken for in Python. (And \"installer\" is a term specific "
"to the world of mainstream desktop systems.)"
msgstr ""
-"Une \"distribution compilée\" vous fait surement penser à un \"paquet binaire"
-"\" ou à un \"installateur\" (tout dépend de votre environnement). Ce n'est "
-"cependant pas forcément un binaire, il peut ne contenir que des sources "
-"Python et / ou du *byte-code* ; et nous n'appelons pas ça un *package* parce "
-"que ce mot est déjà utilisé dans Python (et \"installateur\" est un terme "
-"spécifique au monde des systèmes de bureau)."
+"Une \"distribution compilée\" vous fait surement penser à un \"paquet "
+"binaire\" ou à un \"installateur\" (tout dépend de votre environnement). Ce "
+"n'est cependant pas forcément un binaire, il peut ne contenir que des "
+"sources Python et / ou du *byte-code* ; et nous n'appelons pas ça un "
+"*package* parce que ce mot est déjà utilisé dans Python (et \"installateur\" "
+"est un terme spécifique au monde des systèmes de bureau)."
#: distutils/builtdist.rst:16
msgid ""
@@ -336,12 +336,12 @@ msgstr ""
msgid ""
"You don't have to use the :command:`bdist` command with the :option:`!--"
"formats` option; you can also use the command that directly implements the "
-"format you're interested in. Some of these :command:`bdist` \"sub-commands"
-"\" actually generate several similar formats; for instance, the :command:"
-"`bdist_dumb` command generates all the \"dumb\" archive formats (``tar``, "
-"``gztar``, ``bztar``, ``xztar``, ``ztar``, and ``zip``), and :command:"
-"`bdist_rpm` generates both binary and source RPMs. The :command:`bdist` sub-"
-"commands, and the formats generated by each, are:"
+"format you're interested in. Some of these :command:`bdist` \"sub-"
+"commands\" actually generate several similar formats; for instance, the :"
+"command:`bdist_dumb` command generates all the \"dumb\" archive formats "
+"(``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, and ``zip``), and :"
+"command:`bdist_rpm` generates both binary and source RPMs. The :command:"
+"`bdist` sub-commands, and the formats generated by each, are:"
msgstr ""
"Vous ne devez pas utiliser la commande :command:`bdist` avec l'option :"
"option:`!--formats` ; Vous pouvez également utiliser la commande qui "
@@ -383,7 +383,7 @@ msgstr ":command:`bdist_wininst`"
#: distutils/builtdist.rst:144
msgid "wininst"
-msgstr "wininst"
+msgstr "`wininst`"
#: distutils/builtdist.rst:146
msgid ":command:`bdist_msi`"
@@ -391,15 +391,15 @@ msgstr ":command:`bdist_msi`"
#: distutils/builtdist.rst:146
msgid "msi"
-msgstr "msi"
+msgstr "`msi`"
#: distutils/builtdist.rst:308 distutils/builtdist.rst:476
msgid "bdist_wininst is deprecated since Python 3.8."
-msgstr ""
+msgstr "`bdist_wininst` est obsolète depuis Python 3.8."
#: distutils/builtdist.rst:311 distutils/builtdist.rst:479
msgid "bdist_msi is deprecated since Python 3.9."
-msgstr ""
+msgstr "`bdist_msi` est obsolète depuis Python 3.9."
#: distutils/builtdist.rst:155
msgid ""
@@ -767,17 +767,17 @@ msgid "or the :command:`bdist` command with the :option:`!--formats` option::"
msgstr "ou la commande :command:`bdist` avec l'option :option:`!--formats` ::"
#: distutils/builtdist.rst:328
-#, fuzzy
msgid ""
"If you have a pure module distribution (only containing pure Python modules "
"and packages), the resulting installer will be version independent and have "
"a name like :file:`foo-1.0.win32.exe`. Note that creating ``wininst`` binary "
"distributions in only supported on Windows systems."
msgstr ""
-"Si vous avez un module pur (contenant seulement des modules et des packages "
-"en Python pur), l'installateur final ne sera lié a aucune version de Python "
-"et aura un nom du type :file:`foo-1.0.win32.exe`. Ces installateurs peuvent "
-"même être créés sur les plateformes Unix ou Mac OS X."
+"Si vous avez une distribution de modules purs (contenant seulement des "
+"modules et des packages en Python pur), l'installateur produit n'est lié à "
+"aucune version de Python et a un nom du type :file:`foo-1.0.win32.exe`. "
+"Notez que la création de distributions binaires ``wininst`` n'est prise en "
+"charge que sur les systèmes Windows."
#: distutils/builtdist.rst:333
msgid ""
diff --git a/distutils/index.po b/distutils/index.po
index 69cb1eb851..f3179492e1 100644
--- a/distutils/index.po
+++ b/distutils/index.po
@@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-24 09:01+0200\n"
-"PO-Revision-Date: 2020-02-04 21:20+0100\n"
-"Last-Translator: ZepmanBC \n"
+"PO-Revision-Date: 2021-01-28 15:55+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.4\n"
+"X-Generator: Poedit 2.4.2\n"
#: distutils/index.rst:5
msgid "Distributing Python Modules (Legacy version)"
@@ -70,7 +70,6 @@ msgstr ""
"d'informations."
#: distutils/index.rst:25
-#, fuzzy
msgid ""
"This document describes the Python Distribution Utilities (\"Distutils\") "
"from the module developer's point of view, describing the underlying "
@@ -78,7 +77,7 @@ msgid ""
"make Python modules and extensions readily available to a wider audience."
msgstr ""
"Ce document décrit les outils de distribution de Python (\"Distutils\") du "
-"point de vue d'un développeur de modules. Il décrit comment utiliser "
-"`Distutils` pour rendre des modules et extensions Python disponible à une "
-"large audience, simplement, avec un faible surcoût sur les mécaniques de "
-"construction, déploiement et installation."
+"point de vue d'un développeur de modules. Il décrit les capacités sous-"
+"jacentes sur lesquelles ``setuptools`` s'appuie pour permettre aux "
+"développeurs Python de créer des modules Python et des extensions "
+"disponibles à une large audience."
diff --git a/distutils/introduction.po b/distutils/introduction.po
index a4c38e32f4..980122495d 100644
--- a/distutils/introduction.po
+++ b/distutils/introduction.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.8\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-03-23 14:58+0100\n"
"Last-Translator: Eric Régnier \n"
"Language-Team: FRENCH \n"
@@ -350,13 +350,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++)."
+"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++)."
#: distutils/introduction.rst:175
msgid "package"
diff --git a/distutils/sourcedist.po b/distutils/sourcedist.po
index 287064dae9..6b9ffa566a 100644
--- a/distutils/sourcedist.po
+++ b/distutils/sourcedist.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-02-04 21:21+0100\n"
"Last-Translator: ZepmanBC \n"
"Language-Team: FRENCH \n"
@@ -110,6 +110,10 @@ msgstr "``bztar``"
msgid "bzip2'ed tar file (:file:`.tar.bz2`)"
msgstr "Fichier *tar* compressé par *bzip2* (:file:`.tar.bz2`)"
+#: distutils/sourcedist.rst:37 distutils/sourcedist.rst:43
+msgid "\\(5)"
+msgstr "\\(5)"
+
#: distutils/sourcedist.rst:37
msgid "``xztar``"
msgstr "``xztar``"
@@ -127,8 +131,8 @@ msgid "compressed tar file (:file:`.tar.Z`)"
msgstr "Fichier *tar* compressé par *compress* (:file:`.tar.Z`)"
#: distutils/sourcedist.rst:40
-msgid "\\(4)"
-msgstr "\\(4)"
+msgid "(4),(5)"
+msgstr ""
#: distutils/sourcedist.rst:43
msgid "``tar``"
@@ -172,6 +176,12 @@ msgstr ""
#: distutils/sourcedist.rst:65
msgid ""
+"deprecated by `PEP 527 `_; `PyPI "
+"`_ only accepts ``.zip`` and ``.tar.gz`` files."
+msgstr ""
+
+#: distutils/sourcedist.rst:68
+msgid ""
"When using any ``tar`` format (``gztar``, ``bztar``, ``xztar``, ``ztar`` or "
"``tar``), under Unix you can specify the ``owner`` and ``group`` names that "
"will be set for each member of the archive."
@@ -181,17 +191,17 @@ msgstr ""
"propriétaire et le groupe qui seront appliqué pour chaque fichier de "
"l'archive."
-#: distutils/sourcedist.rst:69
+#: distutils/sourcedist.rst:72
msgid "For example, if you want all files of the archive to be owned by root::"
msgstr ""
"Par exemple, si vous voulez que tous les fichiers de l'archive soient détenu "
"par *root* ::"
-#: distutils/sourcedist.rst:77
+#: distutils/sourcedist.rst:80
msgid "Specifying the files to distribute"
msgstr "Spécifier les fichiers à distribuer"
-#: distutils/sourcedist.rst:79
+#: distutils/sourcedist.rst:82
msgid ""
"If you don't supply an explicit list of files (or instructions on how to "
"generate one), the :command:`sdist` command puts a minimal default set into "
@@ -201,7 +211,7 @@ msgstr ""
"instructions pour la générer), la commande :command:`sdist` en met par "
"défaut le minimum dans la distribution source :"
-#: distutils/sourcedist.rst:83
+#: distutils/sourcedist.rst:86
msgid ""
"all Python source files implied by the ``py_modules`` and ``packages`` "
"options"
@@ -209,14 +219,14 @@ msgstr ""
"tous les fichiers source Python sous-entendus par les options ``py_modules`` "
"et ``packages``"
-#: distutils/sourcedist.rst:86
+#: distutils/sourcedist.rst:89
msgid ""
"all C source files mentioned in the ``ext_modules`` or ``libraries`` options"
msgstr ""
"tous les fichiers source C mentionnés dans les arguments ``ext_modules`` ou "
"``libraries``"
-#: distutils/sourcedist.rst:92
+#: distutils/sourcedist.rst:95
msgid ""
"scripts identified by the ``scripts`` option See :ref:`distutils-installing-"
"scripts`."
@@ -224,7 +234,7 @@ msgstr ""
"scripts identifiés par l'argument ``scripts``. Voir :ref:`distutils-"
"installing-scripts`."
-#: distutils/sourcedist.rst:95
+#: distutils/sourcedist.rst:98
msgid ""
"anything that looks like a test script: :file:`test/test\\*.py` (currently, "
"the Distutils don't do anything with test scripts except include them in "
@@ -236,7 +246,7 @@ msgstr ""
"inclure dans les distributions sources, mais dans le futur un standard sera "
"implémenté pour tester les distributions de module Python)"
-#: distutils/sourcedist.rst:100
+#: distutils/sourcedist.rst:103
msgid ""
"Any of the standard README files (:file:`README`, :file:`README.txt`, or :"
"file:`README.rst`), :file:`setup.py` (or whatever you called your setup "
@@ -247,7 +257,7 @@ msgstr ""
"script d'installation si vous l'avez appelé autrement) et le fichier :file:"
"`setup.cfg`."
-#: distutils/sourcedist.rst:104
+#: distutils/sourcedist.rst:107
msgid ""
"all files that matches the ``package_data`` metadata. See :ref:`distutils-"
"installing-package-data`."
@@ -255,7 +265,7 @@ msgstr ""
"tous les fichiers associés aux méta-données ``package_data``. Voir :ref:"
"`distutils-installing-package-data`."
-#: distutils/sourcedist.rst:107
+#: distutils/sourcedist.rst:110
msgid ""
"all files that matches the ``data_files`` metadata. See :ref:`distutils-"
"additional-files`."
@@ -263,7 +273,7 @@ msgstr ""
"tous les fichiers associés aux méta-données ``data_files``. Voir :ref:"
"`distutils-additional-files`."
-#: distutils/sourcedist.rst:110
+#: distutils/sourcedist.rst:113
msgid ""
"Sometimes this is enough, but usually you will want to specify additional "
"files to distribute. The typical way to do this is to write a *manifest "
@@ -283,7 +293,7 @@ msgstr ""
"`sdist` traite ce modèle et génère un manifeste à partir de ces instructions "
"et de ce qu'elle trouve dans le système de fichiers."
-#: distutils/sourcedist.rst:118
+#: distutils/sourcedist.rst:121
msgid ""
"If you prefer to roll your own manifest file, the format is simple: one "
"filename per line, regular files (or symlinks to them) only. If you do "
@@ -296,7 +306,7 @@ msgstr ""
"vous devez tout spécifier : les groupes de fichiers par défaut décrits au-"
"dessus ne sont pas inclus automatiquement dans ce cas."
-#: distutils/sourcedist.rst:123
+#: distutils/sourcedist.rst:126
msgid ""
"An existing generated :file:`MANIFEST` will be regenerated without :command:"
"`sdist` comparing its modification time to the one of :file:`MANIFEST.in` "
@@ -306,7 +316,7 @@ msgstr ""
"command:`sdist` ne compare son heure de modification à :file:`MANIFEST.in` "
"ou :file:`setup.py`."
-#: distutils/sourcedist.rst:128
+#: distutils/sourcedist.rst:131
msgid ""
":file:`MANIFEST` files start with a comment indicating they are generated. "
"Files without this comment are not overwritten or removed."
@@ -315,7 +325,7 @@ msgstr ""
"sont générés. Les fichiers sans ce commentaire ne sont pas réécrits ou "
"supprimés."
-#: distutils/sourcedist.rst:132
+#: distutils/sourcedist.rst:135
msgid ""
":command:`sdist` will read a :file:`MANIFEST` file if no :file:`MANIFEST.in` "
"exists, like it used to do."
@@ -323,14 +333,14 @@ msgstr ""
":command:`sdist` lira un ficher :file:`MANIFEST` s'il n'existe pas de :file:"
"`MANIFEST.in` , tel qu'il en avait l'habitude."
-#: distutils/sourcedist.rst:136
+#: distutils/sourcedist.rst:139
msgid ""
":file:`README.rst` is now included in the list of distutils standard READMEs."
msgstr ""
"Le fichier :file:`README.rst` est maintenant inclus dans la liste des "
"fichiers *README* standards de *distutils*."
-#: distutils/sourcedist.rst:140
+#: distutils/sourcedist.rst:143
msgid ""
"The manifest template has one command per line, where each command specifies "
"a set of files to include or exclude from the source distribution. For an "
@@ -340,7 +350,7 @@ msgstr ""
"spécifie un ensemble de fichiers à inclure ou à exclure de la distribution "
"source. Par exemple, regardons à nouveau le propre manifeste de Distutils :"
-#: distutils/sourcedist.rst:150
+#: distutils/sourcedist.rst:153
msgid ""
"The meanings should be fairly clear: include all files in the distribution "
"root matching :file:`\\*.txt`, all files anywhere under the :file:`examples` "
@@ -363,7 +373,7 @@ msgstr ""
"inclusions standards). Il existe d'autres commandes dans le langage du "
"fichier manifeste, consultez le chapitre :ref:`sdist-cmd`."
-#: distutils/sourcedist.rst:160
+#: distutils/sourcedist.rst:163
msgid ""
"The order of commands in the manifest template matters: initially, we have "
"the list of default files as described above, and each command in the "
@@ -377,13 +387,13 @@ msgstr ""
"Une fois que le traitement du manifeste modèle est fini, nous enlevons les "
"fichiers qui ne doivent pas être inclus dans la distribution source :"
-#: distutils/sourcedist.rst:166
+#: distutils/sourcedist.rst:169
msgid "all files in the Distutils \"build\" tree (default :file:`build/`)"
msgstr ""
"tous les fichiers dans l'arborescence de *build* de Distutils (par défaut :"
"file:`build/`)"
-#: distutils/sourcedist.rst:168
+#: distutils/sourcedist.rst:171
msgid ""
"all files in directories named :file:`RCS`, :file:`CVS`, :file:`.svn`, :file:"
"`.hg`, :file:`.git`, :file:`.bzr` or :file:`_darcs`"
@@ -391,7 +401,7 @@ msgstr ""
"tous les fichiers dans les dossiers nommés :file:`RCS`, :file:`CVS`, :file:`."
"svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` ou :file:`_darcs`"
-#: distutils/sourcedist.rst:171
+#: distutils/sourcedist.rst:174
msgid ""
"Now we have our complete list of files, which is written to the manifest for "
"future reference, and then used to build the source distribution archive(s)."
@@ -400,7 +410,7 @@ msgstr ""
"écrite dans le manifeste pour une utilisation future et sera utilisée pour "
"construire la ou les archive(s) de notre distribution source."
-#: distutils/sourcedist.rst:174
+#: distutils/sourcedist.rst:177
msgid ""
"You can disable the default set of included files with the :option:`!--no-"
"defaults` option, and you can disable the standard exclude set with :option:"
@@ -410,7 +420,7 @@ msgstr ""
"utilisant l'option :option:`!--no-defaults`, ainsi que désactiver les "
"exclusions standards avec l'option :option:`!--no-prune`."
-#: distutils/sourcedist.rst:178
+#: distutils/sourcedist.rst:181
msgid ""
"Following the Distutils' own manifest template, let's trace how the :command:"
"`sdist` command builds the list of files to include in the Distutils source "
@@ -420,7 +430,7 @@ msgstr ""
"`sdist` construit la liste des fichiers à inclure dans la distribution "
"source de Distutils."
-#: distutils/sourcedist.rst:182
+#: distutils/sourcedist.rst:185
msgid ""
"include all Python source files in the :file:`distutils` and :file:"
"`distutils/command` subdirectories (because packages corresponding to those "
@@ -433,7 +443,7 @@ msgstr ""
"``packages`` du script d'installation --- voir le chapitre :ref:`setup-"
"script`)"
-#: distutils/sourcedist.rst:187
+#: distutils/sourcedist.rst:190
msgid ""
"include :file:`README.txt`, :file:`setup.py`, and :file:`setup.cfg` "
"(standard files)"
@@ -441,11 +451,11 @@ msgstr ""
"inclure :file:`README.txt`, :file:`setup.py` et :file:`setup.cfg` (fichiers "
"standards)"
-#: distutils/sourcedist.rst:190
+#: distutils/sourcedist.rst:193
msgid "include :file:`test/test\\*.py` (standard files)"
msgstr "inclure :file:`test/test\\*.py` (fichiers standard)"
-#: distutils/sourcedist.rst:192
+#: distutils/sourcedist.rst:195
msgid ""
"include :file:`\\*.txt` in the distribution root (this will find :file:"
"`README.txt` a second time, but such redundancies are weeded out later)"
@@ -454,7 +464,7 @@ msgstr ""
"`README.txt` une seconde fois, mais les redondances sont supprimées plus "
"tard)"
-#: distutils/sourcedist.rst:195
+#: distutils/sourcedist.rst:198
msgid ""
"include anything matching :file:`\\*.txt` or :file:`\\*.py` in the sub-tree "
"under :file:`examples`,"
@@ -462,7 +472,7 @@ msgstr ""
"inclure tout fichier de la forme :file:`\\*.txt` ou :file:`\\*.py` dans la "
"sous-arborescence de :file:`examples`,"
-#: distutils/sourcedist.rst:198
+#: distutils/sourcedist.rst:201
msgid ""
"exclude all files in the sub-trees starting at directories matching :file:"
"`examples/sample?/build`\\ ---this may exclude files included by the "
@@ -475,7 +485,7 @@ msgstr ""
"important que la commande ``prune`` dans le manifeste modèle vienne après la "
"commande ``recursive-include``"
-#: distutils/sourcedist.rst:203
+#: distutils/sourcedist.rst:206
msgid ""
"exclude the entire :file:`build` tree, and any :file:`RCS`, :file:`CVS`, :"
"file:`.svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` and :file:`_darcs` "
@@ -485,7 +495,7 @@ msgstr ""
"`RCS`, :file:`CVS`, :file:`.svn`, :file:`.hg`, :file:`.git`, :file:`.bzr` "
"et :file:`_darcs`"
-#: distutils/sourcedist.rst:207
+#: distutils/sourcedist.rst:210
msgid ""
"Just like in the setup script, file and directory names in the manifest "
"template should always be slash-separated; the Distutils will take care of "
@@ -498,11 +508,11 @@ msgstr ""
"la représentation standard de votre plateforme. De cette manière, le "
"manifeste modèle est portable sur tout système d'exploitation."
-#: distutils/sourcedist.rst:216
+#: distutils/sourcedist.rst:219
msgid "Manifest-related options"
msgstr "Options pour le manifeste"
-#: distutils/sourcedist.rst:218
+#: distutils/sourcedist.rst:221
msgid ""
"The normal course of operations for the :command:`sdist` command is as "
"follows:"
@@ -510,7 +520,7 @@ msgstr ""
"L'ordre normal des opérations pour la commande :command:`sdist` est le "
"suivant :"
-#: distutils/sourcedist.rst:220
+#: distutils/sourcedist.rst:223
msgid ""
"if the manifest file (:file:`MANIFEST` by default) exists and the first line "
"does not have a comment indicating it is generated from :file:`MANIFEST.in`, "
@@ -520,7 +530,7 @@ msgstr ""
"première ligne n'a pas de commentaire indiquant qu'il a été généré par :file:"
"`MANIFEST.in`, alors il est utilisé tel quel, inchangé"
-#: distutils/sourcedist.rst:224
+#: distutils/sourcedist.rst:227
msgid ""
"if the manifest file doesn't exist or has been previously automatically "
"generated, read :file:`MANIFEST.in` and create the manifest"
@@ -528,7 +538,7 @@ msgstr ""
"si le manifeste n'existe pas ou s'il a été généré automatiquement, lire :"
"file:`MANIFEST.in` et créer le manifeste"
-#: distutils/sourcedist.rst:227
+#: distutils/sourcedist.rst:230
msgid ""
"if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest "
"with just the default file set"
@@ -536,7 +546,7 @@ msgstr ""
"s'il n'existe ni :file:`MANIFEST`, ni :file:`MANIFEST.in`, alors créer un "
"manifeste contenant uniquement le groupe de fichiers par défaut"
-#: distutils/sourcedist.rst:230
+#: distutils/sourcedist.rst:233
msgid ""
"use the list of files now in :file:`MANIFEST` (either just generated or read "
"in) to create the source distribution archive(s)"
@@ -544,7 +554,7 @@ msgstr ""
"utiliser maintenant la liste de fichiers de :file:`MANIFEST` (qu'il ait été "
"généré ou lu) pour créer la ou les archive(s) de la distribution source"
-#: distutils/sourcedist.rst:233
+#: distutils/sourcedist.rst:236
msgid ""
"There are a couple of options that modify this behaviour. First, use the :"
"option:`!--no-defaults` and :option:`!--no-prune` to disable the standard "
@@ -554,7 +564,7 @@ msgstr ""
"options :option:`!--no-defaults` et :option:`!--no-prune` pour désactiver "
"les inclusions et exclusions standards."
-#: distutils/sourcedist.rst:237
+#: distutils/sourcedist.rst:240
msgid ""
"Second, you might just want to (re)generate the manifest, but not create a "
"source distribution::"
@@ -562,8 +572,11 @@ msgstr ""
"Ensuite, si vous ne voulez que (ré)générer le manifeste, mais pas créer la "
"distribution source ::"
-#: distutils/sourcedist.rst:242
+#: distutils/sourcedist.rst:245
msgid ":option:`!-o` is a shortcut for :option:`!--manifest-only`."
msgstr ""
"L'option :option:`!-o` est un raccourci pour l'option :option:`!--manifest-"
"only`."
+
+#~ msgid "\\(4)"
+#~ msgstr "\\(4)"
diff --git a/extending/extending.po b/extending/extending.po
index 0f59cbaac3..b7ca9e9575 100644
--- a/extending/extending.po
+++ b/extending/extending.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
-"PO-Revision-Date: 2019-10-30 00:03+0100\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-02-07 22:27+0100\n"
"Last-Translator: Julien Palard \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-Generator: Poedit 2.3\n"
#: extending/extending.rst:8
msgid "Extending Python with C or C++"
@@ -28,9 +28,9 @@ msgid ""
msgstr ""
"Il est relativement facile d'ajouter de nouveaux modules à Python, si vous "
"savez programmer en C. Ces :dfn:` extension modules` "
-"permettent deux choses qui ne sont pas possible directement en Python: Elles "
-"peuvent définir de nouveaux types natifs, et peuvent appeler des fonctions "
-"de bibliothèques C ou appels systèmes."
+"permettent deux choses qui ne sont pas possibles directement en Python : "
+"Elles peuvent définir de nouveaux types natifs, et peuvent appeler des "
+"fonctions de bibliothèques C ou faire des appels systèmes."
#: extending/extending.rst:15
msgid ""
@@ -65,15 +65,15 @@ msgid ""
"with C code and are more portable between implementations of Python than "
"writing and compiling a C extension module."
msgstr ""
-"L'interface d'extension C est spécifique à CPython, et les modules "
+"L'interface d'extension C est spécifique à *CPython*, et les modules "
"d'extension ne fonctionne pas sur les autres implémentations de Python. Dans "
"de nombreux cas, il est possible d'éviter la rédaction des extensions en C "
"et ainsi préserver la portabilité vers d'autres implémentations. Par "
"exemple, si vous devez appeler une fonction de la bibliothèque C ou faire un "
"appel système, vous devriez envisager d'utiliser le module :mod:`ctypes` ou "
-"d'utiliser la bibliothèque `cffi `_ plutôt que "
-"d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du code "
-"Python s'interfaçant avec le code C et sont plus portables entre les "
+"d'utiliser la bibliothèque `*cffi* `_ plutôt "
+"que d'écrire du code C sur mesure. Ces modules vous permettent d'écrire du "
+"code Python s'interfaçant avec le code C et sont plus portables entre les "
"implémentations de Python que l'écriture et la compilation d'une d'extension "
"C."
@@ -90,9 +90,9 @@ msgid ""
"this function to be callable from Python as follows:"
msgstr ""
"Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans "
-"des Monty Python ...) et disons que nous voulons créer une interface Python "
+"des *Monty Python* …) et disons que nous voulons créer une interface Python "
"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction "
-"prend une chaîne de caractères terminée par NULL comme argument et renvoie "
+"prend une chaîne de caractères à terminaison nulle comme argument et renvoie "
"un entier. Nous voulons que cette fonction soit appelable à partir de Python "
"comme suit :"
@@ -143,19 +143,19 @@ msgstr ""
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, "
-"and since they are used extensively by the Python interpreter, ``\"Python.h"
-"\"`` includes a few standard header files: ````, ````, "
+"and since they are used extensively by the Python interpreter, ``\"Python."
+"h\"`` includes a few standard header files: ````, ````, "
"````, and ````. If the latter header file does not exist "
"on your system, it declares the functions :c:func:`malloc`, :c:func:`free` "
"and :c:func:`realloc` directly."
msgstr ""
"Tous les symboles exposés par :file:`Python.h` sont préfixés de ``Py`` ou "
"``PY``, sauf ceux qui sont définis dans les en-têtes standard. Pour le "
-"confort, et comme ils sont largement utilisés par l'interpréteur Python, ``"
-"\"Python.h\"`` inclut lui même quelques d'en-têtes standard : ````, "
-"````, ```` et ````. Si ce dernier n'existe pas "
-"sur votre système, il déclare les fonctions :c:func:`malloc`, :c:func:`free` "
-"et :c:func:`realloc` directement."
+"confort, et comme ils sont largement utilisés par l'interpréteur Python, "
+"``\"Python.h\"`` inclut lui-même quelques d'en-têtes standard : ````, ````, ```` et ````. Si ce dernier "
+"n'existe pas sur votre système, il déclare les fonctions :c:func:`malloc`, :"
+"c:func:`free` et :c:func:`realloc` directement."
#: extending/extending.rst:83
msgid ""
@@ -201,16 +201,15 @@ msgid ""
msgstr ""
"L'argument *args* sera un pointeur vers un *n*-uplet Python contenant les "
"arguments. Chaque élément du *n*-uplet correspond à un argument dans la "
-"liste des arguments de l'appel. Les arguments sont des objets Python --- "
-"afin d'en faire quelque chose dans notre fonction C, nous devons les "
-"convertir en valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API "
-"Python vérifie les types des arguments et les convertit en valeurs C. Elle "
-"utilise un modèle sous forme de chaîne pour déterminer les types requis des "
-"arguments ainsi que les types de variables C dans lequel stocker les valeurs "
+"liste des arguments de l'appel. Les arguments sont des objets Python, afin "
+"d'en faire quelque chose dans notre fonction C, nous devons les convertir en "
+"valeurs C. La fonction :c:func:`PyArg_ParseTuple` de l'API Python vérifie "
+"les types des arguments et les convertit en valeurs C. Elle utilise un "
+"modèle sous forme de chaîne pour déterminer les types requis des arguments "
+"ainsi que les types de variables C dans lequel stocker les valeurs "
"converties. Nous en verront plus, plus tard."
#: extending/extending.rst:116
-#, fuzzy
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 "
@@ -221,35 +220,32 @@ msgid ""
msgstr ""
":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont "
"le bon type et que ses composants ont été stockés dans les variables dont "
-"les adresses données. Il renvoie faux (zéro) si une liste d'arguments "
-"invalide a été passée. Dans ce dernier cas, elle lève également une "
-"exception appropriée de sorte que la fonction d'appel puisse renvoyer *NULL* "
-"immédiatement (comme nous l'avons vu dans l'exemple)."
+"les adresses ont été données en entrée. Il renvoie faux (zéro) si une liste "
+"d'arguments invalide a été passée. Dans ce dernier cas, elle lève également "
+"une exception appropriée de sorte que la fonction d'appel puisse renvoyer "
+"``NULL`` immédiatement (comme nous l'avons vu dans l'exemple)."
#: extending/extending.rst:126
msgid "Intermezzo: Errors and Exceptions"
-msgstr "Intermezzo: Les erreurs et exceptions"
+msgstr "Intermezzo : Les erreurs et les exceptions"
#: extending/extending.rst:128
#, fuzzy
msgid ""
"An important convention throughout the Python interpreter is the following: "
"when a function fails, it should set an exception condition and return an "
-"error value (usually a ``NULL`` pointer). Exceptions are stored in a static "
-"global variable inside the interpreter; if this variable is ``NULL`` no "
-"exception has occurred. A second global variable stores the \"associated "
-"value\" of the exception (the second argument to :keyword:`raise`). A third "
-"variable contains the stack traceback in case the error originated in Python "
-"code. These three variables are the C equivalents of the result in Python "
-"of :meth:`sys.exc_info` (see the section on module :mod:`sys` in the Python "
-"Library Reference). It is important to know about them to understand how "
-"errors are passed around."
-msgstr ""
-"Une convention primordiale imprégnant tout l'interpréteur Python est: quand "
+"error value (usually ``-1`` or a ``NULL`` pointer). Exception information "
+"is stored in three members of the interpreter's thread state. These are "
+"``NULL`` if there is no exception. Otherwise they are the C equivalents of "
+"the members of the Python tuple returned by :meth:`sys.exc_info`. These are "
+"the exception type, exception instance, and a traceback object. It is "
+"important to know about them to understand how errors are passed around."
+msgstr ""
+"Une convention primordiale imprégnant tout l'interpréteur Python est : quand "
"une fonction échoue, elle devrait laisser une exception et renvoyer une "
-"valeur d'erreur (typiquement un pointeur *NULL*). Dans l'interpréteur, les "
-"exceptions sont stockés dans une variable globale statique, si cette "
-"variable est *NULL*, aucune exception n'a eu lieu. Une seconde variable "
+"valeur d'erreur (typiquement un pointeur ``NULL``). Dans l'interpréteur, les "
+"exceptions sont stockées dans une variable globale statique, si cette "
+"variable est ``NULL``, aucune exception n'a eu lieu. Une seconde variable "
"globale stocke la \"valeur associée\" à l'exception (le deuxième argument "
"de :keyword:`raise`). Une troisième variable contient la trace de la pile "
"dans le cas où l'erreur soit survenue dans du code Python. Ces trois "
@@ -258,7 +254,7 @@ msgstr ""
"Reference*). Il est important de les connaître pour comprendre comment les "
"erreurs sont propagées."
-#: extending/extending.rst:139
+#: extending/extending.rst:137
msgid ""
"The Python API defines a number of functions to set various types of "
"exceptions."
@@ -266,7 +262,7 @@ msgstr ""
"L'API Python définit un certain nombre de fonctions pour créer différents "
"types d'exceptions."
-#: extending/extending.rst:141
+#: extending/extending.rst:139
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 "
@@ -280,7 +276,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."
-#: extending/extending.rst:147
+#: extending/extending.rst:145
msgid ""
"Another useful function is :c:func:`PyErr_SetFromErrno`, which only takes an "
"exception argument and constructs the associated value by inspection of the "
@@ -292,11 +288,10 @@ msgstr ""
"Une autre fonction utile est :c:func:`PyErr_SetFromErrno`, qui construit une "
"exception à partir de la valeur de la variable globale :c:data:`errno`. La "
"fonction la plus générale est :c:func:`PyErr_SetObject`, qui prend deux "
-"arguments: l'exception et sa valeur associée. Vous ne devez pas appliquer :c:"
-"func:`Py_INCREF` aux objets transmis à ces fonctions."
+"arguments : l'exception et sa valeur associée. Vous ne devez pas appliquer :"
+"c:func:`Py_INCREF` aux objets transmis à ces fonctions."
-#: extending/extending.rst:154
-#, fuzzy
+#: extending/extending.rst:152
msgid ""
"You can test non-destructively whether an exception has been set with :c:"
"func:`PyErr_Occurred`. This returns the current exception object, or "
@@ -306,12 +301,12 @@ msgid ""
msgstr ""
"Vous pouvez tester de manière non destructive si une exception a été levée "
"avec :c:func:`PyErr_Occurred`. Cela renvoie l'objet exception actuel, ou "
-"*NULL* si aucune exception n'a eu lieu. Cependant, vous ne devriez pas avoir "
-"besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est "
+"``NULL`` si aucune exception n'a eu lieu. Cependant, vous ne devriez pas "
+"avoir besoin d'appeler :c:func:`PyErr_Occurred` pour voir si une erreur est "
"survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
-"de le déterminer à partir de la valeur de retour."
+"de le déterminer à partir de la valeur renvoyée."
-#: extending/extending.rst:160
+#: extending/extending.rst:158
#, fuzzy
msgid ""
"When a function *f* that calls another function *g* detects that the latter "
@@ -327,17 +322,17 @@ msgid ""
msgstr ""
"Lorsqu'une fonction *f* ayant appelé une autre fonction *g* détecte que "
"cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour "
-"(habituellement *NULL* ou ``-1``). *f* ne devrait *pas* appeler l'une des "
-"fonctions :c:func:`PyErr_\\*`, l'une d'elles ayant déjà été appelée par *g*. "
-"La fonction appelant *f* est alors censée renvoyer aussi un code d'erreur à "
-"celle qui l'a appelée, toujours sans utiliser :c:func:`PyErr_\\*`, et ainsi "
-"de suite. La cause la plus détaillée de l'erreur a déjà été signalée par la "
-"fonction l'ayant détectée en premier. Une fois l'erreur remontée à la boucle "
-"principale de l'interpréteur Python, il interrompt le code en cours "
-"d'exécution et essaie de trouver un gestionnaire d'exception spécifié par le "
-"développeur Python."
-
-#: extending/extending.rst:170
+"(habituellement ``NULL`` ou ``-1``). La fonction *f* ne devrait *pas* "
+"appeler l'une des fonctions :c:func:`PyErr_\\*`, l'une d'entre elles ayant "
+"déjà été appelée par *g*. La fonction appelant *f* est alors censée renvoyer "
+"aussi un code d'erreur à celle qui l'a appelée, toujours sans utiliser :c:"
+"func:`PyErr_\\*`, et ainsi de suite. La cause la plus détaillée de l'erreur "
+"a déjà été signalée par la fonction l'ayant détecté en premier. Une fois "
+"l'erreur remontée à la boucle principale de l'interpréteur Python, il "
+"interrompt le code en cours d'exécution et essaie de trouver un gestionnaire "
+"d'exception spécifié par le développeur Python."
+
+#: extending/extending.rst:168
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 "
@@ -349,10 +344,10 @@ msgstr ""
"d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\*`, "
"dans de tels cas, il est tout à fait possible de le faire. Cependant, ce "
"n'est généralement pas nécessaire, et peut amener à perdre des informations "
-"sur la cause de l'erreur: la plupart des opérations peuvent échouer pour "
-"tout un tas de raisons)."
+"sur la cause de l'erreur : la plupart des opérations peuvent échouer pour "
+"tout un tas de raisons.)"
-#: extending/extending.rst:176
+#: extending/extending.rst:174
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 "
@@ -367,7 +362,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é)."
-#: extending/extending.rst:182
+#: extending/extending.rst:180
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:"
@@ -375,14 +370,14 @@ msgid ""
"creating functions (for example, :c:func:`PyLong_FromLong`) already do this, "
"so this note is only relevant to those who call :c:func:`malloc` directly."
msgstr ""
-"Chaque échec de :c:func:`malloc` doit être transformé en une exception --- "
+"Chaque échec de :c:func:`malloc` doit être transformé en une exception, "
"l'appelant direct de :c:func:`malloc` (ou :c:func:`realloc`) doit appeler :c:"
"func:`PyErr_NoMemory` et prendre l'initiative de renvoyer une valeur "
"d'erreur. Toutes les fonctions construisant des objets (tels que :c:func:"
"`PyLong_FromLong`) le font déjà, donc cette note ne concerne que ceux qui "
"appellent :c:func:`malloc` directement."
-#: extending/extending.rst:188
+#: extending/extending.rst:186
msgid ""
"Also note that, with the important exception of :c:func:`PyArg_ParseTuple` "
"and friends, functions that return an integer status usually return a "
@@ -394,7 +389,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."
-#: extending/extending.rst:192
+#: extending/extending.rst:190
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 "
@@ -402,9 +397,9 @@ msgid ""
msgstr ""
"Enfin, lorsque vous renvoyez un code d'erreur, n'oubliez pas faire un brin "
"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec "
-"les objets que vous auriez déjà créés) !"
+"les objets que vous auriez déjà créés) !"
-#: extending/extending.rst:196
+#: extending/extending.rst:194
msgid ""
"The choice of which exception to raise is entirely yours. There are "
"predeclared C objects corresponding to all built-in Python exceptions, such "
@@ -428,7 +423,7 @@ msgstr ""
"satisfaire d'autres conditions, :c:data:`PyExc_ValueError` sera plus "
"appropriée."
-#: extending/extending.rst:206
+#: extending/extending.rst:204
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::"
@@ -436,7 +431,7 @@ 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 ::"
-#: extending/extending.rst:211
+#: extending/extending.rst:209
msgid ""
"and initialize it in your module's initialization function (:c:func:"
"`PyInit_spam`) with an exception object::"
@@ -444,20 +439,19 @@ msgstr ""
"et initialisez-la dans la fonction d'initialisation de votre module (:c:func:"
"`PyInit_spam`) avec un objet exception ::"
-#: extending/extending.rst:235
-#, fuzzy
+#: extending/extending.rst:233
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 "
"class being :exc:`Exception` (unless another class is passed in instead of "
"``NULL``), described in :ref:`bltin-exceptions`."
msgstr ""
-"Notez que le nom de exception, côté Python, est :exc:`spam.error`. La "
+"Notez que le nom de l'exception en Python est :exc:`spam.error`. La "
"fonction :c:func:`PyErr_NewException` peut créer une classe héritant de :exc:"
"`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de "
-"*NULL*), voir :ref:`bltin-exceptions`."
+"``NULL``), voir :ref:`bltin-exceptions`."
-#: extending/extending.rst:240
+#: extending/extending.rst:238
msgid ""
"Note also that the :c:data:`SpamError` variable retains a reference to the "
"newly created exception class; this is intentional! Since the exception "
@@ -468,22 +462,22 @@ msgid ""
"unintended side effects."
msgstr ""
"Notez également que la variable :c:data:`SpamError` contient une référence à "
-"la nouvelle classe créée; ceci est intentionnel! Comme l'exception peut être "
-"retirée du module par un code externe, une référence à la classe est "
+"la nouvelle classe créée ; ceci est intentionnel ! Comme l'exception peut "
+"être retirée du module par un code externe, une référence à la classe est "
"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:"
-"`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur "
-"défaillant, le C code qui lève l'exception peut engendrer un rejet central "
-"ou des effets secondaires inattendus."
+"`SpamError` et devenir un pointeur défaillant. Si cela se produirait, le C "
+"code qui lève cette exception peut engendrer un *core dump* ou des effets "
+"secondaires inattendus."
-#: extending/extending.rst:247
+#: extending/extending.rst:245
msgid ""
"We discuss the use of ``PyMODINIT_FUNC`` as a function return type later in "
"this sample."
msgstr ""
"Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de "
-"retour de fonction plus tard dans cette section."
+"renvoi de fonction plus tard dans cette section."
-#: extending/extending.rst:250
+#: extending/extending.rst:248
msgid ""
"The :exc:`spam.error` exception can be raised in your extension module using "
"a call to :c:func:`PyErr_SetString` as shown below::"
@@ -491,11 +485,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 ::"
-#: extending/extending.rst:273
+#: extending/extending.rst:271
msgid "Back to the Example"
msgstr "Retour vers l'exemple"
-#: extending/extending.rst:275
+#: extending/extending.rst:273
msgid ""
"Going back to our example function, you should now be able to understand "
"this statement::"
@@ -503,8 +497,7 @@ msgstr ""
"En revenant vers notre fonction exemple, vous devriez maintenant être "
"capable de comprendre cette affirmation ::"
-#: extending/extending.rst:281
-#, fuzzy
+#: extending/extending.rst:279
msgid ""
"It returns ``NULL`` (the error indicator for functions returning object "
"pointers) if an error is detected in the argument list, relying on the "
@@ -514,16 +507,16 @@ msgid ""
"which it points (so in Standard C, the variable :c:data:`command` should "
"properly be declared as ``const char *command``)."
msgstr ""
-"Elle renvoie *NULL* (l'indicateur d'erreur pour les fonctions renvoyant des "
-"pointeurs d'objet) si une erreur est détectée dans la liste des arguments,se "
-"fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. Autrement,la "
-"valeur chaîne de l'argument a été copiée dans la variable locale :c:data:"
-"`command`. Il s'agit d'une attribution de pointeur et vous n'êtes pas "
-"supposés modifier la chaîne qui vers laquelle il pointe (donc en C Standard, "
-"la variable :c:data:`command` doit être clairement déclarée comme ``const "
-"char *command``)."
+"Elle renvoie ``NULL`` (l'indicateur d'erreur pour les fonctions renvoyant "
+"des pointeurs d'objet) si une erreur est détectée dans la liste des "
+"arguments, se fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. "
+"Autrement, la valeur chaîne de l'argument a été copiée dans la variable "
+"locale :c:data:`command`. Il s'agit d'une attribution de pointeur et vous "
+"n'êtes pas supposés modifier la chaîne vers laquelle il pointe (donc en C "
+"Standard, la variable :c:data:`command` doit être clairement déclarée comme "
+"``const char *command``)."
-#: extending/extending.rst:289
+#: extending/extending.rst:287
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`::"
@@ -532,7 +525,7 @@ msgstr ""
"en lui passant la chaîne que nous venons d'obtenir à partir de :c:func:"
"`PyArg_ParseTuple` ::"
-#: extending/extending.rst:294
+#: extending/extending.rst:292
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`. ::"
@@ -541,15 +534,15 @@ msgstr ""
"comme un objet Python. Cela est effectué par l'utilisation de la fonction :c:"
"func:`PyLong_FromLong`. ::"
-#: extending/extending.rst:299
+#: extending/extending.rst:297
msgid ""
"In this case, it will return an integer object. (Yes, even integers are "
"objects on the heap in Python!)"
msgstr ""
"Dans ce cas, elle renverra un objet entier. (Oui, même les entiers sont des "
-"objets dans le tas en Python!)"
+"objets dans le tas en Python !)"
-#: extending/extending.rst:302
+#: extending/extending.rst:300
msgid ""
"If you have a C function that returns no useful argument (a function "
"returning :c:type:`void`), the corresponding Python function must return "
@@ -561,23 +554,22 @@ msgstr ""
"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est "
"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::"
-#: extending/extending.rst:310
-#, fuzzy
+#: extending/extending.rst:308
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\" in most contexts, as we have seen."
msgstr ""
-":c:data:`Py_None` est le nom C pour l'objet spécial Python ``None``. C'est "
-"un authentique objet Python plutôt qu'un pointeur *NULL*, qui signifie "
-"qu'une erreur est survenue, dans la plupart des situations, comme nous "
-"l'avons vu."
+":c:data:`Py_None` est la dénomination en C pour l'objet spécial Python "
+"``None``. C'est un authentique objet Python plutôt qu'un pointeur ``NULL``, "
+"qui signifie qu'une erreur est survenue, dans la plupart des situations, "
+"comme nous l'avons vu."
-#: extending/extending.rst:318
+#: extending/extending.rst:316
msgid "The Module's Method Table and Initialization Function"
msgstr "La fonction d'initialisation et le tableau des méthodes du module"
-#: extending/extending.rst:320
+#: extending/extending.rst:318
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\"::"
@@ -586,7 +578,7 @@ msgstr ""
"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et "
"son adresse dans un « tableau des méthodes » ::"
-#: extending/extending.rst:331
+#: extending/extending.rst:329
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 "
@@ -600,7 +592,7 @@ msgstr ""
"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:"
"func:`PyArg_ParseTuple` est utilisée."
-#: extending/extending.rst:336
+#: extending/extending.rst:334
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:"
@@ -611,7 +603,7 @@ msgstr ""
"*via* :c:func:`PyArg_ParseTuple` ; des informations supplémentaires sont "
"fournies plus bas."
-#: extending/extending.rst:340
+#: extending/extending.rst:338
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 "
@@ -625,29 +617,37 @@ msgstr ""
"dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` "
"pour analyser les arguments d'une telle fonction."
-#: extending/extending.rst:346
+#: extending/extending.rst:344
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 ::"
-#: extending/extending.rst:357
+#: extending/extending.rst:355
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 ::"
-#: extending/extending.rst:368
+#: extending/extending.rst:366
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``."
-#: extending/extending.rst:372
+#: extending/extending.rst:370
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 "
@@ -660,16 +660,32 @@ msgid ""
"The init function must return the module object to its caller, so that it "
"then gets inserted into ``sys.modules``."
msgstr ""
+"Lorsque le programme Python importe le module :mod:`spam` pour la première "
+"fois, :c:func:`PyInit_spam` est appelé. (Voir ci-dessous pour les "
+"commentaires sur l'intégration en Python.) Il appelle :c:func:"
+"`PyModule_Create`, qui renvoie un objet module, et insère des objets "
+"fonction intégrés dans le module nouvellement créé en se basant sur la table "
+"(un tableau de structures :c:type:`PyMethodDef`) trouvée dans la définition "
+"du module. :c:func:`PyModule_Create` renvoie un pointeur vers l'objet module "
+"qu'il crée. Il peut s'interrompre avec une erreur fatale pour certaines "
+"erreurs, ou renvoyer ``NULL`` si le module n'a pas pu être initialisé de "
+"manière satisfaisante. La fonction `*init* doit renvoyer l'objet module à "
+"son appelant, afin qu'il soit ensuite inséré dans ``sys.modules``."
-#: extending/extending.rst:383
+#: extending/extending.rst:381
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 ::"
-#: extending/extending.rst:427
+#: extending/extending.rst:425
msgid ""
"Removing entries from ``sys.modules`` or importing compiled modules into "
"multiple interpreters within a process (or following a :c:func:`fork` "
@@ -677,27 +693,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."
-#: extending/extending.rst:433
+#: extending/extending.rst:431
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."
-#: extending/extending.rst:439
+#: extending/extending.rst:437
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`."
-#: extending/extending.rst:448
+#: extending/extending.rst:446
msgid "Compilation and Linkage"
-msgstr ""
+msgstr "Compilation et liaison"
-#: extending/extending.rst:450
+#: extending/extending.rst:448
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 "
@@ -707,7 +737,7 @@ msgid ""
"Windows (chapter :ref:`building-on-windows`) for more information about this."
msgstr ""
-#: extending/extending.rst:457
+#: extending/extending.rst:455
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 "
@@ -717,7 +747,7 @@ msgid ""
"line to the file :file:`Modules/Setup.local` describing your file:"
msgstr ""
-#: extending/extending.rst:468
+#: extending/extending.rst:466
msgid ""
"and rebuild the interpreter by running :program:`make` in the toplevel "
"directory. You can also run :program:`make` in the :file:`Modules/` "
@@ -726,17 +756,17 @@ msgid ""
"the :file:`Setup` file.)"
msgstr ""
-#: extending/extending.rst:474
+#: extending/extending.rst:472
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 ""
-#: extending/extending.rst:485
+#: extending/extending.rst:483
msgid "Calling Python Functions from C"
-msgstr ""
+msgstr "Appeler des fonctions Python en C"
-#: extending/extending.rst:487
+#: extending/extending.rst:485
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 "
@@ -747,7 +777,7 @@ msgid ""
"uses are also imaginable."
msgstr ""
-#: extending/extending.rst:495
+#: extending/extending.rst:493
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 "
@@ -756,7 +786,7 @@ msgid ""
"line option in :file:`Modules/main.c` from the Python source code.)"
msgstr ""
-#: extending/extending.rst:501
+#: extending/extending.rst:499
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 "
@@ -766,23 +796,32 @@ msgid ""
"function might be part of a module definition::"
msgstr ""
-#: extending/extending.rst:531
+#: extending/extending.rst:529
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`."
-#: extending/extending.rst:536
+#: extending/extending.rst:534
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`` "
"pointers (but note that *temp* will not be ``NULL`` in this context). More "
"info on them in section :ref:`refcounts`."
msgstr ""
+"Les macros :c:func:`Py_XINCREF` et :c:func:`Py_XDECREF` incrémentent/"
+"décrémentent le compteur des références d'un objet et sont sûres quant à la "
+"présence de pointeurs ``NULL`` (mais notez que *temp* ne sera pas ``NULL`` "
+"dans ce contexte). Plus d'informations à ce sujet dans la section :ref:"
+"`refcounts`."
-#: extending/extending.rst:543
+#: extending/extending.rst:541
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 "
@@ -794,7 +833,7 @@ msgid ""
"or more format codes between parentheses. For example::"
msgstr ""
-#: extending/extending.rst:563
+#: extending/extending.rst:561
msgid ""
":c:func:`PyObject_CallObject` returns a Python object pointer: this is the "
"return value of the Python function. :c:func:`PyObject_CallObject` is "
@@ -803,7 +842,7 @@ msgid ""
"`Py_DECREF`\\ -ed immediately after the :c:func:`PyObject_CallObject` call."
msgstr ""
-#: extending/extending.rst:570
+#: extending/extending.rst:568
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 "
@@ -812,7 +851,7 @@ msgid ""
"not interested in its value."
msgstr ""
-#: extending/extending.rst:576
+#: extending/extending.rst:574
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 "
@@ -822,8 +861,17 @@ msgid ""
"handle the exception. If this is not possible or desirable, the exception "
"should be cleared by calling :c:func:`PyErr_Clear`. For example::"
msgstr ""
+"Mais avant de le faire, il est important de vérifier que la valeur renvoyée "
+"n'est pas ``NULL``. Si c'est le cas, la fonction Python s'est terminée par "
+"la levée d'une exception. Si le code C qui a appelé :c:func:"
+"`PyObject_CallObject` est appelé depuis Python, il devrait maintenant "
+"renvoyer une indication d'erreur à son appelant Python, afin que "
+"l'interpréteur puisse afficher la pile d'appels, ou que le code Python "
+"appelant puisse gérer l'exception. Si cela n'est pas possible ou "
+"souhaitable, l'exception doit être effacée en appelant :c:func:"
+"`PyErr_Clear`. Par exemple ::"
-#: extending/extending.rst:589
+#: extending/extending.rst:587
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 "
@@ -834,8 +882,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 ::"
-#: extending/extending.rst:608
+#: extending/extending.rst:606
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 "
@@ -843,22 +901,26 @@ msgid ""
"checked."
msgstr ""
-#: extending/extending.rst:612
+#: extending/extending.rst:610
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. ::"
-#: extending/extending.rst:630
+#: extending/extending.rst:628
msgid "Extracting Parameters in Extension Functions"
-msgstr ""
+msgstr "Extraire des paramètres dans des fonctions d'extension"
-#: extending/extending.rst:634
+#: extending/extending.rst:632
msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::"
-msgstr ""
+msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::"
-#: extending/extending.rst:638
+#: extending/extending.rst:636
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, "
@@ -867,7 +929,7 @@ msgid ""
"whose type is determined by the format string."
msgstr ""
-#: extending/extending.rst:644
+#: extending/extending.rst:642
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 "
@@ -875,29 +937,30 @@ msgid ""
"probably crash or at least overwrite random bits in memory. So be careful!"
msgstr ""
-#: extending/extending.rst:649
+#: extending/extending.rst:647
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
msgstr ""
"Notez que n'importe quelles références sur un objet Python qui sont données "
-"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
-"compteur de références !"
+"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
+"compteur de références !"
-#: extending/extending.rst:652
+#: extending/extending.rst:650
msgid "Some example calls::"
-msgstr ""
+msgstr "Quelques exemples d'appels ::"
-#: extending/extending.rst:722
+#: extending/extending.rst:720
msgid "Keyword Parameters for Extension Functions"
-msgstr ""
+msgstr "Paramètres nommés pour des fonctions d'extension"
-#: extending/extending.rst:726
+#: extending/extending.rst:724
msgid ""
"The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::"
msgstr ""
+"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::"
-#: extending/extending.rst:731
+#: extending/extending.rst:729
msgid ""
"The *arg* and *format* parameters are identical to those of the :c:func:"
"`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of "
@@ -908,39 +971,60 @@ msgid ""
"`PyArg_ParseTupleAndKeywords` returns true, otherwise it returns false and "
"raises an appropriate exception."
msgstr ""
+"Les paramètres *arg* et *format* sont identiques à ceux de la fonction :c:"
+"func:`PyArg_ParseTuple`. Le paramètre *kwdict* est le dictionnaire de mots-"
+"clés reçu comme troisième paramètre du *runtime* Python. Le paramètre "
+"*kwlist* est une liste de chaînes de caractères terminée par ``NULL`` qui "
+"identifie les paramètres ; les noms sont mis en correspondance, de gauche à "
+"droite, avec les informations de type de *format*. En cas de succès du "
+"processus, :c:func:`PyArg_ParseTupleAndKeywords` renvoie vrai, sinon il "
+"renvoie faux et lève une exception appropriée."
-#: extending/extending.rst:741
+#: extending/extending.rst:739
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."
-#: extending/extending.rst:747
+#: extending/extending.rst:745
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) ::"
-#: extending/extending.rst:802
+#: extending/extending.rst:800
msgid "Building Arbitrary Values"
-msgstr ""
+msgstr "Créer des valeurs arbitraires"
-#: extending/extending.rst:804
+#: extending/extending.rst:802
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 ::"
-#: extending/extending.rst:809
+#: extending/extending.rst:807
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."
-#: extending/extending.rst:814
+#: extending/extending.rst:812
+#, fuzzy
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 "
@@ -951,17 +1035,21 @@ msgid ""
"that format unit. To force it to return a tuple of size 0 or one, "
"parenthesize the format string."
msgstr ""
+"Une différence par rapport à :c:func:`PyArg_ParseTuple` : alors que ce "
+"dernier nécessite que son premier argument soit un *n*-uplet (puisque les "
+"listes d'arguments Python sont toujours représentées par des *n*-uplets en "
-#: extending/extending.rst:822
+#: extending/extending.rst:820
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) :"
-#: extending/extending.rst:848
+#: extending/extending.rst:846
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
-#: extending/extending.rst:850
+#: extending/extending.rst:848
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 "
@@ -969,8 +1057,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."
-#: extending/extending.rst:856
+#: extending/extending.rst:854
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:"
@@ -985,7 +1079,7 @@ msgid ""
"crashes."
msgstr ""
-#: extending/extending.rst:867
+#: extending/extending.rst:865
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, "
@@ -1002,7 +1096,7 @@ msgid ""
"of errors."
msgstr ""
-#: extending/extending.rst:880
+#: extending/extending.rst:878
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. "
@@ -1012,8 +1106,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é."
-#: extending/extending.rst:888
+#: extending/extending.rst:886
msgid ""
"An alternative strategy is called :dfn:`automatic garbage collection`. "
"(Sometimes, reference counting is also referred to as a garbage collection "
@@ -1028,8 +1130,21 @@ msgid ""
"garbage collector will be available for C. Until then, we'll have to live "
"with reference counts."
msgstr ""
-
-#: extending/extending.rst:900
+"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."
+
+#: extending/extending.rst:898
msgid ""
"While Python uses the traditional reference counting implementation, it also "
"offers a cycle detector that works to detect reference cycles. This allows "
@@ -1042,8 +1157,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 ""
-
-#: extending/extending.rst:911
+"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."
+
+#: extending/extending.rst:909
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."
@@ -1055,11 +1182,11 @@ msgid ""
"detector is disabled in this way, the :mod:`gc` module will not be available."
msgstr ""
-#: extending/extending.rst:925
+#: extending/extending.rst:923
msgid "Reference Counting in Python"
-msgstr ""
+msgstr "Comptage de références en Python"
-#: extending/extending.rst:927
+#: extending/extending.rst:925
msgid ""
"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle "
"the incrementing and decrementing of the reference count. :c:func:"
@@ -1069,8 +1196,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."
-#: extending/extending.rst:934
+#: extending/extending.rst:932
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 "
@@ -1082,8 +1216,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."
-#: extending/extending.rst:943
+#: extending/extending.rst:941
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 "
@@ -1092,7 +1236,7 @@ msgid ""
"risks using freed memory and should be avoided completely [#]_."
msgstr ""
-#: extending/extending.rst:949
+#: extending/extending.rst:947
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 "
@@ -1102,8 +1246,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."
-#: extending/extending.rst:957
+#: extending/extending.rst:955
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 "
@@ -1112,18 +1264,22 @@ msgid ""
"properly, as well as the previous owner)."
msgstr ""
-#: extending/extending.rst:967
+#: extending/extending.rst:965
msgid "Ownership Rules"
-msgstr ""
+msgstr "Règles concernant la propriété de références"
-#: extending/extending.rst:969
+#: extending/extending.rst:967
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."
-#: extending/extending.rst:973
+#: extending/extending.rst:971
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 "
@@ -1134,7 +1290,7 @@ msgid ""
"reference to a cached item."
msgstr ""
-#: extending/extending.rst:981
+#: extending/extending.rst:979
msgid ""
"Many functions that extract objects from other objects also transfer "
"ownership with the reference, for instance :c:func:"
@@ -1145,14 +1301,14 @@ msgid ""
"list or dictionary."
msgstr ""
-#: extending/extending.rst:988
+#: extending/extending.rst:986
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 ""
-#: extending/extending.rst:992
+#: extending/extending.rst:990
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 "
@@ -1163,7 +1319,7 @@ msgid ""
"don't take over ownership --- they are \"normal.\")"
msgstr ""
-#: extending/extending.rst:1000
+#: extending/extending.rst:998
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 "
@@ -1172,40 +1328,50 @@ msgid ""
"turned into an owned reference by calling :c:func:`Py_INCREF`."
msgstr ""
-#: extending/extending.rst:1006
+#: extending/extending.rst:1004
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 ""
-#: extending/extending.rst:1014
+#: extending/extending.rst:1012
msgid "Thin Ice"
-msgstr ""
+msgstr "Terrain dangereux"
-#: extending/extending.rst:1016
+#: extending/extending.rst:1014
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."
-#: extending/extending.rst:1020
+#: extending/extending.rst:1018
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 ::"
-#: extending/extending.rst:1032
+#: extending/extending.rst:1030
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 !"
-#: extending/extending.rst:1036
+#: extending/extending.rst:1034
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 "
@@ -1214,8 +1380,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__`."
-#: extending/extending.rst:1043
+#: extending/extending.rst:1041
msgid ""
"Since it is written in Python, the :meth:`__del__` method can execute "
"arbitrary Python code. Could it perhaps do something to invalidate the "
@@ -1225,21 +1398,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``."
-#: extending/extending.rst:1051
+#: extending/extending.rst:1049
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 ""
-#: extending/extending.rst:1065
+#: extending/extending.rst:1063
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 ""
-#: extending/extending.rst:1069
+#: extending/extending.rst:1067
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 "
@@ -1251,12 +1431,22 @@ msgid ""
"complete. Obviously, the following function has the same problem as the "
"previous one::"
msgstr ""
-
-#: extending/extending.rst:1092
+"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 ::"
+
+#: extending/extending.rst:1090
msgid "NULL Pointers"
-msgstr ""
+msgstr "Pointeurs ``NULL``"
-#: extending/extending.rst:1094
+#: extending/extending.rst:1092
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 "
@@ -1267,22 +1457,38 @@ msgid ""
"``NULL``, there would be a lot of redundant tests and the code would run "
"more slowly."
msgstr ""
+"En général, les fonctions qui prennent des références d'objets comme "
+"arguments ne sont pas conçues pour recevoir des pointeurs ``NULL``, et si "
+"vous en donnez comme arguments, elles causeront une erreur de segmentation "
+"(ou provoqueront des *core dump* ultérieurs). Les fonctions qui renvoient "
+"des références d'objets renvoient généralement ``NULL`` uniquement pour "
+"indiquer qu'une exception s'est produite. La raison pour laquelle les "
+"arguments ``NULL`` ne sont pas testés est que les fonctions passent souvent "
+"les objets qu'elles reçoivent à d'autres fonctions, si chaque fonction "
+"devait tester pour ``NULL``, il y aurait beaucoup de tests redondants et le "
+"code s'exécuterait plus lentement."
-#: extending/extending.rst:1102
+#: extending/extending.rst:1100
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 ""
+"Il est préférable de tester la présence de ``NULL`` uniquement au début : "
+"lorsqu'un pointeur qui peut être ``NULL`` est reçu, par exemple, de :c:func:"
+"`malloc` ou d'une fonction qui peut lever une exception."
-#: extending/extending.rst:1106
+#: extending/extending.rst:1104
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 ""
+"Les macros :c:func:`Py_INCREF` et :c:func:`Py_DECREF` ne vérifient pas les "
+"pointeurs ``NULL``. Cependant, leurs variantes :c:func:`Py_XINCREF` et :c:"
+"func:`Py_XDECREF` le font."
-#: extending/extending.rst:1110
+#: extending/extending.rst:1108
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 "
@@ -1291,24 +1497,29 @@ msgid ""
"variants with ``NULL`` checking."
msgstr ""
-#: extending/extending.rst:1116
+#: extending/extending.rst:1114
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 ""
+"Le mécanisme d'appel de fonctions C garantit que la liste d'arguments passée "
+"aux fonctions C (``args`` dans les exemples) n'est jamais ``NULL``. En fait, "
+"il garantit qu'il s'agit toujours d'un n-uplet [#]_."
-#: extending/extending.rst:1120
+#: extending/extending.rst:1118
msgid ""
"It is a severe error to ever let a ``NULL`` pointer \"escape\" to the Python "
"user."
msgstr ""
+"C'est une grave erreur de laisser un pointeur ``NULL`` \"échapper\" à "
+"l'utilisateur Python."
-#: extending/extending.rst:1131
+#: extending/extending.rst:1129
msgid "Writing Extensions in C++"
-msgstr ""
+msgstr "Écrire des extensions en C++"
-#: extending/extending.rst:1133
+#: extending/extending.rst:1131
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 "
@@ -1320,12 +1531,23 @@ msgid ""
"`` --- they use this form already if the symbol ``__cplusplus`` is defined "
"(all recent C++ compilers define this symbol)."
msgstr ""
-
-#: extending/extending.rst:1147
+"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)."
+
+#: extending/extending.rst:1145
msgid "Providing a C API for an Extension Module"
-msgstr ""
+msgstr "Fournir une API en langage C pour un module d'extension"
-#: extending/extending.rst:1152
+#: extending/extending.rst:1150
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 "
@@ -1335,8 +1557,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."
-#: extending/extending.rst:1160
+#: extending/extending.rst:1158
msgid ""
"At first sight this seems easy: just write the functions (without declaring "
"them ``static``, of course), provide an appropriate header file, and "
@@ -1351,8 +1582,22 @@ msgid ""
"if symbols are globally visible, the module whose functions one wishes to "
"call might not have been loaded yet!"
msgstr ""
-
-#: extending/extending.rst:1172
+"À 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é !"
+
+#: extending/extending.rst:1170
msgid ""
"Portability therefore requires not to make any assumptions about symbol "
"visibility. This means that all symbols in extension modules should be "
@@ -1361,8 +1606,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."
-#: extending/extending.rst:1179
+#: extending/extending.rst:1177
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 "
@@ -1374,7 +1627,7 @@ msgid ""
"the Capsule."
msgstr ""
-#: extending/extending.rst:1187
+#: extending/extending.rst:1185
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 "
@@ -1383,8 +1636,16 @@ 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."
-#: extending/extending.rst:1193
+#: extending/extending.rst:1191
+#, fuzzy
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 "
@@ -1393,22 +1654,35 @@ msgid ""
"of runtime type-safety; there is no feasible way to tell one unnamed Capsule "
"from another."
msgstr ""
+"Quelle que soit la méthode que vous choisissez, il est important de bien "
+"nommer vos Capsules. La fonction :c:func:`PyCapsule_New` prend un paramètre "
+"nommé (:c:type:`const char \\*`). Vous êtes autorisé à passer un nom "
+"``NULL``, mais nous vous encourageons vivement à spécifier un nom. Des "
+"Capsules correctement nommées offrent un certain degré de sécurité "
+"concernant un éventuel conflit de types, car il n'y a pas de moyen de "
+"distinguer deux ou plusieurs Capsules non nommée entre elles."
-#: extending/extending.rst:1200
+#: extending/extending.rst:1198
msgid ""
"In particular, Capsules used to expose C APIs should be given a name "
"following this convention::"
msgstr ""
-#: extending/extending.rst:1205
+#: extending/extending.rst:1203
+#, fuzzy
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 "
"convention. This behavior gives C API users a high degree of certainty that "
"the Capsule they load contains the correct C API."
msgstr ""
+"La fonction communément utilisée :c:func:`PyCapsule_Import` permet de "
+"charger facilement une API C fournie via une Capsule, mais seulement si le "
+"nom de la Capsule correspond à cette convention. Ce comportement donne aux "
+"utilisateurs d'API C un degré élevé de certitude que la Capsule qu'ils "
+"chargent contient l'API C correcte."
-#: extending/extending.rst:1210
+#: extending/extending.rst:1208
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 "
@@ -1418,8 +1692,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."
-#: extending/extending.rst:1218
+#: extending/extending.rst:1216
msgid ""
"The exporting module is a modification of the :mod:`spam` module from "
"section :ref:`extending-simpleexample`. The function :func:`spam.system` "
@@ -1428,60 +1710,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."
-#: extending/extending.rst:1225
+#: extending/extending.rst:1223
msgid ""
"The function :c:func:`PySpam_System` is a plain C function, declared "
"``static`` like everything else::"
msgstr ""
-#: extending/extending.rst:1234
+#: extending/extending.rst:1232
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 ::"
-#: extending/extending.rst:1248
+#: extending/extending.rst:1246
msgid "In the beginning of the module, right after the line ::"
-msgstr ""
+msgstr "Au début du module, immédiatement après la ligne ::"
-#: extending/extending.rst:1252
+#: extending/extending.rst:1250
msgid "two more lines must be added::"
-msgstr ""
+msgstr "on doit ajouter deux lignes supplémentaires ::"
-#: extending/extending.rst:1257
+#: extending/extending.rst:1255
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 ::"
-#: extending/extending.rst:1287
+#: extending/extending.rst:1285
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 !"
-#: extending/extending.rst:1290
+#: extending/extending.rst:1288
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 ::"
-#: extending/extending.rst:1341
+#: extending/extending.rst:1339
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 ::"
-#: extending/extending.rst:1359
+#: extending/extending.rst:1357
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."
-#: extending/extending.rst:1363
+#: extending/extending.rst:1361
msgid ""
"Finally it should be mentioned that Capsules offer additional functionality, "
"which is especially useful for memory allocation and deallocation of the "
@@ -1490,32 +1794,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)."
-#: extending/extending.rst:1371
+#: extending/extending.rst:1369
msgid "Footnotes"
msgstr "Notes"
-#: extending/extending.rst:1372
+#: extending/extending.rst:1370
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."
-#: extending/extending.rst:1375
+#: extending/extending.rst:1373
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."
-#: extending/extending.rst:1378
+#: extending/extending.rst:1376
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 !"
-#: extending/extending.rst:1382
+#: extending/extending.rst:1380
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 dc42466e8d..9a3b9e9924 100644
--- a/extending/newtypes.po
+++ b/extending/newtypes.po
@@ -5,18 +5,19 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
+"PO-Revision-Date: 2021-02-07 20:03+0100\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.3\n"
#: extending/newtypes.rst:7
msgid "Defining Extension Types: Assorted Topics"
-msgstr ""
+msgstr "Définir les types d'extension : divers sujets"
#: extending/newtypes.rst:11
msgid ""
@@ -68,16 +69,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*."
#: extending/newtypes.rst:49
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."
#: extending/newtypes.rst:54
msgid "Finalization and De-allocation"
-msgstr ""
+msgstr "Finalisation et de-allocation"
#: extending/newtypes.rst:66
msgid ""
@@ -88,7 +94,13 @@ msgid ""
"of this function::"
msgstr ""
-#: extending/newtypes.rst:83
+#: extending/newtypes.rst:79
+msgid ""
+"If your type supports garbage collection, the destructor should call :c:func:"
+"`PyObject_GC_UnTrack` before clearing any member fields::"
+msgstr ""
+
+#: extending/newtypes.rst:95
msgid ""
"One important requirement of the deallocator function is that it leaves any "
"pending exceptions alone. This is important since deallocators are "
@@ -103,7 +115,7 @@ msgid ""
"c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` functions::"
msgstr ""
-#: extending/newtypes.rst:122
+#: extending/newtypes.rst:134
msgid ""
"There are limitations to what you can safely do in a deallocator function. "
"First, if your type supports garbage collection (using :c:member:"
@@ -116,43 +128,43 @@ msgid ""
"tp_dealloc` again, causing a double free and a crash."
msgstr ""
-#: extending/newtypes.rst:131
+#: extending/newtypes.rst:143
msgid ""
"Starting with Python 3.4, it is recommended not to put any complex "
"finalization code in :c:member:`~PyTypeObject.tp_dealloc`, and instead use "
"the new :c:member:`~PyTypeObject.tp_finalize` type method."
msgstr ""
-#: extending/newtypes.rst:136
+#: extending/newtypes.rst:148
msgid ":pep:`442` explains the new finalization scheme."
-msgstr ""
+msgstr ":pep:`442` explique le nouveau schéma de finalisation."
-#: extending/newtypes.rst:143
+#: extending/newtypes.rst:155
msgid "Object Presentation"
-msgstr ""
+msgstr "Présentation de l'objet"
-#: extending/newtypes.rst:145
+#: extending/newtypes.rst:157
msgid ""
"In Python, there are two ways to generate a textual representation of an "
"object: the :func:`repr` function, and the :func:`str` function. (The :func:"
"`print` function just calls :func:`str`.) These handlers are both optional."
msgstr ""
-#: extending/newtypes.rst:154
+#: extending/newtypes.rst:166
msgid ""
"The :c:member:`~PyTypeObject.tp_repr` handler should return a string object "
"containing a representation of the instance for which it is called. Here is "
"a simple example::"
msgstr ""
-#: extending/newtypes.rst:165
+#: extending/newtypes.rst:177
msgid ""
"If no :c:member:`~PyTypeObject.tp_repr` handler is specified, the "
"interpreter will supply a representation that uses the type's :c:member:"
"`~PyTypeObject.tp_name` and a uniquely-identifying value for the object."
msgstr ""
-#: extending/newtypes.rst:169
+#: extending/newtypes.rst:181
msgid ""
"The :c:member:`~PyTypeObject.tp_str` handler is to :func:`str` what the :c:"
"member:`~PyTypeObject.tp_repr` handler described above is to :func:`repr`; "
@@ -163,15 +175,15 @@ msgid ""
"the :c:member:`~PyTypeObject.tp_repr` handler is used instead."
msgstr ""
-#: extending/newtypes.rst:176
+#: extending/newtypes.rst:188
msgid "Here is a simple example::"
-msgstr ""
+msgstr "Voici un exemple simple ::"
-#: extending/newtypes.rst:188
+#: extending/newtypes.rst:200
msgid "Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs"
-#: extending/newtypes.rst:190
+#: extending/newtypes.rst:202
msgid ""
"For every object which can support attributes, the corresponding type must "
"provide the functions that control how the attributes are resolved. There "
@@ -181,7 +193,7 @@ msgid ""
"handler is ``NULL``."
msgstr ""
-#: extending/newtypes.rst:196
+#: extending/newtypes.rst:208
msgid ""
"Python supports two pairs of attribute handlers; a type that supports "
"attributes only needs to implement the functions for one pair. The "
@@ -190,7 +202,7 @@ msgid ""
"use whichever pair makes more sense for the implementation's convenience. ::"
msgstr ""
-#: extending/newtypes.rst:208
+#: extending/newtypes.rst:220
msgid ""
"If accessing attributes of an object is always a simple operation (this will "
"be explained shortly), there are generic implementations which can be used "
@@ -201,35 +213,37 @@ msgid ""
"mechanism that is available."
msgstr ""
-#: extending/newtypes.rst:219
+#: extending/newtypes.rst:231
msgid "Generic Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs génériques"
-#: extending/newtypes.rst:221
+#: extending/newtypes.rst:233
msgid ""
"Most extension types only use *simple* attributes. So, what makes the "
"attributes simple? There are only a couple of conditions that must be met:"
msgstr ""
-#: extending/newtypes.rst:224
+#: extending/newtypes.rst:236
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`."
-#: extending/newtypes.rst:227
+#: extending/newtypes.rst:239
msgid ""
"No special processing is needed to record that an attribute was looked up or "
"set, nor do actions need to be taken based on the value."
msgstr ""
-#: extending/newtypes.rst:230
+#: extending/newtypes.rst:242
msgid ""
"Note that this list does not place any restrictions on the values of the "
"attributes, when the values are computed, or how relevant data is stored."
msgstr ""
-#: extending/newtypes.rst:233
+#: extending/newtypes.rst:245
msgid ""
"When :c:func:`PyType_Ready` is called, it uses three tables referenced by "
"the type object to create :term:`descriptor`\\s which are placed in the "
@@ -241,18 +255,19 @@ msgid ""
"``NULL`` as well, allowing the base type to handle attributes."
msgstr ""
-#: extending/newtypes.rst:241
+#: extending/newtypes.rst:253
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 ::"
-#: extending/newtypes.rst:247
+#: extending/newtypes.rst:259
msgid ""
"If :c:member:`~PyTypeObject.tp_methods` is not ``NULL``, it must refer to an "
"array of :c:type:`PyMethodDef` structures. Each entry in the table is an "
"instance of this structure::"
msgstr ""
-#: extending/newtypes.rst:258
+#: extending/newtypes.rst:270
msgid ""
"One entry should be defined for each method provided by the type; no entries "
"are needed for methods inherited from a base type. One additional entry is "
@@ -260,7 +275,7 @@ msgid ""
"attr:`ml_name` field of the sentinel must be ``NULL``."
msgstr ""
-#: extending/newtypes.rst:263
+#: extending/newtypes.rst:275
msgid ""
"The second table is used to define attributes which map directly to data "
"stored in the instance. A variety of primitive C types are supported, and "
@@ -268,7 +283,7 @@ msgid ""
"defined as::"
msgstr ""
-#: extending/newtypes.rst:275
+#: extending/newtypes.rst:287
msgid ""
"For each entry in the table, a :term:`descriptor` will be constructed and "
"added to the type which will be able to extract a value from the instance "
@@ -279,53 +294,53 @@ msgid ""
"accessed."
msgstr ""
-#: extending/newtypes.rst:282
+#: extending/newtypes.rst:294
msgid ""
"The following flag constants are defined in :file:`structmember.h`; they may "
"be combined using bitwise-OR."
msgstr ""
-#: extending/newtypes.rst:286
+#: extending/newtypes.rst:298
msgid "Constant"
msgstr "Constante"
-#: extending/newtypes.rst:286
+#: extending/newtypes.rst:298
msgid "Meaning"
msgstr "Signification"
-#: extending/newtypes.rst:288
+#: extending/newtypes.rst:300
msgid ":const:`READONLY`"
-msgstr ""
+msgstr ":const:`READONLY`"
-#: extending/newtypes.rst:288
+#: extending/newtypes.rst:300
msgid "Never writable."
-msgstr ""
+msgstr "Jamais disponible en écriture."
-#: extending/newtypes.rst:290
+#: extending/newtypes.rst:302
msgid ":const:`READ_RESTRICTED`"
-msgstr ""
+msgstr ":const:`READ_RESTRICTED`"
-#: extending/newtypes.rst:290
+#: extending/newtypes.rst:302
msgid "Not readable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture, dans le mode restreint."
-#: extending/newtypes.rst:292
+#: extending/newtypes.rst:304
msgid ":const:`WRITE_RESTRICTED`"
-msgstr ""
+msgstr ":const:`WRITE_RESTRICTED`"
-#: extending/newtypes.rst:292
+#: extending/newtypes.rst:304
msgid "Not writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en écriture dans le mode restreint."
-#: extending/newtypes.rst:294
+#: extending/newtypes.rst:306
msgid ":const:`RESTRICTED`"
-msgstr ""
+msgstr ":const:`RESTRICTED`"
-#: extending/newtypes.rst:294
+#: extending/newtypes.rst:306
msgid "Not readable or writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture ou écriture, en mode restreint."
-#: extending/newtypes.rst:303
+#: extending/newtypes.rst:315
msgid ""
"An interesting advantage of using the :c:member:`~PyTypeObject.tp_members` "
"table to build descriptors that are used at runtime is that any attribute "
@@ -334,18 +349,25 @@ 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*."
-#: extending/newtypes.rst:309
+#: extending/newtypes.rst:321
msgid ""
"As with the :c:member:`~PyTypeObject.tp_methods` table, a sentinel entry "
"with a :attr:`name` value of ``NULL`` is required."
msgstr ""
-#: extending/newtypes.rst:323
+#: extending/newtypes.rst:335
msgid "Type-specific Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs de type spécifiques"
-#: extending/newtypes.rst:325
+#: extending/newtypes.rst:337
msgid ""
"For simplicity, only the :c:type:`char\\*` version will be demonstrated "
"here; the type of the name parameter is the only difference between the :c:"
@@ -356,18 +378,18 @@ msgid ""
"functionality, you'll understand what needs to be done."
msgstr ""
-#: extending/newtypes.rst:333
+#: extending/newtypes.rst:345
msgid ""
"The :c:member:`~PyTypeObject.tp_getattr` handler is called when the object "
"requires an attribute look-up. It is called in the same situations where "
"the :meth:`__getattr__` method of a class would be called."
msgstr ""
-#: extending/newtypes.rst:337
+#: extending/newtypes.rst:349
msgid "Here is an example::"
msgstr "Voici un exemple ::"
-#: extending/newtypes.rst:353
+#: extending/newtypes.rst:365
msgid ""
"The :c:member:`~PyTypeObject.tp_setattr` handler is called when the :meth:"
"`__setattr__` or :meth:`__delattr__` method of a class instance would be "
@@ -377,11 +399,11 @@ msgid ""
"should be set to ``NULL``. ::"
msgstr ""
-#: extending/newtypes.rst:367
+#: extending/newtypes.rst:379
msgid "Object Comparison"
-msgstr ""
+msgstr "Comparaison des objets"
-#: extending/newtypes.rst:373
+#: extending/newtypes.rst:385
msgid ""
"The :c:member:`~PyTypeObject.tp_richcompare` handler is called when "
"comparisons are needed. It is analogous to the :ref:`rich comparison "
@@ -389,34 +411,34 @@ msgid ""
"`PyObject_RichCompare` and :c:func:`PyObject_RichCompareBool`."
msgstr ""
-#: extending/newtypes.rst:378
+#: extending/newtypes.rst:390
msgid ""
"This function is called with two Python objects and the operator as "
"arguments, where the operator is one of ``Py_EQ``, ``Py_NE``, ``Py_LE``, "
-"``Py_GT``, ``Py_LT`` or ``Py_GT``. It should compare the two objects with "
+"``Py_GE``, ``Py_LT`` or ``Py_GT``. It should compare the two objects with "
"respect to the specified operator and return ``Py_True`` or ``Py_False`` if "
"the comparison is successful, ``Py_NotImplemented`` to indicate that "
"comparison is not implemented and the other object's comparison method "
"should be tried, or ``NULL`` if an exception was set."
msgstr ""
-#: extending/newtypes.rst:386
+#: extending/newtypes.rst:398
msgid ""
"Here is a sample implementation, for a datatype that is considered equal if "
"the size of an internal pointer is equal::"
msgstr ""
-#: extending/newtypes.rst:416
+#: extending/newtypes.rst:428
msgid "Abstract Protocol Support"
-msgstr ""
+msgstr "Support pour le protocole abstrait"
-#: extending/newtypes.rst:418
+#: extending/newtypes.rst:430
msgid ""
"Python supports a variety of *abstract* 'protocols;' the specific interfaces "
"provided to use these interfaces are documented in :ref:`abstract`."
msgstr ""
-#: extending/newtypes.rst:422
+#: extending/newtypes.rst:434
msgid ""
"A number of these abstract interfaces were defined early in the development "
"of the Python implementation. In particular, the number, mapping, and "
@@ -431,7 +453,7 @@ msgid ""
"slot, but a slot may still be unfilled.) ::"
msgstr ""
-#: extending/newtypes.rst:437
+#: extending/newtypes.rst:449
msgid ""
"If you wish your object to be able to act like a number, a sequence, or a "
"mapping object, then you place the address of a structure that implements "
@@ -442,13 +464,13 @@ msgid ""
"distribution. ::"
msgstr ""
-#: extending/newtypes.rst:446
+#: extending/newtypes.rst:458
msgid ""
"This function, if you choose to provide it, should return a hash number for "
"an instance of your data type. Here is a simple example::"
msgstr ""
-#: extending/newtypes.rst:459
+#: extending/newtypes.rst:471
msgid ""
":c:type:`Py_hash_t` is a signed integer type with a platform-varying width. "
"Returning ``-1`` from :c:member:`~PyTypeObject.tp_hash` indicates an error, "
@@ -456,7 +478,7 @@ msgid ""
"computation is successful, as seen above."
msgstr ""
-#: extending/newtypes.rst:468
+#: extending/newtypes.rst:480
msgid ""
"This function is called when an instance of your data type is \"called\", "
"for example, if ``obj1`` is an instance of your data type and the Python "
@@ -464,23 +486,23 @@ msgid ""
"handler is invoked."
msgstr ""
-#: extending/newtypes.rst:472
+#: extending/newtypes.rst:484
msgid "This function takes three arguments:"
-msgstr ""
+msgstr "Cette fonction prend trois arguments :"
-#: extending/newtypes.rst:474
+#: extending/newtypes.rst:486
msgid ""
"*self* is the instance of the data type which is the subject of the call. If "
"the call is ``obj1('hello')``, then *self* is ``obj1``."
msgstr ""
-#: extending/newtypes.rst:477
+#: extending/newtypes.rst:489
msgid ""
"*args* is a tuple containing the arguments to the call. You can use :c:func:"
"`PyArg_ParseTuple` to extract the arguments."
msgstr ""
-#: extending/newtypes.rst:480
+#: extending/newtypes.rst:492
msgid ""
"*kwds* is a dictionary of keyword arguments that were passed. If this is non-"
"``NULL`` and you support keyword arguments, use :c:func:"
@@ -489,11 +511,11 @@ msgid ""
"`TypeError` with a message saying that keyword arguments are not supported."
msgstr ""
-#: extending/newtypes.rst:486
+#: extending/newtypes.rst:498
msgid "Here is a toy ``tp_call`` implementation::"
-msgstr ""
+msgstr "Ceci est une implémentation ``tp_call`` très simple ::"
-#: extending/newtypes.rst:512
+#: extending/newtypes.rst:524
msgid ""
"These functions provide support for the iterator protocol. Both handlers "
"take exactly one parameter, the instance for which they are being called, "
@@ -504,21 +526,28 @@ msgid ""
"__next__` method."
msgstr ""
-#: extending/newtypes.rst:519
+#: extending/newtypes.rst:531
msgid ""
"Any :term:`iterable` object must implement the :c:member:`~PyTypeObject."
"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* :"
-#: extending/newtypes.rst:523
+#: extending/newtypes.rst:535
msgid ""
"For collections (such as lists and tuples) which can support multiple "
"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`."
-#: extending/newtypes.rst:526
+#: extending/newtypes.rst:538
msgid ""
"Objects which can only be iterated over once (usually due to side effects of "
"iteration, such as file objects) can implement :c:member:`~PyTypeObject."
@@ -526,7 +555,7 @@ msgid ""
"therefore implement the :c:member:`~PyTypeObject.tp_iternext` handler."
msgstr ""
-#: extending/newtypes.rst:531
+#: extending/newtypes.rst:543
msgid ""
"Any :term:`iterator` object should implement both :c:member:`~PyTypeObject."
"tp_iter` and :c:member:`~PyTypeObject.tp_iternext`. An iterator's :c:member:"
@@ -541,64 +570,84 @@ msgid ""
"``NULL``."
msgstr ""
-#: extending/newtypes.rst:547
+#: extending/newtypes.rst:559
msgid "Weak Reference Support"
-msgstr ""
+msgstr "Prise en charge de la référence faible"
-#: extending/newtypes.rst:549
+#: extending/newtypes.rst:561
msgid ""
"One of the goals of Python's weak reference implementation is to allow any "
"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."
-#: extending/newtypes.rst:554
+#: extending/newtypes.rst:566
msgid "Documentation for the :mod:`weakref` module."
-msgstr ""
+msgstr "Documentation pour le module :mod:`weakref`."
-#: extending/newtypes.rst:556
+#: extending/newtypes.rst:568
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 :"
-#: extending/newtypes.rst:558
+#: extending/newtypes.rst:570
msgid ""
"Include a :c:type:`PyObject\\*` field in the C object structure dedicated to "
"the weak reference mechanism. The object's constructor should leave it "
"``NULL`` (which is automatic when using the default :c:member:`~PyTypeObject."
"tp_alloc`)."
msgstr ""
+"Inclure un champ :c:type:`PyObject\\*` dans la structure d'objet C dédiée au "
+"mécanisme de référence faible. Le constructeur de l'objet doit le laisser à "
+"la valeur ``NULL`` (ce qui est automatique lorsque l'on utilise le champ par "
+"défaut :c:member:`~PyTypeObject.tp_alloc`)."
-#: extending/newtypes.rst:563
+#: extending/newtypes.rst:575
msgid ""
"Set the :c:member:`~PyTypeObject.tp_weaklistoffset` type member to the "
"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."
-#: extending/newtypes.rst:567
+#: extending/newtypes.rst:579
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 ::"
-#: extending/newtypes.rst:575
+#: extending/newtypes.rst:587
msgid "And the corresponding member in the statically-declared type object::"
msgstr ""
+"Et le membre correspondant dans l'objet de type déclaré statiquement ::"
-#: extending/newtypes.rst:583
+#: extending/newtypes.rst:595
msgid ""
"The only further addition is that ``tp_dealloc`` needs to clear any weak "
"references (by calling :c:func:`PyObject_ClearWeakRefs`) if the field is non-"
"``NULL``::"
msgstr ""
+"Le seul ajout supplémentaire est que ``tp_dealloc`` doit effacer toute "
+"référence faible (en appelant :c:func:`PyObject_ClearWeakRefs`) si le champ "
+"est non ``NULL`` ::"
-#: extending/newtypes.rst:599
+#: extending/newtypes.rst:611
msgid "More Suggestions"
-msgstr ""
+msgstr "Plus de suggestions"
-#: extending/newtypes.rst:601
+#: extending/newtypes.rst:613
msgid ""
"In order to learn how to implement any specific method for your new data "
"type, get the :term:`CPython` source code. Go to the :file:`Objects` "
@@ -606,27 +655,37 @@ 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."
-#: extending/newtypes.rst:607
+#: extending/newtypes.rst:619
msgid ""
"When you need to verify that an object is a concrete instance of the type "
"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 ::"
-#: extending/newtypes.rst:618
+#: extending/newtypes.rst:630
msgid "Download CPython source releases."
-msgstr ""
+msgstr "Télécharger les versions sources de *CPython*."
-#: extending/newtypes.rst:618
+#: extending/newtypes.rst:630
msgid "https://www.python.org/downloads/source/"
-msgstr ""
+msgstr "https://www.python.org/downloads/source/"
-#: extending/newtypes.rst:620
+#: extending/newtypes.rst:632
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*."
-#: extending/newtypes.rst:621
+#: extending/newtypes.rst:633
msgid "https://github.com/python/cpython"
-msgstr ""
+msgstr "https://github.com/python/cpython"
diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po
index 13887d06bb..fe680a9ed5 100644
--- a/extending/newtypes_tutorial.po
+++ b/extending/newtypes_tutorial.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2018-06-17 10:15+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -16,7 +16,7 @@ msgstr ""
#: extending/newtypes_tutorial.rst:7
msgid "Defining Extension Types: Tutorial"
-msgstr ""
+msgstr "Tutoriel : définir des types dans des extensions"
#: extending/newtypes_tutorial.rst:14
msgid ""
@@ -26,10 +26,15 @@ msgid ""
"pattern, but there are some details that you need to understand before you "
"can get started. This document is a gentle introduction to the topic."
msgstr ""
+"Python permet à l'auteur d'un module d'extension C de définir de nouveaux "
+"types qui peuvent être manipulés depuis du code Python, à la manière des "
+"types natifs :class:`str` et :class:`list`. Les implémentations de tous les "
+"types d'extension ont des similarités, mais quelques subtilités doivent être "
+"abordées avant de commencer."
#: extending/newtypes_tutorial.rst:24
msgid "The Basics"
-msgstr ""
+msgstr "Les bases"
#: extending/newtypes_tutorial.rst:26
msgid ""
@@ -48,6 +53,8 @@ msgid ""
"So, if you want to define a new extension type, you need to create a new "
"type object."
msgstr ""
+"Donc, pour définir un nouveau type dans une extension, vous devez créer un "
+"nouvel objet type."
#: extending/newtypes_tutorial.rst:38
msgid ""
@@ -55,6 +62,9 @@ msgid ""
"but complete, module that defines a new type named :class:`Custom` inside a "
"C extension module :mod:`custom`:"
msgstr ""
+"Ce genre de chose ne s'explique correctement qu'avec des exemples, voici "
+"donc un module minimaliste mais suffisant qui définit un nouveau type nommé :"
+"class:`Custom` dans le module d'extension :mod:`custom` :"
#: extending/newtypes_tutorial.rst:43
msgid ""
@@ -63,18 +73,27 @@ msgid ""
"allows defining heap-allocated extension types using the :c:func:"
"`PyType_FromSpec` function, which isn't covered in this tutorial."
msgstr ""
+"Ce qui est montré ici est la manière traditionnelle de définir des types "
+"d'extension *statiques*, et cela convient dans la majorité des cas. L'API C "
+"permet aussi de définir des types alloués sur le tas, via la fonction :c:"
+"func:`PyType_FromSpec`, mais ce n'est pas couvert par ce tutoriel."
#: extending/newtypes_tutorial.rst:50
msgid ""
"Now that's quite a bit to take in at once, but hopefully bits will seem "
"familiar from the previous chapter. This file defines three things:"
msgstr ""
+"C'est un peu long, mais vous devez déjà reconnaître quelques morceaux "
+"expliqués au chapitre précédent. Ce fichier définit trois choses :"
#: extending/newtypes_tutorial.rst:53
msgid ""
"What a :class:`Custom` **object** contains: this is the ``CustomObject`` "
"struct, which is allocated once for each :class:`Custom` instance."
msgstr ""
+"Ce qu'un **objet** :class:`Custom` contient : c'est la structure "
+"``CustomObject``, qui est allouée une fois pour chaque instance de :class:"
+"`Custom`."
#: extending/newtypes_tutorial.rst:55
msgid ""
@@ -82,24 +101,29 @@ msgid ""
"which defines a set of flags and function pointers that the interpreter "
"inspects when specific operations are requested."
msgstr ""
+"Comment le **type** :class:`Custom` se comporte : c'est la structure "
+"``CustomType``, qui définit l'ensemble des options et pointeurs de fonction "
+"utilisés par l'interpréteur."
#: extending/newtypes_tutorial.rst:58
msgid ""
"How to initialize the :mod:`custom` module: this is the ``PyInit_custom`` "
"function and the associated ``custommodule`` struct."
msgstr ""
+"Comment initialiser le module :mod:`custom` : c'est la fonction "
+"``PyInit_custom`` et la structure associée ``custommodule``."
#: extending/newtypes_tutorial.rst:61
msgid "The first bit is::"
-msgstr ""
+msgstr "Commençons par ::"
#: extending/newtypes_tutorial.rst:67
msgid ""
"This is what a Custom object will contain. ``PyObject_HEAD`` is mandatory "
"at the start of each object struct and defines a field called ``ob_base`` of "
"type :c:type:`PyObject`, containing a pointer to a type object and a "
-"reference count (these can be accessed using the macros :c:macro:`Py_REFCNT` "
-"and :c:macro:`Py_TYPE` respectively). The reason for the macro is to "
+"reference count (these can be accessed using the macros :c:macro:`Py_TYPE` "
+"and :c:macro:`Py_REFCNT` respectively). The reason for the macro is to "
"abstract away the layout and to enable additional fields in debug builds."
msgstr ""
@@ -108,6 +132,9 @@ msgid ""
"There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be "
"wary of adding one by accident: some compilers will complain."
msgstr ""
+"Il n'y a pas de point-virgule après la macro :c:macro:`PyObject_HEAD`. "
+"Attention à ne pas l'ajouter par accident : certains compilateurs pourraient "
+"s'en plaindre."
#: extending/newtypes_tutorial.rst:78
msgid ""
@@ -115,10 +142,13 @@ msgid ""
"``PyObject_HEAD`` boilerplate; for example, here is the definition for "
"standard Python floats::"
msgstr ""
+"Bien sûr, les objets ajoutent généralement des données supplémentaires après "
+"l'entête standard ``PyObject_HEAD``. Par exemple voici la définition du type "
+"standard Python ``float`` ::"
#: extending/newtypes_tutorial.rst:87
msgid "The second bit is the definition of the type object. ::"
-msgstr ""
+msgstr "La deuxième partie est la définition de l'objet type ::"
#: extending/newtypes_tutorial.rst:100
msgid ""
@@ -126,6 +156,10 @@ msgid ""
"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
"also to avoid caring about the fields' declaration order."
msgstr ""
+"Nous recommandons d'utiliser la syntaxe d'initialisation nommée (C99) pour "
+"remplir la structure, comme ci-dessus, afin d'éviter d'avoir à lister les "
+"champs de :c:type:`PyTypeObject` dont vous n'avez pas besoin, et de ne pas "
+"vous soucier de leur ordre."
#: extending/newtypes_tutorial.rst:104
msgid ""
@@ -134,22 +168,31 @@ msgid ""
"fields will be filled with zeros by the C compiler, and it's common practice "
"to not specify them explicitly unless you need them."
msgstr ""
+"La définition de :c:type:`PyTypeObject` dans :file:`object.h` contient en "
+"fait bien plus de :ref:`champs ` que la définition ci-dessus. "
+"Les champs restants sont mis à zéro par le compilateur C, et c'est une "
+"pratique répandue de ne pas spécifier les champs dont vous n'avez pas besoin."
#: extending/newtypes_tutorial.rst:109
msgid "We're going to pick it apart, one field at a time::"
-msgstr ""
+msgstr "Regardons les champs de cette structure, un par un ::"
#: extending/newtypes_tutorial.rst:113
msgid ""
"This line is mandatory boilerplate to initialize the ``ob_base`` field "
"mentioned above. ::"
msgstr ""
+"Cette ligne, obligatoire, initialise le champ ``ob_base`` mentionné "
+"précédemment."
#: 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 ""
+"C'est le nom de notre type. Il apparaît dans la représentation textuelle par "
+"défaut de nos objets, ainsi que dans quelques messages d'erreur, par "
+"exemple :"
#: extending/newtypes_tutorial.rst:128
msgid ""
@@ -159,6 +202,11 @@ msgid ""
"`custom.Custom`. Using the real dotted import path is important to make your "
"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
msgstr ""
+"Notez que le nom comporte un point : il inclut le nom du module et le nom du "
+"type. Dans ce cas le module est :mod:`custom`, et le type est :class:"
+"`Custom`, donc nous donnons comme nom :class:`custom.Custom`. Nommer "
+"correctement son type, avec le point, est important pour le rendre "
+"compatible avec :mod:`pydoc` et :mod:`pickle`. ::"
#: extending/newtypes_tutorial.rst:137
msgid ""
@@ -166,6 +214,10 @@ msgid ""
"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
"used for variable-sized objects and should otherwise be zero."
msgstr ""
+"C'est pour que Python sache combien de mémoire allouer à la création d'une "
+"nouvelle instance de :class:`Custom`. :c:member:`~PyTypeObject.tp_itemsize` "
+"n'est utilisé que pour les objets de taille variable, sinon il doit rester à "
+"zéro."
#: extending/newtypes_tutorial.rst:143
msgid ""
@@ -180,10 +232,22 @@ msgid ""
"type will be :class:`object`, or else you will be adding data members to "
"your base type, and therefore increasing its size."
msgstr ""
+"Si vous voulez qu'une classe en Python puisse hériter de votre type, et que "
+"votre type a le même :c:member:`~PyTypeObject.tp_basicsize` que son parent, "
+"vous rencontrerez des problèmes avec l'héritage multiple. Une sous-classe "
+"Python de votre type devra lister votre type en premier dans son :attr:"
+"`~class.__bases__`, sans quoi elle ne sera pas capable d'appeler la méthode :"
+"meth:`__new__` de votre type sans erreur. Vous pouvez éviter ce problème en "
+"vous assurant que votre type a un :c:member:`~PyTypeObject.tp_basicsize` "
+"plus grand que son parent. La plupart du temps ce sera vrai (soit son parent "
+"sera :class:`object`, soit vous ajouterez des attributs à votre type, "
+"augmentant ainsi sa taille)."
#: extending/newtypes_tutorial.rst:153
msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
msgstr ""
+"On utilise la constante :const:`Py_TPFLAGS_DEFAULT` comme seule option de "
+"type. ::"
#: extending/newtypes_tutorial.rst:157
msgid ""
@@ -191,11 +255,17 @@ msgid ""
"the members defined until at least Python 3.3. If you need further members, "
"you will need to OR the corresponding flags."
msgstr ""
+"Chaque type doit inclure cette constante dans ses options : elle active tous "
+"les membres définis jusqu'à au moins Python 3.3. Si vous avez besoin de plus "
+"de membres, vous pouvez la combiner à d'autres constantes avec un *ou* "
+"binaire."
#: extending/newtypes_tutorial.rst:161
msgid ""
"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
msgstr ""
+"On fournit une *docstring* pour ce type via le membre :c:member:"
+"`~PyTypeObject.tp_doc`. ::"
#: extending/newtypes_tutorial.rst:165
msgid ""
@@ -205,12 +275,19 @@ msgid ""
"use the default implementation provided by the API function :c:func:"
"`PyType_GenericNew`. ::"
msgstr ""
+"Pour permettre la création d'une instance, nous devons fournir un *handler* :"
+"c:member:`~PyTypeObject.tp_new`, qui est l'équivalent de la méthode Python :"
+"meth:`__new__`, mais elle a besoin d'être spécifiée explicitement. Dans ce "
+"cas, on se contente de l'implémentation par défaut fournie par la fonction :"
+"c:func:`PyType_GenericNew` de l'API."
#: extending/newtypes_tutorial.rst:172
msgid ""
"Everything else in the file should be familiar, except for some code in :c:"
"func:`PyInit_custom`::"
msgstr ""
+"Le reste du fichier doit vous être familier, en dehors du code de :c:func:"
+"`PyInit_custom` ::"
#: extending/newtypes_tutorial.rst:178
msgid ""
@@ -218,18 +295,25 @@ msgid ""
"the appropriate default values, including :attr:`ob_type` that we initially "
"set to ``NULL``. ::"
msgstr ""
+"Il initialise le type :class:`Custom`, en assignant quelques membres à leurs "
+"valeurs par défaut, tel que :attr:`ob_type` qui valait initialement "
+"``NULL``. ::"
#: extending/newtypes_tutorial.rst:189
msgid ""
"This adds the type to the module dictionary. This allows us to create :"
"class:`Custom` instances by calling the :class:`Custom` class:"
msgstr ""
+"Ici on ajoute le type au dictionnaire du module. Cela permet de créer une "
+"instance de :class:`Custom` en appelant la classe :class:`Custom` :"
#: extending/newtypes_tutorial.rst:197
msgid ""
"That's it! All that remains is to build it; put the above code in a file "
"called :file:`custom.c` and:"
msgstr ""
+"C'est tout ! Il ne reste plus qu'à compiler, placez le code ci-dessus dans "
+"un fichier :file:`custom.c` et :"
#: extending/newtypes_tutorial.rst:206
msgid "in a file called :file:`setup.py`; then typing"
diff --git a/extending/windows.po b/extending/windows.po
index 5ca7f168dd..f7f97af19d 100644
--- a/extending/windows.po
+++ b/extending/windows.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-06-28 15:18+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -215,16 +215,16 @@ msgid "Using DLLs in Practice"
msgstr "Utiliser les DLL en pratique"
#: extending/windows.rst:108
+#, fuzzy
msgid ""
"Windows Python is built in Microsoft Visual C++; using other compilers may "
-"or may not work (though Borland seems to). The rest of this section is MSVC+"
-"+ specific."
+"or may not work. The rest of this section is MSVC++ specific."
msgstr ""
"Le Python de Windows est construit en Microsoft Visual C++ ; utiliser "
"d'autres compilateurs pourrait fonctionner, ou pas (cependant Borland a "
"l'air de fonctionner). Le reste de cette section est spécifique à MSVC++."
-#: extending/windows.rst:112
+#: extending/windows.rst:111
msgid ""
"When creating DLLs in Windows, you must pass :file:`pythonXY.lib` to the "
"linker. To build two DLLs, spam and ni (which uses C functions found in "
@@ -234,7 +234,7 @@ msgstr ""
"`pythonXY.lib` au lieur. Pour construire deux DLL, spam et ni (qui utilisent "
"des fonctions C trouvées dans spam), vous pouvez utiliser ces commandes ::"
-#: extending/windows.rst:119
+#: extending/windows.rst:118
msgid ""
"The first command created three files: :file:`spam.obj`, :file:`spam.dll` "
"and :file:`spam.lib`. :file:`Spam.dll` does not contain any Python "
@@ -246,7 +246,7 @@ msgstr ""
"Python (telles que :c:func:`PyArg_ParseTuple`), mais il sait comment trouver "
"le code Python grâce à :file:`pythonXY.lib`."
-#: extending/windows.rst:124
+#: extending/windows.rst:123
msgid ""
"The second command created :file:`ni.dll` (and :file:`.obj` and :file:`."
"lib`), which knows how to find the necessary functions from spam, and also "
@@ -256,7 +256,7 @@ msgstr ""
"qui sait comment trouver les fonctions nécessaires dans spam, ainsi qu'à "
"partir de l'exécutable Python."
-#: extending/windows.rst:128
+#: extending/windows.rst:127
msgid ""
"Not every identifier is exported to the lookup table. If you want any other "
"modules (including Python) to be able to see your identifiers, you have to "
@@ -269,7 +269,7 @@ msgstr ""
"``void _declspec(dllexport) initspam(void)`` ou ``PyObject "
"_declspec(dllexport) *NiGetSpamData(void)``."
-#: extending/windows.rst:133
+#: extending/windows.rst:132
msgid ""
"Developer Studio will throw in a lot of import libraries that you do not "
"really need, adding about 100K to your executable. To get rid of them, use "
diff --git a/faq/design.po b/faq/design.po
index 46b1ce7415..fa16d2c8c7 100644
--- a/faq/design.po
+++ b/faq/design.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-11-07 16:24+0100\n"
"Last-Translator: Mindiell \n"
"Language-Team: FRENCH \n"
@@ -521,7 +521,7 @@ msgstr ""
"possibilités, vous pouvez créer un dictionnaire faisant correspondre des "
"valeurs à des fonctions à appeler. Par exemple ::"
-#: faq/design.rst:280
+#: faq/design.rst:277
msgid ""
"For calling methods on objects, you can simplify yet further by using the :"
"func:`getattr` built-in to retrieve methods with a particular name::"
@@ -530,7 +530,7 @@ msgstr ""
"en utilisant la fonction native :func:`getattr` pour récupérer les méthodes "
"avec un nom donné ::"
-#: faq/design.rst:292
+#: faq/design.rst:289
msgid ""
"It's suggested that you use a prefix for the method names, such as "
"``visit_`` in this example. Without such a prefix, if values are coming "
@@ -542,7 +542,7 @@ msgstr ""
"proviennent d'une source non fiable, un attaquant serait en mesure d'appeler "
"n'importe quelle méthode sur votre objet."
-#: faq/design.rst:298
+#: faq/design.rst:295
msgid ""
"Can't you emulate threads in the interpreter instead of relying on an OS-"
"specific thread implementation?"
@@ -550,7 +550,7 @@ msgstr ""
"Est-il possible d'émuler des fils d'exécution dans l'interpréteur plutôt que "
"se baser sur les implémentations spécifique aux OS ?"
-#: faq/design.rst:300
+#: faq/design.rst:297
msgid ""
"Answer 1: Unfortunately, the interpreter pushes at least one C stack frame "
"for each Python stack frame. Also, extensions can call back into Python at "
@@ -563,7 +563,7 @@ msgstr ""
"conséquent, une implémentation complète des fils d'exécution nécessiterai un "
"support complet en C."
-#: faq/design.rst:305
+#: faq/design.rst:302
msgid ""
"Answer 2: Fortunately, there is `Stackless Python `_, which has a completely redesigned "
@@ -573,12 +573,12 @@ msgstr ""
"stackless-dev/stackless/wiki>`_, qui a complètement ré-architecturé la "
"boucle principale de l'interpréteur afin de ne pas utiliser la pile C."
-#: faq/design.rst:310
+#: faq/design.rst:307
msgid "Why can't lambda expressions contain statements?"
msgstr ""
"Pourquoi les expressions lambda ne peuvent pas contenir d'instructions ?"
-#: faq/design.rst:312
+#: faq/design.rst:309
msgid ""
"Python lambda expressions cannot contain statements because Python's "
"syntactic framework can't handle statements nested inside expressions. "
@@ -594,7 +594,7 @@ msgstr ""
"Python sont seulement une notation concise si vous êtes trop paresseux pour "
"définir une fonction."
-#: faq/design.rst:318
+#: faq/design.rst:315
msgid ""
"Functions are already first class objects in Python, and can be declared in "
"a local scope. Therefore the only advantage of using a lambda instead of a "
@@ -610,12 +610,12 @@ msgstr ""
"variable locale à laquelle est affecté l'objet fonction (qui est exactement "
"le même type d'objet qui donne une expression lambda) !"
-#: faq/design.rst:326
+#: faq/design.rst:323
msgid "Can Python be compiled to machine code, C or some other language?"
msgstr ""
"Python peut-il être compilé en code machine, en C ou dans un autre langage ?"
-#: faq/design.rst:328
+#: faq/design.rst:325
msgid ""
"`Cython `_ compiles a modified version of Python with "
"optional annotations into C extensions. `Nuitka `_ "
@@ -629,11 +629,11 @@ msgstr ""
"langage Python entièrement. Pour compiler en Java, vous pouvez regarder `VOC "
"`_."
-#: faq/design.rst:336
+#: faq/design.rst:333
msgid "How does Python manage memory?"
msgstr "Comment Python gère la mémoire ?"
-#: faq/design.rst:338
+#: faq/design.rst:335
msgid ""
"The details of Python memory management depend on the implementation. The "
"standard implementation of Python, :term:`CPython`, uses reference counting "
@@ -652,7 +652,7 @@ msgstr ""
"module :mod:`gc` fournit des fonctions pour lancer le ramasse-miettes, "
"d'obtenir des statistiques de débogage et ajuster ses paramètres."
-#: faq/design.rst:346
+#: faq/design.rst:343
msgid ""
"Other implementations (such as `Jython `_ or `PyPy "
"`_), however, can rely on a different mechanism such as "
@@ -666,7 +666,7 @@ msgstr ""
"subtils problèmes de portabilité si votre code Python dépend du comportement "
"de l'implémentation du compteur de références."
-#: faq/design.rst:352
+#: faq/design.rst:349
msgid ""
"In some Python implementations, the following code (which is fine in "
"CPython) will probably run out of file descriptors::"
@@ -675,7 +675,7 @@ msgstr ""
"parfaitement avec *CPython*) aurait probablement manqué de descripteurs de "
"fichiers ::"
-#: faq/design.rst:359
+#: faq/design.rst:356
msgid ""
"Indeed, using CPython's reference counting and destructor scheme, each new "
"assignment to *f* closes the previous file. With a traditional GC, however, "
@@ -688,7 +688,7 @@ msgstr ""
"(et fermés) à intervalles variables et possiblement avec de longs "
"intervalles."
-#: faq/design.rst:364
+#: faq/design.rst:361
msgid ""
"If you want to write code that will work with any Python implementation, you "
"should explicitly close the file or use the :keyword:`with` statement; this "
@@ -699,12 +699,12 @@ msgstr ""
"utiliser l'instruction :keyword:`with` ; ceci fonctionnera indépendamment du "
"système de gestion de la mémoire ::"
-#: faq/design.rst:374
+#: faq/design.rst:371
msgid "Why doesn't CPython use a more traditional garbage collection scheme?"
msgstr ""
"Pourquoi CPython n'utilise-il pas un ramasse-miette plus traditionnel ?"
-#: faq/design.rst:376
+#: faq/design.rst:373
msgid ""
"For one thing, this is not a C standard feature and hence it's not portable. "
"(Yes, we know about the Boehm GC library. It has bits of assembler code for "
@@ -719,7 +719,7 @@ msgstr ""
"transparent, c'est loin d'être le cas, des correctifs sont nécessaires afin "
"que Python fonctionne correctement avec.)"
-#: faq/design.rst:382
+#: faq/design.rst:379
msgid ""
"Traditional GC also becomes a problem when Python is embedded into other "
"applications. While in a standalone Python it's fine to replace the "
@@ -737,12 +737,12 @@ msgstr ""
"fonctionne avec n'importe quelle implémentation correcte de ``malloc()`` et "
"``free()``."
-#: faq/design.rst:391
+#: faq/design.rst:388
msgid "Why isn't all memory freed when CPython exits?"
msgstr ""
"Pourquoi toute la mémoire n'est pas libérée lorsque *CPython* s'arrête ?"
-#: faq/design.rst:393
+#: faq/design.rst:390
msgid ""
"Objects referenced from the global namespaces of Python modules are not "
"always deallocated when Python exits. This may happen if there are circular "
@@ -759,7 +759,7 @@ msgstr ""
"cependant, agressif sur le nettoyage de la mémoire en quittant et cherche à "
"détruire chaque objet."
-#: faq/design.rst:400
+#: faq/design.rst:397
msgid ""
"If you want to force Python to delete certain things on deallocation use "
"the :mod:`atexit` module to run a function that will force those deletions."
@@ -768,12 +768,12 @@ msgstr ""
"utilisez le module :mod:`texit` pour exécuter une fonction qui va forcer ces "
"destructions."
-#: faq/design.rst:405
+#: faq/design.rst:402
msgid "Why are there separate tuple and list data types?"
msgstr ""
"Pourquoi les *n*-uplets et les *list* sont deux types de données séparés ?"
-#: faq/design.rst:407
+#: faq/design.rst:404
msgid ""
"Lists and tuples, while similar in many respects, are generally used in "
"fundamentally different ways. Tuples can be thought of as being similar to "
@@ -790,7 +790,7 @@ msgstr ""
"un repère cartésien est correctement représenté comme un *n*-uplet de deux "
"ou trois nombres."
-#: faq/design.rst:414
+#: faq/design.rst:411
msgid ""
"Lists, on the other hand, are more like arrays in other languages. They "
"tend to hold a varying number of objects all of which have the same type and "
@@ -807,7 +807,7 @@ msgstr ""
"problème que vous ajoutiez un ou deux fichiers supplémentaire dans le "
"dossier."
-#: faq/design.rst:421
+#: faq/design.rst:418
msgid ""
"Tuples are immutable, meaning that once a tuple has been created, you can't "
"replace any of its elements with a new value. Lists are mutable, meaning "
@@ -822,11 +822,11 @@ msgstr ""
"utilisés comme clés de dictionnaires, et donc de ``tuple`` et ``list`` seul "
"des *n*-uplets peuvent être utilisés comme clés."
-#: faq/design.rst:428
+#: faq/design.rst:425
msgid "How are lists implemented in CPython?"
msgstr "Comment les listes sont-elles implémentées dans CPython ?"
-#: faq/design.rst:430
+#: faq/design.rst:427
msgid ""
"CPython's lists are really variable-length arrays, not Lisp-style linked "
"lists. The implementation uses a contiguous array of references to other "
@@ -839,7 +839,7 @@ msgstr ""
"Elle conserve également un pointeur vers ce tableau et la longueur du "
"tableau dans une structure de tête de liste."
-#: faq/design.rst:434
+#: faq/design.rst:431
msgid ""
"This makes indexing a list ``a[i]`` an operation whose cost is independent "
"of the size of the list or the value of the index."
@@ -847,7 +847,7 @@ msgstr ""
"Cela rend l'indexation d'une liste ``a[i]`` une opération dont le coût est "
"indépendant de la taille de la liste ou de la valeur de l'indice."
-#: faq/design.rst:437
+#: faq/design.rst:434
msgid ""
"When items are appended or inserted, the array of references is resized. "
"Some cleverness is applied to improve the performance of appending items "
@@ -860,11 +860,11 @@ msgstr ""
"être étendu, un certain espace supplémentaire est alloué de sorte que pour "
"la prochaine fois, ceci ne nécessite plus un redimensionnement effectif."
-#: faq/design.rst:444
+#: faq/design.rst:441
msgid "How are dictionaries implemented in CPython?"
msgstr "Comment les dictionnaires sont-ils implémentés dans CPython ?"
-#: faq/design.rst:446
+#: faq/design.rst:443
msgid ""
"CPython's dictionaries are implemented as resizable hash tables. Compared "
"to B-trees, this gives better performance for lookup (the most common "
@@ -876,7 +876,7 @@ msgstr ""
"performances pour la recherche (l'opération la plus courante de loin) dans "
"la plupart des circonstances, et leur implémentation est plus simple."
-#: faq/design.rst:450
+#: faq/design.rst:447
msgid ""
"Dictionaries work by computing a hash code for each key stored in the "
"dictionary using the :func:`hash` built-in function. The hash code varies "
@@ -901,11 +901,11 @@ msgstr ""
"temps pour récupérer une clé est constant -- O(1), en notation grand O de "
"Landau."
-#: faq/design.rst:461
+#: faq/design.rst:458
msgid "Why must dictionary keys be immutable?"
msgstr "Pourquoi les clés du dictionnaire sont immuables ?"
-#: faq/design.rst:463
+#: faq/design.rst:460
msgid ""
"The hash table implementation of dictionaries uses a hash value calculated "
"from the key value to find the key. If the key were a mutable object, its "
@@ -928,7 +928,7 @@ msgstr ""
"chercher l'ancienne valeur, elle serait également introuvable car la valeur "
"de l'objet trouvé dans cet emplacement de hachage serait différente."
-#: faq/design.rst:472
+#: faq/design.rst:469
msgid ""
"If you want a dictionary indexed with a list, simply convert the list to a "
"tuple first; the function ``tuple(L)`` creates a tuple with the same entries "
@@ -940,11 +940,11 @@ msgstr ""
"uplet avec les mêmes entrées que la liste ``L``. Les *n*-uplets sont "
"immuables et peuvent donc être utilisés comme clés du dictionnaire."
-#: faq/design.rst:476
+#: faq/design.rst:473
msgid "Some unacceptable solutions that have been proposed:"
msgstr "Certaines solutions insatisfaisantes qui ont été proposées :"
-#: faq/design.rst:478
+#: faq/design.rst:475
msgid ""
"Hash lists by their address (object ID). This doesn't work because if you "
"construct a new list with the same value it won't be found; e.g.::"
@@ -953,7 +953,7 @@ msgstr ""
"fonctionne pas parce que si vous créez une nouvelle liste avec la même "
"valeur, elle ne sera pas retrouvée; par exemple ::"
-#: faq/design.rst:484
+#: faq/design.rst:481
msgid ""
"would raise a :exc:`KeyError` exception because the id of the ``[1, 2]`` "
"used in the second line differs from that in the first line. In other "
@@ -965,7 +965,7 @@ msgstr ""
"termes, les clés de dictionnaire doivent être comparées à l'aide du "
"comparateur ``==`` et non à l'aide du mot clé :keyword:`is`."
-#: faq/design.rst:488
+#: faq/design.rst:485
msgid ""
"Make a copy when using a list as a key. This doesn't work because the list, "
"being a mutable object, could contain a reference to itself, and then the "
@@ -976,7 +976,7 @@ msgstr ""
"une référence à elle-même ou avoir une boucle infinie au niveau du code "
"copié."
-#: faq/design.rst:492
+#: faq/design.rst:489
msgid ""
"Allow lists as keys but tell the user not to modify them. This would allow "
"a class of hard-to-track bugs in programs when you forgot or modified a list "
@@ -989,7 +989,7 @@ msgstr ""
"accident. Cela casse également un impératif important des dictionnaires : "
"chaque valeur de ``d.keys()`` est utilisable comme clé du dictionnaire."
-#: faq/design.rst:497
+#: faq/design.rst:494
msgid ""
"Mark lists as read-only once they are used as a dictionary key. The problem "
"is that it's not just the top-level object that could change its value; you "
@@ -1007,7 +1007,7 @@ msgstr ""
"encore une fois, les objets se faisant référence pourraient provoquer une "
"boucle infinie."
-#: faq/design.rst:503
+#: faq/design.rst:500
msgid ""
"There is a trick to get around this if you need to, but use it at your own "
"risk: You can wrap a mutable structure inside a class instance which has "
@@ -1024,7 +1024,7 @@ msgstr ""
"(ou une autre structure basée sur le hachage), restent fixes pendant que "
"l'objet est dans le dictionnaire (ou une autre structure). ::"
-#: faq/design.rst:527
+#: faq/design.rst:524
msgid ""
"Note that the hash computation is complicated by the possibility that some "
"members of the list may be unhashable and also by the possibility of "
@@ -1034,7 +1034,7 @@ msgstr ""
"certains membres de la liste peuvent être impossible à hacher et aussi par "
"la possibilité de débordement arithmétique."
-#: faq/design.rst:531
+#: faq/design.rst:528
msgid ""
"Furthermore it must always be the case that if ``o1 == o2`` (ie ``o1."
"__eq__(o2) is True``) then ``hash(o1) == hash(o2)`` (ie, ``o1.__hash__() == "
@@ -1048,7 +1048,7 @@ msgstr ""
"ne remplissez pas ces conditions, les dictionnaires et autres structures "
"basées sur le hachage se comporteront mal."
-#: faq/design.rst:536
+#: faq/design.rst:533
msgid ""
"In the case of ListWrapper, whenever the wrapper object is in a dictionary "
"the wrapped list must not change to avoid anomalies. Don't do this unless "
@@ -1061,11 +1061,11 @@ msgstr ""
"conséquences de ne pas satisfaire entièrement ces conditions. Vous avez été "
"prévenus."
-#: faq/design.rst:543
+#: faq/design.rst:540
msgid "Why doesn't list.sort() return the sorted list?"
msgstr "Pourquoi ``list.sort()`` ne renvoie pas la liste triée ?"
-#: faq/design.rst:545
+#: faq/design.rst:542
msgid ""
"In situations where performance matters, making a copy of the list just to "
"sort it would be wasteful. Therefore, :meth:`list.sort` sorts the list in "
@@ -1081,7 +1081,7 @@ msgstr ""
"accidentellement une liste lorsque vous avez besoin d’une copie triée, mais "
"vous devrez également garder sous la main la version non triée."
-#: faq/design.rst:551
+#: faq/design.rst:548
msgid ""
"If you want to return a new list, use the built-in :func:`sorted` function "
"instead. This function creates a new list from a provided iterable, sorts "
@@ -1093,13 +1093,13 @@ msgstr ""
"itérable fourni, la trie et la retourne. Par exemple, voici comment itérer "
"sur les clefs d’un dictionnaire dans l’ordre trié ::"
-#: faq/design.rst:561
+#: faq/design.rst:558
msgid "How do you specify and enforce an interface spec in Python?"
msgstr ""
"Comment spécifiez-vous et appliquez-vous une spécification d’interface en "
"Python ?"
-#: faq/design.rst:563
+#: faq/design.rst:560
msgid ""
"An interface specification for a module as provided by languages such as C++ "
"and Java describes the prototypes for the methods and functions of the "
@@ -1111,7 +1111,7 @@ msgstr ""
"module. Beaucoup estiment que la vérification au moment de la compilation "
"des spécifications d'interface aide à la construction de grands programmes."
-#: faq/design.rst:568
+#: faq/design.rst:565
msgid ""
"Python 2.6 adds an :mod:`abc` module that lets you define Abstract Base "
"Classes (ABCs). You can then use :func:`isinstance` and :func:`issubclass` "
@@ -1128,7 +1128,7 @@ msgstr ""
"Iterable`, :class:`~collections.abc.Container` et :class:`collections.abc."
"MutableMapping`."
-#: faq/design.rst:575
+#: faq/design.rst:572
msgid ""
"For Python, many of the advantages of interface specifications can be "
"obtained by an appropriate test discipline for components."
@@ -1136,7 +1136,7 @@ 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."
-#: faq/design.rst:578
+#: faq/design.rst:575
msgid ""
"A good test suite for a module can both provide a regression test and serve "
"as a module interface specification and a set of examples. Many Python "
@@ -1157,7 +1157,7 @@ msgstr ""
"test tiers peuvent être utilisés pour construire des suites de tests "
"exhaustives qui éprouvent chaque ligne de code dans un module."
-#: faq/design.rst:586
+#: faq/design.rst:583
msgid ""
"An appropriate testing discipline can help build large complex applications "
"in Python as well as having interface specifications would. In fact, it can "
@@ -1177,7 +1177,7 @@ msgstr ""
"réellement le faire correctement, mais il est trivial de vérifier cette "
"propriété dans une suite de tests."
-#: faq/design.rst:594
+#: faq/design.rst:591
msgid ""
"Writing test suites is very helpful, and you might want to design your code "
"to make it easily tested. One increasingly popular technique, test-driven "
@@ -1192,24 +1192,41 @@ msgstr ""
"le code réel. Bien sûr, Python vous permet d'être laxiste et de ne pas "
"écrire de test du tout."
-#: faq/design.rst:602
+#: faq/design.rst:599
msgid "Why is there no goto?"
msgstr "Pourquoi n'y a-t-il pas de ``goto`` en Python ?"
-#: faq/design.rst:604
+#: faq/design.rst:601
msgid ""
-"You can use exceptions to provide a \"structured goto\" that even works "
+"In the 1970s people realized that unrestricted goto could lead to messy "
+"\"spaghetti\" code that was hard to understand and revise. In a high-level "
+"language, it is also unneeded as long as there are ways to branch (in "
+"Python, with ``if`` statements and ``or``, ``and``, and ``if-else`` "
+"expressions) and loop (with ``while`` and ``for`` statements, possibly "
+"containing ``continue`` and ``break``)."
+msgstr ""
+"Dans les années 1970, les gens se sont aperçus que le foisonnement de *goto* "
+"conduisait à du code « spaghetti » difficile à comprendre et à modifier. "
+"Dans les langages de haut niveau, c'est d'autant moins nécessaire qu'il "
+"existe différentes manières de créer des branches (en Python, les "
+"instructions ``if`` et les expressions ``or``, ``and`` et ``if-else``) et de "
+"boucler (avec les instructions ``while`` et ``for``, qui peuvent contenir "
+"des ``continue`` et ``break``)."
+
+#: faq/design.rst:608
+msgid ""
+"One can also use exceptions to provide a \"structured goto\" that works even "
"across function calls. Many feel that exceptions can conveniently emulate "
"all reasonable uses of the \"go\" or \"goto\" constructs of C, Fortran, and "
"other languages. For example::"
msgstr ""
-"Vous pouvez utiliser les exceptions afin de mettre en place un \"``goto`` "
-"structuré\" qui fonctionne même avec les appels de fonctions. Beaucoup de "
-"personnes estiment que les exceptions peuvent émuler idéalement tout "
-"utilisation raisonnable des constructions ``go`` ou ``goto`` en C, en "
-"Fortran ou autres langages de programmation. Par exemple ::"
+"Vous pouvez utiliser les exceptions afin de mettre en place un « *goto* "
+"structuré » qui fonctionne même à travers les appels de fonctions. Beaucoup "
+"de personnes estiment que les exceptions sont une façon commode d'émuler "
+"l'utilisation raisonnable des constructions *go* ou *goto* du C, du Fortran "
+"ou d'autres langages de programmation. Par exemple ::"
-#: faq/design.rst:619
+#: faq/design.rst:624
msgid ""
"This doesn't allow you to jump into the middle of a loop, but that's usually "
"considered an abuse of goto anyway. Use sparingly."
@@ -1218,13 +1235,13 @@ msgstr ""
"tous les cas cela est généralement considéré comme un abus de ``goto``. À "
"Utiliser avec parcimonie."
-#: faq/design.rst:624
+#: faq/design.rst:629
msgid "Why can't raw strings (r-strings) end with a backslash?"
msgstr ""
"Pourquoi les chaînes de caractères brutes (r-strings) ne peuvent-elles pas "
"se terminer par un *backslash* ?"
-#: faq/design.rst:626
+#: faq/design.rst:631
msgid ""
"More precisely, they can't end with an odd number of backslashes: the "
"unpaired backslash at the end escapes the closing quote character, leaving "
@@ -1234,7 +1251,7 @@ msgstr ""
"*backslashes* : le *backslash* non appairé à la fin échappe le caractère de "
"guillemet final, laissant une chaîne non terminée."
-#: faq/design.rst:630
+#: faq/design.rst:635
msgid ""
"Raw strings were designed to ease creating input for processors (chiefly "
"regular expression engines) that want to do their own backslash escape "
@@ -1252,29 +1269,29 @@ msgstr ""
"chaîne en l'échappant avec un *antislash*. Ces règles fonctionnent bien "
"lorsque les chaînes brutes sont utilisées pour leur but premier."
-#: faq/design.rst:637
+#: faq/design.rst:642
msgid ""
"If you're trying to build Windows pathnames, note that all Windows system "
"calls accept forward slashes too::"
msgstr ""
"Si vous essayez de construire des chemins d'accès Windows, notez que tous "
-"les appels système Windows acceptent également les *slashes* \"classiques"
-"\" ::"
+"les appels système Windows acceptent également les *slashes* "
+"\"classiques\" ::"
-#: faq/design.rst:642
+#: faq/design.rst:647
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à ::"
-#: faq/design.rst:650
+#: faq/design.rst:655
msgid "Why doesn't Python have a \"with\" statement for attribute assignments?"
msgstr ""
"Pourquoi la déclaration ``with`` pour les assignations d'attributs n'existe "
"pas en Python ?"
-#: faq/design.rst:652
+#: faq/design.rst:657
msgid ""
"Python has a 'with' statement that wraps the execution of a block, calling "
"code on the entrance and exit from the block. Some languages have a "
@@ -1284,11 +1301,11 @@ msgstr ""
"appelant le code sur l'entrée et la sortie du bloc. Certains langages "
"possèdent une construction qui ressemble à ceci ::"
-#: faq/design.rst:660
+#: faq/design.rst:665
msgid "In Python, such a construct would be ambiguous."
msgstr "En Python, une telle construction serait ambiguë."
-#: faq/design.rst:662
+#: faq/design.rst:667
msgid ""
"Other languages, such as Object Pascal, Delphi, and C++, use static types, "
"so it's possible to know, in an unambiguous way, what member is being "
@@ -1301,7 +1318,7 @@ msgstr ""
"statique --le compilateur connaît *toujours* la portée de toutes les "
"variables au moment de la compilation."
-#: faq/design.rst:667
+#: faq/design.rst:672
msgid ""
"Python uses dynamic types. It is impossible to know in advance which "
"attribute will be referenced at runtime. Member attributes may be added or "
@@ -1315,11 +1332,11 @@ msgstr ""
"impossible de savoir, d'une simple lecture, quel attribut est référencé : "
"s'il est local, global ou un attribut membre?"
-#: faq/design.rst:673
+#: faq/design.rst:678
msgid "For instance, take the following incomplete snippet::"
msgstr "Prenons par exemple l'extrait incomplet suivant ::"
-#: faq/design.rst:679
+#: faq/design.rst:684
msgid ""
"The snippet assumes that \"a\" must have a member attribute called \"x\". "
"However, there is nothing in Python that tells the interpreter this. What "
@@ -1333,7 +1350,7 @@ msgstr ""
"\"x\" existe, sera-t-elle utilisée dans le bloc ``with`` ? Comme vous "
"voyez, la nature dynamique du Python rend ces choix beaucoup plus difficiles."
-#: faq/design.rst:685
+#: faq/design.rst:690
msgid ""
"The primary benefit of \"with\" and similar language features (reduction of "
"code volume) can, however, easily be achieved in Python by assignment. "
@@ -1343,11 +1360,11 @@ msgstr ""
"similaires (réduction du volume de code) peut, cependant, être facilement "
"réalisé en Python par assignation. Au lieu de ::"
-#: faq/design.rst:692
+#: faq/design.rst:697
msgid "write this::"
msgstr "écrivez ceci ::"
-#: faq/design.rst:699
+#: faq/design.rst:704
msgid ""
"This also has the side-effect of increasing execution speed because name "
"bindings are resolved at run-time in Python, and the second version only "
@@ -1357,13 +1374,31 @@ msgstr ""
"car les liaisons de noms sont résolues au moment de l'exécution en Python, "
"et la deuxième version n'a besoin d'exécuter la résolution qu'une seule fois."
-#: faq/design.rst:705
+#: faq/design.rst:710
+msgid "Why don't generators support the with statement?"
+msgstr ""
+"Pourquoi l'instruction ``with`` ne prend-elle pas en charge les générateurs ?"
+
+#: faq/design.rst:712
+msgid ""
+"For technical reasons, a generator used directly as a context manager would "
+"not work correctly. When, as is most common, a generator is used as an "
+"iterator run to completion, no closing is needed. When it is, wrap it as "
+"\"contextlib.closing(generator)\" in the 'with' statement."
+msgstr ""
+"Pour des raisons d'ordre technique, un générateur utilisé directement comme "
+"gestionnaire de contexte ne pourrait pas fonctionner. Dans le cas le plus "
+"courant, où un générateur est utilisé jusqu'à épuisement, il n'y a pas "
+"besoin de le fermer. Sinon, on peut toujours mettre ``contextlib."
+"closing(générateur)`` dans la ligne du ``with``."
+
+#: faq/design.rst:719
msgid "Why are colons required for the if/while/def/class statements?"
msgstr ""
"Pourquoi les deux-points sont-ils nécessaires pour les déclarations ``if/"
"while/def/class`` ?"
-#: faq/design.rst:707
+#: faq/design.rst:721
msgid ""
"The colon is required primarily to enhance readability (one of the results "
"of the experimental ABC language). Consider this::"
@@ -1371,11 +1406,11 @@ msgstr ""
"Le deux-points est principalement nécessaires pour améliorer la lisibilité "
"(l'un des résultats du langage expérimental ABC). Considérez ceci ::"
-#: faq/design.rst:713
+#: faq/design.rst:727
msgid "versus ::"
msgstr "versus ::"
-#: faq/design.rst:718
+#: faq/design.rst:732
msgid ""
"Notice how the second one is slightly easier to read. Notice further how a "
"colon sets off the example in this FAQ answer; it's a standard usage in "
@@ -1385,7 +1420,7 @@ msgstr ""
"aussi comment un deux-points introduit l'exemple dans cette réponse à la "
"FAQ ; c'est un usage standard en anglais."
-#: faq/design.rst:721
+#: faq/design.rst:735
msgid ""
"Another minor reason is that the colon makes it easier for editors with "
"syntax highlighting; they can look for colons to decide when indentation "
@@ -1397,13 +1432,13 @@ msgstr ""
"pour décider quand l'indentation doit être augmentée au lieu d'avoir à faire "
"une analyse plus élaborée du texte du programme."
-#: faq/design.rst:727
+#: faq/design.rst:741
msgid "Why does Python allow commas at the end of lists and tuples?"
msgstr ""
"Pourquoi Python permet-il les virgules à la fin des listes et des *n*-"
"uplets ?"
-#: faq/design.rst:729
+#: faq/design.rst:743
msgid ""
"Python lets you add a trailing comma at the end of lists, tuples, and "
"dictionaries::"
@@ -1411,11 +1446,11 @@ msgstr ""
"Python vous permet d'ajouter une virgule à la fin des listes, des *n*-uplets "
"et des dictionnaires ::"
-#: faq/design.rst:740
+#: faq/design.rst:754
msgid "There are several reasons to allow this."
msgstr "Il y a plusieurs raisons d'accepter cela."
-#: faq/design.rst:742
+#: faq/design.rst:756
msgid ""
"When you have a literal value for a list, tuple, or dictionary spread across "
"multiple lines, it's easier to add more elements because you don't have to "
@@ -1428,7 +1463,7 @@ msgstr ""
"virgule à la ligne précédente. Les lignes peuvent aussi être réorganisées "
"sans créer une erreur de syntaxe."
-#: faq/design.rst:747
+#: faq/design.rst:761
msgid ""
"Accidentally omitting the comma can lead to errors that are hard to "
"diagnose. For example::"
@@ -1436,7 +1471,7 @@ msgstr ""
"L'omission accidentelle de la virgule peut entraîner des erreurs difficiles "
"à diagnostiquer, par exemple ::"
-#: faq/design.rst:757
+#: faq/design.rst:771
msgid ""
"This list looks like it has four elements, but it actually contains three: "
"\"fee\", \"fiefoo\" and \"fum\". Always adding the comma avoids this source "
@@ -1446,7 +1481,7 @@ msgstr ""
"trois : \"*fee*\", \"*fiefoo*\" et \"*fum*\". Toujours ajouter la virgule "
"permet d'éviter cette source d'erreur."
-#: faq/design.rst:760
+#: faq/design.rst:774
msgid ""
"Allowing the trailing comma may also make programmatic code generation "
"easier."
diff --git a/faq/extending.po b/faq/extending.po
index fdfc986a35..702d32a31f 100644
--- a/faq/extending.po
+++ b/faq/extending.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2020-03-03 19:27+0100\n"
"Last-Translator: ZepmanBC \n"
"Language-Team: FRENCH \n"
@@ -49,10 +49,10 @@ msgstr "Puis-je créer mes propres fonctions en C++ ?"
#: faq/extending.rst:28
msgid ""
-"Yes, using the C compatibility features found in C++. Place ``extern \"C"
-"\" { ... }`` around the Python include files and put ``extern \"C\"`` before "
-"each function that is going to be called by the Python interpreter. Global "
-"or static C++ objects with constructors are probably not a good idea."
+"Yes, using the C compatibility features found in C++. Place ``extern "
+"\"C\" { ... }`` around the Python include files and put ``extern \"C\"`` "
+"before each function that is going to be called by the Python interpreter. "
+"Global or static C++ objects with constructors are probably not a good idea."
msgstr ""
"Oui, en utilisant les fonctionnalités de compatibilité C existantes en C++. "
"Placez ``extern \"C\" { ... }`` autour des fichiers Python inclus et mettez "
@@ -337,10 +337,10 @@ msgid ""
"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) "
+"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++."
#: faq/extending.rst:212
@@ -414,13 +414,13 @@ msgstr ""
msgid "For Debian, run ``apt-get install python-dev``."
msgstr "Pour Debian, exécutez ``apt-get install python-dev``."
-#: faq/extending.rst:259
+#: faq/extending.rst:258
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*) ?"
-#: faq/extending.rst:261
+#: faq/extending.rst:260
msgid ""
"Sometimes you want to emulate the Python interactive interpreter's behavior, "
"where it gives you a continuation prompt when the input is incomplete (e.g. "
@@ -434,7 +434,7 @@ msgstr ""
"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."
-#: faq/extending.rst:267
+#: faq/extending.rst:266
msgid ""
"In Python you can use the :mod:`codeop` module, which approximates the "
"parser's behavior sufficiently. IDLE uses this, for example."
@@ -442,7 +442,7 @@ msgstr ""
"En Python, vous pouvez utiliser le module :mod:`codeop`, qui se rapproche "
"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise."
-#: faq/extending.rst:270
+#: faq/extending.rst:269
msgid ""
"The easiest way to do it in C is to call :c:func:`PyRun_InteractiveLoop` "
"(perhaps in a separate thread) and let the Python interpreter handle the "
@@ -458,50 +458,12 @@ msgstr ""
"myreadline.c`` pour plus de conseils."
#: faq/extending.rst:276
-msgid ""
-"However sometimes you have to run the embedded Python interpreter in the "
-"same thread as your rest application and you can't allow the :c:func:"
-"`PyRun_InteractiveLoop` to stop while waiting for user input. The one "
-"solution then is to call :c:func:`PyParser_ParseString` and test for ``e."
-"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 ::"
-
-#: 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 "
-"returned code object by calling :c:func:`PyEval_EvalCode`. Otherwise save "
-"the input for later. If the compilation fails, find out if it's an error or "
-"just more input is required - by extracting the message string from the "
-"exception tuple and comparing it to the string \"unexpected EOF while parsing"
-"\". 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 *n*-uplet 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()``) ::"
-
-#: 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`` ?"
-#: faq/extending.rst:434
+#: faq/extending.rst:278
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 "
@@ -513,7 +475,7 @@ msgstr ""
"de votre module d'extension avec g++ (par exemple, ``g++ -shared -o mymodule."
"so mymodule.o``)."
-#: faq/extending.rst:440
+#: faq/extending.rst:284
msgid ""
"Can I create an object class with some methods implemented in C and others "
"in Python (e.g. through inheritance)?"
@@ -521,7 +483,7 @@ 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) ?"
-#: faq/extending.rst:442
+#: faq/extending.rst:286
msgid ""
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
"`list`, :class:`dict`, etc."
@@ -529,7 +491,7 @@ msgstr ""
"Oui, vous pouvez hériter de classes intégrées telles que :class:`int`, :"
"class:`list`, :class:`dict`, etc."
-#: faq/extending.rst:445
+#: faq/extending.rst:289
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 "
@@ -538,3 +500,40 @@ 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)."
+
+#~ msgid ""
+#~ "However sometimes you have to run the embedded Python interpreter in the "
+#~ "same thread as your rest application and you can't allow the :c:func:"
+#~ "`PyRun_InteractiveLoop` to stop while waiting for user input. The one "
+#~ "solution then is to call :c:func:`PyParser_ParseString` and test for ``e."
+#~ "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 ::"
+
+#~ msgid ""
+#~ "Another solution is trying to compile the received string with :c:func:"
+#~ "`Py_CompileString`. If it compiles without errors, try to execute the "
+#~ "returned code object by calling :c:func:`PyEval_EvalCode`. Otherwise save "
+#~ "the input for later. If the compilation fails, find out if it's an error "
+#~ "or just more input is required - by extracting the message string from "
+#~ "the exception tuple and comparing it to the string \"unexpected EOF while "
+#~ "parsing\". 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 *n*-uplet 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()``) ::"
diff --git a/faq/gui.po b/faq/gui.po
index 5c0c5f0a63..d2f71a9f48 100644
--- a/faq/gui.po
+++ b/faq/gui.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2023-03-22 22:16+0100\n"
"PO-Revision-Date: 2019-09-04 11:44+0200\n"
"Last-Translator: Zepmanbc \n"
"Language-Team: FRENCH \n"
@@ -28,34 +28,17 @@ msgid "General GUI Questions"
msgstr "Questions générales sur l'interface graphique"
#: faq/gui.rst:18
-msgid "What platform-independent GUI toolkits exist for Python?"
-msgstr ""
-"Quelles bibliothèques d'interfaces graphiques multi-plateformes existent en "
-"Python ?"
+msgid "What GUI toolkits exist for Python?"
+msgstr "Quelles boîtes à outils IUG existent pour Python ?"
#: faq/gui.rst:20
msgid ""
-"Depending on what platform(s) you are aiming at, there are several. Some of "
-"them haven't been ported to Python 3 yet. At least `Tkinter`_ and `Qt`_ are "
-"known to be Python 3-compatible."
-msgstr ""
-"Selon les plateformes que vous comptez utiliser, il en existe plusieurs. "
-"Certaines ne sont cependant pas encore disponibles en Python 3. A minima, "
-"`Tkinter`_ et `Qt`_ sont connus pour être compatibles avec Python 3."
-
-#: faq/gui.rst:27
-msgid "Tkinter"
-msgstr "*Tkinter*"
-
-#: faq/gui.rst:29
-msgid ""
"Standard builds of Python include an object-oriented interface to the Tcl/Tk "
"widget set, called :ref:`tkinter `. This is probably the easiest "
"to install (since it comes included with most `binary distributions `_ of Python) and use. For more info about Tk, "
"including pointers to the source, see the `Tcl/Tk home page `_. Tcl/Tk is fully portable to the Mac OS X, Windows, and Unix "
-"platforms."
+"tk>`_. Tcl/Tk is fully portable to the macOS, 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 `. "
@@ -63,187 +46,32 @@ msgstr ""
"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, "
+"tk>`_. *Tcl/Tk* est entièrement portable sur les plates-formes macOS, "
"Windows et Unix."
-#: faq/gui.rst:38
-msgid "wxWidgets"
-msgstr "*wxWidgets*"
-
-#: faq/gui.rst:40
-msgid ""
-"wxWidgets (https://www.wxwidgets.org) is a free, portable GUI class library "
-"written in C++ that provides a native look and feel on a number of "
-"platforms, with Windows, Mac OS X, GTK, X11, all listed as current stable "
-"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."
-
-#: faq/gui.rst:46
-msgid ""
-"`wxPython `_ is the Python binding for wxwidgets. "
-"While it often lags slightly behind the official wxWidgets releases, it also "
-"offers a number of features via pure Python extensions that are not "
-"available in other language bindings. There is an active wxPython user and "
-"developer community."
-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 clients d'autres langages. *WxPython* dispose "
-"de plus, d’une communauté d’utilisateurs et de développeurs active."
-
-#: faq/gui.rst:52
-msgid ""
-"Both wxWidgets and wxPython are free, open source, software with permissive "
-"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*)."
-
-#: faq/gui.rst:58
-msgid "Qt"
-msgstr "*Qt*"
-
-#: faq/gui.rst:60
-msgid ""
-"There are bindings available for the Qt toolkit (using either `PyQt `_ or `PySide `_) and for KDE (`PyKDE4 `__). PyQt is currently more mature than PySide, but you must "
-"buy a PyQt license from `Riverbank Computing `_ 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."
-
-#: 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 `_."
-
-#: faq/gui.rst:71
-msgid "Gtk+"
-msgstr "*Gtk+*"
-
-#: faq/gui.rst:73
-msgid ""
-"The `GObject introspection bindings `_ for Python allow you to write GTK+ 3 applications. There is "
-"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 `_."
-
-#: 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 ."
-
-#: faq/gui.rst:81
-msgid "Kivy"
-msgstr "*Kivy*"
-
-#: faq/gui.rst:83
-msgid ""
-"`Kivy `_ is a cross-platform GUI library supporting both "
-"desktop operating systems (Windows, macOS, Linux) and mobile devices "
-"(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*."
-
-#: 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."
-
-#: faq/gui.rst:91
-msgid "FLTK"
-msgstr "*FLTK*"
-
-#: faq/gui.rst:93
-msgid ""
-"Python bindings for `the FLTK toolkit `_, a simple yet "
-"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 `_."
-
-#: faq/gui.rst:98
-msgid "OpenGL"
-msgstr "*OpenGL*"
-
-#: faq/gui.rst:100
-msgid "For OpenGL bindings, see `PyOpenGL `_."
-msgstr ""
-"Pour les clients OpenGL, voir `PyOpenGL `_."
-
-#: 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 ?"
-
-#: faq/gui.rst:106
+#: faq/gui.rst:28
msgid ""
-"By installing the `PyObjc Objective-C bridge `_, Python programs can use Mac OS X's Cocoa libraries."
+"Depending on what platform(s) you are aiming at, there are also several "
+"alternatives. A `list of cross-platform `_ and `platform-specific `_ GUI "
+"frameworks can be found on the python wiki."
msgstr ""
-"En installant le `PyObjc Objective-C bridge `_, les programmes Python peuvent utiliser les bibliothèques Cocoa de Mac "
-"OS X."
+"D'autres outils existent. Le choix doit dépendre notamment de la ou des "
+"plateformes que vous visez. Sur le Wiki Python se trouvent des listes de "
+"bibliothèques graphiques `multiplateformes `_ et `pour une seule plate-forme "
+"`_."
-#: faq/gui.rst:110
-msgid ""
-":ref:`Pythonwin ` by Mark Hammond includes an interface to the "
-"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*."
-
-#: faq/gui.rst:116
+#: faq/gui.rst:36
msgid "Tkinter questions"
msgstr "Questions à propos de *Tkinter*"
-#: faq/gui.rst:119
+#: faq/gui.rst:39
msgid "How do I freeze Tkinter applications?"
msgstr "Comment puis-je geler (*freezer*) les applications *Tkinter* ?"
-#: faq/gui.rst:121
+#: faq/gui.rst:41
msgid ""
"Freeze is a tool to create stand-alone applications. When freezing Tkinter "
"applications, the applications will not be truly stand-alone, as the "
@@ -254,7 +82,7 @@ msgstr ""
"autonomes, car l'application aura toujours besoin des bibliothèques Tcl et "
"Tk."
-#: faq/gui.rst:125
+#: faq/gui.rst:45
msgid ""
"One solution is to ship the application with the Tcl and Tk libraries, and "
"point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:"
@@ -264,7 +92,7 @@ msgstr ""
"l'application et de les retrouver à l'exécution en utilisant les variables "
"d'environnement :envvar:`TCL_LIBRARY` et :envvar:`TK_LIBRARY`."
-#: faq/gui.rst:129
+#: faq/gui.rst:49
msgid ""
"To get truly stand-alone applications, the Tcl scripts that form the library "
"have to be integrated into the application as well. One tool supporting that "
@@ -276,7 +104,7 @@ msgstr ""
"Un outil supportant cela est *SAM* (modules autonomes), qui fait partie de "
"la distribution *Tix* (http://tix.sourceforge.net/)."
-#: faq/gui.rst:134
+#: faq/gui.rst:54
msgid ""
"Build Tix with SAM enabled, perform the appropriate call to :c:func:"
"`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link "
@@ -287,11 +115,11 @@ msgstr ""
"et liez avec *libtclsam* et *libtksam* (il est également possible d'inclure "
"les bibliothèques *Tix*)."
-#: faq/gui.rst:141
+#: faq/gui.rst:61
msgid "Can I have Tk events handled while waiting for I/O?"
msgstr "Puis-je modifier des événements *Tk* pendant l'écoute des *E/S* ?"
-#: faq/gui.rst:143
+#: faq/gui.rst:63
msgid ""
"On platforms other than Windows, yes, and you don't even need threads! But "
"you'll have to restructure your I/O code a bit. Tk has the equivalent of "
@@ -306,13 +134,13 @@ msgstr ""
"appelée par la boucle principale *Tk* lorsque des *E/S* sont disponibles sur "
"un descripteur de fichier. Voir :ref:`tkinter-file-handlers`."
-#: faq/gui.rst:151
+#: faq/gui.rst:71
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 ?"
-#: faq/gui.rst:153
+#: faq/gui.rst:73
msgid ""
"An often-heard complaint is that event handlers bound to events with the :"
"meth:`bind` method don't get handled even when the appropriate key is "
@@ -322,7 +150,7 @@ msgstr ""
"évènements avec la méthode :meth:`bind` ne sont pas pris en charge même "
"lorsque la touche appropriée est activée."
-#: faq/gui.rst:156
+#: faq/gui.rst:76
msgid ""
"The most common cause is that the widget to which the binding applies "
"doesn't have \"keyboard focus\". Check out the Tk documentation for the "
@@ -334,3 +162,171 @@ msgstr ""
"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*)."
+
+#~ msgid "What platform-independent GUI toolkits exist for Python?"
+#~ msgstr ""
+#~ "Quelles bibliothèques d'interfaces graphiques multi-plateformes existent "
+#~ "en Python ?"
+
+#~ msgid ""
+#~ "Depending on what platform(s) you are aiming at, there are several. Some "
+#~ "of them haven't been ported to Python 3 yet. At least `Tkinter`_ and "
+#~ "`Qt`_ are known to be Python 3-compatible."
+#~ msgstr ""
+#~ "Selon les plateformes que vous comptez utiliser, il en existe plusieurs. "
+#~ "Certaines ne sont cependant pas encore disponibles en Python 3. A minima, "
+#~ "`Tkinter`_ et `Qt`_ sont connus pour être compatibles avec Python 3."
+
+#~ msgid "Tkinter"
+#~ msgstr "*Tkinter*"
+
+#~ msgid "wxWidgets"
+#~ msgstr "*wxWidgets*"
+
+#~ msgid ""
+#~ "wxWidgets (https://www.wxwidgets.org) is a free, portable GUI class "
+#~ "library written in C++ that provides a native look and feel on a number "
+#~ "of platforms, with Windows, Mac OS X, GTK, X11, all listed as current "
+#~ "stable 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."
+
+#~ msgid ""
+#~ "`wxPython `_ is the Python binding for "
+#~ "wxwidgets. While it often lags slightly behind the official wxWidgets "
+#~ "releases, it also offers a number of features via pure Python extensions "
+#~ "that are not available in other language bindings. There is an active "
+#~ "wxPython user and developer community."
+#~ 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 clients d'autres "
+#~ "langages. *WxPython* dispose de plus, d’une communauté d’utilisateurs et "
+#~ "de développeurs active."
+
+#~ msgid ""
+#~ "Both wxWidgets and wxPython are free, open source, software with "
+#~ "permissive 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*)."
+
+#~ msgid "Qt"
+#~ msgstr "*Qt*"
+
+#~ msgid ""
+#~ "There are bindings available for the Qt toolkit (using either `PyQt "
+#~ "`_ or `PySide "
+#~ "`_) and for KDE (`PyKDE4 `__). PyQt is currently more mature "
+#~ "than PySide, but you must buy a PyQt license from `Riverbank Computing "
+#~ "`_ 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