diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 3090945448..ec71c0146f 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 default-role --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($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), ' ') }}
@@ -64,14 +69,18 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- - uses: actions/checkout@v2
- - uses: actions/cache@v2
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
with:
path: '~/cpython/'
key: '1'
- - uses: actions/setup-python@v2
+ - uses: actions/cache@v3
with:
- python-version: '3.9'
+ path: ~/.cache/pip
+ key: '1'
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.10'
- name: Clone cpython
run: |
if [ ! -d ~/cpython ]; then
@@ -83,12 +92,10 @@ 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):
- # see https://github.com/actions/setup-python/issues/170
- [ -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 clean-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 6a7d190f50..03363622b8 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,12 +240,15 @@ 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.10 ». 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.10 ». On met donc à jour notre version locale.
.. code-block:: bash
@@ -122,12 +265,12 @@ fichier sur lequel on travaille. Par exemple, si vous travaillez sur
git checkout -b library-sys upstream/3.10
-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
@@ -183,30 +318,34 @@ documentation local :
make serve
-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.
+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.
+
+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``.
-*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.
@@ -309,33 +448,10 @@ 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 d087c51f6d..48251e3c0d 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 := cf739332bd039cd2303b58663a804f784883820d
-
-CPYTHON_PATH := ../cpython/
-
+CPYTHON_CURRENT_COMMIT := 100da7c31aeb3888962bf33c8cc3594272964815
LANGUAGE := fr
-BRANCH := 3.9
-
-EXCLUDED := whatsnew/ c-api/
+BRANCH := 3.10
+
+EXCLUDED := \
+ whatsnew/2.?.po \
+ whatsnew/3.[0-8].po \
+ c-api/ \
+ distutils/ \
+ install/ \
+ library/2to3.po \
+ library/distutils.po \
+ library/imp.po \
+ library/tkinter.tix.po \
+ library/test.po \
+ library/aifc.po \
+ library/asynchat.po \
+ library/asyncore.po \
+ library/audioop.po \
+ library/cgi.po \
+ library/cgitb.po \
+ library/chunk.po \
+ library/crypt.po \
+ library/imghdr.po \
+ library/msilib.po \
+ library/nntplib.po \
+ library/nis.po \
+ library/ossaudiodev.po \
+ library/pipes.po \
+ library/smtpd.po \
+ library/sndhdr.po \
+ library/spwd.po \
+ library/sunau.po \
+ library/telnetlib.po \
+ library/uu.po \
+ library/xdrlib.po
# Internal variables
@@ -38,6 +65,7 @@ PYTHON := $(shell which python3)
MODE := html
POSPELL_TMP_DIR := .pospell/
JOBS := auto
+SPHINXERRORHANDLING = -W
# Detect OS
@@ -58,69 +86,50 @@ endif
.PHONY: all
all: ensure_prerequisites
- git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT)
+ git -C venv/cpython checkout $(CPYTHON_CURRENT_COMMIT) || (git -C venv/cpython fetch && git -C venv/cpython checkout $(CPYTHON_CURRENT_COMMIT))
mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/
$(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/
- $(MAKE) -C $(CPYTHON_PATH)/Doc/ \
- SPHINXOPTS='-W -j$(JOBS) \
- -D locale_dirs=$(abspath locales) \
+ $(MAKE) -C venv/cpython/Doc/ \
+ JOBS='$(JOBS)' \
+ SPHINXOPTS='-D locale_dirs=$(abspath locales) \
-D language=$(LANGUAGE) \
- -D gettext_compact=0 \
+ -D gettext_compact=0 \
-D latex_engine=xelatex \
-D latex_elements.inputenc= \
-D latex_elements.fontenc=' \
+ SPHINXERRORHANDLING=$(SPHINXERRORHANDLING) \
$(MODE)
- @echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them."
+ @echo "Build success, open file://$(abspath venv/cpython/)/Doc/build/html/index.html or run 'make htmlview' to see them."
+
+
+# We clone cpython/ inside venv/ because venv/ is the only directory
+# excluded by cpython' Sphinx configuration.
+venv/cpython/.git/HEAD:
+ git clone https://github.com/python/cpython venv/cpython
.PHONY: ensure_prerequisites
-ensure_prerequisites:
- @if [ -z $(CPYTHON_PATH) ]; then \
- echo "Your CPYTHON_PATH is empty, please provide one."; \
- exit 1; \
- fi
- @if ! [ -d $(CPYTHON_PATH) ]; then \
- echo "Building the translation requires a cpython clone."; \
- echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \
- echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \
- echo "So you may want to run:"; \
- echo ""; \
- echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \
- exit 1; \
- fi
- @if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \
- echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \
- echo "In order to avoid breaking things, please clean it first."; \
- exit 1; \
- fi
+ensure_prerequisites: venv/cpython/.git/HEAD
@if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \
- git -C $(CPYTHON_PATH) checkout $(BRANCH); \
- echo "You're missing dependencies, please enable a venv and install:"; \
+ git -C venv/cpython/ checkout $(BRANCH); \
+ echo "You're missing dependencies please install:"; \
echo ""; \
- echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \
+ echo " python -m pip install -r requirements.txt -r venv/cpython/Doc/requirements.txt"; \
exit 1; \
fi
-.PHONY: serve
-serve:
- $(MAKE) -C $(CPYTHON_PATH)/Doc/ serve
-
-
-.PHONY: progress
-progress:
- @$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \
- $(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \
- $(shell msgcat *.po */*.po | grep -c '^msgid')
-
+.PHONY: htmlview
+htmlview: MODE=htmlview
+htmlview: all
.PHONY: todo
todo: ensure_prerequisites
- potodo --exclude venv .venv $(EXCLUDED)
+ potodo --api-url 'https://git.afpy.org/api/v1/repos/AFPy/python-docs-fr/issues?state=open&type=issues' --exclude venv .venv $(EXCLUDED)
.PHONY: wrap
wrap: ensure_prerequisites
- @echo "Verify wrapping"
- powrap --check --quiet *.po **/*.po
+ @echo "Re wrapping modified files"
+ powrap -m
SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$')
# foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out
@@ -129,44 +138,51 @@ DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS)))
.PHONY: spell
spell: ensure_prerequisites $(DESTS)
+.PHONY: line-length
+line-length:
+ @echo "Searching for long lines..."
+ @awk '{if (length(gensub(/శ్రీనివాస్/, ".", "g", $$0)) > 80 && length(gensub(/[^ ]/, "", "g")) > 1) {print FILENAME ":" FNR, "line too long:", $$0; ERRORS+=1}} END {if (ERRORS>0) {exit 1}}' *.po */*.po
+
+.PHONY: sphinx-lint
+sphinx-lint:
+ @echo "Checking all files using sphinx-lint..."
+ @sphinx-lint --enable all --disable line-too-long *.po */*.po
+
$(POSPELL_TMP_DIR)/%.po.out: %.po dict
@echo "Pospell checking $<..."
- mkdir -p $(@D)
+ @mkdir -p $(@D)
pospell -p dict -l fr_FR $< && touch $@
.PHONY: fuzzy
fuzzy: ensure_prerequisites
- potodo -f --exclude venv .venv $(EXCLUDED)
+ potodo --only-fuzzy --api-url 'https://git.afpy.org/api/v1/repos/AFPy/python-docs-fr/issues?state=open&type=issues' --exclude venv .venv $(EXCLUDED)
+
+.PHONY: check-headers
+check-headers:
+ @grep -L '^# Copyright (C) [0-9-]*, Python Software Foundation' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the po comment in $$file"; \
+ done
+ @grep -L '^"Project-Id-Version: Python 3\\n"$$' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Project-Id-Version' header in $$file"; \
+ done
+ @grep -L '^"Language: fr\\n"$$' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Language' header in $$file"; \
+ done
+ @grep -L '^"Language-Team: FRENCH \\n"' *.po */*.po | while read -r file;\
+ do \
+ echo "Please update the 'Language-Team' header in $$file"; \
+ done
.PHONY: verifs
-verifs: wrap spell
-
-.PHONY: merge
-merge: ensure_prerequisites
- @echo "Merge from $(UPSTREAM)"
- git -C $(CPYTHON_PATH) checkout $(BRANCH)
- git -C $(CPYTHON_PATH) pull --ff-only
- (cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot)
- find $(CPYTHON_PATH)/pot/ -name '*.pot' |\
- while read -r POT; \
- do \
- PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \
- mkdir -p "$$(dirname "$$PO")"; \
- if [ -f "$$PO" ]; \
- then \
- msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \
- else \
- msgcat -o "$$PO" "$$POT"; \
- fi \
- done
- rm -fr $(CPYTHON_PATH)/pot/
- sed -i 's|^#: .*Doc/|#: |' *.po */*.po
- powrap -m
- @printf "\n%s %s\n" "Replace CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD)
- @printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done\n'
+verifs: spell line-length sphinx-lint check-headers
.PHONY: clean
clean:
@echo "Cleaning *.mo and $(POSPELL_TMP_DIR)"
- rm -fr $(POSPELL_TMP_DIR)
+ rm -fr $(POSPELL_TMP_DIR) locales/$(LANGUAGE)/LC_MESSAGES/
find -name '*.mo' -delete
+ @echo "Cleaning build directory"
+ $(MAKE) -C venv/cpython/Doc/ clean
diff --git a/README.rst b/README.rst
index fe4ba11903..16c5a5a8b9 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..e3811998b5 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-10-18 15:46+0200\n"
+"PO-Revision-Date: 2022-07-08 17:54+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -53,25 +53,25 @@ msgstr ""
#: about.rst:24
msgid ""
-"the `Docutils `_ project for creating "
+"the `Docutils `_ project for creating "
"reStructuredText and the Docutils suite;"
msgstr ""
-"le projet `Docutils `_ pour avoir créé "
+"le projet `Docutils `_ pour avoir créé "
"*reStructuredText* et la suite d'outils *Docutils* ;"
#: 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..045b57f2c2 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: 2023-03-22 22:57+0100\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"
@@ -61,6 +61,12 @@ msgstr ""
#: bugs.rst:22
msgid ""
+"You can also open a discussion item on our `Documentation Discourse forum "
+"`_."
+msgstr ""
+
+#: bugs.rst:25
+msgid ""
"If you're short on time, you can also email documentation bug reports to "
"docs@python.org (behavioral bugs can be sent to python-list@python.org). "
"'docs@' is a mailing list run by volunteers; your request will be noticed, "
@@ -72,11 +78,11 @@ msgstr ""
"volontaires, votre requête sera vue, mais elle peut prendre un moment pour "
"être traitée."
-#: bugs.rst:30
+#: bugs.rst:33
msgid "`Documentation bugs`_"
msgstr "`Bogues de documentation`_"
-#: bugs.rst:30
+#: bugs.rst:33
msgid ""
"A list of documentation bugs that have been submitted to the Python issue "
"tracker."
@@ -84,18 +90,18 @@ msgstr ""
"Liste des bogues de documentation soumis à l'outil de suivi des problèmes "
"Python."
-#: bugs.rst:33
+#: bugs.rst:36
msgid "`Issue Tracking `_"
msgstr "`Outil de suivi des problèmes `_"
-#: bugs.rst:33
+#: bugs.rst:36
msgid ""
"Overview of the process involved in reporting an improvement on the tracker."
msgstr ""
"Vue d'ensemble du processus pour proposer une amélioration avec l'outil de "
"suivi."
-#: bugs.rst:35
+#: bugs.rst:39
msgid ""
"`Helping with Documentation `_"
@@ -103,83 +109,98 @@ msgstr ""
"`Aider avec la documentation `_"
-#: bugs.rst:36
+#: bugs.rst:39
msgid ""
"Comprehensive guide for individuals that are interested in contributing to "
"Python documentation."
msgstr "Guide complet pour qui souhaite contribuer à la documentation Python."
#: bugs.rst:41
+msgid ""
+"`Documentation Translations `_"
+msgstr ""
+"`Aider avec la documentation `_"
+
+#: bugs.rst:42
+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:48
msgid "Using the Python issue tracker"
msgstr "Utilisation du gestionnaire de tickets Python"
-#: bugs.rst:43
+#: bugs.rst:50
msgid ""
-"Bug reports for Python itself should be submitted via the Python Bug Tracker "
-"(https://bugs.python.org/). The bug tracker offers a Web form which allows "
-"pertinent information to be entered and submitted to the developers."
+"Issue reports for Python itself should be submitted via the GitHub issues "
+"tracker (https://github.com/python/cpython/issues). The GitHub issues "
+"tracker offers a web form which allows pertinent information to be entered "
+"and submitted to the developers."
msgstr ""
-"Les rapports de bogues pour Python lui-même devraient être soumis via le "
-"l'outil de suivi des bogues (*Bug Tracker Python* — http://bugs.python."
-"org/). Le gestionnaire de tickets propose un formulaire Web permettant de "
-"saisir des informations pertinentes à soumettre aux développeurs."
+"Les rapports concernant un problème relatif à Python lui-même doivent être "
+"soumis *via* l'outil de suivi des problèmes de GitHub (https://github.com/"
+"python/cpython/issues). Le gestionnaire de tickets propose un formulaire Web "
+"permettant de saisir des informations pertinentes à soumettre aux "
+"développeurs."
-#: bugs.rst:47
+#: bugs.rst:55
msgid ""
"The first step in filing a report is to determine whether the problem has "
"already been reported. The advantage in doing so, aside from saving the "
-"developers time, is that you learn what has been done to fix it; it may be "
+"developers' time, is that you learn what has been done to fix it; it may be "
"that the problem has already been fixed for the next release, or additional "
"information is needed (in which case you are welcome to provide it if you "
-"can!). To do this, search the bug database using the search box on the top "
-"of the page."
+"can!). To do this, search the tracker using the search box at the top of the "
+"page."
msgstr ""
"La première étape pour remplir un rapport est de déterminer si le problème a "
"déjà été rapporté. L'avantage de cette approche, en plus d'économiser du "
-"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; "
+"temps aux développeurs, est d'apprendre ce qui a été fait pour le résoudre ; "
"il se peut que le problème soit déjà résolu dans la prochaine version, ou "
"que des informations complémentaires soient attendues (auquel cas votre "
-"contribution est la bienvenue !). Pour ce faire, cherchez dans la base de "
-"données de bogues grâce à la boîte de recherche en haut de la page."
+"contribution est la bienvenue !). Pour ce faire, cherchez dans le "
+"gestionnaire de tickets grâce à la boîte de recherche en haut de la page."
-#: bugs.rst:54
+#: bugs.rst:62
msgid ""
-"If the problem you're reporting is not already in the bug tracker, go back "
-"to the Python Bug Tracker and log in. If you don't already have a tracker "
-"account, select the \"Register\" link or, if you use OpenID, one of the "
-"OpenID provider logos in the sidebar. It is not possible to submit a bug "
-"report anonymously."
+"If the problem you're reporting is not already in the list, log in to "
+"GitHub. If you don't already have a GitHub account, create a new account "
+"using the \"Sign up\" link. It is not possible to submit a bug report "
+"anonymously."
msgstr ""
-"Si le problème que vous soumettez n'est pas déjà dans l'outil de suivi des "
-"bogues, revenez au *Python Bug Tracker* et connectez-vous. Si vous n'avez "
-"pas déjà un compte pour le *tracker*, cliquez sur le lien « S'enregistrer », "
-"ou, si vous utilisez *OpenID*, sur l'un des logos des fournisseurs *OpenID* "
-"dans la barre latérale. Il n'est pas possible de soumettre un rapport de "
-"bogue de manière anonyme."
+"Si le problème que vous soumettez n'est pas déjà dans la liste, connectez-"
+"vous à GitHub. Si vous n'avez pas déjà un compte GitHub, créez un nouveau "
+"compte en cliquant sur le lien « Sign Up ». Il n'est pas possible de "
+"soumettre un rapport de bogue de manière anonyme."
-#: bugs.rst:59
+#: bugs.rst:67
msgid ""
-"Being now logged in, you can submit a bug. Select the \"Create New\" link "
-"in the sidebar to open the bug reporting form."
+"Being now logged in, you can submit an issue. Click on the \"New issue\" "
+"button in the top bar to report a new issue."
msgstr ""
-"Une fois identifié, pour pouvez rapporter un bogue. Sélectionnez le lien "
-"*Create New* dans la barre latérale pour ouvrir un nouveau formulaire de "
-"rapport de bogue."
+"Une fois connecté, vous pouvez rapporter un problème. Sélectionnez le bouton "
+"*New issue* dans la barre en haut pour ouvrir un nouveau formulaire de "
+"rapport."
-#: bugs.rst:62
+#: bugs.rst:70
+msgid "The submission form has two fields, \"Title\" and \"Comment\"."
+msgstr "Le formulaire de rapport contient deux champs, *Title* et *Comment*."
+
+#: bugs.rst:72
+#, fuzzy
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; "
+"fewer than ten words is good."
msgstr ""
-"Le formulaire de soumission a un certain nombre de champs. Pour le champ "
-"« Titre », saisissez une *très* courte description du problème ; moins de "
-"dix mots est approprié. Dans le champ « Type », sélectionnez le type de "
-"problème ; sélectionnez aussi « Composant » et « Versions » en rapport avec "
-"le bogue."
+"Dans le champ *Title*, entrez une *très* brève description du problème "
+"rencontré ; tâchez de vous limiter à dix mots."
-#: bugs.rst:67
+#: bugs.rst:75
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 +213,17 @@ msgstr ""
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
"informations de versions)."
-#: bugs.rst:72
+#: bugs.rst:80
msgid ""
-"Each bug report will be assigned to a developer who will determine what "
-"needs to be done to correct the problem. You will receive an update each "
-"time action is taken on the bug."
+"Each issue report will be reviewed by a developer who will determine what "
+"needs to be done to correct the problem. You will receive an update each "
+"time an action is taken on the issue."
msgstr ""
-"Chaque bogue sera attribué à un développeur qui déterminera ce qui est "
+"Chaque rapport sera attribué à un développeur qui déterminera ce qui est "
"nécessaire d'entreprendre pour corriger le problème. Vous recevrez une "
-"notification à chaque action effectuée sur le bogue."
+"notification à chaque action concernant le rapport."
-#: bugs.rst:81
+#: bugs.rst:89
msgid ""
"`How to Report Bugs Effectively `_"
@@ -210,7 +231,7 @@ msgstr ""
"`Comment signaler des bogues de manière efficace `_ (en anglais)"
-#: bugs.rst:80
+#: bugs.rst:88
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 +240,15 @@ msgstr ""
"bogue utile. Il décrit quel genre d'information est utile et pourquoi elle "
"est utile."
-#: bugs.rst:84
+#: bugs.rst:92
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:92
msgid ""
"Information about writing a good bug report. Some of this is specific to "
"the Mozilla project, but describes general good practices."
@@ -235,11 +256,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:98
msgid "Getting started contributing to Python yourself"
msgstr "Commencer à contribuer à Python vous-même"
-#: bugs.rst:92
+#: bugs.rst:100
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 +274,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/allocation.po b/c-api/allocation.po
index 5f14969923..7dfa7cea54 100644
--- a/c-api/allocation.po
+++ b/c-api/allocation.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-10-18 15:46+0200\n"
"PO-Revision-Date: 2018-10-20 21:16+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -20,8 +20,9 @@ msgid "Allocating Objects on the Heap"
msgstr "Allouer des objets dans le tas"
#: c-api/allocation.rst:17
+#, fuzzy
msgid ""
-"Initialize a newly-allocated object *op* with its type and initial "
+"Initialize a newly allocated object *op* with its type and initial "
"reference. Returns the initialized object. If *type* indicates that the "
"object participates in the cyclic garbage detector, it is added to the "
"detector's set of observed objects. Other fields of the object are not "
diff --git a/c-api/apiabiversion.po b/c-api/apiabiversion.po
index dc75ce90fd..374251d475 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: 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"
@@ -20,101 +20,171 @@ 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 ""
-"``PY_VERSION_HEX`` est le numéro de version de Python encodé en un seul "
-"entier."
+"CPython révèle son numéro de version dans les macros suivantes. À noter "
+"qu'ils correspondent au code de la version **compilée** avec, pas "
+"nécessairement la version utilisée à l'**exécution**."
-#: c-api/apiabiversion.rst:11
+#: c-api/apiabiversion.rst:13
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 "
+"See :ref:`stable` for a discussion of API and ABI stability across versions."
+msgstr ""
+"Voir :ref:`stable` pour une discussion sur la stabilité des API et ABI entre "
+"(ou en fonction) de la version."
+
+#: c-api/apiabiversion.rst:17
+msgid "The ``3`` in ``3.4.1a2``."
+msgstr "Le ``3`` dans ``3.4.1a2``.)"
+
+#: c-api/apiabiversion.rst:21
+msgid "The ``4`` in ``3.4.1a2``."
+msgstr "Le ``4`` dans ``3.4.1a2``."
+
+#: c-api/apiabiversion.rst:25
+msgid "The ``1`` in ``3.4.1a2``."
+msgstr "Le ``1`` dans ``3.4.1a2``.)"
+
+#: c-api/apiabiversion.rst:29
+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 ""
+" Le ``a`` dans ``3.4.1a2``. Cela peut être ``0xA`` pour alpha, ``0xB`` pour "
+"bêta, ``0xC`` pour une version candidate ou ``0xF`` pour finale)."
+
+#: c-api/apiabiversion.rst:35
+msgid "The ``2`` in ``3.4.1a2``. Zero for final releases."
+msgstr "Le ``2`` dans ``3.4.1a2``. Nul pour des versions finales."
+
+#: c-api/apiabiversion.rst:39
+msgid "The Python version number encoded in a single integer."
+msgstr "Le numéro de version de Python encodé en un seul entier."
+
+#: c-api/apiabiversion.rst:41
+msgid ""
+"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:"
+"L'information sur la version 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 "Valeur pour ``3.4.1a2``"
-#: c-api/apiabiversion.rst:18
-msgid "``1-8``"
-msgstr "``1-8``"
+#: c-api/apiabiversion.rst:47
+msgid "1"
+msgstr "1"
-#: 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 "1-8"
+msgstr "1-8"
-#: c-api/apiabiversion.rst:21
-msgid "``2``"
-msgstr "``2``"
+#: c-api/apiabiversion.rst:47
+msgid "``PY_MAJOR_VERSION``"
+msgstr "``PY_MAJOR_VERSION``"
-#: c-api/apiabiversion.rst:21
-msgid "``9-16``"
-msgstr "``9-16``"
+#: c-api/apiabiversion.rst:47
+msgid "``0x03``"
+msgstr "``0x03``"
-#: 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 "2"
+msgstr "2"
-#: c-api/apiabiversion.rst:24
-msgid "``3``"
-msgstr "``3``"
+#: c-api/apiabiversion.rst:49
+msgid "9-16"
+msgstr "9-16"
-#: c-api/apiabiversion.rst:24
-msgid "``17-24``"
-msgstr "``17-24``"
+#: c-api/apiabiversion.rst:49
+msgid "``PY_MINOR_VERSION``"
+msgstr "``PY_MINOR_VERSION``"
-#: 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:49
+msgid "``0x04``"
+msgstr "``0x04``"
-#: c-api/apiabiversion.rst:27
-msgid "``4``"
-msgstr "``4``"
+#: c-api/apiabiversion.rst:51
+msgid "3"
+msgstr "3"
-#: c-api/apiabiversion.rst:27
-msgid "``25-28``"
-msgstr "``25-28``"
+#: c-api/apiabiversion.rst:51
+msgid "17-24"
+msgstr "17-24"
-#: 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."
-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:51
+msgid "``PY_MICRO_VERSION``"
+msgstr "``PY_MICRO_VERSION``"
+
+#: c-api/apiabiversion.rst:51
+msgid "``0x01``"
+msgstr "``0x01``"
+
+#: c-api/apiabiversion.rst:53
+msgid "4"
+msgstr "4"
+
+#: c-api/apiabiversion.rst:53
+msgid "25-28"
+msgstr "25-28"
+
+#: c-api/apiabiversion.rst:53
+msgid "``PY_RELEASE_LEVEL``"
+msgstr "``PY_RELEASE_LEVEL``"
+
+#: c-api/apiabiversion.rst:53
+msgid "``0xA``"
+msgstr "``0xA``"
-#: c-api/apiabiversion.rst:32
-msgid "``29-32``"
-msgstr "``29-32``"
+#: c-api/apiabiversion.rst:55
+msgid "29-32"
+msgstr "29-32"
-#: c-api/apiabiversion.rst:32
+#: c-api/apiabiversion.rst:55
+msgid "``PY_RELEASE_SERIAL``"
+msgstr "``PY_RELEASE_SERIAL``"
+
+#: c-api/apiabiversion.rst:55
+msgid "``0x2``"
+msgstr "``0x2``"
+
+#: c-api/apiabiversion.rst:58
msgid ""
-"``PY_RELEASE_SERIAL`` (the ``2`` in ``3.4.1a2``, zero for final releases)"
+"Thus ``3.4.1a2`` is hexversion ``0x030401a2`` and ``3.10.0`` is hexversion "
+"``0x030a00f0``."
msgstr ""
-"``PY_RELEASE_SERIAL`` (le ``2`` au ``3.4.1a2``, zéro pour des versions "
-"finales)"
+"Ainsi, ``0x030401a2`` est la version en notation hexadécimale sur un entier "
+"de ``3.4.1a2`` et ``0x030a00f0`` est la version en notation hexadécimale sur "
+"un entier de ``3.10.0``"
-#: c-api/apiabiversion.rst:36
-msgid "Thus ``3.4.1a2`` is hexversion ``0x030401a2``."
-msgstr "Ainsi ``3.4.1a2`` est une hexane-version ``0x030401a2``."
-
-#: c-api/apiabiversion.rst:38
+#: c-api/apiabiversion.rst:62
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..fae360ef57 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: 2023-03-22 22:57+0100\n"
+"PO-Revision-Date: 2021-12-11 11:44+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -78,29 +78,26 @@ 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
-msgid ""
-"In general, when a format sets a pointer to a buffer, the buffer is managed "
-"by the corresponding Python object, and the buffer shares the lifetime of "
-"this object. You won't have to release any memory yourself. The only "
-"exceptions are ``es``, ``es#``, ``et`` and ``et#``."
+msgid "Unless otherwise stated, buffers are not NUL-terminated."
+msgstr "Sauf indication contraire, les tampons ne se terminent pas par NUL."
+
+#: c-api/arg.rst:39
+msgid "There are three ways strings and buffers can be converted to C:"
msgstr ""
-"En général, lorsqu'un format définit un pointeur vers un tampon, le tampon "
-"est géré par l'objet Python correspondant et le tampon partage la durée de "
-"vie de cet objet. vous n'avez pas à libérer de mémoire. Les seules "
-"exceptions sont ``es``, ``es#``, ``et`` et ``et#``."
-#: c-api/arg.rst:42
+#: c-api/arg.rst:41
+#, fuzzy
msgid ""
-"However, when a :c:type:`Py_buffer` structure gets filled, the underlying "
-"buffer is locked so that the caller can subsequently use the buffer even "
-"inside a :c:type:`Py_BEGIN_ALLOW_THREADS` block without the risk of mutable "
-"data being resized or destroyed. As a result, **you have to call** :c:func:"
-"`PyBuffer_Release` after you have finished processing the data (or in any "
-"early abort case)."
+"Formats such as ``y*`` and ``s*`` fill a :c:type:`Py_buffer` structure. This "
+"locks the underlying buffer so that the caller can subsequently use the "
+"buffer even inside a :c:type:`Py_BEGIN_ALLOW_THREADS` block without the risk "
+"of mutable data being resized or destroyed. As a result, **you have to "
+"call** :c:func:`PyBuffer_Release` after you have finished processing the "
+"data (or in any early abort case)."
msgstr ""
"Néanmoins, quand une structure :c:type:`Py_buffer` est en cours de "
"remplissage, le tampon sous-jacent est verrouillé pour permettre à "
@@ -110,47 +107,56 @@ msgstr ""
"d'appeler** :c:func:`PyBuffer_Release` après avoir terminé de traiter les "
"données (ou après une interruption prématurée du traitement de ces données)."
-#: c-api/arg.rst:49
-msgid "Unless otherwise stated, buffers are not NUL-terminated."
-msgstr "Sauf indication contraire, les tampons ne se terminent pas par NUL."
+#: c-api/arg.rst:48
+msgid ""
+"The ``es``, ``es#``, ``et`` and ``et#`` formats allocate the result buffer. "
+"**You have to call** :c:func:`PyMem_Free` after you have finished processing "
+"the data (or in any early abort case)."
+msgstr ""
+
+#: c-api/arg.rst:54
+#, fuzzy
+msgid ""
+"Other formats take a :class:`str` or a read-only :term:`bytes-like object`, "
+"such as :class:`bytes`, and provide a ``const char *`` pointer to its "
+"buffer. In this case the buffer is \"borrowed\": it is managed by the "
+"corresponding Python object, and shares the lifetime of this object. You "
+"won't have to release any memory yourself."
+msgstr ""
+"En général, lorsqu'un format définit un pointeur vers un tampon, le tampon "
+"est géré par l'objet Python correspondant et le tampon partage la durée de "
+"vie de cet objet. vous n'avez pas à libérer de mémoire. Les seules "
+"exceptions sont ``es``, ``es#``, ``et`` et ``et#``."
-#: c-api/arg.rst:51
-msgid ""
-"Some formats require a read-only :term:`bytes-like object`, and set a "
-"pointer instead of a buffer structure. They work by checking that the "
-"object's :c:member:`PyBufferProcs.bf_releasebuffer` field is ``NULL``, which "
-"disallows mutable objects such as :class:`bytearray`."
-msgstr ""
-"Certains formats requièrent un :term:`objet compatible avec une chaîne "
-"d'octets ` en lecture seule, et définissent un pointeur à "
-"la place d'une structure tampon. Ils fonctionnent en vérifiant que le champ :"
-"c:member:`PyBufferProcs.bf_releasebuffer` de l'objet est *NULL*, ce qui "
-"n'autorise pas les objets muables tels que :class:`bytearray`."
-
-#: 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
+#: c-api/arg.rst:61
+msgid ""
+"To ensure that the underlying buffer may be safely borrowed, the object's :c:"
+"member:`PyBufferProcs.bf_releasebuffer` field must be ``NULL``. This "
+"disallows common mutable objects such as :class:`bytearray`, but also some "
+"read-only objects such as :class:`memoryview` of :class:`bytes`."
+msgstr ""
+
+#: c-api/arg.rst:67
+msgid ""
+"Besides this ``bf_releasebuffer`` requirement, there is no check to verify "
+"whether the input object is immutable (e.g. whether it would honor a request "
+"for a writable buffer, or whether another thread can mutate the data)."
+msgstr ""
+
+#: c-api/arg.rst:73
+msgid ""
+"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:98
msgid "``s`` (:class:`str`) [const char \\*]"
msgstr "``s`` (:class:`str`) [``const char *``]"
-#: c-api/arg.rst:68
+#: c-api/arg.rst:81
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 +173,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:90
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 +186,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:164
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null code points were "
"encountered in the Python string."
@@ -188,11 +194,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:104
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:101
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,20 +211,23 @@ 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:111
+#, 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:107
+#, fuzzy
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 "
-"second one its length. The string may contain embedded null bytes. Unicode "
-"objects are converted to C strings using ``'utf-8'`` encoding."
+"Like ``s*``, except that it provides a :ref:`borrowed buffer `. The result is stored into two C variables, the first one a pointer "
+"to a C string, the second one its length. The string may contain embedded "
+"null bytes. Unicode objects are converted to C strings using ``'utf-8'`` "
+"encoding."
msgstr ""
"La même chose que ``s*``, mais n'accepte pas les objets muables. Le résultat "
"est stocké dans deux variables C, la première est un pointeur vers une "
@@ -226,11 +235,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:581
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:114
#, fuzzy
msgid ""
"Like ``s``, but the Python object may also be ``None``, in which case the C "
@@ -239,13 +248,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:119
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:118
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 +262,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:123
#, 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:122
#, fuzzy
msgid ""
"Like ``s#``, but the Python object may also be ``None``, in which case the C "
@@ -271,25 +280,26 @@ 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:134
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:126
+#, fuzzy
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 "
-"contain embedded null bytes; if it does, a :exc:`ValueError` exception is "
-"raised."
+"This format converts a bytes-like object to a C pointer to a :ref:`borrowed "
+"` character string; it does not accept Unicode "
+"objects. The bytes buffer must not contain embedded null bytes; if it does, "
+"a :exc:`ValueError` exception is raised."
msgstr ""
"Ce format convertit un *objet compatible avec une chaîne d'octets* en un "
"pointeur C vers une chaîne de caractères ; il n'accepte pas les objets "
"Unicode. Le tampon d'octets ne doit pas contenir d'octets *null* ; si c'est "
"le cas, une exception :exc:`ValueError` est levée."
-#: c-api/arg.rst:118
+#: c-api/arg.rst:132
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null bytes were "
"encountered in the bytes buffer."
@@ -297,26 +307,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:139
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:137
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:143
#, 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:142
msgid ""
"This variant on ``s#`` doesn't accept Unicode objects, only bytes-like "
"objects."
@@ -324,32 +334,32 @@ 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:148
msgid "``S`` (:class:`bytes`) [PyBytesObject \\*]"
msgstr "``S`` (:class:`bytes`) [``PyBytesObject *``]"
-#: c-api/arg.rst:132
+#: c-api/arg.rst:146
#, fuzzy
msgid ""
"Requires that the Python object is a :class:`bytes` object, without "
"attempting any conversion. Raises :exc:`TypeError` if the object is not a "
-"bytes object. The C variable may also be declared as :c:type:`PyObject*`."
+"bytes object. The C variable may also be declared as :c:expr:`PyObject*`."
msgstr ""
"Nécessite que l'objet Python soit de type :class:`bytes`, sans avoir tenté "
"de conversion. :exc:`TypeError` est levée si l'objet n'est pas un objet de "
"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:153
msgid "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]"
msgstr "``Y`` (:class:`bytearray`) [``PyByteArrayObject *``]"
-#: c-api/arg.rst:137
+#: c-api/arg.rst:151
#, fuzzy
msgid ""
"Requires that the Python object is a :class:`bytearray` object, without "
"attempting any conversion. Raises :exc:`TypeError` if the object is not a :"
-"class:`bytearray` object. The C variable may also be declared as :c:type:"
+"class:`bytearray` object. The C variable may also be declared as :c:expr:"
"`PyObject*`."
msgstr ""
"Nécessite que l'objet Python soit de type :class:`bytes`, sans avoir tenté "
@@ -357,11 +367,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:170
msgid "``u`` (:class:`str`) [const Py_UNICODE \\*]"
msgstr "``u`` (:class:`str`) [``const Py_UNICODE *``]"
-#: c-api/arg.rst:142
+#: c-api/arg.rst:156
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 +389,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:188 c-api/arg.rst:196
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:179
#, 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:173
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:187
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:182
#, fuzzy
msgid ""
"Like ``u``, but the Python object may also be ``None``, in which case the :c:"
@@ -411,14 +420,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:195
#, 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:190
#, fuzzy
msgid ""
"Like ``u#``, but the Python object may also be ``None``, in which case the :"
@@ -427,27 +436,27 @@ 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:200
msgid "``U`` (:class:`str`) [PyObject \\*]"
msgstr "``U`` (:class:`str`) [``PyObject *``]"
-#: c-api/arg.rst:184
+#: c-api/arg.rst:198
#, fuzzy
msgid ""
"Requires that the Python object is a Unicode object, without attempting any "
"conversion. Raises :exc:`TypeError` if the object is not a Unicode object. "
-"The C variable may also be declared as :c:type:`PyObject*`."
+"The C variable may also be declared as :c:expr:`PyObject*`."
msgstr ""
"Nécessite que l'objet Python soit de type :class:`bytes`, sans avoir tenté "
"de conversion. :exc:`TypeError` est levée si l'objet n'est pas un objet de "
"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:206
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:203
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,28 +464,28 @@ msgid ""
"`PyBuffer_Release` when it is done with the buffer."
msgstr ""
-#: c-api/arg.rst:209
+#: c-api/arg.rst:223
msgid "``es`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer]"
msgstr ""
-#: c-api/arg.rst:195
+#: c-api/arg.rst:209
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:212
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 "
+"must be a :c:expr:`const char*` which points to the name of an encoding as a "
"NUL-terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is "
"used. An exception is raised if the named encoding is not known to Python. "
-"The second argument must be a :c:type:`char**`; the value of the pointer it "
+"The second argument must be a :c:expr:`char**`; the value of the pointer it "
"references will be set to a buffer with the contents of the argument text. "
"The text will be encoded in the encoding specified by the first argument."
msgstr ""
-#: c-api/arg.rst:206
+#: c-api/arg.rst:220
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,62 +493,62 @@ msgid ""
"`PyMem_Free` to free the allocated buffer after use."
msgstr ""
-#: c-api/arg.rst:214
+#: c-api/arg.rst:228
msgid ""
"``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char "
"\\*encoding, char \\*\\*buffer]"
msgstr ""
-#: c-api/arg.rst:212
+#: c-api/arg.rst:226
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:259
#, 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:231
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:235
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-"
+"a :c:expr:`const char*` which points to the name of an encoding as a NUL-"
"terminated string, or ``NULL``, in which case ``'utf-8'`` encoding is used. "
"An exception is raised if the named encoding is not known to Python. The "
-"second argument must be a :c:type:`char**`; the value of the pointer it "
+"second argument must be a :c:expr:`char**`; the value of the pointer it "
"references will be set to a buffer with the contents of the argument text. "
"The text will be encoded in the encoding specified by the first argument. "
"The third argument must be a pointer to an integer; the referenced integer "
"will be set to the number of bytes in the output buffer."
msgstr ""
-#: c-api/arg.rst:231
+#: c-api/arg.rst:245
msgid "There are two modes of operation:"
msgstr "Il existe deux modes de fonctionnement :"
-#: c-api/arg.rst:233
+#: c-api/arg.rst:247
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:252
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 +557,7 @@ msgid ""
"the buffer is not large enough, a :exc:`ValueError` will be set."
msgstr ""
-#: c-api/arg.rst:244
+#: c-api/arg.rst:258
msgid ""
"In both cases, *\\*buffer_length* is set to the length of the encoded data "
"without the trailing NUL byte."
@@ -556,203 +565,216 @@ 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:264
#, 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:262
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:267
msgid "Numbers"
msgstr "Les nombres"
-#: c-api/arg.rst:257
+#: c-api/arg.rst:271
msgid "``b`` (:class:`int`) [unsigned char]"
msgstr "``b`` (:class:`int`) [``unsigned char``]"
-#: c-api/arg.rst:256
+#: c-api/arg.rst:270
+#, fuzzy
msgid ""
"Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :"
-"c:type:`unsigned char`."
+"c:expr:`unsigned char`."
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:615
msgid "``B`` (:class:`int`) [unsigned char]"
msgstr "``B`` (:class:`int`) [``unsigned char``]"
-#: c-api/arg.rst:260
+#: c-api/arg.rst:274
+#, fuzzy
msgid ""
"Convert a Python integer to a tiny int without overflow checking, stored in "
-"a C :c:type:`unsigned char`."
+"a C :c:expr:`unsigned char`."
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:609
msgid "``h`` (:class:`int`) [short int]"
msgstr "``h`` (:class:`int`) [``short int``]"
-#: c-api/arg.rst:264
-msgid "Convert a Python integer to a C :c:type:`short int`."
+#: c-api/arg.rst:278
+#, fuzzy
+msgid "Convert a Python integer to a C :c:expr:`short int`."
msgstr "Convertit un entier Python en un :c:type:`short int` C."
-#: c-api/arg.rst:603
+#: c-api/arg.rst:618
msgid "``H`` (:class:`int`) [unsigned short int]"
msgstr "``H`` (:class:`int`) [``unsigned short int``]"
-#: c-api/arg.rst:267
+#: c-api/arg.rst:281
+#, fuzzy
msgid ""
-"Convert a Python integer to a C :c:type:`unsigned short int`, without "
+"Convert a Python integer to a C :c:expr:`unsigned short int`, without "
"overflow checking."
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:603
msgid "``i`` (:class:`int`) [int]"
msgstr "``i`` (:class:`int`) [``int``]"
-#: c-api/arg.rst:271
-msgid "Convert a Python integer to a plain C :c:type:`int`."
+#: c-api/arg.rst:285
+#, fuzzy
+msgid "Convert a Python integer to a plain C :c:expr:`int`."
msgstr "Convertit un entier Python en un :c:type:`int` C."
-#: c-api/arg.rst:606
+#: c-api/arg.rst:621
msgid "``I`` (:class:`int`) [unsigned int]"
msgstr "``I`` (:class:`int`) [``unsigned int``]"
-#: c-api/arg.rst:274
+#: c-api/arg.rst:288
+#, fuzzy
msgid ""
-"Convert a Python integer to a C :c:type:`unsigned int`, without overflow "
+"Convert a Python integer to a C :c:expr:`unsigned int`, without overflow "
"checking."
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:612
msgid "``l`` (:class:`int`) [long int]"
msgstr "``l`` (:class:`int`) [``long int``]"
-#: c-api/arg.rst:278
-msgid "Convert a Python integer to a C :c:type:`long int`."
+#: c-api/arg.rst:292
+#, fuzzy
+msgid "Convert a Python integer to a C :c:expr:`long int`."
msgstr "Convertit un entier Python en un :c:type:`long int`."
-#: c-api/arg.rst:609
+#: c-api/arg.rst:624
msgid "``k`` (:class:`int`) [unsigned long]"
msgstr "``k`` (:class:`int`) [``unsigned long``]"
-#: c-api/arg.rst:281
+#: c-api/arg.rst:295
+#, fuzzy
msgid ""
-"Convert a Python integer to a C :c:type:`unsigned long` without overflow "
+"Convert a Python integer to a C :c:expr:`unsigned long` without overflow "
"checking."
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:627
msgid "``L`` (:class:`int`) [long long]"
msgstr "``L`` (:class:`int`) [``long long``]"
-#: c-api/arg.rst:285
+#: c-api/arg.rst:299
#, fuzzy
-msgid "Convert a Python integer to a C :c:type:`long long`."
+msgid "Convert a Python integer to a C :c:expr:`long long`."
msgstr "Convertit un entier Python en un :c:type:`long int`."
-#: c-api/arg.rst:615
+#: c-api/arg.rst:630
msgid "``K`` (:class:`int`) [unsigned long long]"
msgstr "``K`` (:class:`int`) [``unsigned long long``]"
-#: c-api/arg.rst:288
+#: c-api/arg.rst:302
#, fuzzy
msgid ""
-"Convert a Python integer to a C :c:type:`unsigned long long` without "
+"Convert a Python integer to a C :c:expr:`unsigned long long` without "
"overflow checking."
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:633
+#, 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:306
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:313
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:309
+#, fuzzy
msgid ""
"Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` "
-"object of length 1, to a C :c:type:`char`."
+"object of length 1, to a C :c:expr:`char`."
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:312
msgid "Allow :class:`bytearray` objects."
msgstr ""
-#: c-api/arg.rst:626
+#: c-api/arg.rst:641
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:316
+#, fuzzy
msgid ""
"Convert a Python character, represented as a :class:`str` object of length "
-"1, to a C :c:type:`int`."
+"1, to a C :c:expr:`int`."
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:647
msgid "``f`` (:class:`float`) [float]"
msgstr "``f`` (:class:`float`) [``float``]"
-#: c-api/arg.rst:306
-msgid "Convert a Python floating point number to a C :c:type:`float`."
+#: c-api/arg.rst:320
+#, fuzzy
+msgid "Convert a Python floating point number to a C :c:expr:`float`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`float`."
-#: c-api/arg.rst:629
+#: c-api/arg.rst:644
msgid "``d`` (:class:`float`) [double]"
msgstr "``d`` (:class:`float`) [``double``]"
-#: c-api/arg.rst:309
-msgid "Convert a Python floating point number to a C :c:type:`double`."
+#: c-api/arg.rst:323
+#, fuzzy
+msgid "Convert a Python floating point number to a C :c:expr:`double`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`double` C."
-#: c-api/arg.rst:312
+#: c-api/arg.rst:326
msgid "``D`` (:class:`complex`) [Py_complex]"
msgstr "``D`` (:class:`complex`) [``Py_complex``]"
-#: c-api/arg.rst:312
+#: c-api/arg.rst:326
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:329
msgid "Other objects"
msgstr "Autres objets"
-#: c-api/arg.rst:643
+#: c-api/arg.rst:658
msgid "``O`` (object) [PyObject \\*]"
msgstr "``O`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:318
+#: c-api/arg.rst:332
#, fuzzy
msgid ""
"Store a Python object (without any conversion) in a C object pointer. The C "
@@ -764,42 +786,42 @@ 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:341
msgid "``O!`` (object) [*typeobject*, PyObject \\*]"
msgstr "``O!`` (objet) [*typeobject*, ``PyObject *``]"
-#: c-api/arg.rst:323
+#: c-api/arg.rst:337
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 "
-"second is the address of the C variable (of type :c:type:`PyObject*`) into "
+"second is the address of the C variable (of type :c:expr:`PyObject*`) into "
"which the object pointer is stored. If the Python object does not have the "
"required type, :exc:`TypeError` is raised."
msgstr ""
-#: c-api/arg.rst:657
+#: c-api/arg.rst:672
msgid "``O&`` (object) [*converter*, *anything*]"
msgstr "``O&`` (objet) [*converter*, *anything*]"
-#: c-api/arg.rst:332
+#: c-api/arg.rst:346
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 "
-"of a C variable (of arbitrary type), converted to :c:type:`void *`. The "
+"of a C variable (of arbitrary type), converted to :c:expr:`void *`. The "
"*converter* function in turn is called as follows::"
msgstr ""
-#: c-api/arg.rst:339
+#: c-api/arg.rst:353
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\\*` "
-"function. The returned *status* should be ``1`` for a successful conversion "
-"and ``0`` if the conversion has failed. When the conversion fails, the "
-"*converter* function should raise an exception and leave the content of "
-"*address* unmodified."
+"expr:`void*` argument that was passed to the ``PyArg_Parse*`` function. The "
+"returned *status* should be ``1`` for a successful conversion and ``0`` if "
+"the conversion has failed. When the conversion fails, the *converter* "
+"function should raise an exception and leave the content of *address* "
+"unmodified."
msgstr ""
-#: c-api/arg.rst:345
+#: c-api/arg.rst:359
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 +830,15 @@ msgid ""
"value as in the original call."
msgstr ""
-#: c-api/arg.rst:351
+#: c-api/arg.rst:365
msgid "``Py_CLEANUP_SUPPORTED`` was added."
msgstr "``Py_CLEANUP_SUPPORTED`` à été ajouté."
-#: c-api/arg.rst:361
+#: c-api/arg.rst:375
msgid "``p`` (:class:`bool`) [int]"
msgstr "``p`` (:class:`bool`) [``int``]"
-#: c-api/arg.rst:355
+#: c-api/arg.rst:369
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 +847,11 @@ msgid ""
"how Python tests values for truth."
msgstr ""
-#: c-api/arg.rst:660
+#: c-api/arg.rst:675
msgid "``(items)`` (:class:`tuple`) [*matching-items*]"
msgstr "``(items)`` (:class:`tuple`) [*matching-items*]"
-#: c-api/arg.rst:364
+#: c-api/arg.rst:378
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 +862,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:382
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 +871,7 @@ msgid ""
"downcasts in C --- your mileage may vary)."
msgstr ""
-#: c-api/arg.rst:374
+#: c-api/arg.rst:388
msgid ""
"A few other characters have a meaning in a format string. These may not "
"occur inside nested parentheses. They are:"
@@ -857,11 +879,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:396
msgid "``|``"
msgstr "``|``"
-#: c-api/arg.rst:378
+#: c-api/arg.rst:392
msgid ""
"Indicates that the remaining arguments in the Python argument list are "
"optional. The C variables corresponding to optional arguments should be "
@@ -870,11 +892,11 @@ msgid ""
"corresponding C variable(s)."
msgstr ""
-#: c-api/arg.rst:391
+#: c-api/arg.rst:405
msgid "``$``"
msgstr "``$``"
-#: c-api/arg.rst:385
+#: c-api/arg.rst:399
msgid ""
":c:func:`PyArg_ParseTupleAndKeywords` only: Indicates that the remaining "
"arguments in the Python argument list are keyword-only. Currently, all "
@@ -882,22 +904,22 @@ msgid ""
"be specified before ``$`` in the format string."
msgstr ""
-#: c-api/arg.rst:396
+#: c-api/arg.rst:410
msgid "``:``"
msgstr ""
-#: c-api/arg.rst:394
+#: c-api/arg.rst:408
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:415
msgid "``;``"
msgstr ""
-#: c-api/arg.rst:399
+#: c-api/arg.rst:413
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 +929,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:417
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
@@ -916,7 +938,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:420
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,35 +955,34 @@ msgstr ""
"devraient correspondre à ce qui est spécifié pour l'unité de format "
"correspondante."
-#: c-api/arg.rst:412
+#: c-api/arg.rst:426
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\\*` "
-"functions return true, otherwise they return false and raise an appropriate "
-"exception. When the :c:func:`PyArg_Parse\\*` functions fail due to "
-"conversion failure in one of the format units, the variables at the "
-"addresses corresponding to that and the following format units are left "
-"untouched."
+"the format must be exhausted. On success, the ``PyArg_Parse*`` functions "
+"return true, otherwise they return false and raise an appropriate exception. "
+"When the ``PyArg_Parse*`` functions fail due to conversion failure in one of "
+"the format units, the variables at the addresses corresponding to that and "
+"the following format units are left untouched."
msgstr ""
-#: c-api/arg.rst:421
+#: c-api/arg.rst:435
msgid "API Functions"
msgstr "Fonction de l'API"
-#: c-api/arg.rst:425
+#: c-api/arg.rst:439
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:446
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:452
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 +991,26 @@ msgid ""
"success; on failure, it returns false and raises the appropriate exception."
msgstr ""
-#: c-api/arg.rst:445
+#: c-api/arg.rst:459
msgid ""
"Added support for :ref:`positional-only parameters `."
msgstr ""
-#: c-api/arg.rst:452
+#: c-api/arg.rst:466
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:472
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:482
msgid ""
"Function used to deconstruct the argument lists of \"old-style\" functions "
"--- these are functions which use the :const:`METH_OLDARGS` parameter "
@@ -1000,7 +1021,7 @@ msgid ""
"continue to be used for that purpose."
msgstr ""
-#: c-api/arg.rst:479
+#: c-api/arg.rst:493
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 "
@@ -1009,39 +1030,40 @@ msgid ""
"should be passed as *args*; it must actually be a tuple. The length of the "
"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."
+"should be a pointer to a :c:expr:`PyObject*` variable; these will be filled "
+"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:508
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:524
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:532
msgid "Building values"
msgstr "Construction des valeurs"
-#: c-api/arg.rst:521
+#: c-api/arg.rst:536
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. "
-"Returns the value or ``NULL`` in the case of an error; an exception will be "
-"raised if ``NULL`` is returned."
+"Create a new value based on a format string similar to those accepted by the "
+"``PyArg_Parse*`` family of functions and a sequence of values. Returns the "
+"value or ``NULL`` in the case of an error; an exception will be raised if "
+"``NULL`` is returned."
msgstr ""
-#: c-api/arg.rst:526
+#: c-api/arg.rst:541
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 +1072,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:547
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 +1083,7 @@ msgid ""
"`Py_BuildValue` returns."
msgstr ""
-#: c-api/arg.rst:540
+#: c-api/arg.rst:555
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 +1091,203 @@ msgid ""
"be passed."
msgstr ""
-#: c-api/arg.rst:544
+#: c-api/arg.rst:559
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:565
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:564
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:570
#, 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:568
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:574
msgid "``y`` (:class:`bytes`) [const char \\*]"
msgstr "``y`` (:class:`bytes`) [``const char *``]"
-#: c-api/arg.rst:558
+#: c-api/arg.rst:573
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:578
#, 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:577
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:597
msgid "Same as ``s``."
msgstr ""
-#: c-api/arg.rst:569
+#: c-api/arg.rst:584
#, 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:600
msgid "Same as ``s#``."
msgstr ""
-#: c-api/arg.rst:574
+#: c-api/arg.rst:589
msgid "``u`` (:class:`str`) [const wchar_t \\*]"
msgstr "``u`` (:class:`str`) [``const wchar_t *``]"
-#: c-api/arg.rst:572
+#: c-api/arg.rst:587
msgid ""
-"Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or "
+"Convert a null-terminated :c:expr:`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:594
#, 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:592
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:597
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:600
#, 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:603
#, fuzzy
-msgid "Convert a plain C :c:type:`int` to a Python integer object."
+msgid "Convert a plain C :c:expr:`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:606
msgid "``b`` (:class:`int`) [char]"
msgstr "``b`` (:class:`int`) [``char``]"
-#: c-api/arg.rst:591
-msgid "Convert a plain C :c:type:`char` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:606
+#, fuzzy
+msgid "Convert a plain C :c:expr:`char` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:594
-msgid "Convert a plain C :c:type:`short int` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:609
+#, fuzzy
+msgid "Convert a plain C :c:expr:`short int` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:597
-msgid "Convert a C :c:type:`long int` to a Python integer object."
+#: c-api/arg.rst:612
+#, fuzzy
+msgid "Convert a C :c:expr:`long int` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:600
-msgid "Convert a C :c:type:`unsigned char` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:615
+#, fuzzy
+msgid "Convert a C :c:expr:`unsigned char` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:603
-msgid "Convert a C :c:type:`unsigned short int` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:618
+#, fuzzy
+msgid "Convert a C :c:expr:`unsigned short int` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:606
+#: c-api/arg.rst:621
#, fuzzy
-msgid "Convert a C :c:type:`unsigned int` to a Python integer object."
+msgid "Convert a C :c:expr:`unsigned int` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:609
-msgid "Convert a C :c:type:`unsigned long` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:624
+#, fuzzy
+msgid "Convert a C :c:expr:`unsigned long` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:612
+#: c-api/arg.rst:627
#, fuzzy
-msgid "Convert a C :c:type:`long long` to a Python integer object."
+msgid "Convert a C :c:expr:`long long` to a Python integer object."
msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:615
-msgid "Convert a C :c:type:`unsigned long long` to a Python integer object."
-msgstr ""
+#: c-api/arg.rst:630
+#, fuzzy
+msgid "Convert a C :c:expr:`unsigned long long` to a Python integer object."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:618
+#: c-api/arg.rst:633
msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer."
msgstr ""
-#: c-api/arg.rst:622
+#: c-api/arg.rst:637
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:636
+#, fuzzy
msgid ""
-"Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` "
+"Convert a C :c:expr:`int` representing a byte to a Python :class:`bytes` "
"object of length 1."
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:625
+#: c-api/arg.rst:640
+#, fuzzy
msgid ""
-"Convert a C :c:type:`int` representing a character to Python :class:`str` "
+"Convert a C :c:expr:`int` representing a character to Python :class:`str` "
"object of length 1."
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:629
-msgid "Convert a C :c:type:`double` to a Python floating point number."
-msgstr ""
+#: c-api/arg.rst:644
+#, fuzzy
+msgid "Convert a C :c:expr:`double` to a Python floating point number."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:632
-msgid "Convert a C :c:type:`float` to a Python floating point number."
-msgstr ""
+#: c-api/arg.rst:647
+#, fuzzy
+msgid "Convert a C :c:expr:`float` to a Python floating point number."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: c-api/arg.rst:635
+#: c-api/arg.rst:650
msgid "``D`` (:class:`complex`) [Py_complex \\*]"
msgstr "``D`` (:class:`complex`) [``Py_complex *``]"
-#: c-api/arg.rst:635
+#: c-api/arg.rst:650
msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number."
msgstr ""
-#: c-api/arg.rst:638
+#: c-api/arg.rst:653
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,68 +1297,99 @@ msgid ""
"raised yet, :exc:`SystemError` is set."
msgstr ""
-#: c-api/arg.rst:646
+#: c-api/arg.rst:661
msgid "``S`` (object) [PyObject \\*]"
msgstr "``S`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:646
+#: c-api/arg.rst:661
msgid "Same as ``O``."
msgstr ""
-#: c-api/arg.rst:651
+#: c-api/arg.rst:666
msgid "``N`` (object) [PyObject \\*]"
msgstr "``N`` (objet) [``PyObject *``]"
-#: c-api/arg.rst:649
+#: c-api/arg.rst:664
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:669
msgid ""
"Convert *anything* to a Python object through a *converter* function. The "
-"function is called with *anything* (which should be compatible with :c:type:"
+"function is called with *anything* (which should be compatible with :c:expr:"
"`void*`) as its argument and should return a \"new\" Python object, or "
"``NULL`` if an error occurred."
msgstr ""
-#: c-api/arg.rst:660
+#: c-api/arg.rst:675
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:678
msgid "``[items]`` (:class:`list`) [*matching-items*]"
msgstr "``[items]`` (:class:`list`) [*matching-items*]"
-#: c-api/arg.rst:663
+#: c-api/arg.rst:678
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:683
msgid "``{items}`` (:class:`dict`) [*matching-items*]"
msgstr "``{items}`` (:class:`dict`) [*matching-items*]"
-#: c-api/arg.rst:666
+#: c-api/arg.rst:681
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:685
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:690
msgid ""
"Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list "
"rather than a variable number of arguments."
msgstr ""
+
+#~ msgid ""
+#~ "Some formats require a read-only :term:`bytes-like object`, and set a "
+#~ "pointer instead of a buffer structure. They work by checking that the "
+#~ "object's :c:member:`PyBufferProcs.bf_releasebuffer` field is ``NULL``, "
+#~ "which disallows mutable objects such as :class:`bytearray`."
+#~ msgstr ""
+#~ "Certains formats requièrent un :term:`objet compatible avec une chaîne "
+#~ "d'octets ` en lecture seule, et définissent un "
+#~ "pointeur à la place d'une structure tampon. Ils fonctionnent en vérifiant "
+#~ "que le champ :c:member:`PyBufferProcs.bf_releasebuffer` de l'objet est "
+#~ "*NULL*, ce qui n'autorise pas les objets muables tels que :class:"
+#~ "`bytearray`."
+
+#~ 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..dc4feeb0e1 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-04-05 10:05+0200\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 ""
diff --git a/c-api/bytearray.po b/c-api/bytearray.po
index bdab1641cf..1d82668d06 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-04-05 10:05+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,24 @@ 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
+#: c-api/bytearray.rst:80
msgid "Macro version of :c:func:`PyByteArray_AsString`."
msgstr "Version macro de :c:func:`PyByteArray_AsString`."
-#: c-api/bytearray.rst:87
+#: c-api/bytearray.rst:85
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..deca3ebd31 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-21 16:37+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
@@ -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..37f5609e90 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-10-18 15:46+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
@@ -209,12 +209,7 @@ msgid ""
"future extensions."
msgstr ""
-#: c-api/call.rst:161 c-api/call.rst:259 c-api/call.rst:360 c-api/call.rst:391
-#: c-api/call.rst:413
-msgid "This function is not part of the :ref:`limited API `."
-msgstr ""
-
-#: c-api/call.rst:153
+#: c-api/call.rst:151
msgid ""
"If *op* does not support the vectorcall protocol (either because the type "
"does not or because the specific instance does not), return *NULL*. "
@@ -222,19 +217,19 @@ msgid ""
"function never raises an exception."
msgstr ""
-#: c-api/call.rst:158
+#: c-api/call.rst:156
msgid ""
"This is mostly useful to check whether or not *op* supports vectorcall, "
"which can be done by checking ``PyVectorcall_Function(op) != NULL``."
msgstr ""
-#: c-api/call.rst:167
+#: c-api/call.rst:163
msgid ""
"Call *callable*'s :c:type:`vectorcallfunc` with positional and keyword "
"arguments given in a tuple and dict, respectively."
msgstr ""
-#: c-api/call.rst:170
+#: c-api/call.rst:166
msgid ""
"This is a specialized function, intended to be put in the :c:member:"
"`~PyTypeObject.tp_call` slot or be used in an implementation of ``tp_call``. "
@@ -242,142 +237,142 @@ msgid ""
"not fall back to ``tp_call``."
msgstr ""
-#: c-api/call.rst:183
+#: c-api/call.rst:177
msgid "Object Calling API"
msgstr ""
-#: c-api/call.rst:185
+#: c-api/call.rst:179
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 ""
-#: c-api/call.rst:191
+#: c-api/call.rst:185
msgid ""
"The following table summarizes the available functions; please see "
"individual documentation for details."
msgstr ""
-#: c-api/call.rst:195
+#: c-api/call.rst:189
msgid "Function"
msgstr "Fonction"
-#: c-api/call.rst:195
+#: c-api/call.rst:189
msgid "callable"
-msgstr ""
+msgstr "appelable (*callable*)"
-#: c-api/call.rst:195
+#: c-api/call.rst:189
msgid "args"
msgstr ""
-#: c-api/call.rst:195
+#: c-api/call.rst:189
msgid "kwargs"
msgstr ""
-#: c-api/call.rst:197
+#: c-api/call.rst:191
msgid ":c:func:`PyObject_Call`"
msgstr ""
-#: c-api/call.rst:199 c-api/call.rst:203 c-api/call.rst:209 c-api/call.rst:219
+#: c-api/call.rst:193 c-api/call.rst:197 c-api/call.rst:203 c-api/call.rst:213
msgid "``PyObject *``"
msgstr ""
-#: c-api/call.rst:197
+#: c-api/call.rst:191
msgid "tuple"
msgstr ""
-#: c-api/call.rst:219
+#: c-api/call.rst:213
msgid "dict/``NULL``"
msgstr ""
-#: c-api/call.rst:199
+#: c-api/call.rst:193
msgid ":c:func:`PyObject_CallNoArgs`"
msgstr ""
-#: c-api/call.rst:201 c-api/call.rst:205 c-api/call.rst:209 c-api/call.rst:213
-#: c-api/call.rst:215
+#: c-api/call.rst:195 c-api/call.rst:199 c-api/call.rst:203 c-api/call.rst:207
+#: c-api/call.rst:209
msgid "---"
msgstr ""
-#: c-api/call.rst:201
+#: c-api/call.rst:195
msgid ":c:func:`PyObject_CallOneArg`"
msgstr ""
-#: c-api/call.rst:215
+#: c-api/call.rst:209
msgid "1 object"
msgstr ""
-#: c-api/call.rst:203
+#: c-api/call.rst:197
msgid ":c:func:`PyObject_CallObject`"
msgstr ""
-#: c-api/call.rst:203
+#: c-api/call.rst:197
msgid "tuple/``NULL``"
msgstr ""
-#: c-api/call.rst:205
+#: c-api/call.rst:199
msgid ":c:func:`PyObject_CallFunction`"
msgstr ""
-#: c-api/call.rst:207
+#: c-api/call.rst:201
msgid "format"
msgstr "format"
-#: c-api/call.rst:207
+#: c-api/call.rst:201
msgid ":c:func:`PyObject_CallMethod`"
msgstr ""
-#: c-api/call.rst:207
+#: c-api/call.rst:201
msgid "obj + ``char*``"
msgstr ""
-#: c-api/call.rst:209
+#: c-api/call.rst:203
msgid ":c:func:`PyObject_CallFunctionObjArgs`"
msgstr ""
-#: c-api/call.rst:211
+#: c-api/call.rst:205
msgid "variadic"
msgstr ""
-#: c-api/call.rst:211
+#: c-api/call.rst:205
msgid ":c:func:`PyObject_CallMethodObjArgs`"
msgstr ""
-#: c-api/call.rst:213 c-api/call.rst:215
+#: c-api/call.rst:207 c-api/call.rst:209
msgid "obj + name"
msgstr ""
-#: c-api/call.rst:213
+#: c-api/call.rst:207
msgid ":c:func:`PyObject_CallMethodNoArgs`"
msgstr ""
-#: c-api/call.rst:215
+#: c-api/call.rst:209
msgid ":c:func:`PyObject_CallMethodOneArg`"
msgstr ""
-#: c-api/call.rst:217
+#: c-api/call.rst:211
msgid ":c:func:`PyObject_Vectorcall`"
msgstr ""
-#: c-api/call.rst:219 c-api/call.rst:221
+#: c-api/call.rst:213 c-api/call.rst:215
msgid "vectorcall"
msgstr ""
-#: c-api/call.rst:219
+#: c-api/call.rst:213
msgid ":c:func:`PyObject_VectorcallDict`"
msgstr ""
-#: c-api/call.rst:221
+#: c-api/call.rst:215
msgid ":c:func:`PyObject_VectorcallMethod`"
msgstr ""
-#: c-api/call.rst:221
+#: c-api/call.rst:215
msgid "arg + name"
msgstr ""
-#: c-api/call.rst:227
+#: c-api/call.rst:221
msgid ""
"Call a callable Python object *callable*, with arguments given by the tuple "
"*args*, and named arguments given by the dictionary *kwargs*."
@@ -386,49 +381,49 @@ msgstr ""
"le *n*-uplet *args*, et des arguments nommés donnés par le dictionnaire "
"*kwargs*."
-#: c-api/call.rst:230
+#: c-api/call.rst:224
msgid ""
"*args* must not be *NULL*; use an empty tuple if no arguments are needed. If "
"no named arguments are needed, *kwargs* can be *NULL*."
msgstr ""
-#: c-api/call.rst:245 c-api/call.rst:269 c-api/call.rst:301 c-api/call.rst:334
-#: c-api/call.rst:357 c-api/call.rst:410
+#: c-api/call.rst:239 c-api/call.rst:261 c-api/call.rst:293 c-api/call.rst:326
+#: c-api/call.rst:347 c-api/call.rst:394
msgid ""
"Return the result of the call on success, or raise an exception and return "
"*NULL* on failure."
msgstr ""
-#: c-api/call.rst:236
+#: c-api/call.rst:230
msgid ""
"This is the equivalent of the Python expression: ``callable(*args, "
"**kwargs)``."
msgstr ""
"Ceci est l'équivalent de l'expression Python : ``callable(*args, **kwargs)``."
-#: c-api/call.rst:242
+#: c-api/call.rst:236
msgid ""
"Call a callable Python object *callable* without any arguments. It is the "
"most efficient way to call a callable Python object without any argument."
msgstr ""
-#: c-api/call.rst:253
+#: c-api/call.rst:247
msgid ""
"Call a callable Python object *callable* with exactly 1 positional argument "
"*arg* and no keyword arguments."
msgstr ""
-#: c-api/call.rst:266
+#: c-api/call.rst:258
msgid ""
"Call a callable Python object *callable*, with arguments given by the tuple "
"*args*. If no arguments are needed, then *args* can be *NULL*."
msgstr ""
-#: c-api/call.rst:284
+#: c-api/call.rst:276
msgid "This is the equivalent of the Python expression: ``callable(*args)``."
msgstr "Ceci est l'équivalent de l'expression Python : ``callable(*args)``."
-#: c-api/call.rst:277
+#: c-api/call.rst:269
msgid ""
"Call a callable Python object *callable*, with a variable number of C "
"arguments. The C arguments are described using a :c:func:`Py_BuildValue` "
@@ -436,92 +431,92 @@ msgid ""
"are provided."
msgstr ""
-#: c-api/call.rst:286
+#: c-api/call.rst:278
msgid ""
-"Note that if you only pass :c:type:`PyObject *` args, :c:func:"
+"Note that if you only pass :c:expr:`PyObject *` args, :c:func:"
"`PyObject_CallFunctionObjArgs` is a faster alternative."
msgstr ""
-#: c-api/call.rst:289
+#: c-api/call.rst:281
msgid "The type of *format* was changed from ``char *``."
msgstr ""
-#: c-api/call.rst:295
+#: c-api/call.rst:287
msgid ""
"Call the method named *name* of object *obj* with a variable number of C "
"arguments. The C arguments are described by a :c:func:`Py_BuildValue` "
"format string that should produce a tuple."
msgstr ""
-#: c-api/call.rst:299
+#: c-api/call.rst:291
msgid "The format can be *NULL*, indicating that no arguments are provided."
msgstr ""
-#: c-api/call.rst:304
+#: c-api/call.rst:296
msgid ""
"This is the equivalent of the Python expression: ``obj.name(arg1, "
"arg2, ...)``."
msgstr ""
-#: c-api/call.rst:307
+#: c-api/call.rst:299
msgid ""
-"Note that if you only pass :c:type:`PyObject *` args, :c:func:"
+"Note that if you only pass :c:expr:`PyObject *` args, :c:func:"
"`PyObject_CallMethodObjArgs` is a faster alternative."
msgstr ""
-#: c-api/call.rst:310
+#: c-api/call.rst:302
msgid "The types of *name* and *format* were changed from ``char *``."
msgstr ""
-#: c-api/call.rst:316
+#: c-api/call.rst:308
msgid ""
-"Call a callable Python object *callable*, with a variable number of :c:type:"
+"Call a callable Python object *callable*, with a variable number of :c:expr:"
"`PyObject *` arguments. The arguments are provided as a variable number of "
"parameters followed by *NULL*."
msgstr ""
-#: c-api/call.rst:323
+#: c-api/call.rst:315
msgid ""
"This is the equivalent of the Python expression: ``callable(arg1, "
"arg2, ...)``."
msgstr ""
-#: c-api/call.rst:329
+#: c-api/call.rst:321
msgid ""
"Call a method of the Python object *obj*, where the name of the method is "
"given as a Python string object in *name*. It is called with a variable "
-"number of :c:type:`PyObject *` arguments. The arguments are provided as a "
+"number of :c:expr:`PyObject *` arguments. The arguments are provided as a "
"variable number of parameters followed by *NULL*."
msgstr ""
-#: c-api/call.rst:340
+#: c-api/call.rst:332
msgid ""
"Call a method of the Python object *obj* without arguments, where the name "
"of the method is given as a Python string object in *name*."
msgstr ""
-#: c-api/call.rst:353
+#: c-api/call.rst:343
msgid ""
"Call a method of the Python object *obj* with a single positional argument "
"*arg*, where the name of the method is given as a Python string object in "
"*name*."
msgstr ""
-#: c-api/call.rst:367
+#: c-api/call.rst:355
msgid ""
"Call a callable Python object *callable*. The arguments are the same as for :"
"c:type:`vectorcallfunc`. If *callable* supports vectorcall_, this directly "
"calls the vectorcall function stored in *callable*."
msgstr ""
-#: c-api/call.rst:381
+#: c-api/call.rst:367
msgid ""
"Call *callable* with positional arguments passed exactly as in the "
"vectorcall_ protocol, but with keyword arguments passed as a dictionary "
"*kwdict*. The *args* array contains only the positional arguments."
msgstr ""
-#: c-api/call.rst:385
+#: c-api/call.rst:371
msgid ""
"Regardless of which protocol is used internally, a conversion of arguments "
"needs to be done. Therefore, this function should only be used if the caller "
@@ -529,7 +524,7 @@ msgid ""
"tuple for the positional arguments."
msgstr ""
-#: c-api/call.rst:397
+#: c-api/call.rst:381
msgid ""
"Call a method using the vectorcall calling convention. The name of the "
"method is given as a Python string *name*. The object whose method is called "
@@ -541,17 +536,17 @@ msgid ""
"`PyObject_Vectorcall`."
msgstr ""
-#: c-api/call.rst:406
+#: c-api/call.rst:390
msgid ""
"If the object has the :const:`Py_TPFLAGS_METHOD_DESCRIPTOR` feature, this "
"will call the unbound method object with the full *args* vector as arguments."
msgstr ""
-#: c-api/call.rst:419
+#: c-api/call.rst:401
msgid "Call Support API"
msgstr ""
-#: c-api/call.rst:423
+#: c-api/call.rst:405
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/capsule.po b/c-api/capsule.po
index 35f1acdf3e..ffb042ea56 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-10-18 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -28,7 +28,7 @@ msgstr ""
#: c-api/capsule.rst:17
msgid ""
"This subtype of :c:type:`PyObject` represents an opaque value, useful for C "
-"extension modules who need to pass an opaque value (as a :c:type:`void*` "
+"extension modules who need to pass an opaque value (as a :c:expr:`void*` "
"pointer) through Python code to other C code. It is often used to make a C "
"function pointer defined in one module available to other modules, so the "
"regular import mechanism can be used to access C APIs defined in dynamically "
diff --git a/c-api/code.po b/c-api/code.po
index b7558a9ead..2094616202 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: 2021-09-23 16:16+0200\n"
"PO-Revision-Date: 2018-02-15 00:30+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -82,3 +82,17 @@ 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:57
+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:60
+msgid ""
+"For efficiently iterating over the line numbers in a code object, use `the "
+"API described in PEP 626 `_."
+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 a06d5f3e72..68bc4bbbce 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-06-22 09:58+0200\n"
+"POT-Creation-Date: 2022-10-18 15:46+0200\n"
"PO-Revision-Date: 2019-01-14 20:31+0100\n"
"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
@@ -174,13 +174,15 @@ msgstr ""
"Renvoie un nouveau :c:type:`PyComplexObject` à partir de *real* et de *imag*."
#: c-api/complex.rst:118
-msgid "Return the real part of *op* as a C :c:type:`double`."
+#, fuzzy
+msgid "Return the real part of *op* as a C :c:expr:`double`."
msgstr ""
"Renvoie la partie réelle du nombre complexe *op* sous la forme d'un :c:type:"
"`double` en C."
#: c-api/complex.rst:123
-msgid "Return the imaginary part of *op* as a C :c:type:`double`."
+#, fuzzy
+msgid "Return the imaginary part of *op* as a C :c:expr:`double`."
msgstr ""
"Renvoie la partie imaginaire du nombre complexe *op* sous la forme d'un :c:"
"type:`double` en C."
diff --git a/c-api/conversion.po b/c-api/conversion.po
index 5a62d39893..af95d132bc 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: 2022-10-18 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -50,66 +50,61 @@ 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``. Note that this means there is no "
+"equivalent to the C99 ``n = snprintf(NULL, 0, ...)`` which would determine "
+"the necessary buffer size."
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
+#: c-api/conversion.rst:34
msgid ""
"The return value (*rv*) for these functions should be interpreted as follows:"
msgstr ""
-#: c-api/conversion.rst:39
+#: c-api/conversion.rst:36
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:40
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:44
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:49
msgid ""
"The following functions provide locale-independent string to number "
"conversions."
msgstr ""
-#: c-api/conversion.rst:56
+#: c-api/conversion.rst:53
msgid ""
-"Convert a string ``s`` to a :c:type:`double`, raising a Python exception on "
+"Convert a string ``s`` to a :c:expr:`double`, raising a Python exception on "
"failure. The set of accepted strings corresponds to the set of strings "
"accepted by Python's :func:`float` constructor, except that ``s`` must not "
"have leading or trailing whitespace. The conversion is independent of the "
"current locale."
msgstr ""
-#: c-api/conversion.rst:62
+#: c-api/conversion.rst:59
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:63
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 +113,7 @@ msgid ""
"ValueError, and return ``-1.0``."
msgstr ""
-#: c-api/conversion.rst:73
+#: c-api/conversion.rst:70
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 +124,50 @@ msgid ""
"the first character after the converted value."
msgstr ""
-#: c-api/conversion.rst:81
+#: c-api/conversion.rst:78
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:87
msgid ""
-"Convert a :c:type:`double` *val* to a string using supplied *format_code*, "
+"Convert a :c:expr:`double` *val* to a string using supplied *format_code*, "
"*precision*, and *flags*."
msgstr ""
-#: c-api/conversion.rst:93
+#: c-api/conversion.rst:90
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:95
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:98
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:101
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:104
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:108
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 +175,20 @@ msgid ""
"respectively."
msgstr ""
-#: c-api/conversion.rst:115
+#: c-api/conversion.rst:112
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:121
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:127
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..d3678e3c6f 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: 2022-10-18 15:46+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."
@@ -207,7 +207,7 @@ msgstr ""
"normalisé pour que le nombre de microsecondes et de secondes tombe dans la "
"plage documentée pour les objets :class:`datetime.timedelta`."
-#: c-api/datetime.rst:137
+#: c-api/datetime.rst:138
msgid ""
"Return a :class:`datetime.timezone` object with an unnamed fixed offset "
"represented by the *offset* argument."
@@ -215,7 +215,7 @@ msgstr ""
"Renvoie un objet :class:`datetime.timezone` avec un décalage anonyme fixe "
"représenté par l'argument *offset*."
-#: c-api/datetime.rst:144
+#: c-api/datetime.rst:146
msgid ""
"Return a :class:`datetime.timezone` object with a fixed offset represented "
"by the *offset* argument and with tzname *name*."
@@ -223,7 +223,7 @@ msgstr ""
"Renvoie un objet :class:`datetime.timezone` avec un décalage fixe représenté "
"par l'argument *offset* et avec le nom de fuseau horaire *name*."
-#: c-api/datetime.rst:150
+#: c-api/datetime.rst:152
#, fuzzy
msgid ""
"Macros to extract fields from date objects. The argument must be an "
@@ -236,19 +236,19 @@ msgstr ""
"`PyDateTime_DateTime`). L'argument ne doit pas être *NULL*, et le type n'est "
"pas vérifié :"
-#: c-api/datetime.rst:157
+#: c-api/datetime.rst:159
msgid "Return the year, as a positive int."
msgstr "Renvoie l'année, sous forme d'entier positif."
-#: c-api/datetime.rst:162
+#: c-api/datetime.rst:164
msgid "Return the month, as an int from 1 through 12."
msgstr "Renvoie le mois, sous forme d'entier allant de 1 à 12."
-#: c-api/datetime.rst:167
+#: c-api/datetime.rst:169
msgid "Return the day, as an int from 1 through 31."
msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
-#: c-api/datetime.rst:170
+#: c-api/datetime.rst:172
#, fuzzy
msgid ""
"Macros to extract fields from datetime objects. The argument must be an "
@@ -259,23 +259,32 @@ 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:216
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:221
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:226
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:231
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:236
+#, fuzzy
+msgid "Return the fold, as an int from 0 through 1."
+msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
+
+#: c-api/datetime.rst:243
+msgid "Return the tzinfo (which may be ``None``)."
+msgstr ""
+
+#: c-api/datetime.rst:210
#, fuzzy
msgid ""
"Macros to extract fields from time objects. The argument must be an "
@@ -286,7 +295,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:248
#, fuzzy
msgid ""
"Macros to extract fields from time delta objects. The argument must be an "
@@ -297,26 +306,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:254
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:261
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:268
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:273
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:277
msgid ""
"Create and return a new :class:`datetime.datetime` object given an argument "
"tuple suitable for passing to :meth:`datetime.datetime.fromtimestamp()`."
@@ -324,7 +333,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:283
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..4ec951e3a1 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: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: 2018-07-03 11:36+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -84,16 +84,17 @@ msgstr ""
#: c-api/dict.rst:75
msgid ""
"Insert *val* into the dictionary *p* using *key* as a key. *key* should be "
-"a :c:type:`const char*`. The key object is created using "
+"a :c:expr:`const char*`. The key object is created using "
"``PyUnicode_FromString(key)``. Return ``0`` on success or ``-1`` on "
"failure. This function *does not* steal a reference to *val*."
msgstr ""
#: c-api/dict.rst:83
msgid ""
-"Remove the entry in dictionary *p* with key *key*. *key* must be hashable; "
-"if it isn't, :exc:`TypeError` is raised. If *key* is not in the dictionary, :"
-"exc:`KeyError` is raised. Return ``0`` on success or ``-1`` on failure."
+"Remove the entry in dictionary *p* with key *key*. *key* must be :term:"
+"`hashable`; if it isn't, :exc:`TypeError` is raised. If *key* is not in the "
+"dictionary, :exc:`KeyError` is raised. Return ``0`` on success or ``-1`` on "
+"failure."
msgstr ""
#: c-api/dict.rst:91
@@ -116,27 +117,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*`."
+"expr:`const char*`, rather than a :c:expr:`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,35 +153,35 @@ 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 "
"first call to this function to start the iteration; the function returns "
"true for each pair in the dictionary, and false once all pairs have been "
-"reported. The parameters *pkey* and *pvalue* should either point to :c:type:"
+"reported. The parameters *pkey* and *pvalue* should either point to :c:expr:"
"`PyObject*` variables that will be filled in with each key and value, "
"respectively, or may be ``NULL``. Any references returned through them are "
"borrowed. *ppos* should not be altered during iteration. Its value "
@@ -182,18 +189,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 +210,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 +219,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..533e9b28e5 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-10-18 15:46+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 ``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,19 +212,19 @@ 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
msgid ""
"This is a convenience function to raise :exc:`WindowsError`. If called with "
-"*ierr* of :c:data:`0`, the error code returned by a call to :c:func:"
-"`GetLastError` is used instead. It calls the Win32 function :c:func:"
-"`FormatMessage` to retrieve the Windows description of error code given by "
-"*ierr* or :c:func:`GetLastError`, then it constructs a tuple object whose "
-"first item is the *ierr* value and whose second item is the corresponding "
-"error message (gotten from :c:func:`FormatMessage`), and then calls "
+"*ierr* of ``0``, the error code returned by a call to :c:func:`GetLastError` "
+"is used instead. It calls the Win32 function :c:func:`FormatMessage` to "
+"retrieve the Windows description of error code given by *ierr* or :c:func:"
+"`GetLastError`, then it constructs a tuple object whose first item is the "
+"*ierr* value and whose second item is the corresponding error message "
+"(gotten from :c:func:`FormatMessage`), and then calls "
"``PyErr_SetObject(PyExc_WindowsError, object)``. This function always "
"returns ``NULL``."
msgstr ""
@@ -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 "
-"``NULL``. You do not own a reference to the return value, so you do not "
-"need to :c:func:`Py_DECREF` it."
+"*type* (the first argument to the last call to one of the ``PyErr_Set*`` "
+"functions or to :c:func:`PyErr_Restore`). If not set, return ``NULL``. You "
+"do not own a reference to the return value, so you do not need to :c:func:"
+"`Py_DECREF` it."
msgstr ""
-#: c-api/exceptions.rst:377
+#: c-api/exceptions.rst:378
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/exceptions.rst:381
+#: c-api/exceptions.rst:382
msgid ""
"Do not compare the return value to a specific exception; use :c:func:"
"`PyErr_ExceptionMatches` instead, shown below. (The comparison could easily "
@@ -405,14 +405,14 @@ msgid ""
"of a class exception, or it may be a subclass of the expected exception.)"
msgstr ""
-#: c-api/exceptions.rst:389
+#: c-api/exceptions.rst:390
msgid ""
"Equivalent to ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``. This "
"should only be called when an exception is actually set; a memory access "
"violation will occur if no exception has been raised."
msgstr ""
-#: c-api/exceptions.rst:396
+#: c-api/exceptions.rst:397
msgid ""
"Return true if the *given* exception matches the exception type in *exc*. "
"If *exc* is a class object, this also returns true when *given* is an "
@@ -420,7 +420,7 @@ msgid ""
"tuple (and recursively in subtuples) are searched for a match."
msgstr ""
-#: c-api/exceptions.rst:404
+#: c-api/exceptions.rst:405
msgid ""
"Retrieve the error indicator into three variables whose addresses are "
"passed. If the error indicator is not set, set all three variables to "
@@ -429,14 +429,14 @@ msgid ""
"the type object is not."
msgstr ""
-#: c-api/exceptions.rst:411
+#: c-api/exceptions.rst:412
msgid ""
"This function is normally only used by code that needs to catch exceptions "
"or by code that needs to save and restore the error indicator temporarily, e."
"g.::"
msgstr ""
-#: c-api/exceptions.rst:426
+#: c-api/exceptions.rst:427
msgid ""
"Set the error indicator from the three objects. If the error indicator is "
"already set, it is cleared first. If the objects are ``NULL``, the error "
@@ -449,14 +449,14 @@ msgid ""
"function. I warned you.)"
msgstr ""
-#: c-api/exceptions.rst:438
+#: c-api/exceptions.rst:439
msgid ""
"This function is normally only used by code that needs to save and restore "
"the error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the "
"current error indicator."
msgstr ""
-#: c-api/exceptions.rst:445
+#: c-api/exceptions.rst:446
msgid ""
"Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` "
"below can be \"unnormalized\", meaning that ``*exc`` is a class object but "
@@ -466,14 +466,14 @@ msgid ""
"improve performance."
msgstr ""
-#: c-api/exceptions.rst:453
+#: c-api/exceptions.rst:454
msgid ""
"This function *does not* implicitly set the ``__traceback__`` attribute on "
"the exception value. If setting the traceback appropriately is desired, the "
"following additional snippet is needed::"
msgstr ""
-#: c-api/exceptions.rst:464
+#: c-api/exceptions.rst:465
msgid ""
"Retrieve the exception info, as known from ``sys.exc_info()``. This refers "
"to an exception that was *already caught*, not to an exception that was "
@@ -481,7 +481,7 @@ msgid ""
"may be ``NULL``. Does not modify the exception info state."
msgstr ""
-#: c-api/exceptions.rst:471
+#: c-api/exceptions.rst:472
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
@@ -489,7 +489,7 @@ msgid ""
"exception state."
msgstr ""
-#: c-api/exceptions.rst:481
+#: c-api/exceptions.rst:482
msgid ""
"Set the exception info, as known from ``sys.exc_info()``. This refers to an "
"exception that was *already caught*, not to an exception that was freshly "
@@ -498,7 +498,7 @@ msgid ""
"about the three arguments, see :c:func:`PyErr_Restore`."
msgstr ""
-#: c-api/exceptions.rst:489
+#: c-api/exceptions.rst:490
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
@@ -506,43 +506,97 @@ msgid ""
"state."
msgstr ""
-#: c-api/exceptions.rst:498
+#: c-api/exceptions.rst:499
msgid "Signal Handling"
msgstr "Traitement des signaux"
-#: c-api/exceptions.rst:508
+#: c-api/exceptions.rst:509
+msgid "This function interacts with Python's signal handling."
+msgstr ""
+
+#: c-api/exceptions.rst:511
+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:516
+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:522
+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:525
+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:529
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."
+"The default Python signal handler for :const:`SIGINT` raises the :exc:"
+"`KeyboardInterrupt` exception."
msgstr ""
-#: c-api/exceptions.rst:524
+#: c-api/exceptions.rst:540
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 :const:`SIGINT` signal arriving. This is equivalent "
+"to ``PyErr_SetInterruptEx(SIGINT)``."
msgstr ""
-#: c-api/exceptions.rst:528
+#: c-api/exceptions.rst:571
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 is async-signal-safe. It can be called without the :term:"
+"`GIL` and from a C signal handler."
msgstr ""
-#: c-api/exceptions.rst:534
+#: c-api/exceptions.rst:554
+msgid ""
+"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:558
+msgid ""
+"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:563
+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:566
+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:579
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:583
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 +604,15 @@ msgid ""
"be called from the main thread."
msgstr ""
-#: c-api/exceptions.rst:543
+#: c-api/exceptions.rst:588
msgid "On Windows, the function now also supports socket handles."
msgstr ""
-#: c-api/exceptions.rst:548
+#: c-api/exceptions.rst:593
msgid "Exception Classes"
msgstr ""
-#: c-api/exceptions.rst:552
+#: c-api/exceptions.rst:597
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 +621,7 @@ msgid ""
"(accessible in C as :c:data:`PyExc_Exception`)."
msgstr ""
-#: c-api/exceptions.rst:558
+#: c-api/exceptions.rst:603
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 +631,31 @@ msgid ""
"variables and methods."
msgstr ""
-#: c-api/exceptions.rst:567
+#: c-api/exceptions.rst:612
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:620
msgid "Exception Objects"
msgstr "Objets exception"
-#: c-api/exceptions.rst:579
+#: c-api/exceptions.rst:624
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:631
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:637
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 +663,127 @@ msgid ""
"this returns ``NULL``."
msgstr ""
-#: c-api/exceptions.rst:600
+#: c-api/exceptions.rst:645
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:652
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:659
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:663
msgid ""
":attr:`__suppress_context__` is implicitly set to ``True`` by this function."
msgstr ""
-#: c-api/exceptions.rst:624
+#: c-api/exceptions.rst:669
msgid "Unicode Exception Objects"
msgstr "Objets exception Unicode"
-#: c-api/exceptions.rst:626
+#: c-api/exceptions.rst:671
msgid ""
"The following functions are used to create and modify Unicode exceptions "
"from C."
msgstr ""
-#: c-api/exceptions.rst:630
+#: c-api/exceptions.rst:675
msgid ""
"Create a :class:`UnicodeDecodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are "
"UTF-8 encoded strings."
msgstr ""
-#: c-api/exceptions.rst:636
+#: c-api/exceptions.rst:681
msgid ""
"Create a :class:`UnicodeEncodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are "
"UTF-8 encoded strings."
msgstr ""
-#: c-api/exceptions.rst:650
+#: c-api/exceptions.rst:695
msgid "3.11"
-msgstr ""
+msgstr "3.11"
-#: c-api/exceptions.rst:642
+#: c-api/exceptions.rst:687
msgid ""
"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``."
msgstr ""
-#: c-api/exceptions.rst:647
+#: c-api/exceptions.rst:692
msgid ""
"Create a :class:`UnicodeTranslateError` object with the attributes *object*, "
"*length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string."
msgstr ""
-#: c-api/exceptions.rst:652
+#: c-api/exceptions.rst:697
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:703
msgid "Return the *encoding* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:664
+#: c-api/exceptions.rst:709
msgid "Return the *object* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:670
+#: c-api/exceptions.rst:715
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:723
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:730
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:738
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:745
msgid "Return the *reason* attribute of the given exception object."
msgstr ""
-#: c-api/exceptions.rst:706
+#: c-api/exceptions.rst:751
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:758
msgid "Recursion Control"
msgstr "Contrôle de la récursion"
-#: c-api/exceptions.rst:715
+#: c-api/exceptions.rst:760
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 +793,42 @@ msgid ""
"recursion handling."
msgstr ""
-#: c-api/exceptions.rst:724
+#: c-api/exceptions.rst:769
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:771
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:775
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:779
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:791
msgid "This function is now also available in the limited API."
msgstr ""
-#: c-api/exceptions.rst:743
+#: c-api/exceptions.rst:788
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:794
msgid ""
"Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types "
"requires special recursion handling. In addition to protecting the stack, :"
@@ -783,13 +837,13 @@ msgid ""
"Effectively, these are the C equivalent to :func:`reprlib.recursive_repr`."
msgstr ""
-#: c-api/exceptions.rst:757
+#: c-api/exceptions.rst:802
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:805
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,483 +851,479 @@ msgid ""
"`dict` objects return ``{...}`` and :class:`list` objects return ``[...]``."
msgstr ""
-#: c-api/exceptions.rst:766
+#: c-api/exceptions.rst:811
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:815
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:820
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:827
msgid "Standard Exceptions"
msgstr "Exceptions standards"
-#: c-api/exceptions.rst:784
+#: c-api/exceptions.rst:829
msgid ""
"All standard Python exceptions are available as global variables whose names "
"are ``PyExc_`` followed by the Python exception name. These have the type :"
-"c:type:`PyObject*`; they are all class objects. For completeness, here are "
+"c:expr:`PyObject*`; they are all class objects. For completeness, here are "
"all the variables:"
msgstr ""
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1023 c-api/exceptions.rst:1068
msgid "C Name"
msgstr "Nom C"
-#: c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1068
msgid "Python Name"
msgstr "Nom Python"
-#: c-api/exceptions.rst:978 c-api/exceptions.rst:1023
+#: c-api/exceptions.rst:1023 c-api/exceptions.rst:1068
msgid "Notes"
msgstr "Notes"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:892
msgid ":c:data:`PyExc_BaseException`"
msgstr ":c:data:`PyExc_BaseException`"
-#: c-api/exceptions.rst:847
+#: c-api/exceptions.rst:892
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:894 c-api/exceptions.rst:942 c-api/exceptions.rst:954
+msgid "[1]_"
+msgstr ""
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:894
msgid ":c:data:`PyExc_Exception`"
msgstr ":c:data:`PyExc_Exception`"
-#: c-api/exceptions.rst:849
+#: c-api/exceptions.rst:894
msgid ":exc:`Exception`"
msgstr ":exc:`Exception`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:896
msgid ":c:data:`PyExc_ArithmeticError`"
msgstr ":c:data:`PyExc_ArithmeticError`"
-#: c-api/exceptions.rst:851
+#: c-api/exceptions.rst:896
msgid ":exc:`ArithmeticError`"
msgstr ":exc:`ArithmeticError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:898
msgid ":c:data:`PyExc_AssertionError`"
msgstr ":c:data:`PyExc_AssertionError`"
-#: c-api/exceptions.rst:853
+#: c-api/exceptions.rst:898
msgid ":exc:`AssertionError`"
msgstr ":exc:`AssertionError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:900
msgid ":c:data:`PyExc_AttributeError`"
msgstr ":c:data:`PyExc_AttributeError`"
-#: c-api/exceptions.rst:855
+#: c-api/exceptions.rst:900
msgid ":exc:`AttributeError`"
msgstr ":exc:`AttributeError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:902
msgid ":c:data:`PyExc_BlockingIOError`"
msgstr ":c:data:`PyExc_BlockingIOError`"
-#: c-api/exceptions.rst:857
+#: c-api/exceptions.rst:902
msgid ":exc:`BlockingIOError`"
msgstr ":exc:`BlockingIOError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:904
msgid ":c:data:`PyExc_BrokenPipeError`"
msgstr ":c:data:`PyExc_BrokenPipeError`"
-#: c-api/exceptions.rst:859
+#: c-api/exceptions.rst:904
msgid ":exc:`BrokenPipeError`"
msgstr ":exc:`BrokenPipeError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:906
msgid ":c:data:`PyExc_BufferError`"
msgstr ":c:data:`PyExc_BufferError`"
-#: c-api/exceptions.rst:861
+#: c-api/exceptions.rst:906
msgid ":exc:`BufferError`"
msgstr ":exc:`BufferError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:908
msgid ":c:data:`PyExc_ChildProcessError`"
msgstr ":c:data:`PyExc_ChildProcessError`"
-#: c-api/exceptions.rst:863
+#: c-api/exceptions.rst:908
msgid ":exc:`ChildProcessError`"
msgstr ":exc:`ChildProcessError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:910
msgid ":c:data:`PyExc_ConnectionAbortedError`"
msgstr ":c:data:`PyExc_ConnectionAbortedError`"
-#: c-api/exceptions.rst:865
+#: c-api/exceptions.rst:910
msgid ":exc:`ConnectionAbortedError`"
msgstr ":exc:`ConnectionAbortedError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:912
msgid ":c:data:`PyExc_ConnectionError`"
msgstr ":c:data:`PyExc_ConnectionError`"
-#: c-api/exceptions.rst:867
+#: c-api/exceptions.rst:912
msgid ":exc:`ConnectionError`"
msgstr ":exc:`ConnectionError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:914
msgid ":c:data:`PyExc_ConnectionRefusedError`"
msgstr ":c:data:`PyExc_ConnectionRefusedError`"
-#: c-api/exceptions.rst:869
+#: c-api/exceptions.rst:914
msgid ":exc:`ConnectionRefusedError`"
msgstr ":exc:`ConnectionRefusedError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:916
msgid ":c:data:`PyExc_ConnectionResetError`"
msgstr ":c:data:`PyExc_ConnectionResetError`"
-#: c-api/exceptions.rst:871
+#: c-api/exceptions.rst:916
msgid ":exc:`ConnectionResetError`"
msgstr ":exc:`ConnectionResetError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:918
msgid ":c:data:`PyExc_EOFError`"
msgstr ":c:data:`PyExc_EOFError`"
-#: c-api/exceptions.rst:873
+#: c-api/exceptions.rst:918
msgid ":exc:`EOFError`"
msgstr ":exc:`EOFError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:920
msgid ":c:data:`PyExc_FileExistsError`"
msgstr ":c:data:`PyExc_FileExistsError`"
-#: c-api/exceptions.rst:875
+#: c-api/exceptions.rst:920
msgid ":exc:`FileExistsError`"
msgstr ":exc:`FileExistsError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:922
msgid ":c:data:`PyExc_FileNotFoundError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:877
+#: c-api/exceptions.rst:922
msgid ":exc:`FileNotFoundError`"
msgstr ":exc:`FileNotFoundError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:924
msgid ":c:data:`PyExc_FloatingPointError`"
msgstr ":c:data:`PyExc_FloatingPointError`"
-#: c-api/exceptions.rst:879
+#: c-api/exceptions.rst:924
msgid ":exc:`FloatingPointError`"
msgstr ":exc:`FloatingPointError`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:926
msgid ":c:data:`PyExc_GeneratorExit`"
msgstr ":c:data:`PyExc_GeneratorExit`"
-#: c-api/exceptions.rst:881
+#: c-api/exceptions.rst:926
msgid ":exc:`GeneratorExit`"
msgstr ":exc:`GeneratorExit`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:928
msgid ":c:data:`PyExc_ImportError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:883
+#: c-api/exceptions.rst:928
msgid ":exc:`ImportError`"
msgstr ":exc:`ImportError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:930
msgid ":c:data:`PyExc_IndentationError`"
msgstr ":c:data:`PyExc_IndentationError`"
-#: c-api/exceptions.rst:885
+#: c-api/exceptions.rst:930
msgid ":exc:`IndentationError`"
msgstr ":exc:`IndentationError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:932
msgid ":c:data:`PyExc_IndexError`"
msgstr ":c:data:`PyExc_IndexError`"
-#: c-api/exceptions.rst:887
+#: c-api/exceptions.rst:932
msgid ":exc:`IndexError`"
msgstr ":exc:`IndexError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:934
msgid ":c:data:`PyExc_InterruptedError`"
msgstr ":c:data:`PyExc_InterruptedError`"
-#: c-api/exceptions.rst:889
+#: c-api/exceptions.rst:934
msgid ":exc:`InterruptedError`"
msgstr ":exc:`InterruptedError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:936
msgid ":c:data:`PyExc_IsADirectoryError`"
msgstr ":c:data:`PyExc_IsADirectoryError`"
-#: c-api/exceptions.rst:891
+#: c-api/exceptions.rst:936
msgid ":exc:`IsADirectoryError`"
msgstr ":exc:`IsADirectoryError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:938
msgid ":c:data:`PyExc_KeyError`"
msgstr ":c:data:`PyExc_KeyError`"
-#: c-api/exceptions.rst:893
+#: c-api/exceptions.rst:938
msgid ":exc:`KeyError`"
msgstr ":exc:`KeyError`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:940
msgid ":c:data:`PyExc_KeyboardInterrupt`"
msgstr ":c:data:`PyExc_KeyboardInterrupt`"
-#: c-api/exceptions.rst:895
+#: c-api/exceptions.rst:940
msgid ":exc:`KeyboardInterrupt`"
msgstr ":exc:`KeyboardInterrupt`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:942
msgid ":c:data:`PyExc_LookupError`"
msgstr ":c:data:`PyExc_LookupError`"
-#: c-api/exceptions.rst:897
+#: c-api/exceptions.rst:942
msgid ":exc:`LookupError`"
msgstr ":exc:`LookupError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:944
msgid ":c:data:`PyExc_MemoryError`"
msgstr ":c:data:`PyExc_MemoryError`"
-#: c-api/exceptions.rst:899
+#: c-api/exceptions.rst:944
msgid ":exc:`MemoryError`"
msgstr ":exc:`MemoryError`"
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:946
#, fuzzy
msgid ":c:data:`PyExc_ModuleNotFoundError`"
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:901
+#: c-api/exceptions.rst:946
msgid ":exc:`ModuleNotFoundError`"
-msgstr ""
+msgstr ":exc:`ModuleNotFoundError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:948
msgid ":c:data:`PyExc_NameError`"
msgstr ":c:data:`PyExc_NameError`"
-#: c-api/exceptions.rst:903
+#: c-api/exceptions.rst:948
msgid ":exc:`NameError`"
msgstr ":exc:`NameError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:950
msgid ":c:data:`PyExc_NotADirectoryError`"
msgstr ":c:data:`PyExc_NotADirectoryError`"
-#: c-api/exceptions.rst:905
+#: c-api/exceptions.rst:950
msgid ":exc:`NotADirectoryError`"
msgstr ":exc:`NotADirectoryError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:952
msgid ":c:data:`PyExc_NotImplementedError`"
msgstr ":c:data:`PyExc_NotImplementedError`"
-#: c-api/exceptions.rst:907
+#: c-api/exceptions.rst:952
msgid ":exc:`NotImplementedError`"
msgstr ":exc:`NotImplementedError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:954
msgid ":c:data:`PyExc_OSError`"
msgstr ":c:data:`PyExc_OSError`"
-#: c-api/exceptions.rst:909
+#: c-api/exceptions.rst:954
msgid ":exc:`OSError`"
msgstr ":exc:`OSError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:956
msgid ":c:data:`PyExc_OverflowError`"
msgstr ":c:data:`PyExc_OverflowError`"
-#: c-api/exceptions.rst:911
+#: c-api/exceptions.rst:956
msgid ":exc:`OverflowError`"
msgstr ":exc:`OverflowError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:958
msgid ":c:data:`PyExc_PermissionError`"
msgstr ":c:data:`PyExc_PermissionError`"
-#: c-api/exceptions.rst:913
+#: c-api/exceptions.rst:958
msgid ":exc:`PermissionError`"
msgstr ":exc:`PermissionError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:960
msgid ":c:data:`PyExc_ProcessLookupError`"
msgstr ":c:data:`PyExc_ProcessLookupError`"
-#: c-api/exceptions.rst:915
+#: c-api/exceptions.rst:960
msgid ":exc:`ProcessLookupError`"
msgstr ":exc:`ProcessLookupError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:962
msgid ":c:data:`PyExc_RecursionError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:917
+#: c-api/exceptions.rst:962
msgid ":exc:`RecursionError`"
-msgstr ""
+msgstr ":exc:`RecursionError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:964
msgid ":c:data:`PyExc_ReferenceError`"
msgstr ":c:data:`PyExc_ReferenceError`"
-#: c-api/exceptions.rst:919
+#: c-api/exceptions.rst:964
msgid ":exc:`ReferenceError`"
msgstr ":exc:`ReferenceError`"
-#: c-api/exceptions.rst:919
-msgid "\\(2)"
-msgstr "\\(2)"
-
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:966
msgid ":c:data:`PyExc_RuntimeError`"
msgstr ":c:data:`PyExc_RuntimeError`"
-#: c-api/exceptions.rst:921
+#: c-api/exceptions.rst:966
msgid ":exc:`RuntimeError`"
msgstr ":exc:`RuntimeError`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:968
msgid ":c:data:`PyExc_StopAsyncIteration`"
msgstr ":c:data:`PyExc_StopAsyncIteration`"
-#: c-api/exceptions.rst:923
+#: c-api/exceptions.rst:968
msgid ":exc:`StopAsyncIteration`"
msgstr ":exc:`StopAsyncIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:970
msgid ":c:data:`PyExc_StopIteration`"
msgstr ":c:data:`PyExc_StopIteration`"
-#: c-api/exceptions.rst:925
+#: c-api/exceptions.rst:970
msgid ":exc:`StopIteration`"
msgstr ":exc:`StopIteration`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:972
msgid ":c:data:`PyExc_SyntaxError`"
msgstr ":c:data:`PyExc_SyntaxError`"
-#: c-api/exceptions.rst:927
+#: c-api/exceptions.rst:972
msgid ":exc:`SyntaxError`"
msgstr ":exc:`SyntaxError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:974
msgid ":c:data:`PyExc_SystemError`"
msgstr ":c:data:`PyExc_SystemError`"
-#: c-api/exceptions.rst:929
+#: c-api/exceptions.rst:974
msgid ":exc:`SystemError`"
msgstr ":exc:`SystemError`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:976
msgid ":c:data:`PyExc_SystemExit`"
msgstr ":c:data:`PyExc_SystemExit`"
-#: c-api/exceptions.rst:931
+#: c-api/exceptions.rst:976
msgid ":exc:`SystemExit`"
msgstr ":exc:`SystemExit`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:978
msgid ":c:data:`PyExc_TabError`"
msgstr ":c:data:`PyExc_TabError`"
-#: c-api/exceptions.rst:933
+#: c-api/exceptions.rst:978
msgid ":exc:`TabError`"
msgstr ":exc:`TabError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:980
msgid ":c:data:`PyExc_TimeoutError`"
msgstr ":c:data:`PyExc_ImportError`"
-#: c-api/exceptions.rst:935
+#: c-api/exceptions.rst:980
msgid ":exc:`TimeoutError`"
msgstr ":exc:`TimeoutError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:982
msgid ":c:data:`PyExc_TypeError`"
msgstr ":c:data:`PyExc_TypeError`"
-#: c-api/exceptions.rst:937
+#: c-api/exceptions.rst:982
msgid ":exc:`TypeError`"
msgstr ":exc:`TypeError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:984
msgid ":c:data:`PyExc_UnboundLocalError`"
msgstr ":c:data:`PyExc_UnboundLocalError`"
-#: c-api/exceptions.rst:939
+#: c-api/exceptions.rst:984
msgid ":exc:`UnboundLocalError`"
msgstr ":exc:`UnboundLocalError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:986
msgid ":c:data:`PyExc_UnicodeDecodeError`"
msgstr ":c:data:`PyExc_UnicodeDecodeError`"
-#: c-api/exceptions.rst:941
+#: c-api/exceptions.rst:986
msgid ":exc:`UnicodeDecodeError`"
msgstr ":exc:`UnicodeDecodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:988
msgid ":c:data:`PyExc_UnicodeEncodeError`"
msgstr ":c:data:`PyExc_UnicodeEncodeError`"
-#: c-api/exceptions.rst:943
+#: c-api/exceptions.rst:988
msgid ":exc:`UnicodeEncodeError`"
msgstr ":exc:`UnicodeEncodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:990
msgid ":c:data:`PyExc_UnicodeError`"
msgstr ":c:data:`PyExc_UnicodeError`"
-#: c-api/exceptions.rst:945
+#: c-api/exceptions.rst:990
msgid ":exc:`UnicodeError`"
msgstr ":exc:`UnicodeError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:992
msgid ":c:data:`PyExc_UnicodeTranslateError`"
msgstr ":c:data:`PyExc_UnicodeTranslateError`"
-#: c-api/exceptions.rst:947
+#: c-api/exceptions.rst:992
msgid ":exc:`UnicodeTranslateError`"
msgstr ":exc:`UnicodeTranslateError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:994
msgid ":c:data:`PyExc_ValueError`"
msgstr ":c:data:`PyExc_ValueError`"
-#: c-api/exceptions.rst:949
+#: c-api/exceptions.rst:994
msgid ":exc:`ValueError`"
msgstr ":exc:`ValueError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:996
msgid ":c:data:`PyExc_ZeroDivisionError`"
msgstr ":c:data:`PyExc_ZeroDivisionError`"
-#: c-api/exceptions.rst:951
+#: c-api/exceptions.rst:996
msgid ":exc:`ZeroDivisionError`"
msgstr ":exc:`ZeroDivisionError`"
-#: c-api/exceptions.rst:954
+#: c-api/exceptions.rst:999
msgid ""
":c:data:`PyExc_BlockingIOError`, :c:data:`PyExc_BrokenPipeError`, :c:data:"
"`PyExc_ChildProcessError`, :c:data:`PyExc_ConnectionError`, :c:data:"
@@ -1285,156 +1335,169 @@ msgid ""
"`PyExc_TimeoutError` were introduced following :pep:`3151`."
msgstr ""
-#: c-api/exceptions.rst:964
+#: c-api/exceptions.rst:1009
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:1012
msgid ":c:data:`PyExc_ModuleNotFoundError`."
msgstr ":c:data:`PyExc_ModuleNotFoundError`."
-#: c-api/exceptions.rst:970
+#: c-api/exceptions.rst:1015
msgid "These are compatibility aliases to :c:data:`PyExc_OSError`:"
msgstr ""
-#: c-api/exceptions.rst:980
+#: c-api/exceptions.rst:1025
msgid ":c:data:`PyExc_EnvironmentError`"
msgstr ":c:data:`PyExc_EnvironmentError`"
-#: c-api/exceptions.rst:982
+#: c-api/exceptions.rst:1027
msgid ":c:data:`PyExc_IOError`"
msgstr ":c:data:`PyExc_IOError`"
-#: c-api/exceptions.rst:984
+#: c-api/exceptions.rst:1029
msgid ":c:data:`PyExc_WindowsError`"
msgstr ":c:data:`PyExc_WindowsError`"
-#: c-api/exceptions.rst:984
-msgid "\\(3)"
-msgstr "\\(3)"
+#: c-api/exceptions.rst:1029
+msgid "[2]_"
+msgstr ""
-#: c-api/exceptions.rst:987
+#: c-api/exceptions.rst:1032
msgid "These aliases used to be separate exception types."
msgstr ""
-#: c-api/exceptions.rst:1051
+#: c-api/exceptions.rst:1096
msgid "Notes:"
msgstr "Notes :"
-#: c-api/exceptions.rst:993
+#: c-api/exceptions.rst:1038
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:1041
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:1047
msgid "Standard Warning Categories"
msgstr ""
-#: c-api/exceptions.rst:1004
+#: c-api/exceptions.rst:1049
msgid ""
"All standard Python warning categories are available as global variables "
"whose names are ``PyExc_`` followed by the Python exception name. These have "
-"the type :c:type:`PyObject*`; they are all class objects. For completeness, "
+"the type :c:expr:`PyObject*`; they are all class objects. For completeness, "
"here are all the variables:"
msgstr ""
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1070
msgid ":c:data:`PyExc_Warning`"
msgstr ":c:data:`PyExc_Warning`"
-#: c-api/exceptions.rst:1025
+#: c-api/exceptions.rst:1070
msgid ":exc:`Warning`"
msgstr ":exc:`Warning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1070
+msgid "[3]_"
+msgstr ""
+
+#: c-api/exceptions.rst:1072
msgid ":c:data:`PyExc_BytesWarning`"
msgstr ":c:data:`PyExc_BytesWarning`"
-#: c-api/exceptions.rst:1027
+#: c-api/exceptions.rst:1072
msgid ":exc:`BytesWarning`"
msgstr ":exc:`BytesWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1074
msgid ":c:data:`PyExc_DeprecationWarning`"
msgstr ":c:data:`PyExc_DeprecationWarning`"
-#: c-api/exceptions.rst:1029
+#: c-api/exceptions.rst:1074
msgid ":exc:`DeprecationWarning`"
msgstr ":exc:`DeprecationWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1076
msgid ":c:data:`PyExc_FutureWarning`"
msgstr ":c:data:`PyExc_FutureWarning`"
-#: c-api/exceptions.rst:1031
+#: c-api/exceptions.rst:1076
msgid ":exc:`FutureWarning`"
msgstr ":exc:`FutureWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1078
msgid ":c:data:`PyExc_ImportWarning`"
msgstr ":c:data:`PyExc_ImportWarning`"
-#: c-api/exceptions.rst:1033
+#: c-api/exceptions.rst:1078
msgid ":exc:`ImportWarning`"
msgstr ":exc:`ImportWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1080
msgid ":c:data:`PyExc_PendingDeprecationWarning`"
msgstr ":c:data:`PyExc_PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1035
+#: c-api/exceptions.rst:1080
msgid ":exc:`PendingDeprecationWarning`"
msgstr ":exc:`PendingDeprecationWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1082
msgid ":c:data:`PyExc_ResourceWarning`"
msgstr ":c:data:`PyExc_ResourceWarning`"
-#: c-api/exceptions.rst:1037
+#: c-api/exceptions.rst:1082
msgid ":exc:`ResourceWarning`"
msgstr ":exc:`ResourceWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1084
msgid ":c:data:`PyExc_RuntimeWarning`"
msgstr ":c:data:`PyExc_RuntimeWarning`"
-#: c-api/exceptions.rst:1039
+#: c-api/exceptions.rst:1084
msgid ":exc:`RuntimeWarning`"
msgstr ":exc:`RuntimeWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1086
msgid ":c:data:`PyExc_SyntaxWarning`"
msgstr ":c:data:`PyExc_SyntaxWarning`"
-#: c-api/exceptions.rst:1041
+#: c-api/exceptions.rst:1086
msgid ":exc:`SyntaxWarning`"
msgstr ":exc:`SyntaxWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1088
msgid ":c:data:`PyExc_UnicodeWarning`"
msgstr ":c:data:`PyExc_UnicodeWarning`"
-#: c-api/exceptions.rst:1043
+#: c-api/exceptions.rst:1088
msgid ":exc:`UnicodeWarning`"
msgstr ":exc:`UnicodeWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1090
msgid ":c:data:`PyExc_UserWarning`"
msgstr ":c:data:`PyExc_UserWarning`"
-#: c-api/exceptions.rst:1045
+#: c-api/exceptions.rst:1090
msgid ":exc:`UserWarning`"
msgstr ":exc:`UserWarning`"
-#: c-api/exceptions.rst:1048
+#: c-api/exceptions.rst:1093
msgid ":c:data:`PyExc_ResourceWarning`."
msgstr ":c:data:`PyExc_ResourceWarning`."
-#: c-api/exceptions.rst:1054
+#: c-api/exceptions.rst:1099
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..d33211c76f 100644
--- a/c-api/file.po
+++ b/c-api/file.po
@@ -5,8 +5,8 @@ msgid ""
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"
+"POT-Creation-Date: 2022-10-18 15:46+0200\n"
+"PO-Revision-Date: 2021-12-11 12:00+0100\n"
"Last-Translator: \n"
"Language-Team: FRENCH \n"
"Language: fr\n"
@@ -23,7 +23,7 @@ msgstr "Objets fichiers"
#, fuzzy
msgid ""
"These APIs are a minimal emulation of the Python 2 C API for built-in file "
-"objects, which used to rely on the buffered I/O (:c:type:`FILE*`) support "
+"objects, which used to rely on the buffered I/O (:c:expr:`FILE*`) support "
"from the C standard library. In Python 3, files and streams use the new :"
"mod:`io` module, which defines several layers over the low-level unbuffered "
"I/O of the operating system. The functions described below are convenience "
@@ -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."
@@ -76,8 +76,9 @@ msgid "Ignore *name* attribute."
msgstr "ignore l'attribut *name*"
#: c-api/file.rst:41
+#, fuzzy
msgid ""
-"Return the file descriptor associated with *p* as an :c:type:`int`. If the "
+"Return the file descriptor associated with *p* as an :c:expr:`int`. If the "
"object is an integer, its value is returned. If not, the object's :meth:"
"`~io.IOBase.fileno` method is called if it exists; the method must return an "
"integer, which is returned as the file descriptor value. Sets an exception "
@@ -120,7 +121,7 @@ msgstr ""
#: c-api/file.rst:68
msgid ""
-"The handler is a function of type :c:type:`PyObject *(\\*)(PyObject *path, "
+"The handler is a function of type :c:expr:`PyObject *(\\*)(PyObject *path, "
"void *userData)`, where *path* is guaranteed to be :c:type:`PyUnicodeObject`."
msgstr ""
diff --git a/c-api/float.po b/c-api/float.po
index 7f8321515e..cd18ca540b 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-10-18 15:46+0200\n"
"PO-Revision-Date: 2019-01-14 15:30+0100\n"
"Last-Translator: ANTOINE FOURES \n"
"Language-Team: FRENCH \n"
@@ -72,7 +72,7 @@ msgstr ""
#: c-api/float.rst:47
#, fuzzy
msgid ""
-"Return a C :c:type:`double` representation of the contents of *pyfloat*. If "
+"Return a C :c:expr:`double` representation of the contents of *pyfloat*. If "
"*pyfloat* is not a Python floating point object but has a :meth:`__float__` "
"method, this method will first be called to convert *pyfloat* into a float. "
"If ``__float__()`` is not defined then it falls back to :meth:`__index__`. "
@@ -91,8 +91,9 @@ msgid "Use :meth:`__index__` if available."
msgstr ""
#: c-api/float.rst:60
+#, fuzzy
msgid ""
-"Return a C :c:type:`double` representation of the contents of *pyfloat*, but "
+"Return a C :c:expr:`double` representation of the contents of *pyfloat*, but "
"without error checking."
msgstr ""
"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
@@ -109,16 +110,18 @@ msgstr ""
"flottante. C'est une enveloppe autour du fichier d'entête :file:`float.h`."
#: c-api/float.rst:73
+#, fuzzy
msgid ""
-"Return the maximum representable finite float *DBL_MAX* as C :c:type:"
+"Return the maximum representable finite float *DBL_MAX* as C :c:expr:"
"`double`."
msgstr ""
"Renvoie le nombre à virgule flottante fini maximal *DBL_MAX* sous la forme "
"d'un :c:type:`double` en C."
#: c-api/float.rst:78
+#, fuzzy
msgid ""
-"Return the minimum normalized positive float *DBL_MIN* as C :c:type:`double`."
+"Return the minimum normalized positive float *DBL_MIN* as C :c:expr:`double`."
msgstr ""
"Renvoie le nombre à virgule flottante minimal normalisé *DBL_MIN* sous la "
"forme :c:type:`double` en C."
diff --git a/c-api/function.po b/c-api/function.po
index c60e6d04a3..2dedf0c20b 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-04-05 10:05+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 "Objets fonctions"
#: c-api/function.rst:10
msgid "There are a few functions specific to Python functions."
-msgstr ""
+msgstr "Certaines fonctions sont spécifiques aux fonctions Python."
#: c-api/function.rst:15
msgid "The C structure used for functions."
-msgstr ""
+msgstr "La structure C utilisée pour les fonctions."
#: c-api/function.rst:22
msgid ""
@@ -32,6 +32,8 @@ msgid ""
"function type. It is exposed to Python programmers as ``types."
"FunctionType``."
msgstr ""
+"C'est une instance de :c:type:`PyTypeObject` et représente le type fonction "
+"en Python. Il est exposé aux développeurs comme ``types.FunctionType``."
#: c-api/function.rst:28
msgid ""
@@ -39,6 +41,9 @@ msgid ""
"`PyFunction_Type`). The parameter must not be ``NULL``. This function "
"always succeeds."
msgstr ""
+"Renvoie vrai si *o* est un objet de type fonction (a comme type :c:data:"
+"`PyFunction_Type`). Le paramètre ne doit pas être ``NULL``. Cette fonction "
+"réussit toujours."
#: c-api/function.rst:34
msgid ""
@@ -46,6 +51,8 @@ msgid ""
"*globals* must be a dictionary with the global variables accessible to the "
"function."
msgstr ""
+"Renvoie une nouvelle fonction associée avec l'objet *code*. *globals* doit "
+"être un dictionnaire avec les variables globales accessibles à la fonction."
#: c-api/function.rst:37
msgid ""
@@ -65,55 +72,77 @@ msgstr ""
#: c-api/function.rst:54
msgid "Return the code object associated with the function object *op*."
-msgstr ""
+msgstr "Renvoie l'objet code associé avec l'objet de la fonction *op*."
#: c-api/function.rst:59
msgid "Return the globals dictionary associated with the function object *op*."
msgstr ""
+"Renvoie le dictionnaire global associé avec l'objet de la fonction *op*."
#: c-api/function.rst:64
msgid ""
-"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 ""
+"Renvoie un :term:`borrowed reference` à l'attribut ``__module__`` de l'objet "
+"fonction *op*. Il peut être *NULL*."
-#: c-api/function.rst:71
+#: c-api/function.rst:67
+msgid ""
+"This is normally a string containing the module name, but can be set to any "
+"other object by Python code."
+msgstr ""
+"C'est typiquement une chaîne de caractère contenant le nom du module, mais "
+"il peut être changé par du code Python pour n'importe quel autre objet."
+
+#: c-api/function.rst:73
msgid ""
"Return the argument default values of the function object *op*. This can be "
"a tuple of arguments or ``NULL``."
msgstr ""
+"Renvoie les valeurs par défaut de l'argument de l'objet de la fonction *op*. "
+"Cela peut être un tuple d'arguments ou ``NULL``."
-#: c-api/function.rst:77
+#: c-api/function.rst:79
msgid ""
"Set the argument default values for the function object *op*. *defaults* "
"must be ``Py_None`` or a tuple."
msgstr ""
+"Définir les valeurs par défaut de l'argument pour l'objet de la fonction "
+"*op*. *defaults* doit être ``Py_None`` ou un tuple."
-#: c-api/function.rst:94 c-api/function.rst:108
+#: c-api/function.rst:96 c-api/function.rst:110
msgid "Raises :exc:`SystemError` and returns ``-1`` on failure."
-msgstr ""
+msgstr "Lève :exc:`SystemError` et renvoie ``-1`` en cas de d'échec."
-#: c-api/function.rst:85
+#: c-api/function.rst:87
msgid ""
"Return the closure associated with the function object *op*. This can be "
"``NULL`` or a tuple of cell objects."
msgstr ""
+"Renvoie la fermeture associée avec l'objet de la fonction *op*. Cela peut "
+"être ``NULL`` ou un tuple d'objets cellule."
-#: c-api/function.rst:91
+#: c-api/function.rst:93
msgid ""
"Set the closure associated with the function object *op*. *closure* must be "
"``Py_None`` or a tuple of cell objects."
msgstr ""
+"Définir la fermeture associée avec l'objet de la fonction *op*. *closure* "
+"doit être ``Py_None`` ou un tuple d'objets cellule."
-#: c-api/function.rst:99
+#: c-api/function.rst:101
msgid ""
"Return the annotations of the function object *op*. This can be a mutable "
"dictionary or ``NULL``."
msgstr ""
+"Renvoie les annotations de l'objet de la fonction *op*. Cela peut être un "
+"dictionnaire mutable ou ``NULL``."
-#: c-api/function.rst:105
+#: c-api/function.rst:107
msgid ""
"Set the annotations for the function object *op*. *annotations* must be a "
"dictionary or ``Py_None``."
msgstr ""
+"Définir les annotations pour l'objet de la fonction *op*. *annotations* doit "
+"être un dictionnaire ou ``Py_None``."
diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po
index 7d02c6dea7..6935f39282 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-18 17:06+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..4303354d0e 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-10-18 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -271,8 +271,9 @@ msgid ""
msgstr ""
#: c-api/import.rst:264
+#, fuzzy
msgid ""
-"This pointer is initialized to point to an array of :c:type:`struct _frozen` "
+"This pointer is initialized to point to an array of :c:struct:`_frozen` "
"records, terminated by one whose members are all ``NULL`` or zero. When a "
"frozen module is imported, it is searched in this table. Third-party code "
"could play tricks with this to provide a dynamically created collection of "
@@ -311,6 +312,13 @@ msgid ""
"`name` field; failure to provide the sentinel value can result in a memory "
"fault. Returns ``0`` on success or ``-1`` if insufficient memory could be "
"allocated to extend the internal table. In the event of failure, no modules "
-"are added to the internal table. This should be called before :c:func:"
+"are added to the internal table. This must be called before :c:func:"
"`Py_Initialize`."
msgstr ""
+
+#: c-api/import.rst:304
+msgid ""
+"If Python is initialized multiple times, :c:func:`PyImport_AppendInittab` "
+"or :c:func:`PyImport_ExtendInittab` must be called before each Python "
+"initialization."
+msgstr ""
diff --git a/c-api/init.po b/c-api/init.po
index 5da8f220de..a79574f2df 100644
--- a/c-api/init.po
+++ b/c-api/init.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 16:59+0100\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: 2018-11-29 18:22+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -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,60 @@ 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 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:330
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:333
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:337
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:340
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:343
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:356
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 +540,30 @@ msgid ""
"this storage."
msgstr ""
-#: c-api/init.rst:480 c-api/init.rst:613 c-api/init.rst:630
+#: c-api/init.rst:511 c-api/init.rst:644 c-api/init.rst:661
msgid ""
-"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:type:"
+"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:expr:"
"`wchar_*` string."
msgstr ""
-#: c-api/init.rst:374
+#: c-api/init.rst:375
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:398 c-api/init.rst:458 c-api/init.rst:671
+msgid ""
+"This function should not be called before :c:func:`Py_Initialize`, otherwise "
+"it returns ``NULL``."
+msgstr ""
+
+#: c-api/init.rst:401 c-api/init.rst:461 c-api/init.rst:674
+msgid "It now returns ``NULL`` if called before :c:func:`Py_Initialize`."
+msgstr ""
+
+#: c-api/init.rst:388
msgid ""
"Return the *prefix* for installed platform-independent files. This is "
"derived through a number of complicated rules from the program name set "
@@ -560,13 +571,13 @@ msgid ""
"example, if the program name is ``'/usr/local/bin/python'``, the prefix is "
"``'/usr/local'``. The returned string points into static storage; the caller "
"should not modify its value. This corresponds to the :makevar:`prefix` "
-"variable in the top-level :file:`Makefile` and the ``--prefix`` argument to "
-"the :program:`configure` script at build time. The value is available to "
-"Python code as ``sys.prefix``. It is only useful on Unix. See also the next "
-"function."
+"variable in the top-level :file:`Makefile` and the :option:`--prefix` "
+"argument to the :program:`configure` script at build time. The value is "
+"available to Python code as ``sys.prefix``. It is only useful on Unix. See "
+"also the next function."
msgstr ""
-#: c-api/init.rst:394
+#: c-api/init.rst:407
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 +591,7 @@ msgid ""
"on Unix."
msgstr ""
-#: c-api/init.rst:404
+#: c-api/init.rst:417
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 +600,7 @@ msgid ""
"independent may be installed in :file:`/usr/local`."
msgstr ""
-#: c-api/init.rst:410
+#: c-api/init.rst:423
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 +614,7 @@ msgid ""
"independent from the Python version by which they were compiled!)."
msgstr ""
-#: c-api/init.rst:421
+#: c-api/init.rst:434
msgid ""
"System administrators will know how to configure the :program:`mount` or :"
"program:`automount` programs to share :file:`/usr/local` between platforms "
@@ -611,7 +622,7 @@ msgid ""
"platform."
msgstr ""
-#: c-api/init.rst:433
+#: c-api/init.rst:452
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 +631,31 @@ msgid ""
"available to Python code as ``sys.executable``."
msgstr ""
-#: c-api/init.rst:447
+#: c-api/init.rst:472
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:498
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:506
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 +663,80 @@ msgid ""
"required after calling :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/init.rst:483
+#: c-api/init.rst:514
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:517
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:524
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:531
msgid ""
"The first word (up to the first space character) is the current Python "
-"version; the first three characters are the major and minor version "
-"separated by a period. The returned string points into static storage; the "
-"caller should not modify its value. The value is available to Python code "
-"as :data:`sys.version`."
+"version; the first characters are the major and minor version separated by a "
+"period. The returned string points into static storage; the caller should "
+"not modify its value. The value is available to Python code as :data:`sys."
+"version`."
msgstr ""
-#: c-api/init.rst:510
+#: c-api/init.rst:541
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:552
msgid ""
"Return the official copyright string for the current Python version, for "
"example"
msgstr ""
-#: c-api/init.rst:523
+#: c-api/init.rst:554
msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
msgstr ""
-#: c-api/init.rst:527
+#: c-api/init.rst:558
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:564
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:585
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:578
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:597
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 +747,28 @@ msgid ""
"fatal condition is signalled using :c:func:`Py_FatalError`."
msgstr ""
-#: c-api/init.rst:574
+#: c-api/init.rst:605
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:609
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:612
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:621
msgid ""
"It is recommended that applications embedding the Python interpreter for "
"purposes other than executing a single script pass ``0`` as *updatepath*, "
@@ -765,32 +776,32 @@ msgid ""
"`_."
msgstr ""
-#: c-api/init.rst:595
+#: c-api/init.rst:626
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:640
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:647
msgid "The *updatepath* value depends on :option:`-I`."
msgstr ""
-#: c-api/init.rst:621
+#: c-api/init.rst:652
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:656
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 +809,18 @@ msgid ""
"this storage."
msgstr ""
-#: c-api/init.rst:636
+#: c-api/init.rst:667
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:681
msgid "Thread State and the Global Interpreter Lock"
msgstr ""
-#: c-api/init.rst:651
+#: c-api/init.rst:688
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 +832,7 @@ msgid ""
"once instead of twice."
msgstr ""
-#: c-api/init.rst:661
+#: c-api/init.rst:698
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 +842,7 @@ msgid ""
"a file, so that other Python threads can run in the meantime."
msgstr ""
-#: c-api/init.rst:672
+#: c-api/init.rst:709
msgid ""
"The Python interpreter keeps some thread-specific bookkeeping information "
"inside a data structure called :c:type:`PyThreadState`. There's also one "
@@ -839,32 +850,32 @@ msgid ""
"retrieved using :c:func:`PyThreadState_Get`."
msgstr ""
-#: c-api/init.rst:678
+#: c-api/init.rst:715
msgid "Releasing the GIL from extension code"
msgstr ""
-#: c-api/init.rst:680
+#: c-api/init.rst:717
msgid ""
"Most extension code manipulating the :term:`GIL` has the following simple "
"structure::"
msgstr ""
-#: c-api/init.rst:689
+#: c-api/init.rst:726
msgid "This is so common that a pair of macros exists to simplify it::"
msgstr ""
-#: c-api/init.rst:699
+#: c-api/init.rst:736
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:740
msgid "The block above expands to the following code::"
msgstr ""
-#: c-api/init.rst:715
+#: c-api/init.rst:752
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 +886,7 @@ msgid ""
"state, the lock must be acquired before storing the thread state pointer."
msgstr ""
-#: c-api/init.rst:724
+#: c-api/init.rst:761
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 +896,11 @@ msgid ""
"compressing or hashing data."
msgstr ""
-#: c-api/init.rst:735
+#: c-api/init.rst:772
msgid "Non-Python created threads"
msgstr ""
-#: c-api/init.rst:737
+#: c-api/init.rst:774
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 +910,7 @@ msgid ""
"for them."
msgstr ""
-#: c-api/init.rst:744
+#: c-api/init.rst:781
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,27 +921,27 @@ msgid ""
"finally free the thread state data structure."
msgstr ""
-#: c-api/init.rst:752
+#: c-api/init.rst:789
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:803
msgid ""
-"Note that the :c:func:`PyGILState_\\*` functions assume there is only one "
-"global interpreter (created automatically by :c:func:`Py_Initialize`). "
-"Python supports the creation of additional interpreters (using :c:func:"
-"`Py_NewInterpreter`), but mixing multiple interpreters and the :c:func:"
-"`PyGILState_\\*` API is unsupported."
+"Note that the ``PyGILState_*`` functions assume there is only one global "
+"interpreter (created automatically by :c:func:`Py_Initialize`). Python "
+"supports the creation of additional interpreters (using :c:func:"
+"`Py_NewInterpreter`), but mixing multiple interpreters and the "
+"``PyGILState_*`` API is unsupported."
msgstr ""
-#: c-api/init.rst:776
+#: c-api/init.rst:813
msgid "Cautions about fork()"
msgstr ""
-#: c-api/init.rst:778
+#: c-api/init.rst:815
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 +950,7 @@ msgid ""
"CPython's runtime."
msgstr ""
-#: c-api/init.rst:784
+#: c-api/init.rst:821
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 +967,7 @@ msgid ""
"locks, but is not always able to."
msgstr ""
-#: c-api/init.rst:799
+#: c-api/init.rst:836
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 +980,18 @@ msgid ""
"called immediately after."
msgstr ""
-#: c-api/init.rst:812
+#: c-api/init.rst:849
#, fuzzy
msgid "High-level API"
msgstr "Bibliothèques de haut-niveau"
-#: c-api/init.rst:814
+#: c-api/init.rst:851
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:856
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 +999,7 @@ msgid ""
"in this structure."
msgstr ""
-#: c-api/init.rst:824
+#: c-api/init.rst:861
msgid ""
"Threads belonging to different interpreters initially share nothing, except "
"process state like available memory, open file descriptors and such. The "
@@ -996,49 +1007,49 @@ msgid ""
"which interpreter they belong."
msgstr ""
-#: c-api/init.rst:832
+#: c-api/init.rst:869
msgid ""
"This data structure represents the state of a single thread. The only "
-"public data member is :attr:`interp` (:c:type:`PyInterpreterState *`), which "
+"public data member is :attr:`interp` (:c:expr:`PyInterpreterState *`), which "
"points to this thread's interpreter state."
msgstr ""
-#: c-api/init.rst:845
+#: c-api/init.rst:882
msgid "Deprecated function which does nothing."
msgstr ""
-#: c-api/init.rst:847
+#: c-api/init.rst:884
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:886
msgid "The function now does nothing."
msgstr ""
-#: c-api/init.rst:852
+#: c-api/init.rst:889
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:893
msgid ""
"This function cannot be called before :c:func:`Py_Initialize()` anymore."
msgstr ""
-#: c-api/init.rst:866
+#: c-api/init.rst:903
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:907
msgid "The :term:`GIL` is now initialized by :c:func:`Py_Initialize()`."
msgstr ""
-#: c-api/init.rst:878
+#: c-api/init.rst:915
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 +1057,7 @@ msgid ""
"acquired it."
msgstr ""
-#: c-api/init.rst:886
+#: c-api/init.rst:923
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 +1065,7 @@ msgid ""
"ensues."
msgstr ""
-#: c-api/init.rst:938 c-api/init.rst:1235
+#: c-api/init.rst:975 c-api/init.rst:1272
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 +1074,27 @@ msgid ""
"avoid unwanted termination."
msgstr ""
-#: c-api/init.rst:900
+#: c-api/init.rst:937
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:944
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:949
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:954
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 +1107,7 @@ msgid ""
"is acceptable."
msgstr ""
-#: c-api/init.rst:927
+#: c-api/init.rst:964
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 +1117,13 @@ msgid ""
"func:`PyGILState_Release`."
msgstr ""
-#: c-api/init.rst:934
+#: c-api/init.rst:971
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:983
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 +1131,13 @@ msgid ""
"caller, hence the use of the GILState API)."
msgstr ""
-#: c-api/init.rst:951
+#: c-api/init.rst:988
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:994
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 +1145,7 @@ msgid ""
"made on the main thread. This is mainly a helper/diagnostic function."
msgstr ""
-#: c-api/init.rst:965
+#: c-api/init.rst:1002
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 +1156,13 @@ msgid ""
"otherwise behave differently."
msgstr ""
-#: c-api/init.rst:977
+#: c-api/init.rst:1014
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:1020
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 +1170,7 @@ msgid ""
"discussion of this macro."
msgstr ""
-#: c-api/init.rst:991
+#: c-api/init.rst:1028
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 +1178,92 @@ msgid ""
"macro."
msgstr ""
-#: c-api/init.rst:999
+#: c-api/init.rst:1036
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:1042
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:1048
#, fuzzy
msgid "Low-level API"
msgstr "Bibliothèques de bas-niveau"
-#: c-api/init.rst:1013
+#: c-api/init.rst:1050
msgid ""
"All of the following functions must be called after :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/init.rst:1015
+#: c-api/init.rst:1052
msgid ":c:func:`Py_Initialize()` now initializes the :term:`GIL`."
msgstr ""
-#: c-api/init.rst:1021
+#: c-api/init.rst:1058
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:1062
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"PyInterpreterState_New`` with no arguments."
msgstr ""
-#: c-api/init.rst:1030
+#: c-api/init.rst:1067
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:1070
msgid ""
"Raises an :ref:`auditing event ` ``cpython."
"PyInterpreterState_Clear`` with no arguments."
msgstr ""
-#: c-api/init.rst:1038
+#: c-api/init.rst:1075
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:1082
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:1089
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:1092
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:1099
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:1106
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 +1271,93 @@ msgid ""
"`PyThreadState_Clear`."
msgstr ""
-#: c-api/init.rst:1077
+#: c-api/init.rst:1114
msgid "Get the current frame of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1079
+#: c-api/init.rst:1116
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:1119
msgid "See also :c:func:`PyEval_GetFrame`."
msgstr ""
-#: c-api/init.rst:1093 c-api/init.rst:1102
+#: c-api/init.rst:1130 c-api/init.rst:1139
msgid "*tstate* must not be ``NULL``."
msgstr ""
-#: c-api/init.rst:1091
+#: c-api/init.rst:1128
msgid ""
"Get the unique thread state identifier of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1100
+#: c-api/init.rst:1137
msgid "Get the interpreter of the Python thread state *tstate*."
msgstr ""
-#: c-api/init.rst:1109
+#: c-api/init.rst:1146
msgid "Get the current interpreter."
msgstr ""
-#: c-api/init.rst:1111
+#: c-api/init.rst:1148
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:1161
msgid "The caller must hold the GIL."
msgstr ""
-#: c-api/init.rst:1121
+#: c-api/init.rst:1158
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:1168
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:1172
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:1179
msgid "Type of a frame evaluation function."
msgstr ""
-#: c-api/init.rst:1144
+#: c-api/init.rst:1181
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:1184
msgid "The function now takes a *tstate* parameter."
msgstr ""
-#: c-api/init.rst:1152
+#: c-api/init.rst:1189
msgid "Get the frame evaluation function."
msgstr ""
-#: c-api/init.rst:1162
+#: c-api/init.rst:1199
msgid "See the :pep:`523` \"Adding a frame evaluation API to CPython\"."
msgstr ""
-#: c-api/init.rst:1160
+#: c-api/init.rst:1197
msgid "Set the frame evaluation function."
msgstr ""
-#: c-api/init.rst:1169
+#: c-api/init.rst:1206
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 +1366,7 @@ msgid ""
"raised and the caller should assume no current thread state is available."
msgstr ""
-#: c-api/init.rst:1178
+#: c-api/init.rst:1215
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 +1378,33 @@ msgid ""
"raises no exceptions."
msgstr ""
-#: c-api/init.rst:1186
+#: c-api/init.rst:1223
msgid ""
-"The type of the *id* parameter changed from :c:type:`long` to :c:type:"
+"The type of the *id* parameter changed from :c:expr:`long` to :c:expr:"
"`unsigned long`."
msgstr ""
-#: c-api/init.rst:1192
+#: c-api/init.rst:1229
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:1278
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:1245
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:1251
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 +1413,41 @@ msgid ""
"isn't, a fatal error is reported."
msgstr ""
-#: c-api/init.rst:1220
+#: c-api/init.rst:1257
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:1263
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:1266
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:1286
msgid ""
"Release the global interpreter lock. The lock must have been created "
"earlier."
msgstr ""
-#: c-api/init.rst:1251
+#: c-api/init.rst:1288
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:1297
msgid "Sub-interpreter support"
msgstr ""
-#: c-api/init.rst:1262
+#: c-api/init.rst:1299
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 +1455,7 @@ msgid ""
"to do that."
msgstr ""
-#: c-api/init.rst:1267
+#: c-api/init.rst:1304
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 +1466,14 @@ msgid ""
"returns a pointer to its state."
msgstr ""
-#: c-api/init.rst:1274
+#: c-api/init.rst:1311
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:1325
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 +1486,7 @@ msgid ""
"underlying file descriptors)."
msgstr ""
-#: c-api/init.rst:1298
+#: c-api/init.rst:1335
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 +1500,11 @@ msgid ""
"state on entry.)"
msgstr ""
-#: c-api/init.rst:1313
+#: c-api/init.rst:1350
msgid "Extension modules are shared between (sub-)interpreters as follows:"
msgstr ""
-#: c-api/init.rst:1315
+#: c-api/init.rst:1352
msgid ""
"For modules using multi-phase initialization, e.g. :c:func:"
"`PyModule_FromDefAndSpec`, a separate module object is created and "
@@ -1501,7 +1512,7 @@ msgid ""
"are shared between these module objects."
msgstr ""
-#: c-api/init.rst:1321
+#: c-api/init.rst:1358
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 +1524,7 @@ msgid ""
"might cause unwanted behavior (see `Bugs and caveats`_ below)."
msgstr ""
-#: c-api/init.rst:1332
+#: c-api/init.rst:1369
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 +1534,7 @@ msgid ""
"shared between these modules."
msgstr ""
-#: c-api/init.rst:1346
+#: c-api/init.rst:1383
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 +1546,11 @@ msgid ""
"point."
msgstr ""
-#: c-api/init.rst:1356
+#: c-api/init.rst:1393
msgid "Bugs and caveats"
msgstr ""
-#: c-api/init.rst:1358
+#: c-api/init.rst:1395
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 +1563,7 @@ msgid ""
"should be avoided if possible."
msgstr ""
-#: c-api/init.rst:1368
+#: c-api/init.rst:1405
msgid ""
"Special care should be taken to avoid sharing user-defined functions, "
"methods, instances or classes between sub-interpreters, since import "
@@ -1561,37 +1572,37 @@ msgid ""
"objects from which the above are reachable."
msgstr ""
-#: c-api/init.rst:1374
+#: c-api/init.rst:1411
msgid ""
-"Also note that combining this functionality with :c:func:`PyGILState_\\*` "
-"APIs is delicate, because these APIs assume a bijection between Python "
-"thread states and OS-level threads, an assumption broken by the presence of "
-"sub-interpreters. It is highly recommended that you don't switch sub-"
+"Also note that combining this functionality with ``PyGILState_*`` APIs is "
+"delicate, because these APIs assume a bijection between Python thread states "
+"and OS-level threads, an assumption broken by the presence of sub-"
+"interpreters. It is highly recommended that you don't switch sub-"
"interpreters between a pair of matching :c:func:`PyGILState_Ensure` and :c:"
"func:`PyGILState_Release` calls. Furthermore, extensions (such as :mod:"
"`ctypes`) using these APIs to allow calling of Python code from non-Python "
"created threads will probably be broken when using sub-interpreters."
msgstr ""
-#: c-api/init.rst:1385
+#: c-api/init.rst:1422
msgid "Asynchronous Notifications"
msgstr ""
-#: c-api/init.rst:1387
+#: c-api/init.rst:1424
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:1433
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:1437
msgid ""
"When successfully queued, *func* will be *eventually* called from the main "
"interpreter thread with the argument *arg*. It will be called "
@@ -1599,17 +1610,17 @@ msgid ""
"these conditions met:"
msgstr ""
-#: c-api/init.rst:1405
+#: c-api/init.rst:1442
msgid "on a :term:`bytecode` boundary;"
msgstr ""
-#: c-api/init.rst:1406
+#: c-api/init.rst:1443
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:1446
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 +1628,20 @@ msgid ""
"if the global interpreter lock is released."
msgstr ""
-#: c-api/init.rst:1414
+#: c-api/init.rst:1451
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:1454
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:1459
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 +1651,7 @@ msgid ""
"`PyGILState API`."
msgstr ""
-#: c-api/init.rst:1429
+#: c-api/init.rst:1466
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 +1659,18 @@ msgid ""
"scheduled calls."
msgstr ""
-#: c-api/init.rst:1440
+#: c-api/init.rst:1477
msgid "Profiling and Tracing"
msgstr ""
-#: c-api/init.rst:1445
+#: c-api/init.rst:1482
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:1486
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 +1680,7 @@ msgid ""
"reported to the Python-level trace functions in previous versions."
msgstr ""
-#: c-api/init.rst:1459
+#: c-api/init.rst:1496
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 +1691,64 @@ msgid ""
"or :const:`PyTrace_OPCODE`, and *arg* depends on the value of *what*:"
msgstr ""
-#: c-api/init.rst:1468
+#: c-api/init.rst:1505
msgid "Value of *what*"
msgstr ""
-#: c-api/init.rst:1468
+#: c-api/init.rst:1505
msgid "Meaning of *arg*"
msgstr ""
-#: c-api/init.rst:1470
+#: c-api/init.rst:1507
msgid ":const:`PyTrace_CALL`"
-msgstr ""
+msgstr ":const:`PyTrace_CALL`"
-#: c-api/init.rst:1475 c-api/init.rst:1486
+#: c-api/init.rst:1512 c-api/init.rst:1523
msgid "Always :c:data:`Py_None`."
msgstr ""
-#: c-api/init.rst:1472
+#: c-api/init.rst:1509
msgid ":const:`PyTrace_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_EXCEPTION`"
-#: c-api/init.rst:1472
+#: c-api/init.rst:1509
msgid "Exception information as returned by :func:`sys.exc_info`."
msgstr ""
-#: c-api/init.rst:1475
+#: c-api/init.rst:1512
msgid ":const:`PyTrace_LINE`"
-msgstr ""
+msgstr ":const:`PyTrace_LINE`"
-#: c-api/init.rst:1477
+#: c-api/init.rst:1514
msgid ":const:`PyTrace_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_RETURN`"
-#: c-api/init.rst:1477
+#: c-api/init.rst:1514
msgid ""
"Value being returned to the caller, or ``NULL`` if caused by an exception."
msgstr ""
-#: c-api/init.rst:1480
+#: c-api/init.rst:1517
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:1519 c-api/init.rst:1521
msgid "Function object being called."
msgstr ""
-#: c-api/init.rst:1482
+#: c-api/init.rst:1519
msgid ":const:`PyTrace_C_EXCEPTION`"
-msgstr ""
+msgstr ":const:`PyTrace_C_EXCEPTION`"
-#: c-api/init.rst:1484
+#: c-api/init.rst:1521
msgid ":const:`PyTrace_C_RETURN`"
-msgstr ""
+msgstr ":const:`PyTrace_C_RETURN`"
-#: c-api/init.rst:1486
+#: c-api/init.rst:1523
msgid ":const:`PyTrace_OPCODE`"
-msgstr ""
+msgstr ":const:`PyTrace_OPCODE`"
-#: c-api/init.rst:1491
+#: c-api/init.rst:1528
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 +1757,7 @@ msgid ""
"the corresponding frame."
msgstr ""
-#: c-api/init.rst:1500
+#: c-api/init.rst:1537
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 +1769,7 @@ msgid ""
"profiler."
msgstr ""
-#: c-api/init.rst:1511
+#: c-api/init.rst:1548
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 +1777,31 @@ msgid ""
"*0* on that frame."
msgstr ""
-#: c-api/init.rst:1518
+#: c-api/init.rst:1555
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:1561
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:1567
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:1573
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:1579
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 +1809,7 @@ msgid ""
"attr:`f_trace_opcodes` to *1* on the frame."
msgstr ""
-#: c-api/init.rst:1550
+#: c-api/init.rst:1587
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 +1819,11 @@ msgid ""
"`PyTrace_LINE` :const:`PyTrace_OPCODE` and :const:`PyTrace_EXCEPTION`."
msgstr ""
-#: c-api/init.rst:1569
+#: c-api/init.rst:1606
msgid "The caller must hold the :term:`GIL`."
msgstr ""
-#: c-api/init.rst:1562
+#: c-api/init.rst:1599
msgid ""
"Set the tracing function to *func*. This is similar to :c:func:"
"`PyEval_SetProfile`, except the tracing function does receive line-number "
@@ -1823,93 +1834,93 @@ msgid ""
"parameter."
msgstr ""
-#: c-api/init.rst:1575
+#: c-api/init.rst:1612
msgid "Advanced Debugger Support"
msgstr "Support avancé du débogueur"
-#: c-api/init.rst:1580
+#: c-api/init.rst:1617
msgid ""
"These functions are only intended to be used by advanced debugging tools."
msgstr ""
-#: c-api/init.rst:1585
+#: c-api/init.rst:1622
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:1627
msgid "Return the main interpreter state object."
msgstr ""
-#: c-api/init.rst:1595
+#: c-api/init.rst:1632
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:1638
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:1644
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:1651
msgid "Thread Local Storage Support"
msgstr ""
-#: c-api/init.rst:1618
+#: c-api/init.rst:1655
msgid ""
"The Python interpreter provides low-level support for thread-local storage "
"(TLS) which wraps the underlying native TLS implementation to support the "
"Python-level thread local storage API (:class:`threading.local`). The "
"CPython C level APIs are similar to those offered by pthreads and Windows: "
-"use a thread key and functions to associate a :c:type:`void*` value per "
+"use a thread key and functions to associate a :c:expr:`void*` value per "
"thread."
msgstr ""
-#: c-api/init.rst:1625
+#: c-api/init.rst:1662
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:1665
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:1669
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 "
-"the :c:type:`void*` values happen to be :c:type:`PyObject*`, these functions "
+"expr:`void*` values. You need to allocate and deallocate them yourself. If "
+"the :c:expr:`void*` values happen to be :c:expr:`PyObject*`, these functions "
"don't do refcount operations on them either."
msgstr ""
-#: c-api/init.rst:1640
+#: c-api/init.rst:1677
msgid "Thread Specific Storage (TSS) API"
msgstr ""
-#: c-api/init.rst:1642
+#: c-api/init.rst:1679
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."
+"instead of :c:expr:`int` to represent thread keys."
msgstr ""
-#: c-api/init.rst:1648
+#: c-api/init.rst:1685
msgid "\"A New C-API for Thread-Local Storage in CPython\" (:pep:`539`)"
msgstr ""
-#: c-api/init.rst:1653
+#: c-api/init.rst:1690
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 +1928,52 @@ msgid ""
"public members in this structure."
msgstr ""
-#: c-api/init.rst:1658
+#: c-api/init.rst:1695
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:1701
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:1706
msgid "Dynamic Allocation"
msgstr ""
-#: c-api/init.rst:1671
+#: c-api/init.rst:1708
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:1715
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:1722
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`."
+"have been unassigned. This is a no-op if the *key* argument is ``NULL``."
msgstr ""
-#: c-api/init.rst:1691
+#: c-api/init.rst:1728
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:1733
msgid "Methods"
msgstr "Méthodes"
-#: c-api/init.rst:1698
+#: c-api/init.rst:1735
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 +1981,13 @@ msgid ""
"func:`PyThread_tss_create`."
msgstr ""
-#: c-api/init.rst:1706
+#: c-api/init.rst:1743
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:1749
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 +1996,7 @@ msgid ""
"no-op and immediately returns success."
msgstr ""
-#: c-api/init.rst:1721
+#: c-api/init.rst:1758
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 +2005,31 @@ msgid ""
"key -- calling it on an already destroyed key is a no-op."
msgstr ""
-#: c-api/init.rst:1730
+#: c-api/init.rst:1767
msgid ""
-"Return a zero value to indicate successfully associating a :c:type:`void*` "
+"Return a zero value to indicate successfully associating a :c:expr:`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."
+"mapping of the key to a :c:expr:`void*` value."
msgstr ""
-#: c-api/init.rst:1737
+#: c-api/init.rst:1774
msgid ""
-"Return the :c:type:`void*` value associated with a TSS key in the current "
+"Return the :c:expr:`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:1782
msgid "Thread Local Storage (TLS) API"
msgstr ""
-#: c-api/init.rst:1747
+#: c-api/init.rst:1784
msgid ""
"This API is superseded by :ref:`Thread Specific Storage (TSS) API `."
msgstr ""
-#: c-api/init.rst:1752
+#: c-api/init.rst:1789
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 +2038,7 @@ msgid ""
"platforms."
msgstr ""
-#: c-api/init.rst:1757
+#: c-api/init.rst:1794
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..5bbbfd3b49 100644
--- a/c-api/init_config.po
+++ b/c-api/init_config.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: 2019-09-04 11:42+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -19,1121 +19,1661 @@ 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:27
+msgid ""
+"The :c:func:`Py_RunMain` function can be used to write a customized Python "
+"program."
+msgstr ""
+
+#: 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
+msgid "Example"
+msgstr "Exemple"
+
+#: c-api/init_config.rst:39
+msgid "Example of customized Python always running in isolated mode::"
msgstr ""
-#: c-api/init_config.rst:16
-msgid ":c:type:`PyWideStringList`"
+#: c-api/init_config.rst:76
+msgid "PyWideStringList"
msgstr ""
-#: c-api/init_config.rst:18
+#: c-api/init_config.rst:80
+msgid "List of ``wchar_t*`` strings."
+msgstr ""
+
+#: 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:85
#, fuzzy
-msgid "Functions:"
-msgstr "Fonctions"
+msgid "Methods:"
+msgstr "Méthodes"
-#: c-api/init_config.rst:20
-msgid ":c:func:`PyConfig_Clear`"
+#: c-api/init_config.rst:89
+msgid "Append *item* to *list*."
msgstr ""
-#: c-api/init_config.rst:21
-msgid ":c:func:`PyConfig_InitIsolatedConfig`"
+#: c-api/init_config.rst:102
+msgid "Python must be preinitialized to call this function."
msgstr ""
-#: c-api/init_config.rst:22
-msgid ":c:func:`PyConfig_InitPythonConfig`"
+#: c-api/init_config.rst:95
+msgid "Insert *item* into *list* at *index*."
msgstr ""
-#: c-api/init_config.rst:23
-msgid ":c:func:`PyConfig_Read`"
+#: 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:24
-msgid ":c:func:`PyConfig_SetArgv`"
+#: c-api/init_config.rst:100
+msgid "*index* must be greater than or equal to 0."
msgstr ""
-#: c-api/init_config.rst:25
-msgid ":c:func:`PyConfig_SetBytesArgv`"
+#: c-api/init_config.rst:124 c-api/init_config.rst:519
+msgid "Structure fields:"
msgstr ""
-#: c-api/init_config.rst:26
-msgid ":c:func:`PyConfig_SetBytesString`"
+#: c-api/init_config.rst:108
+msgid "List length."
msgstr ""
-#: c-api/init_config.rst:27
-msgid ":c:func:`PyConfig_SetString`"
+#: c-api/init_config.rst:112
+msgid "List items."
+msgstr ""
+
+#: c-api/init_config.rst:115
+msgid "PyStatus"
msgstr ""
-#: c-api/init_config.rst:28
-msgid ":c:func:`PyConfig_SetWideStringList`"
+#: c-api/init_config.rst:119
+msgid ""
+"Structure to store an initialization function status: success, error or exit."
msgstr ""
-#: c-api/init_config.rst:29
-msgid ":c:func:`PyPreConfig_InitIsolatedConfig`"
+#: 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:30
-msgid ":c:func:`PyPreConfig_InitPythonConfig`"
+#: c-api/init_config.rst:128
+msgid "Exit code. Argument passed to ``exit()``."
msgstr ""
-#: c-api/init_config.rst:31
-msgid ":c:func:`PyStatus_Error`"
+#: c-api/init_config.rst:132
+msgid "Error message."
msgstr ""
-#: c-api/init_config.rst:32
-msgid ":c:func:`PyStatus_Exception`"
+#: c-api/init_config.rst:136
+msgid "Name of the function which created an error, can be ``NULL``."
msgstr ""
-#: c-api/init_config.rst:33
-msgid ":c:func:`PyStatus_Exit`"
+#: c-api/init_config.rst:138
+msgid "Functions to create a status:"
msgstr ""
-#: c-api/init_config.rst:34
-msgid ":c:func:`PyStatus_IsError`"
+#: c-api/init_config.rst:142
+msgid "Success."
msgstr ""
-#: c-api/init_config.rst:35
-msgid ":c:func:`PyStatus_IsExit`"
+#: c-api/init_config.rst:146
+msgid "Initialization error with a message."
msgstr ""
-#: c-api/init_config.rst:36
-msgid ":c:func:`PyStatus_NoMemory`"
+#: c-api/init_config.rst:148
+msgid "*err_msg* must not be ``NULL``."
msgstr ""
-#: c-api/init_config.rst:37
-msgid ":c:func:`PyStatus_Ok`"
+#: c-api/init_config.rst:152
+msgid "Memory allocation failure (out of memory)."
msgstr ""
-#: c-api/init_config.rst:38
-msgid ":c:func:`PyWideStringList_Append`"
+#: c-api/init_config.rst:156
+msgid "Exit Python with the specified exit code."
msgstr ""
-#: c-api/init_config.rst:39
-msgid ":c:func:`PyWideStringList_Insert`"
+#: c-api/init_config.rst:158
+msgid "Functions to handle a status:"
msgstr ""
-#: c-api/init_config.rst:40
-msgid ":c:func:`Py_ExitStatusException`"
+#: 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:41
-msgid ":c:func:`Py_InitializeFromConfig`"
+#: c-api/init_config.rst:167
+msgid "Is the result an error?"
msgstr ""
-#: c-api/init_config.rst:42
-msgid ":c:func:`Py_PreInitialize`"
+#: c-api/init_config.rst:171
+msgid "Is the result an exit?"
msgstr ""
-#: c-api/init_config.rst:43
-msgid ":c:func:`Py_PreInitializeFromArgs`"
+#: c-api/init_config.rst:175
+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."
+msgstr ""
+
+#: c-api/init_config.rst:180
+msgid ""
+"Internally, Python uses macros which set ``PyStatus.func``, whereas "
+"functions to create a status set ``func`` to ``NULL``."
msgstr ""
-#: c-api/init_config.rst:44
-msgid ":c:func:`Py_PreInitializeFromBytesArgs`"
+#: c-api/init_config.rst:183
+msgid "Example::"
+msgstr "Exemple ::"
+
+#: c-api/init_config.rst:207
+msgid "PyPreConfig"
msgstr ""
-#: c-api/init_config.rst:45
-msgid ":c:func:`Py_RunMain`"
+#: c-api/init_config.rst:211
+msgid "Structure used to preinitialize Python."
msgstr ""
-#: c-api/init_config.rst:46
-msgid ":c:func:`Py_GetArgcArgv`"
+#: c-api/init_config.rst:213
+msgid "Function to initialize a preconfiguration:"
msgstr ""
-#: c-api/init_config.rst:48
+#: c-api/init_config.rst:217
msgid ""
-"The preconfiguration (``PyPreConfig`` type) is stored in ``_PyRuntime."
-"preconfig`` and the configuration (``PyConfig`` type) is stored in "
-"``PyInterpreterState.config``."
+"Initialize the preconfiguration with :ref:`Python Configuration `."
msgstr ""
-#: c-api/init_config.rst:52
+#: c-api/init_config.rst:222
msgid ""
-"See also :ref:`Initialization, Finalization, and Threads `."
+"Initialize the preconfiguration with :ref:`Isolated Configuration `."
msgstr ""
-#: c-api/init_config.rst:55
-msgid ":pep:`587` \"Python Initialization Configuration\"."
+#: c-api/init_config.rst:229
+msgid "Name of the Python memory allocators:"
msgstr ""
-#: c-api/init_config.rst:59
-msgid "PyWideStringList"
+#: 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:63
-msgid "List of ``wchar_t*`` strings."
+#: c-api/init_config.rst:233
+msgid ""
+"``PYMEM_ALLOCATOR_DEFAULT`` (``1``): :ref:`default memory allocators "
+"`."
msgstr ""
-#: c-api/init_config.rst:65
+#: c-api/init_config.rst:235
msgid ""
-"If *length* is non-zero, *items* must be non-``NULL`` and all strings must "
-"be non-``NULL``."
+"``PYMEM_ALLOCATOR_DEBUG`` (``2``): :ref:`default memory allocators ` with :ref:`debug hooks `."
msgstr ""
-#: c-api/init_config.rst:68
-#, fuzzy
-msgid "Methods:"
-msgstr "Méthodes"
+#: c-api/init_config.rst:238
+msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): use ``malloc()`` of the C library."
+msgstr ""
-#: c-api/init_config.rst:72
-msgid "Append *item* to *list*."
+#: 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:85
-msgid "Python must be preinitialized to call this function."
+#: c-api/init_config.rst:241
+msgid ""
+"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator "
+"`."
msgstr ""
-#: c-api/init_config.rst:78
-msgid "Insert *item* into *list* at *index*."
+#: 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:80
+#: c-api/init_config.rst:247
msgid ""
-"If *index* is greater than or equal to *list* length, append *item* to "
-"*list*."
+"``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:83
-msgid "*index* must be greater than or equal to 0."
+#: c-api/init_config.rst:251
+msgid "See :ref:`Memory Management `."
msgstr ""
-#: c-api/init_config.rst:107 c-api/init_config.rst:417
-msgid "Structure fields:"
+#: c-api/init_config.rst:253
+msgid "Default: ``PYMEM_ALLOCATOR_NOT_SET``."
msgstr ""
-#: c-api/init_config.rst:91
-msgid "List length."
+#: c-api/init_config.rst:257
+msgid "Set the LC_CTYPE locale to the user preferred locale."
msgstr ""
-#: c-api/init_config.rst:95
-msgid "List items."
+#: c-api/init_config.rst:259
+msgid ""
+"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:98
-msgid "PyStatus"
+#: c-api/init_config.rst:273
+msgid "See the :term:`locale encoding`."
msgstr ""
-#: c-api/init_config.rst:102
+#: c-api/init_config.rst:319 c-api/init_config.rst:627
+msgid "Default: ``1`` in Python config, ``0`` in isolated config."
+msgstr ""
+
+#: c-api/init_config.rst:268
+msgid "If equals to 2, coerce the C locale."
+msgstr ""
+
+#: c-api/init_config.rst:270
msgid ""
-"Structure to store an initialization function status: success, error or exit."
+"If equals to 1, read the LC_CTYPE locale to decide if it should be coerced."
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:281
+msgid "Default: ``-1`` in Python config, ``0`` in isolated config."
msgstr ""
-#: c-api/init_config.rst:111
-msgid "Exit code. Argument passed to ``exit()``."
+#: 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:115
-msgid "Error message."
+#: c-api/init_config.rst:285
+msgid ""
+"If non-zero, enables the :ref:`Python Development Mode `: see :c:"
+"member:`PyConfig.dev_mode`."
msgstr ""
-#: c-api/init_config.rst:119
-msgid "Name of the function which created an error, can be ``NULL``."
+#: c-api/init_config.rst:633 c-api/init_config.rst:1093
+msgid "Default: ``-1`` in Python mode, ``0`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:121
-msgid "Functions to create a status:"
+#: c-api/init_config.rst:292
+msgid "Isolated mode: see :c:member:`PyConfig.isolated`."
msgstr ""
-#: c-api/init_config.rst:125
-msgid "Success."
+#: c-api/init_config.rst:797
+msgid "Default: ``0`` in Python mode, ``1`` in isolated mode."
msgstr ""
-#: c-api/init_config.rst:129
-msgid "Initialization error with a message."
+#: c-api/init_config.rst:298
+msgid "If non-zero:"
msgstr ""
-#: c-api/init_config.rst:133
-msgid "Memory allocation failure (out of memory)."
+#: c-api/init_config.rst:300
+msgid "Set :c:member:`PyPreConfig.utf8_mode` to ``0``,"
msgstr ""
-#: c-api/init_config.rst:137
-msgid "Exit Python with the specified exit code."
+#: c-api/init_config.rst:301
+msgid "Set :c:member:`PyConfig.filesystem_encoding` to ``\"mbcs\"``,"
msgstr ""
-#: c-api/init_config.rst:139
-msgid "Functions to handle a status:"
+#: c-api/init_config.rst:302
+msgid "Set :c:member:`PyConfig.filesystem_errors` to ``\"replace\"``."
msgstr ""
-#: c-api/init_config.rst:143
+#: 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:810
+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:588 c-api/init_config.rst:646
+#: c-api/init_config.rst:769 c-api/init_config.rst:813
+#: c-api/init_config.rst:880 c-api/init_config.rst:989
+#: c-api/init_config.rst:1057 c-api/init_config.rst:1128
+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:323
+msgid ""
+"Use :ref:`environment variables `? See :c:member:`PyConfig."
+"use_environment`."
+msgstr ""
+
+#: c-api/init_config.rst:1102
+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 by the :option:`-X utf8 <-X>` command line option and the :envvar:"
+"`PYTHONUTF8` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:335
+msgid "Default: ``-1`` in Python config and ``0`` in isolated config."
+msgstr ""
+
+#: c-api/init_config.rst:341
+msgid "Preinitialize Python with PyPreConfig"
+msgstr ""
+
+#: c-api/init_config.rst:343
+msgid "The preinitialization of Python:"
+msgstr ""
+
+#: c-api/init_config.rst:345
+msgid "Set the Python memory allocators (:c:member:`PyPreConfig.allocator`)"
+msgstr ""
+
+#: c-api/init_config.rst:346
+msgid "Configure the LC_CTYPE locale (:term:`locale encoding`)"
+msgstr ""
+
+#: c-api/init_config.rst:347
+msgid ""
+"Set the :ref:`Python UTF-8 Mode ` (:c:member:`PyPreConfig."
+"utf8_mode`)"
+msgstr ""
+
+#: c-api/init_config.rst:350
+msgid ""
+"The current preconfiguration (``PyPreConfig`` type) is stored in "
+"``_PyRuntime.preconfig``."
+msgstr ""
+
+#: c-api/init_config.rst:353
+msgid "Functions to preinitialize Python:"
+msgstr ""
+
+#: c-api/init_config.rst:363 c-api/init_config.rst:372
+msgid "Preinitialize Python from *preconfig* preconfiguration."
+msgstr ""
+
+#: c-api/init_config.rst:368 c-api/init_config.rst:377
+msgid "*preconfig* must not be ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:365
+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:374
+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:1190
+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:382
+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:389
+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:394
+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:399
+msgid ""
+"Example using the preinitialization to enable the :ref:`Python UTF-8 Mode "
+"`::"
+msgstr ""
+
+#: c-api/init_config.rst:421
+msgid "PyConfig"
+msgstr ""
+
+#: c-api/init_config.rst:425
+msgid "Structure containing most parameters to configure Python."
+msgstr ""
+
+#: c-api/init_config.rst:427
+msgid ""
+"When done, the :c:func:`PyConfig_Clear` function must be used to release the "
+"configuration memory."
+msgstr ""
+
+#: c-api/init_config.rst:430
+msgid "Structure methods:"
+msgstr ""
+
+#: c-api/init_config.rst:434
+msgid ""
+"Initialize configuration with the :ref:`Python Configuration `."
+msgstr ""
+
+#: c-api/init_config.rst:439
+msgid ""
+"Initialize configuration with the :ref:`Isolated Configuration `."
+msgstr ""
+
+#: c-api/init_config.rst:444
+msgid "Copy the wide character string *str* into ``*config_str``."
+msgstr ""
+
+#: c-api/init_config.rst:453 c-api/init_config.rst:468
+#: c-api/init_config.rst:488
+msgid ":ref:`Preinitialize Python ` if needed."
+msgstr ""
+
+#: c-api/init_config.rst:450
+msgid ""
+"Decode *str* using :c:func:`Py_DecodeLocale` and set the result into "
+"``*config_str``."
+msgstr ""
+
+#: c-api/init_config.rst:457
+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:464
+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:472
+msgid "Set the list of wide strings *list* to *length* and *items*."
+msgstr ""
+
+#: c-api/init_config.rst:478
+msgid "Read all Python configuration."
+msgstr ""
+
+#: c-api/init_config.rst:480
+msgid "Fields which are already initialized are left unchanged."
+msgstr ""
+
+#: c-api/init_config.rst:909
+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:490
+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:498
+msgid "Release configuration memory."
+msgstr ""
+
+#: c-api/init_config.rst:500
+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:506
+msgid ":c:member:`PyConfig.dev_mode`"
+msgstr ""
+
+#: c-api/init_config.rst:507
+msgid ":c:member:`PyConfig.isolated`"
+msgstr ""
+
+#: c-api/init_config.rst:508
+msgid ":c:member:`PyConfig.parse_argv`"
+msgstr ""
+
+#: c-api/init_config.rst:509
+msgid ":c:member:`PyConfig.use_environment`"
+msgstr ""
+
+#: c-api/init_config.rst:511
+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:516
+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:523
+msgid "Command line arguments: :data:`sys.argv`."
+msgstr ""
+
+#: c-api/init_config.rst:525
+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:530
+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:541 c-api/init_config.rst:561
+#: c-api/init_config.rst:662 c-api/init_config.rst:850
+#: c-api/init_config.rst:966 c-api/init_config.rst:997
+#: c-api/init_config.rst:1017
+msgid "Default: ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:535
+msgid "See also the :c:member:`~PyConfig.orig_argv` member."
+msgstr ""
+
+#: c-api/init_config.rst:539
+msgid ":data:`sys.base_exec_prefix`."
+msgstr ""
+
+#: c-api/init_config.rst:555 c-api/init_config.rst:655
+#: c-api/init_config.rst:867 c-api/init_config.rst:950
+msgid "Part of the :ref:`Python Path Configuration ` output."
+msgstr ""
+
+#: c-api/init_config.rst:547
+msgid "Python base executable: :data:`sys._base_executable`."
+msgstr ""
+
+#: c-api/init_config.rst:549
+msgid "Set by the :envvar:`__PYVENV_LAUNCHER__` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:551
+msgid "Set from :c:member:`PyConfig.executable` if ``NULL``."
+msgstr ""
+
+#: c-api/init_config.rst:559
+msgid ":data:`sys.base_prefix`."
+msgstr ""
+
+#: c-api/init_config.rst:567
+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:570
+msgid ""
+"Set to 0 by the :option:`-u` command line option and the :envvar:"
+"`PYTHONUNBUFFERED` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:573
+msgid "stdin is always opened in buffered mode."
+msgstr ""
+
+#: c-api/init_config.rst:1045 c-api/init_config.rst:1160
+msgid "Default: ``1``."
+msgstr ""
+
+#: c-api/init_config.rst:579
+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:583
+msgid ""
+"If equal or greater to 2, raise a :exc:`BytesWarning` exception in these "
+"cases."
+msgstr ""
+
+#: c-api/init_config.rst:586
+msgid "Incremented by the :option:`-b` command line option."
+msgstr ""
+
+#: c-api/init_config.rst:592
+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:601
+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:604
+msgid "Valid values:"
+msgstr ""
+
+#: c-api/init_config.rst:606
+msgid ""
+"``L\"always\"``: Hash the source file for invalidation regardless of value "
+"of the 'check_source' flag."
+msgstr ""
+
+#: c-api/init_config.rst:608
+msgid "``L\"never\"``: Assume that hash-based pycs always are valid."
+msgstr ""
+
+#: c-api/init_config.rst:609
+msgid ""
+"``L\"default\"``: The 'check_source' flag in hash-based pycs determines "
+"invalidation."
+msgstr ""
+
+#: c-api/init_config.rst:612
+msgid "Default: ``L\"default\"``."
+msgstr ""
+
+#: c-api/init_config.rst:614
+msgid "See also :pep:`552` \"Deterministic pycs\"."
+msgstr ""
+
+#: c-api/init_config.rst:618
+msgid "If non-zero, configure C standard streams:"
+msgstr ""
+
+#: c-api/init_config.rst:620
+msgid ""
+"On Windows, set the binary mode (``O_BINARY``) on stdin, stdout and stderr."
+msgstr ""
+
+#: c-api/init_config.rst:622
+msgid ""
+"If :c:member:`~PyConfig.buffered_stdio` equals zero, disable buffering of "
+"stdin, stdout and stderr streams."
+msgstr ""
+
+#: c-api/init_config.rst:624
+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:631
+msgid "If non-zero, enable the :ref:`Python Development Mode `."
+msgstr ""
+
+#: c-api/init_config.rst:637
+msgid "Dump Python references?"
+msgstr ""
+
+#: c-api/init_config.rst:639
+msgid "If non-zero, dump all objects which are still alive at exit."
+msgstr ""
+
+#: c-api/init_config.rst:641
+msgid "Set to ``1`` by the :envvar:`PYTHONDUMPREFS` environment variable."
+msgstr ""
+
+#: c-api/init_config.rst:643
+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:161
+#: c-api/init_config.rst:650
msgid ""
-"Internally, Python uses macros which set ``PyStatus.func``, whereas "
-"functions to create a status set ``func`` to ``NULL``."
+"The site-specific directory prefix where the platform-dependent Python files "
+"are installed: :data:`sys.exec_prefix`."
msgstr ""
-#: c-api/init_config.rst:164
-msgid "Example::"
-msgstr "Exemple ::"
-
-#: c-api/init_config.rst:188
-msgid "PyPreConfig"
+#: c-api/init_config.rst:659
+msgid ""
+"The absolute path of the executable binary for the Python interpreter: :data:"
+"`sys.executable`."
msgstr ""
-#: c-api/init_config.rst:192
-msgid "Structure used to preinitialize Python:"
+#: c-api/init_config.rst:668
+msgid "Enable faulthandler?"
msgstr ""
-#: c-api/init_config.rst:194
-msgid "Set the Python memory allocator"
+#: c-api/init_config.rst:670
+msgid "If non-zero, call :func:`faulthandler.enable` at startup."
msgstr ""
-#: c-api/init_config.rst:195
-msgid "Configure the LC_CTYPE locale"
+#: c-api/init_config.rst:672
+msgid ""
+"Set to ``1`` by :option:`-X faulthandler <-X>` and the :envvar:"
+"`PYTHONFAULTHANDLER` environment variable."
msgstr ""
-#: c-api/init_config.rst:196
-msgid "Set the UTF-8 mode"
+#: c-api/init_config.rst:679
+msgid ""
+":term:`Filesystem encoding `: :func:"
+"`sys.getfilesystemencoding`."
msgstr ""
-#: c-api/init_config.rst:198
-msgid "Function to initialize a preconfiguration:"
+#: c-api/init_config.rst:682
+msgid "On macOS, Android and VxWorks: use ``\"utf-8\"`` by default."
msgstr ""
-#: c-api/init_config.rst:202
+#: c-api/init_config.rst:684
msgid ""
-"Initialize the preconfiguration with :ref:`Python Configuration `."
+"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:207
-msgid ""
-"Initialize the preconfiguration with :ref:`Isolated Configuration `."
+#: c-api/init_config.rst:688
+msgid "Default encoding on other platforms:"
msgstr ""
-#: c-api/init_config.rst:214
-msgid "Name of the memory allocator:"
+#: c-api/init_config.rst:690
+msgid "``\"utf-8\"`` if :c:member:`PyPreConfig.utf8_mode` is non-zero."
msgstr ""
-#: c-api/init_config.rst:216
+#: c-api/init_config.rst:691
msgid ""
-"``PYMEM_ALLOCATOR_NOT_SET`` (``0``): don't change memory allocators (use "
-"defaults)"
+"``\"ascii\"`` if Python detects that ``nl_langinfo(CODESET)`` announces the "
+"ASCII encoding, whereas the ``mbstowcs()`` function decodes from a different "
+"encoding (usually Latin1)."
msgstr ""
-#: c-api/init_config.rst:218
-msgid "``PYMEM_ALLOCATOR_DEFAULT`` (``1``): default memory allocators"
+#: c-api/init_config.rst:694
+msgid "``\"utf-8\"`` if ``nl_langinfo(CODESET)`` returns an empty string."
msgstr ""
-#: c-api/init_config.rst:219
+#: c-api/init_config.rst:695
msgid ""
-"``PYMEM_ALLOCATOR_DEBUG`` (``2``): default memory allocators with debug hooks"
+"Otherwise, use the :term:`locale encoding`: ``nl_langinfo(CODESET)`` result."
msgstr ""
-#: c-api/init_config.rst:221
-msgid "``PYMEM_ALLOCATOR_MALLOC`` (``3``): force usage of ``malloc()``"
+#: c-api/init_config.rst:698
+msgid ""
+"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:222
-msgid ""
-"``PYMEM_ALLOCATOR_MALLOC_DEBUG`` (``4``): force usage of ``malloc()`` with "
-"debug hooks"
+#: c-api/init_config.rst:701
+msgid "See also the :c:member:`~PyConfig.filesystem_errors` member."
msgstr ""
-#: c-api/init_config.rst:224
+#: c-api/init_config.rst:705
msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC`` (``5``): :ref:`Python pymalloc memory allocator "
-"`"
+":term:`Filesystem error handler `: :"
+"func:`sys.getfilesystemencodeerrors`."
msgstr ""
-#: c-api/init_config.rst:226
+#: c-api/init_config.rst:708
msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` (``6``): :ref:`Python pymalloc memory "
-"allocator ` with debug hooks"
+"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:229
-msgid ""
-"``PYMEM_ALLOCATOR_PYMALLOC`` and ``PYMEM_ALLOCATOR_PYMALLOC_DEBUG`` are not "
-"supported if Python is configured using ``--without-pymalloc``"
+#: c-api/init_config.rst:712
+msgid "On other platforms: use ``\"surrogateescape\"`` by default."
msgstr ""
-#: c-api/init_config.rst:232
-msgid "See :ref:`Memory Management `."
+#: c-api/init_config.rst:714
+msgid "Supported error handlers:"
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:716
+msgid "``\"strict\"``"
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:717
+msgid "``\"surrogateescape\"``"
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:718
+msgid "``\"surrogatepass\"`` (only supported with the UTF-8 encoding)"
msgstr ""
-#: c-api/init_config.rst:250
-msgid "See :c:member:`PyConfig.dev_mode`."
+#: c-api/init_config.rst:720
+msgid "See also the :c:member:`~PyConfig.filesystem_encoding` member."
msgstr ""
-#: c-api/init_config.rst:254
-msgid "See :c:member:`PyConfig.isolated`."
+#: c-api/init_config.rst:725
+msgid "Randomized hash function seed."
msgstr ""
-#: c-api/init_config.rst:258
+#: c-api/init_config.rst:727
msgid ""
-"If non-zero, disable UTF-8 Mode, set the Python filesystem encoding to "
-"``mbcs``, set the filesystem error handler to ``replace``."
+"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:555
-msgid ""
-"Only available on Windows. ``#ifdef MS_WINDOWS`` macro can be used for "
-"Windows specific code."
+#: c-api/init_config.rst:730
+msgid "Set by the :envvar:`PYTHONHASHSEED` environment variable."
msgstr ""
-#: c-api/init_config.rst:266
+#: c-api/init_config.rst:732
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:737
+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:739
+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:742
+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:839 c-api/init_config.rst:941
+#: c-api/init_config.rst:968
+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:750
+msgid "If non-zero, profile import time."
msgstr ""
-#: c-api/init_config.rst:290
+#: c-api/init_config.rst:752
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:759
+msgid "Enter interactive mode after executing a script or a command."
msgstr ""
-#: c-api/init_config.rst:730
+#: c-api/init_config.rst:761
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:766
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:773
+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:915 c-api/init_config.rst:1112
+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:779
+msgid "If greater than 0, enable the interactive mode (REPL)."
msgstr ""
-#: c-api/init_config.rst:339
-msgid "PyConfig"
+#: c-api/init_config.rst:781
+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:787
+msgid "If greater than 0, enable isolated mode:"
msgstr ""
-#: c-api/init_config.rst:345
-msgid "Structure methods:"
+#: c-api/init_config.rst:789
+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."
msgstr ""
-#: c-api/init_config.rst:349
+#: c-api/init_config.rst:792
msgid ""
-"Initialize configuration with :ref:`Python Configuration `."
+"Python REPL doesn't import :mod:`readline` nor enable default readline "
+"configuration on interactive prompts."
msgstr ""
-#: c-api/init_config.rst:354
+#: c-api/init_config.rst:794
msgid ""
-"Initialize configuration with :ref:`Isolated Configuration `."
+"Set :c:member:`~PyConfig.use_environment` and :c:member:`~PyConfig."
+"user_site_directory` to 0."
msgstr ""
-#: c-api/init_config.rst:359
-msgid "Copy the wide character string *str* into ``*config_str``."
+#: c-api/init_config.rst:799
+msgid "See also :c:member:`PyPreConfig.isolated`."
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:803
+msgid ""
+"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:365
+#: c-api/init_config.rst:807
msgid ""
-"Decode *str* using ``Py_DecodeLocale()`` and set the result into "
-"``*config_str``."
+"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:815
+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:819
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:822
+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:824
+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:831
+msgid "Platform library directory name: :data:`sys.platlibdir`."
msgstr ""
-#: c-api/init_config.rst:397
-msgid "Release configuration memory."
+#: c-api/init_config.rst:833
+msgid "Set by the :envvar:`PYTHONPLATLIBDIR` environment variable."
msgstr ""
-#: c-api/init_config.rst:399
+#: c-api/init_config.rst:835
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\"``)."
msgstr ""
-#: c-api/init_config.rst:404
-msgid ":c:member:`~PyConfig.dev_mode`"
+#: c-api/init_config.rst:845
+msgid ""
+"Module search paths (:data:`sys.path`) as a string separated by ``DELIM`` (:"
+"data:`os.path.pathsep`)."
msgstr ""
-#: c-api/init_config.rst:405
-msgid ":c:member:`~PyConfig.isolated`"
+#: c-api/init_config.rst:848
+msgid "Set by the :envvar:`PYTHONPATH` environment variable."
msgstr ""
-#: c-api/init_config.rst:406
-msgid ":c:member:`~PyConfig.parse_argv`"
+#: c-api/init_config.rst:857
+msgid "Module search paths: :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:407
-msgid ":c:member:`~PyConfig.use_environment`"
+#: c-api/init_config.rst:859
+msgid ""
+"If :c:member:`~PyConfig.module_search_paths_set` is equal to 0, the function "
+"calculating the :ref:`Python Path Configuration ` "
+"overrides the :c:member:`~PyConfig.module_search_paths` and sets :c:member:"
+"`~PyConfig.module_search_paths_set` to ``1``."
msgstr ""
-#: c-api/init_config.rst:409
+#: c-api/init_config.rst:864
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)."
+"Default: empty list (``module_search_paths``) and ``0`` "
+"(``module_search_paths_set``)."
msgstr ""
-#: c-api/init_config.rst:414
-msgid ""
-"The caller of these methods is responsible to handle exceptions (error or "
-"exit) using ``PyStatus_Exception()`` and ``Py_ExitStatusException()``."
+#: c-api/init_config.rst:871
+msgid "Compilation optimization level:"
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:873
+msgid "``0``: Peephole optimizer, set ``__debug__`` to ``True``."
msgstr ""
-#: c-api/init_config.rst:429
-msgid ":data:`sys.base_exec_prefix`."
+#: c-api/init_config.rst:874
+msgid "``1``: Level 0, remove assertions, set ``__debug__`` to ``False``."
msgstr ""
-#: c-api/init_config.rst:433
+#: c-api/init_config.rst:875
+msgid "``2``: Level 1, strip docstrings."
+msgstr ""
+
+#: c-api/init_config.rst:877
msgid ""
-":data:`sys._base_executable`: ``__PYVENV_LAUNCHER__`` environment variable "
-"value, or copy of :c:member:`PyConfig.executable`."
+"Incremented by the :option:`-O` command line option. Set to the :envvar:"
+"`PYTHONOPTIMIZE` environment variable value."
msgstr ""
-#: c-api/init_config.rst:438
-msgid ":data:`sys.base_prefix`."
+#: c-api/init_config.rst:884
+msgid ""
+"The list of the original command line arguments passed to the Python "
+"executable: :data:`sys.orig_argv`."
msgstr ""
-#: c-api/init_config.rst:442
+#: c-api/init_config.rst:887
msgid ""
-":data:`sys.platlibdir`: platform library directory name, set at configure "
-"time by ``--with-platlibdir``, overrideable by the ``PYTHONPLATLIBDIR`` "
-"environment variable."
+"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:450
+#: c-api/init_config.rst:894
msgid ""
-"If equals to 0, enable unbuffered mode, making the stdout and stderr streams "
-"unbuffered."
+"See also the :c:member:`~PyConfig.argv` member and the :c:func:"
+"`Py_GetArgcArgv` function."
msgstr ""
-#: c-api/init_config.rst:453
-msgid "stdin is always opened in buffered mode."
+#: c-api/init_config.rst:1147 c-api/init_config.rst:1166
+msgid "Default: empty list."
msgstr ""
-#: c-api/init_config.rst:457
+#: c-api/init_config.rst:903
+msgid "Parse command line arguments?"
+msgstr ""
+
+#: c-api/init_config.rst:905
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."
+"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:464
+#: c-api/init_config.rst:917
msgid ""
-"Control the validation behavior of hash-based ``.pyc`` files (see :pep:"
-"`552`): :option:`--check-hash-based-pycs` command line option value."
+"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:467
-msgid "Valid values: ``always``, ``never`` and ``default``."
+#: c-api/init_config.rst:923
+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:469
-msgid "The default value is: ``default``."
+#: c-api/init_config.rst:926
+msgid ""
+"Incremented by the :option:`-d` command line option. Set to the :envvar:"
+"`PYTHONDEBUG` environment variable value."
msgstr ""
-#: c-api/init_config.rst:473
+#: c-api/init_config.rst:933
msgid ""
-"If non-zero, configure C standard streams (``stdio``, ``stdout``, "
-"``stdout``). For example, set their mode to ``O_BINARY`` on Windows."
+"On Unix, if non-zero, calculating the :ref:`Python Path Configuration ` can log warnings into ``stderr``. If equals to 0, suppress "
+"these warnings."
msgstr ""
-#: c-api/init_config.rst:478
-msgid "If non-zero, enable the :ref:`Python Development Mode `."
+#: c-api/init_config.rst:937
+msgid "It has no effect on Windows."
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:945
+msgid ""
+"The site-specific directory prefix where the platform independent Python "
+"files are installed: :data:`sys.prefix`."
msgstr ""
-#: c-api/init_config.rst:484
-msgid "``Py_TRACE_REFS`` macro must be defined in build."
+#: c-api/init_config.rst:954
+msgid ""
+"Program name used to initialize :c:member:`~PyConfig.executable` and in "
+"early error messages during Python initialization."
msgstr ""
-#: c-api/init_config.rst:488
-msgid ":data:`sys.exec_prefix`."
+#: c-api/init_config.rst:957
+msgid "If :func:`Py_SetProgramName` has been called, use its argument."
msgstr ""
-#: c-api/init_config.rst:492
-msgid ":data:`sys.executable`."
+#: c-api/init_config.rst:958
+msgid "On macOS, use :envvar:`PYTHONEXECUTABLE` environment variable if set."
msgstr ""
-#: c-api/init_config.rst:496
-msgid "If non-zero, call :func:`faulthandler.enable` at startup."
+#: c-api/init_config.rst:959
+msgid ""
+"If the ``WITH_NEXT_FRAMEWORK`` macro is defined, use :envvar:"
+"`__PYVENV_LAUNCHER__` environment variable if set."
msgstr ""
-#: c-api/init_config.rst:500
-msgid "Filesystem encoding, :func:`sys.getfilesystemencoding`."
+#: c-api/init_config.rst:961
+msgid ""
+"Use ``argv[0]`` of :c:member:`~PyConfig.argv` if available and non-empty."
msgstr ""
-#: c-api/init_config.rst:504
-msgid "Filesystem encoding errors, :func:`sys.getfilesystemencodeerrors`."
+#: c-api/init_config.rst:963
+msgid ""
+"Otherwise, use ``L\"python\"`` on Windows, or ``L\"python3\"`` on other "
+"platforms."
msgstr ""
-#: c-api/init_config.rst:509
-msgid "Randomized hash function seed."
+#: c-api/init_config.rst:972
+msgid ""
+"Directory where cached ``.pyc`` files are written: :data:`sys."
+"pycache_prefix`."
msgstr ""
-#: c-api/init_config.rst:511
+#: c-api/init_config.rst:975
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."
+"Set by the :option:`-X pycache_prefix=PATH <-X>` command line option and "
+"the :envvar:`PYTHONPYCACHEPREFIX` environment variable."
msgstr ""
-#: c-api/init_config.rst:516
-msgid "Python home directory."
+#: c-api/init_config.rst:978
+msgid "If ``NULL``, :data:`sys.pycache_prefix` is set to ``None``."
msgstr ""
-#: c-api/init_config.rst:518
+#: c-api/init_config.rst:984
msgid ""
-"Initialized from :envvar:`PYTHONHOME` environment variable value by default."
+"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:523
-msgid "If non-zero, profile import time."
+#: c-api/init_config.rst:987
+msgid "Incremented by the :option:`-q` command line option."
msgstr ""
-#: c-api/init_config.rst:527
-msgid "Enter interactive mode after executing a script or a command."
+#: c-api/init_config.rst:993
+msgid "Value of the :option:`-c` command line option."
msgstr ""
-#: c-api/init_config.rst:531
-msgid "Install signal handlers?"
+#: c-api/init_config.rst:1007 c-api/init_config.rst:1015
+msgid "Used by :c:func:`Py_RunMain`."
msgstr ""
-#: c-api/init_config.rst:535
-#, fuzzy
-msgid "Interactive mode."
-msgstr "Mode interactif"
-
-#: c-api/init_config.rst:539
-msgid "If greater than 0, enable isolated mode:"
+#: c-api/init_config.rst:1001
+msgid ""
+"Filename passed on the command line: trailing command line argument without :"
+"option:`-c` or :option:`-m`."
msgstr ""
-#: c-api/init_config.rst:541
+#: c-api/init_config.rst:1004
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."
+"For example, it is set to ``script.py`` by the ``python3 script.py arg`` "
+"command."
msgstr ""
-#: c-api/init_config.rst:544
-msgid ""
-"Python REPL doesn't import :mod:`readline` nor enable default readline "
-"configuration on interactive prompts."
+#: c-api/init_config.rst:1013
+msgid "Value of the :option:`-m` command line option."
msgstr ""
-#: c-api/init_config.rst:546
-msgid ""
-"Set :c:member:`~PyConfig.use_environment` and :c:member:`~PyConfig."
-"user_site_directory` to 0."
+#: c-api/init_config.rst:1021
+msgid "Show total reference count at exit?"
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:1023
+msgid "Set to 1 by :option:`-X showrefcount <-X>` command line option."
msgstr ""
-#: c-api/init_config.rst:560
+#: c-api/init_config.rst:1025
msgid ""
-"If non-zero, dump statistics on :ref:`Python pymalloc memory allocator "
-"` at exit."
+"Need a :ref:`debug build of Python ` (the ``Py_REF_DEBUG`` "
+"macro must be defined)."
msgstr ""
-#: c-api/init_config.rst:563
-msgid "The option is ignored if Python is built using ``--without-pymalloc``."
+#: c-api/init_config.rst:1032
+msgid "Import the :mod:`site` module at startup?"
msgstr ""
-#: c-api/init_config.rst:567
+#: c-api/init_config.rst:1034
msgid ""
-"Module search paths as a string separated by ``DELIM`` (:data:`os.path."
-"pathsep`)."
+"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:570
+#: c-api/init_config.rst:1037
msgid ""
-"Initialized from :envvar:`PYTHONPATH` environment variable value by default."
+"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:576
-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 `."
+#: c-api/init_config.rst:1040
+msgid "Set to ``0`` by the :option:`-S` command line option."
msgstr ""
-#: c-api/init_config.rst:583
-msgid "Compilation optimization level:"
+#: c-api/init_config.rst:1042
+msgid ""
+":data:`sys.flags.no_site` is set to the inverted value of :c:member:"
+"`~PyConfig.site_import`."
msgstr ""
-#: c-api/init_config.rst:585
-msgid "0: Peephole optimizer (and ``__debug__`` is set to ``True``)"
+#: c-api/init_config.rst:1049
+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:1052
+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:1055
+msgid "Set to ``1`` by the :option:`-x` command line option."
msgstr ""
-#: c-api/init_config.rst:591
+#: c-api/init_config.rst:1062
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:1066
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:1069
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:1072
+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:1074
+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:1075
+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:1077
+msgid "Default error handler:"
msgstr ""
-#: c-api/init_config.rst:624
+#: c-api/init_config.rst:1079
+msgid "On Windows: use ``\"surrogateescape\"``."
+msgstr ""
+
+#: c-api/init_config.rst:1080
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:1082
+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:1086
+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:1088
+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:1090
+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:1097
+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:1099
+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:1106
+msgid "If non-zero, add the user site directory to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:653
-msgid "Skip the first line of the source?"
+#: c-api/init_config.rst:1108
+msgid "Set to ``0`` by the :option:`-s` and :option:`-I` command line options."
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:1110
+msgid "Set to ``0`` by the :envvar:`PYTHONNOUSERSITE` environment variable."
msgstr ""
-#: c-api/init_config.rst:663
-msgid "If non-zero, call :func:`tracemalloc.start` at startup."
+#: c-api/init_config.rst:1116
+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:667
-msgid "If greater than 0, use :ref:`environment variables `."
+#: c-api/init_config.rst:1120
+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:1124
+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:1126
+msgid "Set to the :envvar:`PYTHONVERBOSE` environment variable value."
msgstr ""
-#: c-api/init_config.rst:679
+#: c-api/init_config.rst:1132
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:1135
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:1140
+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:1143
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:1151
+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:1154
+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:1157
+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:1164
+msgid "Values of the :option:`-X` command line options: :data:`sys._xoptions`."
msgstr ""
-#: c-api/init_config.rst:708
+#: c-api/init_config.rst:1168
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:1173
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:1178
msgid "The ``show_alloc_count`` field has been removed."
msgstr ""
-#: c-api/init_config.rst:722
+#: c-api/init_config.rst:1182
msgid "Initialization with PyConfig"
msgstr ""
-#: c-api/init_config.rst:724
+#: c-api/init_config.rst:1184
msgid "Function to initialize Python:"
msgstr ""
-#: c-api/init_config.rst:728
+#: c-api/init_config.rst:1188
msgid "Initialize Python from *config* configuration."
msgstr ""
-#: c-api/init_config.rst:733
+#: c-api/init_config.rst:1193
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:1200
+msgid ""
+"The current configuration (``PyConfig`` type) is stored in "
+"``PyInterpreterState.config``."
+msgstr ""
+
+#: c-api/init_config.rst:1203
msgid "Example setting the program name::"
msgstr ""
-#: c-api/init_config.rst:765
+#: c-api/init_config.rst:1231
msgid ""
"More complete example modifying the default configuration, read the "
"configuration, and then override some parameters::"
msgstr ""
-#: c-api/init_config.rst:816
+#: c-api/init_config.rst:1282
msgid "Isolated Configuration"
msgstr ""
-#: c-api/init_config.rst:818
+#: c-api/init_config.rst:1284
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:1289
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:1294
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 "
+"`Python Path Configuration ` (\"output fields\") to ignore "
+"these configuration files and avoid the function computing the default path "
"configuration."
msgstr ""
-#: c-api/init_config.rst:837
+#: c-api/init_config.rst:1303
msgid "Python Configuration"
msgstr ""
-#: c-api/init_config.rst:839
+#: c-api/init_config.rst:1305
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:1309
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:1312
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:1321
+msgid "Python Path Configuration"
msgstr ""
-#: c-api/init_config.rst:891
+#: c-api/init_config.rst:1323
msgid ":c:type:`PyConfig` contains multiple fields for the path configuration:"
msgstr ""
-#: c-api/init_config.rst:893
+#: c-api/init_config.rst:1325
msgid "Path configuration inputs:"
msgstr ""
-#: c-api/init_config.rst:895
+#: c-api/init_config.rst:1327
msgid ":c:member:`PyConfig.home`"
msgstr ""
-#: c-api/init_config.rst:896
+#: c-api/init_config.rst:1328
msgid ":c:member:`PyConfig.platlibdir`"
msgstr ""
-#: c-api/init_config.rst:897
+#: c-api/init_config.rst:1329
msgid ":c:member:`PyConfig.pathconfig_warnings`"
msgstr ""
-#: c-api/init_config.rst:898
+#: c-api/init_config.rst:1330
msgid ":c:member:`PyConfig.program_name`"
msgstr ""
-#: c-api/init_config.rst:899
+#: c-api/init_config.rst:1331
msgid ":c:member:`PyConfig.pythonpath_env`"
msgstr ""
-#: c-api/init_config.rst:900
+#: c-api/init_config.rst:1332
msgid "current working directory: to get absolute paths"
msgstr ""
-#: c-api/init_config.rst:901
+#: c-api/init_config.rst:1333
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:1335
msgid "``__PYVENV_LAUNCHER__`` environment variable"
msgstr ""
-#: c-api/init_config.rst:904
+#: c-api/init_config.rst:1336
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:1340
msgid "Path configuration output fields:"
msgstr ""
-#: c-api/init_config.rst:910
+#: c-api/init_config.rst:1342
msgid ":c:member:`PyConfig.base_exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:911
+#: c-api/init_config.rst:1343
msgid ":c:member:`PyConfig.base_executable`"
msgstr ""
-#: c-api/init_config.rst:912
+#: c-api/init_config.rst:1344
msgid ":c:member:`PyConfig.base_prefix`"
msgstr ""
-#: c-api/init_config.rst:913
+#: c-api/init_config.rst:1345
msgid ":c:member:`PyConfig.exec_prefix`"
msgstr ""
-#: c-api/init_config.rst:914
+#: c-api/init_config.rst:1346
msgid ":c:member:`PyConfig.executable`"
msgstr ""
-#: c-api/init_config.rst:915
+#: c-api/init_config.rst:1347
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:1349
msgid ":c:member:`PyConfig.prefix`"
msgstr ""
-#: c-api/init_config.rst:919
+#: c-api/init_config.rst:1351
msgid ""
"If at least one \"output field\" is not set, Python calculates the path "
"configuration to fill unset fields. If :c:member:`~PyConfig."
@@ -1142,7 +1682,7 @@ msgid ""
"module_search_paths_set` is set to 1."
msgstr ""
-#: c-api/init_config.rst:925
+#: c-api/init_config.rst:1357
msgid ""
"It is possible to completely ignore the function calculating the default "
"path configuration by setting explicitly all path configuration output "
@@ -1152,52 +1692,52 @@ msgid ""
"well."
msgstr ""
-#: c-api/init_config.rst:932
+#: c-api/init_config.rst:1364
msgid ""
"Set :c:member:`~PyConfig.pathconfig_warnings` to 0 to suppress warnings when "
"calculating the path configuration (Unix only, Windows does not log any "
"warning)."
msgstr ""
-#: c-api/init_config.rst:935
+#: c-api/init_config.rst:1367
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:1371
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:1373
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:1376
msgid "If :c:member:`~PyConfig.isolated` is zero:"
msgstr ""
-#: c-api/init_config.rst:946
+#: c-api/init_config.rst:1378
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:1380
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:1382
msgid "Otherwise, prepend an empty string to :data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:952
+#: c-api/init_config.rst:1384
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 +1746,156 @@ msgid ""
"data:`sys.path`."
msgstr ""
-#: c-api/init_config.rst:958
+#: c-api/init_config.rst:1390
msgid "The following configuration files are used by the path configuration:"
msgstr ""
-#: c-api/init_config.rst:960
+#: c-api/init_config.rst:1392
msgid "``pyvenv.cfg``"
msgstr ""
-#: c-api/init_config.rst:961
+#: c-api/init_config.rst:1393
msgid "``python._pth`` (Windows only)"
msgstr ""
-#: c-api/init_config.rst:962
+#: c-api/init_config.rst:1394
msgid "``pybuilddir.txt`` (Unix only)"
msgstr ""
-#: c-api/init_config.rst:964
+#: c-api/init_config.rst:1396
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:1401
msgid "Py_RunMain()"
msgstr ""
-#: c-api/init_config.rst:973
+#: c-api/init_config.rst:1405
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:1410
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:1412
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:1415
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:1421
msgid "Py_GetArgcArgv()"
msgstr ""
-#: c-api/init_config.rst:993
+#: c-api/init_config.rst:1425
msgid "Get the original command line arguments, before Python modified them."
msgstr ""
-#: c-api/init_config.rst:997
+#: c-api/init_config.rst:1427
+msgid "See also :c:member:`PyConfig.orig_argv` member."
+msgstr ""
+
+#: c-api/init_config.rst:1431
msgid "Multi-Phase Initialization Private Provisional API"
msgstr ""
-#: c-api/init_config.rst:999
+#: c-api/init_config.rst:1433
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:1436
msgid "\"Core\" initialization phase, \"bare minimum Python\":"
msgstr ""
-#: c-api/init_config.rst:1004
+#: c-api/init_config.rst:1438
msgid "Builtin types;"
msgstr ""
-#: c-api/init_config.rst:1005
+#: c-api/init_config.rst:1439
msgid "Builtin exceptions;"
msgstr ""
-#: c-api/init_config.rst:1006
+#: c-api/init_config.rst:1440
msgid "Builtin and frozen modules;"
msgstr ""
-#: c-api/init_config.rst:1007
+#: c-api/init_config.rst:1441
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:1444
msgid "\"Main\" initialization phase, Python is fully initialized:"
msgstr ""
-#: c-api/init_config.rst:1012
+#: c-api/init_config.rst:1446
msgid "Install and configure :mod:`importlib`;"
msgstr ""
-#: c-api/init_config.rst:1013
+#: c-api/init_config.rst:1447
msgid "Apply the :ref:`Path Configuration `;"
msgstr ""
-#: c-api/init_config.rst:1014
+#: c-api/init_config.rst:1448
msgid "Install signal handlers;"
msgstr ""
-#: c-api/init_config.rst:1015
+#: c-api/init_config.rst:1449
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:1451
msgid ""
"Enable optional features like :mod:`faulthandler` and :mod:`tracemalloc`;"
msgstr ""
-#: c-api/init_config.rst:1018
+#: c-api/init_config.rst:1452
msgid "Import the :mod:`site` module;"
msgstr ""
-#: c-api/init_config.rst:1019
+#: c-api/init_config.rst:1453
msgid "etc."
msgstr ""
-#: c-api/init_config.rst:1021
+#: c-api/init_config.rst:1455
msgid "Private provisional API:"
msgstr ""
-#: c-api/init_config.rst:1023
+#: c-api/init_config.rst:1457
msgid ""
":c:member:`PyConfig._init_main`: if set to 0, :c:func:"
"`Py_InitializeFromConfig` stops at the \"Core\" initialization phase."
msgstr ""
-#: c-api/init_config.rst:1025
+#: c-api/init_config.rst:1459
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:1464
msgid ""
"Move to the \"Main\" initialization phase, finish the Python initialization."
msgstr ""
-#: c-api/init_config.rst:1032
+#: c-api/init_config.rst:1466
msgid ""
"No module is imported during the \"Core\" phase and the ``importlib`` module "
"is not configured: the :ref:`Path Configuration ` is only "
@@ -1360,14 +1904,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:1472
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:1476
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 +1919,16 @@ msgid ""
"until a proper public API is designed."
msgstr ""
-#: c-api/init_config.rst:1047
+#: c-api/init_config.rst:1481
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..2e2cf77bbd 100644
--- a/c-api/intro.po
+++ b/c-api/intro.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-01 16:00+0200\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -120,11 +120,11 @@ msgstr ""
msgid ""
"The header files are typically installed with Python. On Unix, these are "
"located in the directories :file:`{prefix}/include/pythonversion/` and :file:"
-"`{exec_prefix}/include/pythonversion/`, where :envvar:`prefix` and :envvar:"
-"`exec_prefix` are defined by the corresponding parameters to Python's :"
-"program:`configure` script and *version* is ``'%d.%d' % sys."
-"version_info[:2]``. On Windows, the headers are installed in :file:"
-"`{prefix}/include`, where :envvar:`prefix` is the installation directory "
+"`{exec_prefix}/include/pythonversion/`, where :option:`prefix <--prefix>` "
+"and :option:`exec_prefix <--exec-prefix>` are defined by the corresponding "
+"parameters to Python's :program:`configure` script and *version* is ``'%d."
+"%d' % sys.version_info[:2]``. On Windows, the headers are installed in :"
+"file:`{prefix}/include`, where ``prefix`` is the installation directory "
"specified to the installer."
msgstr ""
@@ -134,8 +134,8 @@ msgid ""
"compiler's search path for includes. Do *not* place the parent directories "
"on the search path and then use ``#include ``; this will "
"break on multi-platform builds since the platform independent headers under :"
-"envvar:`prefix` include the platform specific headers from :envvar:"
-"`exec_prefix`."
+"option:`prefix <--prefix>` include the platform specific headers from :"
+"option:`exec_prefix <--exec-prefix>`."
msgstr ""
#: c-api/intro.rst:95
@@ -272,13 +272,13 @@ msgstr ""
#: c-api/intro.rst:231
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 "
+"value of type :c:expr:`PyObject*`. This type is a pointer to an opaque data "
"type representing an arbitrary Python object. Since all Python object types "
"are treated the same way by the Python language in most situations (e.g., "
"assignments, scope rules, and argument passing), it is only fitting that "
"they should be represented by a single C type. Almost all Python objects "
"live on the heap: you never declare an automatic or static variable of type :"
-"c:type:`PyObject`, only pointer variables of type :c:type:`PyObject*` can "
+"c:type:`PyObject`, only pointer variables of type :c:expr:`PyObject*` can "
"be declared. The sole exception are the type objects; since these must "
"never be deallocated, they are typically static :c:type:`PyTypeObject` "
"objects."
@@ -386,8 +386,8 @@ 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
@@ -491,19 +491,27 @@ msgstr ""
#: c-api/intro.rst:497
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:"
-"`double` and :c:type:`char*`. A few structure types are used to describe "
+"API; most are simple C types such as :c:expr:`int`, :c:expr:`long`, :c:expr:"
+"`double` and :c:expr:`char*`. A few structure types are used to describe "
"static tables used to list the functions exported by a module or the data "
"attributes of a new object type, and another is used to describe the value "
"of a complex number. These will be discussed together with the functions "
"that use them."
msgstr ""
-#: c-api/intro.rst:509
+#: c-api/intro.rst:507
+msgid ""
+"A signed integral type such that ``sizeof(Py_ssize_t) == sizeof(size_t)``. "
+"C99 doesn't define such a thing directly (size_t is an unsigned integral "
+"type). See :pep:`353` for details. ``PY_SSIZE_T_MAX`` is the largest "
+"positive value of type :c:type:`Py_ssize_t`."
+msgstr ""
+
+#: c-api/intro.rst:516
msgid "Exceptions"
msgstr "Exceptions"
-#: c-api/intro.rst:511
+#: c-api/intro.rst:518
msgid ""
"The Python programmer only needs to deal with exceptions if specific error "
"handling is required; unhandled exceptions are automatically propagated to "
@@ -512,7 +520,7 @@ msgid ""
"stack traceback."
msgstr ""
-#: c-api/intro.rst:519
+#: c-api/intro.rst:526
msgid ""
"For C programmers, however, error checking always has to be explicit. All "
"functions in the Python/C API can raise exceptions, unless an explicit claim "
@@ -527,7 +535,7 @@ msgid ""
"explicitly documented."
msgstr ""
-#: c-api/intro.rst:534
+#: c-api/intro.rst:541
msgid ""
"Exception state is maintained in per-thread storage (this is equivalent to "
"using global storage in an unthreaded application). A thread can be in one "
@@ -540,7 +548,7 @@ msgid ""
"clears the exception state."
msgstr ""
-#: c-api/intro.rst:544
+#: c-api/intro.rst:551
msgid ""
"The full exception state consists of three objects (all of which can be "
"``NULL``): the exception type, the corresponding exception value, and the "
@@ -553,7 +561,7 @@ msgid ""
"``sys.exc_info()`` and friends."
msgstr ""
-#: c-api/intro.rst:556
+#: c-api/intro.rst:563
msgid ""
"Note that starting with Python 1.5, the preferred, thread-safe way to access "
"the exception state from Python code is to call the function :func:`sys."
@@ -567,7 +575,7 @@ msgid ""
"referenced by the stack frames in the traceback."
msgstr ""
-#: c-api/intro.rst:567
+#: c-api/intro.rst:574
msgid ""
"As a general principle, a function that calls another function to perform "
"some task should check whether the called function raised an exception, and "
@@ -578,7 +586,7 @@ msgid ""
"of the error."
msgstr ""
-#: c-api/intro.rst:576
+#: c-api/intro.rst:583
msgid ""
"A simple example of detecting exceptions and passing them on is shown in "
"the :c:func:`sum_sequence` example above. It so happens that this example "
@@ -587,11 +595,11 @@ msgid ""
"why you like Python, we show the equivalent Python code::"
msgstr ""
-#: c-api/intro.rst:591
+#: c-api/intro.rst:598
msgid "Here is the corresponding C code, in all its glory::"
msgstr ""
-#: c-api/intro.rst:643
+#: c-api/intro.rst:650
msgid ""
"This example represents an endorsed use of the ``goto`` statement in C! It "
"illustrates the use of :c:func:`PyErr_ExceptionMatches` and :c:func:"
@@ -604,11 +612,11 @@ msgid ""
"success after the final call made is successful."
msgstr ""
-#: c-api/intro.rst:657
+#: c-api/intro.rst:664
msgid "Embedding Python"
msgstr "Embarquer Python"
-#: c-api/intro.rst:659
+#: c-api/intro.rst:666
msgid ""
"The one important task that only embedders (as opposed to extension writers) "
"of the Python interpreter have to worry about is the initialization, and "
@@ -616,7 +624,7 @@ msgid ""
"the interpreter can only be used after the interpreter has been initialized."
msgstr ""
-#: c-api/intro.rst:672
+#: c-api/intro.rst:679
msgid ""
"The basic initialization function is :c:func:`Py_Initialize`. This "
"initializes the table of loaded modules, and creates the fundamental "
@@ -624,7 +632,7 @@ msgid ""
"initializes the module search path (``sys.path``)."
msgstr ""
-#: c-api/intro.rst:679
+#: c-api/intro.rst:686
msgid ""
":c:func:`Py_Initialize` does not set the \"script argument list\" (``sys."
"argv``). If this variable is needed by Python code that will be executed "
@@ -632,7 +640,7 @@ msgid ""
"argv, updatepath)`` after the call to :c:func:`Py_Initialize`."
msgstr ""
-#: c-api/intro.rst:684
+#: c-api/intro.rst:691
msgid ""
"On most systems (in particular, on Unix and Windows, although the details "
"are slightly different), :c:func:`Py_Initialize` calculates the module "
@@ -644,7 +652,7 @@ msgid ""
"on the shell command search path (the environment variable :envvar:`PATH`)."
msgstr ""
-#: c-api/intro.rst:693
+#: c-api/intro.rst:700
msgid ""
"For instance, if the Python executable is found in :file:`/usr/local/bin/"
"python`, it will assume that the libraries are in :file:`/usr/local/lib/"
@@ -655,7 +663,7 @@ msgid ""
"in front of the standard path by setting :envvar:`PYTHONPATH`."
msgstr ""
-#: c-api/intro.rst:708
+#: c-api/intro.rst:715
msgid ""
"The embedding application can steer the search by calling "
"``Py_SetProgramName(file)`` *before* calling :c:func:`Py_Initialize`. Note "
@@ -666,7 +674,7 @@ msgid ""
"func:`Py_GetProgramFullPath` (all defined in :file:`Modules/getpath.c`)."
msgstr ""
-#: c-api/intro.rst:718
+#: c-api/intro.rst:725
msgid ""
"Sometimes, it is desirable to \"uninitialize\" Python. For instance, the "
"application may want to start over (make another call to :c:func:"
@@ -680,102 +688,55 @@ msgid ""
"released."
msgstr ""
-#: c-api/intro.rst:732
+#: c-api/intro.rst:739
msgid "Debugging Builds"
msgstr ""
-#: c-api/intro.rst:734
+#: c-api/intro.rst:741
msgid ""
"Python can be built with several macros to enable extra checks of the "
"interpreter and extension modules. These checks tend to add a large amount "
"of overhead to the runtime so they are not enabled by default."
msgstr ""
-#: c-api/intro.rst:738
+#: c-api/intro.rst:745
msgid ""
"A full list of the various types of debugging builds is in the file :file:"
"`Misc/SpecialBuilds.txt` in the Python source distribution. Builds are "
"available that support tracing of reference counts, debugging the memory "
"allocator, or low-level profiling of the main interpreter loop. Only the "
-"most frequently-used builds will be described in the remainder of this "
+"most frequently used builds will be described in the remainder of this "
"section."
msgstr ""
-#: c-api/intro.rst:744
-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."
-msgstr ""
-
-#: c-api/intro.rst:760
-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."
+"Compiling the interpreter with the :c:macro:`Py_DEBUG` macro defined "
+"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:768
+#: c-api/intro.rst:759
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:762
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:769
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..f910b9223c 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-04-05 10:05+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/long.po b/c-api/long.po
index 6d9368fb4c..8ec49d2f49 100644
--- a/c-api/long.po
+++ b/c-api/long.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -72,13 +72,13 @@ 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 ""
#: c-api/long.rst:50
msgid ""
-"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long`, "
+"Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long`, "
"or ``NULL`` on failure."
msgstr ""
@@ -96,13 +96,13 @@ msgstr ""
#: c-api/long.rst:68
msgid ""
-"Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or "
+"Return a new :c:type:`PyLongObject` object from a C :c:expr:`long long`, or "
"``NULL`` on failure."
msgstr ""
#: c-api/long.rst:74
msgid ""
-"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long "
+"Return a new :c:type:`PyLongObject` object from a C :c:expr:`unsigned long "
"long`, or ``NULL`` on failure."
msgstr ""
@@ -125,54 +125,51 @@ msgid ""
"are no digits, :exc:`ValueError` will be raised."
msgstr ""
-#: c-api/long.rst:99
-msgid "Convert a sequence of Unicode digits to a Python integer value."
-msgstr ""
-
-#: c-api/long.rst:103
+#: c-api/long.rst:96
msgid ""
-"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
-"func:`PyLong_FromUnicodeObject`."
+"Python methods :meth:`int.to_bytes` and :meth:`int.from_bytes` to convert a :"
+"c:type:`PyLongObject` to/from an array of bytes in base ``256``. You can "
+"call those from C using :c:func:`PyObject_CallMethod`."
msgstr ""
-#: c-api/long.rst:108
+#: c-api/long.rst:103
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:111
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:140
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`."
+"Return a C :c:expr:`long` representation of *obj*. If *obj* is not 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:132
+#: c-api/long.rst:126
msgid ""
"Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
-"type:`long`."
+"expr:`long`."
msgstr ""
-#: c-api/long.rst:156 c-api/long.rst:199 c-api/long.rst:222
+#: c-api/long.rst:149 c-api/long.rst:190 c-api/long.rst:213
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:151 c-api/long.rst:194 c-api/long.rst:298
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:154 c-api/long.rst:197 c-api/long.rst:301
+msgid "This function will no longer use :meth:`__int__`."
msgstr ""
-#: c-api/long.rst:151
+#: c-api/long.rst:144
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 +177,20 @@ msgid ""
"occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: c-api/long.rst:189
+#: c-api/long.rst:181
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`."
+"Return a C :c:expr:`long long` representation of *obj*. If *obj* is not 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:175
+#: c-api/long.rst:167
msgid ""
"Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
-"type:`long long`."
+"expr:`long long`."
msgstr ""
-#: c-api/long.rst:194
+#: c-api/long.rst:185
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,142 +198,141 @@ msgid ""
"occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: c-api/long.rst:216
+#: c-api/long.rst:207
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:210
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:222
msgid ""
-"Return a C :c:type:`unsigned long` representation of *pylong*. *pylong* "
+"Return a C :c:expr:`unsigned long` representation of *pylong*. *pylong* "
"must be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:234
+#: c-api/long.rst:225
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
-"type:`unsigned long`."
+"expr:`unsigned long`."
msgstr ""
-#: c-api/long.rst:237
+#: c-api/long.rst:228
msgid ""
"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:247
+#: c-api/long.rst:238
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:241
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:244
msgid ""
"Returns ``(size_t)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:262
+#: c-api/long.rst:253
msgid ""
-"Return a C :c:type:`unsigned long long` representation of *pylong*. "
+"Return a C :c:expr:`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:256
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :"
-"c:type:`unsigned long long`."
+"c:expr:`unsigned long long`."
msgstr ""
-#: c-api/long.rst:268
+#: c-api/long.rst:259
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:262
msgid ""
"A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`."
msgstr ""
-#: c-api/long.rst:277
+#: c-api/long.rst:268
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`."
+"Return a C :c:expr:`unsigned long` representation of *obj*. If *obj* is not "
+"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:272
msgid ""
-"If the value of *obj* is out of range for an :c:type:`unsigned long`, return "
+"If the value of *obj* is out of range for an :c:expr:`unsigned long`, return "
"the reduction of that value modulo ``ULONG_MAX + 1``."
msgstr ""
-#: c-api/long.rst:285
+#: c-api/long.rst:275
msgid ""
"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
"disambiguate."
msgstr ""
-#: c-api/long.rst:297
+#: c-api/long.rst:287
msgid ""
-"Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* "
+"Return a C :c:expr:`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:292
msgid ""
-"If the value of *obj* is out of range for an :c:type:`unsigned long long`, "
+"If the value of *obj* is out of range for an :c:expr:`unsigned long long`, "
"return the reduction of that value modulo ``ULLONG_MAX + 1``."
msgstr ""
-#: c-api/long.rst:305
+#: c-api/long.rst:295
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:307
msgid ""
-"Return a C :c:type:`double` representation of *pylong*. *pylong* must be an "
+"Return a C :c:expr:`double` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: c-api/long.rst:320
+#: c-api/long.rst:310
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
-"type:`double`."
+"expr:`double`."
msgstr ""
-#: c-api/long.rst:323
+#: c-api/long.rst:313
msgid ""
"Returns ``-1.0`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
msgstr ""
-#: c-api/long.rst:328
+#: c-api/long.rst:318
msgid ""
-"Convert a Python integer *pylong* to a C :c:type:`void` pointer. If *pylong* "
+"Convert a Python integer *pylong* to a C :c:expr:`void` pointer. If *pylong* "
"cannot be converted, an :exc:`OverflowError` will be raised. This is only "
-"assured to produce a usable :c:type:`void` pointer for values created with :"
+"assured to produce a usable :c:expr:`void` pointer for values created with :"
"c:func:`PyLong_FromVoidPtr`."
msgstr ""
-#: c-api/long.rst:333
+#: c-api/long.rst:323
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..55bd3511a0 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-04-05 10:05+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/marshal.po b/c-api/marshal.po
index 2d2bfca6ec..be0eee8b28 100644
--- a/c-api/marshal.po
+++ b/c-api/marshal.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-10-18 15:46+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -41,9 +41,9 @@ msgstr ""
#: c-api/marshal.rst:24
msgid ""
-"Marshal a :c:type:`long` integer, *value*, to *file*. This will only write "
+"Marshal a :c:expr:`long` integer, *value*, to *file*. This will only write "
"the least-significant 32 bits of *value*; regardless of the size of the "
-"native :c:type:`long` type. *version* indicates the file format."
+"native :c:expr:`long` type. *version* indicates the file format."
msgstr ""
#: c-api/marshal.rst:31
@@ -64,9 +64,9 @@ msgstr ""
#: c-api/marshal.rst:46
msgid ""
-"Return a C :c:type:`long` from the data stream in a :c:type:`FILE*` opened "
+"Return a C :c:expr:`long` from the data stream in a :c:expr:`FILE*` opened "
"for reading. Only a 32-bit value can be read in using this function, "
-"regardless of the native size of :c:type:`long`."
+"regardless of the native size of :c:expr:`long`."
msgstr ""
#: c-api/marshal.rst:60
@@ -77,14 +77,14 @@ msgstr ""
#: c-api/marshal.rst:56
msgid ""
-"Return a C :c:type:`short` from the data stream in a :c:type:`FILE*` opened "
+"Return a C :c:expr:`short` from the data stream in a :c:expr:`FILE*` opened "
"for reading. Only a 16-bit value can be read in using this function, "
-"regardless of the native size of :c:type:`short`."
+"regardless of the native size of :c:expr:`short`."
msgstr ""
#: c-api/marshal.rst:66
msgid ""
-"Return a Python object from the data stream in a :c:type:`FILE*` opened for "
+"Return a Python object from the data stream in a :c:expr:`FILE*` opened for "
"reading."
msgstr ""
@@ -96,7 +96,7 @@ msgstr ""
#: c-api/marshal.rst:75
msgid ""
-"Return a Python object from the data stream in a :c:type:`FILE*` opened for "
+"Return a Python object from the data stream in a :c:expr:`FILE*` opened for "
"reading. Unlike :c:func:`PyMarshal_ReadObjectFromFile`, this function "
"assumes that no further objects will be read from the file, allowing it to "
"aggressively load file data into memory so that the de-serialization can "
diff --git a/c-api/memory.po b/c-api/memory.po
index 673614bcbc..773069639c 100644
--- a/c-api/memory.po
+++ b/c-api/memory.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-03-19 16:59+0100\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -82,7 +82,7 @@ msgid ""
"extended with new object types written in C. Another reason for using the "
"Python heap is the desire to *inform* the Python memory manager about the "
"memory needs of the extension module. Even when the requested memory is used "
-"exclusively for internal, highly-specific purposes, delegating all memory "
+"exclusively for internal, highly specific purposes, delegating all memory "
"requests to the Python memory manager causes the interpreter to have a more "
"accurate image of its memory footprint as a whole. Consequently, under "
"certain circumstances, the Python memory manager may or may not trigger "
@@ -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:100
+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:112
+msgid "The three allocation domains are:"
+msgstr ""
+
+#: c-api/memory.rst:114
+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:119
+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:123
+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:126
+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:131
msgid "Raw Memory Interface"
msgstr ""
-#: c-api/memory.rst:99
+#: c-api/memory.rst:133
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:137
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:217 c-api/memory.rst:325
msgid ""
-"Allocates *n* bytes and returns a pointer of type :c:type:`void*` to the "
+"Allocates *n* bytes and returns a pointer of type :c:expr:`void*` to the "
"allocated memory, or ``NULL`` if the request fails."
msgstr ""
-#: c-api/memory.rst:115
+#: c-api/memory.rst:149
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:227 c-api/memory.rst:335
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 "
+"a pointer of type :c:expr:`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:160
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:240 c-api/memory.rst:348
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:172
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:176
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:180
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:186
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:261 c-api/memory.rst:369
msgid "If *p* is ``NULL``, no operation is performed."
msgstr ""
-#: c-api/memory.rst:163
+#: c-api/memory.rst:197
msgid "Memory Interface"
msgstr ""
-#: c-api/memory.rst:271
+#: c-api/memory.rst:305
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:203
msgid ""
"The :ref:`default memory allocator ` uses the :"
"ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:280
+#: c-api/memory.rst:320
msgid ""
"The :term:`GIL ` must be held when using these "
"functions."
msgstr ""
-#: c-api/memory.rst:179
+#: c-api/memory.rst:213
msgid ""
"The default allocator is now pymalloc instead of system :c:func:`malloc`."
msgstr ""
-#: c-api/memory.rst:186
+#: c-api/memory.rst:220
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:231
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:243
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:247
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:250
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:256
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,38 +311,38 @@ msgid ""
"undefined behavior occurs."
msgstr ""
-#: c-api/memory.rst:229
+#: c-api/memory.rst:263
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:269
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 "
+"of memory. Returns a pointer cast to :c:expr:`TYPE*`. The memory will not "
"have been initialized in any way."
msgstr ""
-#: c-api/memory.rst:242
+#: c-api/memory.rst:276
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 "
+"sizeof(TYPE))`` bytes. Returns a pointer cast to :c:expr:`TYPE*`. On "
"return, *p* will be a pointer to the new memory area, or ``NULL`` in the "
"event of failure."
msgstr ""
-#: c-api/memory.rst:247
+#: c-api/memory.rst:281
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:287
msgid "Same as :c:func:`PyMem_Free`."
msgstr ""
-#: c-api/memory.rst:255
+#: c-api/memory.rst:289
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:294
msgid "``PyMem_MALLOC(size)``"
msgstr ""
-#: c-api/memory.rst:261
+#: c-api/memory.rst:295
msgid "``PyMem_NEW(type, size)``"
msgstr ""
-#: c-api/memory.rst:262
+#: c-api/memory.rst:296
msgid "``PyMem_REALLOC(ptr, size)``"
msgstr ""
-#: c-api/memory.rst:263
+#: c-api/memory.rst:297
msgid "``PyMem_RESIZE(ptr, type, size)``"
msgstr ""
-#: c-api/memory.rst:264
+#: c-api/memory.rst:298
msgid "``PyMem_FREE(ptr)``"
msgstr ""
-#: c-api/memory.rst:265
+#: c-api/memory.rst:299
msgid "``PyMem_DEL(ptr)``"
msgstr ""
-#: c-api/memory.rst:269
+#: c-api/memory.rst:303
msgid "Object allocators"
msgstr ""
-#: c-api/memory.rst:275
+#: c-api/memory.rst:310
+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:315
msgid ""
"The :ref:`default object allocator ` uses the :"
"ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:288
+#: c-api/memory.rst:328
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:339
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:351
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:355
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:358
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:364
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,353 @@ msgid ""
"called before, undefined behavior occurs."
msgstr ""
-#: c-api/memory.rst:335
+#: c-api/memory.rst:375
msgid "Default Memory Allocators"
msgstr ""
-#: c-api/memory.rst:337
+#: c-api/memory.rst:377
msgid "Default memory allocators:"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:380
msgid "Configuration"
msgstr "Configuration"
-#: c-api/memory.rst:340
+#: c-api/memory.rst:380
msgid "Name"
msgstr "Nom"
-#: c-api/memory.rst:340
+#: c-api/memory.rst:380
msgid "PyMem_RawMalloc"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:380
msgid "PyMem_Malloc"
msgstr ""
-#: c-api/memory.rst:340
+#: c-api/memory.rst:380
msgid "PyObject_Malloc"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:382
msgid "Release build"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:382
msgid "``\"pymalloc\"``"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:384
msgid "``malloc``"
msgstr ""
-#: c-api/memory.rst:342
+#: c-api/memory.rst:382
msgid "``pymalloc``"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:383
msgid "Debug build"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:383
msgid "``\"pymalloc_debug\"``"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:385
msgid "``malloc`` + debug"
msgstr ""
-#: c-api/memory.rst:343
+#: c-api/memory.rst:383
msgid "``pymalloc`` + debug"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:384
msgid "Release build, without pymalloc"
msgstr ""
-#: c-api/memory.rst:344
+#: c-api/memory.rst:384
msgid "``\"malloc\"``"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:385
msgid "Debug build, without pymalloc"
msgstr ""
-#: c-api/memory.rst:345
+#: c-api/memory.rst:385
msgid "``\"malloc_debug\"``"
msgstr ""
-#: c-api/memory.rst:348
+#: c-api/memory.rst:388
msgid "Legend:"
msgstr ""
-#: c-api/memory.rst:350
-msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable"
+#: c-api/memory.rst:390
+msgid "Name: value for :envvar:`PYTHONMALLOC` environment variable."
msgstr ""
-#: c-api/memory.rst:351
+#: c-api/memory.rst:391
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:393
+msgid "``pymalloc``: :ref:`pymalloc memory allocator `."
msgstr ""
-#: c-api/memory.rst:354
+#: c-api/memory.rst:394
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:358
+#: c-api/memory.rst:396
+msgid "\"Debug build\": :ref:`Python build in debug mode `."
+msgstr ""
+
+#: c-api/memory.rst:401
msgid "Customize Memory Allocators"
msgstr ""
-#: c-api/memory.rst:364
+#: c-api/memory.rst:407
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:647
msgid "Field"
msgstr "Champ"
-#: c-api/memory.rst:513
+#: c-api/memory.rst:647
msgid "Meaning"
msgstr "Signification"
-#: c-api/memory.rst:515
+#: c-api/memory.rst:649
msgid "``void *ctx``"
msgstr "``void *ctx``"
-#: c-api/memory.rst:515
+#: c-api/memory.rst:649
msgid "user context passed as first argument"
msgstr ""
-#: c-api/memory.rst:372
+#: c-api/memory.rst:415
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:415
msgid "allocate a memory block"
msgstr ""
-#: c-api/memory.rst:374
+#: c-api/memory.rst:417
msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``"
msgstr ""
-#: c-api/memory.rst:374
+#: c-api/memory.rst:417
msgid "allocate a memory block initialized with zeros"
msgstr ""
-#: c-api/memory.rst:377
+#: c-api/memory.rst:420
msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``"
msgstr ""
-#: c-api/memory.rst:377
+#: c-api/memory.rst:420
msgid "allocate or resize a memory block"
msgstr ""
-#: c-api/memory.rst:379
+#: c-api/memory.rst:422
msgid "``void free(void *ctx, void *ptr)``"
msgstr "``void free(void *ctx, void *ptr)``"
-#: c-api/memory.rst:379
+#: c-api/memory.rst:422
msgid "free a memory block"
msgstr ""
-#: c-api/memory.rst:382
+#: c-api/memory.rst:425
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:432
msgid "Enum used to identify an allocator domain. Domains:"
msgstr ""
-#: c-api/memory.rst:402 c-api/memory.rst:411
+#: c-api/memory.rst:445 c-api/memory.rst:454
#, fuzzy
msgid "Functions:"
msgstr "Fonctions"
-#: c-api/memory.rst:395
+#: c-api/memory.rst:438
#, fuzzy
msgid ":c:func:`PyMem_RawMalloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:396
+#: c-api/memory.rst:439
#, fuzzy
msgid ":c:func:`PyMem_RawRealloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:397
+#: c-api/memory.rst:440
#, fuzzy
msgid ":c:func:`PyMem_RawCalloc`"
msgstr ":c:func:`PyMem_RawCalloc`,"
-#: c-api/memory.rst:398
+#: c-api/memory.rst:441
msgid ":c:func:`PyMem_RawFree`"
msgstr ""
-#: c-api/memory.rst:404
+#: c-api/memory.rst:447
#, fuzzy
msgid ":c:func:`PyMem_Malloc`,"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:405
+#: c-api/memory.rst:448
#, fuzzy
msgid ":c:func:`PyMem_Realloc`"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:406
+#: c-api/memory.rst:449
#, fuzzy
msgid ":c:func:`PyMem_Calloc`"
msgstr ":c:func:`PyMem_Calloc`,"
-#: c-api/memory.rst:407
+#: c-api/memory.rst:450
msgid ":c:func:`PyMem_Free`"
msgstr ""
-#: c-api/memory.rst:413
+#: c-api/memory.rst:456
msgid ":c:func:`PyObject_Malloc`"
msgstr ""
-#: c-api/memory.rst:414
+#: c-api/memory.rst:457
msgid ":c:func:`PyObject_Realloc`"
msgstr ""
-#: c-api/memory.rst:415
+#: c-api/memory.rst:458
msgid ":c:func:`PyObject_Calloc`"
msgstr ""
-#: c-api/memory.rst:416
+#: c-api/memory.rst:459
msgid ":c:func:`PyObject_Free`"
msgstr ""
-#: c-api/memory.rst:420
+#: c-api/memory.rst:463
msgid "Get the memory block allocator of the specified domain."
msgstr ""
-#: c-api/memory.rst:425
+#: c-api/memory.rst:468
msgid "Set the memory block allocator of the specified domain."
msgstr ""
-#: c-api/memory.rst:427
+#: c-api/memory.rst:470
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:473
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:477
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:484
+msgid ":c:func:`PyMem_SetAllocator` does have the following contract:"
msgstr ""
-#: c-api/memory.rst:443
+#: c-api/memory.rst:486
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``)."
+"It can be called after :c:func:`Py_PreInitialize` and before :c:func:"
+"`Py_InitializeFromConfig` to install a custom memory allocator. There are no "
+"restrictions over the installed allocator other than the ones imposed by the "
+"domain (for instance, the Raw Domain allows the allocator to be called "
+"without the GIL held). See :ref:`the section on allocator domains ` for more information."
msgstr ""
-#: c-api/memory.rst:447
+#: c-api/memory.rst:494
+msgid ""
+"If called after Python has finish initializing (after :c:func:"
+"`Py_InitializeFromConfig` has been called) the allocator **must** wrap the "
+"existing allocator. Substituting the current allocator for some other "
+"arbitrary one is **not supported**."
+msgstr ""
+
+#: c-api/memory.rst:503
+msgid ""
+"Setup :ref:`debug hooks in the Python memory allocators ` "
+"to detect memory errors."
+msgstr ""
+
+#: c-api/memory.rst:510
+msgid "Debug hooks on the Python memory allocators"
+msgstr ""
+
+#: c-api/memory.rst:512
+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:517
+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:520
+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:523
+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:530
msgid "Runtime checks:"
msgstr ""
-#: c-api/memory.rst:449
+#: c-api/memory.rst:532
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:534
+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:535
+msgid "Detect write after the end of the buffer (buffer overflow)."
msgstr ""
-#: c-api/memory.rst:453
+#: c-api/memory.rst:536
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:541
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 +788,132 @@ msgid ""
"memory block was traced."
msgstr ""
-#: c-api/memory.rst:463
+#: c-api/memory.rst:546
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:553
+msgid "``p[-2*S:-S]``"
+msgstr ""
+
+#: c-api/memory.rst:553
+msgid ""
+"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:560
+msgid "``p[-S]``"
+msgstr ""
+
+#: c-api/memory.rst:556
+msgid "API identifier (ASCII character):"
+msgstr ""
+
+#: c-api/memory.rst:558
+msgid "``'r'`` for :c:data:`PYMEM_DOMAIN_RAW`."
+msgstr ""
+
+#: c-api/memory.rst:559
+msgid "``'m'`` for :c:data:`PYMEM_DOMAIN_MEM`."
+msgstr ""
+
+#: c-api/memory.rst:560
+msgid "``'o'`` for :c:data:`PYMEM_DOMAIN_OBJ`."
+msgstr ""
+
+#: c-api/memory.rst:563
+msgid "``p[-S+1:0]``"
+msgstr ""
+
+#: c-api/memory.rst:563
+msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch under- writes and reads."
+msgstr ""
+
+#: c-api/memory.rst:572
+msgid "``p[0:N]``"
+msgstr ""
+
+#: c-api/memory.rst:566
+msgid ""
+"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:575
+msgid "``p[N:N+S]``"
+msgstr ""
+
+#: c-api/memory.rst:575
+msgid "Copies of PYMEM_FORBIDDENBYTE. Used to catch over- writes and reads."
+msgstr ""
+
+#: c-api/memory.rst:586
+msgid "``p[N+S:N+2*S]``"
+msgstr ""
+
+#: c-api/memory.rst:578
+msgid ""
+"Only used if the ``PYMEM_DEBUG_SERIALNO`` macro is defined (not defined by "
+"default)."
+msgstr ""
+
+#: c-api/memory.rst:581
+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:588
+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:597
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."
+"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:475
+#: c-api/memory.rst:605
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()``."
+"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:485
+#: c-api/memory.rst:615
msgid "The pymalloc allocator"
msgstr ""
-#: c-api/memory.rst:487
+#: c-api/memory.rst:617
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 +922,115 @@ msgid ""
"512 bytes."
msgstr ""
-#: c-api/memory.rst:492
+#: c-api/memory.rst:622
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:626
msgid "The arena allocator uses the following functions:"
msgstr ""
-#: c-api/memory.rst:498
+#: c-api/memory.rst:628
msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows,"
msgstr ""
-#: c-api/memory.rst:499
+#: c-api/memory.rst:629
msgid ":c:func:`mmap` and :c:func:`munmap` if available,"
msgstr ""
-#: c-api/memory.rst:500
+#: c-api/memory.rst:630
msgid ":c:func:`malloc` and :c:func:`free` otherwise."
msgstr ""
-#: c-api/memory.rst:503
+#: c-api/memory.rst:632
+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:637
msgid "Customize pymalloc Arena Allocator"
msgstr ""
-#: c-api/memory.rst:509
+#: c-api/memory.rst:643
msgid ""
"Structure used to describe an arena allocator. The structure has three "
"fields:"
msgstr ""
-#: c-api/memory.rst:517
+#: c-api/memory.rst:651
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:651
msgid "allocate an arena of size bytes"
msgstr ""
-#: c-api/memory.rst:519
+#: c-api/memory.rst:653
#, 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:653
msgid "free an arena"
msgstr ""
-#: c-api/memory.rst:524
+#: c-api/memory.rst:658
msgid "Get the arena allocator."
msgstr ""
-#: c-api/memory.rst:528
+#: c-api/memory.rst:662
msgid "Set the arena allocator."
msgstr ""
-#: c-api/memory.rst:532
+#: c-api/memory.rst:666
msgid "tracemalloc C API"
msgstr ""
-#: c-api/memory.rst:538
+#: c-api/memory.rst:672
msgid "Track an allocated memory block in the :mod:`tracemalloc` module."
msgstr ""
-#: c-api/memory.rst:540
+#: c-api/memory.rst:674
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:677
msgid "If memory block is already tracked, update the existing trace."
msgstr ""
-#: c-api/memory.rst:547
+#: c-api/memory.rst:681
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:684
msgid "Return ``-2`` if tracemalloc is disabled, otherwise return ``0``."
msgstr ""
-#: c-api/memory.rst:556
+#: c-api/memory.rst:690
msgid "Examples"
msgstr "Exemples"
-#: c-api/memory.rst:558
+#: c-api/memory.rst:692
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:705
msgid "The same code using the type-oriented function set::"
msgstr ""
-#: c-api/memory.rst:583
+#: c-api/memory.rst:717
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 +1040,14 @@ msgid ""
"different allocators operating on different heaps. ::"
msgstr ""
-#: c-api/memory.rst:598
+#: c-api/memory.rst:732
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:736
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..7770ba02e1 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-04-05 10:05+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..fb3a4cb71d 100644
--- a/c-api/module.po
+++ b/c-api/module.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-01-27 19:26+0100\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -65,9 +65,9 @@ msgstr ""
#: c-api/module.rst:67
msgid ""
-"It is recommended extensions use other :c:func:`PyModule_\\*` and :c:func:"
-"`PyObject_\\*` functions rather than directly manipulate a module's :attr:"
-"`~object.__dict__`."
+"It is recommended extensions use other ``PyModule_*`` and ``PyObject_*`` "
+"functions rather than directly manipulate a module's :attr:`~object."
+"__dict__`."
msgstr ""
#: c-api/module.rst:78
@@ -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,39 +435,39 @@ 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`."
+"Create a new module object, given the definition in *def* 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 "
-"version does not match the version of the running interpreter, a :exc:"
-"`RuntimeWarning` is emitted."
+"Create a new module object, given the definition in *def* and the ModuleSpec "
+"*spec*, 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: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 "Exemple d'utilisation ::"
+
+#: 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..0ae959fba5 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-21 16:37+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 eedfef7480..4005de3226 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: 2021-06-22 09:58+0200\n"
+"POT-Creation-Date: 2023-03-22 22:57+0100\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,21 @@ 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:166
+#, fuzzy
+msgid ""
+"Format *obj* using *format_spec*. This is equivalent to the Python "
+"expression ``format(obj, format_spec)``."
+msgstr "Ceci est l'équivalent de l'expression Python : ``callable(*args)``."
+
+#: c-api/object.rst:169
+msgid ""
+"*format_spec* may be ``NULL``. In this case the call is equivalent to "
+"``format(obj)``. Returns the formatted string on success, ``NULL`` on "
+"failure."
+msgstr ""
+
+#: c-api/object.rst:177
#, fuzzy
msgid ""
"Compute a string representation of object *o*. Returns the string "
@@ -250,7 +265,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:205
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
@@ -258,7 +273,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:189
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 +283,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:200
#, fuzzy
msgid ""
"Compute a string representation of object *o*. Returns the string "
@@ -287,7 +302,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:214
#, fuzzy
msgid ""
"Compute a bytes representation of object *o*. ``NULL`` is returned on "
@@ -302,7 +317,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:223
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 +325,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:245
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 +335,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:230
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 +347,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:235
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 +358,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:242
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 +367,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:249
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 +378,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:253
msgid ""
"An instance *inst* can override what is considered its class by having a :"
"attr:`__class__` attribute."
@@ -371,7 +386,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:256
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,58 +396,58 @@ 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:265
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:268
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:275
msgid ""
-"Set a :exc:`TypeError` indicating that ``type(o)`` is not hashable and "
-"return ``-1``. This function receives special treatment when stored in a "
+"Set a :exc:`TypeError` indicating that ``type(o)`` is not :term:`hashable` "
+"and return ``-1``. This function receives special treatment when stored in a "
"``tp_hash`` slot, allowing a type to explicitly indicate to the interpreter "
"that it is not hashable."
msgstr ""
-#: c-api/object.rst:273
+#: c-api/object.rst:283
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:290
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:299
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:expr:`PyTypeObject*`, except when the "
+"incremented reference count is needed."
msgstr ""
-#: c-api/object.rst:300
+#: c-api/object.rst:310
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:319
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,7 +455,7 @@ msgid ""
"``len(o)``."
msgstr ""
-#: c-api/object.rst:316
+#: c-api/object.rst:326
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 "
@@ -449,7 +464,7 @@ msgid ""
"defaultvalue)``."
msgstr ""
-#: c-api/object.rst:326
+#: c-api/object.rst:336
#, fuzzy
msgid ""
"Return element of *o* corresponding to the object *key* or ``NULL`` on "
@@ -459,7 +474,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:342
#, fuzzy
msgid ""
"Map the object *key* to the value *v*. Raise an exception and return ``-1`` "
@@ -471,7 +486,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:350
#, fuzzy
msgid ""
"Remove the mapping for the object *key* from the object *o*. Return ``-1`` "
@@ -481,7 +496,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:356
msgid ""
"This is equivalent to the Python expression ``dir(o)``, returning a "
"(possibly empty) list of strings appropriate for the object argument, or "
@@ -491,7 +506,7 @@ msgid ""
"`PyErr_Occurred` will return false."
msgstr ""
-#: c-api/object.rst:355
+#: c-api/object.rst:365
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 "
@@ -499,6 +514,15 @@ msgid ""
"object cannot be iterated."
msgstr ""
+#: c-api/object.rst:373
+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."
@@ -547,10 +571,6 @@ msgstr ""
#~ "par le *n*-uplet *args*. Si aucun argument n'est nécessaire, alors *args* "
#~ "peut être égal à *NULL*."
-#~ msgid ""
-#~ "This is the equivalent of the Python expression: ``callable(*args)``."
-#~ msgstr "Ceci est l'équivalent de l'expression Python : ``callable(*args)``."
-
#, fuzzy
#~ msgid ""
#~ "Call a callable Python object *callable*, with a variable number of C "
diff --git a/c-api/refcounting.po b/c-api/refcounting.po
index 405d98f2c6..cafe207847 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-21 16:37+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -23,29 +23,117 @@ msgid ""
"The macros in this section are used for managing reference counts of Python "
"objects."
msgstr ""
+"Les macros dans cette section permettent de gérer le compteur de références "
+"des objets Python."
#: c-api/refcounting.rst:16
+msgid "Increment the reference count for object *o*."
+msgstr "Incrémente le compteur de références de l'objet *o*."
+
+#: 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 ""
+"Cette fonction est souvent utilisée pour convertir une :term:`référence "
+"empruntée` en une :term:`référence forte` *sur place*. La fonction :c:func:"
+"`Py_NewRef` peut être utilisée pour créer une nouvelle :term:`référence "
+"forte`."
#: 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 ""
+"L'objet ne doit pas être ``NULL``, la fonction :c:func:`Py_XINCREF` doit "
+"être utilisée s'il est possible qu'il soit ``NULL``."
+
+#: 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 ""
+"Incrémente le compteur de références de l'objet *o*. La macro n'a pas "
+"d'effet si l'objet est ``NULL``."
-#: c-api/refcounting.rst:28
+#: c-api/refcounting.rst:31
+msgid "See also :c:func:`Py_XNewRef`."
+msgstr "Voir aussi :c:func:`Py_XNewRef`."
+
+#: 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 ""
+"Créer une nouvelle :term:`référence forte` d'un objet : incrémente le "
+"compteur de référence de l'objet *o* et renvoie l'objet *o*."
+
+#: 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:func:`Py_DECREF` doit être appelée quand la :term:`référence forte` n'est "
+"plus utilisée pour décrémenter le compteur de références de l'objet."
-#: 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 ""
+"L'objet *o* ne doit pas être ``NULL`` et la fonction :c:func:`Py_XNewRef` "
+"doit être utilisée si *o* peut être ``NULL``."
+
+#: c-api/refcounting.rst:45
+msgid "For example::"
+msgstr "Par exemple ::"
+
+#: c-api/refcounting.rst:50
+msgid "can be written as::"
+msgstr "peut s'écrire ::"
+
+#: c-api/refcounting.rst:54
+msgid "See also :c:func:`Py_INCREF`."
+msgstr "Voir aussi :c:func:`Py_INCREF`."
+
+#: c-api/refcounting.rst:61
+msgid "Similar to :c:func:`Py_NewRef`, but the object *o* can be NULL."
+msgstr "Semblable à :c:func:`Py_NewRef` mais l'objet *o* peut être ``NULL``."
+
+#: c-api/refcounting.rst:63
+msgid "If the object *o* is ``NULL``, the function just returns ``NULL``."
+msgstr "Cette fonction renvoie ``NULL`` si l'objet *o* est ``NULL``."
+
+#: c-api/refcounting.rst:70
+msgid "Decrement the reference count for object *o*."
+msgstr "Décrémente le compteur de références de l'objet *o*."
+
+#: 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 ""
+"Si le compteur de références atteint zéro, la fonction de dés-allocation du "
+"type de l'objet (qui ne doit pas être ``NULL``) est invoquée."
+
+#: c-api/refcounting.rst:75
+msgid ""
+"This function is usually used to delete a :term:`strong reference` before "
+"exiting its scope."
+msgstr ""
+"Cette fonction est généralement utilisée pour supprimer une :term:`référence "
+"forte` avant qu'elle ne soit plus accessible."
+
+#: 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 ""
+"L'objet en argument ne doit pas être ``NULL``. :c:func:`Py_XDECREF` doit "
+"être utilisée si l'objet peut être ``NULL``."
+
+#: 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). "
@@ -57,15 +145,28 @@ msgid ""
"update the list data structure, and then call :c:func:`Py_DECREF` for the "
"temporary variable."
msgstr ""
+"La fonction de dés-allocation peut invoquer du code Python arbitraire (par "
+"exemple quand une instance d'une classe avec une méthode :meth:`__del__` est "
+"supprimée). Le code exécuté a accès à toutes les variables Python globales "
+"mais les exceptions lors de l'exécution de ce code ne sont pas propagées. "
+"Tous les objets qui peuvent être atteints à partir d'une variable globale "
+"doivent être dans un état cohérent avant d'appeler :c:func:`Py_DECREF`. Par "
+"exemple le code pour supprimer un élément d'une liste doit copier une "
+"référence à l'objet dans une variable temporaire, mettre à jour la liste, et "
+"enfin appeler :c:func:`Py_DECREF` avec la variable temporaire."
-#: c-api/refcounting.rst:47
+#: 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 ""
+"Décrémente le compteur de références de l'objet *o*. L'objet peut être "
+"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le "
+"comportement est identique à :c:func:`Py_DECREF` et les mêmes avertissements "
+"sont de rigueur."
-#: c-api/refcounting.rst:54
+#: 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 "
@@ -74,24 +175,46 @@ msgid ""
"object passed because the macro carefully uses a temporary variable and sets "
"the argument to ``NULL`` before decrementing its reference count."
msgstr ""
+"Décrémente le compteur de références de l'objet *o*. L'objet peut être "
+"``NULL``, dans ce cas la macro n'a pas d'effet. Dans le cas contraire le "
+"comportement est identique à :c:func:`Py_DECREF`, puis l'argument est mis à "
+"``NULL``. L'avertissement au sujet de l'objet passé en argument à :c:func:"
+"`Py_DECREF` ne s'applique pas car la macro utilise une variable temporaire "
+"et met l'objet à ``NULL`` avant de décrémenter le compteur de références."
-#: c-api/refcounting.rst:61
+#: 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 ""
+"Il est recommandé d'utiliser cette macro lorsqu'on décrémente le compteur de "
+"référence d'un objet qui peut être parcouru par le ramasse-miette."
-#: c-api/refcounting.rst:65
+#: 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 ""
+"Incrémente le compteur de références de l'objet *o*. C'est la version "
+"fonctionnelle de :c:func:`Py_XINCREF`. Elle peut être utilisée lorsque "
+"Python est embarqué dynamiquement dans une application."
-#: 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 ""
+"Décrémente le compteur de références de l'objet *o*. C'est la version "
+"fonctionnelle de :c:func:`Py_XDECREF`. Elle peut être utilisée lorsque "
+"Python est embarqué dynamiquement dans une application."
+
+#: 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:"
"`_Py_NewReference`, as well as the global variable :c:data:`_Py_RefTotal`."
msgstr ""
+"Les fonctions ou macros suivantes doivent être uniquement utilisées au sein "
+"de l'interpréteur et ne font pas partie de l'API publique : :c:func:"
+"`_Py_Dealloc`, :c:func:`_Py_ForgetReference`, :c:func:`_Py_NewReference`, "
+"ainsi que la variable globale :c:data:`_Py_RefTotal`."
diff --git a/c-api/reflection.po b/c-api/reflection.po
index 10deec6abc..d04aea96ae 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-18 17:06+0100\n"
"PO-Revision-Date: 2019-02-26 12:01+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -60,11 +60,14 @@ msgstr ""
#: c-api/reflection.rst:36
msgid "Get the *frame* next outer frame."
-msgstr ""
+msgstr "Renvoie la *frame* encadrant immédiatement à *frame*."
#: c-api/reflection.rst:38
-msgid "Return a strong reference, or ``NULL`` if *frame* has no outer frame."
+msgid ""
+"Return a :term:`strong reference`, or ``NULL`` if *frame* has no outer frame."
msgstr ""
+"Renvoie un :term:`strong reference`, ou ``NULL`` si *frame* n'a pas de "
+"*frame* encadrante."
#: c-api/reflection.rst:60
msgid "*frame* must not be ``NULL``."
@@ -72,11 +75,11 @@ msgstr ""
#: c-api/reflection.rst:47
msgid "Get the *frame* code."
-msgstr ""
+msgstr "Obtenir le code *frame*."
#: c-api/reflection.rst:49
-msgid "Return a strong reference."
-msgstr ""
+msgid "Return a :term:`strong reference`."
+msgstr "Renvoie un :term:`strong reference`."
#: c-api/reflection.rst:51
msgid ""
@@ -104,6 +107,6 @@ msgid ""
msgstr ""
"Renvoie une description en chaîne de caractères, en fonction du type de "
"*func*. Les valeurs renvoyées peuvent être ``\"()\"`` pour les fonction et "
-"les méthodes, ``\\\" constructor\\\"``, ``\\\" instance\\\"``, ``\\\" object"
-"\\\"``. Concaténé avec le résultat de :c:func:`PyEval_GetFuncName`, le "
+"les méthodes, ``\\\" constructor\\\"``, ``\\\" instance\\\"``, ``\\\" "
+"object\\\"``. Concaténé avec le résultat de :c:func:`PyEval_GetFuncName`, le "
"résultat sera une description de *func*"
diff --git a/c-api/sequence.po b/c-api/sequence.po
index 15b5b657ac..ffe90e73c4 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-04-05 10:05+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..d970a92949 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-04-05 10:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: FRENCH \n"
@@ -21,14 +21,14 @@ msgstr ""
#: c-api/set.rst:15
msgid ""
"This section details the public API for :class:`set` and :class:`frozenset` "
-"objects. Any functionality not listed below is best accessed using the "
-"either the abstract object protocol (including :c:func:"
-"`PyObject_CallMethod`, :c:func:`PyObject_RichCompareBool`, :c:func:"
-"`PyObject_Hash`, :c:func:`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:"
-"`PyObject_Print`, and :c:func:`PyObject_GetIter`) or the abstract number "
-"protocol (including :c:func:`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:"
-"func:`PyNumber_Or`, :c:func:`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :"
-"c:func:`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:"
+"objects. Any functionality not listed below is best accessed using either "
+"the abstract object protocol (including :c:func:`PyObject_CallMethod`, :c:"
+"func:`PyObject_RichCompareBool`, :c:func:`PyObject_Hash`, :c:func:"
+"`PyObject_Repr`, :c:func:`PyObject_IsTrue`, :c:func:`PyObject_Print`, and :c:"
+"func:`PyObject_GetIter`) or the abstract number protocol (including :c:func:"
+"`PyNumber_And`, :c:func:`PyNumber_Subtract`, :c:func:`PyNumber_Or`, :c:func:"
+"`PyNumber_Xor`, :c:func:`PyNumber_InPlaceAnd`, :c:func:"
+"`PyNumber_InPlaceSubtract`, :c:func:`PyNumber_InPlaceOr`, and :c:func:"
"`PyNumber_InPlaceXor`)."
msgstr ""
@@ -39,9 +39,9 @@ msgid ""
"`PyDictObject` in that it is a fixed size for small sets (much like tuple "
"storage) and will point to a separate, variable sized block of memory for "
"medium and large sized sets (much like list storage). None of the fields of "
-"this structure should be considered public and are subject to change. All "
-"access should be done through the documented API rather than by manipulating "
-"the values in the structure."
+"this structure should be considered public and all are subject to change. "
+"All access should be done through the documented API rather than by "
+"manipulating the values in the structure."
msgstr ""
#: c-api/set.rst:40
@@ -86,19 +86,25 @@ msgid ""
"an instance of a subtype. This function always succeeds."
msgstr ""
-#: c-api/set.rst:71
+#: c-api/set.rst:70
+msgid ""
+"Return true if *p* is a :class:`set` object but not an instance of a "
+"subtype. This function always succeeds."
+msgstr ""
+
+#: c-api/set.rst:77
msgid ""
"Return true if *p* is a :class:`set` object or a :class:`frozenset` object "
"but not an instance of a subtype. This function always succeeds."
msgstr ""
-#: c-api/set.rst:77
+#: c-api/set.rst:83
msgid ""
"Return true if *p* is a :class:`frozenset` object but not an instance of a "
"subtype. This function always succeeds."
msgstr ""
-#: c-api/set.rst:83
+#: c-api/set.rst:89
msgid ""
"Return a new :class:`set` containing objects returned by the *iterable*. "
"The *iterable* may be ``NULL`` to create a new empty set. Return the new "
@@ -107,7 +113,7 @@ msgid ""
"(``c=set(s)``)."
msgstr ""
-#: c-api/set.rst:92
+#: c-api/set.rst:98
msgid ""
"Return a new :class:`frozenset` containing objects returned by the "
"*iterable*. The *iterable* may be ``NULL`` to create a new empty frozenset. "
@@ -115,24 +121,24 @@ msgid ""
"`TypeError` if *iterable* is not actually iterable."
msgstr ""
-#: c-api/set.rst:98
+#: c-api/set.rst:104
msgid ""
"The following functions and macros are available for instances of :class:"
"`set` or :class:`frozenset` or instances of their subtypes."
msgstr ""
-#: c-api/set.rst:106
+#: c-api/set.rst:112
msgid ""
"Return the length of a :class:`set` or :class:`frozenset` object. Equivalent "
"to ``len(anyset)``. Raises a :exc:`PyExc_SystemError` if *anyset* is not a :"
"class:`set`, :class:`frozenset`, or an instance of a subtype."
msgstr ""
-#: c-api/set.rst:113
+#: c-api/set.rst:119
msgid "Macro form of :c:func:`PySet_Size` without error checking."
msgstr ""
-#: c-api/set.rst:118
+#: c-api/set.rst:124
msgid ""
"Return ``1`` if found, ``0`` if not found, and ``-1`` if an error is "
"encountered. Unlike the Python :meth:`__contains__` method, this function "
@@ -142,10 +148,10 @@ msgid ""
"or an instance of a subtype."
msgstr ""
-#: c-api/set.rst:127
+#: c-api/set.rst:133
msgid ""
"Add *key* to a :class:`set` instance. Also works with :class:`frozenset` "
-"instances (like :c:func:`PyTuple_SetItem` it can be used to fill-in the "
+"instances (like :c:func:`PyTuple_SetItem` it can be used to fill in the "
"values of brand new frozensets before they are exposed to other code). "
"Return ``0`` on success or ``-1`` on failure. Raise a :exc:`TypeError` if "
"the *key* is unhashable. Raise a :exc:`MemoryError` if there is no room to "
@@ -153,13 +159,13 @@ msgid ""
"`set` or its subtype."
msgstr ""
-#: c-api/set.rst:136
+#: c-api/set.rst:142
msgid ""
"The following functions are available for instances of :class:`set` or its "
"subtypes but not for instances of :class:`frozenset` or its subtypes."
msgstr ""
-#: c-api/set.rst:142
+#: c-api/set.rst:148
msgid ""
"Return ``1`` if found and removed, ``0`` if not found (no action taken), and "
"``-1`` if an error is encountered. Does not raise :exc:`KeyError` for "
@@ -170,7 +176,7 @@ msgid ""
"subtype."
msgstr ""
-#: c-api/set.rst:152
+#: c-api/set.rst:158
msgid ""
"Return a new reference to an arbitrary object in the *set*, and removes the "
"object from the *set*. Return ``NULL`` on failure. Raise :exc:`KeyError` "
@@ -178,6 +184,6 @@ msgid ""
"of :class:`set` or its subtype."
msgstr ""
-#: c-api/set.rst:160
+#: c-api/set.rst:166
msgid "Empty an existing set of all elements."
msgstr ""
diff --git a/c-api/stable.po b/c-api/stable.po
index 0acc383a21..e1f58647f1 100644
--- a/c-api/stable.po
+++ b/c-api/stable.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-08-24 09:01+0200\n"
+"POT-Creation-Date: 2021-09-23 16:16+0200\n"
"PO-Revision-Date: 2018-10-04 12:26+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: FRENCH \n"
@@ -15,83 +15,396 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: c-api/stable.rst:7
+msgid "C API Stability"
+msgstr "Stabilité de l’API C"
+
+#: c-api/stable.rst:9
+msgid ""
+"Python's C API is covered by the Backwards Compatibility Policy, :pep:`387`. "
+"While the C API will change with every minor release (e.g. from 3.9 to "
+"3.10), most changes will be source-compatible, typically by only adding new "
+"API. Changing existing API or removing API is only done after a deprecation "
+"period or to fix serious issues."
+msgstr ""
+"L'API C respecte la politique de rétrocompatibilité de Python, :pep:`387`. "
+"Malgré la présence d’évolutions dans chaque version mineure (par exemple "
+"entre 3.9 et 3.10), la majorité de ces changements n'affecte pas la "
+"compatibilité du code source. Typiquement des API sont ajoutées mais pas "
+"modifiées ou supprimées, bien que cela puisse arriver après une période de "
+"dépréciation ou pour corriger un problème important."
+
+#: c-api/stable.rst:15
+msgid ""
+"CPython's Application Binary Interface (ABI) is forward- and backwards-"
+"compatible across a minor release (if these are compiled the same way; see :"
+"ref:`stable-abi-platform` below). So, code compiled for Python 3.10.0 will "
+"work on 3.10.8 and vice versa, but will need to be compiled separately for "
+"3.9.x and 3.10.x."
+msgstr ""
+"L’interface binaire de CPython (ABI) est entièrement compatible au sein "
+"d’une version mineure (à condition que la compilation soit toujours faite de "
+"même manière, comme indiqué dans :ref:`stable-abi-platform` ci-dessous). "
+"Ainsi le code compilé pour Python 3.10.0 fonctionnera avec Python 3.10.8 et "
+"inversement, mais il devra être compilé séparément pour 3.9.x et 3.10.x."
+
+#: c-api/stable.rst:21
+msgid ""
+"Names prefixed by an underscore, such as ``_Py_InternalState``, are private "
+"API that can change without notice even in patch releases."
+msgstr ""
+"Les noms commençant par un caractère souligné, comme ``_Py_InternalState``, "
+"font partie de l’API privée et peuvent changer sans préavis même dans une "
+"version de correctif."
+
+#: c-api/stable.rst:26
msgid "Stable Application Binary Interface"
msgstr "ABI Stable"
-#: c-api/stable.rst:9
+#: c-api/stable.rst:28
+msgid ""
+"Python 3.2 introduced the *Limited API*, a subset of Python's C API. "
+"Extensions that only use the Limited API can be compiled once and work with "
+"multiple versions of Python. Contents of the Limited API are :ref:`listed "
+"below