diff --git a/.gitattributes b/.gitattributes
index 7f909e5306..f6a7cb0faa 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -7,5 +7,5 @@
# chmod a+x ~/.local/bin/podiff
# git config diff.podiff.textconv podiff
-*.po diff=podiff
+*.po diff=podiff merge=po3way
*.pot diff=podiff
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 3090945448..162c52e974 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -15,14 +15,15 @@ jobs:
strategy:
matrix:
tool:
+ - name: sphinx-lint
+ package: sphinx-lint
+ command: 'sphinx-lint --enable all --disable line-too-long --ignore .git'
- name: Orthographe
package: pospell
apt_dependencies: hunspell hunspell-fr-comprehensive
command: 'pospell -p dict -l fr_FR $CHANGED_PO_FILES'
- name: Longueur des lignes
- package: powrap
- apt_dependencies: gettext
- command: 'powrap --check --quiet --diff $CHANGED_PO_FILES'
+ command: '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}}'' $CHANGED_PO_FILES'
- name: Grammaire
package: padpo
command: 'padpo -i $CHANGED_PO_FILES 2>&1 | grep -v -Ff padpo.ignore'
@@ -42,9 +43,13 @@ jobs:
python-version: '3.9'
- name: Install ${{ matrix.tool.package }}
run: |
- [ -n "${{ matrix.tool.apt_dependencies }}" ] && sudo apt-get update && sudo apt-get install -y ${{ matrix.tool.apt_dependencies }}
- python -m pip install --upgrade pip setuptools wheel
- python -m pip install ${{ matrix.tool.package }}
+ if [ -n "${{ matrix.tool.apt_dependencies }}" ]; then
+ sudo apt-get update && sudo apt-get install -y ${{ matrix.tool.apt_dependencies }}
+ fi
+ if [ -n "${{ matrix.tool.package }}" ]; then
+ python -m pip install --upgrade pip setuptools wheel
+ python -m pip install ${{ matrix.tool.package }}
+ fi
- name: Run ${{ matrix.tool.package }}
env:
ADDED_FILES: ${{ join(fromJSON(steps.changed_files.outputs.added), ' ') }}
@@ -83,7 +88,7 @@ jobs:
run: |
mkdir -p ~/locales/fr/LC_MESSAGES/
cp -uv --parents *.po */*.po ~/locales/fr/LC_MESSAGES/
- git -C ~/cpython checkout 895591c1f0bdec5ad357fe6a5fd0875990061357
+ git -C ~/cpython checkout $(grep ^CPYTHON_CURRENT_COMMIT Makefile| cut -d= -f2)
- name: Prepare venv
run: |
# If the venv exists but is broken, drop it (happens on Python upgrades):
@@ -91,4 +96,4 @@ jobs:
[ -d $HOME/cpython/Doc/venv/bin/ -a ! -e $HOME/cpython/Doc/venv/bin/python ] && rm -fr $HOME/cpython/Doc/venv
make -C $HOME/cpython/Doc venv
- name: sphinx-build
- run: make -C $HOME/cpython/Doc SPHINXOPTS="-qW -j4 -D locale_dirs=$HOME/locales -D language=fr -D gettext_compact=0" autobuild-dev-html
+ run: make -C $HOME/cpython/Doc SPHINXOPTS="-q -j4 -D locale_dirs=$HOME/locales -D language=fr -D gettext_compact=0" autobuild-dev-html
diff --git a/.tx/config b/.tx/config
deleted file mode 100644
index 5de616379d..0000000000
--- a/.tx/config
+++ /dev/null
@@ -1,2331 +0,0 @@
-[main]
-host = https://www.transifex.com
-[python-newest.glossary_]
-trans.fr = glossary.po
-type = PO
-source_lang = en
-
-[python-newest.license]
-trans.fr = license.po
-type = PO
-source_lang = en
-
-[python-newest.sphinx]
-trans.fr = sphinx.po
-type = PO
-source_lang = en
-
-[python-newest.about]
-trans.fr = about.po
-type = PO
-source_lang = en
-
-[python-newest.bugs]
-trans.fr = bugs.po
-type = PO
-source_lang = en
-
-[python-newest.copyright]
-trans.fr = copyright.po
-type = PO
-source_lang = en
-
-[python-newest.contents]
-trans.fr = contents.po
-type = PO
-source_lang = en
-
-[python-newest.library--re]
-trans.fr = library/re.po
-type = PO
-source_lang = en
-
-[python-newest.library--sysconfig]
-trans.fr = library/sysconfig.po
-type = PO
-source_lang = en
-
-[python-newest.library--getpass]
-trans.fr = library/getpass.po
-type = PO
-source_lang = en
-
-[python-newest.library--imghdr]
-trans.fr = library/imghdr.po
-type = PO
-source_lang = en
-
-[python-newest.library--zipapp]
-trans.fr = library/zipapp.po
-type = PO
-source_lang = en
-
-[python-newest.library--urllib_error]
-trans.fr = library/urllib.error.po
-type = PO
-source_lang = en
-
-[python-newest.library--urllib_parse]
-trans.fr = library/urllib.parse.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_sax_utils]
-trans.fr = library/xml.sax.utils.po
-type = PO
-source_lang = en
-
-[python-newest.library--mmap]
-trans.fr = library/mmap.po
-type = PO
-source_lang = en
-
-[python-newest.library--difflib]
-trans.fr = library/difflib.po
-type = PO
-source_lang = en
-
-[python-newest.library--tkinter_scrolledtext]
-trans.fr = library/tkinter.scrolledtext.po
-type = PO
-source_lang = en
-
-[python-newest.library--parser]
-trans.fr = library/parser.po
-type = PO
-source_lang = en
-
-[python-newest.library--pyexpat]
-trans.fr = library/pyexpat.po
-type = PO
-source_lang = en
-
-[python-newest.library--curses_panel]
-trans.fr = library/curses.panel.po
-type = PO
-source_lang = en
-
-[python-newest.library--fractions]
-trans.fr = library/fractions.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-subprocess]
-trans.fr = library/asyncio-subprocess.po
-type = PO
-source_lang = en
-
-[python-newest.library--compileall]
-trans.fr = library/compileall.po
-type = PO
-source_lang = en
-
-[python-newest.library--optparse]
-trans.fr = library/optparse.po
-type = PO
-source_lang = en
-
-[python-newest.library--imp]
-trans.fr = library/imp.po
-type = PO
-source_lang = en
-
-[python-newest.library--locale]
-trans.fr = library/locale.po
-type = PO
-source_lang = en
-
-[python-newest.library--ctypes]
-trans.fr = library/ctypes.po
-type = PO
-source_lang = en
-
-[python-newest.library--doctest]
-trans.fr = library/doctest.po
-type = PO
-source_lang = en
-
-[python-newest.library--distribution]
-trans.fr = library/distribution.po
-type = PO
-source_lang = en
-
-[python-newest.library--ipc]
-trans.fr = library/ipc.po
-type = PO
-source_lang = en
-
-[python-newest.library--numeric]
-trans.fr = library/numeric.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_headerregistry]
-trans.fr = library/email.headerregistry.po
-type = PO
-source_lang = en
-
-[python-newest.library--wave]
-trans.fr = library/wave.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_errors]
-trans.fr = library/email.errors.po
-type = PO
-source_lang = en
-
-[python-newest.library--sunau]
-trans.fr = library/sunau.po
-type = PO
-source_lang = en
-
-[python-newest.library--datetime]
-trans.fr = library/datetime.po
-type = PO
-source_lang = en
-
-[python-newest.library--macpath]
-trans.fr = library/macpath.po
-type = PO
-source_lang = en
-
-[python-newest.library--unix]
-trans.fr = library/unix.po
-type = PO
-source_lang = en
-
-[python-newest.library--array]
-trans.fr = library/array.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_policy]
-trans.fr = library/email.policy.po
-type = PO
-source_lang = en
-
-[python-newest.library--sched]
-trans.fr = library/sched.po
-type = PO
-source_lang = en
-
-[python-newest.library--http_cookies]
-trans.fr = library/http.cookies.po
-type = PO
-source_lang = en
-
-[python-newest.library--shutil]
-trans.fr = library/shutil.po
-type = PO
-source_lang = en
-
-[python-newest.library--symbol]
-trans.fr = library/symbol.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_dom_minidom]
-trans.fr = library/xml.dom.minidom.po
-type = PO
-source_lang = en
-
-[python-newest.library--modules]
-trans.fr = library/modules.po
-type = PO
-source_lang = en
-
-[python-newest.library--unicodedata]
-trans.fr = library/unicodedata.po
-type = PO
-source_lang = en
-
-[python-newest.library--tkinter_ttk]
-trans.fr = library/tkinter.ttk.po
-type = PO
-source_lang = en
-
-[python-newest.library--binascii]
-trans.fr = library/binascii.po
-type = PO
-source_lang = en
-
-[python-newest.library--linecache]
-trans.fr = library/linecache.po
-type = PO
-source_lang = en
-
-[python-newest.library--functools]
-trans.fr = library/functools.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_sax_reader]
-trans.fr = library/xml.sax.reader.po
-type = PO
-source_lang = en
-
-[python-newest.library--pydoc]
-trans.fr = library/pydoc.po
-type = PO
-source_lang = en
-
-[python-newest.library--pwd]
-trans.fr = library/pwd.po
-type = PO
-source_lang = en
-
-[python-newest.library--selectors]
-trans.fr = library/selectors.po
-type = PO
-source_lang = en
-
-[python-newest.library--os_path]
-trans.fr = library/os.path.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-sync]
-trans.fr = library/asyncio-sync.po
-type = PO
-source_lang = en
-
-[python-newest.library--_dummy_thread]
-trans.fr = library/_dummy_thread.po
-type = PO
-source_lang = en
-
-[python-newest.library--fcntl]
-trans.fr = library/fcntl.po
-type = PO
-source_lang = en
-
-[python-newest.library--constants]
-trans.fr = library/constants.po
-type = PO
-source_lang = en
-
-[python-newest.library--statistics]
-trans.fr = library/statistics.po
-type = PO
-source_lang = en
-
-[python-newest.library--pty]
-trans.fr = library/pty.po
-type = PO
-source_lang = en
-
-[python-newest.library--crypto]
-trans.fr = library/crypto.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml]
-trans.fr = library/xml.po
-type = PO
-source_lang = en
-
-[python-newest.library--imaplib]
-trans.fr = library/imaplib.po
-type = PO
-source_lang = en
-
-[python-newest.library--text]
-trans.fr = library/text.po
-type = PO
-source_lang = en
-
-[python-newest.library--mm]
-trans.fr = library/mm.po
-type = PO
-source_lang = en
-
-[python-newest.library--tempfile]
-trans.fr = library/tempfile.po
-type = PO
-source_lang = en
-
-[python-newest.library--traceback]
-trans.fr = library/traceback.po
-type = PO
-source_lang = en
-
-[python-newest.library--itertools]
-trans.fr = library/itertools.po
-type = PO
-source_lang = en
-
-[python-newest.library--__future__]
-trans.fr = library/__future__.po
-type = PO
-source_lang = en
-
-[python-newest.library--csv]
-trans.fr = library/csv.po
-type = PO
-source_lang = en
-
-[python-newest.library--stringprep]
-trans.fr = library/stringprep.po
-type = PO
-source_lang = en
-
-[python-newest.library--development]
-trans.fr = library/development.po
-type = PO
-source_lang = en
-
-[python-newest.library--platform]
-trans.fr = library/platform.po
-type = PO
-source_lang = en
-
-[python-newest.library--time]
-trans.fr = library/time.po
-type = PO
-source_lang = en
-
-[python-newest.library--pyclbr]
-trans.fr = library/pyclbr.po
-type = PO
-source_lang = en
-
-[python-newest.library--crypt]
-trans.fr = library/crypt.po
-type = PO
-source_lang = en
-
-[python-newest.library--token]
-trans.fr = library/token.po
-type = PO
-source_lang = en
-
-[python-newest.library--spwd]
-trans.fr = library/spwd.po
-type = PO
-source_lang = en
-
-[python-newest.library--modulefinder]
-trans.fr = library/modulefinder.po
-type = PO
-source_lang = en
-
-[python-newest.library--argparse]
-trans.fr = library/argparse.po
-type = PO
-source_lang = en
-
-[python-newest.library--collections]
-trans.fr = library/collections.po
-type = PO
-source_lang = en
-
-[python-newest.library--http]
-trans.fr = library/http.po
-type = PO
-source_lang = en
-
-[python-newest.library--email]
-trans.fr = library/email.po
-type = PO
-source_lang = en
-
-[python-newest.library--http_cookiejar]
-trans.fr = library/http.cookiejar.po
-type = PO
-source_lang = en
-
-[python-newest.library--cmd]
-trans.fr = library/cmd.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_dom_pulldom]
-trans.fr = library/xml.dom.pulldom.po
-type = PO
-source_lang = en
-
-[python-newest.library--glob]
-trans.fr = library/glob.po
-type = PO
-source_lang = en
-
-[python-newest.library--keyword]
-trans.fr = library/keyword.po
-type = PO
-source_lang = en
-
-[python-newest.library--concurrency]
-trans.fr = library/concurrency.po
-type = PO
-source_lang = en
-
-[python-newest.library--atexit]
-trans.fr = library/atexit.po
-type = PO
-source_lang = en
-
-[python-newest.library--py_compile]
-trans.fr = library/py_compile.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_encoders]
-trans.fr = library/email.encoders.po
-type = PO
-source_lang = en
-
-[python-newest.library--inspect]
-trans.fr = library/inspect.po
-type = PO
-source_lang = en
-
-[python-newest.library--unittest_mock]
-trans.fr = library/unittest.mock.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-eventloops]
-trans.fr = library/asyncio-eventloops.po
-type = PO
-source_lang = en
-
-[python-newest.library--allos]
-trans.fr = library/allos.po
-type = PO
-source_lang = en
-
-[python-newest.library--stat]
-trans.fr = library/stat.po
-type = PO
-source_lang = en
-
-[python-newest.library--curses]
-trans.fr = library/curses.po
-type = PO
-source_lang = en
-
-[python-newest.library--persistence]
-trans.fr = library/persistence.po
-type = PO
-source_lang = en
-
-[python-newest.library--trace]
-trans.fr = library/trace.po
-type = PO
-source_lang = en
-
-[python-newest.library--zipfile]
-trans.fr = library/zipfile.po
-type = PO
-source_lang = en
-
-[python-newest.library--mimetypes]
-trans.fr = library/mimetypes.po
-type = PO
-source_lang = en
-
-[python-newest.library--superseded]
-trans.fr = library/superseded.po
-type = PO
-source_lang = en
-
-[python-newest.library--internet]
-trans.fr = library/internet.po
-type = PO
-source_lang = en
-
-[python-newest.library--poplib]
-trans.fr = library/poplib.po
-type = PO
-source_lang = en
-
-[python-newest.library--language]
-trans.fr = library/language.po
-type = PO
-source_lang = en
-
-[python-newest.library--string]
-trans.fr = library/string.po
-type = PO
-source_lang = en
-
-[python-newest.library--mailcap]
-trans.fr = library/mailcap.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_parser]
-trans.fr = library/email.parser.po
-type = PO
-source_lang = en
-
-[python-newest.library--bz2]
-trans.fr = library/bz2.po
-type = PO
-source_lang = en
-
-[python-newest.library--builtins]
-trans.fr = library/builtins.po
-type = PO
-source_lang = en
-
-[python-newest.library--logging_config]
-trans.fr = library/logging.config.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_sax_handler]
-trans.fr = library/xml.sax.handler.po
-type = PO
-source_lang = en
-
-[python-newest.library--intro]
-trans.fr = library/intro.po
-type = PO
-source_lang = en
-
-[python-newest.library--python]
-trans.fr = library/python.po
-type = PO
-source_lang = en
-
-[python-newest.library--tarfile]
-trans.fr = library/tarfile.po
-type = PO
-source_lang = en
-
-[python-newest.library--fnmatch]
-trans.fr = library/fnmatch.po
-type = PO
-source_lang = en
-
-[python-newest.library--tty]
-trans.fr = library/tty.po
-type = PO
-source_lang = en
-
-[python-newest.library--signal]
-trans.fr = library/signal.po
-type = PO
-source_lang = en
-
-[python-newest.library--contextlib]
-trans.fr = library/contextlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--pkgutil]
-trans.fr = library/pkgutil.po
-type = PO
-source_lang = en
-
-[python-newest.library--codeop]
-trans.fr = library/codeop.po
-type = PO
-source_lang = en
-
-[python-newest.library--gettext]
-trans.fr = library/gettext.po
-type = PO
-source_lang = en
-
-[python-newest.library--enum]
-trans.fr = library/enum.po
-type = PO
-source_lang = en
-
-[python-newest.library--decimal]
-trans.fr = library/decimal.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio]
-trans.fr = library/asyncio.po
-type = PO
-source_lang = en
-
-[python-newest.library--windows]
-trans.fr = library/windows.po
-type = PO
-source_lang = en
-
-[python-newest.library--urllib_request]
-trans.fr = library/urllib.request.po
-type = PO
-source_lang = en
-
-[python-newest.library--socket]
-trans.fr = library/socket.po
-type = PO
-source_lang = en
-
-[python-newest.library--mailbox]
-trans.fr = library/mailbox.po
-type = PO
-source_lang = en
-
-[python-newest.library--rlcompleter]
-trans.fr = library/rlcompleter.po
-type = PO
-source_lang = en
-
-[python-newest.library--gzip]
-trans.fr = library/gzip.po
-type = PO
-source_lang = en
-
-[python-newest.library--http_client]
-trans.fr = library/http.client.po
-type = PO
-source_lang = en
-
-[python-newest.library--pickle]
-trans.fr = library/pickle.po
-type = PO
-source_lang = en
-
-[python-newest.library--concurrent]
-trans.fr = library/concurrent.po
-type = PO
-source_lang = en
-
-[python-newest.library--timeit]
-trans.fr = library/timeit.po
-type = PO
-source_lang = en
-
-[python-newest.library--tkinter_tix]
-trans.fr = library/tkinter.tix.po
-type = PO
-source_lang = en
-
-[python-newest.library--readline]
-trans.fr = library/readline.po
-type = PO
-source_lang = en
-
-[python-newest.library--netrc]
-trans.fr = library/netrc.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-dev]
-trans.fr = library/asyncio-dev.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_charset]
-trans.fr = library/email.charset.po
-type = PO
-source_lang = en
-
-[python-newest.library--venv]
-trans.fr = library/venv.po
-type = PO
-source_lang = en
-
-[python-newest.library--struct]
-trans.fr = library/struct.po
-type = PO
-source_lang = en
-
-[python-newest.library--dbm]
-trans.fr = library/dbm.po
-type = PO
-source_lang = en
-
-[python-newest.library--xdrlib]
-trans.fr = library/xdrlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--markup]
-trans.fr = library/markup.po
-type = PO
-source_lang = en
-
-[python-newest.library--dummy_threading]
-trans.fr = library/dummy_threading.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_dom]
-trans.fr = library/xml.dom.po
-type = PO
-source_lang = en
-
-[python-newest.library--smtpd]
-trans.fr = library/smtpd.po
-type = PO
-source_lang = en
-
-[python-newest.library--idle]
-trans.fr = library/idle.po
-type = PO
-source_lang = en
-
-[python-newest.library--pipes]
-trans.fr = library/pipes.po
-type = PO
-source_lang = en
-
-[python-newest.library--chunk]
-trans.fr = library/chunk.po
-type = PO
-source_lang = en
-
-[python-newest.library--telnetlib]
-trans.fr = library/telnetlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--filesys]
-trans.fr = library/filesys.po
-type = PO
-source_lang = en
-
-[python-newest.library--asynchat]
-trans.fr = library/asynchat.po
-type = PO
-source_lang = en
-
-[python-newest.library--numbers]
-trans.fr = library/numbers.po
-type = PO
-source_lang = en
-
-[python-newest.library--xmlrpc_server]
-trans.fr = library/xmlrpc.server.po
-type = PO
-source_lang = en
-
-[python-newest.library--plistlib]
-trans.fr = library/plistlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--secrets]
-trans.fr = library/secrets.po
-type = PO
-source_lang = en
-
-[python-newest.library--marshal]
-trans.fr = library/marshal.po
-type = PO
-source_lang = en
-
-[python-newest.library--html_parser]
-trans.fr = library/html.parser.po
-type = PO
-source_lang = en
-
-[python-newest.library--netdata]
-trans.fr = library/netdata.po
-type = PO
-source_lang = en
-
-[python-newest.library--gc]
-trans.fr = library/gc.po
-type = PO
-source_lang = en
-
-[python-newest.library--fileformats]
-trans.fr = library/fileformats.po
-type = PO
-source_lang = en
-
-[python-newest.library--bisect]
-trans.fr = library/bisect.po
-type = PO
-source_lang = en
-
-[python-newest.library--symtable]
-trans.fr = library/symtable.po
-type = PO
-source_lang = en
-
-[python-newest.library--nis]
-trans.fr = library/nis.po
-type = PO
-source_lang = en
-
-[python-newest.library--html]
-trans.fr = library/html.po
-type = PO
-source_lang = en
-
-[python-newest.library--typing]
-trans.fr = library/typing.po
-type = PO
-source_lang = en
-
-[python-newest.library--weakref]
-trans.fr = library/weakref.po
-type = PO
-source_lang = en
-
-[python-newest.library--shlex]
-trans.fr = library/shlex.po
-type = PO
-source_lang = en
-
-[python-newest.library--binary]
-trans.fr = library/binary.po
-type = PO
-source_lang = en
-
-[python-newest.library--distutils]
-trans.fr = library/distutils.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_generator]
-trans.fr = library/email.generator.po
-type = PO
-source_lang = en
-
-[python-newest.library--ensurepip]
-trans.fr = library/ensurepip.po
-type = PO
-source_lang = en
-
-[python-newest.library--importlib]
-trans.fr = library/importlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--warnings]
-trans.fr = library/warnings.po
-type = PO
-source_lang = en
-
-[python-newest.library--tabnanny]
-trans.fr = library/tabnanny.po
-type = PO
-source_lang = en
-
-[python-newest.library--json]
-trans.fr = library/json.po
-type = PO
-source_lang = en
-
-[python-newest.library--reprlib]
-trans.fr = library/reprlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--concurrent_futures]
-trans.fr = library/concurrent.futures.po
-type = PO
-source_lang = en
-
-[python-newest.library--tk]
-trans.fr = library/tk.po
-type = PO
-source_lang = en
-
-[python-newest.library--abc]
-trans.fr = library/abc.po
-type = PO
-source_lang = en
-
-[python-newest.library--filecmp]
-trans.fr = library/filecmp.po
-type = PO
-source_lang = en
-
-[python-newest.library--undoc]
-trans.fr = library/undoc.po
-type = PO
-source_lang = en
-
-[python-newest.library--functions]
-trans.fr = library/functions.po
-type = PO
-source_lang = en
-
-[python-newest.library--unittest_mock-examples]
-trans.fr = library/unittest.mock-examples.po
-type = PO
-source_lang = en
-
-[python-newest.library--heapq]
-trans.fr = library/heapq.po
-type = PO
-source_lang = en
-
-[python-newest.library--termios]
-trans.fr = library/termios.po
-type = PO
-source_lang = en
-
-[python-newest.library--errno]
-trans.fr = library/errno.po
-type = PO
-source_lang = en
-
-[python-newest.library--calendar]
-trans.fr = library/calendar.po
-type = PO
-source_lang = en
-
-[python-newest.library--configparser]
-trans.fr = library/configparser.po
-type = PO
-source_lang = en
-
-[python-newest.library--unittest]
-trans.fr = library/unittest.po
-type = PO
-source_lang = en
-
-[python-newest.library--socketserver]
-trans.fr = library/socketserver.po
-type = PO
-source_lang = en
-
-[python-newest.library--tokenize]
-trans.fr = library/tokenize.po
-type = PO
-source_lang = en
-
-[python-newest.library--random]
-trans.fr = library/random.po
-type = PO
-source_lang = en
-
-[python-newest.library--code]
-trans.fr = library/code.po
-type = PO
-source_lang = en
-
-[python-newest.library--sqlite3]
-trans.fr = library/sqlite3.po
-type = PO
-source_lang = en
-
-[python-newest.library--colorsys]
-trans.fr = library/colorsys.po
-type = PO
-source_lang = en
-
-[python-newest.library--quopri]
-trans.fr = library/quopri.po
-type = PO
-source_lang = en
-
-[python-newest.library--dis]
-trans.fr = library/dis.po
-type = PO
-source_lang = en
-
-[python-newest.library--stdtypes]
-trans.fr = library/stdtypes.po
-type = PO
-source_lang = en
-
-[python-newest.library--tracemalloc]
-trans.fr = library/tracemalloc.po
-type = PO
-source_lang = en
-
-[python-newest.library--queue]
-trans.fr = library/queue.po
-type = PO
-source_lang = en
-
-[python-newest.library--posix]
-trans.fr = library/posix.po
-type = PO
-source_lang = en
-
-[python-newest.library--turtle]
-trans.fr = library/turtle.po
-type = PO
-source_lang = en
-
-[python-newest.library--faulthandler]
-trans.fr = library/faulthandler.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_examples]
-trans.fr = library/email.examples.po
-type = PO
-source_lang = en
-
-[python-newest.library--base64]
-trans.fr = library/base64.po
-type = PO
-source_lang = en
-
-[python-newest.library--index]
-trans.fr = library/index.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_message]
-trans.fr = library/email.message.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_etree_elementtree]
-trans.fr = library/xml.etree.elementtree.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-task]
-trans.fr = library/asyncio-task.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncore]
-trans.fr = library/asyncore.po
-type = PO
-source_lang = en
-
-[python-newest.library--uu]
-trans.fr = library/uu.po
-type = PO
-source_lang = en
-
-[python-newest.library--urllib_robotparser]
-trans.fr = library/urllib.robotparser.po
-type = PO
-source_lang = en
-
-[python-newest.library--cgitb]
-trans.fr = library/cgitb.po
-type = PO
-source_lang = en
-
-[python-newest.library--pathlib]
-trans.fr = library/pathlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--misc]
-trans.fr = library/misc.po
-type = PO
-source_lang = en
-
-[python-newest.library--_thread]
-trans.fr = library/_thread.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_header]
-trans.fr = library/email.header.po
-type = PO
-source_lang = en
-
-[python-newest.library--runpy]
-trans.fr = library/runpy.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-eventloop]
-trans.fr = library/asyncio-eventloop.po
-type = PO
-source_lang = en
-
-[python-newest.library--textwrap]
-trans.fr = library/textwrap.po
-type = PO
-source_lang = en
-
-[python-newest.library--msilib]
-trans.fr = library/msilib.po
-type = PO
-source_lang = en
-
-[python-newest.library--debug]
-trans.fr = library/debug.po
-type = PO
-source_lang = en
-
-[python-newest.library--nntplib]
-trans.fr = library/nntplib.po
-type = PO
-source_lang = en
-
-[python-newest.library--ast]
-trans.fr = library/ast.po
-type = PO
-source_lang = en
-
-[python-newest.library--site]
-trans.fr = library/site.po
-type = PO
-source_lang = en
-
-[python-newest.library--uuid]
-trans.fr = library/uuid.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_iterators]
-trans.fr = library/email.iterators.po
-type = PO
-source_lang = en
-
-[python-newest.library--threading]
-trans.fr = library/threading.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_mime]
-trans.fr = library/email.mime.po
-type = PO
-source_lang = en
-
-[python-newest.library--shelve]
-trans.fr = library/shelve.po
-type = PO
-source_lang = en
-
-[python-newest.library--profile]
-trans.fr = library/profile.po
-type = PO
-source_lang = en
-
-[python-newest.library--math]
-trans.fr = library/math.po
-type = PO
-source_lang = en
-
-[python-newest.library--fileinput]
-trans.fr = library/fileinput.po
-type = PO
-source_lang = en
-
-[python-newest.library--select]
-trans.fr = library/select.po
-type = PO
-source_lang = en
-
-[python-newest.library--pprint]
-trans.fr = library/pprint.po
-type = PO
-source_lang = en
-
-[python-newest.library--datatypes]
-trans.fr = library/datatypes.po
-type = PO
-source_lang = en
-
-[python-newest.library--ssl]
-trans.fr = library/ssl.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-queue]
-trans.fr = library/asyncio-queue.po
-type = PO
-source_lang = en
-
-[python-newest.library--binhex]
-trans.fr = library/binhex.po
-type = PO
-source_lang = en
-
-[python-newest.library--io]
-trans.fr = library/io.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-protocol]
-trans.fr = library/asyncio-protocol.po
-type = PO
-source_lang = en
-
-[python-newest.library--othergui]
-trans.fr = library/othergui.po
-type = PO
-source_lang = en
-
-[python-newest.library--webbrowser]
-trans.fr = library/webbrowser.po
-type = PO
-source_lang = en
-
-[python-newest.library--hmac]
-trans.fr = library/hmac.po
-type = PO
-source_lang = en
-
-[python-newest.library--collections_abc]
-trans.fr = library/collections.abc.po
-type = PO
-source_lang = en
-
-[python-newest.library--ftplib]
-trans.fr = library/ftplib.po
-type = PO
-source_lang = en
-
-[python-newest.library--multiprocessing]
-trans.fr = library/multiprocessing.po
-type = PO
-source_lang = en
-
-[python-newest.library--types]
-trans.fr = library/types.po
-type = PO
-source_lang = en
-
-[python-newest.library--ipaddress]
-trans.fr = library/ipaddress.po
-type = PO
-source_lang = en
-
-[python-newest.library--fpectl]
-trans.fr = library/fpectl.po
-type = PO
-source_lang = en
-
-[python-newest.library--exceptions]
-trans.fr = library/exceptions.po
-type = PO
-source_lang = en
-
-[python-newest.library--asyncio-stream]
-trans.fr = library/asyncio-stream.po
-type = PO
-source_lang = en
-
-[python-newest.library--custominterp]
-trans.fr = library/custominterp.po
-type = PO
-source_lang = en
-
-[python-newest.library--codecs]
-trans.fr = library/codecs.po
-type = PO
-source_lang = en
-
-[python-newest.library--bdb]
-trans.fr = library/bdb.po
-type = PO
-source_lang = en
-
-[python-newest.library--archiving]
-trans.fr = library/archiving.po
-type = PO
-source_lang = en
-
-[python-newest.library--hashlib]
-trans.fr = library/hashlib.po
-type = PO
-source_lang = en
-
-[python-newest.library--tkinter]
-trans.fr = library/tkinter.po
-type = PO
-source_lang = en
-
-[python-newest.library--sys]
-trans.fr = library/sys.po
-type = PO
-source_lang = en
-
-[python-newest.library--cmath]
-trans.fr = library/cmath.po
-type = PO
-source_lang = en
-
-[python-newest.library--functional]
-trans.fr = library/functional.po
-type = PO
-source_lang = en
-
-[python-newest.library--html_entities]
-trans.fr = library/html.entities.po
-type = PO
-source_lang = en
-
-[python-newest.library--resource]
-trans.fr = library/resource.po
-type = PO
-source_lang = en
-
-[python-newest.library--pickletools]
-trans.fr = library/pickletools.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_util]
-trans.fr = library/email.util.po
-type = PO
-source_lang = en
-
-[python-newest.library--xmlrpc]
-trans.fr = library/xmlrpc.po
-type = PO
-source_lang = en
-
-[python-newest.library--lzma]
-trans.fr = library/lzma.po
-type = PO
-source_lang = en
-
-[python-newest.library--syslog]
-trans.fr = library/syslog.po
-type = PO
-source_lang = en
-
-[python-newest.library--subprocess]
-trans.fr = library/subprocess.po
-type = PO
-source_lang = en
-
-[python-newest.library--pdb]
-trans.fr = library/pdb.po
-type = PO
-source_lang = en
-
-[python-newest.library--wsgiref]
-trans.fr = library/wsgiref.po
-type = PO
-source_lang = en
-
-[python-newest.library--formatter]
-trans.fr = library/formatter.po
-type = PO
-source_lang = en
-
-[python-newest.library--getopt]
-trans.fr = library/getopt.po
-type = PO
-source_lang = en
-
-[python-newest.library--cgi]
-trans.fr = library/cgi.po
-type = PO
-source_lang = en
-
-[python-newest.library--winsound]
-trans.fr = library/winsound.po
-type = PO
-source_lang = en
-
-[python-newest.library--audioop]
-trans.fr = library/audioop.po
-type = PO
-source_lang = en
-
-[python-newest.library--__main__]
-trans.fr = library/__main__.po
-type = PO
-source_lang = en
-
-[python-newest.library--sndhdr]
-trans.fr = library/sndhdr.po
-type = PO
-source_lang = en
-
-[python-newest.library--copy]
-trans.fr = library/copy.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_contentmanager]
-trans.fr = library/email.contentmanager.po
-type = PO
-source_lang = en
-
-[python-newest.library--aifc]
-trans.fr = library/aifc.po
-type = PO
-source_lang = en
-
-[python-newest.library--msvcrt]
-trans.fr = library/msvcrt.po
-type = PO
-source_lang = en
-
-[python-newest.library--xmlrpc_client]
-trans.fr = library/xmlrpc.client.po
-type = PO
-source_lang = en
-
-[python-newest.library--logging_handlers]
-trans.fr = library/logging.handlers.po
-type = PO
-source_lang = en
-
-[python-newest.library--grp]
-trans.fr = library/grp.po
-type = PO
-source_lang = en
-
-[python-newest.library--logging]
-trans.fr = library/logging.po
-type = PO
-source_lang = en
-
-[python-newest.library--i18n]
-trans.fr = library/i18n.po
-type = PO
-source_lang = en
-
-[python-newest.library--zipimport]
-trans.fr = library/zipimport.po
-type = PO
-source_lang = en
-
-[python-newest.library--curses_ascii]
-trans.fr = library/curses.ascii.po
-type = PO
-source_lang = en
-
-[python-newest.library--operator]
-trans.fr = library/operator.po
-type = PO
-source_lang = en
-
-[python-newest.library--winreg]
-trans.fr = library/winreg.po
-type = PO
-source_lang = en
-
-[python-newest.library--frameworks]
-trans.fr = library/frameworks.po
-type = PO
-source_lang = en
-
-[python-newest.library--ossaudiodev]
-trans.fr = library/ossaudiodev.po
-type = PO
-source_lang = en
-
-[python-newest.library--urllib]
-trans.fr = library/urllib.po
-type = PO
-source_lang = en
-
-[python-newest.library--os]
-trans.fr = library/os.po
-type = PO
-source_lang = en
-
-[python-newest.library--smtplib]
-trans.fr = library/smtplib.po
-type = PO
-source_lang = en
-
-[python-newest.library--copyreg]
-trans.fr = library/copyreg.po
-type = PO
-source_lang = en
-
-[python-newest.library--test]
-trans.fr = library/test.po
-type = PO
-source_lang = en
-
-[python-newest.library--xml_sax]
-trans.fr = library/xml.sax.po
-type = PO
-source_lang = en
-
-[python-newest.library--2to3]
-trans.fr = library/2to3.po
-type = PO
-source_lang = en
-
-[python-newest.library--http_server]
-trans.fr = library/http.server.po
-type = PO
-source_lang = en
-
-[python-newest.library--email_compat32-message]
-trans.fr = library/email.compat32-message.po
-type = PO
-source_lang = en
-
-[python-newest.library--zlib]
-trans.fr = library/zlib.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--configfile]
-trans.fr = distutils/configfile.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--sourcedist]
-trans.fr = distutils/sourcedist.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--extending]
-trans.fr = distutils/extending.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--setupscript]
-trans.fr = distutils/setupscript.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--commandref]
-trans.fr = distutils/commandref.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--builtdist]
-trans.fr = distutils/builtdist.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--introduction]
-trans.fr = distutils/introduction.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--index]
-trans.fr = distutils/index.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--packageindex]
-trans.fr = distutils/packageindex.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--examples]
-trans.fr = distutils/examples.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--uploading]
-trans.fr = distutils/uploading.po
-type = PO
-source_lang = en
-
-[python-newest.distutils--apiref]
-trans.fr = distutils/apiref.po
-type = PO
-source_lang = en
-
-[python-newest.distributing--index]
-trans.fr = distributing/index.po
-type = PO
-source_lang = en
-
-[python-newest.faq--extending]
-trans.fr = faq/extending.po
-type = PO
-source_lang = en
-
-[python-newest.faq--windows]
-trans.fr = faq/windows.po
-type = PO
-source_lang = en
-
-[python-newest.faq--general]
-trans.fr = faq/general.po
-type = PO
-source_lang = en
-
-[python-newest.faq--library]
-trans.fr = faq/library.po
-type = PO
-source_lang = en
-
-[python-newest.faq--gui]
-trans.fr = faq/gui.po
-type = PO
-source_lang = en
-
-[python-newest.faq--installed]
-trans.fr = faq/installed.po
-type = PO
-source_lang = en
-
-[python-newest.faq--index]
-trans.fr = faq/index.po
-type = PO
-source_lang = en
-
-[python-newest.faq--design]
-trans.fr = faq/design.po
-type = PO
-source_lang = en
-
-[python-newest.faq--programming]
-trans.fr = faq/programming.po
-type = PO
-source_lang = en
-
-[python-newest.using--unix]
-trans.fr = using/unix.po
-type = PO
-source_lang = en
-
-[python-newest.using--mac]
-trans.fr = using/mac.po
-type = PO
-source_lang = en
-
-[python-newest.using--cmdline]
-trans.fr = using/cmdline.po
-type = PO
-source_lang = en
-
-[python-newest.using--windows]
-trans.fr = using/windows.po
-type = PO
-source_lang = en
-
-[python-newest.using--index]
-trans.fr = using/index.po
-type = PO
-source_lang = en
-
-[python-newest.howto--clinic]
-trans.fr = howto/clinic.po
-type = PO
-source_lang = en
-
-[python-newest.howto--urllib2]
-trans.fr = howto/urllib2.po
-type = PO
-source_lang = en
-
-[python-newest.howto--argparse]
-trans.fr = howto/argparse.po
-type = PO
-source_lang = en
-
-[python-newest.howto--curses]
-trans.fr = howto/curses.po
-type = PO
-source_lang = en
-
-[python-newest.howto--logging-cookbook]
-trans.fr = howto/logging-cookbook.po
-type = PO
-source_lang = en
-
-[python-newest.howto--sockets]
-trans.fr = howto/sockets.po
-type = PO
-source_lang = en
-
-[python-newest.howto--pyporting]
-trans.fr = howto/pyporting.po
-type = PO
-source_lang = en
-
-[python-newest.howto--index]
-trans.fr = howto/index.po
-type = PO
-source_lang = en
-
-[python-newest.howto--unicode]
-trans.fr = howto/unicode.po
-type = PO
-source_lang = en
-
-[python-newest.howto--instrumentation]
-trans.fr = howto/instrumentation.po
-type = PO
-source_lang = en
-
-[python-newest.howto--cporting]
-trans.fr = howto/cporting.po
-type = PO
-source_lang = en
-
-[python-newest.howto--ipaddress]
-trans.fr = howto/ipaddress.po
-type = PO
-source_lang = en
-
-[python-newest.howto--sorting]
-trans.fr = howto/sorting.po
-type = PO
-source_lang = en
-
-[python-newest.howto--functional]
-trans.fr = howto/functional.po
-type = PO
-source_lang = en
-
-[python-newest.howto--logging]
-trans.fr = howto/logging.po
-type = PO
-source_lang = en
-
-[python-newest.howto--regex]
-trans.fr = howto/regex.po
-type = PO
-source_lang = en
-
-[python-newest.howto--descriptor]
-trans.fr = howto/descriptor.po
-type = PO
-source_lang = en
-
-[python-newest.install--index]
-trans.fr = install/index.po
-type = PO
-source_lang = en
-
-[python-newest.reference--simple_stmts]
-trans.fr = reference/simple_stmts.po
-type = PO
-source_lang = en
-
-[python-newest.reference--expressions]
-trans.fr = reference/expressions.po
-type = PO
-source_lang = en
-
-[python-newest.reference--compound_stmts]
-trans.fr = reference/compound_stmts.po
-type = PO
-source_lang = en
-
-[python-newest.reference--introduction]
-trans.fr = reference/introduction.po
-type = PO
-source_lang = en
-
-[python-newest.reference--import]
-trans.fr = reference/import.po
-type = PO
-source_lang = en
-
-[python-newest.reference--grammar]
-trans.fr = reference/grammar.po
-type = PO
-source_lang = en
-
-[python-newest.reference--datamodel]
-trans.fr = reference/datamodel.po
-type = PO
-source_lang = en
-
-[python-newest.reference--index]
-trans.fr = reference/index.po
-type = PO
-source_lang = en
-
-[python-newest.reference--toplevel_components]
-trans.fr = reference/toplevel_components.po
-type = PO
-source_lang = en
-
-[python-newest.reference--lexical_analysis]
-trans.fr = reference/lexical_analysis.po
-type = PO
-source_lang = en
-
-[python-newest.reference--executionmodel]
-trans.fr = reference/executionmodel.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_6]
-trans.fr = whatsnew/2.6.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_3]
-trans.fr = whatsnew/2.3.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--changelog]
-trans.fr = whatsnew/changelog.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_2]
-trans.fr = whatsnew/2.2.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_3]
-trans.fr = whatsnew/3.3.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_4]
-trans.fr = whatsnew/3.4.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_2]
-trans.fr = whatsnew/3.2.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_7]
-trans.fr = whatsnew/2.7.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_1]
-trans.fr = whatsnew/3.1.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_0]
-trans.fr = whatsnew/3.0.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--index]
-trans.fr = whatsnew/index.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_0]
-trans.fr = whatsnew/2.0.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_4]
-trans.fr = whatsnew/2.4.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_5]
-trans.fr = whatsnew/3.5.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_5]
-trans.fr = whatsnew/2.5.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--2_1]
-trans.fr = whatsnew/2.1.po
-type = PO
-source_lang = en
-
-[python-newest.whatsnew--3_6]
-trans.fr = whatsnew/3.6.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--modules]
-trans.fr = tutorial/modules.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--stdlib2]
-trans.fr = tutorial/stdlib2.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--whatnow]
-trans.fr = tutorial/whatnow.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--floatingpoint]
-trans.fr = tutorial/floatingpoint.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--inputoutput]
-trans.fr = tutorial/inputoutput.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--classes]
-trans.fr = tutorial/classes.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--appendix]
-trans.fr = tutorial/appendix.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--interactive]
-trans.fr = tutorial/interactive.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--venv]
-trans.fr = tutorial/venv.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--introduction]
-trans.fr = tutorial/introduction.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--index]
-trans.fr = tutorial/index.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--controlflow]
-trans.fr = tutorial/controlflow.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--appetite]
-trans.fr = tutorial/appetite.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--errors]
-trans.fr = tutorial/errors.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--interpreter]
-trans.fr = tutorial/interpreter.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--datastructures]
-trans.fr = tutorial/datastructures.po
-type = PO
-source_lang = en
-
-[python-newest.tutorial--stdlib]
-trans.fr = tutorial/stdlib.po
-type = PO
-source_lang = en
-
-[python-newest.extending--building]
-trans.fr = extending/building.po
-type = PO
-source_lang = en
-
-[python-newest.extending--extending]
-trans.fr = extending/extending.po
-type = PO
-source_lang = en
-
-[python-newest.extending--windows]
-trans.fr = extending/windows.po
-type = PO
-source_lang = en
-
-[python-newest.extending--index]
-trans.fr = extending/index.po
-type = PO
-source_lang = en
-
-[python-newest.extending--embedding]
-trans.fr = extending/embedding.po
-type = PO
-source_lang = en
-
-[python-newest.extending--newtypes]
-trans.fr = extending/newtypes.po
-type = PO
-source_lang = en
-
-[python-newest.installing--index]
-trans.fr = installing/index.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--conversion]
-trans.fr = c-api/conversion.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--datetime]
-trans.fr = c-api/datetime.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--memory]
-trans.fr = c-api/memory.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--coro]
-trans.fr = c-api/coro.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--file]
-trans.fr = c-api/file.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--object]
-trans.fr = c-api/object.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--capsule]
-trans.fr = c-api/capsule.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--function]
-trans.fr = c-api/function.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--refcounting]
-trans.fr = c-api/refcounting.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--cell]
-trans.fr = c-api/cell.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--none]
-trans.fr = c-api/none.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--allocation]
-trans.fr = c-api/allocation.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--intro]
-trans.fr = c-api/intro.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--number]
-trans.fr = c-api/number.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--float]
-trans.fr = c-api/float.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--list]
-trans.fr = c-api/list.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--memoryview]
-trans.fr = c-api/memoryview.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--structures]
-trans.fr = c-api/structures.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--mapping]
-trans.fr = c-api/mapping.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--iterator]
-trans.fr = c-api/iterator.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--abstract]
-trans.fr = c-api/abstract.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--gen]
-trans.fr = c-api/gen.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--arg]
-trans.fr = c-api/arg.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--method]
-trans.fr = c-api/method.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--sequence]
-trans.fr = c-api/sequence.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--marshal]
-trans.fr = c-api/marshal.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--import]
-trans.fr = c-api/import.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--weakref]
-trans.fr = c-api/weakref.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--dict]
-trans.fr = c-api/dict.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--buffer]
-trans.fr = c-api/buffer.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--code]
-trans.fr = c-api/code.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--index]
-trans.fr = c-api/index.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--concrete]
-trans.fr = c-api/concrete.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--unicode]
-trans.fr = c-api/unicode.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--bytes]
-trans.fr = c-api/bytes.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--init]
-trans.fr = c-api/init.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--bool]
-trans.fr = c-api/bool.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--reflection]
-trans.fr = c-api/reflection.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--gcsupport]
-trans.fr = c-api/gcsupport.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--module]
-trans.fr = c-api/module.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--veryhigh]
-trans.fr = c-api/veryhigh.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--exceptions]
-trans.fr = c-api/exceptions.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--objimpl]
-trans.fr = c-api/objimpl.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--type]
-trans.fr = c-api/type.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--set]
-trans.fr = c-api/set.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--codec]
-trans.fr = c-api/codec.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--typeobj]
-trans.fr = c-api/typeobj.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--sys]
-trans.fr = c-api/sys.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--bytearray]
-trans.fr = c-api/bytearray.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--tuple]
-trans.fr = c-api/tuple.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--apiabiversion]
-trans.fr = c-api/apiabiversion.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--stable]
-trans.fr = c-api/stable.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--objbuffer]
-trans.fr = c-api/objbuffer.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--slice]
-trans.fr = c-api/slice.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--long]
-trans.fr = c-api/long.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--iter]
-trans.fr = c-api/iter.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--utilities]
-trans.fr = c-api/utilities.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--complex]
-trans.fr = c-api/complex.po
-type = PO
-source_lang = en
-
-[python-newest.c-api--descriptor]
-trans.fr = c-api/descriptor.po
-type = PO
-source_lang = en
diff --git a/CONTRIBUTING-CORE.rst b/CONTRIBUTING-CORE.rst
index a6326b8158..9701a87ee4 100644
--- a/CONTRIBUTING-CORE.rst
+++ b/CONTRIBUTING-CORE.rst
@@ -1,41 +1,16 @@
Maintenance
-----------
-Les commandes suivantes doivent être exécutées à partir de la racine d'un clone
-de ``python-docs-fr`` et certaines s'attendent à trouver un clone de CPython
-à jour à proximité :
-
-.. code-block:: bash
-
- ~/
- ├── python-docs-fr/
- └── cpython/
-
-
-Pour cloner CPython, vous pouvez utiliser :
-
-.. code-block:: bash
-
- git clone --depth 1 --no-single-branch https://github.com/python/cpython.git
-
-
-Ceci évite de télécharger tout l'historique (inutile pour générer la
-documentation) mais récupère néanmoins toutes les branches.
-
-.. code-block:: bash
-
- make merge
-
Dans certains cas on a besoin de propager des traductions d'une branche
à l'autre :
-
+
- d'une ancienne branche vers une nouvelle branche : lors du passage
d'une version à l'autre de CPython, lorsque quelqu'un a une PR sur une
ancienne version (*forward porting*) ;
- d'une nouvelle branche vers des anciennes branches : pour propager
de temps en temps le travail sur d'anciennes versions (rétroportage
ou *backporting*).
-
+
Pour forward-porter un ou plusieurs commits, il vaut mieux utiliser ``git
cherry-pick -x LE_SHA``, ça garde l'auteur, le sha1 d'origine, et
toutes les modifications.
@@ -43,9 +18,9 @@ toutes les modifications.
Pour rétroporter « en gros » on utilise ``pomerge``\ : on le fait lire
sur une branche, puis écrire sur une autre, par exemple pour copier de
la 3.8 à la 3.7 :
-
+
.. code-block:: bash
-
+
git fetch
git checkout 3.8
git reset --hard upstream/3.8
@@ -56,10 +31,10 @@ la 3.8 à la 3.7 :
git add --patch
git commit --message="Backporting from 3.8"
git push --set-upstream origin HEAD
-
-
+
+
Notes :
-
+
- j'utilise ``git fetch`` au début pour avoir *upstream/3.7* et
*upstream/3.8* à jour localement, ainsi je peux travailler sans
toucher au réseau jusqu'au ``git push``, mais chacun fait comme il
@@ -84,4 +59,3 @@ Notes :
en général, je n'ajoute pas les différences d'ordre dans les entêtes,
mais un ``git add --update`` irait très bien ;
- attention au fichier *dict* auquel il peut manquer des lignes.
-
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 1cf595a078..4c3b595b8e 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -1,26 +1,125 @@
Guide de contribution à la documentation via GitHub
-===================================================
-
-Instructions
-------------
+###################################################
Prérequis
-~~~~~~~~~
+=========
+
+Outils souhaitables
+-------------------
+
+Pour pouvoir participer à la traduction en commun, il est souhaitable
+d'installer :
+
+- un client ``git`` `Linux `_, `MacOS
+ `_ ou `Windows `_ ;
-- un client ``git`` `Linux `_, `MacOS `_ ou `Windows `_ ;
- un éditeur de fichier ``.po`` (comme `Poedit `_).
-Équipez-vous aussi de quelques outils pour vous aider dans
-votre traduction (voir `Outils utiles pour la traduction`_).
+
+Outils facultatifs
+------------------
+De plus, il peut être utile de s'équiper d'utilitaires pour faciliter
+la manipulation des fichiers ``.po`` et la traduction.
+
+`Poutils `_ est un paquet PyPI qui
+regroupe un certain nombre d'outils liés à la traduction. Dans un
+environnement disposant de Python 3.7 ou plus, installez-le avec ::
+
+ python3 -m pip install poutils
+
+Dans notre cas, les utilitaires de *Poutils* qui nous intéressent sont :
+
+Pospell
+^^^^^^^
+
+Vérificateur d'orthographe fondé sur Hunspell. ``make spell`` exécute
+Pospell. Pour l'utiliser, il vous faut installer Hunspell. Attention,
+dans Debian notamment (et ses dérivés comme Ubuntu), il existe plusieurs
+dictionnaires français qui diffèrent en raison de l'orthographe
+réformée. Installez celui qui contient les deux orthographes avec ::
+
+ sudo apt install hunspell hunspell-fr-comprehensive
+
+Potodo
+^^^^^^
+
+Permet d'identifier les parties de la documentation qu'il reste à
+traduire. ``make todo`` fait appel à Potodo.
+
+Pogrep
+^^^^^^
+
+Permet de rechercher dans la documentation des termes. Utile si on a un doute
+sur comment traduire un terme ou chercher la traduction d'un terme dans
+d'autres fichiers. Pour connaître les options disponibles, tapez ::
+
+ pogrep --help
+
+Powrap
+^^^^^^
+
+Formateur de fichier *.po*. C'est l'outil qui se cache derrière ``make
+wrap``.
+
+Padpo (beta)
+^^^^^^^^^^^^
+
+Analyseur de code qui encapsule notamment `Grammalecte
+`_ et qui vérifie la grammaire, l'orthographe
+et la syntaxe des fichiers *.po*.
+
+Configuration des outils
+------------------------
+
+Configuration de Poedit
+^^^^^^^^^^^^^^^^^^^^^^^
+* N'oubliez pas de configurer votre nom et
+ votre adresse de courriel (Édition → Préférences → Général).
+* Vérifiez également qu'il est configuré pour passer à la ligne à 79
+ caractères (Édition → Préférences → Avancé → Passer à la ligne à
+ 79).
+
+Configuration de Git (rendre plus lisible l'affichage des modifications)
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Le résultat de ``git diff`` est souvent encombré de changements inutiles de numéros
+de ligne, comme :
+
+.. code-block:: diff
+
+ -#: ../Doc/library/sys.rst:406
+ +#: ../Doc/library/sys.rst:408
-*fork* personnel sur Github
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Pour dire à Git que ce ne sont pas des informations utiles, vous pouvez faire
+ce qui suit après vous être assuré que ``~/.local/bin/`` se trouve dans votre
+``PATH``.
-Pour commencer vous aurez besoin de *forker* le dépôt des sources `python-docs-fr
-`_ en cliquant sur son bouton
-``Fork``. Ceci crée une copie du projet sur votre compte Github, c'est un endroit
-où vous avez le droit de faire des modifications.
+.. code-block:: bash
+
+ cat < ~/.local/bin/podiff
+ #!/bin/sh
+ grep -v '^#:' "\$1"
+ EOF
+
+ chmod a+x ~/.local/bin/podiff
+
+ git config diff.podiff.textconv podiff
+
+
+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.
+
+Première étape : créer et peupler son dépôt
+===========================================
+
+Sur Github
+----------
+
+Depuis votre compte GitHub, se rendre dans le dépôt des sources `python-docs-fr
+`_ puis cliquer sur son bouton ``Fork``.
+Ceci crée une copie du projet sur votre compte Github. C'est sur cette copie
+que vous avez le droit de faire des modifications.
Étape par étape :
@@ -40,12 +139,14 @@ où vous avez le droit de faire des modifications.
git remote add upstream https://github.com/python/python-docs-fr.git
-*fork* personnel sur une autre forge
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Sur une autre forge
+-------------------
-Si vous n'avez pas de compte Github, il est possible *fork* ce dépôt sur une autre forge.
+Si vous n'avez pas de compte Github, il est possible d'utiliser une autre forge.
Vous devez dans un premier temps initier un dépôt vide sur la forge où vous voulez héberger le
-dépôt.
+dépôt puis le peupler.
+
+Étape par étape :
.. code-block:: bash
@@ -66,15 +167,49 @@ dépôt.
git push -u origin
-Réservation d'un fichier
-~~~~~~~~~~~~~~~~~~~~~~~~
+Deuxième étape : choisir et réserver le fichier sur lequel travailler
+=====================================================================
-*Chaque fois que vous commencez un nouveau fichier, suivez cette procédure.*
+Note liminaire
+--------------
+
+Il est vivement conseillé de ne pas travailler sur fichiers des
+répertoires *c-api/*, *whatsnew/*, *distutils/* et *install/* :
+
+- *c-api/* car c'est une partie très technique ;
+
+- *whatsnew/* car les anciennes versions de Python sont pour la plupart
+ obsolètes et leurs journaux de modifications ne sont pas les pages les plus
+ consultées ;
+
+- *distutils/*, *install/*, et quelques autres parties qui seront bientôt
+ obsolètes. De manière générale, il n'est pas utile de traduire un module que
+ sa documentation mentionne comme obsolète.
+
+Trouver un fichier sur lequel travailler
+----------------------------------------
+
+Pour vous aiguiller dans votre choix, vous pouvez utiliser ``potodo``,
+un outil recherchant des fichiers ``.po`` à traduire. Une fois
+installé, utilisez la commande ``make todo`` dans votre clone local.
+
+La liste renvoyée contient tous les fichiers qui ne sont pas encore complètement
+traduits. Vous pouvez choisir n'importe quel fichier non réservé dans la liste
+renvoyée (notez que ceux mentionnés plus haut sont automatiquement exclus).
+
+Vous pouvez commencer par des tâches faciles comme réviser les entrées
+*fuzzy* pour aider à garder la documentation à jour (trouvez-les à l'aide
+de ``make fuzzy``). Une entrée *fuzzy* correspond à une entrée déjà traduite
+mais dont la source en anglais a été modifiée depuis (correction orthographique,
+changement d'un terme, ajout ou suppression d'une phrase…). Elles sont
+généralement plus « faciles » à traduire.
+
+Vous pouvez également relire des entrées déjà traduites pour vous faire une
+idée, et passer ensuite à la traduction de celles qui ne le sont pas encore.
-Ensuite, vous devez trouver un fichier sur lequel travailler
-(pour vous aiguiller, lisez la section `Que traduire ?`_). Nous vous conseillons
-de choisir, si possible, un fichier traitant d'un sujet que vous maitrisez, cela
-vous aidera grandement à produire une traduction de bonne qualité.
+Nous vous conseillons de choisir, si possible, un fichier traitant
+d'un sujet que vous maîtrisez, cela vous aidera grandement à produire
+une traduction de bonne qualité.
Si c'est votre première contribution, commencez par une toute petite
traduction, de quelques paragraphes maximum, pour vous familiariser. Il n'est
@@ -82,6 +217,11 @@ pas nécessaire de terminer un fichier lorsqu'on le commence, vous
pouvez donc prendre n'importe quel fichier, mais ne traduire que
quelques paragraphes.
+Réserver le fichier
+-------------------
+
+*Chaque fois que vous commencez un nouveau fichier, suivez cette procédure.*
+
Une fois que vous avez choisi un fichier sur lequel travailler vous pouvez nous
le signaler par différents moyens :
@@ -100,34 +240,37 @@ dans les tickets et les *pull requests*.
`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 :
-Pour travailler, nous avons besoin d'une branche, basée sur une version à jour
-(fraîchement récupérée) de la branche « upstream/3.9 ». On met donc à jour notre
-version locale.
+Création de la branche de traduction
+------------------------------------
+
+*Chaque fois que vous commencez un nouveau fichier, suivez cette procédure.*
+
+Vous êtes maintenant prêt. Pour travailler, nous avons besoin d'une
+branche, basée sur une version à jour (fraîchement récupérée) de la
+branche « upstream/3.11 ». On met donc à jour notre version locale.
.. code-block:: bash
git fetch upstream
-On crée ensuite la branche, en la basant sur « upstream/3.9 », fraîchement récupérée.
+On crée ensuite la branche, en la basant sur « upstream/3.11 », fraîchement récupérée.
Il est pratique de nommer cette branche en fonction du
fichier sur lequel on travaille. Par exemple, si vous travaillez sur
« library/sys.po », vous pouvez nommer votre branche « library-sys ».
.. code-block:: bash
- git checkout -b library-sys upstream/3.9
+ git checkout -b library-sys upstream/3.11
+
-Vous pouvez maintenant travailler sur le fichier.
-Si vous utilisez Poedit, n'oubliez pas de configurer votre nom et votre adresse de courriel
-(Édition → Préférences → Général).
-Vérifiez aussi qu'il est configuré pour passer à la ligne à 79 caractères
-(Édition → Préférences → Avancé → Passer à la ligne à 79).
+Troisième étape: Traduction
+===========================
+Avec Poedit
+---------------
Ici, remplacez « library/sys.po » par le fichier que vous avez choisi précédemment.
.. code-block:: bash
@@ -138,36 +281,28 @@ Ici, remplacez « library/sys.po » par le fichier que vous avez choisi préc
Ou lancez simplement Poedit puis « Fichier » → « Ouvrir ».
-Traduction
-~~~~~~~~~~
-
-Vous pouvez dès à présent commencer à traduire le fichier en respectant les `conventions`_ du projet.
-Pour vous aider à ne pas faire de fautes d'orthographe, vous pouvez vérifier que tous les mots utilisés sont
-bien dans le dictionnaire (ça ne vérifie pas la grammaire, pour cela utilisez `padpo (beta)`_). En cas
-de doute, un `glossaire`_ répertorie déjà les traductions retenues pour certains termes techniques ou faux amis
-en anglais.
-
-.. code-block:: bash
-
- make spell
-
-
-Vous pouvez aussi réindenter les fichiers avec :
-
-.. code-block:: bash
-
- make wrap
-
+Vérifications après traduction
+------------------------------
-Et pour faire les deux à la fois, lancez :
+Après avoir modifié les fichiers, vérifiez que vous respectez les
+`conventions`_ du projet. Pour vous y aider, la commande :
.. code-block:: bash
make verifs
+vérifie la longueur des lignes et l'orthographe (mais pas la
+grammaire, pour cela utilisez `padpo (beta)`_). En cas de doute, un
+`glossaire`_ répertorie déjà les traductions retenues pour certains
+termes techniques ou faux amis en anglais.
+
+Si ``make verifs`` trouve des problèmes de longueurs de ligne,
+vérifiez votre configuration ``poedit`` (Édition → Préférences →
+Avancé → Passer à la ligne à 79) ou utilisez ``make wrap``.
-Une fois la traduction finie, il faut compiler la documentation, c'est-à-dire générer les fichiers HTML
-affichés par le site, pour les relire. Si la commande précédente s'est exécutée sans erreur, la
+Une fois la traduction finie, il faut compiler la documentation,
+c'est-à-dire générer les fichiers HTML affichés par le site, pour les
+relire. Si la commande précédente s'est exécutée sans erreur, la
compilation ne devrait pas échouer.
.. code-block:: bash
@@ -180,33 +315,37 @@ documentation local :
.. code-block:: bash
- make serve
+ make htmlview
+
+
+La documentation est publiée à l'adresse ``_.
+Attention: le port TCP/8000 ne peut être changé, il convient d'arrêter
+tout service qui écouterait sur celui-ci.
-La documentation est publiée l'adresse ``_
-(ou tout autre port indiqué par la sortie de la commande précédente). Vous pouvez
-recommencer les étapes de cette section autant de fois que nécessaire.
+Vous pouvez recommencer les étapes de cette section autant de fois que
+nécessaire.
Poedit donne beaucoup d'avertissements, par exemple pour vous informer que
« la traduction devrait commencer par une majuscule » car c'est le cas pour
la source. Ces avertissements ne sont pas tous fondés. En cas de doute,
-*affichez et relisez la page HTML produite* avec ``make serve``.
+*affichez et relisez la page HTML produite* avec ``make htmlview``.
-*pull request*
-~~~~~~~~~~~~~~
+Quatrième étape : publier sa traduction
+=======================================
Une fois que le *make verifs* ne lève pas d'erreur et que vous êtes certains de bien respecter les
`Conventions`_ de traduction, vient le moment d'envoyer votre travail sur le dépôt local.
-``git add`` place nos modifications dans l'index de Git en
-attendant d'être propagées dans le dépôt local.
+* ``git add`` place nos modifications dans l'index de Git en attendant
+ d'être propagées dans le dépôt local.
.. code-block:: bash
git add library/sys.po
-``git commit`` permet de les propager :
+* ``git commit`` permet de les propager :
.. code-block:: bash
@@ -224,7 +363,7 @@ branche est liée à votre *fork* (et donc que vos futurs ``git pull`` et
git push --set-upstream origin
Sur Github
-++++++++++
+----------
La commande précédente vous affiche un lien pour ouvrir une *pull request* sur
Github. Si vous l'avez manqué, allez simplement sur https://github.com/python/python-docs-fr/pulls
@@ -252,7 +391,7 @@ GitHub puis relancer ``powrap`` :
git push
Sur une autre forge
-+++++++++++++++++++
+-------------------
Quand vous avez poussé vos modifications, il y a plusieurs possibilités.
@@ -297,45 +436,22 @@ de votre *origin* au *upstream* public, pour « boucler la boucle ». C'est le
rôle des personnes qui *fusionnent* les *pull requests* après les avoir relues.
Vous avez peut-être aussi remarqué que vous n'avez jamais commité sur une
-branche de version (3.8, 3.9, etc.), seulement récupéré les
+branche de version (3.9, 3.10, etc.), seulement récupéré les
modifications à partir d'elles.
Toutes les traductions sont faites sur la dernière version.
Nous ne traduisons jamais sur une version plus ancienne. Par exemple,
-si la dernière version de python est Python 3.9, nous ne voulons pas
-traduire directement sur la version Python 3.5.
+si la dernière version de python est Python 3.10, nous ne voulons pas
+traduire directement sur la version Python 3.6.
Si nécessaire, les traductions seraient rétroportées sur les versions
les plus anciennes par l'`équipe de documentation
`_.
-Que traduire ?
---------------
-
-Vous pouvez utiliser `potodo`_, un outil fait pour trouver des fichiers *po*
-à traduire. Une fois installé, utilisez la commande ``make todo`` dans votre clone
-local.
-
-Vous pouvez choisir n'importe quel fichier non réservé dans la liste
-renvoyée par la commande **à l'exception** des fichiers de :
-
-- *c-api/* car c'est une partie très technique ;
-- *whatsnew/* car les anciennes versions de Python sont pour la plupart obsolètes et leurs journaux de modifications ne sont pas les pages les plus consultées ;
-- *distutils/* et *install/* car ces pages seront bientôt obsolètes.
-
-Vous pouvez commencer par des tâches faciles comme réviser les entrées
-*fuzzy* pour aider à garder la documentation à jour (trouvez-les à l'aide
-de ``make fuzzy``). Une entrée *fuzzy* correspond à une entrée déjà traduite
-mais dont la source en anglais a été remodifiée depuis (correction orthographique,
-changement d'un terme, ajout ou suppression d'une phrase…). Elles sont
-généralement plus « faciles » à traduire.
-
-Vous pouvez également relire des entrées déjà traduites pour vous faire une
-idée, et passer ensuite à la traduction de celles qui ne le sont pas encore.
Conventions
------------
+===========
Certaines conventions ont été édictées pour homogénéiser la traduction.
Il faut suivre les règles de `style`_ imposées, les `règles rst`_ et
@@ -343,7 +459,7 @@ les traductions déjà définies dans le `glossaire`_.
Style
-~~~~~
+-----
Une bonne traduction est une traduction qui transcrit fidèlement l'idée originelle
en français, sans rien ajouter ni enlever au fond, tout en restant claire, concise et
@@ -354,7 +470,7 @@ documentation anglaise, si le rythme l'exige. Il faut aussi chercher des
garde aux anglicismes.
Utilisation du futur
-++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^
Dans la description du comportement de Python (au sens large, c'est-à-dire
l'interpréteur lui-même mais aussi toutes les bibliothèques), la version
@@ -367,13 +483,13 @@ processus de compilation n'est pas immédiat) ou pour des raisons de
concordance des temps.
Utilisation du conditionnel
-+++++++++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
La version originale est très polie envers le lecteur ; elle lui intime
rarement des obligations, préférant employer « you should ». Cependant, en
français, il est d'usage d'être plus direct pour être correctement compris :
« vous devez ». *Vous devriez* est en effet généralement compris comme quelque
-chose dont l'on peut de temps en temps se passer, alors que c'est très
+chose dont on peut de temps en temps se passer, alors que c'est très
rarement le cas pour les « you should » de cette documentation.
De la même manière, « can » est souvent mieux traduit sans introduire de notion
de possibilité, en particulier quand la phrase est à la voix passive ; la
@@ -381,20 +497,20 @@ phrase « these objects can be accessed by… » se traduit mieux par « on ac
ces objets en… ».
Utilisation du masculin
-+++++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^^
Dans un souci de lisibilité et en accord avec la préconisation de
l'Académie française, nous utilisons le masculin pour indiquer un
genre neutre. Par exemple : l'utilisateur ou le lecteur.
Règles rst
-~~~~~~~~~~
+----------
Prototypes et exemples
-++++++++++++++++++++++
+^^^^^^^^^^^^^^^^^^^^^^
Il ne faut pas traduire le nom des éléments de la bibliothèque standard (noms
-de fonctions, paramètres de ces fonctions, constantes etc.) mais les laisser
+de fonctions, paramètres de ces fonctions, constantes, etc.) mais les laisser
tels quel, entourés d'astérisques dans les blocs de texte.
Si la documentation contient des exemples, vous *pouvez* traduire les noms
utilisés, en prenant garde d'être cohérent. Vous pouvez ainsi traduire :
@@ -425,7 +541,7 @@ mais pas en
Liens hypertextes
-+++++++++++++++++
+^^^^^^^^^^^^^^^^^
Il faut transformer les liens hypertextes qui redirigent vers une page dont il
existe une version française (c'est notamment très souvent le cas pour les
@@ -436,11 +552,11 @@ doit devenir ```Jeu de la vie `_``.
Balises
-+++++++
+^^^^^^^
Ne traduisez pas le contenu des balises comme ``:ref:...`` ou ``:class:...``.
Vous devez cependant traduire les balises ``:term:...``, qui font référence à
-un concept ou une primitive défini dans le `glossaire Python `_.
+une primitive ou un concept défini dans le `glossaire Python `_.
La syntaxe est ``:term:nom_français``. Par exemple, traduisez
``:term:`dictionary``` en ``:term:`dictionnaire ```.
@@ -449,7 +565,7 @@ terme que vous pouvez rencontrer.
Glossaire
-~~~~~~~~~
+=========
Afin d'assurer la cohérence de la traduction, voici quelques
termes fréquents déjà traduits. Une liste blanche de noms propres, comme « Guido »,
@@ -478,6 +594,7 @@ bytecode code intermédiaire
callback fonction de rappel
call stack pile d'appels
caught (exception) interceptée
+daemon *daemon*
debugging débogage
deep copy copie récursive (préféré), ou copie profonde
double quote guillemet
@@ -529,11 +646,13 @@ roughly approximativement, à peu près (on ne traduit pas
setter mutateur
simple quote guillemet simple
socket connecteur ou interface de connexion
+sort trier (préféré), ordonner, classer
specify définir, préciser (plutôt que « spécifier »)
statement instruction
subprocess sous-processus
support prendre en charge, implémenter (« supporter »
n'a pas le même sens en français)
+token (parsing) lexème
thread fil d'exécution
traceback trace d'appels, trace de pile
tuple *n*-uplet (avec *n* en italique), on peut
@@ -547,12 +666,12 @@ whitespace caractère d'espacement
========================== ===============================================
Ressources de traduction
-------------------------
+========================
- les canaux IRC sur irc.libera.chat :
- `#python-docs-fr `_ — communauté python autour de la documentation française,
- - `#python-fr `_ — communauté python francophone,
+ - `#python-fr `_ — communauté python francophone,
- `#python-doc `_ — communauté python autour de la documentation anglophone ;
- les listes de diffusion relatives à la documentation (courriel) :
@@ -561,8 +680,8 @@ Ressources de traduction
- des glossaires et dictionnaires :
- le `glossaire de la documentation Python `_, car il est déjà traduit,
- - les `glossaires et dictionnaires de traduc.org `_, en particulier le `grand dictionnaire terminologique `_ de l'Office québécois de la langue française,
- - Wikipédia. En consultant un article sur la version anglaise, puis en basculant sur la version francaise pour voir comment le sujet de l'article est traduit ;
+ - les `glossaires et dictionnaires de traduc.org `_, en particulier le `grand dictionnaire terminologique `_ de l'Office québécois de la langue française,
+ - Wikipédia. En consultant un article sur la version anglaise, puis en basculant sur la version française pour voir comment le sujet de l'article est traduit ;
- le `guide stylistique pour le français de localisation des produits Sun
`_ donne
beaucoup de conseils pour éviter une traduction trop mot à mot ;
@@ -577,10 +696,10 @@ page et génèrent une documentation au style très « lourd ».
Caractères spéciaux et typographie
-----------------------------------
+==================================
La touche de composition
-~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------
Cette `touche `_,
absente par défaut des claviers, permet de saisir des
@@ -605,7 +724,7 @@ simplement fonctionner :
- etc.
Comment définir la touche de composition ?
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+------------------------------------------
Cela dépend de votre système d'exploitation et de votre clavier.
@@ -624,7 +743,7 @@ ajouter l'équivalent de :
keycode 115 = Multi_key
-Utilisez ``xev`` pour connaitre la bonne correspondance de la touche que vous
+Utilisez ``xev`` pour connaître la bonne correspondance de la touche que vous
voulez assigner !
Ensuite, dans votre fichier *~/.xsession*, ajoutez :
@@ -642,8 +761,8 @@ modifier dans les « Paramètres » → « Clavier » → « Disposition » →
⇒ Sous Windows, vous
pouvez utiliser `wincompose `_.
-Le cas de « --- », « -- », « ... »
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Le cas de « --- », « -- », « ... »
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
La version anglaise utilise les
`smartquotes `_,
@@ -659,7 +778,7 @@ Les *smartquotes* sont normalement responsables de la transformation de
| « ... » : faites :kbd:`Compose . . .`
Le cas de « "…" »
-~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^
Les guillemets français ``«`` et ``»`` ne sont pas identiques aux
guillemets anglais ``"``. Cependant, Python utilise les guillemets
@@ -670,7 +789,7 @@ traduire les guillemets mais pas les délimiteurs de chaîne.
| « "…" » : faites :kbd:`Compose < <` ou :kbd:`Compose > >`
Le cas de « :: »
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
| Du point de vue du langage *reStructuredText* (ou *rst*) utilisé dans la
documentation nous voyons soit « bla bla:: », soit « bla bla. :: ».
@@ -686,7 +805,7 @@ En français, nous mettons une espace insécable devant nos deux-points, comme :
Pour saisir une espace insécable faites :kbd:`Compose SPACE SPACE`
Les doubles-espaces
-~~~~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^^^^
La documentation originale comporte beaucoup de doubles-espaces.
Cela se fait en anglais, mais pas en français. De toute manière,
@@ -697,7 +816,7 @@ coté traduction : nous ne les retirons pas et ce n'est pas grave
si des traducteurs en retirent par accident.
Les énumérations
-~~~~~~~~~~~~~~~~
+^^^^^^^^^^^^^^^^
Chaque paragraphe d'une énumération introduite par un deux-point
doit se terminer par un point-virgule (bien entendu précédé d'une
@@ -710,7 +829,7 @@ une virgule et le dernier par un point-virgule.
Par exemple :
- le premier paragraphe de l'énumération ;
-- le deuxième paragraphe, lui-aussi une énumération :
+- le deuxième paragraphe, lui aussi une énumération :
- premier sous-paragraphe,
- second sous-paragraphe ;
@@ -722,71 +841,3 @@ entre un paragraphe et sa traduction ; il faut passer outre ses avertissements.
Vous pouvez aussi rajouter un commentaire dans le fichier *.po* pour avertir
les traducteurs suivants et éviter qu'ils ne « corrigent » par erreur ces
avertissements.
-
-Outils utiles pour la traduction
---------------------------------
-
-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 `__
-
-Pogrep
-~~~~~~
-
-| Permet de rechercher dans la documentation des termes. Utile si on a un doute
- 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 `__
-
-Padpo (beta)
-~~~~~~~~~~~~
-
-| Analyseur de code qui vérifie la grammaire et l'orthographe et la syntaxe
- 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 `__
-
-Powrap
-~~~~~~
-
-| Formateur de fichier .po.
-| Installez-le à l'aide de *pip* (``pip install powrap``).
-| `Lien vers le dépôt `__
-
-
-Affichage des modifications par Git
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Le résultat de ``git diff`` est souvent encombré de changements inutiles de numéros
-de ligne, comme :
-
-.. code-block:: diff
-
- -#: ../Doc/library/sys.rst:406
- +#: ../Doc/library/sys.rst:408
-
-
-Pour dire à Git que ce ne sont pas des informations utiles, vous pouvez faire
-ce qui suit après vous être assuré que ``~/.local/bin/`` se trouve dans votre
-``PATH``.
-
-.. code-block:: bash
-
- cat < ~/.local/bin/podiff
- #!/bin/sh
- grep -v '^#:' "\$1"
- EOF
-
- chmod a+x ~/.local/bin/podiff
-
- git config diff.podiff.textconv podiff
-
-
-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 c87c500299..7e3521e296 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 := 748c83d96da735f8210167d676469860d4e11b80
LANGUAGE := fr
-BRANCH := 3.9
-
-EXCLUDED := whatsnew/ c-api/
+BRANCH := 3.11
+
+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
+SERVE_PORT :=
# Detect OS
@@ -58,60 +86,40 @@ 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='-W -j$(JOBS) \
+ $(MAKE) -C venv/cpython/Doc/ \
+ SPHINXOPTS='-j$(JOBS) \
-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=' \
$(MODE)
- @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
@@ -119,8 +127,8 @@ todo: ensure_prerequisites
.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
@@ -139,34 +147,12 @@ fuzzy: ensure_prerequisites
potodo -f --exclude venv .venv $(EXCLUDED)
.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
.PHONY: clean
clean:
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
rm -fr $(POSPELL_TMP_DIR)
find -name '*.mo' -delete
+ @echo "Cleaning build directory"
+ $(MAKE) -C venv/cpython/Doc/ clean
diff --git a/README.rst b/README.rst
index fe4ba11903..85c9cd17af 100644
--- a/README.rst
+++ b/README.rst
@@ -1,15 +1,6 @@
Traduction française de la documentation Python
===============================================
-|build| |progression|
-
-.. |build| image:: https://travis-ci.org/python/python-docs-fr.svg?branch=3.9
- :target: https://travis-ci.org/python/python-docs-fr
- :width: 45%
-
-.. |progression| image:: https://img.shields.io/badge/dynamic/json.svg?label=fr&query=%24.fr&url=http%3A%2F%2Fgce.zhsj.me%2Fpython/newest
- :width: 45%
-
Ce projet est réalisé en collaboration avec l'`AFPy
`_ (Association Francophone Python), dont le but est la
promotion du langage de développement Python dans l'ensemble des
@@ -26,16 +17,16 @@ Vous pouvez contribuer :
- en proposant des *pull requests* Github (solution recommandée) ;
- en remontant des erreurs et propositions d'amélioration sur
- le `forum de l'AFPy `_ ou sur la
+ le `forum de l'AFPy `_ ou sur la
`liste de diffusion `_ ;
- en devenant `membre `_ de l'AFPy ou
`mécène `_ du projet.
Consultez le
-`guide `_
+`guide `_
pour apprendre les conventions à respecter.
-Le `coordinateur ` de
+Le `coordinateur `_ de
cette traduction est `Julien Palard (mdk) `_.
Vous pouvez obtenir de l'aide sur le canal
`irc://irc.libera.chat/#python-fr `_
@@ -72,6 +63,12 @@ Historique du projet
- vers 2000 : `lancement du projet `_ ;
- vers 2012 : `reprise `_ par l'`AFPy `_ ;
-- 2017 : le projet devient traduction officielle de la documentation Python par la `PEP 545 `_.
+- 2016 : 15 % de la documentation traduite ;
+- 2017 : le projet devient traduction officielle de la documentation Python par la `PEP 545 `_ ;
+- 2019 : 30 % de la documentation traduite ;
+- 2021 : 50 % de la documentation traduite.
+
+.. image:: https://julienpalard.frama.io/write-the-docs-paris-19/fr_translation_percent.png
+ :target: https://framagit.org/JulienPalard/write-the-docs-paris-19
+ :alt: Progression de la traduction
-Une `vidéo `_ de `Jules Lasne `_ montre l'évolution du dépôt.
diff --git a/TRANSLATORS b/TRANSLATORS
index 1e7d605ff7..6df8140bf5 100644
--- a/TRANSLATORS
+++ b/TRANSLATORS
@@ -20,3 +20,4 @@ Loc Cosnier
Yannick Gingras
Martin Chlumsky
Stephan Michaud
+Edith Viau
diff --git a/about.po b/about.po
index abd282341b..7f0a550501 100644
--- a/about.po
+++ b/about.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: 2018-07-23 17:55+0200\n"
+"POT-Creation-Date: 2022-05-21 16:37+0200\n"
+"PO-Revision-Date: 2022-07-08 17:54+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\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 2e0b020397..e40b0a32ce 100644
--- a/bugs.po
+++ b/bugs.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
-"PO-Revision-Date: 2021-05-26 23:13+0200\n"
-"Last-Translator: Antoine Wecxsteen\n"
+"POT-Creation-Date: 2022-05-22 23:13+0200\n"
+"PO-Revision-Date: 2022-07-08 17:50+0200\n"
+"Last-Translator: Jean Abou Samra \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 3.0\n"
#: bugs.rst:5
msgid "Dealing with Bugs"
@@ -95,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 `_"
@@ -109,30 +109,49 @@ 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
+#, fuzzy
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."
-#: bugs.rst:47
+#: bugs.rst:52
+#, fuzzy
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 "
@@ -142,13 +161,13 @@ msgstr ""
"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."
-#: bugs.rst:54
+#: bugs.rst:59
+#, fuzzy
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 "
@@ -157,29 +176,27 @@ msgstr ""
"dans la barre latérale. Il n'est pas possible de soumettre un rapport de "
"bogue de manière anonyme."
-#: bugs.rst:59
+#: bugs.rst:64
+#, fuzzy
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."
-#: bugs.rst:62
+#: bugs.rst:67
+msgid "The submission form has two fields, \"Title\" and \"Comment\"."
+msgstr ""
+
+#: 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."
-#: 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 "
@@ -192,17 +209,18 @@ msgstr ""
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
"informations de versions)."
-#: bugs.rst:72
+#: bugs.rst:77
+#, fuzzy
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 "
"nécessaire d'entreprendre pour corriger le problème. Vous recevrez une "
"notification à chaque action effectuée sur le bogue."
-#: bugs.rst:81
+#: bugs.rst:86
msgid ""
"`How to Report Bugs Effectively `_"
@@ -210,7 +228,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."
@@ -219,15 +237,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."
@@ -235,11 +253,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 "
@@ -253,3 +271,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/apiabiversion.po b/c-api/apiabiversion.po
index dc75ce90fd..8fce41dc72 100644
--- a/c-api/apiabiversion.po
+++ b/c-api/apiabiversion.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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -20,101 +20,192 @@ msgstr "Version des API et ABI"
#: c-api/apiabiversion.rst:9
msgid ""
-"``PY_VERSION_HEX`` is the Python version number encoded in a single integer."
+"CPython exposes its version number in the following macros. Note that these "
+"correspond to the version code is **built** with, not necessarily the "
+"version used at **run time**."
+msgstr ""
+
+#: c-api/apiabiversion.rst:13
+msgid ""
+"See :ref:`stable` for a discussion of API and ABI stability across versions."
+msgstr ""
+
+#: c-api/apiabiversion.rst:17
+#, fuzzy
+msgid "The ``3`` in ``3.4.1a2``."
+msgstr "``PY_MAJOR_VERSION`` (le ``3`` dans ``3.4.1a2``)"
+
+#: c-api/apiabiversion.rst:21
+#, fuzzy
+msgid "The ``4`` in ``3.4.1a2``."
+msgstr "``PY_MINOR_VERSION`` (le ``4`` dans ``3.4.1a2``)"
+
+#: c-api/apiabiversion.rst:25
+#, fuzzy
+msgid "The ``1`` in ``3.4.1a2``."
+msgstr "``PY_MICRO_VERSION`` (le ``1`` dans ``3.4.1a2``)"
+
+#: c-api/apiabiversion.rst:29
+#, fuzzy
+msgid ""
+"The ``a`` in ``3.4.1a2``. This can be ``0xA`` for alpha, ``0xB`` for beta, "
+"``0xC`` for release candidate or ``0xF`` for final."
+msgstr ""
+"``PY_RELEASE_LEVEL`` (``0xA`` pour alpha, ``0xB`` pour bêta, ``0xC`` pour "
+"une version candidate et ``0xF`` pour final), dans ce cas c'est alpha."
+
+#: c-api/apiabiversion.rst:35
+#, fuzzy
+msgid "The ``2`` in ``3.4.1a2``. Zero for final releases."
+msgstr ""
+"``PY_RELEASE_SERIAL`` (le ``2`` au ``3.4.1a2``, zéro pour des versions "
+"finales)"
+
+#: c-api/apiabiversion.rst:39
+#, fuzzy
+msgid "The Python version number encoded in a single integer."
msgstr ""
"``PY_VERSION_HEX`` est le numéro de version de Python encodé en un seul "
"entier."
-#: c-api/apiabiversion.rst:11
+#: c-api/apiabiversion.rst:41
+#, fuzzy
msgid ""
-"For example if the ``PY_VERSION_HEX`` is set to ``0x030401a2``, the "
-"underlying version information can be found by treating it as a 32 bit "
+"The underlying version information can be found by treating it as a 32 bit "
"number in the following manner:"
msgstr ""
"Par exemple si le ``PY_VERSION_HEX` est défini à ``0x030401a2``, la "
"version d'information sous-jacente peut être trouvée en la traitant comme un "
"nombre sous 32 bits de la manière suivante:"
-#: c-api/apiabiversion.rst:16
+#: c-api/apiabiversion.rst:45
msgid "Bytes"
msgstr "Bytes"
-#: c-api/apiabiversion.rst:16
+#: c-api/apiabiversion.rst:45
msgid "Bits (big endian order)"
msgstr "Bits (ordre gros-boutiste)"
-#: c-api/apiabiversion.rst:16
+#: c-api/apiabiversion.rst:45
msgid "Meaning"
msgstr "Signification"
-#: c-api/apiabiversion.rst:18
-msgid "``1``"
-msgstr "``1``"
+#: c-api/apiabiversion.rst:45
+msgid "Value for ``3.4.1a2``"
+msgstr ""
+
+#: c-api/apiabiversion.rst:47
+msgid "1"
+msgstr ""
-#: c-api/apiabiversion.rst:18
-msgid "``1-8``"
+#: c-api/apiabiversion.rst:47
+#, fuzzy
+msgid "1-8"
msgstr "``1-8``"
-#: c-api/apiabiversion.rst:18
-msgid "``PY_MAJOR_VERSION`` (the ``3`` in ``3.4.1a2``)"
-msgstr "``PY_MAJOR_VERSION`` (le ``3`` dans ``3.4.1a2``)"
+#: c-api/apiabiversion.rst:47
+msgid "``PY_MAJOR_VERSION``"
+msgstr ""
-#: c-api/apiabiversion.rst:21
-msgid "``2``"
-msgstr "``2``"
+#: c-api/apiabiversion.rst:47
+msgid "``0x03``"
+msgstr ""
-#: c-api/apiabiversion.rst:21
-msgid "``9-16``"
+#: c-api/apiabiversion.rst:49
+msgid "2"
+msgstr ""
+
+#: c-api/apiabiversion.rst:49
+#, fuzzy
+msgid "9-16"
msgstr "``9-16``"
-#: c-api/apiabiversion.rst:21
-msgid "``PY_MINOR_VERSION`` (the ``4`` in ``3.4.1a2``)"
-msgstr "``PY_MINOR_VERSION`` (le ``4`` dans ``3.4.1a2``)"
+#: c-api/apiabiversion.rst:49
+msgid "``PY_MINOR_VERSION``"
+msgstr ""
+
+#: c-api/apiabiversion.rst:49
+msgid "``0x04``"
+msgstr ""
-#: c-api/apiabiversion.rst:24
-msgid "``3``"
-msgstr "``3``"
+#: c-api/apiabiversion.rst:51
+msgid "3"
+msgstr ""
-#: c-api/apiabiversion.rst:24
-msgid "``17-24``"
+#: c-api/apiabiversion.rst:51
+#, fuzzy
+msgid "17-24"
msgstr "``17-24``"
-#: c-api/apiabiversion.rst:24
-msgid "``PY_MICRO_VERSION`` (the ``1`` in ``3.4.1a2``)"
-msgstr "``PY_MICRO_VERSION`` (le ``1`` dans ``3.4.1a2``)"
+#: c-api/apiabiversion.rst:51
+msgid "``PY_MICRO_VERSION``"
+msgstr ""
-#: c-api/apiabiversion.rst:27
-msgid "``4``"
-msgstr "``4``"
+#: c-api/apiabiversion.rst:51
+msgid "``0x01``"
+msgstr ""
+
+#: c-api/apiabiversion.rst:53
+msgid "4"
+msgstr ""
-#: c-api/apiabiversion.rst:27
-msgid "``25-28``"
+#: c-api/apiabiversion.rst:53
+#, fuzzy
+msgid "25-28"
msgstr "``25-28``"
-#: c-api/apiabiversion.rst:27
-msgid ""
-"``PY_RELEASE_LEVEL`` (``0xA`` for alpha, ``0xB`` for beta, ``0xC`` for "
-"release candidate and ``0xF`` for final), in this case it is alpha."
+#: c-api/apiabiversion.rst:53
+msgid "``PY_RELEASE_LEVEL``"
+msgstr ""
+
+#: c-api/apiabiversion.rst:53
+msgid "``0xA``"
msgstr ""
-"``PY_RELEASE_LEVEL`` (``0xA`` pour alpha, ``0xB`` pour bêta, ``0xC`` pour "
-"une version candidate et ``0xF`` pour final), dans ce cas c'est alpha."
-#: c-api/apiabiversion.rst:32
-msgid "``29-32``"
+#: c-api/apiabiversion.rst:55
+#, fuzzy
+msgid "29-32"
msgstr "``29-32``"
-#: c-api/apiabiversion.rst:32
-msgid ""
-"``PY_RELEASE_SERIAL`` (the ``2`` in ``3.4.1a2``, zero for final releases)"
+#: c-api/apiabiversion.rst:55
+msgid "``PY_RELEASE_SERIAL``"
+msgstr ""
+
+#: c-api/apiabiversion.rst:55
+msgid "``0x2``"
msgstr ""
-"``PY_RELEASE_SERIAL`` (le ``2`` au ``3.4.1a2``, zéro pour des versions "
-"finales)"
-#: c-api/apiabiversion.rst:36
-msgid "Thus ``3.4.1a2`` is hexversion ``0x030401a2``."
+#: c-api/apiabiversion.rst:58
+#, fuzzy
+msgid ""
+"Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is hexversion "
+"``0x030a00f0``."
msgstr "Ainsi ``3.4.1a2`` est une hexane-version ``0x030401a2``."
-#: c-api/apiabiversion.rst:38
+#: c-api/apiabiversion.rst:61
+msgid "This version is also available via the symbol :data:`Py_Version`."
+msgstr ""
+
+#: c-api/apiabiversion.rst:65
+msgid ""
+"The Python runtime version number encoded in a single constant integer, with "
+"the same format as the :c:macro:`PY_VERSION_HEX` macro. This contains the "
+"Python version used at run time."
+msgstr ""
+
+#: c-api/apiabiversion.rst:71
msgid "All the given macros are defined in :source:`Include/patchlevel.h`."
msgstr ""
"Toutes les macros données sont définies dans :source:`Include/patchlevel.h`."
+
+#~ msgid "``1``"
+#~ msgstr "``1``"
+
+#~ msgid "``2``"
+#~ msgstr "``2``"
+
+#~ msgid "``3``"
+#~ msgstr "``3``"
+
+#~ msgid "``4``"
+#~ msgstr "``4``"
diff --git a/c-api/arg.po b/c-api/arg.po
index 82c7982aa5..fd5bc715e9 100644
--- a/c-api/arg.po
+++ b/c-api/arg.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
-"PO-Revision-Date: 2020-12-10 16:23+0100\n"
+"POT-Creation-Date: 2022-05-22 23:13+0200\n"
+"PO-Revision-Date: 2021-12-11 11:44+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -78,7 +78,7 @@ msgid ""
"don't have to provide raw storage for the returned unicode or bytes area."
msgstr ""
"Ces formats permettent d'accéder à un objet sous forme d'un fragment de "
-"mémoire contigüe. Il n'est pas nécessaire d'allouer la mémoire pour "
+"mémoire contiguë. Il n'est pas nécessaire d'allouer la mémoire pour "
"l'*unicode* ou le *bytes* renvoyé."
#: c-api/arg.rst:37
@@ -129,28 +129,18 @@ msgstr ""
#: c-api/arg.rst:58
msgid ""
-"For all ``#`` variants of formats (``s#``, ``y#``, etc.), the type of the "
-"length argument (int or :c:type:`Py_ssize_t`) is controlled by defining the "
-"macro :c:macro:`PY_SSIZE_T_CLEAN` before including :file:`Python.h`. If the "
-"macro was defined, length is a :c:type:`Py_ssize_t` rather than an :c:type:"
-"`int`. This behavior will change in a future Python version to only support :"
-"c:type:`Py_ssize_t` and drop :c:type:`int` support. It is best to always "
-"define :c:macro:`PY_SSIZE_T_CLEAN`."
-msgstr ""
-"Pour toutes les variantes du marqueur ``#`` (``s#``, ``y#``, etc), le type "
-"de l'argument *length* (*int* ou :c:type:`Py_ssize_t`) est contrôlé en "
-"définissant la macro :c:macro:`PY_SSIZE_T_CLEAN` avant d'inclure le fichier :"
-"file:`Python.h`. Si la macro est définie, la longueur est de type :c:type:"
-"`Py_ssize_t` au lieu d'être de type :c:type:`int`. Ce comportement changera "
-"dans une future version de Python, qui supportera seulement :c:type:"
-"`Py_ssize_t` a la place de :c:type:`int`. Il est préférable de toujours "
-"définir :c:macro:`PY_SSIZE_T_CLEAN`."
-
-#: c-api/arg.rst:85
+"For all ``#`` variants of formats (``s#``, ``y#``, etc.), the macro :c:macro:"
+"`PY_SSIZE_T_CLEAN` must be defined before including :file:`Python.h`. On "
+"Python 3.9 and older, the type of the length argument is :c:type:"
+"`Py_ssize_t` if the :c:macro:`PY_SSIZE_T_CLEAN` macro is defined, or int "
+"otherwise."
+msgstr ""
+
+#: c-api/arg.rst:83
msgid "``s`` (:class:`str`) [const char \\*]"
msgstr "``s`` (:class:`str`) [``const char *``]"
-#: c-api/arg.rst:68
+#: c-api/arg.rst:66
msgid ""
"Convert a Unicode object to a C pointer to a character string. A pointer to "
"an existing string is stored in the character pointer variable whose address "
@@ -167,7 +157,7 @@ msgstr ""
"le code est *null*. Si elle en contient, une exception :exc:`ValueError` est "
"levée. Si la conversion échoue, une :exc:`UnicodeError` est levée."
-#: c-api/arg.rst:77
+#: c-api/arg.rst:75
msgid ""
"This format does not accept :term:`bytes-like objects `. "
"If you want to accept filesystem paths and convert them to C character "
@@ -180,7 +170,7 @@ msgstr ""
"est préférable d'utiliser le format ``O&`` avec :c:func:"
"`PyUnicode_FSConverter` en tant que *converter*."
-#: c-api/arg.rst:150
+#: c-api/arg.rst:148
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null code points were "
"encountered in the Python string."
@@ -188,11 +178,11 @@ msgstr ""
"Auparavant, une :exc:`TypeError` était levée quand la chaîne de caractères "
"Python contenait des codes NULL."
-#: c-api/arg.rst:91
+#: c-api/arg.rst:89
msgid "``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]"
msgstr "``s*`` (:class:`str` ou :term:`bytes-like object`) [``Py_buffer``]"
-#: c-api/arg.rst:88
+#: c-api/arg.rst:86
msgid ""
"This format accepts Unicode objects as well as bytes-like objects. It fills "
"a :c:type:`Py_buffer` structure provided by the caller. In this case the "
@@ -205,15 +195,16 @@ msgstr ""
"octets NULL. Les objets Unicode sont convertis en chaînes de caractères C en "
"utilisant l'encodage ``'utf-8'``."
-#: c-api/arg.rst:98
+#: c-api/arg.rst:96
+#, fuzzy
msgid ""
-"``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, "
-"int or :c:type:`Py_ssize_t`]"
+"``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, :"
+"c:type:`Py_ssize_t`]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
-#: c-api/arg.rst:94
+#: c-api/arg.rst:92
msgid ""
"Like ``s*``, except that it doesn't accept mutable objects. The result is "
"stored into two C variables, the first one a pointer to a C string, the "
@@ -226,11 +217,11 @@ msgstr ""
"caractères peut contenir des octets NULL. Les objets Unicode sont convertis "
"vers des chaînes de caractères C utilisant l'encodage ``'utf-8'``."
-#: c-api/arg.rst:566
+#: c-api/arg.rst:565
msgid "``z`` (:class:`str` or ``None``) [const char \\*]"
msgstr "``z`` (:class:`str` ou ``None``) [``const char *``]"
-#: c-api/arg.rst:101
+#: c-api/arg.rst:99
#, fuzzy
msgid ""
"Like ``s``, but the Python object may also be ``None``, in which case the C "
@@ -239,13 +230,13 @@ msgstr ""
"Comme ``s``, mais l'objet Python peut aussi être ``None``, auquel cas le "
"pointeur C devient *NULL*."
-#: c-api/arg.rst:106
+#: c-api/arg.rst:104
msgid ""
"``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]"
msgstr ""
"``z*`` (:class:`str`, :term:`bytes-like object` ou ``None``) [``Py_buffer``]"
-#: c-api/arg.rst:105
+#: c-api/arg.rst:103
msgid ""
"Like ``s*``, but the Python object may also be ``None``, in which case the "
"``buf`` member of the :c:type:`Py_buffer` structure is set to ``NULL``."
@@ -253,16 +244,16 @@ msgstr ""
"Comme ``s*``, mais l'objet Python peut aussi être ``None``, auquel cas le "
"membre ``buf``, dont la structure est :c:type:`Py_buffer` est fixée à *NULL*."
-#: c-api/arg.rst:110
+#: c-api/arg.rst:108
#, fuzzy
msgid ""
"``z#`` (:class:`str`, read-only :term:`bytes-like object` or ``None``) "
-"[const char \\*, int or :c:type:`Py_ssize_t`]"
+"[const char \\*, :c:type:`Py_ssize_t`]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
-#: c-api/arg.rst:109
+#: c-api/arg.rst:107
#, fuzzy
msgid ""
"Like ``s#``, but the Python object may also be ``None``, in which case the C "
@@ -271,13 +262,13 @@ msgstr ""
"Comme ``s#``, mais l'objet Python peut également être ``None``, dans ce cas "
"le pointeur C est définie à *NULL*."
-#: c-api/arg.rst:120
+#: c-api/arg.rst:118
msgid "``y`` (read-only :term:`bytes-like object`) [const char \\*]"
msgstr ""
"``y`` (lecture seule :term:`objet compatible avec une chaîne d'octets `) [constante char \\*]"
-#: c-api/arg.rst:113
+#: c-api/arg.rst:111
msgid ""
"This format converts a bytes-like object to a C pointer to a character "
"string; it does not accept Unicode objects. The bytes buffer must not "
@@ -289,7 +280,7 @@ msgstr ""
"Unicode. Le tampon d'octets ne doit pas contenir d'octets *null* ; si c'est "
"le cas, une exception :exc:`ValueError` est levée."
-#: c-api/arg.rst:118
+#: c-api/arg.rst:116
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null bytes were "
"encountered in the bytes buffer."
@@ -297,26 +288,26 @@ msgstr ""
"Auparavant, :exc:`TypeError` était levée lorsque des octets *null* étaient "
"rencontrés dans le tampon d'octets."
-#: c-api/arg.rst:125
+#: c-api/arg.rst:123
msgid "``y*`` (:term:`bytes-like object`) [Py_buffer]"
msgstr "``y*`` (:term:`bytes-like object`) [``Py_buffer``]"
-#: c-api/arg.rst:123
+#: c-api/arg.rst:121
msgid ""
"This variant on ``s*`` doesn't accept Unicode objects, only bytes-like "
"objects. **This is the recommended way to accept binary data.**"
msgstr ""
-#: c-api/arg.rst:129
+#: c-api/arg.rst:127
#, fuzzy
msgid ""
-"``y#`` (read-only :term:`bytes-like object`) [const char \\*, int or :c:type:"
+"``y#`` (read-only :term:`bytes-like object`) [const char \\*, :c:type:"
"`Py_ssize_t`]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
-#: c-api/arg.rst:128
+#: c-api/arg.rst:126
msgid ""
"This variant on ``s#`` doesn't accept Unicode objects, only bytes-like "
"objects."
@@ -324,11 +315,11 @@ msgstr ""
"Cette variante de ``s#`` n'accepte pas les objets Unicode, uniquement des "
"objets assimilés à des octets."
-#: c-api/arg.rst:134
+#: c-api/arg.rst:132
msgid "``S`` (:class:`bytes`) [PyBytesObject \\*]"
msgstr "``S`` (:class:`bytes`) [``PyBytesObject *``]"
-#: c-api/arg.rst:132
+#: c-api/arg.rst:130
#, fuzzy
msgid ""
"Requires that the Python object is a :class:`bytes` object, without "
@@ -340,11 +331,11 @@ msgstr ""
"type *bytes*. La variable C doit aussi être déclarée en tant que :c:type:"
"`PyObject\\*`."
-#: c-api/arg.rst:139
+#: c-api/arg.rst:137
msgid "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]"
msgstr "``Y`` (:class:`bytearray`) [``PyByteArrayObject *``]"
-#: c-api/arg.rst:137
+#: c-api/arg.rst:135
#, fuzzy
msgid ""
"Requires that the Python object is a :class:`bytearray` object, without "
@@ -357,11 +348,11 @@ msgstr ""
"type *bytes*. La variable C doit aussi être déclarée en tant que :c:type:"
"`PyObject\\*`."
-#: c-api/arg.rst:156
+#: c-api/arg.rst:154
msgid "``u`` (:class:`str`) [const Py_UNICODE \\*]"
msgstr "``u`` (:class:`str`) [``const Py_UNICODE *``]"
-#: c-api/arg.rst:142
+#: c-api/arg.rst:140
msgid ""
"Convert a Python Unicode object to a C pointer to a NUL-terminated buffer of "
"Unicode characters. You must pass the address of a :c:type:`Py_UNICODE` "
@@ -379,30 +370,29 @@ msgstr ""
"chaîne de caractères Python ne doit pas contenir de code *NULL*. Si elle en "
"contient, une exception :exc:`ValueError` est levée."
-#: c-api/arg.rst:174 c-api/arg.rst:182
+#: c-api/arg.rst:172 c-api/arg.rst:180
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsWideCharString`."
msgstr ""
-#: c-api/arg.rst:165
+#: c-api/arg.rst:163
#, fuzzy
-msgid ""
-"``u#`` (:class:`str`) [const Py_UNICODE \\*, int or :c:type:`Py_ssize_t`]"
+msgid "``u#`` (:class:`str`) [const Py_UNICODE \\*, :c:type:`Py_ssize_t`]"
msgstr "``u#`` (:class:`str`) [``const Py_UNICODE *``, ``int``]"
-#: c-api/arg.rst:159
+#: c-api/arg.rst:157
msgid ""
"This variant on ``u`` stores into two C variables, the first one a pointer "
"to a Unicode data buffer, the second one its length. This variant allows "
"null code points."
msgstr ""
-#: c-api/arg.rst:173
+#: c-api/arg.rst:171
msgid "``Z`` (:class:`str` or ``None``) [const Py_UNICODE \\*]"
msgstr "``Z`` (:class:`str` ou ``None``) [``const Py_UNICODE *``]"
-#: c-api/arg.rst:168
+#: c-api/arg.rst:166
#, fuzzy
msgid ""
"Like ``u``, but the Python object may also be ``None``, in which case the :c:"
@@ -411,14 +401,14 @@ msgstr ""
"Comme ``u``, mais l'objet Python peut aussi être ``None``, auquel cas le "
"pointeur :c:type:`Py_UNICODE` vaut *NULL*."
-#: c-api/arg.rst:181
+#: c-api/arg.rst:179
#, fuzzy
msgid ""
-"``Z#`` (:class:`str` or ``None``) [const Py_UNICODE \\*, int or :c:type:"
+"``Z#`` (:class:`str` or ``None``) [const Py_UNICODE \\*, :c:type:"
"`Py_ssize_t`]"
msgstr "``Z#`` (:class:`str` ou ``None``) [``const Py_UNICODE *``, ``int``]"
-#: c-api/arg.rst:176
+#: c-api/arg.rst:174
#, fuzzy
msgid ""
"Like ``u#``, but the Python object may also be ``None``, in which case the :"
@@ -427,11 +417,11 @@ msgstr ""
"Comme ``u#``, mais l'objet Python peut également être ``None``, auquel cas "
"le pointeur :c:type:`Py_UNICODE` vaut *NULL*."
-#: c-api/arg.rst:186
+#: c-api/arg.rst:184
msgid "``U`` (:class:`str`) [PyObject \\*]"
msgstr "``U`` (:class:`str`) [``PyObject *``]"
-#: c-api/arg.rst:184
+#: c-api/arg.rst:182
#, fuzzy
msgid ""
"Requires that the Python object is a Unicode object, without attempting any "
@@ -443,11 +433,11 @@ msgstr ""
"type *bytes*. La variable C doit aussi être déclarée en tant que :c:type:"
"`PyObject\\*`."
-#: c-api/arg.rst:192
+#: c-api/arg.rst:190
msgid "``w*`` (read-write :term:`bytes-like object`) [Py_buffer]"
msgstr "``w*`` (lecture-écriture :term:`bytes-like object`) [``Py_buffer``]"
-#: c-api/arg.rst:189
+#: c-api/arg.rst:187
msgid ""
"This format accepts any object which implements the read-write buffer "
"interface. It fills a :c:type:`Py_buffer` structure provided by the caller. "
@@ -455,17 +445,17 @@ msgid ""
"`PyBuffer_Release` when it is done with the buffer."
msgstr ""
-#: c-api/arg.rst:209
+#: c-api/arg.rst:207
msgid "``es`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer]"
msgstr ""
-#: c-api/arg.rst:195
+#: c-api/arg.rst:193
msgid ""
"This variant on ``s`` is used for encoding Unicode into a character buffer. "
"It only works for encoded data without embedded NUL bytes."
msgstr ""
-#: c-api/arg.rst:198
+#: c-api/arg.rst:196
msgid ""
"This format requires two arguments. The first is only used as input, and "
"must be a :c:type:`const char*` which points to the name of an encoding as a "
@@ -476,7 +466,7 @@ msgid ""
"The text will be encoded in the encoding specified by the first argument."
msgstr ""
-#: c-api/arg.rst:206
+#: c-api/arg.rst:204
msgid ""
":c:func:`PyArg_ParseTuple` will allocate a buffer of the needed size, copy "
"the encoded data into this buffer and adjust *\\*buffer* to reference the "
@@ -484,36 +474,36 @@ msgid ""
"`PyMem_Free` to free the allocated buffer after use."
msgstr ""
-#: c-api/arg.rst:214
+#: c-api/arg.rst:212
msgid ""
"``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char "
"\\*encoding, char \\*\\*buffer]"
msgstr ""
-#: c-api/arg.rst:212
+#: c-api/arg.rst:210
msgid ""
"Same as ``es`` except that byte string objects are passed through without "
"recoding them. Instead, the implementation assumes that the byte string "
"object uses the encoding passed in as parameter."
msgstr ""
-#: c-api/arg.rst:245
+#: c-api/arg.rst:243
#, fuzzy
msgid ""
-"``es#`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer, int or :c:"
-"type:`Py_ssize_t` \\*buffer_length]"
+"``es#`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer, :c:type:"
+"`Py_ssize_t` \\*buffer_length]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
-#: c-api/arg.rst:217
+#: c-api/arg.rst:215
msgid ""
"This variant on ``s#`` is used for encoding Unicode into a character buffer. "
"Unlike the ``es`` format, this variant allows input data which contains NUL "
"characters."
msgstr ""
-#: c-api/arg.rst:221
+#: c-api/arg.rst:219
msgid ""
"It requires three arguments. The first is only used as input, and must be "
"a :c:type:`const char*` which points to the name of an encoding as a NUL-"
@@ -526,20 +516,20 @@ msgid ""
"will be set to the number of bytes in the output buffer."
msgstr ""
-#: c-api/arg.rst:231
+#: c-api/arg.rst:229
msgid "There are two modes of operation:"
msgstr "Il existe deux modes de fonctionnement :"
-#: c-api/arg.rst:233
+#: c-api/arg.rst:231
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 ""
-#: c-api/arg.rst:238
+#: c-api/arg.rst:236
msgid ""
"If *\\*buffer* points to a non-``NULL`` pointer (an already allocated "
"buffer), :c:func:`PyArg_ParseTuple` will use this location as the buffer and "
@@ -548,7 +538,7 @@ msgid ""
"the buffer is not large enough, a :exc:`ValueError` will be set."
msgstr ""
-#: c-api/arg.rst:244
+#: c-api/arg.rst:242
msgid ""
"In both cases, *\\*buffer_length* is set to the length of the encoded data "
"without the trailing NUL byte."
@@ -556,31 +546,31 @@ msgstr ""
"Dans les deux cas, *\\*buffer_length* est la longueur des données encodées, "
"sans l'octet NUL de fin."
-#: c-api/arg.rst:250
+#: c-api/arg.rst:248
#, fuzzy
msgid ""
"``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char "
-"\\*encoding, char \\*\\*buffer, int or :c:type:`Py_ssize_t` \\*buffer_length]"
+"\\*encoding, char \\*\\*buffer, :c:type:`Py_ssize_t` \\*buffer_length]"
msgstr ""
"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
-#: c-api/arg.rst:248
+#: c-api/arg.rst:246
msgid ""
"Same as ``es#`` except that byte string objects are passed through without "
"recoding them. Instead, the implementation assumes that the byte string "
"object uses the encoding passed in as parameter."
msgstr ""
-#: c-api/arg.rst:253
+#: c-api/arg.rst:251
msgid "Numbers"
msgstr "Les nombres"
-#: c-api/arg.rst:257
+#: c-api/arg.rst:255
msgid "``b`` (:class:`int`) [unsigned char]"
msgstr "``b`` (:class:`int`) [``unsigned char``]"
-#: c-api/arg.rst:256
+#: c-api/arg.rst:254
msgid ""
"Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :"
"c:type:`unsigned char`."
@@ -588,11 +578,11 @@ msgstr ""
"Convertit un entier Python positif ou nul en un ``unsigned tiny int``, "
"stocké dans un :c:type:`unsigned char` C."
-#: c-api/arg.rst:600
+#: c-api/arg.rst:599
msgid "``B`` (:class:`int`) [unsigned char]"
msgstr "``B`` (:class:`int`) [``unsigned char``]"
-#: c-api/arg.rst:260
+#: c-api/arg.rst:258
msgid ""
"Convert a Python integer to a tiny int without overflow checking, stored in "
"a C :c:type:`unsigned char`."
@@ -600,19 +590,19 @@ msgstr ""
"Convertit un entier Python en un ``tiny int`` sans vérifier le débordement, "
"stocké dans un :c:type:`unsigned char` C."
-#: c-api/arg.rst:594
+#: c-api/arg.rst:593
msgid "``h`` (:class:`int`) [short int]"
msgstr "``h`` (:class:`int`) [``short int``]"
-#: c-api/arg.rst:264
+#: c-api/arg.rst:262
msgid "Convert a Python integer to a C :c:type:`short int`."
msgstr "Convertit un entier Python en un :c:type:`short int` C."
-#: c-api/arg.rst:603
+#: c-api/arg.rst:602
msgid "``H`` (:class:`int`) [unsigned short int]"
msgstr "``H`` (:class:`int`) [``unsigned short int``]"
-#: c-api/arg.rst:267
+#: c-api/arg.rst:265
msgid ""
"Convert a Python integer to a C :c:type:`unsigned short int`, without "
"overflow checking."
@@ -620,19 +610,19 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned short int` C, sans "
"contrôle de débordement."
-#: c-api/arg.rst:588
+#: c-api/arg.rst:587
msgid "``i`` (:class:`int`) [int]"
msgstr "``i`` (:class:`int`) [``int``]"
-#: c-api/arg.rst:271
+#: c-api/arg.rst:269
msgid "Convert a Python integer to a plain C :c:type:`int`."
msgstr "Convertit un entier Python en un :c:type:`int` C."
-#: c-api/arg.rst:606
+#: c-api/arg.rst:605
msgid "``I`` (:class:`int`) [unsigned int]"
msgstr "``I`` (:class:`int`) [``unsigned int``]"
-#: c-api/arg.rst:274
+#: c-api/arg.rst:272
msgid ""
"Convert a Python integer to a C :c:type:`unsigned int`, without overflow "
"checking."
@@ -640,19 +630,19 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned int` C, sans contrôle de "
"le débordement."
-#: c-api/arg.rst:597
+#: c-api/arg.rst:596
msgid "``l`` (:class:`int`) [long int]"
msgstr "``l`` (:class:`int`) [``long int``]"
-#: c-api/arg.rst:278
+#: c-api/arg.rst:276
msgid "Convert a Python integer to a C :c:type:`long int`."
msgstr "Convertit un entier Python en un :c:type:`long int`."
-#: c-api/arg.rst:609
+#: c-api/arg.rst:608
msgid "``k`` (:class:`int`) [unsigned long]"
msgstr "``k`` (:class:`int`) [``unsigned long``]"
-#: c-api/arg.rst:281
+#: c-api/arg.rst:279
msgid ""
"Convert a Python integer to a C :c:type:`unsigned long` without overflow "
"checking."
@@ -660,20 +650,20 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned long` C sans en vérifier "
"le débordement."
-#: c-api/arg.rst:612
+#: c-api/arg.rst:611
msgid "``L`` (:class:`int`) [long long]"
msgstr "``L`` (:class:`int`) [``long long``]"
-#: c-api/arg.rst:285
+#: c-api/arg.rst:283
#, fuzzy
msgid "Convert a Python integer to a C :c:type:`long long`."
msgstr "Convertit un entier Python en un :c:type:`long int`."
-#: c-api/arg.rst:615
+#: c-api/arg.rst:614
msgid "``K`` (:class:`int`) [unsigned long long]"
msgstr "``K`` (:class:`int`) [``unsigned long long``]"
-#: c-api/arg.rst:288
+#: c-api/arg.rst:286
#, fuzzy
msgid ""
"Convert a Python integer to a C :c:type:`unsigned long long` without "
@@ -682,19 +672,20 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned long` C sans en vérifier "
"le débordement."
-#: c-api/arg.rst:618
-msgid "``n`` (:class:`int`) [Py_ssize_t]"
+#: c-api/arg.rst:617
+#, fuzzy
+msgid "``n`` (:class:`int`) [:c:type:`Py_ssize_t`]"
msgstr "``n`` (:class:`int`) [``Py_ssize_t``]"
-#: c-api/arg.rst:292
+#: c-api/arg.rst:290
msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
msgstr "Convertit un entier Python en un :c:type:`Py_ssize_t`."
-#: c-api/arg.rst:299
+#: c-api/arg.rst:297
msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"
msgstr "``c`` (:class:`bytes` ou :class:`bytearray` de longueur 1) [``char``]"
-#: c-api/arg.rst:295
+#: c-api/arg.rst:293
msgid ""
"Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` "
"object of length 1, to a C :c:type:`char`."
@@ -702,15 +693,15 @@ msgstr ""
"Convertit un *byte* Python, représenté comme un objet :class:`bytes` ou :"
"class:`bytearray` de longueur 1, en un :c:type:`char` C."
-#: c-api/arg.rst:298
+#: c-api/arg.rst:296
msgid "Allow :class:`bytearray` objects."
msgstr ""
-#: c-api/arg.rst:626
+#: c-api/arg.rst:625
msgid "``C`` (:class:`str` of length 1) [int]"
msgstr "``C`` (:class:`str` de longueur 1) [``int``]"
-#: c-api/arg.rst:302
+#: c-api/arg.rst:300
msgid ""
"Convert a Python character, represented as a :class:`str` object of length "
"1, to a C :c:type:`int`."
@@ -718,41 +709,41 @@ msgstr ""
"Convertit un caractère Python, représenté comme un objet :class:`str` de "
"longueur 1, en un :c:type:`int` C."
-#: c-api/arg.rst:632
+#: c-api/arg.rst:631
msgid "``f`` (:class:`float`) [float]"
msgstr "``f`` (:class:`float`) [``float``]"
-#: c-api/arg.rst:306
+#: c-api/arg.rst:304
msgid "Convert a Python floating point number to a C :c:type:`float`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`float`."
-#: c-api/arg.rst:629
+#: c-api/arg.rst:628
msgid "``d`` (:class:`float`) [double]"
msgstr "``d`` (:class:`float`) [``double``]"
-#: c-api/arg.rst:309
+#: c-api/arg.rst:307
msgid "Convert a Python floating point number to a C :c:type:`double`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`double` C."
-#: c-api/arg.rst:312
+#: c-api/arg.rst:310
msgid "``D`` (:class:`complex`) [Py_complex]"
msgstr "``D`` (:class:`complex`) [``Py_complex``]"
-#: c-api/arg.rst:312
+#: c-api/arg.rst:310
msgid "Convert a Python complex number to a C :c:type:`Py_complex` structure."
msgstr ""
"Convertit un nombre complexe Python vers une structure :c:type:`Py_complex` "
"C."
-#: c-api/arg.rst:315
+#: c-api/arg.rst:313
msgid "Other objects"
msgstr "Autres objets"
-#: c-api/arg.rst:643
+#: c-api/arg.rst:642
msgid "``O`` (object) [PyObject \\*]"
msgstr "``O`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:318
+#: c-api/arg.rst:316
#, fuzzy
msgid ""
"Store a Python object (without any conversion) in a C object pointer. The C "
@@ -764,11 +755,11 @@ msgstr ""
"référence sur l'objet n'est pas incrémenté. Le pointeur stocké n'est pas "
"*NULL*."
-#: c-api/arg.rst:327
+#: c-api/arg.rst:325
msgid "``O!`` (object) [*typeobject*, PyObject \\*]"
msgstr "``O!`` (objet) [*typeobject*, ``PyObject *``]"
-#: c-api/arg.rst:323
+#: c-api/arg.rst:321
msgid ""
"Store a Python object in a C object pointer. This is similar to ``O``, but "
"takes two C arguments: the first is the address of a Python type object, the "
@@ -777,11 +768,11 @@ msgid ""
"required type, :exc:`TypeError` is raised."
msgstr ""
-#: c-api/arg.rst:657
+#: c-api/arg.rst:656
msgid "``O&`` (object) [*converter*, *anything*]"
msgstr "``O&`` (objet) [*converter*, *anything*]"
-#: c-api/arg.rst:332
+#: c-api/arg.rst:330
msgid ""
"Convert a Python object to a C variable through a *converter* function. "
"This takes two arguments: the first is a function, the second is the address "
@@ -789,7 +780,7 @@ msgid ""
"*converter* function in turn is called as follows::"
msgstr ""
-#: c-api/arg.rst:339
+#: c-api/arg.rst:337
msgid ""
"where *object* is the Python object to be converted and *address* is the :c:"
"type:`void*` argument that was passed to the :c:func:`PyArg_Parse\\*` "
@@ -799,7 +790,7 @@ msgid ""
"*address* unmodified."
msgstr ""
-#: c-api/arg.rst:345
+#: c-api/arg.rst:343
msgid ""
"If the *converter* returns ``Py_CLEANUP_SUPPORTED``, it may get called a "
"second time if the argument parsing eventually fails, giving the converter a "
@@ -808,15 +799,15 @@ msgid ""
"value as in the original call."
msgstr ""
-#: c-api/arg.rst:351
+#: c-api/arg.rst:349
msgid "``Py_CLEANUP_SUPPORTED`` was added."
msgstr "``Py_CLEANUP_SUPPORTED`` à été ajouté."
-#: c-api/arg.rst:361
+#: c-api/arg.rst:359
msgid "``p`` (:class:`bool`) [int]"
msgstr "``p`` (:class:`bool`) [``int``]"
-#: c-api/arg.rst:355
+#: c-api/arg.rst:353
msgid ""
"Tests the value passed in for truth (a boolean **p**\\ redicate) and "
"converts the result to its equivalent C true/false integer value. Sets the "
@@ -825,11 +816,11 @@ msgid ""
"how Python tests values for truth."
msgstr ""
-#: c-api/arg.rst:660
+#: c-api/arg.rst:659
msgid "``(items)`` (:class:`tuple`) [*matching-items*]"
msgstr "``(items)`` (:class:`tuple`) [*matching-items*]"
-#: c-api/arg.rst:364
+#: c-api/arg.rst:362
msgid ""
"The object must be a Python sequence whose length is the number of format "
"units in *items*. The C arguments must correspond to the individual format "
@@ -840,7 +831,7 @@ msgstr ""
"chaque unité de format particulière dans *articles*. Les unités de formats "
"pour les séquences peuvent être imbriquées."
-#: c-api/arg.rst:368
+#: c-api/arg.rst:366
msgid ""
"It is possible to pass \"long\" integers (integers whose value exceeds the "
"platform's :const:`LONG_MAX`) however no proper range checking is done --- "
@@ -849,7 +840,7 @@ msgid ""
"downcasts in C --- your mileage may vary)."
msgstr ""
-#: c-api/arg.rst:374
+#: c-api/arg.rst:372
msgid ""
"A few other characters have a meaning in a format string. These may not "
"occur inside nested parentheses. They are:"
@@ -857,11 +848,11 @@ msgstr ""
"Quelques autres caractères ont un sens dans une chaîne de format. On ne doit "
"pas les trouvées dans des parenthèses imbriquées. Ce sont :"
-#: c-api/arg.rst:382
+#: c-api/arg.rst:380
msgid "``|``"
msgstr "``|``"
-#: c-api/arg.rst:378
+#: c-api/arg.rst:376
msgid ""
"Indicates that the remaining arguments in the Python argument list are "
"optional. The C variables corresponding to optional arguments should be "
@@ -870,11 +861,11 @@ msgid ""
"corresponding C variable(s)."
msgstr ""
-#: c-api/arg.rst:391
+#: c-api/arg.rst:389
msgid "``$``"
msgstr "``$``"
-#: c-api/arg.rst:385
+#: c-api/arg.rst:383
msgid ""
":c:func:`PyArg_ParseTupleAndKeywords` only: Indicates that the remaining "
"arguments in the Python argument list are keyword-only. Currently, all "
@@ -882,22 +873,22 @@ msgid ""
"be specified before ``$`` in the format string."
msgstr ""
-#: c-api/arg.rst:396
+#: c-api/arg.rst:394
msgid "``:``"
msgstr ""
-#: c-api/arg.rst:394
+#: c-api/arg.rst:392
msgid ""
"The list of format units ends here; the string after the colon is used as "
"the function name in error messages (the \"associated value\" of the "
"exception that :c:func:`PyArg_ParseTuple` raises)."
msgstr ""
-#: c-api/arg.rst:401
+#: c-api/arg.rst:399
msgid "``;``"
msgstr ""
-#: c-api/arg.rst:399
+#: c-api/arg.rst:397
msgid ""
"The list of format units ends here; the string after the semicolon is used "
"as the error message *instead* of the default error message. ``:`` and ``;"
@@ -907,7 +898,7 @@ msgstr ""
"virgule est utilise comme message d'erreur *au lieu* du message d'erreur par "
"défaut. ``:`` et ``;`` sont mutuellement exclusifs."
-#: c-api/arg.rst:403
+#: c-api/arg.rst:401
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
@@ -916,7 +907,7 @@ msgstr ""
"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
"compteur de références !"
-#: c-api/arg.rst:406
+#: c-api/arg.rst:404
msgid ""
"Additional arguments passed to these functions must be addresses of "
"variables whose type is determined by the format string; these are used to "
@@ -933,7 +924,7 @@ msgstr ""
"devraient correspondre à ce qui est spécifié pour l'unité de format "
"correspondante."
-#: c-api/arg.rst:412
+#: c-api/arg.rst:410
msgid ""
"For the conversion to succeed, the *arg* object must match the format and "
"the format must be exhausted. On success, the :c:func:`PyArg_Parse\\*` "
@@ -944,24 +935,24 @@ msgid ""
"untouched."
msgstr ""
-#: c-api/arg.rst:421
+#: c-api/arg.rst:419
msgid "API Functions"
msgstr "Fonction de l'API"
-#: c-api/arg.rst:425
+#: c-api/arg.rst:423
msgid ""
"Parse the parameters of a function that takes only positional parameters "
"into local variables. Returns true on success; on failure, it returns false "
"and raises the appropriate exception."
msgstr ""
-#: c-api/arg.rst:432
+#: c-api/arg.rst:430
msgid ""
"Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list "
"rather than a variable number of arguments."
msgstr ""
-#: c-api/arg.rst:438
+#: c-api/arg.rst:436
msgid ""
"Parse the parameters of a function that takes both positional and keyword "
"parameters into local variables. The *keywords* argument is a ``NULL``-"
@@ -970,26 +961,26 @@ msgid ""
"success; on failure, it returns false and raises the appropriate exception."
msgstr ""
-#: c-api/arg.rst:445
+#: c-api/arg.rst:443
msgid ""
"Added support for :ref:`positional-only parameters `."
msgstr ""
-#: c-api/arg.rst:452
+#: c-api/arg.rst:450
msgid ""
"Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a "
"va_list rather than a variable number of arguments."
msgstr ""
-#: c-api/arg.rst:458
+#: c-api/arg.rst:456
msgid ""
"Ensure that the keys in the keywords argument dictionary are strings. This "
"is only needed if :c:func:`PyArg_ParseTupleAndKeywords` is not used, since "
"the latter already does this check."
msgstr ""
-#: c-api/arg.rst:468
+#: c-api/arg.rst:466
msgid ""
"Function used to deconstruct the argument lists of \"old-style\" functions "
"--- these are functions which use the :const:`METH_OLDARGS` parameter "
@@ -1000,7 +991,7 @@ msgid ""
"continue to be used for that purpose."
msgstr ""
-#: c-api/arg.rst:479
+#: c-api/arg.rst:477
msgid ""
"A simpler form of parameter retrieval which does not use a format string to "
"specify the types of the arguments. Functions which use this method to "
@@ -1010,30 +1001,31 @@ msgid ""
"tuple must be at least *min* and no more than *max*; *min* and *max* may be "
"equal. Additional arguments must be passed to the function, each of which "
"should be a pointer to a :c:type:`PyObject*` variable; these will be filled "
-"in with the values from *args*; they will contain borrowed references. The "
-"variables which correspond to optional parameters not given by *args* will "
-"not be filled in; these should be initialized by the caller. This function "
-"returns true on success and false if *args* is not a tuple or contains the "
-"wrong number of elements; an exception will be set if there was a failure."
+"in with the values from *args*; they will contain :term:`borrowed references "
+"`. The variables which correspond to optional parameters "
+"not given by *args* will not be filled in; these should be initialized by "
+"the caller. This function returns true on success and false if *args* is not "
+"a tuple or contains the wrong number of elements; an exception will be set "
+"if there was a failure."
msgstr ""
-#: c-api/arg.rst:493
+#: c-api/arg.rst:492
msgid ""
"This is an example of the use of this function, taken from the sources for "
"the :mod:`_weakref` helper module for weak references::"
msgstr ""
-#: c-api/arg.rst:509
+#: c-api/arg.rst:508
msgid ""
"The call to :c:func:`PyArg_UnpackTuple` in this example is entirely "
"equivalent to this call to :c:func:`PyArg_ParseTuple`::"
msgstr ""
-#: c-api/arg.rst:517
+#: c-api/arg.rst:516
msgid "Building values"
msgstr "Construction des valeurs"
-#: c-api/arg.rst:521
+#: c-api/arg.rst:520
msgid ""
"Create a new value based on a format string similar to those accepted by "
"the :c:func:`PyArg_Parse\\*` family of functions and a sequence of values. "
@@ -1041,7 +1033,7 @@ msgid ""
"raised if ``NULL`` is returned."
msgstr ""
-#: c-api/arg.rst:526
+#: c-api/arg.rst:525
msgid ""
":c:func:`Py_BuildValue` does not always build a tuple. It builds a tuple "
"only if its format string contains two or more format units. If the format "
@@ -1050,7 +1042,7 @@ msgid ""
"it to return a tuple of size 0 or one, parenthesize the format string."
msgstr ""
-#: c-api/arg.rst:532
+#: c-api/arg.rst:531
msgid ""
"When memory buffers are passed as parameters to supply data to build "
"objects, as for the ``s`` and ``s#`` formats, the required data is copied. "
@@ -1061,7 +1053,7 @@ msgid ""
"`Py_BuildValue` returns."
msgstr ""
-#: c-api/arg.rst:540
+#: c-api/arg.rst:539
msgid ""
"In the following description, the quoted form is the format unit; the entry "
"in (round) parentheses is the Python object type that the format unit will "
@@ -1069,191 +1061,188 @@ msgid ""
"be passed."
msgstr ""
-#: c-api/arg.rst:544
+#: c-api/arg.rst:543
msgid ""
"The characters space, tab, colon and comma are ignored in format strings "
"(but not within format units such as ``s#``). This can be used to make long "
"format strings a tad more readable."
msgstr ""
-#: c-api/arg.rst:550
+#: c-api/arg.rst:549
msgid "``s`` (:class:`str` or ``None``) [const char \\*]"
msgstr "``s`` (:class:`str` ou ``None``) [``const char *``]"
-#: c-api/arg.rst:549
+#: c-api/arg.rst:548
msgid ""
"Convert a null-terminated C string to a Python :class:`str` object using "
"``'utf-8'`` encoding. If the C string pointer is ``NULL``, ``None`` is used."
msgstr ""
-#: c-api/arg.rst:555
+#: c-api/arg.rst:554
#, fuzzy
msgid ""
-"``s#`` (:class:`str` or ``None``) [const char \\*, int or :c:type:"
-"`Py_ssize_t`]"
+"``s#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
msgstr "``s#`` (:class:`str` ou ``None``) [``const char *``, ``int``]"
-#: c-api/arg.rst:553
+#: c-api/arg.rst:552
msgid ""
"Convert a C string and its length to a Python :class:`str` object using "
"``'utf-8'`` encoding. If the C string pointer is ``NULL``, the length is "
"ignored and ``None`` is returned."
msgstr ""
-#: c-api/arg.rst:559
+#: c-api/arg.rst:558
msgid "``y`` (:class:`bytes`) [const char \\*]"
msgstr "``y`` (:class:`bytes`) [``const char *``]"
-#: c-api/arg.rst:558
+#: c-api/arg.rst:557
msgid ""
"This converts a C string to a Python :class:`bytes` object. If the C string "
"pointer is ``NULL``, ``None`` is returned."
msgstr ""
-#: c-api/arg.rst:563
+#: c-api/arg.rst:562
#, fuzzy
-msgid "``y#`` (:class:`bytes`) [const char \\*, int or :c:type:`Py_ssize_t`]"
+msgid "``y#`` (:class:`bytes`) [const char \\*, :c:type:`Py_ssize_t`]"
msgstr "``y#`` (:class:`bytes`) [``const char *, int``]"
-#: c-api/arg.rst:562
+#: c-api/arg.rst:561
msgid ""
"This converts a C string and its lengths to a Python object. If the C "
"string pointer is ``NULL``, ``None`` is returned."
msgstr ""
-#: c-api/arg.rst:582
+#: c-api/arg.rst:581
msgid "Same as ``s``."
msgstr ""
-#: c-api/arg.rst:569
+#: c-api/arg.rst:568
#, fuzzy
msgid ""
-"``z#`` (:class:`str` or ``None``) [const char \\*, int or :c:type:"
-"`Py_ssize_t`]"
+"``z#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
msgstr "``z#`` (:class:`str` ou ``None``) [``const char *``, ``int``]"
-#: c-api/arg.rst:585
+#: c-api/arg.rst:584
msgid "Same as ``s#``."
msgstr ""
-#: c-api/arg.rst:574
+#: c-api/arg.rst:573
msgid "``u`` (:class:`str`) [const wchar_t \\*]"
msgstr "``u`` (:class:`str`) [``const wchar_t *``]"
-#: c-api/arg.rst:572
+#: c-api/arg.rst:571
msgid ""
"Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or "
"UCS-4) data to a Python Unicode object. If the Unicode buffer pointer is "
"``NULL``, ``None`` is returned."
msgstr ""
-#: c-api/arg.rst:579
+#: c-api/arg.rst:578
#, fuzzy
-msgid "``u#`` (:class:`str`) [const wchar_t \\*, int or :c:type:`Py_ssize_t`]"
+msgid "``u#`` (:class:`str`) [const wchar_t \\*, :c:type:`Py_ssize_t`]"
msgstr "``u#`` (:class:`str`) [``const wchar_t *``, ``int``]"
-#: c-api/arg.rst:577
+#: c-api/arg.rst:576
msgid ""
"Convert a Unicode (UTF-16 or UCS-4) data buffer and its length to a Python "
"Unicode object. If the Unicode buffer pointer is ``NULL``, the length is "
"ignored and ``None`` is returned."
msgstr ""
-#: c-api/arg.rst:582
+#: c-api/arg.rst:581
msgid "``U`` (:class:`str` or ``None``) [const char \\*]"
msgstr "``U`` (:class:`str` ou ``None``) [``const char *``]"
-#: c-api/arg.rst:585
+#: c-api/arg.rst:584
#, fuzzy
msgid ""
-"``U#`` (:class:`str` or ``None``) [const char \\*, int or :c:type:"
-"`Py_ssize_t`]"
+"``U#`` (:class:`str` or ``None``) [const char \\*, :c:type:`Py_ssize_t`]"
msgstr "``U#`` (:class:`str` ou ``None``) [``const char *``, ``int``]"
-#: c-api/arg.rst:588
+#: c-api/arg.rst:587
#, fuzzy
msgid "Convert a plain C :c:type:`int` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:591
+#: c-api/arg.rst:590
msgid "``b`` (:class:`int`) [char]"
msgstr "``b`` (:class:`int`) [``char``]"
-#: c-api/arg.rst:591
+#: c-api/arg.rst:590
msgid "Convert a plain C :c:type:`char` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:594
+#: c-api/arg.rst:593
msgid "Convert a plain C :c:type:`short int` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:597
+#: c-api/arg.rst:596
msgid "Convert a C :c:type:`long int` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:600
+#: c-api/arg.rst:599
msgid "Convert a C :c:type:`unsigned char` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:603
+#: c-api/arg.rst:602
msgid "Convert a C :c:type:`unsigned short int` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:606
+#: c-api/arg.rst:605
#, fuzzy
msgid "Convert a C :c:type:`unsigned int` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:609
+#: c-api/arg.rst:608
msgid "Convert a C :c:type:`unsigned long` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:612
+#: c-api/arg.rst:611
#, fuzzy
msgid "Convert a C :c:type:`long long` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:615
+#: c-api/arg.rst:614
msgid "Convert a C :c:type:`unsigned long long` to a Python integer object."
msgstr ""
-#: c-api/arg.rst:618
+#: c-api/arg.rst:617
msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer."
msgstr ""
-#: c-api/arg.rst:622
+#: c-api/arg.rst:621
msgid "``c`` (:class:`bytes` of length 1) [char]"
msgstr "``c`` (:class:`bytes` de taille 1) [``char``]"
-#: c-api/arg.rst:621
+#: c-api/arg.rst:620
msgid ""
"Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` "
"object of length 1."
msgstr ""
-#: c-api/arg.rst:625
+#: c-api/arg.rst:624
msgid ""
"Convert a C :c:type:`int` representing a character to Python :class:`str` "
"object of length 1."
msgstr ""
-#: c-api/arg.rst:629
+#: c-api/arg.rst:628
msgid "Convert a C :c:type:`double` to a Python floating point number."
msgstr ""
-#: c-api/arg.rst:632
+#: c-api/arg.rst:631
msgid "Convert a C :c:type:`float` to a Python floating point number."
msgstr ""
-#: c-api/arg.rst:635
+#: c-api/arg.rst:634
msgid "``D`` (:class:`complex`) [Py_complex \\*]"
msgstr "``D`` (:class:`complex`) [``Py_complex *``]"
-#: c-api/arg.rst:635
+#: c-api/arg.rst:634
msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number."
msgstr ""
-#: c-api/arg.rst:638
+#: c-api/arg.rst:637
msgid ""
"Pass a Python object untouched (except for its reference count, which is "
"incremented by one). If the object passed in is a ``NULL`` pointer, it is "
@@ -1263,26 +1252,26 @@ msgid ""
"raised yet, :exc:`SystemError` is set."
msgstr ""
-#: c-api/arg.rst:646
+#: c-api/arg.rst:645
msgid "``S`` (object) [PyObject \\*]"
msgstr "``S`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:646
+#: c-api/arg.rst:645
msgid "Same as ``O``."
msgstr ""
-#: c-api/arg.rst:651
+#: c-api/arg.rst:650
msgid "``N`` (object) [PyObject \\*]"
msgstr "``N`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:649
+#: c-api/arg.rst:648
msgid ""
"Same as ``O``, except it doesn't increment the reference count on the "
"object. Useful when the object is created by a call to an object constructor "
"in the argument list."
msgstr ""
-#: c-api/arg.rst:654
+#: c-api/arg.rst:653
msgid ""
"Convert *anything* to a Python object through a *converter* function. The "
"function is called with *anything* (which should be compatible with :c:type:"
@@ -1290,41 +1279,59 @@ msgid ""
"``NULL`` if an error occurred."
msgstr ""
-#: c-api/arg.rst:660
+#: c-api/arg.rst:659
msgid ""
"Convert a sequence of C values to a Python tuple with the same number of "
"items."
msgstr ""
-#: c-api/arg.rst:663
+#: c-api/arg.rst:662
msgid "``[items]`` (:class:`list`) [*matching-items*]"
msgstr "``[items]`` (:class:`list`) [*matching-items*]"
-#: c-api/arg.rst:663
+#: c-api/arg.rst:662
msgid ""
"Convert a sequence of C values to a Python list with the same number of "
"items."
msgstr ""
-#: c-api/arg.rst:668
+#: c-api/arg.rst:667
msgid "``{items}`` (:class:`dict`) [*matching-items*]"
msgstr "``{items}`` (:class:`dict`) [*matching-items*]"
-#: c-api/arg.rst:666
+#: c-api/arg.rst:665
msgid ""
"Convert a sequence of C values to a Python dictionary. Each pair of "
"consecutive C values adds one item to the dictionary, serving as key and "
"value, respectively."
msgstr ""
-#: c-api/arg.rst:670
+#: c-api/arg.rst:669
msgid ""
"If there is an error in the format string, the :exc:`SystemError` exception "
"is set and ``NULL`` returned."
msgstr ""
-#: c-api/arg.rst:675
+#: c-api/arg.rst:674
msgid ""
"Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list "
"rather than a variable number of arguments."
msgstr ""
+
+#~ msgid ""
+#~ "For all ``#`` variants of formats (``s#``, ``y#``, etc.), the type of the "
+#~ "length argument (int or :c:type:`Py_ssize_t`) is controlled by defining "
+#~ "the macro :c:macro:`PY_SSIZE_T_CLEAN` before including :file:`Python.h`. "
+#~ "If the macro was defined, length is a :c:type:`Py_ssize_t` rather than "
+#~ "an :c:type:`int`. This behavior will change in a future Python version to "
+#~ "only support :c:type:`Py_ssize_t` and drop :c:type:`int` support. It is "
+#~ "best to always define :c:macro:`PY_SSIZE_T_CLEAN`."
+#~ msgstr ""
+#~ "Pour toutes les variantes du marqueur ``#`` (``s#``, ``y#``, etc), le "
+#~ "type de l'argument *length* (*int* ou :c:type:`Py_ssize_t`) est contrôlé "
+#~ "en définissant la macro :c:macro:`PY_SSIZE_T_CLEAN` avant d'inclure le "
+#~ "fichier :file:`Python.h`. Si la macro est définie, la longueur est de "
+#~ "type :c:type:`Py_ssize_t` au lieu d'être de type :c:type:`int`. Ce "
+#~ "comportement changera dans une future version de Python, qui supportera "
+#~ "seulement :c:type:`Py_ssize_t` a la place de :c:type:`int`. Il est "
+#~ "préférable de toujours définir :c:macro:`PY_SSIZE_T_CLEAN`."
diff --git a/c-api/bool.po b/c-api/bool.po
index f5f5c1b8a4..4394ddb715 100644
--- a/c-api/bool.po
+++ b/c-api/bool.po
@@ -5,14 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2021-11-04 18:14+0100\n"
+"PO-Revision-Date: 2021-10-27 19:19+0200\n"
+"Last-Translator: \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 3.0\n"
#: c-api/bool.rst:6
msgid "Boolean Objects"
@@ -32,11 +33,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..d2a349b848 100644
--- a/c-api/buffer.po
+++ b/c-api/buffer.po
@@ -5,15 +5,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
-"PO-Revision-Date: 2018-10-04 12:18+0200\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2022-03-23 18:39+0100\n"
+"PO-Revision-Date: 2021-10-27 21:13+0200\n"
+"Last-Translator: David GIRAUD \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.2\n"
+"X-Generator: Poedit 3.0\n"
#: c-api/buffer.rst:11
msgid "Buffer Protocol"
@@ -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 ""
@@ -677,33 +679,43 @@ msgstr ""
#: c-api/buffer.rst:504
msgid ""
+"Copy data from *src* to *dest* buffer. Can convert between C-style and or "
+"Fortran-style buffers."
+msgstr ""
+
+#: c-api/buffer.rst:507
+msgid "``0`` is returned on success, ``-1`` on error."
+msgstr ""
+
+#: c-api/buffer.rst:511
+msgid ""
"Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style "
"if *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the "
"given shape with the given number of bytes per element."
msgstr ""
-#: c-api/buffer.rst:511
+#: c-api/buffer.rst:518
msgid ""
"Handle buffer requests for an exporter that wants to expose *buf* of size "
"*len* with writability set according to *readonly*. *buf* is interpreted as "
"a sequence of unsigned bytes."
msgstr ""
-#: c-api/buffer.rst:515
+#: c-api/buffer.rst:522
msgid ""
"The *flags* argument indicates the request type. This function always fills "
"in *view* as specified by flags, unless *buf* has been designated as read-"
"only and :c:macro:`PyBUF_WRITABLE` is set in *flags*."
msgstr ""
-#: c-api/buffer.rst:519
+#: c-api/buffer.rst:526
msgid ""
"On success, set ``view->obj`` to a new reference to *exporter* and return 0. "
"Otherwise, raise :c:data:`PyExc_BufferError`, set ``view->obj`` to ``NULL`` "
"and return ``-1``;"
msgstr ""
-#: c-api/buffer.rst:523
+#: c-api/buffer.rst:530
msgid ""
"If this function is used as part of a :ref:`getbufferproc `, "
"*exporter* MUST be set to the exporting object and *flags* must be passed "
diff --git a/c-api/bytearray.po b/c-api/bytearray.po
index bdab1641cf..17ae9d475b 100644
--- a/c-api/bytearray.po
+++ b/c-api/bytearray.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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2021-05-05 14:32+0200\n"
"Last-Translator: Mindiell \n"
"Language-Team: FRENCH \n"
@@ -65,7 +65,7 @@ msgstr ""
"Renvoie un nouvel objet *bytearray* depuis n'importe quel objet, *o*, qui "
"implémente le :ref:`protocole buffer `."
-#: c-api/bytearray.rst:50
+#: c-api/bytearray.rst:48
msgid ""
"Create a new bytearray object from *string* and its length, *len*. On "
"failure, ``NULL`` is returned."
@@ -73,20 +73,20 @@ msgstr ""
"Crée un nouvel objet ``bytearray`` à partir d'un objet *string* et de sa "
"longueur, *len*. En cas d'échec, ``NULL`` est renvoyé."
-#: c-api/bytearray.rst:56
+#: c-api/bytearray.rst:54
msgid ""
"Concat bytearrays *a* and *b* and return a new bytearray with the result."
msgstr ""
"Concatène les ``bytearrays`` *a* et *b* et renvoie un nouveau ``bytearray`` "
"avec le résultat."
-#: c-api/bytearray.rst:61
+#: c-api/bytearray.rst:59
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``."
-#: c-api/bytearray.rst:66
+#: c-api/bytearray.rst:64
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."
@@ -95,24 +95,28 @@ msgstr ""
"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
+#: c-api/bytearray.rst:71
msgid "Resize the internal buffer of *bytearray* to *len*."
msgstr "Redimensionne le tampon interne de *bytearray* à la taille *len*."
-#: c-api/bytearray.rst:76
+#: c-api/bytearray.rst:74
msgid "Macros"
msgstr "Macros"
-#: c-api/bytearray.rst:78
+#: c-api/bytearray.rst:76
msgid "These macros trade safety for speed and they don't check pointers."
msgstr ""
"Ces macros sont taillées pour la vitesse d'exécution et ne vérifient pas les "
"pointeurs."
-#: c-api/bytearray.rst:82
-msgid "Macro version of :c:func:`PyByteArray_AsString`."
+#: c-api/bytearray.rst:80
+#, fuzzy
+msgid "Similar to :c:func:`PyByteArray_AsString`, but without error checking."
msgstr "Version macro de :c:func:`PyByteArray_AsString`."
-#: c-api/bytearray.rst:87
-msgid "Macro version of :c:func:`PyByteArray_Size`."
-msgstr "Version macro de :c:func:`PyByteArray_Size`."
+#: c-api/bytearray.rst:85
+msgid "Similar to :c:func:`PyByteArray_Size`, but without error checking."
+msgstr ""
+
+#~ msgid "Macro version of :c:func:`PyByteArray_Size`."
+#~ msgstr "Version macro de :c:func:`PyByteArray_Size`."
diff --git a/c-api/bytes.po b/c-api/bytes.po
index a616a8e83f..f8f40a1c7c 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: 2022-05-22 23:13+0200\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
@@ -258,7 +258,7 @@ msgid "Return the length of the bytes in bytes object *o*."
msgstr ""
#: c-api/bytes.rst:137
-msgid "Macro form of :c:func:`PyBytes_Size` but without error checking."
+msgid "Similar to :c:func:`PyBytes_Size`, but without error checking."
msgstr ""
#: c-api/bytes.rst:142
@@ -273,7 +273,7 @@ msgid ""
msgstr ""
#: c-api/bytes.rst:154
-msgid "Macro form of :c:func:`PyBytes_AsString` but without error checking."
+msgid "Similar to :c:func:`PyBytes_AsString`, but without error checking."
msgstr ""
#: c-api/bytes.rst:159
@@ -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..54c13fa855 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: 2022-05-22 23:13+0200\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 ""
diff --git a/c-api/capsule.po b/c-api/capsule.po
index 35f1acdf3e..39e05ebcfd 100644
--- a/c-api/capsule.po
+++ b/c-api/capsule.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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -139,18 +139,20 @@ msgid ""
"Import a pointer to a C object from a capsule attribute in a module. The "
"*name* parameter should specify the full name to the attribute, as in "
"``module.attribute``. The *name* stored in the capsule must match this "
-"string exactly. If *no_block* is true, import the module without blocking "
-"(using :c:func:`PyImport_ImportModuleNoBlock`). If *no_block* is false, "
-"import the module conventionally (using :c:func:`PyImport_ImportModule`)."
+"string exactly."
msgstr ""
-#: c-api/capsule.rst:110
+#: c-api/capsule.rst:108
msgid ""
"Return the capsule's internal *pointer* on success. On failure, set an "
"exception and return ``NULL``."
msgstr ""
-#: c-api/capsule.rst:116
+#: c-api/capsule.rst:111
+msgid "*no_block* has no effect anymore."
+msgstr ""
+
+#: c-api/capsule.rst:117
msgid ""
"Determines whether or not *capsule* is a valid capsule. A valid capsule is "
"non-``NULL``, passes :c:func:`PyCapsule_CheckExact`, has a non-``NULL`` "
@@ -159,40 +161,40 @@ msgid ""
"compared.)"
msgstr ""
-#: c-api/capsule.rst:122
+#: c-api/capsule.rst:123
msgid ""
"In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls "
"to any of the accessors (any function starting with :c:func:`PyCapsule_Get`) "
"are guaranteed to succeed."
msgstr ""
-#: c-api/capsule.rst:126
+#: c-api/capsule.rst:127
msgid ""
"Return a nonzero value if the object is valid and matches the name passed "
"in. Return ``0`` otherwise. This function will not fail."
msgstr ""
-#: c-api/capsule.rst:132
+#: c-api/capsule.rst:133
msgid "Set the context pointer inside *capsule* to *context*."
msgstr ""
-#: c-api/capsule.rst:141 c-api/capsule.rst:158
+#: c-api/capsule.rst:142 c-api/capsule.rst:159
msgid ""
"Return ``0`` on success. Return nonzero and set an exception on failure."
msgstr ""
-#: c-api/capsule.rst:139
+#: c-api/capsule.rst:140
msgid "Set the destructor inside *capsule* to *destructor*."
msgstr ""
-#: c-api/capsule.rst:146
+#: c-api/capsule.rst:147
msgid ""
"Set the name inside *capsule* to *name*. If non-``NULL``, the name must "
"outlive the capsule. If the previous *name* stored in the capsule was not "
"``NULL``, no attempt is made to free it."
msgstr ""
-#: c-api/capsule.rst:155
+#: c-api/capsule.rst:156
msgid ""
"Set the void pointer inside *capsule* to *pointer*. The pointer may not be "
"``NULL``."
diff --git a/c-api/code.po b/c-api/code.po
index b7558a9ead..e4993cd263 100644
--- a/c-api/code.po
+++ b/c-api/code.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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2018-02-15 00:30+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -56,29 +56,78 @@ msgid "Return the number of free variables in *co*."
msgstr "Renvoie le nombre de variables libres dans *co*."
#: c-api/code.rst:38
+#, fuzzy
msgid ""
"Return a new code object. If you need a dummy code object to create a "
"frame, use :c:func:`PyCode_NewEmpty` instead. Calling :c:func:`PyCode_New` "
-"directly can bind you to a precise Python version since the definition of "
-"the bytecode changes often."
+"directly will bind you to a precise Python version since the definition of "
+"the bytecode changes often. The many arguments of this function are inter-"
+"dependent in complex ways, meaning that subtle changes to values are likely "
+"to result in incorrect execution or VM crashes. Use this function only with "
+"extreme care."
msgstr ""
"Renvoie un nouvel objet *code*. Si vous avez besoin d'un objet code factice "
"pour créer une *frame*, utilisez plutôt :c:func:`PyCode_NewEmpty`. Appeler :"
"c:func:`PyCode_New` peut vous lier directement à une version spécifique de "
"Python, le *bytecode* étant sujet à modifications."
-#: c-api/code.rst:45
+#: c-api/code.rst:55
+msgid "Added ``exceptiontable`` parameter."
+msgstr ""
+
+#: c-api/code.rst:50
msgid ""
"Similar to :c:func:`PyCode_New`, but with an extra \"posonlyargcount\" for "
-"positional-only arguments."
+"positional-only arguments. The same caveats that apply to ``PyCode_New`` "
+"also apply to this function."
msgstr ""
-#: c-api/code.rst:51
+#: c-api/code.rst:60
+#, fuzzy
msgid ""
"Return a new empty code object with the specified filename, function name, "
-"and first line number. It is illegal to :func:`exec` or :func:`eval` the "
-"resulting code object."
+"and first line number. The resulting code object will raise an ``Exception`` "
+"if executed."
msgstr ""
"Renvoie un nouvel objet *code* avec le nom de fichier, le nom de fonction, "
"et le numéro de première ligne donnés. Il n'est pas permis d'utiliser :func:"
"`exec` ou :func:`eval` sur l'objet renvoyé."
+
+#: c-api/code.rst:66
+msgid ""
+"Return the line number of the instruction that occurs on or before "
+"``byte_offset`` and ends after it. If you just need the line number of a "
+"frame, use :c:func:`PyFrame_GetLineNumber` instead."
+msgstr ""
+
+#: c-api/code.rst:69
+msgid ""
+"For efficiently iterating over the line numbers in a code object, use `the "
+"API described in PEP 626 `_."
+msgstr ""
+
+#: c-api/code.rst:74
+msgid ""
+"Sets the passed ``int`` pointers to the source code line and column numbers "
+"for the instruction at ``byte_offset``. Sets the value to ``0`` when "
+"information is not available for any particular element."
+msgstr ""
+
+#: c-api/code.rst:78
+msgid "Returns ``1`` if the function succeeds and 0 otherwise."
+msgstr ""
+
+#: c-api/code.rst:82
+msgid ""
+"Equivalent to the Python code ``getattr(co, 'co_code')``. Returns a strong "
+"reference to a :c:type:`PyBytesObject` representing the bytecode in a code "
+"object. On error, ``NULL`` is returned and an exception is raised."
+msgstr ""
+
+#: c-api/code.rst:87
+msgid ""
+"This ``PyBytesObject`` may be created on-demand by the interpreter and does "
+"not necessarily represent the bytecode actually executed by CPython. The "
+"primary use case for this function is debuggers and profilers."
+msgstr ""
diff --git a/c-api/codec.po b/c-api/codec.po
index 565eaa3188..8d0d24baae 100644
--- a/c-api/codec.po
+++ b/c-api/codec.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-09-23 16:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -30,15 +30,22 @@ msgstr ""
#: c-api/codec.rst:15
msgid ""
+"Unregister a codec search function and clear the registry's cache. If the "
+"search function is not registered, do nothing. Return 0 on success. Raise an "
+"exception and return -1 on error."
+msgstr ""
+
+#: c-api/codec.rst:23
+msgid ""
"Return ``1`` or ``0`` depending on whether there is a registered codec for "
"the given *encoding*. This function always succeeds."
msgstr ""
-#: c-api/codec.rst:20
+#: c-api/codec.rst:28
msgid "Generic codec based encoding API."
msgstr ""
-#: c-api/codec.rst:22
+#: c-api/codec.rst:30
msgid ""
"*object* is passed through the encoder function found for the given "
"*encoding* using the error handling method defined by *errors*. *errors* "
@@ -46,11 +53,11 @@ msgid ""
"exc:`LookupError` if no encoder can be found."
msgstr ""
-#: c-api/codec.rst:29
+#: c-api/codec.rst:37
msgid "Generic codec based decoding API."
msgstr ""
-#: c-api/codec.rst:31
+#: c-api/codec.rst:39
msgid ""
"*object* is passed through the decoder function found for the given "
"*encoding* using the error handling method defined by *errors*. *errors* "
@@ -58,11 +65,11 @@ msgid ""
"exc:`LookupError` if no encoder can be found."
msgstr ""
-#: c-api/codec.rst:38
+#: c-api/codec.rst:46
msgid "Codec lookup API"
msgstr ""
-#: c-api/codec.rst:40
+#: c-api/codec.rst:48
msgid ""
"In the following functions, the *encoding* string is looked up converted to "
"all lower-case characters, which makes encodings looked up through this "
@@ -70,41 +77,41 @@ msgid ""
"`KeyError` is set and ``NULL`` returned."
msgstr ""
-#: c-api/codec.rst:47
+#: c-api/codec.rst:55
msgid "Get an encoder function for the given *encoding*."
msgstr ""
-#: c-api/codec.rst:51
+#: c-api/codec.rst:59
msgid "Get a decoder function for the given *encoding*."
msgstr ""
-#: c-api/codec.rst:55
+#: c-api/codec.rst:63
msgid ""
"Get an :class:`~codecs.IncrementalEncoder` object for the given *encoding*."
msgstr ""
-#: c-api/codec.rst:59
+#: c-api/codec.rst:67
msgid ""
"Get an :class:`~codecs.IncrementalDecoder` object for the given *encoding*."
msgstr ""
-#: c-api/codec.rst:63
+#: c-api/codec.rst:71
msgid ""
"Get a :class:`~codecs.StreamReader` factory function for the given "
"*encoding*."
msgstr ""
-#: c-api/codec.rst:67
+#: c-api/codec.rst:75
msgid ""
"Get a :class:`~codecs.StreamWriter` factory function for the given "
"*encoding*."
msgstr ""
-#: c-api/codec.rst:71
+#: c-api/codec.rst:79
msgid "Registry API for Unicode encoding error handlers"
msgstr ""
-#: c-api/codec.rst:75
+#: c-api/codec.rst:83
msgid ""
"Register the error handling callback function *error* under the given "
"*name*. This callback function will be called by a codec when it encounters "
@@ -112,7 +119,7 @@ msgid ""
"error parameter in the call to the encode/decode function."
msgstr ""
-#: c-api/codec.rst:80
+#: c-api/codec.rst:88
msgid ""
"The callback gets a single argument, an instance of :exc:"
"`UnicodeEncodeError`, :exc:`UnicodeDecodeError` or :exc:"
@@ -125,39 +132,39 @@ msgid ""
"should be resumed."
msgstr ""
-#: c-api/codec.rst:90
+#: c-api/codec.rst:98
msgid "Return ``0`` on success, ``-1`` on error."
msgstr ""
-#: c-api/codec.rst:94
+#: c-api/codec.rst:102
msgid ""
"Lookup the error handling callback function registered under *name*. As a "
"special case ``NULL`` can be passed, in which case the error handling "
"callback for \"strict\" will be returned."
msgstr ""
-#: c-api/codec.rst:100
+#: c-api/codec.rst:108
msgid "Raise *exc* as an exception."
msgstr ""
-#: c-api/codec.rst:104
+#: c-api/codec.rst:112
msgid "Ignore the unicode error, skipping the faulty input."
msgstr ""
-#: c-api/codec.rst:108
+#: c-api/codec.rst:116
msgid "Replace the unicode encode error with ``?`` or ``U+FFFD``."
msgstr ""
-#: c-api/codec.rst:112
+#: c-api/codec.rst:120
msgid "Replace the unicode encode error with XML character references."
msgstr ""
-#: c-api/codec.rst:116
+#: c-api/codec.rst:124
msgid ""
"Replace the unicode encode error with backslash escapes (``\\x``, ``\\u`` "
"and ``\\U``)."
msgstr ""
-#: c-api/codec.rst:121
+#: c-api/codec.rst:129
msgid "Replace the unicode encode error with ``\\N{...}`` escapes."
msgstr ""
diff --git a/c-api/complex.po b/c-api/complex.po
index b1e78be08e..a06d5f3e72 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: 2021-06-22 09:58+0200\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/conversion.po b/c-api/conversion.po
index 5a62d39893..9da64040c2 100644
--- a/c-api/conversion.po
+++ b/c-api/conversion.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-02-24 17:33+0100\n"
+"POT-Creation-Date: 2021-09-23 16:16+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -50,50 +50,43 @@ msgstr ""
msgid ""
"The wrappers ensure that ``str[size-1]`` is always ``'\\0'`` upon return. "
"They never write more than *size* bytes (including the trailing ``'\\0'``) "
-"into str. Both functions require that ``str != NULL``, ``size > 0`` and "
-"``format != NULL``."
+"into str. Both functions require that ``str != NULL``, ``size > 0``, "
+"``format != NULL`` and ``size < INT_MAX``."
msgstr ""
#: c-api/conversion.rst:33
msgid ""
-"If the platform doesn't have :c:func:`vsnprintf` and the buffer size needed "
-"to avoid truncation exceeds *size* by more than 512 bytes, Python aborts "
-"with a :c:func:`Py_FatalError`."
-msgstr ""
-
-#: c-api/conversion.rst:37
-msgid ""
"The return value (*rv*) for these functions should be interpreted as follows:"
msgstr ""
-#: c-api/conversion.rst:39
+#: c-api/conversion.rst:35
msgid ""
"When ``0 <= rv < size``, the output conversion was successful and *rv* "
"characters were written to *str* (excluding the trailing ``'\\0'`` byte at "
"``str[rv]``)."
msgstr ""
-#: c-api/conversion.rst:43
+#: c-api/conversion.rst:39
msgid ""
"When ``rv >= size``, the output conversion was truncated and a buffer with "
"``rv + 1`` bytes would have been needed to succeed. ``str[size-1]`` is "
"``'\\0'`` in this case."
msgstr ""
-#: c-api/conversion.rst:47
+#: c-api/conversion.rst:43
msgid ""
"When ``rv < 0``, \"something bad happened.\" ``str[size-1]`` is ``'\\0'`` in "
"this case too, but the rest of *str* is undefined. The exact cause of the "
"error depends on the underlying platform."
msgstr ""
-#: c-api/conversion.rst:51
+#: c-api/conversion.rst:48
msgid ""
"The following functions provide locale-independent string to number "
"conversions."
msgstr ""
-#: c-api/conversion.rst:56
+#: c-api/conversion.rst:52
msgid ""
"Convert a string ``s`` to a :c:type:`double`, raising a Python exception on "
"failure. The set of accepted strings corresponds to the set of strings "
@@ -102,14 +95,14 @@ msgid ""
"current locale."
msgstr ""
-#: c-api/conversion.rst:62
+#: c-api/conversion.rst:58
msgid ""
"If ``endptr`` is ``NULL``, convert the whole string. Raise :exc:"
"`ValueError` and return ``-1.0`` if the string is not a valid representation "
"of a floating-point number."
msgstr ""
-#: c-api/conversion.rst:66
+#: c-api/conversion.rst:62
msgid ""
"If endptr is not ``NULL``, convert as much of the string as possible and set "
"``*endptr`` to point to the first unconverted character. If no initial "
@@ -118,7 +111,7 @@ msgid ""
"ValueError, and return ``-1.0``."
msgstr ""
-#: c-api/conversion.rst:73
+#: c-api/conversion.rst:69
msgid ""
"If ``s`` represents a value that is too large to store in a float (for "
"example, ``\"1e500\"`` is such a string on many platforms) then if "
@@ -129,50 +122,50 @@ msgid ""
"the first character after the converted value."
msgstr ""
-#: c-api/conversion.rst:81
+#: c-api/conversion.rst:77
msgid ""
"If any other error occurs during the conversion (for example an out-of-"
"memory error), set the appropriate Python exception and return ``-1.0``."
msgstr ""
-#: c-api/conversion.rst:90
+#: c-api/conversion.rst:86
msgid ""
"Convert a :c:type:`double` *val* to a string using supplied *format_code*, "
"*precision*, and *flags*."
msgstr ""
-#: c-api/conversion.rst:93
+#: c-api/conversion.rst:89
msgid ""
"*format_code* must be one of ``'e'``, ``'E'``, ``'f'``, ``'F'``, ``'g'``, "
"``'G'`` or ``'r'``. For ``'r'``, the supplied *precision* must be 0 and is "
"ignored. The ``'r'`` format code specifies the standard :func:`repr` format."
msgstr ""
-#: c-api/conversion.rst:98
+#: c-api/conversion.rst:94
msgid ""
"*flags* can be zero or more of the values ``Py_DTSF_SIGN``, "
"``Py_DTSF_ADD_DOT_0``, or ``Py_DTSF_ALT``, or-ed together:"
msgstr ""
-#: c-api/conversion.rst:101
+#: c-api/conversion.rst:97
msgid ""
"``Py_DTSF_SIGN`` means to always precede the returned string with a sign "
"character, even if *val* is non-negative."
msgstr ""
-#: c-api/conversion.rst:104
+#: c-api/conversion.rst:100
msgid ""
"``Py_DTSF_ADD_DOT_0`` means to ensure that the returned string will not look "
"like an integer."
msgstr ""
-#: c-api/conversion.rst:107
+#: c-api/conversion.rst:103
msgid ""
"``Py_DTSF_ALT`` means to apply \"alternate\" formatting rules. See the "
"documentation for the :c:func:`PyOS_snprintf` ``'#'`` specifier for details."
msgstr ""
-#: c-api/conversion.rst:111
+#: c-api/conversion.rst:107
msgid ""
"If *ptype* is non-``NULL``, then the value it points to will be set to one "
"of ``Py_DTST_FINITE``, ``Py_DTST_INFINITE``, or ``Py_DTST_NAN``, signifying "
@@ -180,20 +173,20 @@ msgid ""
"respectively."
msgstr ""
-#: c-api/conversion.rst:115
+#: c-api/conversion.rst:111
msgid ""
"The return value is a pointer to *buffer* with the converted string or "
"``NULL`` if the conversion failed. The caller is responsible for freeing the "
"returned string by calling :c:func:`PyMem_Free`."
msgstr ""
-#: c-api/conversion.rst:124
+#: c-api/conversion.rst:120
msgid ""
"Case insensitive comparison of strings. The function works almost "
"identically to :c:func:`strcmp` except that it ignores the case."
msgstr ""
-#: c-api/conversion.rst:130
+#: c-api/conversion.rst:126
msgid ""
"Case insensitive comparison of strings. The function works almost "
"identically to :c:func:`strncmp` except that it ignores the case."
diff --git a/c-api/datetime.po b/c-api/datetime.po
index cb0b0a25f5..30a33634f4 100644
--- a/c-api/datetime.po
+++ b/c-api/datetime.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
-"PO-Revision-Date: 2020-06-28 15:17+0200\n"
+"POT-Creation-Date: 2021-09-23 16:16+0200\n"
+"PO-Revision-Date: 2021-12-11 11:57+0100\n"
"Last-Translator: Jules Lasne \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -34,7 +34,7 @@ msgstr ""
"`DateTime`. Avant d'utiliser une de ces fonctions, le fichier d'en-tête :"
"file:`datetime.h` doit être inclus dans vos sources (veuillez noter qu'il "
"n'est pas inclus par le fichier :file:`Python.h`) et la macro :c:macro:"
-"`PyDateTime_IMPORT` doit-être invoquée, généralement lors de la fonction "
+"`PyDateTime_IMPORT` doit être invoquée, généralement lors de la fonction "
"d'initialisation du module. La macro crée un pointeur vers une structure C "
"et place celui-ci dans une variable statique, :c:data:`PyDateTimeAPI`, qui "
"est utilisée par les macros suivantes."
@@ -259,23 +259,27 @@ 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:205
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:210
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:215
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:220
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:224
+msgid "Return the tzinfo (which may be ``None``)."
+msgstr ""
+
+#: c-api/datetime.rst:199
#, fuzzy
msgid ""
"Macros to extract fields from time objects. The argument must be an "
@@ -286,7 +290,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:229
#, fuzzy
msgid ""
"Macros to extract fields from time delta objects. The argument must be an "
@@ -297,26 +301,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:235
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:242
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:249
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:254
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:258
msgid ""
"Create and return a new :class:`datetime.datetime` object given an argument "
"tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`."
@@ -324,7 +328,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:264
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 f6d9fcd9ec..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 "Fonctions"
-
-#: 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/descriptor.po b/c-api/descriptor.po
index 2e5a0df7a4..b9eae213d3 100644
--- a/c-api/descriptor.po
+++ b/c-api/descriptor.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-09-23 16:16+0200\n"
"PO-Revision-Date: 2018-02-15 00:32+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -31,10 +31,11 @@ msgid "The type object for the built-in descriptor types."
msgstr "L'objet *type* des descripteurs natifs."
#: c-api/descriptor.rst:35
+#, fuzzy
msgid ""
-"Return true if the descriptor objects *descr* describes a data attribute, or "
-"false if it describes a method. *descr* must be a descriptor object; there "
-"is no error checking."
+"Return non-zero if the descriptor objects *descr* describes a data "
+"attribute, or ``0`` if it describes a method. *descr* must be a descriptor "
+"object; there is no error checking."
msgstr ""
"Renvoie vrai si le descripteur *descr* décrit un attribut de donnée, ou faux "
"s'il décrit une méthode. *descr* doit être un objet descripteur. Il n'y a "
diff --git a/c-api/dict.po b/c-api/dict.po
index 5fe2e9cd78..98d4e69d0e 100644
--- a/c-api/dict.po
+++ b/c-api/dict.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: 2021-09-23 16:16+0200\n"
"PO-Revision-Date: 2018-07-03 11:36+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -116,27 +116,33 @@ msgid ""
"`PyDict_GetItemWithError()` instead."
msgstr ""
-#: c-api/dict.rst:108
+#: c-api/dict.rst:105
+msgid ""
+"Calling this API without :term:`GIL` held had been allowed for historical "
+"reason. It is no longer allowed."
+msgstr ""
+
+#: c-api/dict.rst:112
msgid ""
"Variant of :c:func:`PyDict_GetItem` that does not suppress exceptions. "
"Return ``NULL`` **with** an exception set if an exception occurred. Return "
"``NULL`` **without** an exception set if the key wasn't present."
msgstr ""
-#: c-api/dict.rst:116
+#: c-api/dict.rst:120
msgid ""
"This is the same as :c:func:`PyDict_GetItem`, but *key* is specified as a :c:"
"type:`const char*`, rather than a :c:type:`PyObject*`."
msgstr ""
-#: c-api/dict.rst:119
+#: c-api/dict.rst:123
msgid ""
"Note that exceptions which occur while calling :meth:`__hash__` and :meth:"
"`__eq__` methods and creating a temporary string object will get suppressed. "
"To get error reporting use :c:func:`PyDict_GetItemWithError()` instead."
msgstr ""
-#: c-api/dict.rst:127
+#: c-api/dict.rst:131
msgid ""
"This is the same as the Python-level :meth:`dict.setdefault`. If present, "
"it returns the value corresponding to *key* from the dictionary *p*. If the "
@@ -146,29 +152,29 @@ msgid ""
"the insertion."
msgstr ""
-#: c-api/dict.rst:137
+#: c-api/dict.rst:141
msgid ""
"Return a :c:type:`PyListObject` containing all the items from the dictionary."
msgstr ""
-#: c-api/dict.rst:142
+#: c-api/dict.rst:146
msgid ""
"Return a :c:type:`PyListObject` containing all the keys from the dictionary."
msgstr ""
-#: c-api/dict.rst:147
+#: c-api/dict.rst:151
msgid ""
"Return a :c:type:`PyListObject` containing all the values from the "
"dictionary *p*."
msgstr ""
-#: c-api/dict.rst:155
+#: c-api/dict.rst:159
msgid ""
"Return the number of items in the dictionary. This is equivalent to "
"``len(p)`` on a dictionary."
msgstr ""
-#: c-api/dict.rst:161
+#: c-api/dict.rst:165
msgid ""
"Iterate over all key-value pairs in the dictionary *p*. The :c:type:"
"`Py_ssize_t` referred to by *ppos* must be initialized to ``0`` prior to the "
@@ -182,18 +188,18 @@ msgid ""
"structure is sparse, the offsets are not consecutive."
msgstr ""
-#: c-api/dict.rst:172
+#: c-api/dict.rst:176
msgid "For example::"
msgstr "Par exemple ::"
-#: c-api/dict.rst:182
+#: c-api/dict.rst:186
msgid ""
"The dictionary *p* should not be mutated during iteration. It is safe to "
"modify the values of the keys as you iterate over the dictionary, but only "
"so long as the set of keys does not change. For example::"
msgstr ""
-#: c-api/dict.rst:207
+#: c-api/dict.rst:211
msgid ""
"Iterate over mapping object *b* adding key-value pairs to dictionary *a*. "
"*b* may be a dictionary, or any object supporting :c:func:`PyMapping_Keys` "
@@ -203,7 +209,7 @@ msgid ""
"or ``-1`` if an exception was raised."
msgstr ""
-#: c-api/dict.rst:217
+#: c-api/dict.rst:221
msgid ""
"This is the same as ``PyDict_Merge(a, b, 1)`` in C, and is similar to ``a."
"update(b)`` in Python except that :c:func:`PyDict_Update` doesn't fall back "
@@ -212,7 +218,7 @@ msgid ""
"exception was raised."
msgstr ""
-#: c-api/dict.rst:226
+#: c-api/dict.rst:230
msgid ""
"Update or merge into dictionary *a*, from the key-value pairs in *seq2*. "
"*seq2* must be an iterable object producing iterable objects of length 2, "
diff --git a/c-api/exceptions.po b/c-api/exceptions.po
index 19799c5f2a..a522863854 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: 2022-05-22 23:13+0200\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
@@ -212,8 +212,8 @@ msgstr ""
#: c-api/exceptions.rst:184
msgid ""
"Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but the filename "
-"is given as a C string. *filename* is decoded from the filesystem encoding "
-"(:func:`os.fsdecode`)."
+"is given as a C string. *filename* is decoded from the :term:`filesystem "
+"encoding and error handler`."
msgstr ""
#: c-api/exceptions.rst:191
@@ -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`)."
+"decoded from the :term:`filesystem encoding and error handler`."
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`)."
+"*module* are UTF-8 encoded strings, and *filename* is decoded from the :term:"
+"`filesystem encoding and error handler`."
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,22 +466,55 @@ 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 active exception instance, as would be returned by :func:`sys."
+"exception`. This refers to an exception that was *already caught*, not to an "
+"exception that was freshly raised. Returns a new reference to the exception "
+"or ``NULL``. Does not modify the interpreter's exception state."
+msgstr ""
+
+#: 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 "
+"state temporarily. Use :c:func:`PyErr_SetHandledException` to restore or "
+"clear the exception state."
+msgstr ""
+
+#: c-api/exceptions.rst:481
+msgid ""
+"Set the active exception, as known from ``sys.exception()``. This refers to "
+"an exception that was *already caught*, not to an exception that was freshly "
+"raised. To clear the exception state, pass ``NULL``."
+msgstr ""
+
+#: c-api/exceptions.rst:488
+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 "
+"state temporarily. Use :c:func:`PyErr_GetHandledException` to get the "
+"exception state."
+msgstr ""
+
+#: c-api/exceptions.rst:497
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 "
-"freshly raised. Returns new references for the three objects, any of which "
-"may be ``NULL``. Does not modify the exception info state."
+"Retrieve the old-style representation of the exception info, as known from :"
+"func:`sys.exc_info`. This refers to an exception that was *already caught*, "
+"not to an exception that was freshly raised. Returns new references for the "
+"three objects, any of which may be ``NULL``. Does not modify the exception "
+"info state. This function is kept for backwards compatibility. Prefer "
+"using :c:func:`PyErr_GetHandledException`."
msgstr ""
-#: c-api/exceptions.rst:471
+#: c-api/exceptions.rst:506
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,16 +522,17 @@ msgid ""
"exception state."
msgstr ""
-#: c-api/exceptions.rst:481
+#: c-api/exceptions.rst:516
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 "
"raised. This function steals the references of the arguments. To clear the "
-"exception state, pass ``NULL`` for all three arguments. For general rules "
-"about the three arguments, see :c:func:`PyErr_Restore`."
+"exception state, pass ``NULL`` for all three arguments. This function is "
+"kept for backwards compatibility. Prefer using :c:func:"
+"`PyErr_SetHandledException`."
msgstr ""
-#: c-api/exceptions.rst:489
+#: c-api/exceptions.rst:525
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,43 +540,104 @@ msgid ""
"state."
msgstr ""
-#: c-api/exceptions.rst:498
+#: c-api/exceptions.rst:532
+msgid ""
+"The ``type`` and ``traceback`` arguments are no longer used and can be NULL. "
+"The interpreter now derives them from the exception instance (the ``value`` "
+"argument). The function still steals references of all three arguments."
+msgstr ""
+
+#: c-api/exceptions.rst:540
msgid "Signal Handling"
msgstr "Traitement des signaux"
-#: c-api/exceptions.rst:508
+#: c-api/exceptions.rst:550
+msgid "This function interacts with Python's signal handling."
+msgstr ""
+
+#: c-api/exceptions.rst:552
+msgid ""
+"If the function is called from the main thread and under the main Python "
+"interpreter, it checks whether a signal has been sent to the processes and "
+"if so, invokes the corresponding signal handler. If the :mod:`signal` "
+"module is supported, this can invoke a signal handler written in Python."
+msgstr ""
+
+#: c-api/exceptions.rst:557
+msgid ""
+"The function attempts to handle all pending signals, and then returns ``0``. "
+"However, if a Python signal handler raises an exception, the error indicator "
+"is set and the function returns ``-1`` immediately (such that other pending "
+"signals may not have been handled yet: they will be on the next :c:func:"
+"`PyErr_CheckSignals()` invocation)."
+msgstr ""
+
+#: c-api/exceptions.rst:563
+msgid ""
+"If the function is called from a non-main thread, or under a non-main Python "
+"interpreter, it does nothing and returns ``0``."
+msgstr ""
+
+#: c-api/exceptions.rst:566
+msgid ""
+"This function can be called by long-running C code that wants to be "
+"interruptible by user requests (such as by pressing Ctrl-C)."
+msgstr ""
+
+#: c-api/exceptions.rst:570
+msgid ""
+"The default Python signal handler for :const:`SIGINT` raises the :exc:"
+"`KeyboardInterrupt` exception."
+msgstr ""
+
+#: c-api/exceptions.rst:581
+msgid ""
+"Simulate the effect of a :const:`SIGINT` signal arriving. This is equivalent "
+"to ``PyErr_SetInterruptEx(SIGINT)``."
+msgstr ""
+
+#: c-api/exceptions.rst:612
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 "
-"signal handler. If the :mod:`signal` module is supported, this can invoke a "
-"signal handler written in Python. In all cases, the default effect for :"
-"const:`SIGINT` is to raise the :exc:`KeyboardInterrupt` exception. If an "
-"exception is raised the error indicator is set and the function returns "
-"``-1``; otherwise the function returns ``0``. The error indicator may or "
-"may not be cleared if it was previously set."
+"This function is async-signal-safe. It can be called without the :term:"
+"`GIL` and from a C signal handler."
msgstr ""
-#: c-api/exceptions.rst:524
+#: c-api/exceptions.rst:595
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."
+"Simulate the effect of a signal arriving. The next time :c:func:"
+"`PyErr_CheckSignals` is called, the Python signal handler for the given "
+"signal number will be called."
msgstr ""
-#: c-api/exceptions.rst:528
+#: c-api/exceptions.rst:599
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."
+"This function can be called by C code that sets up its own signal handling "
+"and wants Python signal handlers to be invoked as expected when an "
+"interruption is requested (for example when the user presses Ctrl-C to "
+"interrupt an operation)."
msgstr ""
-#: c-api/exceptions.rst:534
+#: c-api/exceptions.rst:604
+msgid ""
+"If the given signal isn't handled by Python (it was set to :data:`signal."
+"SIG_DFL` or :data:`signal.SIG_IGN`), it will be ignored."
+msgstr ""
+
+#: c-api/exceptions.rst:607
+msgid ""
+"If *signum* is outside of the allowed range of signal numbers, ``-1`` is "
+"returned. Otherwise, ``0`` is returned. The error indicator is never "
+"changed by this function."
+msgstr ""
+
+#: c-api/exceptions.rst:620
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:624
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 +645,15 @@ msgid ""
"be called from the main thread."
msgstr ""
-#: c-api/exceptions.rst:543
+#: c-api/exceptions.rst:629
msgid "On Windows, the function now also supports socket handles."
msgstr ""
-#: c-api/exceptions.rst:548
+#: c-api/exceptions.rst:634
msgid "Exception Classes"
msgstr ""
-#: c-api/exceptions.rst:552
+#: c-api/exceptions.rst:638
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 +662,7 @@ msgid ""
"(accessible in C as :c:data:`PyExc_Exception`)."
msgstr ""
-#: c-api/exceptions.rst:558
+#: c-api/exceptions.rst:644
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 +672,31 @@ msgid ""
"variables and methods."
msgstr ""
-#: c-api/exceptions.rst:567
+#: c-api/exceptions.rst:653
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:661
msgid "Exception Objects"
msgstr "Objets exception"
-#: c-api/exceptions.rst:579
+#: c-api/exceptions.rst:665
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:672
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:678
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 +704,98 @@ msgid ""
"this returns ``NULL``."
msgstr ""
-#: c-api/exceptions.rst:600
+#: c-api/exceptions.rst:686
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:693
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:700
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:704
msgid ""
":attr:`__suppress_context__` is implicitly set to ``True`` by this function."
msgstr ""
-#: c-api/exceptions.rst:624
+#: c-api/exceptions.rst:710
msgid "Unicode Exception Objects"
msgstr "Objets exception Unicode"
-#: c-api/exceptions.rst:626
+#: c-api/exceptions.rst:712
msgid ""
"The following functions are used to create and modify Unicode exceptions "
"from C."
msgstr ""
-#: c-api/exceptions.rst:630
+#: c-api/exceptions.rst:716
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
-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
-msgid "3.11"
-msgstr ""
-
-#: c-api/exceptions.rst:642
-msgid ""
-"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
-"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``."
-msgstr ""
-
-#: c-api/exceptions.rst:647
-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
-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:723
msgid "Return the *encoding* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:664
+#: c-api/exceptions.rst:729
msgid "Return the *object* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:670
+#: c-api/exceptions.rst:735
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:743
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:750
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:758
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:765
msgid "Return the *reason* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:706
+#: c-api/exceptions.rst:771
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:778
msgid "Recursion Control"
msgstr "Contrôle de la récursion"
-#: c-api/exceptions.rst:715
+#: c-api/exceptions.rst:780
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 +805,42 @@ msgid ""
"recursion handling."
msgstr ""
-#: c-api/exceptions.rst:724
+#: c-api/exceptions.rst:789
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:791
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:795
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:799
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:811
msgid "This function is now also available in the limited API."
msgstr ""
-#: c-api/exceptions.rst:743
+#: c-api/exceptions.rst:808
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:814
msgid ""
"Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types "
"requires special recursion handling. In addition to protecting the stack, :"
@@ -783,13 +849,13 @@ msgid ""
"Effectively, these are the C equivalent to :func:`reprlib.recursive_repr`."
msgstr ""
-#: c-api/exceptions.rst:757
+#: c-api/exceptions.rst:822
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:825
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 +863,30 @@ msgid ""
"`dict` objects return ``{...}`` and :class:`list` objects return ``[...]``."
msgstr ""
-#: c-api/exceptions.rst:766
+#: c-api/exceptions.rst:831
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:835
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:840
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:847
msgid "Standard Exceptions"
msgstr "Exceptions standards"
-#: c-api/exceptions.rst:784
+#: c-api/exceptions.rst:849
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 +894,448 @@ msgid ""
"all the variables:"
msgstr ""
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1043 c-api/exceptions.rst:1088
msgid "C Name"
msgstr "Nom C"
-#: c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1088
msgid "Python Name"
msgstr "Nom Python"
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1043 c-api/exceptions.rst:1088
msgid "Notes"
msgstr "Notes"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:912
msgid ":c:data:`PyExc_BaseException`"
msgstr ":c:data:`PyExc_BaseException`"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:912
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:914 c-api/exceptions.rst:962 c-api/exceptions.rst:974
+msgid "[1]_"
+msgstr ""
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:914
msgid ":c:data:`PyExc_Exception`"
msgstr ":c:data:`PyExc_Exception`"
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:914
msgid ":exc:`Exception`"
msgstr ":exc:`Exception`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:916
msgid ":c:data:`PyExc_ArithmeticError`"
msgstr ":c:data:`PyExc_ArithmeticError`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:916
msgid ":exc:`ArithmeticError`"
msgstr ":exc:`ArithmeticError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:918
msgid ":c:data:`PyExc_AssertionError`"
msgstr ":c:data:`PyExc_AssertionError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:918
msgid ":exc:`AssertionError`"
msgstr ":exc:`AssertionError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:920
msgid ":c:data:`PyExc_AttributeError`"
msgstr ":c:data:`PyExc_AttributeError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:920
msgid ":exc:`AttributeError`"
msgstr ":exc:`AttributeError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:922
msgid ":c:data:`PyExc_BlockingIOError`"
msgstr ":c:data:`PyExc_BlockingIOError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:922
msgid ":exc:`BlockingIOError`"
msgstr ":exc:`BlockingIOError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:924
msgid ":c:data:`PyExc_BrokenPipeError`"
msgstr ":c:data:`PyExc_BrokenPipeError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:924
msgid ":exc:`BrokenPipeError`"
msgstr ":exc:`BrokenPipeError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:926
msgid ":c:data:`PyExc_BufferError`"
msgstr ":c:data:`PyExc_BufferError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:926
msgid ":exc:`BufferError`"
msgstr ":exc:`BufferError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:928
msgid ":c:data:`PyExc_ChildProcessError`"
msgstr ":c:data:`PyExc_ChildProcessError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:928
msgid ":exc:`ChildProcessError`"
msgstr ":exc:`ChildProcessError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:930
msgid ":c:data:`PyExc_ConnectionAbortedError`"
msgstr ":c:data:`PyExc_ConnectionAbortedError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:930
msgid ":exc:`ConnectionAbortedError`"
msgstr ":exc:`ConnectionAbortedError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:932
msgid ":c:data:`PyExc_ConnectionError`"
msgstr ":c:data:`PyExc_ConnectionError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:932
msgid ":exc:`ConnectionError`"
msgstr ":exc:`ConnectionError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:934
msgid ":c:data:`PyExc_ConnectionRefusedError`"
msgstr ":c:data:`PyExc_ConnectionRefusedError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:934
msgid ":exc:`ConnectionRefusedError`"
msgstr ":exc:`ConnectionRefusedError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:936
msgid ":c:data:`PyExc_ConnectionResetError`"
msgstr ":c:data:`PyExc_ConnectionResetError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:936
msgid ":exc:`ConnectionResetError`"
msgstr ":exc:`ConnectionResetError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:938
msgid ":c:data:`PyExc_EOFError`"
msgstr ":c:data:`PyExc_EOFError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:938
msgid ":exc:`EOFError`"
msgstr ":exc:`EOFError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:940
msgid ":c:data:`PyExc_FileExistsError`"
msgstr ":c:data:`PyExc_FileExistsError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:940
msgid ":exc:`FileExistsError`"
msgstr ":exc:`FileExistsError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:942
msgid ":c:data:`PyExc_FileNotFoundError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:942
msgid ":exc:`FileNotFoundError`"
msgstr ":exc:`FileNotFoundError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:944
msgid ":c:data:`PyExc_FloatingPointError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:944
msgid ":exc:`FloatingPointError`"
msgstr ":exc:`FloatingPointError`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:946
msgid ":c:data:`PyExc_GeneratorExit`"
msgstr ":c:data:`PyExc_GeneratorExit`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:946
msgid ":exc:`GeneratorExit`"
msgstr ":exc:`GeneratorExit`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:948
msgid ":c:data:`PyExc_ImportError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:948
msgid ":exc:`ImportError`"
msgstr ":exc:`ImportError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:950
msgid ":c:data:`PyExc_IndentationError`"
msgstr ":c:data:`PyExc_IndentationError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:950
msgid ":exc:`IndentationError`"
msgstr ":exc:`IndentationError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:952
msgid ":c:data:`PyExc_IndexError`"
msgstr ":c:data:`PyExc_IndexError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:952
msgid ":exc:`IndexError`"
msgstr ":exc:`IndexError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:954
msgid ":c:data:`PyExc_InterruptedError`"
msgstr ":c:data:`PyExc_InterruptedError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:954
msgid ":exc:`InterruptedError`"
msgstr ":exc:`InterruptedError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:956
msgid ":c:data:`PyExc_IsADirectoryError`"
msgstr ":c:data:`PyExc_IsADirectoryError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:956
msgid ":exc:`IsADirectoryError`"
msgstr ":exc:`IsADirectoryError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:958
msgid ":c:data:`PyExc_KeyError`"
msgstr ":c:data:`PyExc_KeyError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:958
msgid ":exc:`KeyError`"
msgstr ":exc:`KeyError`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:960
msgid ":c:data:`PyExc_KeyboardInterrupt`"
msgstr ":c:data:`PyExc_KeyboardInterrupt`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:960
msgid ":exc:`KeyboardInterrupt`"
msgstr ":exc:`KeyboardInterrupt`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:962
msgid ":c:data:`PyExc_LookupError`"
msgstr ":c:data:`PyExc_LookupError`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:962
msgid ":exc:`LookupError`"
msgstr ":exc:`LookupError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:964
msgid ":c:data:`PyExc_MemoryError`"
msgstr ":c:data:`PyExc_MemoryError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:964
msgid ":exc:`MemoryError`"
msgstr ":exc:`MemoryError`"
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:966
#, fuzzy
msgid ":c:data:`PyExc_ModuleNotFoundError`"
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:966
msgid ":exc:`ModuleNotFoundError`"
-msgstr ""
+msgstr ":exc:`ModuleNotFoundError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:968
msgid ":c:data:`PyExc_NameError`"
msgstr ":c:data:`PyExc_NameError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:968
msgid ":exc:`NameError`"
msgstr ":exc:`NameError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:970
msgid ":c:data:`PyExc_NotADirectoryError`"
msgstr ":c:data:`PyExc_NotADirectoryError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:970
msgid ":exc:`NotADirectoryError`"
msgstr ":exc:`NotADirectoryError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:972
msgid ":c:data:`PyExc_NotImplementedError`"
msgstr ":c:data:`PyExc_NotImplementedError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:972
msgid ":exc:`NotImplementedError`"
msgstr ":exc:`NotImplementedError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:974
msgid ":c:data:`PyExc_OSError`"
msgstr ":c:data:`PyExc_OSError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:974
msgid ":exc:`OSError`"
msgstr ":exc:`OSError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:976
msgid ":c:data:`PyExc_OverflowError`"
msgstr ":c:data:`PyExc_OverflowError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:976
msgid ":exc:`OverflowError`"
msgstr ":exc:`OverflowError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:978
msgid ":c:data:`PyExc_PermissionError`"
msgstr ":c:data:`PyExc_PermissionError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:978
msgid ":exc:`PermissionError`"
msgstr ":exc:`PermissionError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:980
msgid ":c:data:`PyExc_ProcessLookupError`"
msgstr ":c:data:`PyExc_ProcessLookupError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:980
msgid ":exc:`ProcessLookupError`"
msgstr ":exc:`ProcessLookupError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:982
msgid ":c:data:`PyExc_RecursionError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:982
msgid ":exc:`RecursionError`"
-msgstr ""
+msgstr ":exc:`RecursionError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:984
msgid ":c:data:`PyExc_ReferenceError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:984
msgid ":exc:`ReferenceError`"
msgstr ":exc:`ReferenceError`"
-#: c-api/exceptions.rst:919
-msgid "\\(2)"
-msgstr "\\(2)"
-
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:986
msgid ":c:data:`PyExc_RuntimeError`"
msgstr ":c:data:`PyExc_RuntimeError`"
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:986
msgid ":exc:`RuntimeError`"
msgstr ":exc:`RuntimeError`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:988
msgid ":c:data:`PyExc_StopAsyncIteration`"
msgstr ":c:data:`PyExc_StopAsyncIteration`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:988
msgid ":exc:`StopAsyncIteration`"
msgstr ":exc:`StopAsyncIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:990
msgid ":c:data:`PyExc_StopIteration`"
msgstr ":c:data:`PyExc_StopIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:990
msgid ":exc:`StopIteration`"
msgstr ":exc:`StopIteration`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:992
msgid ":c:data:`PyExc_SyntaxError`"
msgstr ":c:data:`PyExc_SyntaxError`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:992
msgid ":exc:`SyntaxError`"
msgstr ":exc:`SyntaxError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:994
msgid ":c:data:`PyExc_SystemError`"
msgstr ":c:data:`PyExc_SystemError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:994
msgid ":exc:`SystemError`"
msgstr ":exc:`SystemError`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:996
msgid ":c:data:`PyExc_SystemExit`"
msgstr ":c:data:`PyExc_SystemExit`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:996
msgid ":exc:`SystemExit`"
msgstr ":exc:`SystemExit`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:998
msgid ":c:data:`PyExc_TabError`"
msgstr ":c:data:`PyExc_TabError`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:998
msgid ":exc:`TabError`"
msgstr ":exc:`TabError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:1000
msgid ":c:data:`PyExc_TimeoutError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:1000
msgid ":exc:`TimeoutError`"
msgstr ":exc:`TimeoutError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:1002
msgid ":c:data:`PyExc_TypeError`"
msgstr ":c:data:`PyExc_TypeError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:1002
msgid ":exc:`TypeError`"
msgstr ":exc:`TypeError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:1004
msgid ":c:data:`PyExc_UnboundLocalError`"
msgstr ":c:data:`PyExc_UnboundLocalError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:1004
msgid ":exc:`UnboundLocalError`"
msgstr ":exc:`UnboundLocalError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:1006
msgid ":c:data:`PyExc_UnicodeDecodeError`"
msgstr ":c:data:`PyExc_UnicodeDecodeError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:1006
msgid ":exc:`UnicodeDecodeError`"
msgstr ":exc:`UnicodeDecodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:1008
msgid ":c:data:`PyExc_UnicodeEncodeError`"
msgstr ":c:data:`PyExc_UnicodeEncodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:1008
msgid ":exc:`UnicodeEncodeError`"
msgstr ":exc:`UnicodeEncodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:1010
msgid ":c:data:`PyExc_UnicodeError`"
msgstr ":c:data:`PyExc_UnicodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:1010
msgid ":exc:`UnicodeError`"
msgstr ":exc:`UnicodeError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:1012
msgid ":c:data:`PyExc_UnicodeTranslateError`"
msgstr ":c:data:`PyExc_UnicodeTranslateError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:1012
msgid ":exc:`UnicodeTranslateError`"
msgstr ":exc:`UnicodeTranslateError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:1014
msgid ":c:data:`PyExc_ValueError`"
msgstr ":c:data:`PyExc_ValueError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:1014
msgid ":exc:`ValueError`"
msgstr ":exc:`ValueError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:1016
msgid ":c:data:`PyExc_ZeroDivisionError`"
msgstr ":c:data:`PyExc_ZeroDivisionError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:1016
msgid ":exc:`ZeroDivisionError`"
msgstr ":exc:`ZeroDivisionError`"
-#: c-api/exceptions.rst:954
+#: c-api/exceptions.rst:1019
msgid ""
":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:"
"`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:"
@@ -1285,57 +1347,57 @@ msgid ""
"`PyExc_TimeoutError` were introduced following :pep:`3151`."
msgstr ""
-#: c-api/exceptions.rst:964
+#: c-api/exceptions.rst:1029
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:1032
msgid ":c:data:`PyExc_ModuleNotFoundError`."
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:970
+#: c-api/exceptions.rst:1035
msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:"
msgstr ""
-#: c-api/exceptions.rst:980
+#: c-api/exceptions.rst:1045
msgid ":c:data:`PyExc_EnvironmentError`"
msgstr ":c:data:`PyExc_EnvironmentError`"
-#: c-api/exceptions.rst:982
+#: c-api/exceptions.rst:1047
msgid ":c:data:`PyExc_IOError`"
msgstr ":c:data:`PyExc_IOError`"
-#: c-api/exceptions.rst:984
+#: c-api/exceptions.rst:1049
msgid ":c:data:`PyExc_WindowsError`"
msgstr ":c:data:`PyExc_WindowsError`"
-#: c-api/exceptions.rst:984
-msgid "\\(3)"
-msgstr "\\(3)"
+#: c-api/exceptions.rst:1049
+msgid "[2]_"
+msgstr ""
-#: c-api/exceptions.rst:987
+#: c-api/exceptions.rst:1052
msgid "These aliases used to be separate exception types."
msgstr ""
-#: c-api/exceptions.rst:1051
+#: c-api/exceptions.rst:1116
msgid "Notes:"
msgstr "Notes :"
-#: c-api/exceptions.rst:993
+#: c-api/exceptions.rst:1058
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:1061
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:1067
msgid "Standard Warning Categories"
msgstr ""
-#: c-api/exceptions.rst:1004
+#: c-api/exceptions.rst:1069
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 +1405,111 @@ msgid ""
"here are all the variables:"
msgstr ""
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1090
msgid ":c:data:`PyExc_Warning`"
msgstr ":c:data:`PyExc_Warning`"
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1090
msgid ":exc:`Warning`"
msgstr ":exc:`Warning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1090
+msgid "[3]_"
+msgstr ""
+
+#: c-api/exceptions.rst:1092
msgid ":c:data:`PyExc_BytesWarning`"
msgstr ":c:data:`PyExc_BytesWarning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1092
msgid ":exc:`BytesWarning`"
msgstr ":exc:`BytesWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1094
msgid ":c:data:`PyExc_DeprecationWarning`"
msgstr ":c:data:`PyExc_DeprecationWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1094
msgid ":exc:`DeprecationWarning`"
msgstr ":exc:`DeprecationWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1096
msgid ":c:data:`PyExc_FutureWarning`"
msgstr ":c:data:`PyExc_FutureWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1096
msgid ":exc:`FutureWarning`"
msgstr ":exc:`FutureWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1098
msgid ":c:data:`PyExc_ImportWarning`"
msgstr ":c:data:`PyExc_ImportWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1098
msgid ":exc:`ImportWarning`"
msgstr ":exc:`ImportWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1100
msgid ":c:data:`PyExc_PendingDeprecationWarning`"
msgstr ":c:data:`PyExc_PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1100
msgid ":exc:`PendingDeprecationWarning`"
msgstr ":exc:`PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1102
msgid ":c:data:`PyExc_ResourceWarning`"
msgstr ":c:data:`PyExc_ResourceWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1102
msgid ":exc:`ResourceWarning`"
msgstr ":exc:`ResourceWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1104
msgid ":c:data:`PyExc_RuntimeWarning`"
msgstr ":c:data:`PyExc_RuntimeWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1104
msgid ":exc:`RuntimeWarning`"
msgstr ":exc:`RuntimeWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1106
msgid ":c:data:`PyExc_SyntaxWarning`"
msgstr ":c:data:`PyExc_SyntaxWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1106
msgid ":exc:`SyntaxWarning`"
msgstr ":exc:`SyntaxWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1108
msgid ":c:data:`PyExc_UnicodeWarning`"
msgstr ":c:data:`PyExc_UnicodeWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1108
msgid ":exc:`UnicodeWarning`"
msgstr ":exc:`UnicodeWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1110
msgid ":c:data:`PyExc_UserWarning`"
msgstr ":c:data:`PyExc_UserWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1110
msgid ":exc:`UserWarning`"
msgstr ":exc:`UserWarning`"
-#: c-api/exceptions.rst:1048
+#: c-api/exceptions.rst:1113
msgid ":c:data:`PyExc_ResourceWarning`."
msgstr ":c:data:`PyExc_ResourceWarning`."
-#: c-api/exceptions.rst:1054
+#: c-api/exceptions.rst:1119
msgid "This is a base class for other standard warning categories."
msgstr "C'est la classe de base pour les autres catégories de *warning*."
+
+#~ msgid "\\(1)"
+#~ msgstr "\\(1)"
+
+#~ msgid "\\(2)"
+#~ msgstr "\\(2)"
+
+#~ msgid "\\(3)"
+#~ msgstr "\\(3)"
diff --git a/c-api/file.po b/c-api/file.po
index 02cf0b7a6a..37f2ce1a5a 100644
--- a/c-api/file.po
+++ b/c-api/file.po
@@ -6,7 +6,7 @@ msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-03-19 16:59+0100\n"
-"PO-Revision-Date: 2018-10-18 09:48+0200\n"
+"PO-Revision-Date: 2021-12-11 12:00+0100\n"
"Last-Translator: \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -37,7 +37,7 @@ msgstr ""
"fichiers et les flux utilisent le nouveau module :mod:`io`, qui définit "
"plusieurs couches au dessus des entrées/sorties bas niveau sans tampon du "
"système d'exploitation. Les fonctions définies ci-dessous, écrites en C, "
-"encapsulent ces nouvelles APi pour les rendre plus faciles d'utilisation et "
+"encapsulent ces nouvelles API pour les rendre plus faciles d'utilisation et "
"sont majoritairement pensées pour signaler des erreurs internes dans "
"l'interpréteur ; il est conseillé au code tiers d'utiliser les API de :mod:"
"`io` à la place."
diff --git a/c-api/float.po b/c-api/float.po
index 7f8321515e..d7598b3b78 100644
--- a/c-api/float.po
+++ b/c-api/float.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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: 2019-01-14 15:30+0100\n"
"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
@@ -123,6 +123,122 @@ msgstr ""
"Renvoie le nombre à virgule flottante minimal normalisé *DBL_MIN* sous la "
"forme :c:type:`double` en C."
+#: c-api/float.rst:82
+msgid "Pack and Unpack functions"
+msgstr ""
+
+#: c-api/float.rst:84
+msgid ""
+"The pack and unpack functions provide an efficient platform-independent way "
+"to store floating-point values as byte strings. The Pack routines produce a "
+"bytes string from a C :c:type:`double`, and the Unpack routines produce a C :"
+"c:type:`double` from such a bytes string. The suffix (2, 4 or 8) specifies "
+"the number of bytes in the bytes string."
+msgstr ""
+
+#: c-api/float.rst:90
+msgid ""
+"On platforms that appear to use IEEE 754 formats these functions work by "
+"copying bits. On other platforms, the 2-byte format is identical to the IEEE "
+"754 binary16 half-precision format, the 4-byte format (32-bit) is identical "
+"to the IEEE 754 binary32 single precision format, and the 8-byte format to "
+"the IEEE 754 binary64 double precision format, although the packing of INFs "
+"and NaNs (if such things exist on the platform) isn't handled correctly, and "
+"attempting to unpack a bytes string containing an IEEE INF or NaN will raise "
+"an exception."
+msgstr ""
+
+#: c-api/float.rst:99
+msgid ""
+"On non-IEEE platforms with more precision, or larger dynamic range, than "
+"IEEE 754 supports, not all values can be packed; on non-IEEE platforms with "
+"less precision, or smaller dynamic range, not all values can be unpacked. "
+"What happens in such cases is partly accidental (alas)."
+msgstr ""
+
+#: c-api/float.rst:107
+msgid "Pack functions"
+msgstr ""
+
+#: c-api/float.rst:109
+msgid ""
+"The pack routines write 2, 4 or 8 bytes, starting at *p*. *le* is an :c:type:"
+"`int` argument, non-zero if you want the bytes string in little-endian "
+"format (exponent last, at ``p+1``, ``p+3``, or ``p+6`` ``p+7``), zero if you "
+"want big-endian format (exponent first, at *p*). The :c:data:`PY_BIG_ENDIAN` "
+"constant can be used to use the native endian: it is equal to ``1`` on big "
+"endian processor, or ``0`` on little endian processor."
+msgstr ""
+
+#: c-api/float.rst:116
+msgid ""
+"Return value: ``0`` if all is OK, ``-1`` if error (and an exception is set, "
+"most likely :exc:`OverflowError`)."
+msgstr ""
+
+#: c-api/float.rst:119
+msgid "There are two problems on non-IEEE platforms:"
+msgstr ""
+
+#: c-api/float.rst:121
+msgid "What this does is undefined if *x* is a NaN or infinity."
+msgstr ""
+
+#: c-api/float.rst:122
+msgid "``-0.0`` and ``+0.0`` produce the same bytes string."
+msgstr ""
+
+#: c-api/float.rst:126
+msgid "Pack a C double as the IEEE 754 binary16 half-precision format."
+msgstr ""
+
+#: c-api/float.rst:130
+msgid "Pack a C double as the IEEE 754 binary32 single precision format."
+msgstr ""
+
+#: c-api/float.rst:134
+msgid "Pack a C double as the IEEE 754 binary64 double precision format."
+msgstr ""
+
+#: c-api/float.rst:138
+msgid "Unpack functions"
+msgstr ""
+
+#: c-api/float.rst:140
+msgid ""
+"The unpack routines read 2, 4 or 8 bytes, starting at *p*. *le* is an :c:"
+"type:`int` argument, non-zero if the bytes string is in little-endian format "
+"(exponent last, at ``p+1``, ``p+3`` or ``p+6`` and ``p+7``), zero if big-"
+"endian (exponent first, at *p*). The :c:data:`PY_BIG_ENDIAN` constant can be "
+"used to use the native endian: it is equal to ``1`` on big endian processor, "
+"or ``0`` on little endian processor."
+msgstr ""
+
+#: c-api/float.rst:147
+msgid ""
+"Return value: The unpacked double. On error, this is ``-1.0`` and :c:func:"
+"`PyErr_Occurred` is true (and an exception is set, most likely :exc:"
+"`OverflowError`)."
+msgstr ""
+
+#: c-api/float.rst:151
+msgid ""
+"Note that on a non-IEEE platform this will refuse to unpack a bytes string "
+"that represents a NaN or infinity."
+msgstr ""
+
+#: c-api/float.rst:156
+msgid "Unpack the IEEE 754 binary16 half-precision format as a C double."
+msgstr ""
+
+#: c-api/float.rst:160
+msgid "Unpack the IEEE 754 binary32 single precision format as a C double."
+msgstr ""
+
+#: c-api/float.rst:164
+msgid "Unpack the IEEE 754 binary64 double precision format as a C double."
+msgstr ""
+
#~ msgid ""
#~ "Clear the float free list. Return the number of items that could not be "
#~ "freed."
diff --git a/c-api/frame.po b/c-api/frame.po
new file mode 100644
index 0000000000..2476acc6f4
--- /dev/null
+++ b/c-api/frame.po
@@ -0,0 +1,106 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2022, 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.11\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2022-05-22 23:13+0200\n"
+"PO-Revision-Date: 2022-05-23 00:48+0200\n"
+"Last-Translator: FULL NAME \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"
+
+#: c-api/frame.rst:4
+msgid "Frame Objects"
+msgstr ""
+
+#: c-api/frame.rst:8
+msgid "The C structure of the objects used to describe frame objects."
+msgstr ""
+
+#: c-api/frame.rst:10
+msgid "There are no public members in this structure."
+msgstr ""
+
+#: c-api/frame.rst:12
+msgid ""
+"The members of this structure were removed from the public C API. Refer to "
+"the :ref:`What's New entry ` for details."
+msgstr ""
+
+#: c-api/frame.rst:17
+msgid ""
+"The :c:func:`PyEval_GetFrame` and :c:func:`PyThreadState_GetFrame` functions "
+"can be used to get a frame object."
+msgstr ""
+
+#: c-api/frame.rst:20
+msgid "See also :ref:`Reflection `."
+msgstr ""
+
+#: c-api/frame.rst:25
+msgid "Get the *frame* next outer frame."
+msgstr ""
+
+#: c-api/frame.rst:27
+msgid ""
+"Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer frame."
+msgstr ""
+
+#: c-api/frame.rst:35
+msgid "Get the *frame*'s ``f_builtins`` attribute."
+msgstr ""
+
+#: c-api/frame.rst:68
+msgid "Return a :term:`strong reference`. The result cannot be ``NULL``."
+msgstr ""
+
+#: c-api/frame.rst:44
+msgid "Get the *frame* code."
+msgstr ""
+
+#: c-api/frame.rst:86
+msgid "Return a :term:`strong reference`."
+msgstr ""
+
+#: c-api/frame.rst:48
+msgid "The result (frame code) cannot be ``NULL``."
+msgstr ""
+
+#: c-api/frame.rst:55
+msgid ""
+"Get the generator, coroutine, or async generator that owns this frame, or "
+"``NULL`` if this frame is not owned by a generator. Does not raise an "
+"exception, even if the return value is ``NULL``."
+msgstr ""
+
+#: c-api/frame.rst:59
+msgid "Return a :term:`strong reference`, or ``NULL``."
+msgstr ""
+
+#: c-api/frame.rst:66
+msgid "Get the *frame*'s ``f_globals`` attribute."
+msgstr ""
+
+#: c-api/frame.rst:75
+msgid "Get the *frame*'s ``f_lasti`` attribute."
+msgstr ""
+
+#: c-api/frame.rst:77
+msgid "Returns -1 if ``frame.f_lasti`` is ``None``."
+msgstr ""
+
+#: c-api/frame.rst:84
+msgid "Get the *frame*'s ``f_locals`` attribute (:class:`dict`)."
+msgstr ""
+
+#: c-api/frame.rst:93
+msgid "Return the line number that *frame* is currently executing."
+msgstr ""
diff --git a/c-api/function.po b/c-api/function.po
index c60e6d04a3..3b6b017e79 100644
--- a/c-api/function.po
+++ b/c-api/function.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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -52,67 +52,72 @@ msgid ""
"The function's docstring and name are retrieved from the code object. "
"*__module__* is retrieved from *globals*. The argument defaults, annotations "
"and closure are set to ``NULL``. *__qualname__* is set to the same value as "
-"the function's name."
+"the code object's ``co_qualname`` field."
msgstr ""
-#: c-api/function.rst:44
+#: c-api/function.rst:45
msgid ""
"As :c:func:`PyFunction_New`, but also allows setting the function object's "
"``__qualname__`` attribute. *qualname* should be a unicode object or "
"``NULL``; if ``NULL``, the ``__qualname__`` attribute is set to the same "
-"value as its ``__name__`` attribute."
+"value as the code object's ``co_qualname`` field."
msgstr ""
-#: c-api/function.rst:54
+#: c-api/function.rst:55
msgid "Return the code object associated with the function object *op*."
msgstr ""
-#: c-api/function.rst:59
+#: c-api/function.rst:60
msgid "Return the globals dictionary associated with the function object *op*."
msgstr ""
-#: c-api/function.rst:64
+#: c-api/function.rst:65
msgid ""
-"Return the *__module__* attribute of the function object *op*. This is "
-"normally a string containing the module name, but can be set to any other "
-"object by Python code."
+"Return a :term:`borrowed reference` to the *__module__* attribute of the "
+"function object *op*. It can be *NULL*."
msgstr ""
-#: c-api/function.rst:71
+#: c-api/function.rst:68
+msgid ""
+"This is normally a string containing the module name, but can be set to any "
+"other object by Python code."
+msgstr ""
+
+#: c-api/function.rst:74
msgid ""
"Return the argument default values of the function object *op*. This can be "
"a tuple of arguments or ``NULL``."
msgstr ""
-#: c-api/function.rst:77
+#: c-api/function.rst:80
msgid ""
"Set the argument default values for the function object *op*. *defaults* "
"must be ``Py_None`` or a tuple."
msgstr ""
-#: c-api/function.rst:94 c-api/function.rst:108
+#: c-api/function.rst:97 c-api/function.rst:111
msgid "Raises :exc:`SystemError` and returns ``-1`` on failure."
msgstr ""
-#: c-api/function.rst:85
+#: c-api/function.rst:88
msgid ""
"Return the closure associated with the function object *op*. This can be "
"``NULL`` or a tuple of cell objects."
msgstr ""
-#: c-api/function.rst:91
+#: c-api/function.rst:94
msgid ""
"Set the closure associated with the function object *op*. *closure* must be "
"``Py_None`` or a tuple of cell objects."
msgstr ""
-#: c-api/function.rst:99
+#: c-api/function.rst:102
msgid ""
"Return the annotations of the function object *op*. This can be a mutable "
"dictionary or ``NULL``."
msgstr ""
-#: c-api/function.rst:105
+#: c-api/function.rst:108
msgid ""
"Set the annotations for the function object *op*. *annotations* must be a "
"dictionary or ``Py_None``."
diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po
index 7d02c6dea7..cc0eb5ffcc 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: 2021-05-29 16:33+0200\n"
+"POT-Creation-Date: 2022-03-23 18:39+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,14 +60,31 @@ msgid ""
"initialized, it must call :c:func:`PyObject_GC_Track`."
msgstr ""
-#: c-api/gcsupport.rst:37
+#: 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:41
+#: 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 "
@@ -78,26 +95,26 @@ msgid ""
"include the :const:`Py_TPFLAGS_HAVE_GC` flag."
msgstr ""
-#: c-api/gcsupport.rst:51
+#: 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:57
+#: 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:63
+#: 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:69
+#: 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 "
@@ -106,55 +123,38 @@ msgid ""
"usually near the end of the constructor."
msgstr ""
-#: c-api/gcsupport.rst:78
+#: 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:81
+#: 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:86
+#: 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:89
+#: c-api/gcsupport.rst:97
msgid "This is analogous to the Python function :func:`gc.is_tracked`."
msgstr ""
-#: c-api/gcsupport.rst:96
+#: 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:99
+#: c-api/gcsupport.rst:107
msgid "This is analogous to the Python function :func:`gc.is_finalized`."
msgstr ""
-#: c-api/gcsupport.rst:103
-msgid ""
-"Similarly, the deallocator for the object must conform to a similar pair of "
-"rules:"
-msgstr ""
-
-#: c-api/gcsupport.rst:106
-msgid ""
-"Before fields which refer to other containers are invalidated, :c:func:"
-"`PyObject_GC_UnTrack` must be called."
-msgstr ""
-
-#: c-api/gcsupport.rst:109
-msgid ""
-"The object's memory must be deallocated using :c:func:`PyObject_GC_Del`."
-msgstr ""
-
#: c-api/gcsupport.rst:114
msgid ""
"Releases memory allocated to an object using :c:func:`PyObject_GC_New` or :c:"
@@ -239,3 +239,45 @@ msgid ""
"collector will call this method if it detects that this object is involved "
"in a reference cycle."
msgstr ""
+
+#: c-api/gcsupport.rst:191
+msgid "Controlling the Garbage Collector State"
+msgstr ""
+
+#: c-api/gcsupport.rst:193
+msgid ""
+"The C-API provides the following functions for controlling garbage "
+"collection runs."
+msgstr ""
+
+#: c-api/gcsupport.rst:198
+msgid ""
+"Perform a full garbage collection, if the garbage collector is enabled. "
+"(Note that :func:`gc.collect` runs it unconditionally.)"
+msgstr ""
+
+#: c-api/gcsupport.rst:201
+msgid ""
+"Returns the number of collected + unreachable objects which cannot be "
+"collected. If the garbage collector is disabled or already collecting, "
+"returns ``0`` immediately. Errors during garbage collection are passed to :"
+"data:`sys.unraisablehook`. This function does not raise exceptions."
+msgstr ""
+
+#: c-api/gcsupport.rst:211
+msgid ""
+"Enable the garbage collector: similar to :func:`gc.enable`. Returns the "
+"previous state, 0 for disabled and 1 for enabled."
+msgstr ""
+
+#: c-api/gcsupport.rst:219
+msgid ""
+"Disable the garbage collector: similar to :func:`gc.disable`. Returns the "
+"previous state, 0 for disabled and 1 for enabled."
+msgstr ""
+
+#: c-api/gcsupport.rst:227
+msgid ""
+"Query the state of the garbage collector: similar to :func:`gc.isenabled`. "
+"Returns the current state, 0 for disabled and 1 for enabled."
+msgstr ""
diff --git a/c-api/import.po b/c-api/import.po
index 339895db92..6bb854630a 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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -270,7 +270,13 @@ msgid ""
"h`, is::"
msgstr ""
-#: c-api/import.rst:264
+#: c-api/import.rst:262
+msgid ""
+"The new ``is_package`` field indicates whether the module is a package or "
+"not. This replaces setting the ``size`` field to a negative value."
+msgstr ""
+
+#: c-api/import.rst:268
msgid ""
"This pointer is initialized to point to an array of :c:type:`struct _frozen` "
"records, terminated by one whose members are all ``NULL`` or zero. When a "
@@ -284,7 +290,7 @@ msgstr ""
"tableau. Du code tiers peut jouer avec pour construire dynamiquement une "
"collection de module figés."
-#: c-api/import.rst:272
+#: c-api/import.rst:276
msgid ""
"Add a single module to the existing table of built-in modules. This is a "
"convenience wrapper around :c:func:`PyImport_ExtendInittab`, returning "
@@ -294,7 +300,7 @@ msgid ""
"before :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/import.rst:282
+#: c-api/import.rst:286
msgid ""
"Structure describing a single entry in the list of built-in modules. Each "
"of these structures gives the name and initialization function for a module "
@@ -304,13 +310,20 @@ msgid ""
"structure is defined in :file:`Include/import.h` as::"
msgstr ""
-#: c-api/import.rst:297
+#: c-api/import.rst:301
msgid ""
"Add a collection of modules to the table of built-in modules. The *newtab* "
"array must end with a sentinel entry which contains ``NULL`` for the :attr:"
"`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:308
+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..591bb0db6a 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2018-11-29 18:22+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -233,7 +233,7 @@ msgid ""
msgstr ""
#: c-api/init.rst:113
-msgid "Private flag used by ``_freeze_importlib`` and ``frozenmain`` programs."
+msgid "Private flag used by ``_freeze_module`` and ``frozenmain`` programs."
msgstr ""
#: c-api/init.rst:117
@@ -289,42 +289,43 @@ msgstr ""
#: c-api/init.rst:154
msgid ""
-"If the flag is non-zero, use the ``mbcs`` encoding instead of the UTF-8 "
-"encoding for the filesystem encoding."
+"If the flag is non-zero, use the ``mbcs`` encoding with ``replace`` error "
+"handler, instead of the UTF-8 encoding with ``surrogatepass`` error handler, "
+"for the :term:`filesystem encoding and error handler`."
msgstr ""
-#: c-api/init.rst:157
+#: c-api/init.rst:158
msgid ""
"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment "
"variable is set to a non-empty string."
msgstr ""
-#: c-api/init.rst:160
+#: c-api/init.rst:161
msgid "See :pep:`529` for more details."
msgstr "Voir la :pep:`529` pour plus d'informations."
-#: c-api/init.rst:174
+#: c-api/init.rst:175
msgid ":ref:`Availability `: Windows."
msgstr ":ref:`Disponibilité ` : Windows."
-#: c-api/init.rst:166
+#: c-api/init.rst:167
msgid ""
"If the flag is non-zero, use :class:`io.FileIO` instead of :class:"
"`WindowsConsoleIO` for :mod:`sys` standard streams."
msgstr ""
-#: c-api/init.rst:169
+#: c-api/init.rst:170
msgid ""
"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable "
"is set to a non-empty string."
msgstr ""
-#: c-api/init.rst:172
+#: c-api/init.rst:173
#, fuzzy
msgid "See :pep:`528` for more details."
msgstr "Voir la :pep:`529` pour plus d'informations."
-#: c-api/init.rst:178
+#: c-api/init.rst:179
msgid ""
"Disable the import of the module :mod:`site` and the site-dependent "
"manipulations of :data:`sys.path` that it entails. Also disable these "
@@ -336,11 +337,11 @@ msgstr ""
"mod:`site` est importé explicitement plus tard (appelez :func:`site.main` si "
"vous voulez les déclencher)."
-#: c-api/init.rst:183
+#: c-api/init.rst:184
msgid "Set by the :option:`-S` option."
msgstr ""
-#: c-api/init.rst:187
+#: c-api/init.rst:188
msgid ""
"Don't add the :data:`user site-packages directory ` to :data:"
"`sys.path`."
@@ -348,38 +349,38 @@ msgstr ""
"N'ajoute pas le répertoire utilisateur :data:`site-packages ` à :data:`sys.path`."
-#: c-api/init.rst:190
+#: c-api/init.rst:191
msgid ""
"Set by the :option:`-s` and :option:`-I` options, and the :envvar:"
"`PYTHONNOUSERSITE` environment variable."
msgstr ""
-#: c-api/init.rst:195
+#: c-api/init.rst:196
msgid ""
"Set by the :option:`-O` option and the :envvar:`PYTHONOPTIMIZE` environment "
"variable."
msgstr ""
-#: c-api/init.rst:200
+#: c-api/init.rst:201
msgid ""
"Don't display the copyright and version messages even in interactive mode."
msgstr "N'affiche pas le copyright et la version, même en mode interactif."
-#: c-api/init.rst:202
+#: c-api/init.rst:203
msgid "Set by the :option:`-q` option."
msgstr ""
-#: c-api/init.rst:208
+#: c-api/init.rst:209
msgid "Force the stdout and stderr streams to be unbuffered."
msgstr ""
-#: c-api/init.rst:210
+#: c-api/init.rst:211
msgid ""
"Set by the :option:`-u` option and the :envvar:`PYTHONUNBUFFERED` "
"environment variable."
msgstr ""
-#: c-api/init.rst:215
+#: c-api/init.rst:216
msgid ""
"Print a message each time a module is initialized, showing the place "
"(filename or built-in module) from which it is loaded. If greater or equal "
@@ -387,24 +388,24 @@ msgid ""
"for a module. Also provides information on module cleanup at exit."
msgstr ""
-#: c-api/init.rst:220
+#: c-api/init.rst:221
msgid ""
"Set by the :option:`-v` option and the :envvar:`PYTHONVERBOSE` environment "
"variable."
msgstr ""
-#: c-api/init.rst:225
+#: c-api/init.rst:226
msgid "Initializing and finalizing the interpreter"
msgstr ""
-#: c-api/init.rst:243
+#: c-api/init.rst:244
msgid ""
"Initialize the Python interpreter. In an application embedding Python, "
"this should be called before using any other Python/C API functions; see :"
"ref:`Before Python Initialization ` for the few exceptions."
msgstr ""
-#: c-api/init.rst:247
+#: c-api/init.rst:248
msgid ""
"This initializes the table of loaded modules (``sys.modules``), and creates "
"the fundamental modules :mod:`builtins`, :mod:`__main__` and :mod:`sys`. It "
@@ -414,27 +415,27 @@ msgid ""
"There is no return value; it is a fatal error if the initialization fails."
msgstr ""
-#: c-api/init.rst:256
+#: c-api/init.rst:257
msgid ""
"On Windows, changes the console mode from ``O_TEXT`` to ``O_BINARY``, which "
"will also affect non-Python uses of the console using the C Runtime."
msgstr ""
-#: c-api/init.rst:262
+#: c-api/init.rst:263
msgid ""
"This function works like :c:func:`Py_Initialize` if *initsigs* is ``1``. If "
"*initsigs* is ``0``, it skips initialization registration of signal "
"handlers, which might be useful when Python is embedded."
msgstr ""
-#: c-api/init.rst:269
+#: c-api/init.rst:270
msgid ""
"Return true (nonzero) when the Python interpreter has been initialized, "
"false (zero) if not. After :c:func:`Py_FinalizeEx` is called, this returns "
"false until :c:func:`Py_Initialize` is called again."
msgstr ""
-#: c-api/init.rst:276
+#: c-api/init.rst:277
msgid ""
"Undo all initializations made by :c:func:`Py_Initialize` and subsequent use "
"of Python/C API functions, and destroy all sub-interpreters (see :c:func:"
@@ -446,7 +447,7 @@ msgid ""
"(flushing buffered data), ``-1`` is returned."
msgstr ""
-#: c-api/init.rst:285
+#: c-api/init.rst:286
msgid ""
"This function is provided for a number of reasons. An embedding application "
"might want to restart Python without having to restart the application "
@@ -457,7 +458,7 @@ msgid ""
"Python before exiting from the application."
msgstr ""
-#: c-api/init.rst:293
+#: c-api/init.rst:294
msgid ""
"**Bugs and caveats:** The destruction of modules and objects in modules is "
"done in random order; this may cause destructors (:meth:`__del__` methods) "
@@ -472,60 +473,74 @@ msgid ""
"than once."
msgstr ""
-#: c-api/init.rst:304
+#: c-api/init.rst:305
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"_PySys_ClearAuditHooks`` with no arguments."
msgstr ""
-#: c-api/init.rst:310
+#: c-api/init.rst:311
msgid ""
"This is a backwards-compatible version of :c:func:`Py_FinalizeEx` that "
"disregards the return value."
msgstr ""
-#: c-api/init.rst:315
+#: c-api/init.rst:316
msgid "Process-wide parameters"
msgstr ""
-#: c-api/init.rst:325
+#: c-api/init.rst:326
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"stdio_encoding` and :c:member:`PyConfig.stdio_errors` should be used "
+"instead, see :ref:`Python Initialization Configuration `."
+msgstr ""
+
+#: c-api/init.rst:331
msgid ""
"This function should be called before :c:func:`Py_Initialize`, if it is "
"called at all. It specifies which encoding and error handling to use with "
"standard IO, with the same meanings as in :func:`str.encode`."
msgstr ""
-#: c-api/init.rst:329
+#: c-api/init.rst:335
msgid ""
"It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code to "
"control IO encoding when the environment variable does not work."
msgstr ""
-#: c-api/init.rst:332
+#: c-api/init.rst:338
msgid ""
"*encoding* and/or *errors* may be ``NULL`` to use :envvar:`PYTHONIOENCODING` "
"and/or default values (depending on other settings)."
msgstr ""
-#: c-api/init.rst:336
+#: c-api/init.rst:342
msgid ""
"Note that :data:`sys.stderr` always uses the \"backslashreplace\" error "
"handler, regardless of this (or any other) setting."
msgstr ""
-#: c-api/init.rst:339
+#: c-api/init.rst:345
msgid ""
"If :c:func:`Py_FinalizeEx` is called, this function will need to be called "
"again in order to affect subsequent calls to :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/init.rst:342
+#: c-api/init.rst:348
msgid ""
"Returns ``0`` if successful, a nonzero value on error (e.g. calling after "
"the interpreter has already been initialized)."
msgstr ""
-#: c-api/init.rst:355
+#: c-api/init.rst:363
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"program_name` should be used instead, see :ref:`Python Initialization "
+"Configuration `."
+msgstr ""
+
+#: c-api/init.rst:367
msgid ""
"This function should be called before :c:func:`Py_Initialize` is called for "
"the first time, if it is called at all. It tells the interpreter the value "
@@ -539,20 +554,30 @@ msgid ""
"this storage."
msgstr ""
-#: c-api/init.rst:480 c-api/init.rst:613 c-api/init.rst:630
+#: c-api/init.rst:529 c-api/init.rst:680 c-api/init.rst:706
msgid ""
"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:type:"
"`wchar_*` string."
msgstr ""
-#: c-api/init.rst:374
+#: c-api/init.rst:388
msgid ""
"Return the program name set with :c:func:`Py_SetProgramName`, or the "
"default. The returned string points into static storage; the caller should "
"not modify its value."
msgstr ""
-#: c-api/init.rst:381
+#: c-api/init.rst:411 c-api/init.rst:471 c-api/init.rst:718
+msgid ""
+"This function should not be called before :c:func:`Py_Initialize`, otherwise "
+"it returns ``NULL``."
+msgstr ""
+
+#: c-api/init.rst:414 c-api/init.rst:474 c-api/init.rst:721
+msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`."
+msgstr ""
+
+#: c-api/init.rst:401
msgid ""
"Return the *prefix* for installed platform-independent files. This is "
"derived through a number of complicated rules from the program name set "
@@ -566,7 +591,7 @@ msgid ""
"function."
msgstr ""
-#: c-api/init.rst:394
+#: c-api/init.rst:420
msgid ""
"Return the *exec-prefix* for installed platform-*dependent* files. This is "
"derived through a number of complicated rules from the program name set "
@@ -580,7 +605,7 @@ msgid ""
"on Unix."
msgstr ""
-#: c-api/init.rst:404
+#: c-api/init.rst:430
msgid ""
"Background: The exec-prefix differs from the prefix when platform dependent "
"files (such as executables and shared libraries) are installed in a "
@@ -589,7 +614,7 @@ msgid ""
"independent may be installed in :file:`/usr/local`."
msgstr ""
-#: c-api/init.rst:410
+#: c-api/init.rst:436
msgid ""
"Generally speaking, a platform is a combination of hardware and software "
"families, e.g. Sparc machines running the Solaris 2.x operating system are "
@@ -603,7 +628,7 @@ msgid ""
"independent from the Python version by which they were compiled!)."
msgstr ""
-#: c-api/init.rst:421
+#: c-api/init.rst:447
msgid ""
"System administrators will know how to configure the :program:`mount` or :"
"program:`automount` programs to share :file:`/usr/local` between platforms "
@@ -611,7 +636,7 @@ msgid ""
"platform."
msgstr ""
-#: c-api/init.rst:433
+#: c-api/init.rst:465
msgid ""
"Return the full program name of the Python executable; this is computed as "
"a side-effect of deriving the default module search path from the program "
@@ -620,31 +645,39 @@ msgid ""
"available to Python code as ``sys.executable``."
msgstr ""
-#: c-api/init.rst:447
+#: c-api/init.rst:485
msgid ""
"Return the default module search path; this is computed from the program "
"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 "
"for loading modules."
msgstr ""
-#: c-api/init.rst:467
+#: c-api/init.rst:511
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"module_search_paths` and :c:member:`PyConfig.module_search_paths_set` should "
+"be used instead, see :ref:`Python Initialization Configuration `."
+msgstr ""
+
+#: c-api/init.rst:516
msgid ""
"Set the default module search path. If this function is called before :c:"
"func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a "
"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
+#: c-api/init.rst:524
msgid ""
"This also causes :data:`sys.executable` to be set to the program full path "
"(see :c:func:`Py_GetProgramFullPath`) and for :data:`sys.prefix` and :data:"
@@ -652,80 +685,92 @@ msgid ""
"required after calling :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/init.rst:483
+#: c-api/init.rst:532
msgid ""
"The path argument is copied internally, so the caller may free it after the "
"call completes."
msgstr ""
-#: c-api/init.rst:486
+#: c-api/init.rst:535
msgid ""
"The program full path is now used for :data:`sys.executable`, instead of the "
"program name."
msgstr ""
-#: c-api/init.rst:493
+#: c-api/init.rst:544
msgid ""
"Return the version of this Python interpreter. This is a string that looks "
"something like ::"
msgstr ""
-#: c-api/init.rst:500
+#: c-api/init.rst:551
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:556
+msgid "See also the :c:var:`Py_Version` constant."
msgstr ""
-#: c-api/init.rst:510
+#: c-api/init.rst:563
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
+#: c-api/init.rst:574
msgid ""
"Return the official copyright string for the current Python version, for "
"example"
msgstr ""
-#: c-api/init.rst:523
+#: c-api/init.rst:576
msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
msgstr ""
-#: c-api/init.rst:527
+#: c-api/init.rst:580
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as ``sys.copyright``."
msgstr ""
-#: c-api/init.rst:533
+#: c-api/init.rst:586
msgid ""
"Return an indication of the compiler used to build the current Python "
"version, in square brackets, for example::"
msgstr ""
-#: c-api/init.rst:554
+#: c-api/init.rst:607
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as part of the variable "
"``sys.version``."
msgstr ""
-#: c-api/init.rst:547
+#: c-api/init.rst:600
msgid ""
"Return information about the sequence number and build date and time of the "
"current Python interpreter instance, for example ::"
msgstr ""
-#: c-api/init.rst:566
+#: c-api/init.rst:619
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"argv`, :c:member:`PyConfig.parse_argv` and :c:member:`PyConfig.safe_path` "
+"should be used instead, see :ref:`Python Initialization Configuration `."
+msgstr ""
+
+#: c-api/init.rst:624
msgid ""
"Set :data:`sys.argv` based on *argc* and *argv*. These parameters are "
"similar to those passed to the program's :c:func:`main` function with the "
@@ -736,28 +781,34 @@ msgid ""
"fatal condition is signalled using :c:func:`Py_FatalError`."
msgstr ""
-#: c-api/init.rst:574
+#: c-api/init.rst:632
msgid ""
"If *updatepath* is zero, this is all the function does. If *updatepath* is "
"non-zero, the function also modifies :data:`sys.path` according to the "
"following algorithm:"
msgstr ""
-#: c-api/init.rst:578
+#: c-api/init.rst:636
msgid ""
"If the name of an existing script is passed in ``argv[0]``, the absolute "
"path of the directory where the script is located is prepended to :data:`sys."
"path`."
msgstr ""
-#: c-api/init.rst:581
+#: c-api/init.rst:639
msgid ""
"Otherwise (that is, if *argc* is ``0`` or ``argv[0]`` doesn't point to an "
"existing file name), an empty string is prepended to :data:`sys.path`, which "
"is the same as prepending the current working directory (``\".\"``)."
msgstr ""
-#: c-api/init.rst:590
+#: c-api/init.rst:683
+msgid ""
+"See also :c:member:`PyConfig.orig_argv` and :c:member:`PyConfig.argv` "
+"members of the :ref:`Python Initialization Configuration `."
+msgstr ""
+
+#: c-api/init.rst:651
msgid ""
"It is recommended that applications embedding the Python interpreter for "
"purposes other than executing a single script pass ``0`` as *updatepath*, "
@@ -765,32 +816,46 @@ msgid ""
"`_."
msgstr ""
-#: c-api/init.rst:595
+#: c-api/init.rst:656
msgid ""
"On versions before 3.1.3, you can achieve the same effect by manually "
"popping the first :data:`sys.path` element after having called :c:func:"
"`PySys_SetArgv`, for example using::"
msgstr ""
-#: c-api/init.rst:609
+#: c-api/init.rst:672
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"argv` and :c:member:`PyConfig.parse_argv` should be used instead, see :ref:"
+"`Python Initialization Configuration `."
+msgstr ""
+
+#: c-api/init.rst:676
msgid ""
"This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to "
"``1`` unless the :program:`python` interpreter was started with the :option:"
"`-I`."
msgstr ""
-#: c-api/init.rst:616
+#: c-api/init.rst:686
msgid "The *updatepath* value depends on :option:`-I`."
msgstr ""
-#: c-api/init.rst:621
+#: c-api/init.rst:693
+msgid ""
+"This API is kept for backward compatibility: setting :c:member:`PyConfig."
+"home` should be used instead, see :ref:`Python Initialization Configuration "
+"`."
+msgstr ""
+
+#: c-api/init.rst:697
msgid ""
"Set the default \"home\" directory, that is, the location of the standard "
"Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument "
"string."
msgstr ""
-#: c-api/init.rst:625
+#: c-api/init.rst:701
msgid ""
"The argument should point to a zero-terminated character string in static "
"storage whose contents will not change for the duration of the program's "
@@ -798,18 +863,18 @@ msgid ""
"this storage."
msgstr ""
-#: c-api/init.rst:636
+#: c-api/init.rst:714
msgid ""
"Return the default \"home\", that is, the value set by a previous call to :c:"
"func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` "
"environment variable if it is set."
msgstr ""
-#: c-api/init.rst:644
+#: c-api/init.rst:728
msgid "Thread State and the Global Interpreter Lock"
msgstr ""
-#: c-api/init.rst:651
+#: c-api/init.rst:735
msgid ""
"The Python interpreter is not fully thread-safe. In order to support multi-"
"threaded Python programs, there's a global lock, called the :term:`global "
@@ -821,7 +886,7 @@ msgid ""
"once instead of twice."
msgstr ""
-#: c-api/init.rst:661
+#: c-api/init.rst:745
msgid ""
"Therefore, the rule exists that only the thread that has acquired the :term:"
"`GIL` may operate on Python objects or call Python/C API functions. In order "
@@ -831,7 +896,7 @@ msgid ""
"a file, so that other Python threads can run in the meantime."
msgstr ""
-#: c-api/init.rst:672
+#: c-api/init.rst:756
msgid ""
"The Python interpreter keeps some thread-specific bookkeeping information "
"inside a data structure called :c:type:`PyThreadState`. There's also one "
@@ -839,32 +904,32 @@ msgid ""
"retrieved using :c:func:`PyThreadState_Get`."
msgstr ""
-#: c-api/init.rst:678
+#: c-api/init.rst:762
msgid "Releasing the GIL from extension code"
msgstr ""
-#: c-api/init.rst:680
+#: c-api/init.rst:764
msgid ""
"Most extension code manipulating the :term:`GIL` has the following simple "
"structure::"
msgstr ""
-#: c-api/init.rst:689
+#: c-api/init.rst:773
msgid "This is so common that a pair of macros exists to simplify it::"
msgstr ""
-#: c-api/init.rst:699
+#: c-api/init.rst:783
msgid ""
"The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a "
"hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the "
"block."
msgstr ""
-#: c-api/init.rst:703
+#: c-api/init.rst:787
msgid "The block above expands to the following code::"
msgstr ""
-#: c-api/init.rst:715
+#: c-api/init.rst:799
msgid ""
"Here is how these functions work: the global interpreter lock is used to "
"protect the pointer to the current thread state. When releasing the lock "
@@ -875,7 +940,7 @@ msgid ""
"state, the lock must be acquired before storing the thread state pointer."
msgstr ""
-#: c-api/init.rst:724
+#: c-api/init.rst:808
msgid ""
"Calling system I/O functions is the most common use case for releasing the "
"GIL, but it can also be useful before calling long-running computations "
@@ -885,11 +950,11 @@ msgid ""
"compressing or hashing data."
msgstr ""
-#: c-api/init.rst:735
+#: c-api/init.rst:819
msgid "Non-Python created threads"
msgstr ""
-#: c-api/init.rst:737
+#: c-api/init.rst:821
msgid ""
"When threads are created using the dedicated Python APIs (such as the :mod:"
"`threading` module), a thread state is automatically associated to them and "
@@ -899,7 +964,7 @@ msgid ""
"for them."
msgstr ""
-#: c-api/init.rst:744
+#: c-api/init.rst:828
msgid ""
"If you need to call Python code from these threads (often this will be part "
"of a callback API provided by the aforementioned third-party library), you "
@@ -910,14 +975,14 @@ msgid ""
"finally free the thread state data structure."
msgstr ""
-#: c-api/init.rst:752
+#: c-api/init.rst:836
msgid ""
"The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions "
"do all of the above automatically. The typical idiom for calling into "
"Python from a C thread is::"
msgstr ""
-#: c-api/init.rst:766
+#: c-api/init.rst:850
msgid ""
"Note that the :c:func:`PyGILState_\\*` functions assume there is only one "
"global interpreter (created automatically by :c:func:`Py_Initialize`). "
@@ -926,11 +991,11 @@ msgid ""
"`PyGILState_\\*` API is unsupported."
msgstr ""
-#: c-api/init.rst:776
+#: c-api/init.rst:860
msgid "Cautions about fork()"
msgstr ""
-#: c-api/init.rst:778
+#: c-api/init.rst:862
msgid ""
"Another important thing to note about threads is their behaviour in the face "
"of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a "
@@ -939,7 +1004,7 @@ msgid ""
"CPython's runtime."
msgstr ""
-#: c-api/init.rst:784
+#: c-api/init.rst:868
msgid ""
"The fact that only the \"current\" thread remains means any locks held by "
"other threads will never be released. Python solves this for :func:`os.fork` "
@@ -956,7 +1021,7 @@ msgid ""
"locks, but is not always able to."
msgstr ""
-#: c-api/init.rst:799
+#: c-api/init.rst:883
msgid ""
"The fact that all other threads go away also means that CPython's runtime "
"state there must be cleaned up properly, which :func:`os.fork` does. This "
@@ -969,18 +1034,18 @@ msgid ""
"called immediately after."
msgstr ""
-#: c-api/init.rst:812
+#: c-api/init.rst:896
#, fuzzy
msgid "High-level API"
msgstr "Bibliothèques de haut-niveau"
-#: c-api/init.rst:814
+#: c-api/init.rst:898
msgid ""
"These are the most commonly used types and functions when writing C "
"extension code, or when embedding the Python interpreter:"
msgstr ""
-#: c-api/init.rst:819
+#: c-api/init.rst:903
msgid ""
"This data structure represents the state shared by a number of cooperating "
"threads. Threads belonging to the same interpreter share their module "
@@ -988,7 +1053,7 @@ msgid ""
"in this structure."
msgstr ""
-#: c-api/init.rst:824
+#: c-api/init.rst:908
msgid ""
"Threads belonging to different interpreters initially share nothing, except "
"process state like available memory, open file descriptors and such. The "
@@ -996,49 +1061,49 @@ msgid ""
"which interpreter they belong."
msgstr ""
-#: c-api/init.rst:832
+#: c-api/init.rst:916
msgid ""
"This data structure represents the state of a single thread. The only "
"public data member is :attr:`interp` (:c:type:`PyInterpreterState *`), which "
"points to this thread's interpreter state."
msgstr ""
-#: c-api/init.rst:845
+#: c-api/init.rst:929
msgid "Deprecated function which does nothing."
msgstr ""
-#: c-api/init.rst:847
+#: c-api/init.rst:931
msgid ""
"In Python 3.6 and older, this function created the GIL if it didn't exist."
msgstr ""
-#: c-api/init.rst:849
+#: c-api/init.rst:933
msgid "The function now does nothing."
msgstr ""
-#: c-api/init.rst:852
+#: c-api/init.rst:936
msgid ""
"This function is now called by :c:func:`Py_Initialize()`, so you don't have "
"to call it yourself anymore."
msgstr ""
-#: c-api/init.rst:856
+#: c-api/init.rst:940
msgid ""
"This function cannot be called before :c:func:`Py_Initialize()` anymore."
msgstr ""
-#: c-api/init.rst:866
+#: c-api/init.rst:950
msgid ""
"Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. "
"This function can be called without holding the GIL, and therefore can be "
"used to avoid calls to the locking API when running single-threaded."
msgstr ""
-#: c-api/init.rst:870
+#: c-api/init.rst:954
msgid "The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`."
msgstr ""
-#: c-api/init.rst:878
+#: c-api/init.rst:962
msgid ""
"Release the global interpreter lock (if it has been created) and reset the "
"thread state to ``NULL``, returning the previous thread state (which is not "
@@ -1046,7 +1111,7 @@ msgid ""
"acquired it."
msgstr ""
-#: c-api/init.rst:886
+#: c-api/init.rst:970
msgid ""
"Acquire the global interpreter lock (if it has been created) and set the "
"thread state to *tstate*, which must not be ``NULL``. If the lock has been "
@@ -1054,7 +1119,7 @@ msgid ""
"ensues."
msgstr ""
-#: c-api/init.rst:938 c-api/init.rst:1235
+#: c-api/init.rst:1022 c-api/init.rst:1342
msgid ""
"Calling this function from a thread when the runtime is finalizing will "
"terminate the thread, even if the thread was not created by Python. You can "
@@ -1063,27 +1128,27 @@ msgid ""
"avoid unwanted termination."
msgstr ""
-#: c-api/init.rst:900
+#: c-api/init.rst:984
msgid ""
"Return the current thread state. The global interpreter lock must be held. "
"When the current thread state is ``NULL``, this issues a fatal error (so "
"that the caller needn't check for ``NULL``)."
msgstr ""
-#: c-api/init.rst:907
+#: c-api/init.rst:991
msgid ""
"Swap the current thread state with the thread state given by the argument "
"*tstate*, which may be ``NULL``. The global interpreter lock must be held "
"and is not released."
msgstr ""
-#: c-api/init.rst:912
+#: c-api/init.rst:996
msgid ""
"The following functions use thread-local storage, and are not compatible "
"with sub-interpreters:"
msgstr ""
-#: c-api/init.rst:917
+#: c-api/init.rst:1001
msgid ""
"Ensure that the current thread is ready to call the Python C API regardless "
"of the current state of Python, or of the global interpreter lock. This may "
@@ -1096,7 +1161,7 @@ msgid ""
"is acceptable."
msgstr ""
-#: c-api/init.rst:927
+#: c-api/init.rst:1011
msgid ""
"The return value is an opaque \"handle\" to the thread state when :c:func:"
"`PyGILState_Ensure` was called, and must be passed to :c:func:"
@@ -1106,13 +1171,13 @@ msgid ""
"func:`PyGILState_Release`."
msgstr ""
-#: c-api/init.rst:934
+#: c-api/init.rst:1018
msgid ""
"When the function returns, the current thread will hold the GIL and be able "
"to call arbitrary Python code. Failure is a fatal error."
msgstr ""
-#: c-api/init.rst:946
+#: c-api/init.rst:1030
msgid ""
"Release any resources previously acquired. After this call, Python's state "
"will be the same as it was prior to the corresponding :c:func:"
@@ -1120,13 +1185,13 @@ msgid ""
"caller, hence the use of the GILState API)."
msgstr ""
-#: c-api/init.rst:951
+#: c-api/init.rst:1035
msgid ""
"Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:"
"func:`PyGILState_Release` on the same thread."
msgstr ""
-#: c-api/init.rst:957
+#: c-api/init.rst:1041
msgid ""
"Get the current thread state for this thread. May return ``NULL`` if no "
"GILState API has been used on the current thread. Note that the main thread "
@@ -1134,7 +1199,7 @@ msgid ""
"made on the main thread. This is mainly a helper/diagnostic function."
msgstr ""
-#: c-api/init.rst:965
+#: c-api/init.rst:1049
msgid ""
"Return ``1`` if the current thread is holding the GIL and ``0`` otherwise. "
"This function can be called from any thread at any time. Only if it has had "
@@ -1145,13 +1210,13 @@ msgid ""
"otherwise behave differently."
msgstr ""
-#: c-api/init.rst:977
+#: c-api/init.rst:1061
msgid ""
"The following macros are normally used without a trailing semicolon; look "
"for example usage in the Python source distribution."
msgstr ""
-#: c-api/init.rst:983
+#: c-api/init.rst:1067
msgid ""
"This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();"
"``. Note that it contains an opening brace; it must be matched with a "
@@ -1159,7 +1224,7 @@ msgid ""
"discussion of this macro."
msgstr ""
-#: c-api/init.rst:991
+#: c-api/init.rst:1075
msgid ""
"This macro expands to ``PyEval_RestoreThread(_save); }``. Note that it "
"contains a closing brace; it must be matched with an earlier :c:macro:"
@@ -1167,92 +1232,92 @@ msgid ""
"macro."
msgstr ""
-#: c-api/init.rst:999
+#: c-api/init.rst:1083
msgid ""
"This macro expands to ``PyEval_RestoreThread(_save);``: it is equivalent to :"
"c:macro:`Py_END_ALLOW_THREADS` without the closing brace."
msgstr ""
-#: c-api/init.rst:1005
+#: c-api/init.rst:1089
msgid ""
"This macro expands to ``_save = PyEval_SaveThread();``: it is equivalent to :"
"c:macro:`Py_BEGIN_ALLOW_THREADS` without the opening brace and variable "
"declaration."
msgstr ""
-#: c-api/init.rst:1011
+#: c-api/init.rst:1095
#, fuzzy
msgid "Low-level API"
msgstr "Bibliothèques de bas-niveau"
-#: c-api/init.rst:1013
+#: c-api/init.rst:1097
msgid ""
"All of the following functions must be called after :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/init.rst:1015
+#: c-api/init.rst:1099
msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`."
msgstr ""
-#: c-api/init.rst:1021
+#: c-api/init.rst:1105
msgid ""
"Create a new interpreter state object. The global interpreter lock need not "
"be held, but may be held if it is necessary to serialize calls to this "
"function."
msgstr ""
-#: c-api/init.rst:1025
+#: c-api/init.rst:1109
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"PyInterpreterState_New`` with no arguments."
msgstr ""
-#: c-api/init.rst:1030
+#: c-api/init.rst:1114
msgid ""
"Reset all information in an interpreter state object. The global "
"interpreter lock must be held."
msgstr ""
-#: c-api/init.rst:1033
+#: c-api/init.rst:1117
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"PyInterpreterState_Clear`` with no arguments."
msgstr ""
-#: c-api/init.rst:1038
+#: c-api/init.rst:1122
msgid ""
"Destroy an interpreter state object. The global interpreter lock need not "
"be held. The interpreter state must have been reset with a previous call "
"to :c:func:`PyInterpreterState_Clear`."
msgstr ""
-#: c-api/init.rst:1045
+#: c-api/init.rst:1129
msgid ""
"Create a new thread state object belonging to the given interpreter object. "
"The global interpreter lock need not be held, but may be held if it is "
"necessary to serialize calls to this function."
msgstr ""
-#: c-api/init.rst:1052
+#: c-api/init.rst:1136
msgid ""
"Reset all information in a thread state object. The global interpreter lock "
"must be held."
msgstr ""
-#: c-api/init.rst:1055
+#: c-api/init.rst:1139
msgid ""
"This function now calls the :c:member:`PyThreadState.on_delete` callback. "
"Previously, that happened in :c:func:`PyThreadState_Delete`."
msgstr ""
-#: c-api/init.rst:1062
+#: c-api/init.rst:1146
msgid ""
"Destroy a thread state object. The global interpreter lock need not be "
"held. The thread state must have been reset with a previous call to :c:func:"
"`PyThreadState_Clear`."
msgstr ""
-#: c-api/init.rst:1069
+#: c-api/init.rst:1153
msgid ""
"Destroy the current thread state and release the global interpreter lock. "
"Like :c:func:`PyThreadState_Delete`, the global interpreter lock need not be "
@@ -1260,93 +1325,118 @@ msgid ""
"`PyThreadState_Clear`."
msgstr ""
-#: c-api/init.rst:1077
+#: c-api/init.rst:1161
msgid "Get the current frame of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1079
+#: c-api/init.rst:1163
msgid ""
-"Return a strong reference. Return ``NULL`` if no frame is currently "
+"Return a :term:`strong reference`. Return ``NULL`` if no frame is currently "
"executing."
msgstr ""
-#: c-api/init.rst:1082
+#: c-api/init.rst:1166
msgid "See also :c:func:`PyEval_GetFrame`."
msgstr ""
-#: c-api/init.rst:1093 c-api/init.rst:1102
+#: c-api/init.rst:1177 c-api/init.rst:1186
msgid "*tstate* must not be ``NULL``."
msgstr ""
-#: c-api/init.rst:1091
+#: c-api/init.rst:1175
msgid ""
"Get the unique thread state identifier of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1100
+#: c-api/init.rst:1184
msgid "Get the interpreter of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1109
+#: c-api/init.rst:1193
+msgid "Suspend tracing and profiling in the Python thread state *tstate*."
+msgstr ""
+
+#: c-api/init.rst:1195
+msgid "Resume them using the :c:func:`PyThreadState_LeaveTracing` function."
+msgstr ""
+
+#: c-api/init.rst:1202
+msgid ""
+"Resume tracing and profiling in the Python thread state *tstate* suspended "
+"by the :c:func:`PyThreadState_EnterTracing` function."
+msgstr ""
+
+#: c-api/init.rst:1205
+msgid ""
+"See also :c:func:`PyEval_SetTrace` and :c:func:`PyEval_SetProfile` functions."
+msgstr ""
+
+#: c-api/init.rst:1213
msgid "Get the current interpreter."
msgstr ""
-#: c-api/init.rst:1111
+#: c-api/init.rst:1215
msgid ""
"Issue a fatal error if there no current Python thread state or no current "
"interpreter. It cannot return NULL."
msgstr ""
-#: c-api/init.rst:1124
+#: c-api/init.rst:1228
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/init.rst:1121
+#: c-api/init.rst:1225
msgid ""
"Return the interpreter's unique ID. If there was any error in doing so then "
"``-1`` is returned and an error is set."
msgstr ""
-#: c-api/init.rst:1131
+#: c-api/init.rst:1235
msgid ""
"Return a dictionary in which interpreter-specific data may be stored. If "
"this function returns ``NULL`` then no exception has been raised and the "
"caller should assume no interpreter-specific dict is available."
msgstr ""
-#: c-api/init.rst:1135
+#: c-api/init.rst:1239
msgid ""
"This is not a replacement for :c:func:`PyModule_GetState()`, which "
"extensions should use to store interpreter-specific state information."
msgstr ""
-#: c-api/init.rst:1142
+#: c-api/init.rst:1246
msgid "Type of a frame evaluation function."
msgstr ""
-#: c-api/init.rst:1144
+#: c-api/init.rst:1248
msgid ""
"The *throwflag* parameter is used by the ``throw()`` method of generators: "
"if non-zero, handle the current exception."
msgstr ""
-#: c-api/init.rst:1147
+#: c-api/init.rst:1251
msgid "The function now takes a *tstate* parameter."
msgstr ""
-#: c-api/init.rst:1152
+#: c-api/init.rst:1254
+msgid ""
+"The *frame* parameter changed from ``PyFrameObject*`` to "
+"``_PyInterpreterFrame*``."
+msgstr ""
+
+#: c-api/init.rst:1259
msgid "Get the frame evaluation function."
msgstr ""
-#: c-api/init.rst:1162
+#: c-api/init.rst:1269
msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"."
msgstr ""
-#: c-api/init.rst:1160
+#: c-api/init.rst:1267
msgid "Set the frame evaluation function."
msgstr ""
-#: c-api/init.rst:1169
+#: c-api/init.rst:1276
msgid ""
"Return a dictionary in which extensions can store thread-specific state "
"information. Each extension should use a unique key to use to store state "
@@ -1355,7 +1445,7 @@ msgid ""
"raised and the caller should assume no current thread state is available."
msgstr ""
-#: c-api/init.rst:1178
+#: c-api/init.rst:1285
msgid ""
"Asynchronously raise an exception in a thread. The *id* argument is the "
"thread id of the target thread; *exc* is the exception object to be raised. "
@@ -1367,33 +1457,33 @@ msgid ""
"raises no exceptions."
msgstr ""
-#: c-api/init.rst:1186
+#: c-api/init.rst:1293
msgid ""
"The type of the *id* parameter changed from :c:type:`long` to :c:type:"
"`unsigned long`."
msgstr ""
-#: c-api/init.rst:1192
+#: c-api/init.rst:1299
msgid ""
"Acquire the global interpreter lock and set the current thread state to "
"*tstate*, which must not be ``NULL``. The lock must have been created "
"earlier. If this thread already has the lock, deadlock ensues."
msgstr ""
-#: c-api/init.rst:1241
+#: c-api/init.rst:1348
msgid ""
"Updated to be consistent with :c:func:`PyEval_RestoreThread`, :c:func:"
"`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`, and terminate the "
"current thread if called while the interpreter is finalizing."
msgstr ""
-#: c-api/init.rst:1208
+#: c-api/init.rst:1315
msgid ""
":c:func:`PyEval_RestoreThread` is a higher-level function which is always "
"available (even when threads have not been initialized)."
msgstr ""
-#: c-api/init.rst:1214
+#: c-api/init.rst:1321
msgid ""
"Reset the current thread state to ``NULL`` and release the global "
"interpreter lock. The lock must have been created earlier and must be held "
@@ -1402,41 +1492,41 @@ msgid ""
"isn't, a fatal error is reported."
msgstr ""
-#: c-api/init.rst:1220
+#: c-api/init.rst:1327
msgid ""
":c:func:`PyEval_SaveThread` is a higher-level function which is always "
"available (even when threads have not been initialized)."
msgstr ""
-#: c-api/init.rst:1226
+#: c-api/init.rst:1333
msgid ""
"Acquire the global interpreter lock. The lock must have been created "
"earlier. If this thread already has the lock, a deadlock ensues."
msgstr ""
-#: c-api/init.rst:1229
+#: c-api/init.rst:1336
msgid ""
"This function does not update the current thread state. Please use :c:func:"
"`PyEval_RestoreThread` or :c:func:`PyEval_AcquireThread` instead."
msgstr ""
-#: c-api/init.rst:1249
+#: c-api/init.rst:1356
msgid ""
"Release the global interpreter lock. The lock must have been created "
"earlier."
msgstr ""
-#: c-api/init.rst:1251
+#: c-api/init.rst:1358
msgid ""
"This function does not update the current thread state. Please use :c:func:"
"`PyEval_SaveThread` or :c:func:`PyEval_ReleaseThread` instead."
msgstr ""
-#: c-api/init.rst:1260
+#: c-api/init.rst:1367
msgid "Sub-interpreter support"
msgstr ""
-#: c-api/init.rst:1262
+#: c-api/init.rst:1369
msgid ""
"While in most uses, you will only embed a single Python interpreter, there "
"are cases where you need to create several independent interpreters in the "
@@ -1444,7 +1534,7 @@ msgid ""
"to do that."
msgstr ""
-#: c-api/init.rst:1267
+#: c-api/init.rst:1374
msgid ""
"The \"main\" interpreter is the first one created when the runtime "
"initializes. It is usually the only Python interpreter in a process. Unlike "
@@ -1455,14 +1545,14 @@ msgid ""
"returns a pointer to its state."
msgstr ""
-#: c-api/init.rst:1274
+#: c-api/init.rst:1381
msgid ""
"You can switch between sub-interpreters using the :c:func:"
"`PyThreadState_Swap` function. You can create and destroy them using the "
"following functions:"
msgstr ""
-#: c-api/init.rst:1288
+#: c-api/init.rst:1395
msgid ""
"Create a new sub-interpreter. This is an (almost) totally separate "
"environment for the execution of Python code. In particular, the new "
@@ -1475,7 +1565,7 @@ msgid ""
"underlying file descriptors)."
msgstr ""
-#: c-api/init.rst:1298
+#: c-api/init.rst:1405
msgid ""
"The return value points to the first thread state created in the new sub-"
"interpreter. This thread state is made in the current thread state. Note "
@@ -1489,11 +1579,11 @@ msgid ""
"state on entry.)"
msgstr ""
-#: c-api/init.rst:1313
+#: c-api/init.rst:1420
msgid "Extension modules are shared between (sub-)interpreters as follows:"
msgstr ""
-#: c-api/init.rst:1315
+#: c-api/init.rst:1422
msgid ""
"For modules using multi-phase initialization, e.g. :c:func:"
"`PyModule_FromDefAndSpec`, a separate module object is created and "
@@ -1501,7 +1591,7 @@ msgid ""
"are shared between these module objects."
msgstr ""
-#: c-api/init.rst:1321
+#: c-api/init.rst:1428
msgid ""
"For modules using single-phase initialization, e.g. :c:func:"
"`PyModule_Create`, the first time a particular extension is imported, it is "
@@ -1513,7 +1603,7 @@ msgid ""
"might cause unwanted behavior (see `Bugs and caveats`_ below)."
msgstr ""
-#: c-api/init.rst:1332
+#: c-api/init.rst:1439
msgid ""
"Note that this is different from what happens when an extension is imported "
"after the interpreter has been completely re-initialized by calling :c:func:"
@@ -1523,7 +1613,7 @@ msgid ""
"shared between these modules."
msgstr ""
-#: c-api/init.rst:1346
+#: c-api/init.rst:1453
msgid ""
"Destroy the (sub-)interpreter represented by the given thread state. The "
"given thread state must be the current thread state. See the discussion of "
@@ -1535,11 +1625,11 @@ msgid ""
"point."
msgstr ""
-#: c-api/init.rst:1356
+#: c-api/init.rst:1463
msgid "Bugs and caveats"
msgstr ""
-#: c-api/init.rst:1358
+#: c-api/init.rst:1465
msgid ""
"Because sub-interpreters (and the main interpreter) are part of the same "
"process, the insulation between them isn't perfect --- for example, using "
@@ -1552,7 +1642,7 @@ msgid ""
"should be avoided if possible."
msgstr ""
-#: c-api/init.rst:1368
+#: c-api/init.rst:1475
msgid ""
"Special care should be taken to avoid sharing user-defined functions, "
"methods, instances or classes between sub-interpreters, since import "
@@ -1561,7 +1651,7 @@ msgid ""
"objects from which the above are reachable."
msgstr ""
-#: c-api/init.rst:1374
+#: c-api/init.rst:1481
msgid ""
"Also note that combining this functionality with :c:func:`PyGILState_\\*` "
"APIs is delicate, because these APIs assume a bijection between Python "
@@ -1573,25 +1663,25 @@ msgid ""
"created threads will probably be broken when using sub-interpreters."
msgstr ""
-#: c-api/init.rst:1385
+#: c-api/init.rst:1492
msgid "Asynchronous Notifications"
msgstr ""
-#: c-api/init.rst:1387
+#: c-api/init.rst:1494
msgid ""
"A mechanism is provided to make asynchronous notifications to the main "
"interpreter thread. These notifications take the form of a function pointer "
"and a void pointer argument."
msgstr ""
-#: c-api/init.rst:1396
+#: c-api/init.rst:1503
msgid ""
"Schedule a function to be called from the main interpreter thread. On "
"success, ``0`` is returned and *func* is queued for being called in the main "
"thread. On failure, ``-1`` is returned without setting any exception."
msgstr ""
-#: c-api/init.rst:1400
+#: c-api/init.rst:1507
msgid ""
"When successfully queued, *func* will be *eventually* called from the main "
"interpreter thread with the argument *arg*. It will be called "
@@ -1599,17 +1689,17 @@ msgid ""
"these conditions met:"
msgstr ""
-#: c-api/init.rst:1405
+#: c-api/init.rst:1512
msgid "on a :term:`bytecode` boundary;"
msgstr ""
-#: c-api/init.rst:1406
+#: c-api/init.rst:1513
msgid ""
"with the main thread holding the :term:`global interpreter lock` (*func* can "
"therefore use the full C API)."
msgstr ""
-#: c-api/init.rst:1409
+#: c-api/init.rst:1516
msgid ""
"*func* must return ``0`` on success, or ``-1`` on failure with an exception "
"set. *func* won't be interrupted to perform another asynchronous "
@@ -1617,20 +1707,20 @@ msgid ""
"if the global interpreter lock is released."
msgstr ""
-#: c-api/init.rst:1414
+#: c-api/init.rst:1521
msgid ""
"This function doesn't need a current thread state to run, and it doesn't "
"need the global interpreter lock."
msgstr ""
-#: c-api/init.rst:1417
+#: c-api/init.rst:1524
msgid ""
"To call this function in a subinterpreter, the caller must hold the GIL. "
"Otherwise, the function *func* can be scheduled to be called from the wrong "
"interpreter."
msgstr ""
-#: c-api/init.rst:1422
+#: c-api/init.rst:1529
msgid ""
"This is a low-level function, only useful for very special cases. There is "
"no guarantee that *func* will be called as quick as possible. If the main "
@@ -1640,7 +1730,7 @@ msgid ""
"`PyGILState API`."
msgstr ""
-#: c-api/init.rst:1429
+#: c-api/init.rst:1536
msgid ""
"If this function is called in a subinterpreter, the function *func* is now "
"scheduled to be called from the subinterpreter, rather than being called "
@@ -1648,18 +1738,18 @@ msgid ""
"scheduled calls."
msgstr ""
-#: c-api/init.rst:1440
+#: c-api/init.rst:1547
msgid "Profiling and Tracing"
msgstr ""
-#: c-api/init.rst:1445
+#: c-api/init.rst:1552
msgid ""
"The Python interpreter provides some low-level support for attaching "
"profiling and execution tracing facilities. These are used for profiling, "
"debugging, and coverage analysis tools."
msgstr ""
-#: c-api/init.rst:1449
+#: c-api/init.rst:1556
msgid ""
"This C interface allows the profiling or tracing code to avoid the overhead "
"of calling through Python-level callable objects, making a direct C function "
@@ -1669,7 +1759,7 @@ msgid ""
"reported to the Python-level trace functions in previous versions."
msgstr ""
-#: c-api/init.rst:1459
+#: c-api/init.rst:1566
msgid ""
"The type of the trace function registered using :c:func:`PyEval_SetProfile` "
"and :c:func:`PyEval_SetTrace`. The first parameter is the object passed to "
@@ -1680,64 +1770,64 @@ msgid ""
"or :const:`PyTrace_OPCODE`, and *arg* depends on the value of *what*:"
msgstr ""
-#: c-api/init.rst:1468
+#: c-api/init.rst:1575
msgid "Value of *what*"
msgstr ""
-#: c-api/init.rst:1468
+#: c-api/init.rst:1575
msgid "Meaning of *arg*"
msgstr ""
-#: c-api/init.rst:1470
+#: c-api/init.rst:1577
msgid ":const:`PyTrace_CALL`"
-msgstr ""
+msgstr ":const:`PyTrace_CALL`"
-#: c-api/init.rst:1475 c-api/init.rst:1486
+#: c-api/init.rst:1582 c-api/init.rst:1593
msgid "Always :c:data:`Py_None`."
msgstr ""
-#: c-api/init.rst:1472
+#: c-api/init.rst:1579
msgid ":const:`PyTrace_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_EXCEPTION`"
-#: c-api/init.rst:1472
+#: c-api/init.rst:1579
msgid "Exception information as returned by :func:`sys.exc_info`."
msgstr ""
-#: c-api/init.rst:1475
+#: c-api/init.rst:1582
msgid ":const:`PyTrace_LINE`"
-msgstr ""
+msgstr ":const:`PyTrace_LINE`"
-#: c-api/init.rst:1477
+#: c-api/init.rst:1584
msgid ":const:`PyTrace_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_RETURN`"
-#: c-api/init.rst:1477
+#: c-api/init.rst:1584
msgid ""
"Value being returned to the caller, or ``NULL`` if caused by an exception."
msgstr ""
-#: c-api/init.rst:1480
+#: c-api/init.rst:1587
msgid ":const:`PyTrace_C_CALL`"
-msgstr ""
+msgstr ":const:`PyTrace_C_CALL`"
-#: c-api/init.rst:1482 c-api/init.rst:1484
+#: c-api/init.rst:1589 c-api/init.rst:1591
msgid "Function object being called."
msgstr ""
-#: c-api/init.rst:1482
+#: c-api/init.rst:1589
msgid ":const:`PyTrace_C_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_C_EXCEPTION`"
-#: c-api/init.rst:1484
+#: c-api/init.rst:1591
msgid ":const:`PyTrace_C_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_C_RETURN`"
-#: c-api/init.rst:1486
+#: c-api/init.rst:1593
msgid ":const:`PyTrace_OPCODE`"
-msgstr ""
+msgstr ":const:`PyTrace_OPCODE`"
-#: c-api/init.rst:1491
+#: c-api/init.rst:1598
msgid ""
"The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
"a new call to a function or method is being reported, or a new entry into a "
@@ -1746,7 +1836,7 @@ msgid ""
"the corresponding frame."
msgstr ""
-#: c-api/init.rst:1500
+#: c-api/init.rst:1607
msgid ""
"The value of the *what* parameter to a :c:type:`Py_tracefunc` function when "
"an exception has been raised. The callback function is called with this "
@@ -1758,7 +1848,7 @@ msgid ""
"profiler."
msgstr ""
-#: c-api/init.rst:1511
+#: c-api/init.rst:1618
msgid ""
"The value passed as the *what* parameter to a :c:type:`Py_tracefunc` "
"function (but not a profiling function) when a line-number event is being "
@@ -1766,31 +1856,31 @@ msgid ""
"*0* on that frame."
msgstr ""
-#: c-api/init.rst:1518
+#: c-api/init.rst:1625
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a call is about to return."
msgstr ""
-#: c-api/init.rst:1524
+#: c-api/init.rst:1631
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function is about to be called."
msgstr ""
-#: c-api/init.rst:1530
+#: c-api/init.rst:1637
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function has raised an exception."
msgstr ""
-#: c-api/init.rst:1536
+#: c-api/init.rst:1643
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
"a C function has returned."
msgstr ""
-#: c-api/init.rst:1542
+#: c-api/init.rst:1649
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but "
"not profiling functions) when a new opcode is about to be executed. This "
@@ -1798,7 +1888,7 @@ msgid ""
"attr:`f_trace_opcodes` to *1* on the frame."
msgstr ""
-#: c-api/init.rst:1550
+#: c-api/init.rst:1657
msgid ""
"Set the profiler function to *func*. The *obj* parameter is passed to the "
"function as its first parameter, and may be any Python object, or ``NULL``. "
@@ -1808,11 +1898,15 @@ msgid ""
"`PyTrace_LINE` :const:`PyTrace_OPCODE` and :const:`PyTrace_EXCEPTION`."
msgstr ""
-#: c-api/init.rst:1569
+#: c-api/init.rst:1664
+msgid "See also the :func:`sys.setprofile` function."
+msgstr ""
+
+#: c-api/init.rst:1680
msgid "The caller must hold the :term:`GIL`."
msgstr ""
-#: c-api/init.rst:1562
+#: c-api/init.rst:1671
msgid ""
"Set the tracing function to *func*. This is similar to :c:func:"
"`PyEval_SetProfile`, except the tracing function does receive line-number "
@@ -1823,48 +1917,52 @@ msgid ""
"parameter."
msgstr ""
-#: c-api/init.rst:1575
+#: c-api/init.rst:1678
+msgid "See also the :func:`sys.settrace` function."
+msgstr ""
+
+#: c-api/init.rst:1686
msgid "Advanced Debugger Support"
msgstr "Support avancé du débogueur"
-#: c-api/init.rst:1580
+#: c-api/init.rst:1691
msgid ""
"These functions are only intended to be used by advanced debugging tools."
msgstr ""
-#: c-api/init.rst:1585
+#: c-api/init.rst:1696
msgid ""
"Return the interpreter state object at the head of the list of all such "
"objects."
msgstr ""
-#: c-api/init.rst:1590
+#: c-api/init.rst:1701
msgid "Return the main interpreter state object."
msgstr ""
-#: c-api/init.rst:1595
+#: c-api/init.rst:1706
msgid ""
"Return the next interpreter state object after *interp* from the list of all "
"such objects."
msgstr ""
-#: c-api/init.rst:1601
+#: c-api/init.rst:1712
msgid ""
"Return the pointer to the first :c:type:`PyThreadState` object in the list "
"of threads associated with the interpreter *interp*."
msgstr ""
-#: c-api/init.rst:1607
+#: c-api/init.rst:1718
msgid ""
"Return the next thread state object after *tstate* from the list of all such "
"objects belonging to the same :c:type:`PyInterpreterState` object."
msgstr ""
-#: c-api/init.rst:1614
+#: c-api/init.rst:1725
msgid "Thread Local Storage Support"
msgstr ""
-#: c-api/init.rst:1618
+#: c-api/init.rst:1729
msgid ""
"The Python interpreter provides low-level support for thread-local storage "
"(TLS) which wraps the underlying native TLS implementation to support the "
@@ -1874,19 +1972,19 @@ msgid ""
"thread."
msgstr ""
-#: c-api/init.rst:1625
+#: c-api/init.rst:1736
msgid ""
"The GIL does *not* need to be held when calling these functions; they supply "
"their own locking."
msgstr ""
-#: c-api/init.rst:1628
+#: c-api/init.rst:1739
msgid ""
"Note that :file:`Python.h` does not include the declaration of the TLS APIs, "
"you need to include :file:`pythread.h` to use thread-local storage."
msgstr ""
-#: c-api/init.rst:1632
+#: c-api/init.rst:1743
msgid ""
"None of these API functions handle memory management on behalf of the :c:"
"type:`void*` values. You need to allocate and deallocate them yourself. If "
@@ -1894,22 +1992,22 @@ msgid ""
"don't do refcount operations on them either."
msgstr ""
-#: c-api/init.rst:1640
+#: c-api/init.rst:1751
msgid "Thread Specific Storage (TSS) API"
msgstr ""
-#: c-api/init.rst:1642
+#: c-api/init.rst:1753
msgid ""
"TSS API is introduced to supersede the use of the existing TLS API within "
"the CPython interpreter. This API uses a new type :c:type:`Py_tss_t` "
"instead of :c:type:`int` to represent thread keys."
msgstr ""
-#: c-api/init.rst:1648
+#: c-api/init.rst:1759
msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)"
msgstr ""
-#: c-api/init.rst:1653
+#: c-api/init.rst:1764
msgid ""
"This data structure represents the state of a thread key, the definition of "
"which may depend on the underlying TLS implementation, and it has an "
@@ -1917,52 +2015,52 @@ msgid ""
"public members in this structure."
msgstr ""
-#: c-api/init.rst:1658
+#: c-api/init.rst:1769
msgid ""
"When :ref:`Py_LIMITED_API ` is not defined, static allocation of "
"this type by :c:macro:`Py_tss_NEEDS_INIT` is allowed."
msgstr ""
-#: c-api/init.rst:1664
+#: c-api/init.rst:1775
msgid ""
"This macro expands to the initializer for :c:type:`Py_tss_t` variables. Note "
"that this macro won't be defined with :ref:`Py_LIMITED_API `."
msgstr ""
-#: c-api/init.rst:1669
+#: c-api/init.rst:1780
msgid "Dynamic Allocation"
msgstr ""
-#: c-api/init.rst:1671
+#: c-api/init.rst:1782
msgid ""
"Dynamic allocation of the :c:type:`Py_tss_t`, required in extension modules "
"built with :ref:`Py_LIMITED_API `, where static allocation of this "
"type is not possible due to its implementation being opaque at build time."
msgstr ""
-#: c-api/init.rst:1678
+#: c-api/init.rst:1789
msgid ""
"Return a value which is the same state as a value initialized with :c:macro:"
"`Py_tss_NEEDS_INIT`, or ``NULL`` in the case of dynamic allocation failure."
msgstr ""
-#: c-api/init.rst:1685
+#: c-api/init.rst:1796
msgid ""
"Free the given *key* allocated by :c:func:`PyThread_tss_alloc`, after first "
"calling :c:func:`PyThread_tss_delete` to ensure any associated thread locals "
"have been unassigned. This is a no-op if the *key* argument is `NULL`."
msgstr ""
-#: c-api/init.rst:1691
+#: c-api/init.rst:1802
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
+#: c-api/init.rst:1807
msgid "Methods"
msgstr "Méthodes"
-#: c-api/init.rst:1698
+#: c-api/init.rst:1809
msgid ""
"The parameter *key* of these functions must not be ``NULL``. Moreover, the "
"behaviors of :c:func:`PyThread_tss_set` and :c:func:`PyThread_tss_get` are "
@@ -1970,13 +2068,13 @@ msgid ""
"func:`PyThread_tss_create`."
msgstr ""
-#: c-api/init.rst:1706
+#: c-api/init.rst:1817
msgid ""
"Return a non-zero value if the given :c:type:`Py_tss_t` has been initialized "
"by :c:func:`PyThread_tss_create`."
msgstr ""
-#: c-api/init.rst:1712
+#: c-api/init.rst:1823
msgid ""
"Return a zero value on successful initialization of a TSS key. The behavior "
"is undefined if the value pointed to by the *key* argument is not "
@@ -1985,7 +2083,7 @@ msgid ""
"no-op and immediately returns success."
msgstr ""
-#: c-api/init.rst:1721
+#: c-api/init.rst:1832
msgid ""
"Destroy a TSS key to forget the values associated with the key across all "
"threads, and change the key's initialization state to uninitialized. A "
@@ -1994,31 +2092,31 @@ msgid ""
"key -- calling it on an already destroyed key is a no-op."
msgstr ""
-#: c-api/init.rst:1730
+#: c-api/init.rst:1841
msgid ""
"Return a zero value to indicate successfully associating a :c:type:`void*` "
"value with a TSS key in the current thread. Each thread has a distinct "
"mapping of the key to a :c:type:`void*` value."
msgstr ""
-#: c-api/init.rst:1737
+#: c-api/init.rst:1848
msgid ""
"Return the :c:type:`void*` value associated with a TSS key in the current "
"thread. This returns ``NULL`` if no value is associated with the key in the "
"current thread."
msgstr ""
-#: c-api/init.rst:1745
+#: c-api/init.rst:1856
msgid "Thread Local Storage (TLS) API"
msgstr ""
-#: c-api/init.rst:1747
+#: c-api/init.rst:1858
msgid ""
"This API is superseded by :ref:`Thread Specific Storage (TSS) API `."
msgstr ""
-#: c-api/init.rst:1752
+#: c-api/init.rst:1863
msgid ""
"This version of the API does not support platforms where the native TLS key "
"is defined in a way that cannot be safely cast to ``int``. On such "
@@ -2027,7 +2125,7 @@ msgid ""
"platforms."
msgstr ""
-#: c-api/init.rst:1757
+#: c-api/init.rst:1868
msgid ""
"Due to the compatibility problem noted above, this version of the API should "
"not be used in new code."
diff --git a/c-api/init_config.po b/c-api/init_config.po
index a54b179975..6b95f368fe 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2019-09-04 11:42+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -19,1185 +19,1822 @@ msgid "Python Initialization Configuration"
msgstr ""
#: c-api/init_config.rst:11
-msgid "Structures:"
+msgid ""
+"Python can be initialized with :c:func:`Py_InitializeFromConfig` and the :c:"
+"type:`PyConfig` structure. It can be preinitialized with :c:func:"
+"`Py_PreInitialize` and the :c:type:`PyPreConfig` structure."
msgstr ""
-#: c-api/init_config.rst:13
-msgid ":c:type:`PyConfig`"
+#: c-api/init_config.rst:15
+msgid "There are two kinds of configuration:"
msgstr ""
-#: c-api/init_config.rst:14
-msgid ":c:type:`PyPreConfig`"
+#: c-api/init_config.rst:17
+msgid ""
+"The :ref:`Python Configuration ` can be used to build a "
+"customized Python which behaves as the regular Python. For example, "
+"environment variables and command line arguments are used to configure "
+"Python."
msgstr ""
-#: c-api/init_config.rst:15
-msgid ":c:type:`PyStatus`"
+#: c-api/init_config.rst:22
+msgid ""
+"The :ref:`Isolated Configuration ` can be used to embed "
+"Python into an application. It isolates Python from the system. For example, "
+"environment variables are ignored, the LC_CTYPE locale is left unchanged and "
+"no signal handler is registered."
msgstr ""
-#: c-api/init_config.rst:16
-msgid ":c:type:`PyWideStringList`"
+#: c-api/init_config.rst:27
+msgid ""
+"The :c:func:`Py_RunMain` function can be used to write a customized Python "
+"program."
msgstr ""
-#: c-api/init_config.rst:18
+#: c-api/init_config.rst:30
+msgid ""
+"See also :ref:`Initialization, Finalization, and Threads `."
+msgstr ""
+
+#: c-api/init_config.rst:33
+msgid ":pep:`587` \"Python Initialization Configuration\"."
+msgstr ""
+
+#: c-api/init_config.rst:37
#, fuzzy
-msgid "Functions:"
-msgstr "Fonctions"
+msgid "Example"
+msgstr "Exemple ::"
-#: c-api/init_config.rst:20
-msgid ":c:func:`PyConfig_Clear`"
+#: c-api/init_config.rst:39
+msgid "Example of customized Python always running in isolated mode::"
msgstr ""
-#: c-api/init_config.rst:21
-msgid ":c:func:`PyConfig_InitIsolatedConfig`"
+#: c-api/init_config.rst:76
+msgid "PyWideStringList"
msgstr ""
-#: c-api/init_config.rst:22
-msgid ":c:func:`PyConfig_InitPythonConfig`"
+#: c-api/init_config.rst:80
+msgid "List of ``wchar_t*`` strings."
msgstr ""
-#: c-api/init_config.rst:23
-msgid ":c:func:`PyConfig_Read`"
+#: c-api/init_config.rst:82
+msgid ""
+"If *length* is non-zero, *items* must be non-``NULL`` and all strings must "
+"be non-``NULL``."
msgstr ""
-#: c-api/init_config.rst:24
-msgid ":c:func:`PyConfig_SetArgv`"
+#: c-api/init_config.rst:85
+#, fuzzy
+msgid "Methods:"
+msgstr "Méthodes"
+
+#: c-api/init_config.rst:89
+msgid "Append *item* to *list*."
msgstr ""
-#: c-api/init_config.rst:25
-msgid ":c:func:`PyConfig_SetBytesArgv`"
+#: c-api/init_config.rst:102
+msgid "Python must be preinitialized to call this function."
msgstr ""
-#: c-api/init_config.rst:26
-msgid ":c:func:`PyConfig_SetBytesString`"
+#: c-api/init_config.rst:95
+msgid "Insert *item* into *list* at *index*."
msgstr ""
-#: c-api/init_config.rst:27
-msgid ":c:func:`PyConfig_SetString`"
+#: c-api/init_config.rst:97
+msgid ""
+"If *index* is greater than or equal to *list* length, append *item* to "
+"*list*."
msgstr ""
-#: c-api/init_config.rst:28
-msgid ":c:func:`PyConfig_SetWideStringList`"
+#: c-api/init_config.rst:100
+msgid "*index* must be greater than or equal to ``0``."
msgstr ""
-#: c-api/init_config.rst:29
-msgid ":c:func:`PyPreConfig_InitIsolatedConfig`"
+#: c-api/init_config.rst:124 c-api/init_config.rst:530
+msgid "Structure fields:"
msgstr ""
-#: c-api/init_config.rst:30
-msgid ":c:func:`PyPreConfig_InitPythonConfig`"
+#: c-api/init_config.rst:108
+msgid "List length."
msgstr ""
-#: c-api/init_config.rst:31
-msgid ":c:func:`PyStatus_Error`"
+#: c-api/init_config.rst:112
+msgid "List items."
msgstr ""
-#: c-api/init_config.rst:32
-msgid ":c:func:`PyStatus_Exception`"
+#: c-api/init_config.rst:115
+msgid "PyStatus"
msgstr ""
-#: c-api/init_config.rst:33
-msgid ":c:func:`PyStatus_Exit`"
+#: c-api/init_config.rst:119
+msgid ""
+"Structure to store an initialization function status: success, error or exit."
msgstr ""
-#: c-api/init_config.rst:34
-msgid ":c:func:`PyStatus_IsError`"
+#: c-api/init_config.rst:122
+msgid "For an error, it can store the C function name which created the error."
msgstr ""
-#: c-api/init_config.rst:35
-msgid ":c:func:`PyStatus_IsExit`"
+#: c-api/init_config.rst:128
+msgid "Exit code. Argument passed to ``exit()``."
msgstr ""
-#: c-api/init_config.rst:36
-msgid ":c:func:`PyStatus_NoMemory`"
+#: c-api/init_config.rst:132
+msgid "Error message."
msgstr ""
-#: c-api/init_config.rst:37
-msgid ":c:func:`PyStatus_Ok`"
+#: c-api/init_config.rst:136
+msgid "Name of the function which created an error, can be ``NULL``."
msgstr ""
-#: c-api/init_config.rst:38
-msgid ":c:func:`PyWideStringList_Append`"
+#: c-api/init_config.rst:138
+msgid "Functions to create a status:"
msgstr ""
-#: c-api/init_config.rst:39
-msgid ":c:func:`PyWideStringList_Insert`"
+#: c-api/init_config.rst:142
+msgid "Success."
msgstr ""
-#: c-api/init_config.rst:40
-msgid ":c:func:`Py_ExitStatusException`"
+#: c-api/init_config.rst:146
+msgid "Initialization error with a message."
msgstr ""
-#: c-api/init_config.rst:41
-msgid ":c:func:`Py_InitializeFromConfig`"
+#: c-api/init_config.rst:148
+msgid "*err_msg* must not be ``NULL``."
msgstr ""
-#: c-api/init_config.rst:42
-msgid ":c:func:`Py_PreInitialize`"
+#: c-api/init_config.rst:152
+msgid "Memory allocation failure (out of memory)."
msgstr ""
-#: c-api/init_config.rst:43
-msgid ":c:func:`Py_PreInitializeFromArgs`"
+#: c-api/init_config.rst:156
+msgid "Exit Python with the specified exit code."
msgstr ""
-#: c-api/init_config.rst:44
-msgid ":c:func:`Py_PreInitializeFromBytesArgs`"
+#: c-api/init_config.rst:158
+msgid "Functions to handle a status:"
msgstr ""
-#: c-api/init_config.rst:45
-msgid ":c:func:`Py_RunMain`"
+#: c-api/init_config.rst:162
+msgid ""
+"Is the status an error or an exit? If true, the exception must be handled; "
+"by calling :c:func:`Py_ExitStatusException` for example."
msgstr ""
-#: c-api/init_config.rst:46
-msgid ":c:func:`Py_GetArgcArgv`"
+#: c-api/init_config.rst:167
+msgid "Is the result an error?"
msgstr ""
-#: c-api/init_config.rst:48
+#: c-api/init_config.rst:171
+msgid "Is the result an exit?"
+msgstr ""
+
+#: c-api/init_config.rst:175
msgid ""
-"The preconfiguration (``PyPreConfig`` type) is stored in ``_PyRuntime."
-"preconfig`` and the configuration (``PyConfig`` type) is stored in "
-"``PyInterpreterState.config``."
+"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and "
+"exit with a non-zero exit code if *status* is an error. Must only be called "
+"if ``PyStatus_Exception(status)`` is non-zero."
msgstr ""
-#: c-api/init_config.rst:52
+#: c-api/init_config.rst:180
msgid ""
-"See also :ref:`Initialization, Finalization, and Threads `."
+"Internally, Python uses macros which set ``PyStatus.func``, whereas "
+"functions to create a status set ``func`` to ``NULL``."
msgstr ""
-#: c-api/init_config.rst:55
-msgid ":pep:`587` \"Python Initialization Configuration\"."
+#: c-api/init_config.rst:183
+msgid "Example::"
+msgstr "Exemple ::"
+
+#: c-api/init_config.rst:207
+msgid "PyPreConfig"
msgstr ""
-#: c-api/init_config.rst:59
-msgid "PyWideStringList"
+#: c-api/init_config.rst:211
+msgid "Structure used to preinitialize Python."
msgstr ""
-#: c-api/init_config.rst:63
-msgid "List of ``wchar_t*`` strings."
+#: c-api/init_config.rst:213
+msgid "Function to initialize a preconfiguration:"
msgstr ""
-#: c-api/init_config.rst:65
+#: c-api/init_config.rst:217
msgid ""
-"If *length* is non-zero, *items* must be non-``NULL`` and all strings must "
-"be non-``NULL``."
+"Initialize the preconfiguration with :ref:`Python Configuration `."
msgstr ""
-#: c-api/init_config.rst:68
-#, fuzzy
-msgid "Methods:"
-msgstr "Méthodes"
+#: c-api/init_config.rst:222
+msgid ""
+"Initialize the preconfiguration with :ref:`Isolated Configuration `."
+msgstr ""
-#: c-api/init_config.rst:72
-msgid "Append *item* to *list*."
+#: c-api/init_config.rst:229
+msgid "Name of the Python memory allocators:"
msgstr ""
-#: c-api/init_config.rst:85
-msgid "Python must be preinitialized to call this function."
+#: c-api/init_config.rst:231
+msgid ""
+"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use "
+"defaults)."
msgstr ""
-#: c-api/init_config.rst:78
-msgid "Insert *item* into *list* at *index*."
+#: c-api/init_config.rst:233
+msgid ""
+"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators "
+"`."
msgstr ""
-#: c-api/init_config.rst:80
+#: c-api/init_config.rst:235
msgid ""
-"If *index* is greater than or equal to *list* length, append *item* to "
-"*list*."
+"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :ref:`debug hooks `."
msgstr ""
-#: c-api/init_config.rst:83
-msgid "*index* must be greater than or equal to 0."
+#: c-api/init_config.rst:238
+msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): use ``malloc()`` of the C library."
msgstr ""
-#: c-api/init_config.rst:107 c-api/init_config.rst:417
-msgid "Structure fields:"
+#: c-api/init_config.rst:239
+msgid ""
+"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with :"
+"ref:`debug hooks `."
msgstr ""
-#: c-api/init_config.rst:91
-msgid "List length."
+#: c-api/init_config.rst:241
+msgid ""
+"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator "
+"`."
msgstr ""
-#: c-api/init_config.rst:95
-msgid "List items."
+#: c-api/init_config.rst:243
+msgid ""
+"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory "
+"allocator ` with :ref:`debug hooks `."
msgstr ""
-#: c-api/init_config.rst:98
-msgid "PyStatus"
+#: c-api/init_config.rst:247
+msgid ""
+"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not "
+"supported if Python is :option:`configured using --without-pymalloc <--"
+"without-pymalloc>`."
msgstr ""
-#: c-api/init_config.rst:102
+#: c-api/init_config.rst:251
+msgid "See :ref:`Memory Management `."
+msgstr ""
+
+#: c-api/init_config.rst:253
+msgid "Default: ``PYMEM_ALLOCATOR_NOT_SET``."
+msgstr ""
+
+#: c-api/init_config.rst:257
+msgid "Set the LC_CTYPE locale to the user preferred locale?"
+msgstr ""
+
+#: c-api/init_config.rst:259
msgid ""
-"Structure to store an initialization function status: success, error or exit."
+"If equals to ``0``, set :c:member:`~PyPreConfig.coerce_c_locale` and :c:"
+"member:`~PyPreConfig.coerce_c_locale_warn` members to ``0``."
msgstr ""
-#: c-api/init_config.rst:105
-msgid "For an error, it can store the C function name which created the error."
+#: c-api/init_config.rst:273
+msgid "See the :term:`locale encoding`."
msgstr ""
-#: c-api/init_config.rst:111
-msgid "Exit code. Argument passed to ``exit()``."
+#: c-api/init_config.rst:319 c-api/init_config.rst:670
+msgid "Default: ``1`` in Python config, ``0`` in isolated config."
msgstr ""
-#: c-api/init_config.rst:115
-msgid "Error message."
+#: c-api/init_config.rst:268
+msgid "If equals to ``2``, coerce the C locale."
msgstr ""
-#: c-api/init_config.rst:119
-msgid "Name of the function which created an error, can be ``NULL``."
+#: c-api/init_config.rst:270
+msgid ""
+"If equals to ``1``, read the LC_CTYPE locale to decide if it should be "
+"coerced."
msgstr ""
-#: c-api/init_config.rst:121
-msgid "Functions to create a status:"
+#: c-api/init_config.rst:281
+msgid "Default: ``-1`` in Python config, ``0`` in isolated config."
msgstr ""
-#: c-api/init_config.rst:125
-msgid "Success."
+#: c-api/init_config.rst:279
+msgid "If non-zero, emit a warning if the C locale is coerced."
msgstr ""
-#: c-api/init_config.rst:129
-msgid "Initialization error with a message."
+#: c-api/init_config.rst:285
+msgid ""
+":ref:`Python Development Mode `: see :c:member:`PyConfig.dev_mode`."
msgstr ""
-#: c-api/init_config.rst:133
-msgid "Memory allocation failure (out of memory)."
+#: c-api/init_config.rst:679 c-api/init_config.rst:1151
+msgid "Default: ``-1`` in Python mode, ``0`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:137
-msgid "Exit Python with the specified exit code."
+#: c-api/init_config.rst:292
+msgid "Isolated mode: see :c:member:`PyConfig.isolated`."
msgstr ""
-#: c-api/init_config.rst:139
-msgid "Functions to handle a status:"
+#: c-api/init_config.rst:847
+msgid "Default: ``0`` in Python mode, ``1`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:143
+#: c-api/init_config.rst:298
+msgid "If non-zero:"
+msgstr ""
+
+#: c-api/init_config.rst:300
+msgid "Set :c:member:`PyPreConfig.utf8_mode` to ``0``,"
+msgstr ""
+
+#: c-api/init_config.rst:301
+msgid "Set :c:member:`PyConfig.filesystem_encoding` to ``\"mbcs\"``,"
+msgstr ""
+
+#: c-api/init_config.rst:302
+msgid "Set :c:member:`PyConfig.filesystem_errors` to ``\"replace\"``."
+msgstr ""
+
+#: c-api/init_config.rst:304
msgid ""
-"Is the status an error or an exit? If true, the exception must be handled; "
-"by calling :c:func:`Py_ExitStatusException` for example."
+"Initialized the from :envvar:`PYTHONLEGACYWINDOWSFSENCODING` environment "
+"variable value."
msgstr ""
-#: c-api/init_config.rst:148
-msgid "Is the result an error?"
+#: c-api/init_config.rst:860
+msgid ""
+"Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for "
+"Windows specific code."
msgstr ""
-#: c-api/init_config.rst:152
-msgid "Is the result an exit?"
+#: c-api/init_config.rst:618 c-api/init_config.rst:692
+#: c-api/init_config.rst:816 c-api/init_config.rst:863
+#: c-api/init_config.rst:937 c-api/init_config.rst:1046
+#: c-api/init_config.rst:1115 c-api/init_config.rst:1188
+msgid "Default: ``0``."
msgstr ""
-#: c-api/init_config.rst:156
+#: c-api/init_config.rst:314
msgid ""
-"Call ``exit(exitcode)`` if *status* is an exit. Print the error message and "
-"exit with a non-zero exit code if *status* is an error. Must only be called "
-"if ``PyStatus_Exception(status)`` is non-zero."
+"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:"
+"`Py_PreInitializeFromBytesArgs` parse their ``argv`` argument the same way "
+"the regular Python parses command line arguments: see :ref:`Command Line "
+"Arguments `."
msgstr ""
-#: c-api/init_config.rst:161
+#: c-api/init_config.rst:323
msgid ""
-"Internally, Python uses macros which set ``PyStatus.func``, whereas "
-"functions to create a status set ``func`` to ``NULL``."
+"Use :ref:`environment variables `? See :c:member:`PyConfig."
+"use_environment`."
msgstr ""
-#: c-api/init_config.rst:164
-msgid "Example::"
-msgstr "Exemple ::"
+#: c-api/init_config.rst:1162
+msgid "Default: ``1`` in Python config and ``0`` in isolated config."
+msgstr ""
+
+#: c-api/init_config.rst:330
+msgid "If non-zero, enable the :ref:`Python UTF-8 Mode `."
+msgstr ""
+
+#: c-api/init_config.rst:332
+msgid ""
+"Set to ``0`` or ``1`` by the :option:`-X utf8 <-X>` command line option and "
+"the :envvar:`PYTHONUTF8` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:335
+msgid "Also set to ``1`` if the ``LC_CTYPE`` locale is ``C`` or ``POSIX``."
+msgstr ""
+
+#: c-api/init_config.rst:337
+msgid "Default: ``-1`` in Python config and ``0`` in isolated config."
+msgstr ""
+
+#: c-api/init_config.rst:343
+msgid "Preinitialize Python with PyPreConfig"
+msgstr ""
+
+#: c-api/init_config.rst:345
+msgid "The preinitialization of Python:"
+msgstr ""
+
+#: c-api/init_config.rst:347
+msgid "Set the Python memory allocators (:c:member:`PyPreConfig.allocator`)"
+msgstr ""
+
+#: c-api/init_config.rst:348
+msgid "Configure the LC_CTYPE locale (:term:`locale encoding`)"
+msgstr ""
+
+#: c-api/init_config.rst:349
+msgid ""
+"Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig."
+"utf8_mode`)"
+msgstr ""
+
+#: c-api/init_config.rst:352
+msgid ""
+"The current preconfiguration (``PyPreConfig`` type) is stored in "
+"``_PyRuntime.preconfig``."
+msgstr ""
+
+#: c-api/init_config.rst:355
+msgid "Functions to preinitialize Python:"
+msgstr ""
+
+#: c-api/init_config.rst:365 c-api/init_config.rst:374
+msgid "Preinitialize Python from *preconfig* preconfiguration."
+msgstr ""
+
+#: c-api/init_config.rst:370 c-api/init_config.rst:379
+msgid "*preconfig* must not be ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:367
+msgid ""
+"Parse *argv* command line arguments (bytes strings) if :c:member:"
+"`~PyPreConfig.parse_argv` of *preconfig* is non-zero."
+msgstr ""
+
+#: c-api/init_config.rst:376
+msgid ""
+"Parse *argv* command line arguments (wide strings) if :c:member:"
+"`~PyPreConfig.parse_argv` of *preconfig* is non-zero."
+msgstr ""
+
+#: c-api/init_config.rst:1250
+msgid ""
+"The caller is responsible to handle exceptions (error or exit) using :c:func:"
+"`PyStatus_Exception` and :c:func:`Py_ExitStatusException`."
+msgstr ""
+
+#: c-api/init_config.rst:384
+msgid ""
+"For :ref:`Python Configuration ` (:c:func:"
+"`PyPreConfig_InitPythonConfig`), if Python is initialized with command line "
+"arguments, the command line arguments must also be passed to preinitialize "
+"Python, since they have an effect on the pre-configuration like encodings. "
+"For example, the :option:`-X utf8 <-X>` command line option enables the :ref:"
+"`Python UTF-8 Mode `."
+msgstr ""
+
+#: c-api/init_config.rst:391
+msgid ""
+"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and "
+"before :c:func:`Py_InitializeFromConfig` to install a custom memory "
+"allocator. It can be called before :c:func:`Py_PreInitialize` if :c:member:"
+"`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``."
+msgstr ""
+
+#: c-api/init_config.rst:396
+msgid ""
+"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not "
+"be used before the Python preinitialization, whereas calling directly "
+"``malloc()`` and ``free()`` is always safe. :c:func:`Py_DecodeLocale` must "
+"not be called before the Python preinitialization."
+msgstr ""
+
+#: c-api/init_config.rst:401
+msgid ""
+"Example using the preinitialization to enable the :ref:`Python UTF-8 Mode "
+"`::"
+msgstr ""
+
+#: c-api/init_config.rst:423
+msgid "PyConfig"
+msgstr ""
+
+#: c-api/init_config.rst:427
+msgid "Structure containing most parameters to configure Python."
+msgstr ""
+
+#: c-api/init_config.rst:429
+msgid ""
+"When done, the :c:func:`PyConfig_Clear` function must be used to release the "
+"configuration memory."
+msgstr ""
+
+#: c-api/init_config.rst:432
+msgid "Structure methods:"
+msgstr ""
+
+#: c-api/init_config.rst:436
+msgid ""
+"Initialize configuration with the :ref:`Python Configuration `."
+msgstr ""
+
+#: c-api/init_config.rst:441
+msgid ""
+"Initialize configuration with the :ref:`Isolated Configuration `."
+msgstr ""
+
+#: c-api/init_config.rst:446
+msgid "Copy the wide character string *str* into ``*config_str``."
+msgstr ""
+
+#: c-api/init_config.rst:455 c-api/init_config.rst:470
+#: c-api/init_config.rst:493
+msgid ":ref:`Preinitialize Python ` if needed."
+msgstr ""
+
+#: c-api/init_config.rst:452
+msgid ""
+"Decode *str* using :c:func:`Py_DecodeLocale` and set the result into "
+"``*config_str``."
+msgstr ""
+
+#: c-api/init_config.rst:459
+msgid ""
+"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) "
+"from the *argv* list of wide character strings."
+msgstr ""
+
+#: c-api/init_config.rst:466
+msgid ""
+"Set command line arguments (:c:member:`~PyConfig.argv` member of *config*) "
+"from the *argv* list of bytes strings. Decode bytes using :c:func:"
+"`Py_DecodeLocale`."
+msgstr ""
+
+#: c-api/init_config.rst:474
+msgid "Set the list of wide strings *list* to *length* and *items*."
+msgstr ""
+
+#: c-api/init_config.rst:480
+msgid "Read all Python configuration."
+msgstr ""
+
+#: c-api/init_config.rst:482
+msgid "Fields which are already initialized are left unchanged."
+msgstr ""
+
+#: c-api/init_config.rst:484
+msgid ""
+"Fields for :ref:`path configuration ` are no longer "
+"calculated or modified when calling this function, as of Python 3.11."
+msgstr ""
+
+#: c-api/init_config.rst:966
+msgid ""
+"The :c:func:`PyConfig_Read` function only parses :c:member:`PyConfig.argv` "
+"arguments once: :c:member:`PyConfig.parse_argv` is set to ``2`` after "
+"arguments are parsed. Since Python arguments are strippped from :c:member:"
+"`PyConfig.argv`, parsing arguments twice would parse the application options "
+"as Python options."
+msgstr ""
+
+#: c-api/init_config.rst:495
+msgid ""
+"The :c:member:`PyConfig.argv` arguments are now only parsed once, :c:member:"
+"`PyConfig.parse_argv` is set to ``2`` after arguments are parsed, and "
+"arguments are only parsed if :c:member:`PyConfig.parse_argv` equals ``1``."
+msgstr ""
+
+#: c-api/init_config.rst:501
+msgid ""
+":c:func:`PyConfig_Read` no longer calculates all paths, and so fields listed "
+"under :ref:`Python Path Configuration ` may no longer be "
+"updated until :c:func:`Py_InitializeFromConfig` is called."
+msgstr ""
+
+#: c-api/init_config.rst:509
+msgid "Release configuration memory."
+msgstr ""
+
+#: c-api/init_config.rst:511
+msgid ""
+"Most ``PyConfig`` methods :ref:`preinitialize Python ` if needed. "
+"In that case, the Python preinitialization configuration (:c:type:"
+"`PyPreConfig`) in based on the :c:type:`PyConfig`. If configuration fields "
+"which are in common with :c:type:`PyPreConfig` are tuned, they must be set "
+"before calling a :c:type:`PyConfig` method:"
+msgstr ""
+
+#: c-api/init_config.rst:517
+msgid ":c:member:`PyConfig.dev_mode`"
+msgstr ""
+
+#: c-api/init_config.rst:518
+msgid ":c:member:`PyConfig.isolated`"
+msgstr ""
+
+#: c-api/init_config.rst:519
+msgid ":c:member:`PyConfig.parse_argv`"
+msgstr ""
+
+#: c-api/init_config.rst:520
+msgid ":c:member:`PyConfig.use_environment`"
+msgstr ""
+
+#: c-api/init_config.rst:522
+msgid ""
+"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` "
+"is used, this method must be called before other methods, since the "
+"preinitialization configuration depends on command line arguments (if :c:"
+"member:`parse_argv` is non-zero)."
+msgstr ""
+
+#: c-api/init_config.rst:527
+msgid ""
+"The caller of these methods is responsible to handle exceptions (error or "
+"exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``."
+msgstr ""
+
+#: c-api/init_config.rst:534
+msgid "Command line arguments: :data:`sys.argv`."
+msgstr ""
+
+#: c-api/init_config.rst:536
+msgid ""
+"Set :c:member:`~PyConfig.parse_argv` to ``1`` to parse :c:member:`~PyConfig."
+"argv` the same way the regular Python parses Python command line arguments "
+"and then to strip Python arguments from :c:member:`~PyConfig.argv`."
+msgstr ""
+
+#: c-api/init_config.rst:541
+msgid ""
+"If :c:member:`~PyConfig.argv` is empty, an empty string is added to ensure "
+"that :data:`sys.argv` always exists and is never empty."
+msgstr ""
+
+#: c-api/init_config.rst:571 c-api/init_config.rst:591
+#: c-api/init_config.rst:708 c-api/init_config.rst:907
+#: c-api/init_config.rst:1023 c-api/init_config.rst:1054
+#: c-api/init_config.rst:1075
+msgid "Default: ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:546
+msgid "See also the :c:member:`~PyConfig.orig_argv` member."
+msgstr ""
+
+#: c-api/init_config.rst:550
+msgid ""
+"If equals to zero, ``Py_RunMain()`` prepends a potentially unsafe path to :"
+"data:`sys.path` at startup:"
+msgstr ""
+
+#: c-api/init_config.rst:553
+msgid ""
+"If :c:member:`argv[0] ` is equal to ``L\"-m\"`` (``python -m "
+"module``), prepend the current working directory."
+msgstr ""
+
+#: c-api/init_config.rst:555
+msgid ""
+"If running a script (``python script.py``), prepend the script's directory. "
+"If it's a symbolic link, resolve symbolic links."
+msgstr ""
+
+#: c-api/init_config.rst:557
+msgid ""
+"Otherwise (``python -c code`` and ``python``), prepend an empty string, "
+"which means the current working directory."
+msgstr ""
+
+#: c-api/init_config.rst:560
+msgid ""
+"Set to ``1`` by the :option:`-P` command line option and the :envvar:"
+"`PYTHONSAFEPATH` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:563
+msgid "Default: ``0`` in Python config, ``1`` in isolated config."
+msgstr ""
+
+#: c-api/init_config.rst:569
+msgid ":data:`sys.base_exec_prefix`."
+msgstr ""
+
+#: c-api/init_config.rst:585 c-api/init_config.rst:701
+#: c-api/init_config.rst:924 c-api/init_config.rst:1007
+msgid "Part of the :ref:`Python Path Configuration ` output."
+msgstr ""
+
+#: c-api/init_config.rst:577
+msgid "Python base executable: :data:`sys._base_executable`."
+msgstr ""
+
+#: c-api/init_config.rst:579
+msgid "Set by the :envvar:`__PYVENV_LAUNCHER__` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:581
+msgid "Set from :c:member:`PyConfig.executable` if ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:589
+msgid ":data:`sys.base_prefix`."
+msgstr ""
+
+#: c-api/init_config.rst:597
+msgid ""
+"If equals to ``0`` and :c:member:`~PyConfig.configure_c_stdio` is non-zero, "
+"disable buffering on the C streams stdout and stderr."
+msgstr ""
+
+#: c-api/init_config.rst:600
+msgid ""
+"Set to ``0`` by the :option:`-u` command line option and the :envvar:"
+"`PYTHONUNBUFFERED` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:603
+msgid "stdin is always opened in buffered mode."
+msgstr ""
+
+#: c-api/init_config.rst:638 c-api/init_config.rst:1220
+msgid "Default: ``1``."
+msgstr ""
+
+#: c-api/init_config.rst:609
+msgid ""
+"If equals to ``1``, issue a warning when comparing :class:`bytes` or :class:"
+"`bytearray` with :class:`str`, or comparing :class:`bytes` with :class:`int`."
+msgstr ""
+
+#: c-api/init_config.rst:613
+msgid ""
+"If equal or greater to ``2``, raise a :exc:`BytesWarning` exception in these "
+"cases."
+msgstr ""
+
+#: c-api/init_config.rst:616
+msgid "Incremented by the :option:`-b` command line option."
+msgstr ""
+
+#: c-api/init_config.rst:622
+msgid ""
+"If non-zero, emit a :exc:`EncodingWarning` warning when :class:`io."
+"TextIOWrapper` uses its default encoding. See :ref:`io-encoding-warning` for "
+"details."
+msgstr ""
+
+#: c-api/init_config.rst:631
+msgid ""
+"If equals to ``0``, disables the inclusion of the end line and column "
+"mappings in code objects. Also disables traceback printing carets to "
+"specific error locations."
+msgstr ""
+
+#: c-api/init_config.rst:635
+msgid ""
+"Set to ``0`` by the :envvar:`PYTHONNODEBUGRANGES` environment variable and "
+"by the :option:`-X no_debug_ranges <-X>` command line option."
+msgstr ""
+
+#: c-api/init_config.rst:644
+msgid ""
+"Control the validation behavior of hash-based ``.pyc`` files: value of the :"
+"option:`--check-hash-based-pycs` command line option."
+msgstr ""
+
+#: c-api/init_config.rst:647
+msgid "Valid values:"
+msgstr ""
+
+#: c-api/init_config.rst:649
+msgid ""
+"``L\"always\"``: Hash the source file for invalidation regardless of value "
+"of the 'check_source' flag."
+msgstr ""
+
+#: c-api/init_config.rst:651
+msgid "``L\"never\"``: Assume that hash-based pycs always are valid."
+msgstr ""
+
+#: c-api/init_config.rst:652
+msgid ""
+"``L\"default\"``: The 'check_source' flag in hash-based pycs determines "
+"invalidation."
+msgstr ""
+
+#: c-api/init_config.rst:655
+msgid "Default: ``L\"default\"``."
+msgstr ""
+
+#: c-api/init_config.rst:657
+msgid "See also :pep:`552` \"Deterministic pycs\"."
+msgstr ""
+
+#: c-api/init_config.rst:661
+msgid "If non-zero, configure C standard streams:"
+msgstr ""
+
+#: c-api/init_config.rst:663
+msgid ""
+"On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr."
+msgstr ""
+
+#: c-api/init_config.rst:665
+msgid ""
+"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of "
+"stdin, stdout and stderr streams."
+msgstr ""
+
+#: c-api/init_config.rst:667
+msgid ""
+"If :c:member:`~PyConfig.interactive` is non-zero, enable stream buffering on "
+"stdin and stdout (only stdout on Windows)."
+msgstr ""
+
+#: c-api/init_config.rst:674
+msgid "If non-zero, enable the :ref:`Python Development Mode `."
+msgstr ""
+
+#: c-api/init_config.rst:676
+msgid ""
+"Set to ``1`` by the :option:`-X dev <-X>` option and the :envvar:"
+"`PYTHONDEVMODE` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:683
+msgid "Dump Python references?"
+msgstr ""
+
+#: c-api/init_config.rst:685
+msgid "If non-zero, dump all objects which are still alive at exit."
+msgstr ""
-#: c-api/init_config.rst:188
-msgid "PyPreConfig"
+#: c-api/init_config.rst:687
+msgid "Set to ``1`` by the :envvar:`PYTHONDUMPREFS` environment variable."
msgstr ""
-#: c-api/init_config.rst:192
-msgid "Structure used to preinitialize Python:"
+#: c-api/init_config.rst:689
+msgid ""
+"Need a special build of Python with the ``Py_TRACE_REFS`` macro defined: see "
+"the :option:`configure --with-trace-refs option <--with-trace-refs>`."
msgstr ""
-#: c-api/init_config.rst:194
-msgid "Set the Python memory allocator"
+#: c-api/init_config.rst:696
+msgid ""
+"The site-specific directory prefix where the platform-dependent Python files "
+"are installed: :data:`sys.exec_prefix`."
msgstr ""
-#: c-api/init_config.rst:195
-msgid "Configure the LC_CTYPE locale"
+#: c-api/init_config.rst:705
+msgid ""
+"The absolute path of the executable binary for the Python interpreter: :data:"
+"`sys.executable`."
msgstr ""
-#: c-api/init_config.rst:196
-msgid "Set the UTF-8 mode"
+#: c-api/init_config.rst:714
+msgid "Enable faulthandler?"
msgstr ""
-#: c-api/init_config.rst:198
-msgid "Function to initialize a preconfiguration:"
+#: c-api/init_config.rst:716
+msgid "If non-zero, call :func:`faulthandler.enable` at startup."
msgstr ""
-#: c-api/init_config.rst:202
+#: c-api/init_config.rst:718
msgid ""
-"Initialize the preconfiguration with :ref:`Python Configuration `."
+"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:"
+"`PYTHONFAULTHANDLER` environment variable."
msgstr ""
-#: c-api/init_config.rst:207
+#: c-api/init_config.rst:725
msgid ""
-"Initialize the preconfiguration with :ref:`Isolated Configuration `."
+":term:`Filesystem encoding `: :func:"
+"`sys.getfilesystemencoding`."
msgstr ""
-#: c-api/init_config.rst:214
-msgid "Name of the memory allocator:"
+#: c-api/init_config.rst:728
+msgid "On macOS, Android and VxWorks: use ``\"utf-8\"`` by default."
msgstr ""
-#: c-api/init_config.rst:216
+#: c-api/init_config.rst:730
msgid ""
-"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use "
-"defaults)"
+"On Windows: use ``\"utf-8\"`` by default, or ``\"mbcs\"`` if :c:member:"
+"`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is non-"
+"zero."
+msgstr ""
+
+#: c-api/init_config.rst:734
+msgid "Default encoding on other platforms:"
msgstr ""
-#: c-api/init_config.rst:218
-msgid "``PYMEM_ALLOCATOR_DEFAULT`` (``1``): default memory allocators"
+#: c-api/init_config.rst:736
+msgid "``\"utf-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero."
msgstr ""
-#: c-api/init_config.rst:219
+#: c-api/init_config.rst:737
msgid ""
-"``PYMEM_ALLOCATOR_DEBUG`` (``2``): default memory allocators with debug hooks"
+"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the "
+"ASCII encoding (or Roman8 encoding on HP-UX), whereas the ``mbstowcs()`` "
+"function decodes from a different encoding (usually Latin1)."
msgstr ""
-#: c-api/init_config.rst:221
-msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): force usage of ``malloc()``"
+#: c-api/init_config.rst:741
+msgid "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string."
msgstr ""
-#: c-api/init_config.rst:222
+#: c-api/init_config.rst:742
msgid ""
-"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with "
-"debug hooks"
+"Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result."
msgstr ""
-#: c-api/init_config.rst:224
+#: c-api/init_config.rst:745
msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator "
-"`"
+"At Python startup, the encoding name is normalized to the Python codec name. "
+"For example, ``\"ANSI_X3.4-1968\"`` is replaced with ``\"ascii\"``."
+msgstr ""
+
+#: c-api/init_config.rst:748
+msgid "See also the :c:member:`~PyConfig.filesystem_errors` member."
msgstr ""
-#: c-api/init_config.rst:226
+#: c-api/init_config.rst:752
msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory "
-"allocator ` with debug hooks"
+":term:`Filesystem error handler `: :"
+"func:`sys.getfilesystemencodeerrors`."
msgstr ""
-#: c-api/init_config.rst:229
+#: c-api/init_config.rst:755
msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not "
-"supported if Python is configured using ``--without-pymalloc``"
+"On Windows: use ``\"surrogatepass\"`` by default, or ``\"replace\"`` if :c:"
+"member:`~PyPreConfig.legacy_windows_fs_encoding` of :c:type:`PyPreConfig` is "
+"non-zero."
msgstr ""
-#: c-api/init_config.rst:232
-msgid "See :ref:`Memory Management `."
+#: c-api/init_config.rst:759
+msgid "On other platforms: use ``\"surrogateescape\"`` by default."
msgstr ""
-#: c-api/init_config.rst:236
-msgid ""
-"Set the LC_CTYPE locale to the user preferred locale? If equals to 0, set :c:"
-"member:`coerce_c_locale` and :c:member:`coerce_c_locale_warn` to 0."
+#: c-api/init_config.rst:761
+msgid "Supported error handlers:"
msgstr ""
-#: c-api/init_config.rst:241
-msgid ""
-"If equals to 2, coerce the C locale; if equals to 1, read the LC_CTYPE "
-"locale to decide if it should be coerced."
+#: c-api/init_config.rst:763
+msgid "``\"strict\"``"
msgstr ""
-#: c-api/init_config.rst:246
-msgid "If non-zero, emit a warning if the C locale is coerced."
+#: c-api/init_config.rst:764
+msgid "``\"surrogateescape\"``"
msgstr ""
-#: c-api/init_config.rst:250
-msgid "See :c:member:`PyConfig.dev_mode`."
+#: c-api/init_config.rst:765
+msgid "``\"surrogatepass\"`` (only supported with the UTF-8 encoding)"
msgstr ""
-#: c-api/init_config.rst:254
-msgid "See :c:member:`PyConfig.isolated`."
+#: c-api/init_config.rst:767
+msgid "See also the :c:member:`~PyConfig.filesystem_encoding` member."
msgstr ""
-#: c-api/init_config.rst:258
-msgid ""
-"If non-zero, disable UTF-8 Mode, set the Python filesystem encoding to "
-"``mbcs``, set the filesystem error handler to ``replace``."
+#: c-api/init_config.rst:772
+msgid "Randomized hash function seed."
msgstr ""
-#: c-api/init_config.rst:555
+#: c-api/init_config.rst:774
msgid ""
-"Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for "
-"Windows specific code."
+"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at "
+"Python startup, and :c:member:`~PyConfig.hash_seed` is ignored."
+msgstr ""
+
+#: c-api/init_config.rst:777
+msgid "Set by the :envvar:`PYTHONHASHSEED` environment variable."
msgstr ""
-#: c-api/init_config.rst:266
+#: c-api/init_config.rst:779
msgid ""
-"If non-zero, :c:func:`Py_PreInitializeFromArgs` and :c:func:"
-"`Py_PreInitializeFromBytesArgs` parse their ``argv`` argument the same way "
-"the regular Python parses command line arguments: see :ref:`Command Line "
-"Arguments `."
+"Default *use_hash_seed* value: ``-1`` in Python mode, ``0`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:273
-msgid "See :c:member:`PyConfig.use_environment`."
+#: c-api/init_config.rst:784
+msgid "Python home directory."
msgstr ""
-#: c-api/init_config.rst:277
-msgid "If non-zero, enable the UTF-8 mode."
+#: c-api/init_config.rst:786
+msgid ""
+"If :c:func:`Py_SetPythonHome` has been called, use its argument if it is not "
+"``NULL``."
msgstr ""
-#: c-api/init_config.rst:280
-msgid "Preinitialization with PyPreConfig"
+#: c-api/init_config.rst:789
+msgid "Set by the :envvar:`PYTHONHOME` environment variable."
msgstr ""
-#: c-api/init_config.rst:282
-msgid "Functions to preinitialize Python:"
+#: c-api/init_config.rst:889 c-api/init_config.rst:995
+#: c-api/init_config.rst:1025
+msgid "Part of the :ref:`Python Path Configuration ` input."
msgstr ""
-#: c-api/init_config.rst:286
-msgid "Preinitialize Python from *preconfig* preconfiguration."
+#: c-api/init_config.rst:797
+msgid "If non-zero, profile import time."
msgstr ""
-#: c-api/init_config.rst:290
+#: c-api/init_config.rst:799
msgid ""
-"Preinitialize Python from *preconfig* preconfiguration and command line "
-"arguments (bytes strings)."
+"Set the ``1`` by the :option:`-X importtime <-X>` option and the :envvar:"
+"`PYTHONPROFILEIMPORTTIME` environment variable."
msgstr ""
-#: c-api/init_config.rst:295
-msgid ""
-"Preinitialize Python from *preconfig* preconfiguration and command line "
-"arguments (wide strings)."
+#: c-api/init_config.rst:806
+msgid "Enter interactive mode after executing a script or a command."
msgstr ""
-#: c-api/init_config.rst:730
+#: c-api/init_config.rst:808
msgid ""
-"The caller is responsible to handle exceptions (error or exit) using :c:func:"
-"`PyStatus_Exception` and :c:func:`Py_ExitStatusException`."
+"If greater than ``0``, enable inspect: when a script is passed as first "
+"argument or the -c option is used, enter interactive mode after executing "
+"the script or the command, even when :data:`sys.stdin` does not appear to be "
+"a terminal."
msgstr ""
-#: c-api/init_config.rst:301
+#: c-api/init_config.rst:813
msgid ""
-"For :ref:`Python Configuration ` (:c:func:"
-"`PyPreConfig_InitPythonConfig`), if Python is initialized with command line "
-"arguments, the command line arguments must also be passed to preinitialize "
-"Python, since they have an effect on the pre-configuration like encodings. "
-"For example, the :option:`-X utf8 <-X>` command line option enables the "
-"UTF-8 Mode."
+"Incremented by the :option:`-i` command line option. Set to ``1`` if the :"
+"envvar:`PYTHONINSPECT` environment variable is non-empty."
msgstr ""
-#: c-api/init_config.rst:308
-msgid ""
-"``PyMem_SetAllocator()`` can be called after :c:func:`Py_PreInitialize` and "
-"before :c:func:`Py_InitializeFromConfig` to install a custom memory "
-"allocator. It can be called before :c:func:`Py_PreInitialize` if :c:member:"
-"`PyPreConfig.allocator` is set to ``PYMEM_ALLOCATOR_NOT_SET``."
+#: c-api/init_config.rst:820
+msgid "Install Python signal handlers?"
msgstr ""
-#: c-api/init_config.rst:313
-msgid ""
-"Python memory allocation functions like :c:func:`PyMem_RawMalloc` must not "
-"be used before Python preinitialization, whereas calling directly "
-"``malloc()`` and ``free()`` is always safe. :c:func:`Py_DecodeLocale` must "
-"not be called before the preinitialization."
+#: c-api/init_config.rst:972 c-api/init_config.rst:1172
+msgid "Default: ``1`` in Python mode, ``0`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:318
-msgid "Example using the preinitialization to enable the UTF-8 Mode::"
+#: c-api/init_config.rst:826
+msgid "If greater than ``0``, enable the interactive mode (REPL)."
msgstr ""
-#: c-api/init_config.rst:339
-msgid "PyConfig"
+#: c-api/init_config.rst:828
+msgid "Incremented by the :option:`-i` command line option."
msgstr ""
-#: c-api/init_config.rst:343
-msgid "Structure containing most parameters to configure Python."
+#: c-api/init_config.rst:834
+msgid "If greater than ``0``, enable isolated mode:"
msgstr ""
-#: c-api/init_config.rst:345
-msgid "Structure methods:"
+#: c-api/init_config.rst:836
+msgid ""
+"Set :c:member:`~PyConfig.safe_path` to ``1``: don't prepend a potentially "
+"unsafe path to :data:`sys.path` at Python startup."
msgstr ""
-#: c-api/init_config.rst:349
+#: c-api/init_config.rst:1470
+msgid "Set :c:member:`~PyConfig.use_environment` to ``0``."
+msgstr ""
+
+#: c-api/init_config.rst:840
msgid ""
-"Initialize configuration with :ref:`Python Configuration `."
+"Set :c:member:`~PyConfig.user_site_directory` to ``0``: don't add the user "
+"site directory to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:354
+#: c-api/init_config.rst:842
msgid ""
-"Initialize configuration with :ref:`Isolated Configuration `."
+"Python REPL doesn't import :mod:`readline` nor enable default readline "
+"configuration on interactive prompts."
msgstr ""
-#: c-api/init_config.rst:359
-msgid "Copy the wide character string *str* into ``*config_str``."
+#: c-api/init_config.rst:845
+msgid "Set to ``1`` by the :option:`-I` command line option."
msgstr ""
-#: c-api/init_config.rst:367 c-api/init_config.rst:379
-#: c-api/init_config.rst:393
-msgid "Preinitialize Python if needed."
+#: c-api/init_config.rst:849
+msgid "See also :c:member:`PyPreConfig.isolated`."
msgstr ""
-#: c-api/init_config.rst:365
+#: c-api/init_config.rst:853
msgid ""
-"Decode *str* using ``Py_DecodeLocale()`` and set the result into "
-"``*config_str``."
+"If non-zero, use :class:`io.FileIO` instead of :class:`io.WindowsConsoleIO` "
+"for :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys.stderr`."
+msgstr ""
+
+#: c-api/init_config.rst:857
+msgid ""
+"Set to ``1`` if the :envvar:`PYTHONLEGACYWINDOWSSTDIO` environment variable "
+"is set to a non-empty string."
msgstr ""
-#: c-api/init_config.rst:371
-msgid "Set command line arguments from wide character strings."
+#: c-api/init_config.rst:865
+msgid "See also the :pep:`528` (Change Windows console encoding to UTF-8)."
msgstr ""
-#: c-api/init_config.rst:377
+#: c-api/init_config.rst:869
msgid ""
-"Set command line arguments: decode bytes using :c:func:`Py_DecodeLocale`."
+"If non-zero, dump statistics on :ref:`Python pymalloc memory allocator "
+"` at exit."
msgstr ""
-#: c-api/init_config.rst:383
-msgid "Set the list of wide strings *list* to *length* and *items*."
+#: c-api/init_config.rst:872
+msgid "Set to ``1`` by the :envvar:`PYTHONMALLOCSTATS` environment variable."
msgstr ""
-#: c-api/init_config.rst:389
-msgid "Read all Python configuration."
+#: c-api/init_config.rst:874
+msgid ""
+"The option is ignored if Python is :option:`configured using the --without-"
+"pymalloc option <--without-pymalloc>`."
msgstr ""
-#: c-api/init_config.rst:391
-msgid "Fields which are already initialized are left unchanged."
+#: c-api/init_config.rst:881
+msgid "Platform library directory name: :data:`sys.platlibdir`."
msgstr ""
-#: c-api/init_config.rst:397
-msgid "Release configuration memory."
+#: c-api/init_config.rst:883
+msgid "Set by the :envvar:`PYTHONPLATLIBDIR` environment variable."
msgstr ""
-#: c-api/init_config.rst:399
+#: c-api/init_config.rst:885
msgid ""
-"Most ``PyConfig`` methods preinitialize Python if needed. In that case, the "
-"Python preinitialization configuration in based on the :c:type:`PyConfig`. "
-"If configuration fields which are in common with :c:type:`PyPreConfig` are "
-"tuned, they must be set before calling a :c:type:`PyConfig` method:"
+"Default: value of the ``PLATLIBDIR`` macro which is set by the :option:"
+"`configure --with-platlibdir option <--with-platlibdir>` (default: "
+"``\"lib\"``, or ``\"DLLs\"`` on Windows)."
msgstr ""
-#: c-api/init_config.rst:404
-msgid ":c:member:`~PyConfig.dev_mode`"
+#: c-api/init_config.rst:893
+msgid ""
+"This macro is now used on Windows to locate the standard library extension "
+"modules, typically under ``DLLs``. However, for compatibility, note that "
+"this value is ignored for any non-standard layouts, including in-tree builds "
+"and virtual environments."
msgstr ""
-#: c-api/init_config.rst:405
-msgid ":c:member:`~PyConfig.isolated`"
+#: c-api/init_config.rst:902
+msgid ""
+"Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:"
+"data:`os.path.pathsep`)."
msgstr ""
-#: c-api/init_config.rst:406
-msgid ":c:member:`~PyConfig.parse_argv`"
+#: c-api/init_config.rst:905
+msgid "Set by the :envvar:`PYTHONPATH` environment variable."
msgstr ""
-#: c-api/init_config.rst:407
-msgid ":c:member:`~PyConfig.use_environment`"
+#: c-api/init_config.rst:914
+msgid "Module search paths: :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:409
+#: c-api/init_config.rst:916
msgid ""
-"Moreover, if :c:func:`PyConfig_SetArgv` or :c:func:`PyConfig_SetBytesArgv` "
-"is used, this method must be called first, before other methods, since the "
-"preinitialization configuration depends on command line arguments (if :c:"
-"member:`parse_argv` is non-zero)."
+"If :c:member:`~PyConfig.module_search_paths_set` is equal to ``0``, :c:func:"
+"`Py_InitializeFromConfig` will replace :c:member:`~PyConfig."
+"module_search_paths` and sets :c:member:`~PyConfig.module_search_paths_set` "
+"to ``1``."
msgstr ""
-#: c-api/init_config.rst:414
+#: c-api/init_config.rst:921
msgid ""
-"The caller of these methods is responsible to handle exceptions (error or "
-"exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``."
+"Default: empty list (``module_search_paths``) and ``0`` "
+"(``module_search_paths_set``)."
msgstr ""
-#: c-api/init_config.rst:421
-msgid ""
-"Command line arguments, :data:`sys.argv`. See :c:member:`~PyConfig."
-"parse_argv` to parse :c:member:`~PyConfig.argv` the same way the regular "
-"Python parses Python command line arguments. If :c:member:`~PyConfig.argv` "
-"is empty, an empty string is added to ensure that :data:`sys.argv` always "
-"exists and is never empty."
+#: c-api/init_config.rst:928
+msgid "Compilation optimization level:"
msgstr ""
-#: c-api/init_config.rst:429
-msgid ":data:`sys.base_exec_prefix`."
+#: c-api/init_config.rst:930
+msgid "``0``: Peephole optimizer, set ``__debug__`` to ``True``."
msgstr ""
-#: c-api/init_config.rst:433
-msgid ""
-":data:`sys._base_executable`: ``__PYVENV_LAUNCHER__`` environment variable "
-"value, or copy of :c:member:`PyConfig.executable`."
+#: c-api/init_config.rst:931
+msgid "``1``: Level 0, remove assertions, set ``__debug__`` to ``False``."
msgstr ""
-#: c-api/init_config.rst:438
-msgid ":data:`sys.base_prefix`."
+#: c-api/init_config.rst:932
+msgid "``2``: Level 1, strip docstrings."
msgstr ""
-#: c-api/init_config.rst:442
+#: c-api/init_config.rst:934
msgid ""
-":data:`sys.platlibdir`: platform library directory name, set at configure "
-"time by ``--with-platlibdir``, overrideable by the ``PYTHONPLATLIBDIR`` "
-"environment variable."
+"Incremented by the :option:`-O` command line option. Set to the :envvar:"
+"`PYTHONOPTIMIZE` environment variable value."
msgstr ""
-#: c-api/init_config.rst:450
+#: c-api/init_config.rst:941
msgid ""
-"If equals to 0, enable unbuffered mode, making the stdout and stderr streams "
-"unbuffered."
+"The list of the original command line arguments passed to the Python "
+"executable: :data:`sys.orig_argv`."
msgstr ""
-#: c-api/init_config.rst:453
-msgid "stdin is always opened in buffered mode."
+#: c-api/init_config.rst:944
+msgid ""
+"If :c:member:`~PyConfig.orig_argv` list is empty and :c:member:`~PyConfig."
+"argv` is not a list only containing an empty string, :c:func:`PyConfig_Read` "
+"copies :c:member:`~PyConfig.argv` into :c:member:`~PyConfig.orig_argv` "
+"before modifying :c:member:`~PyConfig.argv` (if :c:member:`~PyConfig."
+"parse_argv` is non-zero)."
msgstr ""
-#: c-api/init_config.rst:457
+#: c-api/init_config.rst:951
msgid ""
-"If equals to 1, issue a warning when comparing :class:`bytes` or :class:"
-"`bytearray` with :class:`str`, or comparing :class:`bytes` with :class:"
-"`int`. If equal or greater to 2, raise a :exc:`BytesWarning` exception."
+"See also the :c:member:`~PyConfig.argv` member and the :c:func:"
+"`Py_GetArgcArgv` function."
msgstr ""
-#: c-api/init_config.rst:464
-msgid ""
-"Control the validation behavior of hash-based ``.pyc`` files (see :pep:"
-"`552`): :option:`--check-hash-based-pycs` command line option value."
+#: c-api/init_config.rst:1207 c-api/init_config.rst:1226
+msgid "Default: empty list."
msgstr ""
-#: c-api/init_config.rst:467
-msgid "Valid values: ``always``, ``never`` and ``default``."
+#: c-api/init_config.rst:960
+msgid "Parse command line arguments?"
msgstr ""
-#: c-api/init_config.rst:469
-msgid "The default value is: ``default``."
+#: c-api/init_config.rst:962
+msgid ""
+"If equals to ``1``, parse :c:member:`~PyConfig.argv` the same way the "
+"regular Python parses :ref:`command line arguments `, and "
+"strip Python arguments from :c:member:`~PyConfig.argv`."
msgstr ""
-#: c-api/init_config.rst:473
+#: c-api/init_config.rst:974
msgid ""
-"If non-zero, configure C standard streams (``stdio``, ``stdout``, "
-"``stdout``). For example, set their mode to ``O_BINARY`` on Windows."
+"The :c:member:`PyConfig.argv` arguments are now only parsed if :c:member:"
+"`PyConfig.parse_argv` equals to ``1``."
msgstr ""
-#: c-api/init_config.rst:478
-msgid "If non-zero, enable the :ref:`Python Development Mode `."
+#: c-api/init_config.rst:980
+msgid ""
+"Parser debug mode. If greater than ``0``, turn on parser debugging output "
+"(for expert only, depending on compilation options)."
msgstr ""
-#: c-api/init_config.rst:482
-msgid "If non-zero, dump all objects which are still alive at exit."
+#: c-api/init_config.rst:983
+msgid ""
+"Incremented by the :option:`-d` command line option. Set to the :envvar:"
+"`PYTHONDEBUG` environment variable value."
msgstr ""
-#: c-api/init_config.rst:484
-msgid "``Py_TRACE_REFS`` macro must be defined in build."
+#: c-api/init_config.rst:990
+msgid ""
+"If non-zero, calculation of path configuration is allowed to log warnings "
+"into ``stderr``. If equals to ``0``, suppress these warnings."
msgstr ""
-#: c-api/init_config.rst:488
-msgid ":data:`sys.exec_prefix`."
+#: c-api/init_config.rst:997
+msgid "Now also applies on Windows."
msgstr ""
-#: c-api/init_config.rst:492
-msgid ":data:`sys.executable`."
+#: c-api/init_config.rst:1002
+msgid ""
+"The site-specific directory prefix where the platform independent Python "
+"files are installed: :data:`sys.prefix`."
msgstr ""
-#: c-api/init_config.rst:496
-msgid "If non-zero, call :func:`faulthandler.enable` at startup."
+#: c-api/init_config.rst:1011
+msgid ""
+"Program name used to initialize :c:member:`~PyConfig.executable` and in "
+"early error messages during Python initialization."
msgstr ""
-#: c-api/init_config.rst:500
-msgid "Filesystem encoding, :func:`sys.getfilesystemencoding`."
+#: c-api/init_config.rst:1014
+msgid "If :func:`Py_SetProgramName` has been called, use its argument."
msgstr ""
-#: c-api/init_config.rst:504
-msgid "Filesystem encoding errors, :func:`sys.getfilesystemencodeerrors`."
+#: c-api/init_config.rst:1015
+msgid "On macOS, use :envvar:`PYTHONEXECUTABLE` environment variable if set."
msgstr ""
-#: c-api/init_config.rst:509
-msgid "Randomized hash function seed."
+#: c-api/init_config.rst:1016
+msgid ""
+"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:"
+"`__PYVENV_LAUNCHER__` environment variable if set."
msgstr ""
-#: c-api/init_config.rst:511
+#: c-api/init_config.rst:1018
msgid ""
-"If :c:member:`~PyConfig.use_hash_seed` is zero, a seed is chosen randomly at "
-"Pythonstartup, and :c:member:`~PyConfig.hash_seed` is ignored."
+"Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty."
msgstr ""
-#: c-api/init_config.rst:516
-msgid "Python home directory."
+#: c-api/init_config.rst:1020
+msgid ""
+"Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other "
+"platforms."
msgstr ""
-#: c-api/init_config.rst:518
+#: c-api/init_config.rst:1029
msgid ""
-"Initialized from :envvar:`PYTHONHOME` environment variable value by default."
+"Directory where cached ``.pyc`` files are written: :data:`sys."
+"pycache_prefix`."
msgstr ""
-#: c-api/init_config.rst:523
-msgid "If non-zero, profile import time."
+#: c-api/init_config.rst:1032
+msgid ""
+"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and "
+"the :envvar:`PYTHONPYCACHEPREFIX` environment variable."
msgstr ""
-#: c-api/init_config.rst:527
-msgid "Enter interactive mode after executing a script or a command."
+#: c-api/init_config.rst:1035
+msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``."
msgstr ""
-#: c-api/init_config.rst:531
-msgid "Install signal handlers?"
+#: c-api/init_config.rst:1041
+msgid ""
+"Quiet mode. If greater than ``0``, don't display the copyright and version "
+"at Python startup in interactive mode."
msgstr ""
-#: c-api/init_config.rst:535
-#, fuzzy
-msgid "Interactive mode."
-msgstr "Mode interactif"
+#: c-api/init_config.rst:1044
+msgid "Incremented by the :option:`-q` command line option."
+msgstr ""
-#: c-api/init_config.rst:539
-msgid "If greater than 0, enable isolated mode:"
+#: c-api/init_config.rst:1050
+msgid "Value of the :option:`-c` command line option."
msgstr ""
-#: c-api/init_config.rst:541
-msgid ""
-":data:`sys.path` contains neither the script's directory (computed from "
-"``argv[0]`` or the current directory) nor the user's site-packages directory."
+#: c-api/init_config.rst:1073
+msgid "Used by :c:func:`Py_RunMain`."
msgstr ""
-#: c-api/init_config.rst:544
+#: c-api/init_config.rst:1058
msgid ""
-"Python REPL doesn't import :mod:`readline` nor enable default readline "
-"configuration on interactive prompts."
+"Filename passed on the command line: trailing command line argument without :"
+"option:`-c` or :option:`-m`. It is used by the :c:func:`Py_RunMain` function."
msgstr ""
-#: c-api/init_config.rst:546
+#: c-api/init_config.rst:1062
msgid ""
-"Set :c:member:`~PyConfig.use_environment` and :c:member:`~PyConfig."
-"user_site_directory` to 0."
+"For example, it is set to ``script.py`` by the ``python3 script.py arg`` "
+"command line."
msgstr ""
-#: c-api/init_config.rst:551
-msgid ""
-"If non-zero, use :class:`io.FileIO` instead of :class:`io.WindowsConsoleIO` "
-"for :data:`sys.stdin`, :data:`sys.stdout` and :data:`sys.stderr`."
+#: c-api/init_config.rst:1065
+msgid "See also the :c:member:`PyConfig.skip_source_first_line` option."
msgstr ""
-#: c-api/init_config.rst:560
-msgid ""
-"If non-zero, dump statistics on :ref:`Python pymalloc memory allocator "
-"` at exit."
+#: c-api/init_config.rst:1071
+msgid "Value of the :option:`-m` command line option."
msgstr ""
-#: c-api/init_config.rst:563
-msgid "The option is ignored if Python is built using ``--without-pymalloc``."
+#: c-api/init_config.rst:1079
+msgid "Show total reference count at exit?"
+msgstr ""
+
+#: c-api/init_config.rst:1081
+msgid "Set to ``1`` by :option:`-X showrefcount <-X>` command line option."
msgstr ""
-#: c-api/init_config.rst:567
+#: c-api/init_config.rst:1083
msgid ""
-"Module search paths as a string separated by ``DELIM`` (:data:`os.path."
-"pathsep`)."
+"Need a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` "
+"macro must be defined)."
msgstr ""
-#: c-api/init_config.rst:570
+#: c-api/init_config.rst:1090
+msgid "Import the :mod:`site` module at startup?"
+msgstr ""
+
+#: c-api/init_config.rst:1092
msgid ""
-"Initialized from :envvar:`PYTHONPATH` environment variable value by default."
+"If equal to zero, disable the import of the module site and the site-"
+"dependent manipulations of :data:`sys.path` that it entails."
msgstr ""
-#: c-api/init_config.rst:576
+#: c-api/init_config.rst:1095
msgid ""
-":data:`sys.path`. If :c:member:`~PyConfig.module_search_paths_set` is equal "
-"to 0, the :c:member:`~PyConfig.module_search_paths` is overridden by the "
-"function calculating the :ref:`Path Configuration `."
+"Also disable these manipulations if the :mod:`site` module is explicitly "
+"imported later (call :func:`site.main` if you want them to be triggered)."
msgstr ""
-#: c-api/init_config.rst:583
-msgid "Compilation optimization level:"
+#: c-api/init_config.rst:1098
+msgid "Set to ``0`` by the :option:`-S` command line option."
msgstr ""
-#: c-api/init_config.rst:585
-msgid "0: Peephole optimizer (and ``__debug__`` is set to ``True``)"
+#: c-api/init_config.rst:1100
+msgid ""
+":data:`sys.flags.no_site` is set to the inverted value of :c:member:"
+"`~PyConfig.site_import`."
+msgstr ""
+
+#: c-api/init_config.rst:1107
+msgid ""
+"If non-zero, skip the first line of the :c:member:`PyConfig.run_filename` "
+"source."
msgstr ""
-#: c-api/init_config.rst:586
-msgid "1: Remove assertions, set ``__debug__`` to ``False``"
+#: c-api/init_config.rst:1110
+msgid ""
+"It allows the usage of non-Unix forms of ``#!cmd``. This is intended for a "
+"DOS specific hack only."
msgstr ""
-#: c-api/init_config.rst:587
-msgid "2: Strip docstrings"
+#: c-api/init_config.rst:1113
+msgid "Set to ``1`` by the :option:`-x` command line option."
msgstr ""
-#: c-api/init_config.rst:591
+#: c-api/init_config.rst:1120
msgid ""
-"If non-zero, parse :c:member:`~PyConfig.argv` the same way the regular "
-"Python command line arguments, and strip Python arguments from :c:member:"
-"`~PyConfig.argv`: see :ref:`Command Line Arguments `."
+"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :"
+"data:`sys.stderr` (but :data:`sys.stderr` always uses "
+"``\"backslashreplace\"`` error handler)."
msgstr ""
-#: c-api/init_config.rst:598
+#: c-api/init_config.rst:1124
msgid ""
-"If non-zero, turn on parser debugging output (for expert only, depending on "
-"compilation options)."
+"If :c:func:`Py_SetStandardStreamEncoding` has been called, use its *error* "
+"and *errors* arguments if they are not ``NULL``."
msgstr ""
-#: c-api/init_config.rst:603
+#: c-api/init_config.rst:1127
msgid ""
-"If equal to 0, suppress warnings when calculating the :ref:`Path "
-"Configuration ` (Unix only, Windows does not log any "
-"warning). Otherwise, warnings are written into ``stderr``."
+"Use the :envvar:`PYTHONIOENCODING` environment variable if it is non-empty."
msgstr ""
-#: c-api/init_config.rst:609
-msgid ":data:`sys.prefix`."
+#: c-api/init_config.rst:1130
+msgid "Default encoding:"
msgstr ""
-#: c-api/init_config.rst:613
-msgid ""
-"Program name. Used to initialize :c:member:`~PyConfig.executable`, and in "
-"early error messages."
+#: c-api/init_config.rst:1132
+msgid "``\"UTF-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero."
msgstr ""
-#: c-api/init_config.rst:618
-msgid ":data:`sys.pycache_prefix`: ``.pyc`` cache prefix."
+#: c-api/init_config.rst:1133
+msgid "Otherwise, use the :term:`locale encoding`."
msgstr ""
-#: c-api/init_config.rst:620
-msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``."
+#: c-api/init_config.rst:1135
+msgid "Default error handler:"
+msgstr ""
+
+#: c-api/init_config.rst:1137
+msgid "On Windows: use ``\"surrogateescape\"``."
msgstr ""
-#: c-api/init_config.rst:624
+#: c-api/init_config.rst:1138
msgid ""
-"Quiet mode. For example, don't display the copyright and version messages in "
-"interactive mode."
+"``\"surrogateescape\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero, or "
+"if the LC_CTYPE locale is \"C\" or \"POSIX\"."
msgstr ""
-#: c-api/init_config.rst:629
-msgid "``python3 -c COMMAND`` argument. Used by :c:func:`Py_RunMain`."
+#: c-api/init_config.rst:1140
+msgid "``\"strict\"`` otherwise."
msgstr ""
-#: c-api/init_config.rst:633
-msgid "``python3 FILENAME`` argument. Used by :c:func:`Py_RunMain`."
+#: c-api/init_config.rst:1144
+msgid "Enable tracemalloc?"
msgstr ""
-#: c-api/init_config.rst:637
-msgid "``python3 -m MODULE`` argument. Used by :c:func:`Py_RunMain`."
+#: c-api/init_config.rst:1146
+msgid "If non-zero, call :func:`tracemalloc.start` at startup."
msgstr ""
-#: c-api/init_config.rst:641
-msgid "Show total reference count at exit?"
+#: c-api/init_config.rst:1148
+msgid ""
+"Set by :option:`-X tracemalloc=N <-X>` command line option and by the :"
+"envvar:`PYTHONTRACEMALLOC` environment variable."
msgstr ""
-#: c-api/init_config.rst:643
-msgid "Set to 1 by :option:`-X showrefcount <-X>` command line option."
+#: c-api/init_config.rst:1155
+msgid "Use :ref:`environment variables `?"
msgstr ""
-#: c-api/init_config.rst:645
-msgid "Need a debug build of Python (``Py_REF_DEBUG`` macro must be defined)."
+#: c-api/init_config.rst:1157
+msgid ""
+"If equals to zero, ignore the :ref:`environment variables `."
msgstr ""
-#: c-api/init_config.rst:649
-msgid "Import the :mod:`site` module at startup?"
+#: c-api/init_config.rst:1160
+msgid "Set to ``0`` by the :option:`-E` environment variable."
msgstr ""
-#: c-api/init_config.rst:653
-msgid "Skip the first line of the source?"
+#: c-api/init_config.rst:1166
+msgid "If non-zero, add the user site directory to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:658
-msgid ""
-"Encoding and encoding errors of :data:`sys.stdin`, :data:`sys.stdout` and :"
-"data:`sys.stderr`."
+#: c-api/init_config.rst:1168
+msgid "Set to ``0`` by the :option:`-s` and :option:`-I` command line options."
msgstr ""
-#: c-api/init_config.rst:663
-msgid "If non-zero, call :func:`tracemalloc.start` at startup."
+#: c-api/init_config.rst:1170
+msgid "Set to ``0`` by the :envvar:`PYTHONNOUSERSITE` environment variable."
msgstr ""
-#: c-api/init_config.rst:667
-msgid "If greater than 0, use :ref:`environment variables `."
+#: c-api/init_config.rst:1176
+msgid ""
+"Verbose mode. If greater than ``0``, print a message each time a module is "
+"imported, showing the place (filename or built-in module) from which it is "
+"loaded."
+msgstr ""
+
+#: c-api/init_config.rst:1180
+msgid ""
+"If greater or equal to ``2``, print a message for each file that is checked "
+"for when searching for a module. Also provides information on module cleanup "
+"at exit."
msgstr ""
-#: c-api/init_config.rst:671
-msgid "If non-zero, add user site directory to :data:`sys.path`."
+#: c-api/init_config.rst:1184
+msgid "Incremented by the :option:`-v` command line option."
msgstr ""
-#: c-api/init_config.rst:675
-msgid "If non-zero, enable verbose mode."
+#: c-api/init_config.rst:1186
+msgid "Set to the :envvar:`PYTHONVERBOSE` environment variable value."
msgstr ""
-#: c-api/init_config.rst:679
+#: c-api/init_config.rst:1192
msgid ""
-":data:`sys.warnoptions`: options of the :mod:`warnings` module to build "
-"warnings filters: lowest to highest priority."
+"Options of the :mod:`warnings` module to build warnings filters, lowest to "
+"highest priority: :data:`sys.warnoptions`."
msgstr ""
-#: c-api/init_config.rst:682
+#: c-api/init_config.rst:1195
msgid ""
"The :mod:`warnings` module adds :data:`sys.warnoptions` in the reverse "
"order: the last :c:member:`PyConfig.warnoptions` item becomes the first item "
"of :data:`warnings.filters` which is checked first (highest priority)."
msgstr ""
-#: c-api/init_config.rst:689
-msgid "If non-zero, write ``.pyc`` files."
+#: c-api/init_config.rst:1200
+msgid ""
+"The :option:`-W` command line options adds its value to :c:member:`~PyConfig."
+"warnoptions`, it can be used multiple times."
msgstr ""
-#: c-api/init_config.rst:691
+#: c-api/init_config.rst:1203
msgid ""
-":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:"
-"member:`~PyConfig.write_bytecode`."
+"The :envvar:`PYTHONWARNINGS` environment variable can also be used to add "
+"warning options. Multiple options can be specified, separated by commas (``,"
+"``)."
msgstr ""
-#: c-api/init_config.rst:696
-msgid ":data:`sys._xoptions`."
+#: c-api/init_config.rst:1211
+msgid ""
+"If equal to ``0``, Python won't try to write ``.pyc`` files on the import of "
+"source modules."
msgstr ""
-#: c-api/init_config.rst:700
-msgid "Enable PEG parser? Default: 1."
+#: c-api/init_config.rst:1214
+msgid ""
+"Set to ``0`` by the :option:`-B` command line option and the :envvar:"
+"`PYTHONDONTWRITEBYTECODE` environment variable."
msgstr ""
-#: c-api/init_config.rst:702
-msgid "Set to 0 by :option:`-X oldparser <-X>` and :envvar:`PYTHONOLDPARSER`."
+#: c-api/init_config.rst:1217
+msgid ""
+":data:`sys.dont_write_bytecode` is initialized to the inverted value of :c:"
+"member:`~PyConfig.write_bytecode`."
msgstr ""
-#: c-api/init_config.rst:704
-msgid "See also :pep:`617`."
+#: c-api/init_config.rst:1224
+msgid "Values of the :option:`-X` command line options: :data:`sys._xoptions`."
msgstr ""
-#: c-api/init_config.rst:708
+#: c-api/init_config.rst:1228
msgid ""
-"If ``parse_argv`` is non-zero, ``argv`` arguments are parsed the same way "
-"the regular Python parses command line arguments, and Python arguments are "
-"stripped from ``argv``: see :ref:`Command Line Arguments `."
+"If :c:member:`~PyConfig.parse_argv` is non-zero, :c:member:`~PyConfig.argv` "
+"arguments are parsed the same way the regular Python parses :ref:`command "
+"line arguments `, and Python arguments are stripped from :"
+"c:member:`~PyConfig.argv`."
msgstr ""
-#: c-api/init_config.rst:713
+#: c-api/init_config.rst:1233
msgid ""
-"The ``xoptions`` options are parsed to set other options: see :option:`-X` "
-"option."
+"The :c:member:`~PyConfig.xoptions` options are parsed to set other options: "
+"see the :option:`-X` command line option."
msgstr ""
-#: c-api/init_config.rst:718
+#: c-api/init_config.rst:1238
msgid "The ``show_alloc_count`` field has been removed."
msgstr ""
-#: c-api/init_config.rst:722
+#: c-api/init_config.rst:1242
msgid "Initialization with PyConfig"
msgstr ""
-#: c-api/init_config.rst:724
+#: c-api/init_config.rst:1244
msgid "Function to initialize Python:"
msgstr ""
-#: c-api/init_config.rst:728
+#: c-api/init_config.rst:1248
msgid "Initialize Python from *config* configuration."
msgstr ""
-#: c-api/init_config.rst:733
+#: c-api/init_config.rst:1253
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:1260
+msgid ""
+"The current configuration (``PyConfig`` type) is stored in "
+"``PyInterpreterState.config``."
+msgstr ""
+
+#: c-api/init_config.rst:1263
msgid "Example setting the program name::"
msgstr ""
-#: c-api/init_config.rst:765
+#: c-api/init_config.rst:1291
msgid ""
"More complete example modifying the default configuration, read the "
-"configuration, and then override some parameters::"
+"configuration, and then override some parameters. Note that since 3.11, many "
+"parameters are not calculated until initialization, and so values cannot be "
+"read from the configuration structure. Any values set before initialize is "
+"called will be left unchanged by initialization::"
msgstr ""
-#: c-api/init_config.rst:816
+#: c-api/init_config.rst:1354
msgid "Isolated Configuration"
msgstr ""
-#: c-api/init_config.rst:818
+#: c-api/init_config.rst:1356
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:1361
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:1366
msgid ""
-"Configuration files are still used with this configuration. Set the :ref:"
-"`Path Configuration ` (\"output fields\") to ignore these "
-"configuration files and avoid the function computing the default path "
-"configuration."
+"Configuration files are still used with this configuration to determine "
+"paths that are unspecified. Ensure :c:member:`PyConfig.home` is specified to "
+"avoid computing the default path configuration."
msgstr ""
-#: c-api/init_config.rst:837
+#: c-api/init_config.rst:1374
msgid "Python Configuration"
msgstr ""
-#: c-api/init_config.rst:839
+#: c-api/init_config.rst:1376
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:1380
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:1383
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
-msgid "Example of customized Python always running in isolated mode::"
+"This function enables C locale coercion (:pep:`538`) and :ref:`Python UTF-8 "
+"Mode ` (:pep:`540`) depending on the LC_CTYPE locale, :envvar:"
+"`PYTHONUTF8` and :envvar:`PYTHONCOERCECLOCALE` environment variables."
msgstr ""
-#: c-api/init_config.rst:889
-msgid "Path Configuration"
+#: c-api/init_config.rst:1392
+msgid "Python Path Configuration"
msgstr ""
-#: c-api/init_config.rst:891
+#: c-api/init_config.rst:1394
msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:"
msgstr ""
-#: c-api/init_config.rst:893
+#: c-api/init_config.rst:1396
msgid "Path configuration inputs:"
msgstr ""
-#: c-api/init_config.rst:895
+#: c-api/init_config.rst:1398
msgid ":c:member:`PyConfig.home`"
msgstr ""
-#: c-api/init_config.rst:896
+#: c-api/init_config.rst:1399
msgid ":c:member:`PyConfig.platlibdir`"
msgstr ""
-#: c-api/init_config.rst:897
+#: c-api/init_config.rst:1400
msgid ":c:member:`PyConfig.pathconfig_warnings`"
msgstr ""
-#: c-api/init_config.rst:898
+#: c-api/init_config.rst:1401
msgid ":c:member:`PyConfig.program_name`"
msgstr ""
-#: c-api/init_config.rst:899
+#: c-api/init_config.rst:1402
msgid ":c:member:`PyConfig.pythonpath_env`"
msgstr ""
-#: c-api/init_config.rst:900
+#: c-api/init_config.rst:1403
msgid "current working directory: to get absolute paths"
msgstr ""
-#: c-api/init_config.rst:901
+#: c-api/init_config.rst:1404
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:1406
msgid "``__PYVENV_LAUNCHER__`` environment variable"
msgstr ""
-#: c-api/init_config.rst:904
+#: c-api/init_config.rst:1407
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:1411
msgid "Path configuration output fields:"
msgstr ""
-#: c-api/init_config.rst:910
+#: c-api/init_config.rst:1413
msgid ":c:member:`PyConfig.base_exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:911
+#: c-api/init_config.rst:1414
msgid ":c:member:`PyConfig.base_executable`"
msgstr ""
-#: c-api/init_config.rst:912
+#: c-api/init_config.rst:1415
msgid ":c:member:`PyConfig.base_prefix`"
msgstr ""
-#: c-api/init_config.rst:913
+#: c-api/init_config.rst:1416
msgid ":c:member:`PyConfig.exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:914
+#: c-api/init_config.rst:1417
msgid ":c:member:`PyConfig.executable`"
msgstr ""
-#: c-api/init_config.rst:915
+#: c-api/init_config.rst:1418
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:1420
msgid ":c:member:`PyConfig.prefix`"
msgstr ""
-#: c-api/init_config.rst:919
+#: c-api/init_config.rst:1422
msgid ""
"If at least one \"output field\" is not set, Python calculates the path "
"configuration to fill unset fields. If :c:member:`~PyConfig."
-"module_search_paths_set` is equal to 0, :c:member:`~PyConfig."
+"module_search_paths_set` is equal to ``0``, :c:member:`~PyConfig."
"module_search_paths` is overridden and :c:member:`~PyConfig."
-"module_search_paths_set` is set to 1."
+"module_search_paths_set` is set to ``1``."
msgstr ""
-#: c-api/init_config.rst:925
+#: c-api/init_config.rst:1428
msgid ""
"It is possible to completely ignore the function calculating the default "
"path configuration by setting explicitly all path configuration output "
"fields listed above. A string is considered as set even if it is non-empty. "
"``module_search_paths`` is considered as set if ``module_search_paths_set`` "
-"is set to 1. In this case, path configuration input fields are ignored as "
-"well."
+"is set to ``1``. In this case, ``module_search_paths`` will be used without "
+"modification."
msgstr ""
-#: c-api/init_config.rst:932
+#: c-api/init_config.rst:1435
msgid ""
-"Set :c:member:`~PyConfig.pathconfig_warnings` to 0 to suppress warnings when "
-"calculating the path configuration (Unix only, Windows does not log any "
+"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:1438
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:1442
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:1444
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:1447
msgid "If :c:member:`~PyConfig.isolated` is zero:"
msgstr ""
-#: c-api/init_config.rst:946
+#: c-api/init_config.rst:1449
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:1451
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:1453
msgid "Otherwise, prepend an empty string to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:952
+#: c-api/init_config.rst:1455
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 +1843,172 @@ msgid ""
"data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:958
+#: c-api/init_config.rst:1461
msgid "The following configuration files are used by the path configuration:"
msgstr ""
-#: c-api/init_config.rst:960
+#: c-api/init_config.rst:1463
msgid "``pyvenv.cfg``"
msgstr ""
-#: c-api/init_config.rst:961
-msgid "``python._pth`` (Windows only)"
+#: c-api/init_config.rst:1464
+msgid "``._pth`` file (ex: ``python._pth``)"
msgstr ""
-#: c-api/init_config.rst:962
+#: c-api/init_config.rst:1465
msgid "``pybuilddir.txt`` (Unix only)"
msgstr ""
-#: c-api/init_config.rst:964
+#: c-api/init_config.rst:1467
+msgid "If a ``._pth`` file is present:"
+msgstr ""
+
+#: c-api/init_config.rst:1469
+msgid "Set :c:member:`~PyConfig.isolated` to ``1``."
+msgstr ""
+
+#: c-api/init_config.rst:1471
+msgid "Set :c:member:`~PyConfig.site_import` to ``0``."
+msgstr ""
+
+#: c-api/init_config.rst:1472
+msgid "Set :c:member:`~PyConfig.safe_path` to ``1``."
+msgstr ""
+
+#: c-api/init_config.rst:1474
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:1479
msgid "Py_RunMain()"
msgstr ""
-#: c-api/init_config.rst:973
+#: c-api/init_config.rst:1483
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:1488
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:1490
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:1493
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:1499
msgid "Py_GetArgcArgv()"
msgstr ""
-#: c-api/init_config.rst:993
+#: c-api/init_config.rst:1503
msgid "Get the original command line arguments, before Python modified them."
msgstr ""
-#: c-api/init_config.rst:997
+#: c-api/init_config.rst:1505
+msgid "See also :c:member:`PyConfig.orig_argv` member."
+msgstr ""
+
+#: c-api/init_config.rst:1509
msgid "Multi-Phase Initialization Private Provisional API"
msgstr ""
-#: c-api/init_config.rst:999
+#: c-api/init_config.rst:1511
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:1514
msgid "\"Core\" initialization phase, \"bare minimum Python\":"
msgstr ""
-#: c-api/init_config.rst:1004
+#: c-api/init_config.rst:1516
msgid "Builtin types;"
msgstr ""
-#: c-api/init_config.rst:1005
+#: c-api/init_config.rst:1517
msgid "Builtin exceptions;"
msgstr ""
-#: c-api/init_config.rst:1006
+#: c-api/init_config.rst:1518
msgid "Builtin and frozen modules;"
msgstr ""
-#: c-api/init_config.rst:1007
+#: c-api/init_config.rst:1519
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:1522
msgid "\"Main\" initialization phase, Python is fully initialized:"
msgstr ""
-#: c-api/init_config.rst:1012
+#: c-api/init_config.rst:1524
msgid "Install and configure :mod:`importlib`;"
msgstr ""
-#: c-api/init_config.rst:1013
+#: c-api/init_config.rst:1525
msgid "Apply the :ref:`Path Configuration `;"
msgstr ""
-#: c-api/init_config.rst:1014
+#: c-api/init_config.rst:1526
msgid "Install signal handlers;"
msgstr ""
-#: c-api/init_config.rst:1015
+#: c-api/init_config.rst:1527
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:1529
msgid ""
"Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;"
msgstr ""
-#: c-api/init_config.rst:1018
+#: c-api/init_config.rst:1530
msgid "Import the :mod:`site` module;"
msgstr ""
-#: c-api/init_config.rst:1019
+#: c-api/init_config.rst:1531
msgid "etc."
msgstr ""
-#: c-api/init_config.rst:1021
+#: c-api/init_config.rst:1533
msgid "Private provisional API:"
msgstr ""
-#: c-api/init_config.rst:1023
+#: c-api/init_config.rst:1535
msgid ""
-":c:member:`PyConfig._init_main`: if set to 0, :c:func:"
+":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:1537
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:1542
msgid ""
"Move to the \"Main\" initialization phase, finish the Python initialization."
msgstr ""
-#: c-api/init_config.rst:1032
+#: c-api/init_config.rst:1544
msgid ""
"No module is imported during the \"Core\" phase and the ``importlib`` module "
"is not configured: the :ref:`Path Configuration ` is only "
@@ -1360,14 +2017,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:1550
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:1554
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,8 +2032,16 @@ msgid ""
"until a proper public API is designed."
msgstr ""
-#: c-api/init_config.rst:1047
+#: c-api/init_config.rst:1559
msgid ""
"Example running Python code between \"Core\" and \"Main\" initialization "
"phases::"
msgstr ""
+
+#, fuzzy
+#~ msgid "Functions:"
+#~ msgstr "Fonctions"
+
+#, fuzzy
+#~ msgid "Interactive mode."
+#~ msgstr "Mode interactif"
diff --git a/c-api/intro.po b/c-api/intro.po
index 0cb8dfac03..006f916632 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -158,118 +158,159 @@ msgid ""
msgstr ""
#: c-api/intro.rst:110
+#, fuzzy
+msgid "Return the absolute value of ``x``."
+msgstr "Renvoie la valeur absolue de *x*."
+
+#: c-api/intro.rst:116
msgid ""
-"Use this when you have a code path that cannot be reached by design. For "
-"example, in the ``default:`` clause in a ``switch`` statement for which all "
-"possible values are covered in ``case`` statements. Use this in places "
-"where you might be tempted to put an ``assert(0)`` or ``abort()`` call."
+"Ask the compiler to always inline a static inline function. The compiler can "
+"ignore it and decides to not inline the function."
msgstr ""
-#: c-api/intro.rst:115
+#: c-api/intro.rst:119
msgid ""
-"In release mode, the macro helps the compiler to optimize the code, and "
-"avoids a warning about unreachable code. For example, the macro is "
-"implemented with ``__builtin_unreachable()`` on GCC in release mode."
+"It can be used to inline performance critical static inline functions when "
+"building Python in debug mode with function inlining disabled. For example, "
+"MSC disables function inlining when building in debug mode."
msgstr ""
-#: c-api/intro.rst:119
+#: c-api/intro.rst:123
msgid ""
-"A use for ``Py_UNREACHABLE()`` is following a call a function that never "
-"returns but that is not declared :c:macro:`_Py_NO_RETURN`."
+"Marking blindly a static inline function with Py_ALWAYS_INLINE can result in "
+"worse performances (due to increased code size for example). The compiler is "
+"usually smarter than the developer for the cost/benefit analysis."
msgstr ""
-#: c-api/intro.rst:122
+#: c-api/intro.rst:127
msgid ""
-"If a code path is very unlikely code but can be reached under exceptional "
-"case, this macro must not be used. For example, under low memory condition "
-"or if a system call returns a value out of the expected range. In this "
-"case, it's better to report the error to the caller. If the error cannot be "
-"reported to caller, :c:func:`Py_FatalError` can be used."
+"If Python is :ref:`built in debug mode ` (if the ``Py_DEBUG`` "
+"macro is defined), the :c:macro:`Py_ALWAYS_INLINE` macro does nothing."
msgstr ""
-#: c-api/intro.rst:132
-#, fuzzy
-msgid "Return the absolute value of ``x``."
-msgstr "Renvoie la valeur absolue de *x*."
+#: c-api/intro.rst:130
+msgid "It must be specified before the function return type. Usage::"
+msgstr ""
#: c-api/intro.rst:138
-msgid "Return the minimum value between ``x`` and ``y``."
+msgid ""
+"Argument must be a character or an integer in the range [-128, 127] or [0, "
+"255]. This macro returns ``c`` cast to an ``unsigned char``."
msgstr ""
-#: c-api/intro.rst:144
-msgid "Return the maximum value between ``x`` and ``y``."
+#: c-api/intro.rst:143
+msgid ""
+"Use this for deprecated declarations. The macro must be placed before the "
+"symbol name."
msgstr ""
+#: c-api/intro.rst:232 c-api/intro.rst:250
+msgid "Example::"
+msgstr "Exemple ::"
+
#: c-api/intro.rst:150
+msgid "MSVC support was added."
+msgstr ""
+
+#: c-api/intro.rst:155
msgid ""
-"Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``."
+"Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the "
+"command line (i.e. if ``Py_IgnoreEnvironmentFlag`` is set)."
msgstr ""
-#: c-api/intro.rst:157
+#: c-api/intro.rst:160
+msgid "Return the maximum value between ``x`` and ``y``."
+msgstr ""
+
+#: c-api/intro.rst:166
msgid "Return the size of a structure (``type``) ``member`` in bytes."
msgstr ""
-#: c-api/intro.rst:163
+#: c-api/intro.rst:172
+msgid "Return the minimum value between ``x`` and ``y``."
+msgstr ""
+
+#: c-api/intro.rst:178
msgid ""
-"Argument must be a character or an integer in the range [-128, 127] or [0, "
-"255]. This macro returns ``c`` cast to an ``unsigned char``."
+"Disable inlining on a function. For example, it reduces the C stack "
+"consumption: useful on LTO+PGO builds which heavily inline code (see :issue:"
+"`33720`)."
msgstr ""
-#: c-api/intro.rst:168
+#: c-api/intro.rst:182
+msgid "Usage::"
+msgstr ""
+
+#: c-api/intro.rst:190
msgid ""
-"Like ``getenv(s)``, but returns ``NULL`` if :option:`-E` was passed on the "
-"command line (i.e. if ``Py_IgnoreEnvironmentFlag`` is set)."
+"Convert ``x`` to a C string. E.g. ``Py_STRINGIFY(123)`` returns ``\"123\"``."
msgstr ""
-#: c-api/intro.rst:173
+#: c-api/intro.rst:197
msgid ""
-"Use this for unused arguments in a function definition to silence compiler "
-"warnings. Example: ``int func(int a, int Py_UNUSED(b)) { return a; }``."
+"Use this when you have a code path that cannot be reached by design. For "
+"example, in the ``default:`` clause in a ``switch`` statement for which all "
+"possible values are covered in ``case`` statements. Use this in places "
+"where you might be tempted to put an ``assert(0)`` or ``abort()`` call."
msgstr ""
-#: c-api/intro.rst:180
+#: c-api/intro.rst:202
msgid ""
-"Use this for deprecated declarations. The macro must be placed before the "
-"symbol name."
+"In release mode, the macro helps the compiler to optimize the code, and "
+"avoids a warning about unreachable code. For example, the macro is "
+"implemented with ``__builtin_unreachable()`` on GCC in release mode."
msgstr ""
-#: c-api/intro.rst:198 c-api/intro.rst:216
-msgid "Example::"
-msgstr "Exemple ::"
+#: c-api/intro.rst:206
+msgid ""
+"A use for ``Py_UNREACHABLE()`` is following a call a function that never "
+"returns but that is not declared :c:macro:`_Py_NO_RETURN`."
+msgstr ""
-#: c-api/intro.rst:187
-msgid "MSVC support was added."
+#: c-api/intro.rst:209
+msgid ""
+"If a code path is very unlikely code but can be reached under exceptional "
+"case, this macro must not be used. For example, under low memory condition "
+"or if a system call returns a value out of the expected range. In this "
+"case, it's better to report the error to the caller. If the error cannot be "
+"reported to caller, :c:func:`Py_FatalError` can be used."
msgstr ""
-#: c-api/intro.rst:192
+#: c-api/intro.rst:219
+msgid ""
+"Use this for unused arguments in a function definition to silence compiler "
+"warnings. Example: ``int func(int a, int Py_UNUSED(b)) { return a; }``."
+msgstr ""
+
+#: c-api/intro.rst:226
msgid ""
"Creates a variable with name ``name`` that can be used in docstrings. If "
"Python is built without docstrings, the value will be empty."
msgstr ""
-#: c-api/intro.rst:195
+#: c-api/intro.rst:229
msgid ""
"Use :c:macro:`PyDoc_STRVAR` for docstrings to support building Python "
"without docstrings, as specified in :pep:`7`."
msgstr ""
-#: c-api/intro.rst:210
+#: c-api/intro.rst:244
msgid ""
"Creates a docstring for the given input string or an empty string if "
"docstrings are disabled."
msgstr ""
-#: c-api/intro.rst:213
+#: c-api/intro.rst:247
msgid ""
"Use :c:macro:`PyDoc_STR` in specifying docstrings to support building Python "
"without docstrings, as specified in :pep:`7`."
msgstr ""
-#: c-api/intro.rst:227
+#: c-api/intro.rst:262
msgid "Objects, Types and Reference Counts"
msgstr ""
-#: c-api/intro.rst:231
+#: c-api/intro.rst:266
msgid ""
"Most Python/C API functions have one or more arguments as well as a return "
"value of type :c:type:`PyObject*`. This type is a pointer to an opaque data "
@@ -284,7 +325,7 @@ msgid ""
"objects."
msgstr ""
-#: c-api/intro.rst:242
+#: c-api/intro.rst:277
msgid ""
"All Python objects (even Python integers) have a :dfn:`type` and a :dfn:"
"`reference count`. An object's type determines what kind of object it is (e."
@@ -295,11 +336,11 @@ msgid ""
"a Python list."
msgstr ""
-#: c-api/intro.rst:253
+#: c-api/intro.rst:288
msgid "Reference Counts"
msgstr "Compteurs de références"
-#: c-api/intro.rst:255
+#: c-api/intro.rst:290
msgid ""
"The reference count is important because today's computers have a finite "
"(and often severely limited) memory size; it counts how many different "
@@ -313,7 +354,7 @@ msgid ""
"for now, the solution is \"don't do that.\")"
msgstr ""
-#: c-api/intro.rst:270
+#: c-api/intro.rst:305
msgid ""
"Reference counts are always manipulated explicitly. The normal way is to "
"use the macro :c:func:`Py_INCREF` to increment an object's reference count "
@@ -331,7 +372,7 @@ msgid ""
"reference count increment is a simple operation."
msgstr ""
-#: c-api/intro.rst:284
+#: c-api/intro.rst:319
msgid ""
"It is not necessary to increment an object's reference count for every "
"local variable that contains a pointer to an object. In theory, the "
@@ -348,7 +389,7 @@ msgid ""
"to hold a reference to every argument for the duration of the call."
msgstr ""
-#: c-api/intro.rst:298
+#: c-api/intro.rst:333
msgid ""
"However, a common pitfall is to extract an object from a list and hold on to "
"it for a while without incrementing its reference count. Some other "
@@ -359,7 +400,7 @@ msgid ""
"from a :c:func:`Py_DECREF`, so almost any operation is potentially dangerous."
msgstr ""
-#: c-api/intro.rst:306
+#: c-api/intro.rst:341
msgid ""
"A safe approach is to always use the generic operations (functions whose "
"name begins with ``PyObject_``, ``PyNumber_``, ``PySequence_`` or "
@@ -369,11 +410,11 @@ msgid ""
"becomes second nature."
msgstr ""
-#: c-api/intro.rst:316
+#: c-api/intro.rst:351
msgid "Reference Count Details"
msgstr ""
-#: c-api/intro.rst:318
+#: c-api/intro.rst:353
msgid ""
"The reference count behavior of functions in the Python/C API is best "
"explained in terms of *ownership of references*. Ownership pertains to "
@@ -386,11 +427,11 @@ msgid ""
"passing on this responsibility (usually to its caller). When a function "
"passes ownership of a reference on to its caller, the caller is said to "
"receive a *new* reference. When no ownership is transferred, the caller is "
-"said to *borrow* the reference. Nothing needs to be done for a borrowed "
-"reference."
+"said to *borrow* the reference. Nothing needs to be done for a :term:"
+"`borrowed reference`."
msgstr ""
-#: c-api/intro.rst:331
+#: c-api/intro.rst:366
msgid ""
"Conversely, when a calling function passes in a reference to an object, "
"there are two possibilities: the function *steals* a reference to the "
@@ -399,7 +440,7 @@ msgid ""
"reference, and you are not responsible for it any longer."
msgstr ""
-#: c-api/intro.rst:341
+#: c-api/intro.rst:376
msgid ""
"Few functions steal references; the two notable exceptions are :c:func:"
"`PyList_SetItem` and :c:func:`PyTuple_SetItem`, which steal a reference to "
@@ -411,7 +452,7 @@ msgid ""
"below)::"
msgstr ""
-#: c-api/intro.rst:356
+#: c-api/intro.rst:391
msgid ""
"Here, :c:func:`PyLong_FromLong` returns a new reference which is immediately "
"stolen by :c:func:`PyTuple_SetItem`. When you want to keep using an object "
@@ -419,7 +460,7 @@ msgid ""
"another reference before calling the reference-stealing function."
msgstr ""
-#: c-api/intro.rst:361
+#: c-api/intro.rst:396
msgid ""
"Incidentally, :c:func:`PyTuple_SetItem` is the *only* way to set tuple "
"items; :c:func:`PySequence_SetItem` and :c:func:`PyObject_SetItem` refuse to "
@@ -427,13 +468,13 @@ msgid ""
"func:`PyTuple_SetItem` for tuples that you are creating yourself."
msgstr ""
-#: c-api/intro.rst:366
+#: c-api/intro.rst:401
msgid ""
"Equivalent code for populating a list can be written using :c:func:"
"`PyList_New` and :c:func:`PyList_SetItem`."
msgstr ""
-#: c-api/intro.rst:369
+#: c-api/intro.rst:404
msgid ""
"However, in practice, you will rarely use these ways of creating and "
"populating a tuple or list. There's a generic function, :c:func:"
@@ -442,7 +483,7 @@ msgid ""
"be replaced by the following (which also takes care of the error checking)::"
msgstr ""
-#: c-api/intro.rst:380
+#: c-api/intro.rst:415
msgid ""
"It is much more common to use :c:func:`PyObject_SetItem` and friends with "
"items whose references you are only borrowing, like arguments that were "
@@ -453,7 +494,7 @@ msgid ""
"sequence) to a given item::"
msgstr ""
-#: c-api/intro.rst:410
+#: c-api/intro.rst:445
msgid ""
"The situation is slightly different for function return values. While "
"passing a reference to most functions does not change your ownership "
@@ -466,7 +507,7 @@ msgid ""
"becomes the owner of the reference)."
msgstr ""
-#: c-api/intro.rst:419
+#: c-api/intro.rst:454
msgid ""
"It is important to realize that whether you own a reference returned by a "
"function depends on which function you call only --- *the plumage* (the type "
@@ -477,18 +518,18 @@ msgid ""
"the same arguments), you do own a reference to the returned object."
msgstr ""
-#: c-api/intro.rst:431
+#: c-api/intro.rst:466
msgid ""
"Here is an example of how you could write a function that computes the sum "
"of the items in a list of integers; once using :c:func:`PyList_GetItem`, "
"and once using :c:func:`PySequence_GetItem`. ::"
msgstr ""
-#: c-api/intro.rst:495
+#: c-api/intro.rst:530
msgid "Types"
msgstr ""
-#: c-api/intro.rst:497
+#: c-api/intro.rst:532
msgid ""
"There are few other data types that play a significant role in the Python/C "
"API; most are simple C types such as :c:type:`int`, :c:type:`long`, :c:type:"
@@ -499,11 +540,19 @@ msgid ""
"that use them."
msgstr ""
-#: c-api/intro.rst:509
+#: c-api/intro.rst:542
+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:551
msgid "Exceptions"
msgstr "Exceptions"
-#: c-api/intro.rst:511
+#: c-api/intro.rst:553
msgid ""
"The Python programmer only needs to deal with exceptions if specific error "
"handling is required; unhandled exceptions are automatically propagated to "
@@ -512,7 +561,7 @@ msgid ""
"stack traceback."
msgstr ""
-#: c-api/intro.rst:519
+#: c-api/intro.rst:561
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 +576,7 @@ msgid ""
"explicitly documented."
msgstr ""
-#: c-api/intro.rst:534
+#: c-api/intro.rst:576
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 +589,7 @@ msgid ""
"clears the exception state."
msgstr ""
-#: c-api/intro.rst:544
+#: c-api/intro.rst:586
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 +602,7 @@ msgid ""
"``sys.exc_info()`` and friends."
msgstr ""
-#: c-api/intro.rst:556
+#: c-api/intro.rst:598
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 +616,7 @@ msgid ""
"referenced by the stack frames in the traceback."
msgstr ""
-#: c-api/intro.rst:567
+#: c-api/intro.rst:609
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 +627,7 @@ msgid ""
"of the error."
msgstr ""
-#: c-api/intro.rst:576
+#: c-api/intro.rst:618
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 +636,11 @@ msgid ""
"why you like Python, we show the equivalent Python code::"
msgstr ""
-#: c-api/intro.rst:591
+#: c-api/intro.rst:633
msgid "Here is the corresponding C code, in all its glory::"
msgstr ""
-#: c-api/intro.rst:643
+#: c-api/intro.rst:685
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 +653,11 @@ msgid ""
"success after the final call made is successful."
msgstr ""
-#: c-api/intro.rst:657
+#: c-api/intro.rst:699
msgid "Embedding Python"
msgstr "Embarquer Python"
-#: c-api/intro.rst:659
+#: c-api/intro.rst:701
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 +665,7 @@ msgid ""
"the interpreter can only be used after the interpreter has been initialized."
msgstr ""
-#: c-api/intro.rst:672
+#: c-api/intro.rst:714
msgid ""
"The basic initialization function is :c:func:`Py_Initialize`. This "
"initializes the table of loaded modules, and creates the fundamental "
@@ -624,15 +673,15 @@ msgid ""
"initializes the module search path (``sys.path``)."
msgstr ""
-#: c-api/intro.rst:679
+#: c-api/intro.rst:719
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 "
-"later, it must be set explicitly with a call to ``PySys_SetArgvEx(argc, "
-"argv, updatepath)`` after the call to :c:func:`Py_Initialize`."
+"later, setting :c:member:`PyConfig.argv` and :c:member:`PyConfig.parse_argv` "
+"must be set: see :ref:`Python Initialization Configuration `."
msgstr ""
-#: c-api/intro.rst:684
+#: c-api/intro.rst:724
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 +693,7 @@ msgid ""
"on the shell command search path (the environment variable :envvar:`PATH`)."
msgstr ""
-#: c-api/intro.rst:693
+#: c-api/intro.rst:733
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 +704,7 @@ msgid ""
"in front of the standard path by setting :envvar:`PYTHONPATH`."
msgstr ""
-#: c-api/intro.rst:708
+#: c-api/intro.rst:748
msgid ""
"The embedding application can steer the search by calling "
"``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note "
@@ -666,7 +715,7 @@ msgid ""
"func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)."
msgstr ""
-#: c-api/intro.rst:718
+#: c-api/intro.rst:758
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 +729,18 @@ msgid ""
"released."
msgstr ""
-#: c-api/intro.rst:732
+#: c-api/intro.rst:772
msgid "Debugging Builds"
msgstr ""
-#: c-api/intro.rst:734
+#: c-api/intro.rst:774
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:778
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,81 +750,34 @@ msgid ""
"section."
msgstr ""
-#: c-api/intro.rst:744
+#: c-api/intro.rst:784
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:"
-"`Py_DEBUG` is enabled in the Unix build by adding ``--with-pydebug`` to the :"
-"file:`./configure` command. It is also implied by the presence of the not-"
-"Python-specific :c:macro:`_DEBUG` macro. When :c:macro:`Py_DEBUG` is "
-"enabled in the Unix build, compiler optimization is disabled."
-msgstr ""
-
-#: c-api/intro.rst:751
-msgid ""
-"In addition to the reference count debugging described below, the following "
-"extra checks are performed:"
-msgstr ""
-
-#: c-api/intro.rst:754
-msgid "Extra checks are added to the object allocator."
-msgstr ""
-
-#: c-api/intro.rst:756
-msgid "Extra checks are added to the parser and compiler."
-msgstr ""
-
-#: c-api/intro.rst:758
-msgid ""
-"Downcasts from wide types to narrow types are checked for loss of "
-"information."
+"produces what is generally meant by :ref:`a debug build of Python `. :c:macro:`Py_DEBUG` is enabled in the Unix build by adding :option:"
+"`--with-pydebug` to the :file:`./configure` command. It is also implied by "
+"the presence of the not-Python-specific :c:macro:`_DEBUG` macro. When :c:"
+"macro:`Py_DEBUG` is enabled in the Unix build, compiler optimization is "
+"disabled."
msgstr ""
-#: c-api/intro.rst:760
+#: c-api/intro.rst:792
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
-msgid "Sanity checks of the input arguments are added to frame creation."
-msgstr ""
-
-#: c-api/intro.rst:765
-msgid ""
-"The storage for ints is initialized with a known invalid pattern to catch "
-"reference to uninitialized digits."
-msgstr ""
-
-#: c-api/intro.rst:768
-msgid ""
-"Low-level tracing and extra exception checking are added to the runtime "
-"virtual machine."
-msgstr ""
-
-#: c-api/intro.rst:771
-msgid "Extra checks are added to the memory arena implementation."
-msgstr ""
-
-#: c-api/intro.rst:773
-msgid "Extra debugging is added to the thread module."
-msgstr ""
-
-#: c-api/intro.rst:775
-msgid "There may be additional checks not mentioned here."
+"In addition to the reference count debugging described below, extra checks "
+"are performed, see :ref:`Python Debug Build `."
msgstr ""
-#: c-api/intro.rst:777
+#: c-api/intro.rst:795
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 "
+"Defining :c:macro:`Py_TRACE_REFS` enables reference tracing (see the :option:"
+"`configure --with-trace-refs option <--with-trace-refs>`). When defined, a "
+"circular doubly linked list of active objects is maintained by adding two "
"extra fields to every :c:type:`PyObject`. Total allocations are tracked as "
"well. Upon exit, all existing references are printed. (In interactive mode "
-"this happens after every statement run by the interpreter.) Implied by :c:"
-"macro:`Py_DEBUG`."
+"this happens after every statement run by the interpreter.)"
msgstr ""
-#: c-api/intro.rst:783
+#: c-api/intro.rst:802
msgid ""
"Please refer to :file:`Misc/SpecialBuilds.txt` in the Python source "
"distribution for more detailed information."
diff --git a/c-api/iter.po b/c-api/iter.po
index 97199fdd17..dfb7a0e14f 100644
--- a/c-api/iter.po
+++ b/c-api/iter.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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2018-02-15 00:33+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -25,17 +25,25 @@ msgstr "Il existe deux fonctions dédiées à l'interaction avec les itérateurs
#: c-api/iter.rst:12
#, fuzzy
msgid ""
-"Return true if the object *o* supports the iterator protocol. This function "
-"always succeeds."
+"Return non-zero if the object *o* can be safely passed to :c:func:"
+"`PyIter_Next`, and ``0`` otherwise. This function always succeeds."
msgstr "Renvoie vrai si l'objet *o* supporte le protocole d'itération."
-#: c-api/iter.rst:18
+#: c-api/iter.rst:17
#, fuzzy
msgid ""
-"Return the next value from the iteration *o*. The object must be an "
-"iterator (it is up to the caller to check this). If there are no remaining "
-"values, returns ``NULL`` with no exception set. If an error occurs while "
-"retrieving the item, returns ``NULL`` and passes along the exception."
+"Return non-zero if the object *o* provides the :class:`AsyncIterator` "
+"protocol, and ``0`` otherwise. This function always succeeds."
+msgstr "Renvoie vrai si l'objet *o* supporte le protocole d'itération."
+
+#: c-api/iter.rst:24
+#, fuzzy
+msgid ""
+"Return the next value from the iterator *o*. The object must be an iterator "
+"according to :c:func:`PyIter_Check` (it is up to the caller to check this). "
+"If there are no remaining values, returns ``NULL`` with no exception set. If "
+"an error occurs while retrieving the item, returns ``NULL`` and passes along "
+"the exception."
msgstr ""
"Renvoie la valeur suivante d'une itération de *o*. L'objet doit être un "
"itérateur (c'est à l'appelant de faire cette vérification). Renvoie *NULL* "
@@ -43,10 +51,35 @@ msgstr ""
"déclarant une exception si une erreur survient lors de la récupération d'un "
"élément."
-#: c-api/iter.rst:23
+#: c-api/iter.rst:30
msgid ""
"To write a loop which iterates over an iterator, the C code should look "
"something like this::"
msgstr ""
"Pour écrire une boucle itérant un itérateur, le code C devrait ressembler "
"à ::"
+
+#: c-api/iter.rst:59
+msgid ""
+"The enum value used to represent different results of :c:func:`PyIter_Send`."
+msgstr ""
+
+#: c-api/iter.rst:66
+msgid "Sends the *arg* value into the iterator *iter*. Returns:"
+msgstr ""
+
+#: c-api/iter.rst:68
+msgid ""
+"``PYGEN_RETURN`` if iterator returns. Return value is returned via *presult*."
+msgstr ""
+
+#: c-api/iter.rst:69
+msgid ""
+"``PYGEN_NEXT`` if iterator yields. Yielded value is returned via *presult*."
+msgstr ""
+
+#: c-api/iter.rst:70
+msgid ""
+"``PYGEN_ERROR`` if iterator has raised and exception. *presult* is set to "
+"``NULL``."
+msgstr ""
diff --git a/c-api/list.po b/c-api/list.po
index 42f3d1a4c3..3126c8a6c6 100644
--- a/c-api/list.po
+++ b/c-api/list.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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -65,7 +65,7 @@ msgid ""
msgstr ""
#: c-api/list.rst:56
-msgid "Macro form of :c:func:`PyList_Size` without error checking."
+msgid "Similar to :c:func:`PyList_Size`, but without error checking."
msgstr ""
#: c-api/list.rst:61
@@ -77,7 +77,7 @@ msgid ""
msgstr ""
#: c-api/list.rst:69
-msgid "Macro form of :c:func:`PyList_GetItem` without error checking."
+msgid "Similar to :c:func:`PyList_GetItem`, but without error checking."
msgstr ""
#: c-api/list.rst:74
diff --git a/c-api/long.po b/c-api/long.po
index 6d9368fb4c..1e8e4f005d 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: 2022-05-22 23:13+0200\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 ""
@@ -126,53 +126,43 @@ msgid ""
msgstr ""
#: c-api/long.rst:99
-msgid "Convert a sequence of Unicode digits to a Python integer value."
-msgstr ""
-
-#: c-api/long.rst:103
-msgid ""
-"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
-"func:`PyLong_FromUnicodeObject`."
-msgstr ""
-
-#: c-api/long.rst:108
msgid ""
"Convert a sequence of Unicode digits in the string *u* to a Python integer "
"value."
msgstr ""
-#: c-api/long.rst:116
+#: c-api/long.rst:107
msgid ""
"Create a Python integer from the pointer *p*. The pointer value can be "
"retrieved from the resulting value using :c:func:`PyLong_AsVoidPtr`."
msgstr ""
-#: c-api/long.rst:146
+#: c-api/long.rst:136
msgid ""
"Return a C :c:type:`long` representation of *obj*. If *obj* is not an "
-"instance of :c:type:`PyLongObject`, first call its :meth:`__index__` or :"
-"meth:`__int__` method (if present) to convert it to a :c:type:`PyLongObject`."
+"instance of :c:type:`PyLongObject`, first call its :meth:`__index__` method "
+"(if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:132
+#: c-api/long.rst:122
msgid ""
"Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
"type:`long`."
msgstr ""
-#: c-api/long.rst:156 c-api/long.rst:199 c-api/long.rst:222
+#: c-api/long.rst:145 c-api/long.rst:186 c-api/long.rst:209
msgid "Returns ``-1`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
-#: c-api/long.rst:158 c-api/long.rst:203 c-api/long.rst:308
+#: c-api/long.rst:147 c-api/long.rst:190 c-api/long.rst:294
msgid "Use :meth:`__index__` if available."
msgstr ""
-#: c-api/long.rst:161 c-api/long.rst:206 c-api/long.rst:311
-msgid "Using :meth:`__int__` is deprecated."
+#: c-api/long.rst:150 c-api/long.rst:193 c-api/long.rst:297
+msgid "This function will no longer use :meth:`__int__`."
msgstr ""
-#: c-api/long.rst:151
+#: c-api/long.rst:140
msgid ""
"If the value of *obj* is greater than :const:`LONG_MAX` or less than :const:"
"`LONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and return "
@@ -180,20 +170,20 @@ msgid ""
"occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: c-api/long.rst:189
+#: c-api/long.rst:177
msgid ""
"Return a C :c:type:`long long` representation of *obj*. If *obj* is not an "
-"instance of :c:type:`PyLongObject`, first call its :meth:`__index__` or :"
-"meth:`__int__` method (if present) to convert it to a :c:type:`PyLongObject`."
+"instance of :c:type:`PyLongObject`, first call its :meth:`__index__` method "
+"(if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:175
+#: c-api/long.rst:163
msgid ""
"Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
"type:`long long`."
msgstr ""
-#: c-api/long.rst:194
+#: c-api/long.rst:181
msgid ""
"If the value of *obj* is greater than :const:`LLONG_MAX` or less than :const:"
"`LLONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, and return "
@@ -201,134 +191,133 @@ msgid ""
"occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: c-api/long.rst:216
+#: c-api/long.rst:203
msgid ""
"Return a C :c:type:`Py_ssize_t` representation of *pylong*. *pylong* must "
"be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:219
+#: c-api/long.rst:206
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`Py_ssize_t`."
msgstr ""
-#: c-api/long.rst:231
+#: c-api/long.rst:218
msgid ""
"Return a C :c:type:`unsigned long` representation of *pylong*. *pylong* "
"must be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:234
+#: c-api/long.rst:221
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`unsigned long`."
msgstr ""
-#: c-api/long.rst:237
+#: c-api/long.rst:224
msgid ""
"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:247
+#: c-api/long.rst:234
msgid ""
"Return a C :c:type:`size_t` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:250
+#: c-api/long.rst:237
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`size_t`."
msgstr ""
-#: c-api/long.rst:253
+#: c-api/long.rst:240
msgid ""
"Returns ``(size_t)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:262
+#: c-api/long.rst:249
msgid ""
"Return a C :c:type:`unsigned long long` representation of *pylong*. "
"*pylong* must be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:265
+#: c-api/long.rst:252
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :"
"c:type:`unsigned long long`."
msgstr ""
-#: c-api/long.rst:268
+#: c-api/long.rst:255
msgid ""
"Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:271
+#: c-api/long.rst:258
msgid ""
"A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`."
msgstr ""
-#: c-api/long.rst:277
+#: c-api/long.rst:264
msgid ""
"Return a C :c:type:`unsigned long` representation of *obj*. If *obj* is not "
-"an instance of :c:type:`PyLongObject`, first call its :meth:`__index__` or :"
-"meth:`__int__` method (if present) to convert it to a :c:type:`PyLongObject`."
+"an instance of :c:type:`PyLongObject`, first call its :meth:`__index__` "
+"method (if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:282
+#: c-api/long.rst:268
msgid ""
"If the value of *obj* is out of range for an :c:type:`unsigned long`, return "
"the reduction of that value modulo ``ULONG_MAX + 1``."
msgstr ""
-#: c-api/long.rst:285
+#: c-api/long.rst:271
msgid ""
"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:297
+#: c-api/long.rst:283
msgid ""
"Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* "
"is not an instance of :c:type:`PyLongObject`, first call its :meth:"
-"`__index__` or :meth:`__int__` method (if present) to convert it to a :c:"
-"type:`PyLongObject`."
+"`__index__` method (if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:302
+#: c-api/long.rst:288
msgid ""
"If the value of *obj* is out of range for an :c:type:`unsigned long long`, "
"return the reduction of that value modulo ``ULLONG_MAX + 1``."
msgstr ""
-#: c-api/long.rst:305
+#: c-api/long.rst:291
msgid ""
"Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` "
"to disambiguate."
msgstr ""
-#: c-api/long.rst:317
+#: c-api/long.rst:303
msgid ""
"Return a C :c:type:`double` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:320
+#: c-api/long.rst:306
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`double`."
msgstr ""
-#: c-api/long.rst:323
+#: c-api/long.rst:309
msgid ""
"Returns ``-1.0`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
-#: c-api/long.rst:328
+#: c-api/long.rst:314
msgid ""
"Convert a Python integer *pylong* to a C :c:type:`void` pointer. If *pylong* "
"cannot be converted, an :exc:`OverflowError` will be raised. This is only "
@@ -336,7 +325,7 @@ msgid ""
"c:func:`PyLong_FromVoidPtr`."
msgstr ""
-#: c-api/long.rst:333
+#: c-api/long.rst:319
msgid ""
"Returns ``NULL`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
diff --git a/c-api/mapping.po b/c-api/mapping.po
index 4f1d3a2386..e99c3d4008 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: 2022-05-22 23:13+0200\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..637efa2eab 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -105,18 +105,71 @@ msgid ""
"new pymalloc object arena is created, and on shutdown."
msgstr ""
-#: c-api/memory.rst:97
+#: c-api/memory.rst:96
+msgid "Allocator Domains"
+msgstr ""
+
+#: c-api/memory.rst:98
+msgid ""
+"All allocating functions belong to one of three different \"domains\" (see "
+"also :c:type:`PyMemAllocatorDomain`). These domains represent different "
+"allocation strategies and are optimized for different purposes. The specific "
+"details on how every domain allocates memory or what internal functions each "
+"domain calls is considered an implementation detail, but for debugging "
+"purposes a simplified table can be found at :ref:`here `. There is no hard requirement to use the memory returned by the "
+"allocation functions belonging to a given domain for only the purposes "
+"hinted by that domain (although this is the recommended practice). For "
+"example, one could use the memory returned by :c:func:`PyMem_RawMalloc` for "
+"allocating Python objects or the memory returned by :c:func:"
+"`PyObject_Malloc` for allocating memory for buffers."
+msgstr ""
+
+#: c-api/memory.rst:110
+msgid "The three allocation domains are:"
+msgstr ""
+
+#: c-api/memory.rst:112
+msgid ""
+"Raw domain: intended for allocating memory for general-purpose memory "
+"buffers where the allocation *must* go to the system allocator or where the "
+"allocator can operate without the :term:`GIL`. The memory is requested "
+"directly to the system."
+msgstr ""
+
+#: c-api/memory.rst:117
+msgid ""
+"\"Mem\" domain: intended for allocating memory for Python buffers and "
+"general-purpose memory buffers where the allocation must be performed with "
+"the :term:`GIL` held. The memory is taken from the Python private heap."
+msgstr ""
+
+#: c-api/memory.rst:121
+msgid ""
+"Object domain: intended for allocating memory belonging to Python objects. "
+"The memory is taken from the Python private heap."
+msgstr ""
+
+#: c-api/memory.rst:124
+msgid ""
+"When freeing memory previously allocated by the allocating functions "
+"belonging to a given domain,the matching specific deallocating functions "
+"must be used. For example, :c:func:`PyMem_Free` must be used to free memory "
+"allocated using :c:func:`PyMem_Malloc`."
+msgstr ""
+
+#: c-api/memory.rst:129
msgid "Raw Memory Interface"
msgstr ""
-#: c-api/memory.rst:99
+#: c-api/memory.rst:131
msgid ""
"The following function sets are wrappers to the system allocator. These "
"functions are thread-safe, the :term:`GIL ` does "
"not need to be held."
msgstr ""
-#: c-api/memory.rst:103
+#: c-api/memory.rst:135
msgid ""
"The :ref:`default raw memory allocator ` uses the "
"following functions: :c:func:`malloc`, :c:func:`calloc`, :c:func:`realloc` "
@@ -124,60 +177,60 @@ msgid ""
"zero bytes."
msgstr ""
-#: c-api/memory.rst:183 c-api/memory.rst:285
+#: c-api/memory.rst:215 c-api/memory.rst:323
msgid ""
"Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the "
"allocated memory, or ``NULL`` if the request fails."
msgstr ""
-#: c-api/memory.rst:115
+#: c-api/memory.rst:147
msgid ""
"Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, "
"as if ``PyMem_RawMalloc(1)`` had been called instead. The memory will not "
"have been initialized in any way."
msgstr ""
-#: c-api/memory.rst:193 c-api/memory.rst:295
+#: c-api/memory.rst:225 c-api/memory.rst:333
msgid ""
"Allocates *nelem* elements each whose size in bytes is *elsize* and returns "
"a pointer of type :c:type:`void*` to the allocated memory, or ``NULL`` if "
"the request fails. The memory is initialized to zeros."
msgstr ""
-#: c-api/memory.rst:126
+#: c-api/memory.rst:158
msgid ""
"Requesting zero elements or elements of size zero bytes returns a distinct "
"non-``NULL`` pointer if possible, as if ``PyMem_RawCalloc(1, 1)`` had been "
"called instead."
msgstr ""
-#: c-api/memory.rst:206 c-api/memory.rst:308
+#: c-api/memory.rst:238 c-api/memory.rst:346
msgid ""
"Resizes the memory block pointed to by *p* to *n* bytes. The contents will "
"be unchanged to the minimum of the old and the new sizes."
msgstr ""
-#: c-api/memory.rst:138
+#: c-api/memory.rst:170
msgid ""
"If *p* is ``NULL``, the call is equivalent to ``PyMem_RawMalloc(n)``; else "
"if *n* is equal to zero, the memory block is resized but is not freed, and "
"the returned pointer is non-``NULL``."
msgstr ""
-#: c-api/memory.rst:142
+#: c-api/memory.rst:174
msgid ""
"Unless *p* is ``NULL``, it must have been returned by a previous call to :c:"
"func:`PyMem_RawMalloc`, :c:func:`PyMem_RawRealloc` or :c:func:"
"`PyMem_RawCalloc`."
msgstr ""
-#: c-api/memory.rst:146
+#: c-api/memory.rst:178
msgid ""
"If the request fails, :c:func:`PyMem_RawRealloc` returns ``NULL`` and *p* "
"remains a valid pointer to the previous memory area."
msgstr ""
-#: c-api/memory.rst:152
+#: c-api/memory.rst:184
msgid ""
"Frees the memory block pointed to by *p*, which must have been returned by a "
"previous call to :c:func:`PyMem_RawMalloc`, :c:func:`PyMem_RawRealloc` or :c:"
@@ -185,72 +238,72 @@ msgid ""
"called before, undefined behavior occurs."
msgstr ""
-#: c-api/memory.rst:227 c-api/memory.rst:329
+#: c-api/memory.rst:259 c-api/memory.rst:367
msgid "If *p* is ``NULL``, no operation is performed."
msgstr ""
-#: c-api/memory.rst:163
+#: c-api/memory.rst:195
msgid "Memory Interface"
msgstr ""
-#: c-api/memory.rst:271
+#: c-api/memory.rst:303
msgid ""
"The following function sets, modeled after the ANSI C standard, but "
"specifying behavior when requesting zero bytes, are available for allocating "
"and releasing memory from the Python heap."
msgstr ""
-#: c-api/memory.rst:169
+#: c-api/memory.rst:201
msgid ""
"The :ref:`default memory allocator ` uses the :"
"ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:280
+#: c-api/memory.rst:318
msgid ""
"The :term:`GIL ` must be held when using these "
"functions."
msgstr ""
-#: c-api/memory.rst:179
+#: c-api/memory.rst:211
msgid ""
"The default allocator is now pymalloc instead of system :c:func:`malloc`."
msgstr ""
-#: c-api/memory.rst:186
+#: c-api/memory.rst:218
msgid ""
"Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, "
"as if ``PyMem_Malloc(1)`` had been called instead. The memory will not have "
"been initialized in any way."
msgstr ""
-#: c-api/memory.rst:197
+#: c-api/memory.rst:229
msgid ""
"Requesting zero elements or elements of size zero bytes returns a distinct "
"non-``NULL`` pointer if possible, as if ``PyMem_Calloc(1, 1)`` had been "
"called instead."
msgstr ""
-#: c-api/memory.rst:209
+#: c-api/memory.rst:241
msgid ""
"If *p* is ``NULL``, the call is equivalent to ``PyMem_Malloc(n)``; else if "
"*n* is equal to zero, the memory block is resized but is not freed, and the "
"returned pointer is non-``NULL``."
msgstr ""
-#: c-api/memory.rst:213
+#: c-api/memory.rst:245
msgid ""
"Unless *p* is ``NULL``, it must have been returned by a previous call to :c:"
"func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:`PyMem_Calloc`."
msgstr ""
-#: c-api/memory.rst:216
+#: c-api/memory.rst:248
msgid ""
"If the request fails, :c:func:`PyMem_Realloc` returns ``NULL`` and *p* "
"remains a valid pointer to the previous memory area."
msgstr ""
-#: c-api/memory.rst:222
+#: c-api/memory.rst:254
msgid ""
"Frees the memory block pointed to by *p*, which must have been returned by a "
"previous call to :c:func:`PyMem_Malloc`, :c:func:`PyMem_Realloc` or :c:func:"
@@ -258,20 +311,20 @@ msgid ""
"undefined behavior occurs."
msgstr ""
-#: c-api/memory.rst:229
+#: c-api/memory.rst:261
msgid ""
"The following type-oriented macros are provided for convenience. Note that "
"*TYPE* refers to any C type."
msgstr ""
-#: c-api/memory.rst:235
+#: c-api/memory.rst:267
msgid ""
"Same as :c:func:`PyMem_Malloc`, but allocates ``(n * sizeof(TYPE))`` bytes "
"of memory. Returns a pointer cast to :c:type:`TYPE*`. The memory will not "
"have been initialized in any way."
msgstr ""
-#: c-api/memory.rst:242
+#: c-api/memory.rst:274
msgid ""
"Same as :c:func:`PyMem_Realloc`, but the memory block is resized to ``(n * "
"sizeof(TYPE))`` bytes. Returns a pointer cast to :c:type:`TYPE*`. On "
@@ -279,17 +332,17 @@ msgid ""
"event of failure."
msgstr ""
-#: c-api/memory.rst:247
+#: c-api/memory.rst:279
msgid ""
"This is a C preprocessor macro; *p* is always reassigned. Save the original "
"value of *p* to avoid losing memory when handling errors."
msgstr ""
-#: c-api/memory.rst:253
+#: c-api/memory.rst:285
msgid "Same as :c:func:`PyMem_Free`."
msgstr ""
-#: c-api/memory.rst:255
+#: c-api/memory.rst:287
msgid ""
"In addition, the following macro sets are provided for calling the Python "
"memory allocator directly, without involving the C API functions listed "
@@ -297,75 +350,83 @@ msgid ""
"across Python versions and is therefore deprecated in extension modules."
msgstr ""
-#: c-api/memory.rst:260
+#: c-api/memory.rst:292
msgid "``PyMem_MALLOC(size)``"
msgstr ""
-#: c-api/memory.rst:261
+#: c-api/memory.rst:293
msgid "``PyMem_NEW(type, size)``"
msgstr ""
-#: c-api/memory.rst:262
+#: c-api/memory.rst:294
msgid "``PyMem_REALLOC(ptr, size)``"
msgstr ""
-#: c-api/memory.rst:263
+#: c-api/memory.rst:295
msgid "``PyMem_RESIZE(ptr, type, size)``"
msgstr ""
-#: c-api/memory.rst:264
+#: c-api/memory.rst:296
msgid "``PyMem_FREE(ptr)``"
msgstr ""
-#: c-api/memory.rst:265
+#: c-api/memory.rst:297
msgid "``PyMem_DEL(ptr)``"
msgstr ""
-#: c-api/memory.rst:269
+#: c-api/memory.rst:301
msgid "Object allocators"
msgstr ""
-#: c-api/memory.rst:275
+#: c-api/memory.rst:308
+msgid ""
+"There is no guarantee that the memory returned by these allocators can be "
+"successfully cast to a Python object when intercepting the allocating "
+"functions in this domain by the methods described in the :ref:`Customize "
+"Memory Allocators ` section."
+msgstr ""
+
+#: c-api/memory.rst:313
msgid ""
"The :ref:`default object allocator ` uses the :"
"ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:288
+#: c-api/memory.rst:326
msgid ""
"Requesting zero bytes returns a distinct non-``NULL`` pointer if possible, "
"as if ``PyObject_Malloc(1)`` had been called instead. The memory will not "
"have been initialized in any way."
msgstr ""
-#: c-api/memory.rst:299
+#: c-api/memory.rst:337
msgid ""
"Requesting zero elements or elements of size zero bytes returns a distinct "
"non-``NULL`` pointer if possible, as if ``PyObject_Calloc(1, 1)`` had been "
"called instead."
msgstr ""
-#: c-api/memory.rst:311
+#: c-api/memory.rst:349
msgid ""
"If *p* is ``NULL``, the call is equivalent to ``PyObject_Malloc(n)``; else "
"if *n* is equal to zero, the memory block is resized but is not freed, and "
"the returned pointer is non-``NULL``."
msgstr ""
-#: c-api/memory.rst:315
+#: c-api/memory.rst:353
msgid ""
"Unless *p* is ``NULL``, it must have been returned by a previous call to :c:"
"func:`PyObject_Malloc`, :c:func:`PyObject_Realloc` or :c:func:"
"`PyObject_Calloc`."
msgstr ""
-#: c-api/memory.rst:318
+#: c-api/memory.rst:356
msgid ""
"If the request fails, :c:func:`PyObject_Realloc` returns ``NULL`` and *p* "
"remains a valid pointer to the previous memory area."
msgstr ""
-#: c-api/memory.rst:324
+#: c-api/memory.rst:362
msgid ""
"Frees the memory block pointed to by *p*, which must have been returned by a "
"previous call to :c:func:`PyObject_Malloc`, :c:func:`PyObject_Realloc` or :c:"
@@ -373,297 +434,337 @@ msgid ""
"called before, undefined behavior occurs."
msgstr ""
-#: c-api/memory.rst:335
+#: c-api/memory.rst:373
msgid "Default Memory Allocators"
msgstr ""
-#: c-api/memory.rst:337
+#: c-api/memory.rst:375
msgid "Default memory allocators:"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:378
msgid "Configuration"
msgstr "Configuration"
-#: c-api/memory.rst:340
+#: c-api/memory.rst:378
msgid "Name"
msgstr "Nom"
-#: c-api/memory.rst:340
+#: c-api/memory.rst:378
msgid "PyMem_RawMalloc"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:378
msgid "PyMem_Malloc"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:378
msgid "PyObject_Malloc"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:380
msgid "Release build"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:380
msgid "``\"pymalloc\"``"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:382
msgid "``malloc``"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:380
msgid "``pymalloc``"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:381
msgid "Debug build"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:381
msgid "``\"pymalloc_debug\"``"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:383
msgid "``malloc`` + debug"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:381
msgid "``pymalloc`` + debug"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:382
msgid "Release build, without pymalloc"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:382
msgid "``\"malloc\"``"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:383
msgid "Debug build, without pymalloc"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:383
msgid "``\"malloc_debug\"``"
msgstr ""
-#: c-api/memory.rst:348
+#: c-api/memory.rst:386
msgid "Legend:"
msgstr ""
-#: c-api/memory.rst:350
-msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable"
+#: c-api/memory.rst:388
+msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable."
msgstr ""
-#: c-api/memory.rst:351
+#: c-api/memory.rst:389
msgid ""
"``malloc``: system allocators from the standard C library, C functions: :c:"
-"func:`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`"
+"func:`malloc`, :c:func:`calloc`, :c:func:`realloc` and :c:func:`free`."
msgstr ""
-#: c-api/memory.rst:353
-msgid "``pymalloc``: :ref:`pymalloc memory allocator `"
+#: c-api/memory.rst:391
+msgid "``pymalloc``: :ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:354
+#: c-api/memory.rst:392
msgid ""
-"\"+ debug\": with debug hooks installed by :c:func:`PyMem_SetupDebugHooks`"
+"\"+ debug\": with :ref:`debug hooks on the Python memory allocators `."
+msgstr ""
+
+#: c-api/memory.rst:394
+msgid "\"Debug build\": :ref:`Python build in debug mode `."
msgstr ""
-#: c-api/memory.rst:358
+#: c-api/memory.rst:399
msgid "Customize Memory Allocators"
msgstr ""
-#: c-api/memory.rst:364
+#: c-api/memory.rst:405
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
+#: c-api/memory.rst:628
msgid "Field"
msgstr "Champ"
-#: c-api/memory.rst:513
+#: c-api/memory.rst:628
msgid "Meaning"
msgstr "Signification"
-#: c-api/memory.rst:515
+#: c-api/memory.rst:630
msgid "``void *ctx``"
msgstr "``void *ctx``"
-#: c-api/memory.rst:515
+#: c-api/memory.rst:630
msgid "user context passed as first argument"
msgstr ""
-#: c-api/memory.rst:372
+#: c-api/memory.rst:413
msgid "``void* malloc(void *ctx, size_t size)``"
msgstr "``void* malloc(void *ctx, size_t size)``"
-#: c-api/memory.rst:372
+#: c-api/memory.rst:413
msgid "allocate a memory block"
msgstr ""
-#: c-api/memory.rst:374
+#: c-api/memory.rst:415
msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``"
msgstr ""
-#: c-api/memory.rst:374
+#: c-api/memory.rst:415
msgid "allocate a memory block initialized with zeros"
msgstr ""
-#: c-api/memory.rst:377
+#: c-api/memory.rst:418
msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``"
msgstr ""
-#: c-api/memory.rst:377
+#: c-api/memory.rst:418
msgid "allocate or resize a memory block"
msgstr ""
-#: c-api/memory.rst:379
+#: c-api/memory.rst:420
msgid "``void free(void *ctx, void *ptr)``"
msgstr "``void free(void *ctx, void *ptr)``"
-#: c-api/memory.rst:379
+#: c-api/memory.rst:420
msgid "free a memory block"
msgstr ""
-#: c-api/memory.rst:382
+#: c-api/memory.rst:423
msgid ""
"The :c:type:`PyMemAllocator` structure was renamed to :c:type:"
"`PyMemAllocatorEx` and a new ``calloc`` field was added."
msgstr ""
-#: c-api/memory.rst:389
+#: c-api/memory.rst:430
msgid "Enum used to identify an allocator domain. Domains:"
msgstr ""
-#: c-api/memory.rst:402 c-api/memory.rst:411
+#: c-api/memory.rst:443 c-api/memory.rst:452
#, fuzzy
msgid "Functions:"
msgstr "Fonctions"
-#: c-api/memory.rst:395
+#: c-api/memory.rst:436
#, fuzzy
msgid ":c:func:`PyMem_RawMalloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:396
+#: c-api/memory.rst:437
#, fuzzy
msgid ":c:func:`PyMem_RawRealloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:397
+#: c-api/memory.rst:438
#, fuzzy
msgid ":c:func:`PyMem_RawCalloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:398
+#: c-api/memory.rst:439
msgid ":c:func:`PyMem_RawFree`"
msgstr ""
-#: c-api/memory.rst:404
+#: c-api/memory.rst:445
#, fuzzy
msgid ":c:func:`PyMem_Malloc`,"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:405
+#: c-api/memory.rst:446
#, fuzzy
msgid ":c:func:`PyMem_Realloc`"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:406
+#: c-api/memory.rst:447
#, fuzzy
msgid ":c:func:`PyMem_Calloc`"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:407
+#: c-api/memory.rst:448
msgid ":c:func:`PyMem_Free`"
msgstr ""
-#: c-api/memory.rst:413
+#: c-api/memory.rst:454
msgid ":c:func:`PyObject_Malloc`"
msgstr ""
-#: c-api/memory.rst:414
+#: c-api/memory.rst:455
msgid ":c:func:`PyObject_Realloc`"
msgstr ""
-#: c-api/memory.rst:415
+#: c-api/memory.rst:456
msgid ":c:func:`PyObject_Calloc`"
msgstr ""
-#: c-api/memory.rst:416
+#: c-api/memory.rst:457
msgid ":c:func:`PyObject_Free`"
msgstr ""
-#: c-api/memory.rst:420
+#: c-api/memory.rst:461
msgid "Get the memory block allocator of the specified domain."
msgstr ""
-#: c-api/memory.rst:425
+#: c-api/memory.rst:466
msgid "Set the memory block allocator of the specified domain."
msgstr ""
-#: c-api/memory.rst:427
+#: c-api/memory.rst:468
msgid ""
"The new allocator must return a distinct non-``NULL`` pointer when "
"requesting zero bytes."
msgstr ""
-#: c-api/memory.rst:430
+#: c-api/memory.rst:471
msgid ""
"For the :c:data:`PYMEM_DOMAIN_RAW` domain, the allocator must be thread-"
"safe: the :term:`GIL ` is not held when the "
"allocator is called."
msgstr ""
-#: c-api/memory.rst:434
+#: c-api/memory.rst:475
msgid ""
"If the new allocator is not a hook (does not call the previous allocator), "
"the :c:func:`PyMem_SetupDebugHooks` function must be called to reinstall the "
"debug hooks on top on the new allocator."
msgstr ""
-#: c-api/memory.rst:441
-msgid "Setup hooks to detect bugs in the Python memory allocator functions."
+#: c-api/memory.rst:479
+msgid ""
+"See also :c:member:`PyPreConfig.allocator` and :ref:`Preinitialize Python "
+"with PyPreConfig `."
msgstr ""
-#: c-api/memory.rst:443
+#: c-api/memory.rst:484
msgid ""
-"Newly allocated memory is filled with the byte ``0xCD`` (``CLEANBYTE``), "
-"freed memory is filled with the byte ``0xDD`` (``DEADBYTE``). Memory blocks "
-"are surrounded by \"forbidden bytes\" (``FORBIDDENBYTE``: byte ``0xFD``)."
+"Setup :ref:`debug hooks in the Python memory allocators ` "
+"to detect memory errors."
msgstr ""
-#: c-api/memory.rst:447
+#: c-api/memory.rst:491
+msgid "Debug hooks on the Python memory allocators"
+msgstr ""
+
+#: c-api/memory.rst:493
+msgid ""
+"When :ref:`Python is built in debug mode `, the :c:func:"
+"`PyMem_SetupDebugHooks` function is called at the :ref:`Python "
+"preinitialization ` to setup debug hooks on Python memory "
+"allocators to detect memory errors."
+msgstr ""
+
+#: c-api/memory.rst:498
+msgid ""
+"The :envvar:`PYTHONMALLOC` environment variable can be used to install debug "
+"hooks on a Python compiled in release mode (ex: ``PYTHONMALLOC=debug``)."
+msgstr ""
+
+#: c-api/memory.rst:501
+msgid ""
+"The :c:func:`PyMem_SetupDebugHooks` function can be used to set debug hooks "
+"after calling :c:func:`PyMem_SetAllocator`."
+msgstr ""
+
+#: c-api/memory.rst:504
+msgid ""
+"These debug hooks fill dynamically allocated memory blocks with special, "
+"recognizable bit patterns. Newly allocated memory is filled with the byte "
+"``0xCD`` (``PYMEM_CLEANBYTE``), freed memory is filled with the byte "
+"``0xDD`` (``PYMEM_DEADBYTE``). Memory blocks are surrounded by \"forbidden "
+"bytes\" filled with the byte ``0xFD`` (``PYMEM_FORBIDDENBYTE``). Strings of "
+"these bytes are unlikely to be valid addresses, floats, or ASCII strings."
+msgstr ""
+
+#: c-api/memory.rst:511
msgid "Runtime checks:"
msgstr ""
-#: c-api/memory.rst:449
+#: c-api/memory.rst:513
msgid ""
-"Detect API violations, ex: :c:func:`PyObject_Free` called on a buffer "
-"allocated by :c:func:`PyMem_Malloc`"
+"Detect API violations. For example, detect if :c:func:`PyObject_Free` is "
+"called on a memory block allocated by :c:func:`PyMem_Malloc`."
msgstr ""
-#: c-api/memory.rst:451
-msgid "Detect write before the start of the buffer (buffer underflow)"
+#: c-api/memory.rst:515
+msgid "Detect write before the start of the buffer (buffer underflow)."
msgstr ""
-#: c-api/memory.rst:452
-msgid "Detect write after the end of the buffer (buffer overflow)"
+#: c-api/memory.rst:516
+msgid "Detect write after the end of the buffer (buffer overflow)."
msgstr ""
-#: c-api/memory.rst:453
+#: c-api/memory.rst:517
msgid ""
"Check that the :term:`GIL ` is held when allocator "
"functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and :"
-"c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called"
+"c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called."
msgstr ""
-#: c-api/memory.rst:458
+#: c-api/memory.rst:522
msgid ""
"On error, the debug hooks use the :mod:`tracemalloc` module to get the "
"traceback where a memory block was allocated. The traceback is only "
@@ -671,35 +772,132 @@ msgid ""
"memory block was traced."
msgstr ""
-#: c-api/memory.rst:463
+#: c-api/memory.rst:527
msgid ""
-"These hooks are :ref:`installed by default ` if "
-"Python is compiled in debug mode. The :envvar:`PYTHONMALLOC` environment "
-"variable can be used to install debug hooks on a Python compiled in release "
-"mode."
+"Let *S* = ``sizeof(size_t)``. ``2*S`` bytes are added at each end of each "
+"block of *N* bytes requested. The memory layout is like so, where p "
+"represents the address returned by a malloc-like or realloc-like function "
+"(``p[i:j]`` means the slice of bytes from ``*(p+i)`` inclusive up to "
+"``*(p+j)`` exclusive; note that the treatment of negative indices differs "
+"from a Python slice):"
msgstr ""
-#: c-api/memory.rst:468
+#: c-api/memory.rst:534
+msgid "``p[-2*S:-S]``"
+msgstr ""
+
+#: c-api/memory.rst:534
msgid ""
-"This function now also works on Python compiled in release mode. On error, "
-"the debug hooks now use :mod:`tracemalloc` to get the traceback where a "
-"memory block was allocated. The debug hooks now also check if the GIL is "
-"held when functions of :c:data:`PYMEM_DOMAIN_OBJ` and :c:data:"
-"`PYMEM_DOMAIN_MEM` domains are called."
+"Number of bytes originally asked for. This is a size_t, big-endian (easier "
+"to read in a memory dump)."
msgstr ""
-#: c-api/memory.rst:475
+#: c-api/memory.rst:541
+msgid "``p[-S]``"
+msgstr ""
+
+#: c-api/memory.rst:537
+msgid "API identifier (ASCII character):"
+msgstr ""
+
+#: c-api/memory.rst:539
+msgid "``'r'`` for :c:data:`PYMEM_DOMAIN_RAW`."
+msgstr ""
+
+#: c-api/memory.rst:540
+msgid "``'m'`` for :c:data:`PYMEM_DOMAIN_MEM`."
+msgstr ""
+
+#: c-api/memory.rst:541
+msgid "``'o'`` for :c:data:`PYMEM_DOMAIN_OBJ`."
+msgstr ""
+
+#: c-api/memory.rst:544
+msgid "``p[-S+1:0]``"
+msgstr ""
+
+#: c-api/memory.rst:544
+msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads."
+msgstr ""
+
+#: c-api/memory.rst:553
+msgid "``p[0:N]``"
+msgstr ""
+
+#: c-api/memory.rst:547
msgid ""
-"Byte patterns ``0xCB`` (``CLEANBYTE``), ``0xDB`` (``DEADBYTE``) and ``0xFB`` "
-"(``FORBIDDENBYTE``) have been replaced with ``0xCD``, ``0xDD`` and ``0xFD`` "
-"to use the same values than Windows CRT debug ``malloc()`` and ``free()``."
+"The requested memory, filled with copies of PYMEM_CLEANBYTE, used to catch "
+"reference to uninitialized memory. When a realloc-like function is called "
+"requesting a larger memory block, the new excess bytes are also filled with "
+"PYMEM_CLEANBYTE. When a free-like function is called, these are overwritten "
+"with PYMEM_DEADBYTE, to catch reference to freed memory. When a realloc- "
+"like function is called requesting a smaller memory block, the excess old "
+"bytes are also filled with PYMEM_DEADBYTE."
msgstr ""
-#: c-api/memory.rst:485
+#: c-api/memory.rst:556
+msgid "``p[N:N+S]``"
+msgstr ""
+
+#: c-api/memory.rst:556
+msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads."
+msgstr ""
+
+#: c-api/memory.rst:567
+msgid "``p[N+S:N+2*S]``"
+msgstr ""
+
+#: c-api/memory.rst:559
+msgid ""
+"Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by "
+"default)."
+msgstr ""
+
+#: c-api/memory.rst:562
+msgid ""
+"A serial number, incremented by 1 on each call to a malloc-like or realloc-"
+"like function. Big-endian ``size_t``. If \"bad memory\" is detected later, "
+"the serial number gives an excellent way to set a breakpoint on the next "
+"run, to capture the instant at which this block was passed out. The static "
+"function bumpserialno() in obmalloc.c is the only place the serial number is "
+"incremented, and exists so you can set such a breakpoint easily."
+msgstr ""
+
+#: c-api/memory.rst:569
+msgid ""
+"A realloc-like or free-like function first checks that the "
+"PYMEM_FORBIDDENBYTE bytes at each end are intact. If they've been altered, "
+"diagnostic output is written to stderr, and the program is aborted via "
+"Py_FatalError(). The other main failure mode is provoking a memory error "
+"when a program reads up one of the special bit patterns and tries to use it "
+"as an address. If you get in a debugger then and look at the object, you're "
+"likely to see that it's entirely filled with PYMEM_DEADBYTE (meaning freed "
+"memory is getting used) or PYMEM_CLEANBYTE (meaning uninitialized memory is "
+"getting used)."
+msgstr ""
+
+#: c-api/memory.rst:578
+msgid ""
+"The :c:func:`PyMem_SetupDebugHooks` function now also works on Python "
+"compiled in release mode. On error, the debug hooks now use :mod:"
+"`tracemalloc` to get the traceback where a memory block was allocated. The "
+"debug hooks now also check if the GIL is held when functions of :c:data:"
+"`PYMEM_DOMAIN_OBJ` and :c:data:`PYMEM_DOMAIN_MEM` domains are called."
+msgstr ""
+
+#: c-api/memory.rst:586
+msgid ""
+"Byte patterns ``0xCB`` (``PYMEM_CLEANBYTE``), ``0xDB`` (``PYMEM_DEADBYTE``) "
+"and ``0xFB`` (``PYMEM_FORBIDDENBYTE``) have been replaced with ``0xCD``, "
+"``0xDD`` and ``0xFD`` to use the same values than Windows CRT debug "
+"``malloc()`` and ``free()``."
+msgstr ""
+
+#: c-api/memory.rst:596
msgid "The pymalloc allocator"
msgstr ""
-#: c-api/memory.rst:487
+#: c-api/memory.rst:598
msgid ""
"Python has a *pymalloc* allocator optimized for small objects (smaller or "
"equal to 512 bytes) with a short lifetime. It uses memory mappings called "
@@ -708,108 +906,115 @@ msgid ""
"512 bytes."
msgstr ""
-#: c-api/memory.rst:492
+#: c-api/memory.rst:603
msgid ""
"*pymalloc* is the :ref:`default allocator ` of "
"the :c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) and :c:data:"
"`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) domains."
msgstr ""
-#: c-api/memory.rst:496
+#: c-api/memory.rst:607
msgid "The arena allocator uses the following functions:"
msgstr ""
-#: c-api/memory.rst:498
+#: c-api/memory.rst:609
msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows,"
msgstr ""
-#: c-api/memory.rst:499
+#: c-api/memory.rst:610
msgid ":c:func:`mmap` and :c:func:`munmap` if available,"
msgstr ""
-#: c-api/memory.rst:500
+#: c-api/memory.rst:611
msgid ":c:func:`malloc` and :c:func:`free` otherwise."
msgstr ""
-#: c-api/memory.rst:503
+#: c-api/memory.rst:613
+msgid ""
+"This allocator is disabled if Python is configured with the :option:`--"
+"without-pymalloc` option. It can also be disabled at runtime using the :"
+"envvar:`PYTHONMALLOC` environment variable (ex: ``PYTHONMALLOC=malloc``)."
+msgstr ""
+
+#: c-api/memory.rst:618
msgid "Customize pymalloc Arena Allocator"
msgstr ""
-#: c-api/memory.rst:509
+#: c-api/memory.rst:624
msgid ""
"Structure used to describe an arena allocator. The structure has three "
"fields:"
msgstr ""
-#: c-api/memory.rst:517
+#: c-api/memory.rst:632
msgid "``void* alloc(void *ctx, size_t size)``"
msgstr "``void* alloc(void *ctx, size_t size)``"
-#: c-api/memory.rst:517
+#: c-api/memory.rst:632
msgid "allocate an arena of size bytes"
msgstr ""
-#: c-api/memory.rst:519
+#: c-api/memory.rst:634
#, fuzzy
msgid "``void free(void *ctx, void *ptr, size_t size)``"
msgstr "``void free(void *ctx, void *ptr)``"
-#: c-api/memory.rst:519
+#: c-api/memory.rst:634
msgid "free an arena"
msgstr ""
-#: c-api/memory.rst:524
+#: c-api/memory.rst:639
msgid "Get the arena allocator."
msgstr ""
-#: c-api/memory.rst:528
+#: c-api/memory.rst:643
msgid "Set the arena allocator."
msgstr ""
-#: c-api/memory.rst:532
+#: c-api/memory.rst:647
msgid "tracemalloc C API"
msgstr ""
-#: c-api/memory.rst:538
+#: c-api/memory.rst:653
msgid "Track an allocated memory block in the :mod:`tracemalloc` module."
msgstr ""
-#: c-api/memory.rst:540
+#: c-api/memory.rst:655
msgid ""
"Return ``0`` on success, return ``-1`` on error (failed to allocate memory "
"to store the trace). Return ``-2`` if tracemalloc is disabled."
msgstr ""
-#: c-api/memory.rst:543
+#: c-api/memory.rst:658
msgid "If memory block is already tracked, update the existing trace."
msgstr ""
-#: c-api/memory.rst:547
+#: c-api/memory.rst:662
msgid ""
"Untrack an allocated memory block in the :mod:`tracemalloc` module. Do "
"nothing if the block was not tracked."
msgstr ""
-#: c-api/memory.rst:550
+#: c-api/memory.rst:665
msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``."
msgstr ""
-#: c-api/memory.rst:556
+#: c-api/memory.rst:671
msgid "Examples"
msgstr "Exemples"
-#: c-api/memory.rst:558
+#: c-api/memory.rst:673
msgid ""
"Here is the example from section :ref:`memoryoverview`, rewritten so that "
"the I/O buffer is allocated from the Python heap by using the first function "
"set::"
msgstr ""
-#: c-api/memory.rst:571
+#: c-api/memory.rst:686
msgid "The same code using the type-oriented function set::"
msgstr ""
-#: c-api/memory.rst:583
+#: c-api/memory.rst:698
msgid ""
"Note that in the two examples above, the buffer is always manipulated via "
"functions belonging to the same set. Indeed, it is required to use the same "
@@ -819,14 +1024,14 @@ msgid ""
"different allocators operating on different heaps. ::"
msgstr ""
-#: c-api/memory.rst:598
+#: c-api/memory.rst:713
msgid ""
"In addition to the functions aimed at handling raw memory blocks from the "
"Python heap, objects in Python are allocated and released with :c:func:"
"`PyObject_New`, :c:func:`PyObject_NewVar` and :c:func:`PyObject_Del`."
msgstr ""
-#: c-api/memory.rst:602
+#: c-api/memory.rst:717
msgid ""
"These will be explained in the next chapter on defining and implementing new "
"object types in C."
diff --git a/c-api/method.po b/c-api/method.po
index 4519cfcf4d..bbeda89ead 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: 2022-05-22 23:13+0200\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..b55782c636 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: 2021-09-23 16:16+0200\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`."
+"`PyModule_AddObjectRef`."
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,79 @@ 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."
+"can be used from the module's initialization function."
msgstr ""
-#: c-api/module.rst:449
+#: c-api/module.rst:452
+msgid ""
+"On success, return ``0``. On error, raise an exception and return ``-1``."
+msgstr ""
+
+#: c-api/module.rst:454
+msgid ""
+"Return ``NULL`` if *value* is ``NULL``. It must be called with an exception "
+"raised in this case."
+msgstr ""
+
+#: c-api/module.rst:506
+msgid "Example usage::"
+msgstr ""
+
+#: c-api/module.rst:524
+msgid ""
+"The example can also be written without checking explicitly if *obj* is "
+"``NULL``::"
+msgstr ""
+
+#: c-api/module.rst:540
+msgid ""
+"Note that ``Py_XDECREF()`` should be used instead of ``Py_DECREF()`` in this "
+"case, since *obj* can be ``NULL``."
+msgstr ""
+
+#: c-api/module.rst:491
+msgid ""
+"Similar to :c:func:`PyModule_AddObjectRef`, but steals a reference to "
+"*value* on success (if it returns ``0``)."
+msgstr ""
+
+#: c-api/module.rst:494
+msgid ""
+"The new :c:func:`PyModule_AddObjectRef` function is recommended, since it is "
+"easy to introduce reference leaks by misusing the :c:func:"
+"`PyModule_AddObject` function."
+msgstr ""
+
+#: c-api/module.rst:500
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:503
msgid ""
"This means that its return value must be checked, and calling code must :c:"
-"func:`Py_DECREF` *value* manually on error. Example usage::"
+"func:`Py_DECREF` *value* manually on error."
msgstr ""
-#: c-api/module.rst:464
+#: c-api/module.rst:546
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:553
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:560
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 +571,11 @@ msgid ""
"error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:486
+#: c-api/module.rst:568
msgid "Add a string constant to *module*."
msgstr ""
-#: c-api/module.rst:490
+#: c-api/module.rst:572
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 +583,25 @@ msgid ""
"``-1`` on error, ``0`` on success."
msgstr ""
-#: c-api/module.rst:500
+#: c-api/module.rst:582
msgid "Module lookup"
msgstr ""
-#: c-api/module.rst:502
+#: c-api/module.rst:584
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:588
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:593
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 +610,18 @@ msgid ""
"to the interpreter state yet, it returns ``NULL``."
msgstr ""
-#: c-api/module.rst:518
+#: c-api/module.rst:600
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:603
msgid "Only effective on modules created using single-phase initialization."
msgstr ""
-#: c-api/module.rst:523
+#: c-api/module.rst:605
msgid ""
"Python calls ``PyState_AddModule`` automatically after importing a module, "
"so it is unnecessary (but harmless) to call it from module initialization "
@@ -584,15 +632,15 @@ msgid ""
"state updates)."
msgstr ""
-#: c-api/module.rst:542
+#: c-api/module.rst:624
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/module.rst:533
+#: c-api/module.rst:615
msgid "Return 0 on success or -1 on failure."
msgstr ""
-#: c-api/module.rst:539
+#: c-api/module.rst:621
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..6bc4ada36d 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: 2022-05-22 23:13+0200\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,66 @@ 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:260
+msgid ""
+"The result always has exact type :class:`int`. Previously, the result could "
+"have been an instance of a subclass of ``int``."
+msgstr ""
+
+#: c-api/number.rst:267
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 +273,26 @@ msgid ""
"`PyNumber_Index` first."
msgstr ""
-#: c-api/number.rst:271
+#: c-api/number.rst:276
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:279
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:289
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..509a3e564d 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: 2019-08-16 22:56+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -35,7 +35,7 @@ msgid ""
msgstr ""
"Traite proprement le renvoi de :c:data:`Py_NotImplemented` depuis "
"l'intérieur d'une fonction C (c'est-à-dire, incrémente le compteur de "
-"référence de `NotImplemented` et le renvoie)."
+"référence de ``NotImplemented`` et le renvoie)."
#: c-api/object.rst:24
msgid ""
@@ -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``."
+"Return non-zero if the object *o* is of type *type* or a subtype of *type*, "
+"and ``0`` otherwise. 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 "
@@ -498,6 +500,15 @@ msgid ""
"object cannot be iterated."
msgstr ""
+#: c-api/object.rst:364
+msgid ""
+"This is the equivalent to the Python expression ``aiter(o)``. Takes an :"
+"class:`AsyncIterable` object and returns an :class:`AsyncIterator` for it. "
+"This is typically a new iterator but if the argument is an :class:"
+"`AsyncIterator`, this returns itself. Raises :exc:`TypeError` and returns "
+"``NULL`` if the object cannot be iterated."
+msgstr ""
+
#~ msgid ""
#~ "Determine if the object *o* is callable. Return ``1`` if the object is "
#~ "callable and ``0`` otherwise. This function always succeeds."
diff --git a/c-api/refcounting.po b/c-api/refcounting.po
index 405d98f2c6..91751cf3b6 100644
--- a/c-api/refcounting.po
+++ b/c-api/refcounting.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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -25,27 +25,93 @@ msgid ""
msgstr ""
#: c-api/refcounting.rst:16
+msgid "Increment the reference count for object *o*."
+msgstr ""
+
+#: c-api/refcounting.rst:18
msgid ""
-"Increment the reference count for object *o*. The object must not be "
-"``NULL``; if you aren't sure that it isn't ``NULL``, use :c:func:"
-"`Py_XINCREF`."
+"This function is usually used to convert a :term:`borrowed reference` to a :"
+"term:`strong reference` in-place. The :c:func:`Py_NewRef` function can be "
+"used to create a new :term:`strong reference`."
msgstr ""
#: c-api/refcounting.rst:22
msgid ""
+"The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, "
+"use :c:func:`Py_XINCREF`."
+msgstr ""
+
+#: c-api/refcounting.rst:28
+msgid ""
"Increment the reference count for object *o*. The object may be ``NULL``, "
"in which case the macro has no effect."
msgstr ""
-#: c-api/refcounting.rst:28
+#: c-api/refcounting.rst:31
+msgid "See also :c:func:`Py_XNewRef`."
+msgstr ""
+
+#: c-api/refcounting.rst:36
+msgid ""
+"Create a new :term:`strong reference` to an object: increment the reference "
+"count of the object *o* and return the object *o*."
+msgstr ""
+
+#: c-api/refcounting.rst:39
msgid ""
-"Decrement the reference count for object *o*. The object must not be "
-"``NULL``; if you aren't sure that it isn't ``NULL``, use :c:func:"
-"`Py_XDECREF`. If the reference count reaches zero, the object's type's "
-"deallocation function (which must not be ``NULL``) is invoked."
+"When the :term:`strong reference` is no longer needed, :c:func:`Py_DECREF` "
+"should be called on it to decrement the object reference count."
msgstr ""
-#: c-api/refcounting.rst:35
+#: c-api/refcounting.rst:42
+msgid ""
+"The object *o* must not be ``NULL``; use :c:func:`Py_XNewRef` if *o* can be "
+"``NULL``."
+msgstr ""
+
+#: c-api/refcounting.rst:45
+msgid "For example::"
+msgstr ""
+
+#: c-api/refcounting.rst:50
+msgid "can be written as::"
+msgstr ""
+
+#: c-api/refcounting.rst:54
+msgid "See also :c:func:`Py_INCREF`."
+msgstr ""
+
+#: c-api/refcounting.rst:61
+msgid "Similar to :c:func:`Py_NewRef`, but the object *o* can be NULL."
+msgstr ""
+
+#: c-api/refcounting.rst:63
+msgid "If the object *o* is ``NULL``, the function just returns ``NULL``."
+msgstr ""
+
+#: c-api/refcounting.rst:70
+msgid "Decrement the reference count for object *o*."
+msgstr ""
+
+#: c-api/refcounting.rst:72
+msgid ""
+"If the reference count reaches zero, the object's type's deallocation "
+"function (which must not be ``NULL``) is invoked."
+msgstr ""
+
+#: c-api/refcounting.rst:75
+msgid ""
+"This function is usually used to delete a :term:`strong reference` before "
+"exiting its scope."
+msgstr ""
+
+#: c-api/refcounting.rst:78
+msgid ""
+"The object must not be ``NULL``; if you aren't sure that it isn't ``NULL``, "
+"use :c:func:`Py_XDECREF`."
+msgstr ""
+
+#: c-api/refcounting.rst:83
msgid ""
"The deallocation function can cause arbitrary Python code to be invoked (e."
"g. when a class instance with a :meth:`__del__` method is deallocated). "
@@ -58,14 +124,14 @@ msgid ""
"temporary variable."
msgstr ""
-#: c-api/refcounting.rst:47
+#: c-api/refcounting.rst:95
msgid ""
"Decrement the reference count for object *o*. The object may be ``NULL``, "
"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 ""
-#: c-api/refcounting.rst:54
+#: c-api/refcounting.rst:102
msgid ""
"Decrement the reference count for object *o*. The object may be ``NULL``, "
"in which case the macro has no effect; otherwise the effect is the same as "
@@ -75,21 +141,25 @@ msgid ""
"the argument to ``NULL`` before decrementing its reference count."
msgstr ""
-#: c-api/refcounting.rst:61
+#: c-api/refcounting.rst:109
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 ""
-#: c-api/refcounting.rst:65
+#: c-api/refcounting.rst:114
msgid ""
-"The following functions are for runtime dynamic embedding of Python: "
-"``Py_IncRef(PyObject *o)``, ``Py_DecRef(PyObject *o)``. They are simply "
-"exported function versions of :c:func:`Py_XINCREF` and :c:func:`Py_XDECREF`, "
-"respectively."
+"Increment the reference count for object *o*. A function version of :c:func:"
+"`Py_XINCREF`. It can be used for runtime dynamic embedding of Python."
msgstr ""
-#: c-api/refcounting.rst:70
+#: c-api/refcounting.rst:120
+msgid ""
+"Decrement the reference count for object *o*. A function version of :c:func:"
+"`Py_XDECREF`. It can be used for runtime dynamic embedding of Python."
+msgstr ""
+
+#: c-api/refcounting.rst:124
msgid ""
"The following functions or macros are only for use within the interpreter "
"core: :c:func:`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:"
diff --git a/c-api/reflection.po b/c-api/reflection.po
index 10deec6abc..c081828e62 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: 2022-03-23 18:39+0100\n"
"PO-Revision-Date: 2019-02-26 12:01+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -59,35 +59,6 @@ msgid "See also :c:func:`PyThreadState_GetFrame`."
msgstr ""
#: c-api/reflection.rst:36
-msgid "Get the *frame* next outer frame."
-msgstr ""
-
-#: c-api/reflection.rst:38
-msgid "Return a strong reference, or ``NULL`` if *frame* has no outer frame."
-msgstr ""
-
-#: c-api/reflection.rst:60
-msgid "*frame* must not be ``NULL``."
-msgstr ""
-
-#: c-api/reflection.rst:47
-msgid "Get the *frame* code."
-msgstr ""
-
-#: c-api/reflection.rst:49
-msgid "Return a strong reference."
-msgstr ""
-
-#: c-api/reflection.rst:51
-msgid ""
-"*frame* must not be ``NULL``. The result (frame code) cannot be ``NULL``."
-msgstr ""
-
-#: c-api/reflection.rst:58
-msgid "Return the line number that *frame* is currently executing."
-msgstr "Renvoie le numéro de ligne que *frame* est en train d'exécuter"
-
-#: c-api/reflection.rst:65
msgid ""
"Return the name of *func* if it is a function, class or instance object, "
"else the name of *func*\\s type."
@@ -95,7 +66,7 @@ msgstr ""
"Renvoie le nom de *func* s'il s'agit d'une fonction, d'une classe ou d'un "
"objet d'instance, sinon le nom du type de *func*"
-#: c-api/reflection.rst:71
+#: c-api/reflection.rst:42
msgid ""
"Return a description string, depending on the type of *func*. Return values "
"include \"()\" for functions and methods, \" constructor\", \" instance\", "
@@ -104,6 +75,9 @@ 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*"
+
+#~ msgid "Return the line number that *frame* is currently executing."
+#~ msgstr "Renvoie le numéro de ligne que *frame* est en train d'exécuter"
diff --git a/c-api/sequence.po b/c-api/sequence.po
index 15b5b657ac..b5cf5b641b 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: 2022-05-22 23:13+0200\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..6bfc46fbcc 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: 2022-05-22 23:13+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME