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 e3202f58e0..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 := eec8e61992fb654d4cf58de4d727c18622b8303e
-
-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,70 +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 \
- git -C $(CPYTHON_PATH) checkout $(BRANCH); \
- 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
@@ -130,44 +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/
- sed -i 's|^#: .*Doc/|#: |' *.po */*.po
- powrap -m
- @printf "\n%s %s\n" "Replace CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
- @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\n'
+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 8ed47a5e8d..fe4ba11903 100644
--- a/README.rst
+++ b/README.rst
@@ -37,9 +37,11 @@ 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.
+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/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/decimal.po b/c-api/decimal.po
deleted file mode 100644
index 934a32d503..0000000000
--- a/c-api/decimal.po
+++ /dev/null
@@ -1,212 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) 2001-2021, 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.10\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-18 17:40+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"
-
-#: c-api/decimal.rst:7
-msgid "Decimal capsule API"
-msgstr ""
-
-#: c-api/decimal.rst:9
-msgid ""
-"Capsule API functions can be used in the same manner as regular library "
-"functions, provided that the API has been initialized."
-msgstr ""
-
-#: c-api/decimal.rst:14
-msgid "Initialize"
-msgstr ""
-
-#: c-api/decimal.rst:16
-msgid ""
-"Typically, a C extension module that uses the decimal API will do these "
-"steps in its init function:"
-msgstr ""
-
-#: c-api/decimal.rst:34
-msgid "Type checking, predicates, accessors"
-msgstr ""
-
-#: c-api/decimal.rst:38
-msgid ""
-"Return 1 if ``dec`` is a Decimal, 0 otherwise. This function does not set "
-"any exceptions."
-msgstr ""
-
-#: c-api/decimal.rst:44
-msgid "Return 1 if ``dec`` is ``NaN``, ``sNaN`` or ``Infinity``, 0 otherwise."
-msgstr ""
-
-#: c-api/decimal.rst:55 c-api/decimal.rst:64
-msgid ""
-"Set TypeError and return -1 if ``dec`` is not a Decimal. It is guaranteed "
-"that this is the only failure mode, so if ``dec`` has already been type-"
-"checked, no errors can occur and the function can be treated as a simple "
-"predicate."
-msgstr ""
-
-#: c-api/decimal.rst:53
-msgid "Return 1 if ``dec`` is ``NaN`` or ``sNaN``, 0 otherwise."
-msgstr ""
-
-#: c-api/decimal.rst:62
-msgid "Return 1 if ``dec`` is ``Infinity``, 0 otherwise."
-msgstr ""
-
-#: c-api/decimal.rst:71
-msgid ""
-"Return the number of digits in the coefficient. For ``Infinity``, the "
-"number of digits is always zero. Typically, the same applies to ``NaN`` and "
-"``sNaN``, but both of these can have a payload that is equivalent to a "
-"coefficient. Therefore, ``NaNs`` can have a nonzero return value."
-msgstr ""
-
-#: c-api/decimal.rst:76
-msgid ""
-"Set TypeError and return -1 if ``dec`` is not a Decimal. It is guaranteed "
-"that this is the only failure mode, so if ``dec`` has already been type-"
-"checked, no errors can occur and the function can be treated as a simple "
-"accessor."
-msgstr ""
-
-#: c-api/decimal.rst:82
-msgid "Exact conversions between decimals and primitive C types"
-msgstr ""
-
-#: c-api/decimal.rst:84
-msgid ""
-"This API supports conversions for decimals with a coefficient up to 38 "
-"digits."
-msgstr ""
-
-#: c-api/decimal.rst:87
-msgid "Data structures"
-msgstr ""
-
-#: c-api/decimal.rst:89
-msgid ""
-"The conversion functions use the following status codes and data structures:"
-msgstr ""
-
-#: c-api/decimal.rst:110
-msgid ""
-"The status cases are explained below. ``sign`` is 0 for positive and 1 for "
-"negative. ``((uint128_t)hi << 64) + lo`` is the coefficient, ``exp`` is the "
-"exponent."
-msgstr ""
-
-#: c-api/decimal.rst:113
-msgid ""
-"The data structure is called \"triple\" because the decimal triple (sign, "
-"coeff, exp) is an established term and (``hi``, ``lo``) represents a single "
-"``uint128_t`` coefficient."
-msgstr ""
-
-#: c-api/decimal.rst:216
-msgid "Functions"
-msgstr ""
-
-#: c-api/decimal.rst:122
-msgid ""
-"Convert a decimal to a triple. As above, it is guaranteed that the only "
-"Python failure mode is a TypeError, checks can be omitted if the type is "
-"known."
-msgstr ""
-
-#: c-api/decimal.rst:126
-msgid ""
-"For simplicity, the usage of the function and all special cases are "
-"explained in code form and comments:"
-msgstr ""
-
-#: c-api/decimal.rst:180
-msgid ""
-"Create a decimal from a triple. The following rules must be observed for "
-"initializing the triple:"
-msgstr ""
-
-#: c-api/decimal.rst:183
-msgid "``triple.sign`` must always be 0 (for positive) or 1 (for negative)."
-msgstr ""
-
-#: c-api/decimal.rst:185
-msgid ""
-"``MPD_TRIPLE_QNAN``: ``triple.exp`` must be 0. If ``triple.hi`` or ``triple."
-"lo`` are nonzero, create a ``NaN`` with a payload."
-msgstr ""
-
-#: c-api/decimal.rst:188
-msgid ""
-"``MPD_TRIPLE_SNAN``: ``triple.exp`` must be 0. If ``triple.hi`` or ``triple."
-"lo`` are nonzero, create an ``sNaN`` with a payload."
-msgstr ""
-
-#: c-api/decimal.rst:191
-msgid ""
-"``MPD_TRIPLE_INF``: ``triple.exp``, ``triple.hi`` and ``triple.lo`` must be "
-"zero."
-msgstr ""
-
-#: c-api/decimal.rst:193
-msgid ""
-"``MPD_TRIPLE_NORMAL``: ``MPD_MIN_ETINY + 38 < triple.exp < MPD_MAX_EMAX - "
-"38``. ``triple.hi`` and ``triple.lo`` can be chosen freely."
-msgstr ""
-
-#: c-api/decimal.rst:196
-msgid "``MPD_TRIPLE_ERROR``: It is always an error to set this tag."
-msgstr ""
-
-#: c-api/decimal.rst:199
-msgid ""
-"If one of the above conditions is not met, the function returns ``NaN`` if "
-"the ``InvalidOperation`` trap is not set in the thread local context. "
-"Otherwise, it sets the ``InvalidOperation`` exception and returns NULL."
-msgstr ""
-
-#: c-api/decimal.rst:203
-msgid ""
-"Additionally, though extremely unlikely give the small allocation sizes, the "
-"function can set ``MemoryError`` and return ``NULL``."
-msgstr ""
-
-#: c-api/decimal.rst:208
-msgid "Advanced API"
-msgstr ""
-
-#: c-api/decimal.rst:210
-msgid ""
-"This API enables the use of ``libmpdec`` functions. Since Python is "
-"compiled with hidden symbols, the API requires an external libmpdec and the "
-"``mpdecimal.h`` header."
-msgstr ""
-
-#: c-api/decimal.rst:220
-msgid ""
-"Return a new decimal that can be used in the ``result`` position of "
-"``libmpdec`` functions."
-msgstr ""
-
-#: c-api/decimal.rst:225
-msgid ""
-"Get a pointer to the internal ``mpd_t`` of the decimal. Decimals are "
-"immutable, so this function must only be used on a new Decimal that has been "
-"created by PyDec_Alloc()."
-msgstr ""
-
-#: c-api/decimal.rst:231
-msgid "Get a pointer to the constant internal ``mpd_t`` of the decimal."
-msgstr ""
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/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 5da8f220de..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: 2021-03-19 16:59+0100\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"
@@ -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 673614bcbc..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: 2021-03-19 16:59+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"
@@ -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
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 fb2d949cd9..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: 2021-03-19 16:59+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"
@@ -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 ""
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 3093ad98d6..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-03-19 16:59+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,6 +31,12 @@ 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 ""
@@ -44,6 +50,9 @@ 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:27
msgid ""
@@ -51,6 +60,9 @@ msgid ""
"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:31
msgid ""
@@ -66,16 +78,21 @@ msgid ""
"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:43
msgid "Unicode Type"
-msgstr ""
+msgstr "Type Unicode"
#: 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:52
msgid ""
@@ -83,6 +100,9 @@ msgid ""
"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:61
msgid ""
@@ -96,6 +116,9 @@ msgid ""
"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:74
msgid ""
@@ -198,9 +221,9 @@ msgstr ""
#: 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:203
@@ -472,7 +495,7 @@ msgstr "Commentaires"
#: c-api/unicode.rst:464
msgid ":attr:`%%`"
-msgstr ""
+msgstr ":attr:`%%`"
#: c-api/unicode.rst:464
msgid "*n/a*"
@@ -484,7 +507,7 @@ msgstr ""
#: c-api/unicode.rst:466
msgid ":attr:`%c`"
-msgstr ""
+msgstr ":attr:`%c`"
#: c-api/unicode.rst:469 c-api/unicode.rst:505
msgid "int"
@@ -496,7 +519,7 @@ msgstr ""
#: c-api/unicode.rst:469
msgid ":attr:`%d`"
-msgstr ""
+msgstr ":attr:`%d`"
#: c-api/unicode.rst:469
msgid "Equivalent to ``printf(\"%d\")``. [1]_"
@@ -504,7 +527,7 @@ msgstr ""
#: c-api/unicode.rst:472
msgid ":attr:`%u`"
-msgstr ""
+msgstr ":attr:`%u`"
#: c-api/unicode.rst:472
msgid "unsigned int"
@@ -516,7 +539,7 @@ msgstr ""
#: c-api/unicode.rst:475
msgid ":attr:`%ld`"
-msgstr ""
+msgstr ":attr:`%ld`"
#: c-api/unicode.rst:478
msgid "long"
@@ -528,7 +551,7 @@ msgstr ""
#: c-api/unicode.rst:478
msgid ":attr:`%li`"
-msgstr ""
+msgstr ":attr:`%li`"
#: c-api/unicode.rst:478
msgid "Equivalent to ``printf(\"%li\")``. [1]_"
@@ -536,7 +559,7 @@ msgstr ""
#: c-api/unicode.rst:481
msgid ":attr:`%lu`"
-msgstr ""
+msgstr ":attr:`%lu`"
#: c-api/unicode.rst:481
msgid "unsigned long"
@@ -548,7 +571,7 @@ msgstr ""
#: c-api/unicode.rst:484
msgid ":attr:`%lld`"
-msgstr ""
+msgstr ":attr:`%lld`"
#: c-api/unicode.rst:487
msgid "long long"
@@ -560,7 +583,7 @@ msgstr ""
#: c-api/unicode.rst:487
msgid ":attr:`%lli`"
-msgstr ""
+msgstr ":attr:`%lli`"
#: c-api/unicode.rst:487
msgid "Equivalent to ``printf(\"%lli\")``. [1]_"
@@ -568,7 +591,7 @@ msgstr ""
#: c-api/unicode.rst:490
msgid ":attr:`%llu`"
-msgstr ""
+msgstr ":attr:`%llu`"
#: c-api/unicode.rst:490
msgid "unsigned long long"
@@ -580,10 +603,10 @@ msgstr ""
#: c-api/unicode.rst:493
msgid ":attr:`%zd`"
-msgstr ""
+msgstr ":attr:`%zd`"
#: c-api/unicode.rst:496
-msgid "Py_ssize_t"
+msgid ":c:type:`\\ Py_ssize_t`"
msgstr ""
#: c-api/unicode.rst:493
@@ -592,7 +615,7 @@ msgstr ""
#: c-api/unicode.rst:496
msgid ":attr:`%zi`"
-msgstr ""
+msgstr ":attr:`%zi`"
#: c-api/unicode.rst:496
msgid "Equivalent to ``printf(\"%zi\")``. [1]_"
@@ -600,7 +623,7 @@ msgstr ""
#: c-api/unicode.rst:499
msgid ":attr:`%zu`"
-msgstr ""
+msgstr ":attr:`%zu`"
#: c-api/unicode.rst:499
msgid "size_t"
@@ -612,7 +635,7 @@ msgstr ""
#: c-api/unicode.rst:502
msgid ":attr:`%i`"
-msgstr ""
+msgstr ":attr:`%i`"
#: c-api/unicode.rst:502
msgid "Equivalent to ``printf(\"%i\")``. [1]_"
@@ -620,7 +643,7 @@ msgstr ""
#: c-api/unicode.rst:505
msgid ":attr:`%x`"
-msgstr ""
+msgstr ":attr:`%x`"
#: c-api/unicode.rst:505
msgid "Equivalent to ``printf(\"%x\")``. [1]_"
@@ -628,7 +651,7 @@ msgstr ""
#: c-api/unicode.rst:508
msgid ":attr:`%s`"
-msgstr ""
+msgstr ":attr:`%s`"
#: c-api/unicode.rst:508
msgid "const char\\*"
@@ -640,7 +663,7 @@ msgstr ""
#: c-api/unicode.rst:511
msgid ":attr:`%p`"
-msgstr ""
+msgstr ":attr:`%p`"
#: c-api/unicode.rst:511
msgid "const void\\*"
@@ -648,14 +671,14 @@ msgstr ""
#: 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:519
msgid ":attr:`%A`"
-msgstr ""
+msgstr ":attr:`%A`"
#: c-api/unicode.rst:522 c-api/unicode.rst:534
msgid "PyObject\\*"
@@ -667,7 +690,7 @@ msgstr ""
#: c-api/unicode.rst:522
msgid ":attr:`%U`"
-msgstr ""
+msgstr ":attr:`%U`"
#: c-api/unicode.rst:522
#, fuzzy
@@ -676,7 +699,7 @@ msgstr "Un objet Unicode."
#: c-api/unicode.rst:524
msgid ":attr:`%V`"
-msgstr ""
+msgstr ":attr:`%V`"
#: c-api/unicode.rst:524
msgid "PyObject\\*, const char\\*"
@@ -691,7 +714,7 @@ msgstr ""
#: c-api/unicode.rst:531
msgid ":attr:`%S`"
-msgstr ""
+msgstr ":attr:`%S`"
#: c-api/unicode.rst:531
msgid "The result of calling :c:func:`PyObject_Str`."
@@ -699,7 +722,7 @@ msgstr ""
#: c-api/unicode.rst:534
msgid ":attr:`%R`"
-msgstr ""
+msgstr ":attr:`%R`"
#: c-api/unicode.rst:534
msgid "The result of calling :c:func:`PyObject_Repr`."
@@ -736,8 +759,8 @@ msgstr ""
#: 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:564
@@ -784,8 +807,8 @@ msgstr ""
#: 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:613
@@ -970,9 +993,9 @@ msgstr ""
#: 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 ""
@@ -1008,10 +1031,10 @@ msgstr ""
#: 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:837
@@ -1167,8 +1190,8 @@ msgstr ""
#: 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 ""
@@ -1215,7 +1238,7 @@ msgstr ""
#: 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 ""
@@ -1254,7 +1277,7 @@ msgid ""
"``NULL`` if an exception was raised by the codec."
msgstr ""
-#: c-api/unicode.rst:1326
+#: c-api/unicode.rst:1327
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsEncodedString`."
@@ -1308,53 +1331,55 @@ msgstr ""
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:1127
+#: c-api/unicode.rst:1128
msgid "The return type is now ``const char *`` rather of ``char *``."
msgstr ""
-#: c-api/unicode.rst:1123
+#: c-api/unicode.rst:1124
msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size."
msgstr ""
-#: c-api/unicode.rst:1133
+#: 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:1140
+#: 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:1144
+#: c-api/unicode.rst:1145
msgid "UTF-32 Codecs"
msgstr ""
-#: c-api/unicode.rst:1146
+#: c-api/unicode.rst:1147
msgid "These are the UTF-32 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1152
+#: 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:1229
+#: 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:1163
+#: 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 "
@@ -1362,21 +1387,21 @@ msgid ""
"``-1`` or ``1``, any byte order mark is copied to the output."
msgstr ""
-#: c-api/unicode.rst:1242
+#: 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:1245
+#: c-api/unicode.rst:1246
msgid "If *byteorder* is ``NULL``, the codec starts in native order mode."
msgstr ""
-#: c-api/unicode.rst:1209 c-api/unicode.rst:1284
+#: 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:1179
+#: 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 "
@@ -1385,53 +1410,53 @@ msgid ""
"number of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1188
+#: 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:1196
+#: 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:1277
+#: 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:1206
+#: 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:1213
+#: 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:1217
+#: c-api/unicode.rst:1218
msgid "UTF-16 Codecs"
msgstr ""
-#: c-api/unicode.rst:1219
+#: c-api/unicode.rst:1220
msgid "These are the UTF-16 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1225
+#: 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:1236
+#: 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 "
@@ -1440,7 +1465,13 @@ msgid ""
"result in either a ``\\ufeff`` or a ``\\ufffe`` character)."
msgstr ""
-#: c-api/unicode.rst:1253
+#: 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 "
@@ -1450,47 +1481,47 @@ msgid ""
"*consumed*."
msgstr ""
-#: c-api/unicode.rst:1262
+#: 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:1270
+#: 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:1280
+#: 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:1288
+#: 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:1292
+#: c-api/unicode.rst:1293
msgid "UTF-7 Codecs"
msgstr ""
-#: c-api/unicode.rst:1294
+#: c-api/unicode.rst:1295
msgid "These are the UTF-7 codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1299
+#: 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:1306
+#: 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 "
@@ -1498,14 +1529,14 @@ msgid ""
"of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1315
+#: 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:1319
+#: 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 "
@@ -1513,173 +1544,173 @@ msgid ""
"the Python \"utf-7\" codec."
msgstr ""
-#: c-api/unicode.rst:1330
+#: c-api/unicode.rst:1331
msgid "Unicode-Escape Codecs"
msgstr ""
-#: c-api/unicode.rst:1332
+#: c-api/unicode.rst:1333
msgid "These are the \"Unicode Escape\" codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1338
+#: 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:1344
+#: 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:1351
+#: 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:1356
+#: 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:1360
+#: c-api/unicode.rst:1361
msgid "Raw-Unicode-Escape Codecs"
msgstr ""
-#: c-api/unicode.rst:1362
+#: c-api/unicode.rst:1363
msgid "These are the \"Raw Unicode Escape\" codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1368
+#: 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:1374
+#: 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:1382
+#: 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:1388
+#: 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:1392
+#: c-api/unicode.rst:1393
msgid "Latin-1 Codecs"
msgstr ""
-#: c-api/unicode.rst:1394
+#: 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:1400
+#: 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:1406
+#: 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:1413
+#: 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:1420
+#: 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:1424
+#: c-api/unicode.rst:1425
msgid "ASCII Codecs"
msgstr ""
-#: c-api/unicode.rst:1426
+#: 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:1432
+#: 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:1438
+#: 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:1445
+#: 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:1452
+#: 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:1456
+#: c-api/unicode.rst:1457
msgid "Character Map Codecs"
msgstr ""
-#: c-api/unicode.rst:1458
+#: 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:1464
+#: c-api/unicode.rst:1465
msgid "These are the mapping codec APIs:"
msgstr ""
-#: c-api/unicode.rst:1469
+#: 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:1473
+#: 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 "
@@ -1689,14 +1720,14 @@ msgid ""
"treated as undefined mappings and cause an error."
msgstr ""
-#: c-api/unicode.rst:1484
+#: 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:1488
+#: 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 "
@@ -1704,68 +1735,68 @@ msgid ""
"``None`` are treated as \"undefined mapping\" and cause an error."
msgstr ""
-#: c-api/unicode.rst:1497
+#: 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:1504
+#: 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:1507
+#: c-api/unicode.rst:1508
msgid "The following codec API is special in that maps Unicode to Unicode."
msgstr ""
-#: c-api/unicode.rst:1511
+#: 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:1515
+#: 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:1518
+#: 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:1522
+#: 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:1529
+#: 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:1536
+#: 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:1540
+#: c-api/unicode.rst:1541
msgid "MBCS codecs for Windows"
msgstr ""
-#: c-api/unicode.rst:1542
+#: 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 "
@@ -1773,13 +1804,13 @@ msgid ""
"is defined by the user settings on the machine running the codec."
msgstr ""
-#: c-api/unicode.rst:1549
+#: 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:1556
+#: 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 "
@@ -1787,58 +1818,58 @@ msgid ""
"will be stored in *consumed*."
msgstr ""
-#: c-api/unicode.rst:1564
+#: 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:1571
+#: 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:1580
+#: 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:1587
+#: 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:1591
+#: c-api/unicode.rst:1592
msgid "Methods & Slots"
msgstr ""
-#: c-api/unicode.rst:1597
+#: c-api/unicode.rst:1598
msgid "Methods and Slot Functions"
msgstr ""
-#: c-api/unicode.rst:1599
+#: 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:1603
+#: c-api/unicode.rst:1604
msgid "They all return ``NULL`` or ``-1`` if an exception occurs."
msgstr ""
-#: c-api/unicode.rst:1608
+#: c-api/unicode.rst:1609
msgid "Concat two strings giving a new Unicode string."
msgstr ""
-#: c-api/unicode.rst:1613
+#: 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 "
@@ -1847,27 +1878,27 @@ msgid ""
"list."
msgstr ""
-#: c-api/unicode.rst:1621
+#: 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:1628
+#: 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:1635
+#: 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:1643
+#: 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* "
@@ -1876,7 +1907,7 @@ msgid ""
"indicates that an error occurred and an exception has been set."
msgstr ""
-#: c-api/unicode.rst:1653
+#: 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, "
@@ -1885,36 +1916,36 @@ msgid ""
"``-2`` indicates that an error occurred and an exception has been set."
msgstr ""
-#: c-api/unicode.rst:1661
+#: c-api/unicode.rst:1662
msgid "*start* and *end* are now adjusted to behave like ``str[start:end]``."
msgstr ""
-#: c-api/unicode.rst:1668
+#: 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:1675
+#: 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:1682
+#: 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:1685
+#: 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:1691
+#: 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 "
@@ -1922,56 +1953,56 @@ msgid ""
"string as ISO-8859-1 if it contains non-ASCII characters."
msgstr ""
-#: c-api/unicode.rst:1696
+#: c-api/unicode.rst:1697
msgid "This function does not raise exceptions."
msgstr ""
-#: c-api/unicode.rst:1701
+#: c-api/unicode.rst:1702
msgid "Rich compare two Unicode strings and return one of the following:"
msgstr ""
-#: c-api/unicode.rst:1703
+#: c-api/unicode.rst:1704
msgid "``NULL`` in case an exception was raised"
msgstr ""
-#: c-api/unicode.rst:1704
+#: c-api/unicode.rst:1705
msgid ":const:`Py_True` or :const:`Py_False` for successful comparisons"
msgstr ""
-#: c-api/unicode.rst:1705
+#: c-api/unicode.rst:1706
msgid ":const:`Py_NotImplemented` in case the type combination is unknown"
msgstr ""
-#: c-api/unicode.rst:1707
+#: 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:1713
+#: 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:1719
+#: c-api/unicode.rst:1720
msgid ""
"Check whether *element* is contained in *container* and return true or false "
"accordingly."
msgstr ""
-#: c-api/unicode.rst:1722
+#: 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:1728
+#: 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 "
@@ -1979,7 +2010,7 @@ msgid ""
"the object after the call if and only if you owned it before the call.)"
msgstr ""
-#: c-api/unicode.rst:1741
+#: 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 96aaceeadc..079866e533 100644
--- a/copyright.po
+++ b/copyright.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: 2021-01-28 14:22+0100\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
@@ -24,7 +24,8 @@ msgid "Python and this documentation is:"
msgstr "Python et cette documentation sont :"
#: copyright.rst:7
-msgid "Copyright © 2001-2021 Python Software Foundation. All rights reserved."
+#, fuzzy
+msgid "Copyright © 2001-2023 Python Software Foundation. All rights reserved."
msgstr ""
"Copyright © 2001-2021 Python Software Foundation. Tous droits réservés."
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 e593d0ccde..2180adea18 100644
--- a/distutils/apiref.po
+++ b/distutils/apiref.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-03-29 15:44+0200\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
@@ -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 "
@@ -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 "
@@ -2110,7 +2112,8 @@ msgstr ""
"compilation universelle avec les architectures *i386* et *x86_64*"
#: distutils/apiref.rst:1135
-msgid "Examples of returned values on 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
diff --git a/distutils/builtdist.po b/distutils/builtdist.po
index bdcb5b63f8..97318e76e8 100644
--- a/distutils/builtdist.po
+++ b/distutils/builtdist.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 15:11+0100\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
@@ -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 "
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 cd580e4c33..b7ca9e9575 100644
--- a/extending/extending.po
+++ b/extending/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: 2021-02-07 22:27+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -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 ""
@@ -230,18 +230,16 @@ msgid "Intermezzo: Errors and 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."
+"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 "
@@ -256,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."
@@ -264,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 "
@@ -278,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 "
@@ -293,7 +291,7 @@ msgstr ""
"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
+#: 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 "
@@ -308,7 +306,7 @@ msgstr ""
"survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
"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 "
@@ -334,7 +332,7 @@ msgstr ""
"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
+#: 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,7 +347,7 @@ msgstr ""
"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 "
@@ -364,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:"
@@ -379,7 +377,7 @@ msgstr ""
"`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 "
@@ -391,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 "
@@ -401,7 +399,7 @@ msgstr ""
"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec "
"les objets que vous auriez déjà créés) !"
-#: 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 "
@@ -425,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::"
@@ -433,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::"
@@ -441,7 +439,7 @@ msgstr ""
"et initialisez-la dans la fonction d'initialisation de votre module (:c:func:"
"`PyInit_spam`) avec un objet exception ::"
-#: extending/extending.rst:235
+#: 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 "
@@ -453,7 +451,7 @@ msgstr ""
"`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de "
"``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 "
@@ -471,7 +469,7 @@ msgstr ""
"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."
@@ -479,7 +477,7 @@ msgstr ""
"Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de "
"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::"
@@ -487,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::"
@@ -499,7 +497,7 @@ msgstr ""
"En revenant vers notre fonction exemple, vous devriez maintenant être "
"capable de comprendre cette affirmation ::"
-#: extending/extending.rst:281
+#: 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 "
@@ -518,7 +516,7 @@ msgstr ""
"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`::"
@@ -527,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`. ::"
@@ -536,7 +534,7 @@ 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!)"
@@ -544,7 +542,7 @@ msgstr ""
"Dans ce cas, elle renverra un objet entier. (Oui, même les entiers sont des "
"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 "
@@ -556,7 +554,7 @@ msgstr ""
"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est "
"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::"
-#: extending/extending.rst:310
+#: 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 "
@@ -567,11 +565,11 @@ msgstr ""
"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\"::"
@@ -580,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 "
@@ -594,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:"
@@ -605,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 "
@@ -619,14 +617,14 @@ 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:"
@@ -638,7 +636,7 @@ msgstr ""
"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, "
@@ -649,7 +647,7 @@ msgstr ""
"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 "
@@ -674,7 +672,7 @@ msgstr ""
"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` "
@@ -687,7 +685,7 @@ msgstr ""
"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` "
@@ -702,7 +700,7 @@ msgstr ""
"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 "
@@ -712,7 +710,7 @@ msgstr ""
"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 "
@@ -725,11 +723,11 @@ msgstr ""
"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 "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 "
@@ -739,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 "
@@ -749,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/` "
@@ -758,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 "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 "
@@ -779,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 "
@@ -788,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 "
@@ -798,7 +796,7 @@ 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 :"
@@ -810,7 +808,7 @@ msgstr ""
"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`` "
@@ -823,7 +821,7 @@ msgstr ""
"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 "
@@ -835,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 "
@@ -844,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 "
@@ -853,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 "
@@ -873,7 +871,7 @@ msgstr ""
"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 "
@@ -895,7 +893,7 @@ msgstr ""
"`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 "
@@ -903,7 +901,7 @@ 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 "
@@ -914,15 +912,15 @@ msgstr ""
"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 "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 "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, "
@@ -931,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 "
@@ -939,7 +937,7 @@ 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!"
@@ -948,21 +946,21 @@ msgstr ""
"à 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 "Quelques exemples d'appels ::"
-#: extending/extending.rst:722
+#: extending/extending.rst:720
msgid "Keyword Parameters for Extension Functions"
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 "
@@ -982,7 +980,7 @@ msgstr ""
"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:"
@@ -992,7 +990,7 @@ msgstr ""
"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)::"
@@ -1000,11 +998,11 @@ 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 "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::"
@@ -1012,7 +1010,7 @@ 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, "
@@ -1025,7 +1023,7 @@ msgstr ""
"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 "
@@ -1041,17 +1039,17 @@ msgstr ""
"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 "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 "
@@ -1066,7 +1064,7 @@ msgstr ""
"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:"
@@ -1081,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, "
@@ -1098,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. "
@@ -1117,7 +1115,7 @@ msgstr ""
"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 "
@@ -1146,7 +1144,7 @@ msgstr ""
"ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous "
"devrons utiliser les compteurs des références."
-#: extending/extending.rst:900
+#: 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 "
@@ -1172,7 +1170,7 @@ msgstr ""
"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:911
+#: 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."
@@ -1184,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 "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:"
@@ -1206,7 +1204,7 @@ msgstr ""
"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 "
@@ -1229,7 +1227,7 @@ msgstr ""
"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 "
@@ -1238,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 "
@@ -1257,7 +1255,7 @@ msgstr ""
"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 "
@@ -1266,11 +1264,11 @@ msgid ""
"properly, as well as the previous owner)."
msgstr ""
-#: extending/extending.rst:967
+#: extending/extending.rst:965
msgid "Ownership Rules"
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 "
@@ -1281,7 +1279,7 @@ msgstr ""
"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 "
@@ -1292,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:"
@@ -1303,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 "
@@ -1321,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 "
@@ -1330,18 +1328,18 @@ 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 "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 "
@@ -1353,7 +1351,7 @@ msgstr ""
"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 "
@@ -1363,7 +1361,7 @@ msgstr ""
"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. "
@@ -1373,7 +1371,7 @@ msgstr ""
"``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 "
@@ -1390,7 +1388,7 @@ msgstr ""
"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 "
@@ -1408,20 +1406,20 @@ msgstr ""
"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 "
@@ -1444,11 +1442,11 @@ msgstr ""
"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:1092
+#: extending/extending.rst:1090
msgid "NULL Pointers"
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 "
@@ -1470,7 +1468,7 @@ msgstr ""
"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 "
@@ -1480,7 +1478,7 @@ msgstr ""
"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:"
@@ -1490,7 +1488,7 @@ msgstr ""
"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 "
@@ -1499,7 +1497,7 @@ 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 "
@@ -1509,7 +1507,7 @@ msgstr ""
"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."
@@ -1517,11 +1515,11 @@ 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 "É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 "
@@ -1545,11 +1543,11 @@ msgstr ""
"``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce "
"symbole)."
-#: extending/extending.rst:1147
+#: extending/extending.rst:1145
msgid "Providing a C API for an Extension Module"
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 "
@@ -1569,7 +1567,7 @@ msgstr ""
"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 "
@@ -1599,7 +1597,7 @@ msgstr ""
"*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:1172
+#: 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 "
@@ -1617,7 +1615,7 @@ msgstr ""
"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 "
@@ -1629,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 "
@@ -1646,7 +1644,7 @@ msgstr ""
"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. "
@@ -1664,13 +1662,13 @@ msgstr ""
"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 "
@@ -1684,7 +1682,7 @@ msgstr ""
"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 "
@@ -1703,7 +1701,7 @@ msgstr ""
"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` "
@@ -1720,25 +1718,25 @@ msgstr ""
"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 "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 "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 "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 "
@@ -1750,7 +1748,7 @@ msgstr ""
"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!"
@@ -1758,7 +1756,7 @@ 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::"
@@ -1766,7 +1764,7 @@ 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:"
@@ -1776,7 +1774,7 @@ msgstr ""
"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 "
@@ -1787,7 +1785,7 @@ msgstr ""
"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 "
@@ -1804,11 +1802,11 @@ msgstr ""
"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."
@@ -1816,7 +1814,7 @@ 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."
@@ -1824,7 +1822,7 @@ 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 "
@@ -1834,7 +1832,7 @@ msgstr ""
"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."
diff --git a/extending/newtypes.po b/extending/newtypes.po
index 8b66b30ef1..9a3b9e9924 100644
--- a/extending/newtypes.po
+++ b/extending/newtypes.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-24 17:33+0100\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"
@@ -94,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 "
@@ -109,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:"
@@ -122,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 ":pep:`442` explique le nouveau schéma de finalisation."
-#: extending/newtypes.rst:143
+#: extending/newtypes.rst:155
msgid "Object Presentation"
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`; "
@@ -169,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 "Voici un exemple simple ::"
-#: extending/newtypes.rst:188
+#: extending/newtypes.rst:200
msgid "Attribute Management"
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 "
@@ -187,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 "
@@ -196,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 "
@@ -207,17 +213,17 @@ msgid ""
"mechanism that is available."
msgstr ""
-#: extending/newtypes.rst:219
+#: extending/newtypes.rst:231
msgid "Generic Attribute Management"
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."
@@ -225,19 +231,19 @@ 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 "
@@ -249,19 +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 "
@@ -269,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 "
@@ -277,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 "
@@ -288,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 ":const:`READONLY`"
-#: extending/newtypes.rst:288
+#: extending/newtypes.rst:300
msgid "Never writable."
msgstr "Jamais disponible en écriture."
-#: extending/newtypes.rst:290
+#: extending/newtypes.rst:302
msgid ":const:`READ_RESTRICTED`"
msgstr ":const:`READ_RESTRICTED`"
-#: extending/newtypes.rst:290
+#: extending/newtypes.rst:302
msgid "Not readable in restricted mode."
msgstr "Non disponible en lecture, dans le mode restreint."
-#: extending/newtypes.rst:292
+#: extending/newtypes.rst:304
msgid ":const:`WRITE_RESTRICTED`"
msgstr ":const:`WRITE_RESTRICTED`"
-#: extending/newtypes.rst:292
+#: extending/newtypes.rst:304
msgid "Not writable in restricted mode."
msgstr "Non disponible en écriture dans le mode restreint."
-#: extending/newtypes.rst:294
+#: extending/newtypes.rst:306
msgid ":const:`RESTRICTED`"
msgstr ":const:`RESTRICTED`"
-#: extending/newtypes.rst:294
+#: extending/newtypes.rst:306
msgid "Not readable or writable in restricted mode."
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 "
@@ -351,17 +357,17 @@ msgstr ""
"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 "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:"
@@ -372,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 "
@@ -393,11 +399,11 @@ msgid ""
"should be set to ``NULL``. ::"
msgstr ""
-#: extending/newtypes.rst:367
+#: extending/newtypes.rst:379
msgid "Object Comparison"
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 "
@@ -405,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 "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 "
@@ -447,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 "
@@ -458,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, "
@@ -472,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 "
@@ -480,23 +486,23 @@ msgid ""
"handler is invoked."
msgstr ""
-#: extending/newtypes.rst:472
+#: extending/newtypes.rst:484
msgid "This function takes three arguments:"
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:"
@@ -505,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 "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, "
@@ -520,7 +526,7 @@ 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 "
@@ -531,7 +537,7 @@ msgstr ""
"`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 "
@@ -541,7 +547,7 @@ msgstr ""
"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."
@@ -549,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:"
@@ -564,11 +570,11 @@ msgid ""
"``NULL``."
msgstr ""
-#: extending/newtypes.rst:547
+#: extending/newtypes.rst:559
msgid "Weak Reference Support"
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 "
@@ -579,11 +585,11 @@ msgstr ""
"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 "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:"
@@ -591,7 +597,7 @@ 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 "
@@ -603,7 +609,7 @@ msgstr ""
"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 "
@@ -614,7 +620,7 @@ msgstr ""
"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::"
@@ -622,12 +628,12 @@ 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-"
@@ -637,11 +643,11 @@ msgstr ""
"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 "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` "
@@ -656,7 +662,7 @@ msgstr ""
"``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 "
@@ -666,20 +672,20 @@ msgstr ""
"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 "Télécharger les versions sources de *CPython*."
-#: extending/newtypes.rst:618
+#: extending/newtypes.rst:630
msgid "https://www.python.org/downloads/source/"
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 "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 d2f1c373ec..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: 2021-03-19 16:59+0100\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,11 +1192,11 @@ 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 ""
"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 "
@@ -1205,22 +1205,28 @@ msgid ""
"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:611
-#, fuzzy
+#: 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:627
+#: 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."
@@ -1229,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:632
+#: 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:634
+#: 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 "
@@ -1245,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:638
+#: 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 "
@@ -1263,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:645
+#: 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:650
+#: 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:658
+#: 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:660
+#: 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 "
@@ -1295,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:668
+#: faq/design.rst:665
msgid "In Python, such a construct would be ambiguous."
msgstr "En Python, une telle construction serait ambiguë."
-#: faq/design.rst:670
+#: 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 "
@@ -1312,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:675
+#: 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 "
@@ -1326,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:681
+#: faq/design.rst:678
msgid "For instance, take the following incomplete snippet::"
msgstr "Prenons par exemple l'extrait incomplet suivant ::"
-#: faq/design.rst:687
+#: 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 "
@@ -1344,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:693
+#: 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. "
@@ -1354,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:700
+#: faq/design.rst:697
msgid "write this::"
msgstr "écrivez ceci ::"
-#: faq/design.rst:707
+#: 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 "
@@ -1368,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:713
+#: 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:715
+#: faq/design.rst:721
msgid ""
"The colon is required primarily to enhance readability (one of the results "
"of the experimental ABC language). Consider this::"
@@ -1382,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:721
+#: faq/design.rst:727
msgid "versus ::"
msgstr "versus ::"
-#: faq/design.rst:726
+#: 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 "
@@ -1396,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:729
+#: 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 "
@@ -1408,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:735
+#: 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:737
+#: faq/design.rst:743
msgid ""
"Python lets you add a trailing comma at the end of lists, tuples, and "
"dictionaries::"
@@ -1422,11 +1446,11 @@ msgstr ""
"Python vous permet d'ajouter une virgule à la fin des listes, des *n*-uplets "
"et des dictionnaires ::"
-#: faq/design.rst:748
+#: faq/design.rst:754
msgid "There are several reasons to allow this."
msgstr "Il y a plusieurs raisons d'accepter cela."
-#: faq/design.rst:750
+#: 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 "
@@ -1439,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:755
+#: faq/design.rst:761
msgid ""
"Accidentally omitting the comma can lead to errors that are hard to "
"diagnose. For example::"
@@ -1447,7 +1471,7 @@ msgstr ""
"L'omission accidentelle de la virgule peut entraîner des erreurs difficiles "
"à diagnostiquer, par exemple ::"
-#: faq/design.rst:765
+#: 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 "
@@ -1457,7 +1481,7 @@ msgstr ""
"trois : \"*fee*\", \"*fiefoo*\" et \"*fum*\". Toujours ajouter la virgule "
"permet d'éviter cette source d'erreur."
-#: faq/design.rst:768
+#: 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 `__). *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."
+
+#~ 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 `_."
+
+#~ msgid "Gtk+"
+#~ msgstr "*Gtk+*"
+
+#~ 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 `_."
+
+#~ 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 ."
+
+#~ msgid "Kivy"
+#~ msgstr "*Kivy*"
+
+#~ 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*."
+
+#~ 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."
+
+#~ msgid "FLTK"
+#~ msgstr "*FLTK*"
+
+#~ 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 `_."
+
+#~ msgid "OpenGL"
+#~ msgstr "*OpenGL*"
+
+#~ msgid ""
+#~ "For OpenGL bindings, see `PyOpenGL `_."
+#~ msgstr ""
+#~ "Pour les clients OpenGL, voir `PyOpenGL `_."
+
+#~ msgid ""
+#~ "By installing the `PyObjc Objective-C bridge `_, Python programs can use Mac OS X's Cocoa libraries."
+#~ msgstr ""
+#~ "En installant le `PyObjc Objective-C bridge `_, les programmes Python peuvent utiliser les bibliothèques "
+#~ "Cocoa de Mac OS X."
+
+#~ 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*."
diff --git a/faq/installed.po b/faq/installed.po
index 5e2e4c400d..f28a68a33d 100644
--- a/faq/installed.po
+++ b/faq/installed.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 16:57+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -93,12 +93,12 @@ msgstr ""
#: faq/installed.rst:32
msgid ""
-"Many Unix-compatible operating systems, such as Mac OS X and some Linux "
+"Many Unix-compatible operating systems, such as macOS and some Linux "
"distributions, have Python installed by default; it's included in the base "
"installation."
msgstr ""
-"Python est installé par défaut et à l'installation par de nombreux systèmes "
-"Unix, comme Mac OS X et certaines distributions Linux."
+"Python est installé par défaut sur de nombreux systèmes compatibles Unix, "
+"comme macOS et certaines distributions Linux."
#: faq/installed.rst:38
msgid "Can I delete Python?"
diff --git a/faq/library.po b/faq/library.po
index ec75211d29..726b1db8c4 100644
--- a/faq/library.po
+++ b/faq/library.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-11-07 16:04+0100\n"
"Last-Translator: Mindiell \n"
"Language-Team: FRENCH \n"
@@ -210,19 +210,11 @@ msgstr ""
"qui n'ont que le *curses* de BSD mais, de nos jours, de tels systèmes "
"d'exploitation ne semblent plus exister ou être maintenus."
-#: faq/library.rst:109
-msgid ""
-"For Windows: use `the consolelib module `_."
-msgstr ""
-"Pour Windows : utilisez le module `consolelib `_."
-
-#: faq/library.rst:114
+#: faq/library.rst:111
msgid "Is there an equivalent to C's onexit() in Python?"
msgstr "Existe-t'il un équivalent à la fonction C ``onexit()`` en Python ?"
-#: faq/library.rst:116
+#: faq/library.rst:113
msgid ""
"The :mod:`atexit` module provides a register function that is similar to "
"C's :c:func:`onexit`."
@@ -230,11 +222,11 @@ msgstr ""
"Le module :mod:`atexit` fournit une fonction d'enregistrement similaire à la "
"fonction C :c:func:`onexit`."
-#: faq/library.rst:121
+#: faq/library.rst:118
msgid "Why don't my signal handlers work?"
msgstr "Pourquoi mes gestionnaires de signaux ne fonctionnent-t'ils pas ?"
-#: faq/library.rst:123
+#: faq/library.rst:120
msgid ""
"The most common problem is that the signal handler is declared with the "
"wrong argument list. It is called as ::"
@@ -242,19 +234,19 @@ msgstr ""
"Le problème le plus courant est d'appeler le gestionnaire de signaux avec "
"les mauvais arguments. Un gestionnaire est appelé de la façon suivante ::"
-#: faq/library.rst:128
+#: faq/library.rst:125
msgid "so it should be declared with two parameters::"
msgstr "donc il doit être déclaré avec deux paramètres ::"
-#: faq/library.rst:135
+#: faq/library.rst:132
msgid "Common tasks"
msgstr "Tâches fréquentes"
-#: faq/library.rst:138
+#: faq/library.rst:135
msgid "How do I test a Python program or component?"
msgstr "Comment tester un programme ou un composant Python ?"
-#: faq/library.rst:140
+#: faq/library.rst:137
msgid ""
"Python comes with two testing frameworks. The :mod:`doctest` module finds "
"examples in the docstrings for a module and runs them, comparing the output "
@@ -264,7 +256,7 @@ msgstr ""
"exemples dans les *docstrings* d'un module et les exécute. Il compare alors "
"la sortie avec la sortie attendue, telle que définie dans la *docstring*."
-#: faq/library.rst:144
+#: faq/library.rst:141
msgid ""
"The :mod:`unittest` module is a fancier testing framework modelled on Java "
"and Smalltalk testing frameworks."
@@ -272,7 +264,7 @@ msgstr ""
"Le module :mod:`unittest` est un cadriciel un peu plus élaboré basé sur les "
"cadriciels de test de Java et de Smalltalk."
-#: faq/library.rst:147
+#: faq/library.rst:144
msgid ""
"To make testing easier, you should use good modular design in your program. "
"Your program should have almost all functionality encapsulated in either "
@@ -291,16 +283,16 @@ msgstr ""
"manipuler des variables globales, car ceci rend le test beaucoup plus "
"difficile."
-#: faq/library.rst:155
+#: faq/library.rst:152
msgid "The \"global main logic\" of your program may be as simple as ::"
msgstr ""
"La « logique générale » d'un programme devrait être aussi simple que ::"
-#: faq/library.rst:160
+#: faq/library.rst:157
msgid "at the bottom of the main module of your program."
msgstr "à la fin du module principal du programme."
-#: faq/library.rst:162
+#: faq/library.rst:159
msgid ""
"Once your program is organized as a tractable collection of function and "
"class behaviours, you should write test functions that exercise the "
@@ -322,7 +314,7 @@ msgstr ""
"amusant, car ceci permet de trouver des bogues, voire des défauts de "
"conception, plus facilement."
-#: faq/library.rst:170
+#: faq/library.rst:167
msgid ""
"\"Support modules\" that are not intended to be the main module of a program "
"may include a self-test of the module. ::"
@@ -330,7 +322,7 @@ msgstr ""
"Les « modules auxiliaires » qui n'ont pas vocation à être le module "
"principal du programme peuvent inclure un test pour se vérifier eux-mêmes. ::"
-#: faq/library.rst:176
+#: faq/library.rst:173
msgid ""
"Even programs that interact with complex external interfaces may be tested "
"when the external interfaces are unavailable by using \"fake\" interfaces "
@@ -340,11 +332,11 @@ msgstr ""
"peuvent être testés même quand ces interfaces ne sont pas disponibles, en "
"utilisant des interfaces « simulacres » implémentées en Python."
-#: faq/library.rst:182
+#: faq/library.rst:179
msgid "How do I create documentation from doc strings?"
msgstr "Comment générer la documentation à partir des *docstrings* ?"
-#: faq/library.rst:184
+#: faq/library.rst:181
msgid ""
"The :mod:`pydoc` module can create HTML from the doc strings in your Python "
"source code. An alternative for creating API documentation purely from "
@@ -357,11 +349,11 @@ msgstr ""
">`_. `Sphinx `_ peut également inclure du contenu "
"provenant de *docstrings*."
-#: faq/library.rst:191
+#: faq/library.rst:188
msgid "How do I get a single keypress at a time?"
msgstr "Comment détecter qu'une touche est pressée ?"
-#: faq/library.rst:193
+#: faq/library.rst:190
msgid ""
"For Unix variants there are several solutions. It's straightforward to do "
"this using curses, but curses is a fairly large module to learn."
@@ -370,15 +362,15 @@ msgstr ""
"en utilisant le module *curses*, mais *curses* est un module assez "
"conséquent à apprendre."
-#: faq/library.rst:237
+#: faq/library.rst:234
msgid "Threads"
msgstr "Fils d'exécution"
-#: faq/library.rst:240
+#: faq/library.rst:237
msgid "How do I program using threads?"
msgstr "Comment programmer avec des fils d'exécution ?"
-#: faq/library.rst:242
+#: faq/library.rst:239
msgid ""
"Be sure to use the :mod:`threading` module and not the :mod:`_thread` "
"module. The :mod:`threading` module builds convenient abstractions on top of "
@@ -388,19 +380,11 @@ msgstr ""
"`_thread`. Le module :mod:`threading` fournit une abstraction plus facile à "
"manipuler que les primitives de bas-niveau du module :mod:`_thread`."
-#: faq/library.rst:246
-msgid ""
-"Aahz has a set of slides from his threading tutorial that are helpful; see "
-"http://www.pythoncraft.com/OSCON2001/."
-msgstr ""
-"Un ensemble de diapositives issues du didacticiel de Aahz sur les fils "
-"d'exécution est disponible à http://www.pythoncraft.com/OSCON2001/."
-
-#: faq/library.rst:251
+#: faq/library.rst:245
msgid "None of my threads seem to run: why?"
msgstr "Aucun de mes fils ne semble s'exécuter : pourquoi ?"
-#: faq/library.rst:253
+#: faq/library.rst:247
msgid ""
"As soon as the main thread exits, all threads are killed. Your main thread "
"is running too quickly, giving the threads no time to do any work."
@@ -409,7 +393,7 @@ msgstr ""
"fil principal s'exécute trop rapidement, sans laisser le temps aux autres "
"fils de faire quoi que ce soit."
-#: faq/library.rst:256
+#: faq/library.rst:250
msgid ""
"A simple fix is to add a sleep to the end of the program that's long enough "
"for all the threads to finish::"
@@ -417,7 +401,7 @@ msgstr ""
"Une correction simple consiste à ajouter un temps d'attente suffisamment "
"long à la fin du programme pour que tous les fils puissent se terminer ::"
-#: faq/library.rst:271
+#: faq/library.rst:265
msgid ""
"But now (on many platforms) the threads don't run in parallel, but appear to "
"run sequentially, one at a time! The reason is that the OS thread scheduler "
@@ -428,13 +412,13 @@ msgstr ""
"l'autre ! En réalité, l'ordonnanceur de fils du système d'exploitation ne "
"démarre pas de nouveau fil avant que le précédent ne soit bloqué."
-#: faq/library.rst:275
+#: faq/library.rst:269
msgid "A simple fix is to add a tiny sleep to the start of the run function::"
msgstr ""
"Une correction simple consiste à ajouter un petit temps d'attente au début "
"de la fonction ::"
-#: faq/library.rst:288
+#: faq/library.rst:282
msgid ""
"Instead of trying to guess a good delay value for :func:`time.sleep`, it's "
"better to use some kind of semaphore mechanism. One idea is to use the :mod:"
@@ -449,13 +433,13 @@ msgstr ""
"quand il se termine, et que le fil principal retire autant de jetons de la "
"file qu'il y a de fils."
-#: faq/library.rst:296
+#: faq/library.rst:290
msgid "How do I parcel out work among a bunch of worker threads?"
msgstr ""
"Comment découper et répartir une tâche au sein d'un ensemble de fils "
"d'exécutions ?"
-#: faq/library.rst:298
+#: faq/library.rst:292
msgid ""
"The easiest way is to use the :mod:`concurrent.futures` module, especially "
"the :mod:`~concurrent.futures.ThreadPoolExecutor` class."
@@ -464,7 +448,7 @@ msgstr ""
"futures`, en particulier la classe :mod:`~concurrent.futures."
"ThreadPoolExecutor`."
-#: faq/library.rst:301
+#: faq/library.rst:295
msgid ""
"Or, if you want fine control over the dispatching algorithm, you can write "
"your own logic manually. Use the :mod:`queue` module to create a queue "
@@ -481,15 +465,15 @@ msgstr ""
"pour les récupérer. La classe s'occupe de gérer les verrous pour que chaque "
"tâche soit exécutée une et une seule fois."
-#: faq/library.rst:308
+#: faq/library.rst:302
msgid "Here's a trivial example::"
msgstr "Voici un exemple trivial ::"
-#: faq/library.rst:346
+#: faq/library.rst:340
msgid "When run, this will produce the following output:"
msgstr "Quand celui-ci est exécuté, il produit la sortie suivante :"
-#: faq/library.rst:364
+#: faq/library.rst:358
msgid ""
"Consult the module's documentation for more details; the :class:`~queue."
"Queue` class provides a featureful interface."
@@ -497,13 +481,13 @@ msgstr ""
"Consultez la documentation du module pour plus de détails ; la classe :class:"
"`~queue.Queue` fournit une interface pleine de fonctionnalités."
-#: faq/library.rst:369
+#: faq/library.rst:363
msgid "What kinds of global value mutation are thread-safe?"
msgstr ""
"Quels types de mutations sur des variables globales sont compatibles avec "
"les programmes à fils d'exécution multiples ? sécurisé ?"
-#: faq/library.rst:371
+#: faq/library.rst:365
msgid ""
"A :term:`global interpreter lock` (GIL) is used internally to ensure that "
"only one thread runs in the Python VM at a time. In general, Python offers "
@@ -521,7 +505,7 @@ msgstr ""
"intermédiaire, et, par conséquent, tout le code C appelé par cette "
"instruction est donc atomique du point de vue d'un programme Python."
-#: faq/library.rst:378
+#: faq/library.rst:372
msgid ""
"In theory, this means an exact accounting requires an exact understanding of "
"the PVM bytecode implementation. In practice, it means that operations on "
@@ -534,7 +518,7 @@ msgstr ""
"listes, les dictionnaires etc.) qui « semblent atomiques » le sont "
"réellement."
-#: faq/library.rst:383
+#: faq/library.rst:377
msgid ""
"For example, the following operations are all atomic (L, L1, L2 are lists, "
"D, D1, D2 are dicts, x, y are objects, i, j are ints)::"
@@ -543,11 +527,11 @@ msgstr ""
"*L2* sont des listes, *D*, *D1* et *D2* sont des dictionnaires, *x* et *y* "
"sont des objets, *i* et *j* des entiers) ::"
-#: faq/library.rst:398
+#: faq/library.rst:392
msgid "These aren't::"
msgstr "Les suivantes ne le sont pas ::"
-#: faq/library.rst:405
+#: faq/library.rst:399
msgid ""
"Operations that replace other objects may invoke those other objects' :meth:"
"`__del__` method when their reference count reaches zero, and that can "
@@ -560,11 +544,11 @@ msgstr ""
"des changements massifs sur des dictionnaires ou des listes. En cas de "
"doute, il vaut mieux utiliser un mutex."
-#: faq/library.rst:412
+#: faq/library.rst:406
msgid "Can't we get rid of the Global Interpreter Lock?"
msgstr "Pourquoi ne pas se débarrasser du verrou global de l'interpréteur ?"
-#: faq/library.rst:416
+#: faq/library.rst:410
msgid ""
"The :term:`global interpreter lock` (GIL) is often seen as a hindrance to "
"Python's deployment on high-end multiprocessor server machines, because a "
@@ -578,7 +562,7 @@ msgstr ""
"Presque tout le code Python ne peut en effet être exécuté qu'avec le GIL "
"acquis."
-#: faq/library.rst:421
+#: faq/library.rst:415
msgid ""
"Back in the days of Python 1.5, Greg Stein actually implemented a "
"comprehensive patch set (the \"free threading\" patches) that removed the "
@@ -598,7 +582,7 @@ msgstr ""
"un seul fil d'exécution, à cause de la quantité de verrouillage plus "
"granulaire nécessaire pour contrebalancer la suppression du GIL."
-#: faq/library.rst:429
+#: faq/library.rst:423
msgid ""
"This doesn't mean that you can't make good use of Python on multi-CPU "
"machines! You just have to be creative with dividing the work up between "
@@ -616,7 +600,7 @@ msgstr ""
"le module :mod:`multiprocessing` fournit une API de plus bas-niveau pour un "
"meilleur contrôle sur la distribution des tâches."
-#: faq/library.rst:437
+#: faq/library.rst:431
msgid ""
"Judicious use of C extensions will also help; if you use a C extension to "
"perform a time-consuming task, the extension can release the GIL while the "
@@ -630,7 +614,7 @@ msgstr ""
"fils travailler. Des modules de la bibliothèque standard comme :mod:`zlib` "
"ou :mod:`hashlib` utilisent cette technique."
-#: faq/library.rst:443
+#: faq/library.rst:437
msgid ""
"It has been suggested that the GIL should be a per-interpreter-state lock "
"rather than truly global; interpreters then wouldn't be able to share "
@@ -651,7 +635,7 @@ msgstr ""
"ont leur propre liste de suppression, ces listes devraient être déplacées au "
"niveau de l'interpréteur et ainsi de suite."
-#: faq/library.rst:452
+#: faq/library.rst:446
msgid ""
"And I doubt that it can even be done in finite time, because the same "
"problem exists for 3rd party extensions. It is likely that 3rd party "
@@ -663,7 +647,7 @@ msgstr ""
"qu'il ne soit possible de les corriger pour les faire stocker leur état au "
"niveau de l'interpréteur et non plus au niveau global."
-#: faq/library.rst:457
+#: faq/library.rst:451
msgid ""
"And finally, once you have multiple interpreters not sharing any state, what "
"have you gained over running each interpreter in a separate process?"
@@ -672,15 +656,15 @@ msgstr ""
"partagent pas d'état, par rapport à faire tourner chaque interpréteur dans "
"un processus différent ?"
-#: faq/library.rst:462
+#: faq/library.rst:456
msgid "Input and Output"
msgstr "Les entrées/sorties"
-#: faq/library.rst:465
+#: faq/library.rst:459
msgid "How do I delete a file? (And other file questions...)"
msgstr "Comment supprimer un fichier ? (et autres questions sur les fichiers…)"
-#: faq/library.rst:467
+#: faq/library.rst:461
msgid ""
"Use ``os.remove(filename)`` or ``os.unlink(filename)``; for documentation, "
"see the :mod:`os` module. The two functions are identical; :func:`~os."
@@ -691,7 +675,7 @@ msgstr ""
"identiques, :func:`~os.unlink` n'est tout simplement que le nom de l'appel "
"système à cette fonction sous Unix."
-#: faq/library.rst:471
+#: faq/library.rst:465
msgid ""
"To remove a directory, use :func:`os.rmdir`; use :func:`os.mkdir` to create "
"one. ``os.makedirs(path)`` will create any intermediate directories in "
@@ -705,12 +689,12 @@ msgstr ""
"supprime les dossiers intermédiaires si ceux-ci sont vides. Pour supprimer "
"une arborescence et tout son contenu, utilisez :func:`shutil.rmtree`."
-#: faq/library.rst:477
+#: faq/library.rst:471
msgid "To rename a file, use ``os.rename(old_path, new_path)``."
msgstr ""
"``os.rename(ancien_chemin, nouveau_chemin)`` permet de renommer un fichier."
-#: faq/library.rst:479
+#: faq/library.rst:473
msgid ""
"To truncate a file, open it using ``f = open(filename, \"rb+\")``, and use "
"``f.truncate(offset)``; offset defaults to the current seek position. "
@@ -723,7 +707,7 @@ msgstr ""
"existe aussi ``os.ftruncate(df, décalage)`` pour les fichiers ouverts avec :"
"func:`os.open`, où *df* est le descripteur de fichier (un entier court)."
-#: faq/library.rst:484
+#: faq/library.rst:478
msgid ""
"The :mod:`shutil` module also contains a number of functions to work on "
"files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :"
@@ -733,11 +717,11 @@ msgstr ""
"effectuer des opérations sur des fichiers comme :func:`~shutil.copyfile`, :"
"func:`~shutil.copytree` et :func:`~shutil.rmtree`."
-#: faq/library.rst:490
+#: faq/library.rst:484
msgid "How do I copy a file?"
msgstr "Comment copier un fichier ?"
-#: faq/library.rst:492
+#: faq/library.rst:486
msgid ""
"The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note "
"that on MacOS 9 it doesn't copy the resource fork and Finder info."
@@ -746,11 +730,11 @@ msgstr ""
"MacOS 9, celle-ci ne copie pas le clonage de ressources ni les informations "
"du chercheur."
-#: faq/library.rst:497
+#: faq/library.rst:491
msgid "How do I read (or write) binary data?"
msgstr "Comment lire (ou écrire) des données binaires ?"
-#: faq/library.rst:499
+#: faq/library.rst:493
msgid ""
"To read or write complex binary data formats, it's best to use the :mod:"
"`struct` module. It allows you to take a string containing binary data "
@@ -761,7 +745,7 @@ msgstr ""
"une chaîne de caractères qui contient des données binaires, souvent des "
"nombres, en objets Python, et vice-versa."
-#: faq/library.rst:503
+#: faq/library.rst:497
msgid ""
"For example, the following code reads two 2-byte integers and one 4-byte "
"integer in big-endian format from a file::"
@@ -769,7 +753,7 @@ msgstr ""
"Par exemple, le code suivant lit, depuis un fichier, deux entiers codés sur "
"2 octets et un entier codé sur 4 octets, en format gros-boutiste ::"
-#: faq/library.rst:512
+#: faq/library.rst:506
msgid ""
"The '>' in the format string forces big-endian data; the letter 'h' reads "
"one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 "
@@ -779,7 +763,7 @@ msgstr ""
"mode gros-boutiste, la lettre « h » indique un entier court (2 octets) et la "
"lettre « l » indique un entier long (4 octets)."
-#: faq/library.rst:516
+#: faq/library.rst:510
msgid ""
"For data that is more regular (e.g. a homogeneous list of ints or floats), "
"you can also use the :mod:`array` module."
@@ -788,7 +772,7 @@ msgstr ""
"nombres à virgule flottante), il est possible d'utiliser le module :mod:"
"`array`."
-#: faq/library.rst:521
+#: faq/library.rst:515
msgid ""
"To read and write binary data, it is mandatory to open the file in binary "
"mode (here, passing ``\"rb\"`` to :func:`open`). If you use ``\"r\"`` "
@@ -801,13 +785,13 @@ msgstr ""
"en mode textuel et ``f.read()`` renvoie des objets :class:`str` au lieu "
"d'objets :class:`bytes`."
-#: faq/library.rst:529
+#: faq/library.rst:523
msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?"
msgstr ""
"Il me semble impossible d'utiliser ``os.read()`` sur un tube créé avec ``os."
"popen()`` ; pourquoi ?"
-#: faq/library.rst:531
+#: faq/library.rst:525
msgid ""
":func:`os.read` is a low-level function which takes a file descriptor, a "
"small integer representing the opened file. :func:`os.popen` creates a high-"
@@ -822,34 +806,34 @@ msgstr ""
"octets d'un tube *p* créé avec :func:`os.popen`, il faut utiliser ``p."
"read(n)``."
-#: faq/library.rst:618
+#: faq/library.rst:612
msgid "How do I access the serial (RS232) port?"
msgstr "Comment accéder au port de transmission en série (RS-232) ?"
-#: faq/library.rst:620
-msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:"
-msgstr "Pour Win32, POSIX (Linux, BSD, etc.) et Jython :"
+#: faq/library.rst:614
+msgid "For Win32, OSX, Linux, BSD, Jython, IronPython:"
+msgstr "Pour Win32, OSX, Linux, BSD, Jython et IronPython :"
-#: faq/library.rst:622
-msgid "http://pyserial.sourceforge.net"
-msgstr "http://pyserial.sourceforge.net"
+#: faq/library.rst:616
+msgid "https://pypi.org/project/pyserial/"
+msgstr "https://pypi.org/project/pyserial/"
-#: faq/library.rst:624
+#: faq/library.rst:618
msgid "For Unix, see a Usenet post by Mitch Chapman:"
msgstr ""
"Pour Unix, référez-vous à une publication sur Usenet de Mitch Chapman :"
-#: faq/library.rst:626
+#: faq/library.rst:620
msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
-#: faq/library.rst:630
+#: faq/library.rst:624
msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?"
msgstr ""
"Pourquoi fermer *sys.stdout*, *sys.stdin*, *sys.stderr* ne les ferme pas "
"réellement ?"
-#: faq/library.rst:632
+#: faq/library.rst:626
msgid ""
"Python :term:`file objects ` are a high-level layer of "
"abstraction on low-level C file descriptors."
@@ -857,7 +841,7 @@ msgstr ""
"Les :term:`objets fichiers