diff --git a/.tx/config b/.tx/config
index 3eb456d8f..ad2c832c4 100644
--- a/.tx/config
+++ b/.tx/config
@@ -1,2332 +1,2332 @@
[main]
host = https://www.transifex.com
[python-36.glossary_]
-trans.fr = .tx/glossary.po
+trans.fr = glossary.po
type = PO
source_lang = en
[python-36.license]
-trans.fr = .tx/license.po
+trans.fr = license.po
type = PO
source_lang = en
[python-36.sphinx]
-trans.fr = .tx/sphinx.po
+trans.fr = sphinx.po
type = PO
source_lang = en
[python-36.about]
-trans.fr = .tx/about.po
+trans.fr = about.po
type = PO
source_lang = en
[python-36.bugs]
-trans.fr = .tx/bugs.po
+trans.fr = bugs.po
type = PO
source_lang = en
[python-36.copyright]
-trans.fr = .tx/copyright.po
+trans.fr = copyright.po
type = PO
source_lang = en
[python-36.contents]
-trans.fr = .tx/contents.po
+trans.fr = contents.po
type = PO
source_lang = en
[python-36.library--re]
-trans.fr = .tx/library/re.po
+trans.fr = library/re.po
type = PO
source_lang = en
[python-36.library--sysconfig]
-trans.fr = .tx/library/sysconfig.po
+trans.fr = library/sysconfig.po
type = PO
source_lang = en
[python-36.library--getpass]
-trans.fr = .tx/library/getpass.po
+trans.fr = library/getpass.po
type = PO
source_lang = en
[python-36.library--imghdr]
-trans.fr = .tx/library/imghdr.po
+trans.fr = library/imghdr.po
type = PO
source_lang = en
[python-36.library--zipapp]
-trans.fr = .tx/library/zipapp.po
+trans.fr = library/zipapp.po
type = PO
source_lang = en
[python-36.library--urllib_error]
-trans.fr = .tx/library/urllib.error.po
+trans.fr = library/urllib.error.po
type = PO
source_lang = en
[python-36.library--urllib_parse]
-trans.fr = .tx/library/urllib.parse.po
+trans.fr = library/urllib.parse.po
type = PO
source_lang = en
[python-36.library--xml_sax_utils]
-trans.fr = .tx/library/xml.sax.utils.po
+trans.fr = library/xml.sax.utils.po
type = PO
source_lang = en
[python-36.library--mmap]
-trans.fr = .tx/library/mmap.po
+trans.fr = library/mmap.po
type = PO
source_lang = en
[python-36.library--difflib]
-trans.fr = .tx/library/difflib.po
+trans.fr = library/difflib.po
type = PO
source_lang = en
[python-36.library--tkinter_scrolledtext]
-trans.fr = .tx/library/tkinter.scrolledtext.po
+trans.fr = library/tkinter.scrolledtext.po
type = PO
source_lang = en
[python-36.library--parser]
-trans.fr = .tx/library/parser.po
+trans.fr = library/parser.po
type = PO
source_lang = en
[python-36.library--pyexpat]
-trans.fr = .tx/library/pyexpat.po
+trans.fr = library/pyexpat.po
type = PO
source_lang = en
[python-36.library--curses_panel]
-trans.fr = .tx/library/curses.panel.po
+trans.fr = library/curses.panel.po
type = PO
source_lang = en
[python-36.library--fractions]
-trans.fr = .tx/library/fractions.po
+trans.fr = library/fractions.po
type = PO
source_lang = en
[python-36.library--asyncio-subprocess]
-trans.fr = .tx/library/asyncio-subprocess.po
+trans.fr = library/asyncio-subprocess.po
type = PO
source_lang = en
[python-36.library--compileall]
-trans.fr = .tx/library/compileall.po
+trans.fr = library/compileall.po
type = PO
source_lang = en
[python-36.library--optparse]
-trans.fr = .tx/library/optparse.po
+trans.fr = library/optparse.po
type = PO
source_lang = en
[python-36.library--imp]
-trans.fr = .tx/library/imp.po
+trans.fr = library/imp.po
type = PO
source_lang = en
[python-36.library--locale]
-trans.fr = .tx/library/locale.po
+trans.fr = library/locale.po
type = PO
source_lang = en
[python-36.library--ctypes]
-trans.fr = .tx/library/ctypes.po
+trans.fr = library/ctypes.po
type = PO
source_lang = en
[python-36.library--doctest]
-trans.fr = .tx/library/doctest.po
+trans.fr = library/doctest.po
type = PO
source_lang = en
[python-36.library--distribution]
-trans.fr = .tx/library/distribution.po
+trans.fr = library/distribution.po
type = PO
source_lang = en
[python-36.library--ipc]
-trans.fr = .tx/library/ipc.po
+trans.fr = library/ipc.po
type = PO
source_lang = en
[python-36.library--numeric]
-trans.fr = .tx/library/numeric.po
+trans.fr = library/numeric.po
type = PO
source_lang = en
[python-36.library--email_headerregistry]
-trans.fr = .tx/library/email.headerregistry.po
+trans.fr = library/email.headerregistry.po
type = PO
source_lang = en
[python-36.library--wave]
-trans.fr = .tx/library/wave.po
+trans.fr = library/wave.po
type = PO
source_lang = en
[python-36.library--email_errors]
-trans.fr = .tx/library/email.errors.po
+trans.fr = library/email.errors.po
type = PO
source_lang = en
[python-36.library--sunau]
-trans.fr = .tx/library/sunau.po
+trans.fr = library/sunau.po
type = PO
source_lang = en
[python-36.library--datetime]
-trans.fr = .tx/library/datetime.po
+trans.fr = library/datetime.po
type = PO
source_lang = en
[python-36.library--macpath]
-trans.fr = .tx/library/macpath.po
+trans.fr = library/macpath.po
type = PO
source_lang = en
[python-36.library--unix]
-trans.fr = .tx/library/unix.po
+trans.fr = library/unix.po
type = PO
source_lang = en
[python-36.library--array]
-trans.fr = .tx/library/array.po
+trans.fr = library/array.po
type = PO
source_lang = en
[python-36.library--email_policy]
-trans.fr = .tx/library/email.policy.po
+trans.fr = library/email.policy.po
type = PO
source_lang = en
[python-36.library--sched]
-trans.fr = .tx/library/sched.po
+trans.fr = library/sched.po
type = PO
source_lang = en
[python-36.library--http_cookies]
-trans.fr = .tx/library/http.cookies.po
+trans.fr = library/http.cookies.po
type = PO
source_lang = en
[python-36.library--shutil]
-trans.fr = .tx/library/shutil.po
+trans.fr = library/shutil.po
type = PO
source_lang = en
[python-36.library--symbol]
-trans.fr = .tx/library/symbol.po
+trans.fr = library/symbol.po
type = PO
source_lang = en
[python-36.library--xml_dom_minidom]
-trans.fr = .tx/library/xml.dom.minidom.po
+trans.fr = library/xml.dom.minidom.po
type = PO
source_lang = en
[python-36.library--modules]
-trans.fr = .tx/library/modules.po
+trans.fr = library/modules.po
type = PO
source_lang = en
[python-36.library--unicodedata]
-trans.fr = .tx/library/unicodedata.po
+trans.fr = library/unicodedata.po
type = PO
source_lang = en
[python-36.library--tkinter_ttk]
-trans.fr = .tx/library/tkinter.ttk.po
+trans.fr = library/tkinter.ttk.po
type = PO
source_lang = en
[python-36.library--binascii]
-trans.fr = .tx/library/binascii.po
+trans.fr = library/binascii.po
type = PO
source_lang = en
[python-36.library--linecache]
-trans.fr = .tx/library/linecache.po
+trans.fr = library/linecache.po
type = PO
source_lang = en
[python-36.library--functools]
-trans.fr = .tx/library/functools.po
+trans.fr = library/functools.po
type = PO
source_lang = en
[python-36.library--xml_sax_reader]
-trans.fr = .tx/library/xml.sax.reader.po
+trans.fr = library/xml.sax.reader.po
type = PO
source_lang = en
[python-36.library--pydoc]
-trans.fr = .tx/library/pydoc.po
+trans.fr = library/pydoc.po
type = PO
source_lang = en
[python-36.library--pwd]
-trans.fr = .tx/library/pwd.po
+trans.fr = library/pwd.po
type = PO
source_lang = en
[python-36.library--selectors]
-trans.fr = .tx/library/selectors.po
+trans.fr = library/selectors.po
type = PO
source_lang = en
[python-36.library--os_path]
-trans.fr = .tx/library/os.path.po
+trans.fr = library/os.path.po
type = PO
source_lang = en
[python-36.library--asyncio-sync]
-trans.fr = .tx/library/asyncio-sync.po
+trans.fr = library/asyncio-sync.po
type = PO
source_lang = en
[python-36.library--_dummy_thread]
-trans.fr = .tx/library/_dummy_thread.po
+trans.fr = library/_dummy_thread.po
type = PO
source_lang = en
[python-36.library--fcntl]
-trans.fr = .tx/library/fcntl.po
+trans.fr = library/fcntl.po
type = PO
source_lang = en
[python-36.library--constants]
-trans.fr = .tx/library/constants.po
+trans.fr = library/constants.po
type = PO
source_lang = en
[python-36.library--statistics]
-trans.fr = .tx/library/statistics.po
+trans.fr = library/statistics.po
type = PO
source_lang = en
[python-36.library--pty]
-trans.fr = .tx/library/pty.po
+trans.fr = library/pty.po
type = PO
source_lang = en
[python-36.library--crypto]
-trans.fr = .tx/library/crypto.po
+trans.fr = library/crypto.po
type = PO
source_lang = en
[python-36.library--xml]
-trans.fr = .tx/library/xml.po
+trans.fr = library/xml.po
type = PO
source_lang = en
[python-36.library--imaplib]
-trans.fr = .tx/library/imaplib.po
+trans.fr = library/imaplib.po
type = PO
source_lang = en
[python-36.library--text]
-trans.fr = .tx/library/text.po
+trans.fr = library/text.po
type = PO
source_lang = en
[python-36.library--mm]
-trans.fr = .tx/library/mm.po
+trans.fr = library/mm.po
type = PO
source_lang = en
[python-36.library--tempfile]
-trans.fr = .tx/library/tempfile.po
+trans.fr = library/tempfile.po
type = PO
source_lang = en
[python-36.library--traceback]
-trans.fr = .tx/library/traceback.po
+trans.fr = library/traceback.po
type = PO
source_lang = en
[python-36.library--itertools]
-trans.fr = .tx/library/itertools.po
+trans.fr = library/itertools.po
type = PO
source_lang = en
[python-36.library--__future__]
-trans.fr = .tx/library/__future__.po
+trans.fr = library/__future__.po
type = PO
source_lang = en
[python-36.library--csv]
-trans.fr = .tx/library/csv.po
+trans.fr = library/csv.po
type = PO
source_lang = en
[python-36.library--stringprep]
-trans.fr = .tx/library/stringprep.po
+trans.fr = library/stringprep.po
type = PO
source_lang = en
[python-36.library--development]
-trans.fr = .tx/library/development.po
+trans.fr = library/development.po
type = PO
source_lang = en
[python-36.library--platform]
-trans.fr = .tx/library/platform.po
+trans.fr = library/platform.po
type = PO
source_lang = en
[python-36.library--time]
-trans.fr = .tx/library/time.po
+trans.fr = library/time.po
type = PO
source_lang = en
[python-36.library--pyclbr]
-trans.fr = .tx/library/pyclbr.po
+trans.fr = library/pyclbr.po
type = PO
source_lang = en
[python-36.library--crypt]
-trans.fr = .tx/library/crypt.po
+trans.fr = library/crypt.po
type = PO
source_lang = en
[python-36.library--token]
-trans.fr = .tx/library/token.po
+trans.fr = library/token.po
type = PO
source_lang = en
[python-36.library--spwd]
-trans.fr = .tx/library/spwd.po
+trans.fr = library/spwd.po
type = PO
source_lang = en
[python-36.library--modulefinder]
-trans.fr = .tx/library/modulefinder.po
+trans.fr = library/modulefinder.po
type = PO
source_lang = en
[python-36.library--argparse]
-trans.fr = .tx/library/argparse.po
+trans.fr = library/argparse.po
type = PO
source_lang = en
[python-36.library--collections]
-trans.fr = .tx/library/collections.po
+trans.fr = library/collections.po
type = PO
source_lang = en
[python-36.library--http]
-trans.fr = .tx/library/http.po
+trans.fr = library/http.po
type = PO
source_lang = en
[python-36.library--email]
-trans.fr = .tx/library/email.po
+trans.fr = library/email.po
type = PO
source_lang = en
[python-36.library--http_cookiejar]
-trans.fr = .tx/library/http.cookiejar.po
+trans.fr = library/http.cookiejar.po
type = PO
source_lang = en
[python-36.library--cmd]
-trans.fr = .tx/library/cmd.po
+trans.fr = library/cmd.po
type = PO
source_lang = en
[python-36.library--xml_dom_pulldom]
-trans.fr = .tx/library/xml.dom.pulldom.po
+trans.fr = library/xml.dom.pulldom.po
type = PO
source_lang = en
[python-36.library--glob]
-trans.fr = .tx/library/glob.po
+trans.fr = library/glob.po
type = PO
source_lang = en
[python-36.library--keyword]
-trans.fr = .tx/library/keyword.po
+trans.fr = library/keyword.po
type = PO
source_lang = en
[python-36.library--concurrency]
-trans.fr = .tx/library/concurrency.po
+trans.fr = library/concurrency.po
type = PO
source_lang = en
[python-36.library--atexit]
-trans.fr = .tx/library/atexit.po
+trans.fr = library/atexit.po
type = PO
source_lang = en
[python-36.library--py_compile]
-trans.fr = .tx/library/py_compile.po
+trans.fr = library/py_compile.po
type = PO
source_lang = en
[python-36.library--email_encoders]
-trans.fr = .tx/library/email.encoders.po
+trans.fr = library/email.encoders.po
type = PO
source_lang = en
[python-36.library--inspect]
-trans.fr = .tx/library/inspect.po
+trans.fr = library/inspect.po
type = PO
source_lang = en
[python-36.library--unittest_mock]
-trans.fr = .tx/library/unittest.mock.po
+trans.fr = library/unittest.mock.po
type = PO
source_lang = en
[python-36.library--asyncio-eventloops]
-trans.fr = .tx/library/asyncio-eventloops.po
+trans.fr = library/asyncio-eventloops.po
type = PO
source_lang = en
[python-36.library--allos]
-trans.fr = .tx/library/allos.po
+trans.fr = library/allos.po
type = PO
source_lang = en
[python-36.library--stat]
-trans.fr = .tx/library/stat.po
+trans.fr = library/stat.po
type = PO
source_lang = en
[python-36.library--curses]
-trans.fr = .tx/library/curses.po
+trans.fr = library/curses.po
type = PO
source_lang = en
[python-36.library--persistence]
-trans.fr = .tx/library/persistence.po
+trans.fr = library/persistence.po
type = PO
source_lang = en
[python-36.library--trace]
-trans.fr = .tx/library/trace.po
+trans.fr = library/trace.po
type = PO
source_lang = en
[python-36.library--zipfile]
-trans.fr = .tx/library/zipfile.po
+trans.fr = library/zipfile.po
type = PO
source_lang = en
[python-36.library--mimetypes]
-trans.fr = .tx/library/mimetypes.po
+trans.fr = library/mimetypes.po
type = PO
source_lang = en
[python-36.library--superseded]
-trans.fr = .tx/library/superseded.po
+trans.fr = library/superseded.po
type = PO
source_lang = en
[python-36.library--internet]
-trans.fr = .tx/library/internet.po
+trans.fr = library/internet.po
type = PO
source_lang = en
[python-36.library--poplib]
-trans.fr = .tx/library/poplib.po
+trans.fr = library/poplib.po
type = PO
source_lang = en
[python-36.library--language]
-trans.fr = .tx/library/language.po
+trans.fr = library/language.po
type = PO
source_lang = en
[python-36.library--string]
-trans.fr = .tx/library/string.po
+trans.fr = library/string.po
type = PO
source_lang = en
[python-36.library--mailcap]
-trans.fr = .tx/library/mailcap.po
+trans.fr = library/mailcap.po
type = PO
source_lang = en
[python-36.library--email_parser]
-trans.fr = .tx/library/email.parser.po
+trans.fr = library/email.parser.po
type = PO
source_lang = en
[python-36.library--bz2]
-trans.fr = .tx/library/bz2.po
+trans.fr = library/bz2.po
type = PO
source_lang = en
[python-36.library--builtins]
-trans.fr = .tx/library/builtins.po
+trans.fr = library/builtins.po
type = PO
source_lang = en
[python-36.library--logging_config]
-trans.fr = .tx/library/logging.config.po
+trans.fr = library/logging.config.po
type = PO
source_lang = en
[python-36.library--xml_sax_handler]
-trans.fr = .tx/library/xml.sax.handler.po
+trans.fr = library/xml.sax.handler.po
type = PO
source_lang = en
[python-36.library--intro]
-trans.fr = .tx/library/intro.po
+trans.fr = library/intro.po
type = PO
source_lang = en
[python-36.library--python]
-trans.fr = .tx/library/python.po
+trans.fr = library/python.po
type = PO
source_lang = en
[python-36.library--tarfile]
-trans.fr = .tx/library/tarfile.po
+trans.fr = library/tarfile.po
type = PO
source_lang = en
[python-36.library--fnmatch]
-trans.fr = .tx/library/fnmatch.po
+trans.fr = library/fnmatch.po
type = PO
source_lang = en
[python-36.library--tty]
-trans.fr = .tx/library/tty.po
+trans.fr = library/tty.po
type = PO
source_lang = en
[python-36.library--signal]
-trans.fr = .tx/library/signal.po
+trans.fr = library/signal.po
type = PO
source_lang = en
[python-36.library--contextlib]
-trans.fr = .tx/library/contextlib.po
+trans.fr = library/contextlib.po
type = PO
source_lang = en
[python-36.library--pkgutil]
-trans.fr = .tx/library/pkgutil.po
+trans.fr = library/pkgutil.po
type = PO
source_lang = en
[python-36.library--codeop]
-trans.fr = .tx/library/codeop.po
+trans.fr = library/codeop.po
type = PO
source_lang = en
[python-36.library--gettext]
-trans.fr = .tx/library/gettext.po
+trans.fr = library/gettext.po
type = PO
source_lang = en
[python-36.library--enum]
-trans.fr = .tx/library/enum.po
+trans.fr = library/enum.po
type = PO
source_lang = en
[python-36.library--decimal]
-trans.fr = .tx/library/decimal.po
+trans.fr = library/decimal.po
type = PO
source_lang = en
[python-36.library--asyncio]
-trans.fr = .tx/library/asyncio.po
+trans.fr = library/asyncio.po
type = PO
source_lang = en
[python-36.library--windows]
-trans.fr = .tx/library/windows.po
+trans.fr = library/windows.po
type = PO
source_lang = en
[python-36.library--urllib_request]
-trans.fr = .tx/library/urllib.request.po
+trans.fr = library/urllib.request.po
type = PO
source_lang = en
[python-36.library--socket]
-trans.fr = .tx/library/socket.po
+trans.fr = library/socket.po
type = PO
source_lang = en
[python-36.library--mailbox]
-trans.fr = .tx/library/mailbox.po
+trans.fr = library/mailbox.po
type = PO
source_lang = en
[python-36.library--rlcompleter]
-trans.fr = .tx/library/rlcompleter.po
+trans.fr = library/rlcompleter.po
type = PO
source_lang = en
[python-36.library--gzip]
-trans.fr = .tx/library/gzip.po
+trans.fr = library/gzip.po
type = PO
source_lang = en
[python-36.library--http_client]
-trans.fr = .tx/library/http.client.po
+trans.fr = library/http.client.po
type = PO
source_lang = en
[python-36.library--pickle]
-trans.fr = .tx/library/pickle.po
+trans.fr = library/pickle.po
type = PO
source_lang = en
[python-36.library--concurrent]
-trans.fr = .tx/library/concurrent.po
+trans.fr = library/concurrent.po
type = PO
source_lang = en
[python-36.library--timeit]
-trans.fr = .tx/library/timeit.po
+trans.fr = library/timeit.po
type = PO
source_lang = en
[python-36.library--tkinter_tix]
-trans.fr = .tx/library/tkinter.tix.po
+trans.fr = library/tkinter.tix.po
type = PO
source_lang = en
[python-36.library--readline]
-trans.fr = .tx/library/readline.po
+trans.fr = library/readline.po
type = PO
source_lang = en
[python-36.library--netrc]
-trans.fr = .tx/library/netrc.po
+trans.fr = library/netrc.po
type = PO
source_lang = en
[python-36.library--asyncio-dev]
-trans.fr = .tx/library/asyncio-dev.po
+trans.fr = library/asyncio-dev.po
type = PO
source_lang = en
[python-36.library--email_charset]
-trans.fr = .tx/library/email.charset.po
+trans.fr = library/email.charset.po
type = PO
source_lang = en
[python-36.library--venv]
-trans.fr = .tx/library/venv.po
+trans.fr = library/venv.po
type = PO
source_lang = en
[python-36.library--struct]
-trans.fr = .tx/library/struct.po
+trans.fr = library/struct.po
type = PO
source_lang = en
[python-36.library--dbm]
-trans.fr = .tx/library/dbm.po
+trans.fr = library/dbm.po
type = PO
source_lang = en
[python-36.library--xdrlib]
-trans.fr = .tx/library/xdrlib.po
+trans.fr = library/xdrlib.po
type = PO
source_lang = en
[python-36.library--markup]
-trans.fr = .tx/library/markup.po
+trans.fr = library/markup.po
type = PO
source_lang = en
[python-36.library--dummy_threading]
-trans.fr = .tx/library/dummy_threading.po
+trans.fr = library/dummy_threading.po
type = PO
source_lang = en
[python-36.library--xml_dom]
-trans.fr = .tx/library/xml.dom.po
+trans.fr = library/xml.dom.po
type = PO
source_lang = en
[python-36.library--smtpd]
-trans.fr = .tx/library/smtpd.po
+trans.fr = library/smtpd.po
type = PO
source_lang = en
[python-36.library--idle]
-trans.fr = .tx/library/idle.po
+trans.fr = library/idle.po
type = PO
source_lang = en
[python-36.library--pipes]
-trans.fr = .tx/library/pipes.po
+trans.fr = library/pipes.po
type = PO
source_lang = en
[python-36.library--chunk]
-trans.fr = .tx/library/chunk.po
+trans.fr = library/chunk.po
type = PO
source_lang = en
[python-36.library--telnetlib]
-trans.fr = .tx/library/telnetlib.po
+trans.fr = library/telnetlib.po
type = PO
source_lang = en
[python-36.library--filesys]
-trans.fr = .tx/library/filesys.po
+trans.fr = library/filesys.po
type = PO
source_lang = en
[python-36.library--asynchat]
-trans.fr = .tx/library/asynchat.po
+trans.fr = library/asynchat.po
type = PO
source_lang = en
[python-36.library--numbers]
-trans.fr = .tx/library/numbers.po
+trans.fr = library/numbers.po
type = PO
source_lang = en
[python-36.library--xmlrpc_server]
-trans.fr = .tx/library/xmlrpc.server.po
+trans.fr = library/xmlrpc.server.po
type = PO
source_lang = en
[python-36.library--plistlib]
-trans.fr = .tx/library/plistlib.po
+trans.fr = library/plistlib.po
type = PO
source_lang = en
[python-36.library--secrets]
-trans.fr = .tx/library/secrets.po
+trans.fr = library/secrets.po
type = PO
source_lang = en
[python-36.library--marshal]
-trans.fr = .tx/library/marshal.po
+trans.fr = library/marshal.po
type = PO
source_lang = en
[python-36.library--html_parser]
-trans.fr = .tx/library/html.parser.po
+trans.fr = library/html.parser.po
type = PO
source_lang = en
[python-36.library--netdata]
-trans.fr = .tx/library/netdata.po
+trans.fr = library/netdata.po
type = PO
source_lang = en
[python-36.library--gc]
-trans.fr = .tx/library/gc.po
+trans.fr = library/gc.po
type = PO
source_lang = en
[python-36.library--fileformats]
-trans.fr = .tx/library/fileformats.po
+trans.fr = library/fileformats.po
type = PO
source_lang = en
[python-36.library--bisect]
-trans.fr = .tx/library/bisect.po
+trans.fr = library/bisect.po
type = PO
source_lang = en
[python-36.library--symtable]
-trans.fr = .tx/library/symtable.po
+trans.fr = library/symtable.po
type = PO
source_lang = en
[python-36.library--nis]
-trans.fr = .tx/library/nis.po
+trans.fr = library/nis.po
type = PO
source_lang = en
[python-36.library--html]
-trans.fr = .tx/library/html.po
+trans.fr = library/html.po
type = PO
source_lang = en
[python-36.library--typing]
-trans.fr = .tx/library/typing.po
+trans.fr = library/typing.po
type = PO
source_lang = en
[python-36.library--weakref]
-trans.fr = .tx/library/weakref.po
+trans.fr = library/weakref.po
type = PO
source_lang = en
[python-36.library--shlex]
-trans.fr = .tx/library/shlex.po
+trans.fr = library/shlex.po
type = PO
source_lang = en
[python-36.library--binary]
-trans.fr = .tx/library/binary.po
+trans.fr = library/binary.po
type = PO
source_lang = en
[python-36.library--distutils]
-trans.fr = .tx/library/distutils.po
+trans.fr = library/distutils.po
type = PO
source_lang = en
[python-36.library--email_generator]
-trans.fr = .tx/library/email.generator.po
+trans.fr = library/email.generator.po
type = PO
source_lang = en
[python-36.library--ensurepip]
-trans.fr = .tx/library/ensurepip.po
+trans.fr = library/ensurepip.po
type = PO
source_lang = en
[python-36.library--importlib]
-trans.fr = .tx/library/importlib.po
+trans.fr = library/importlib.po
type = PO
source_lang = en
[python-36.library--warnings]
-trans.fr = .tx/library/warnings.po
+trans.fr = library/warnings.po
type = PO
source_lang = en
[python-36.library--tabnanny]
-trans.fr = .tx/library/tabnanny.po
+trans.fr = library/tabnanny.po
type = PO
source_lang = en
[python-36.library--json]
-trans.fr = .tx/library/json.po
+trans.fr = library/json.po
type = PO
source_lang = en
[python-36.library--reprlib]
-trans.fr = .tx/library/reprlib.po
+trans.fr = library/reprlib.po
type = PO
source_lang = en
[python-36.library--concurrent_futures]
-trans.fr = .tx/library/concurrent.futures.po
+trans.fr = library/concurrent.futures.po
type = PO
source_lang = en
[python-36.library--tk]
-trans.fr = .tx/library/tk.po
+trans.fr = library/tk.po
type = PO
source_lang = en
[python-36.library--abc]
-trans.fr = .tx/library/abc.po
+trans.fr = library/abc.po
type = PO
source_lang = en
[python-36.library--filecmp]
-trans.fr = .tx/library/filecmp.po
+trans.fr = library/filecmp.po
type = PO
source_lang = en
[python-36.library--undoc]
-trans.fr = .tx/library/undoc.po
+trans.fr = library/undoc.po
type = PO
source_lang = en
[python-36.library--functions]
-trans.fr = .tx/library/functions.po
+trans.fr = library/functions.po
type = PO
source_lang = en
[python-36.library--unittest_mock-examples]
-trans.fr = .tx/library/unittest.mock-examples.po
+trans.fr = library/unittest.mock-examples.po
type = PO
source_lang = en
[python-36.library--heapq]
-trans.fr = .tx/library/heapq.po
+trans.fr = library/heapq.po
type = PO
source_lang = en
[python-36.library--termios]
-trans.fr = .tx/library/termios.po
+trans.fr = library/termios.po
type = PO
source_lang = en
[python-36.library--errno]
-trans.fr = .tx/library/errno.po
+trans.fr = library/errno.po
type = PO
source_lang = en
[python-36.library--calendar]
-trans.fr = .tx/library/calendar.po
+trans.fr = library/calendar.po
type = PO
source_lang = en
[python-36.library--configparser]
-trans.fr = .tx/library/configparser.po
+trans.fr = library/configparser.po
type = PO
source_lang = en
[python-36.library--unittest]
-trans.fr = .tx/library/unittest.po
+trans.fr = library/unittest.po
type = PO
source_lang = en
[python-36.library--socketserver]
-trans.fr = .tx/library/socketserver.po
+trans.fr = library/socketserver.po
type = PO
source_lang = en
[python-36.library--tokenize]
-trans.fr = .tx/library/tokenize.po
+trans.fr = library/tokenize.po
type = PO
source_lang = en
[python-36.library--random]
-trans.fr = .tx/library/random.po
+trans.fr = library/random.po
type = PO
source_lang = en
[python-36.library--code]
-trans.fr = .tx/library/code.po
+trans.fr = library/code.po
type = PO
source_lang = en
[python-36.library--sqlite3]
-trans.fr = .tx/library/sqlite3.po
+trans.fr = library/sqlite3.po
type = PO
source_lang = en
[python-36.library--colorsys]
-trans.fr = .tx/library/colorsys.po
+trans.fr = library/colorsys.po
type = PO
source_lang = en
[python-36.library--quopri]
-trans.fr = .tx/library/quopri.po
+trans.fr = library/quopri.po
type = PO
source_lang = en
[python-36.library--dis]
-trans.fr = .tx/library/dis.po
+trans.fr = library/dis.po
type = PO
source_lang = en
[python-36.library--stdtypes]
-trans.fr = .tx/library/stdtypes.po
+trans.fr = library/stdtypes.po
type = PO
source_lang = en
[python-36.library--tracemalloc]
-trans.fr = .tx/library/tracemalloc.po
+trans.fr = library/tracemalloc.po
type = PO
source_lang = en
[python-36.library--queue]
-trans.fr = .tx/library/queue.po
+trans.fr = library/queue.po
type = PO
source_lang = en
[python-36.library--posix]
-trans.fr = .tx/library/posix.po
+trans.fr = library/posix.po
type = PO
source_lang = en
[python-36.library--turtle]
-trans.fr = .tx/library/turtle.po
+trans.fr = library/turtle.po
type = PO
source_lang = en
[python-36.library--faulthandler]
-trans.fr = .tx/library/faulthandler.po
+trans.fr = library/faulthandler.po
type = PO
source_lang = en
[python-36.library--email_examples]
-trans.fr = .tx/library/email.examples.po
+trans.fr = library/email.examples.po
type = PO
source_lang = en
[python-36.library--base64]
-trans.fr = .tx/library/base64.po
+trans.fr = library/base64.po
type = PO
source_lang = en
[python-36.library--index]
-trans.fr = .tx/library/index.po
+trans.fr = library/index.po
type = PO
source_lang = en
[python-36.library--email_message]
-trans.fr = .tx/library/email.message.po
+trans.fr = library/email.message.po
type = PO
source_lang = en
[python-36.library--xml_etree_elementtree]
-trans.fr = .tx/library/xml.etree.elementtree.po
+trans.fr = library/xml.etree.elementtree.po
type = PO
source_lang = en
[python-36.library--asyncio-task]
-trans.fr = .tx/library/asyncio-task.po
+trans.fr = library/asyncio-task.po
type = PO
source_lang = en
[python-36.library--asyncore]
-trans.fr = .tx/library/asyncore.po
+trans.fr = library/asyncore.po
type = PO
source_lang = en
[python-36.library--uu]
-trans.fr = .tx/library/uu.po
+trans.fr = library/uu.po
type = PO
source_lang = en
[python-36.library--urllib_robotparser]
-trans.fr = .tx/library/urllib.robotparser.po
+trans.fr = library/urllib.robotparser.po
type = PO
source_lang = en
[python-36.library--cgitb]
-trans.fr = .tx/library/cgitb.po
+trans.fr = library/cgitb.po
type = PO
source_lang = en
[python-36.library--pathlib]
-trans.fr = .tx/library/pathlib.po
+trans.fr = library/pathlib.po
type = PO
source_lang = en
[python-36.library--misc]
-trans.fr = .tx/library/misc.po
+trans.fr = library/misc.po
type = PO
source_lang = en
[python-36.library--_thread]
-trans.fr = .tx/library/_thread.po
+trans.fr = library/_thread.po
type = PO
source_lang = en
[python-36.library--email_header]
-trans.fr = .tx/library/email.header.po
+trans.fr = library/email.header.po
type = PO
source_lang = en
[python-36.library--runpy]
-trans.fr = .tx/library/runpy.po
+trans.fr = library/runpy.po
type = PO
source_lang = en
[python-36.library--asyncio-eventloop]
-trans.fr = .tx/library/asyncio-eventloop.po
+trans.fr = library/asyncio-eventloop.po
type = PO
source_lang = en
[python-36.library--textwrap]
-trans.fr = .tx/library/textwrap.po
+trans.fr = library/textwrap.po
type = PO
source_lang = en
[python-36.library--msilib]
-trans.fr = .tx/library/msilib.po
+trans.fr = library/msilib.po
type = PO
source_lang = en
[python-36.library--debug]
-trans.fr = .tx/library/debug.po
+trans.fr = library/debug.po
type = PO
source_lang = en
[python-36.library--nntplib]
-trans.fr = .tx/library/nntplib.po
+trans.fr = library/nntplib.po
type = PO
source_lang = en
[python-36.library--ast]
-trans.fr = .tx/library/ast.po
+trans.fr = library/ast.po
type = PO
source_lang = en
[python-36.library--site]
-trans.fr = .tx/library/site.po
+trans.fr = library/site.po
type = PO
source_lang = en
[python-36.library--uuid]
-trans.fr = .tx/library/uuid.po
+trans.fr = library/uuid.po
type = PO
source_lang = en
[python-36.library--email_iterators]
-trans.fr = .tx/library/email.iterators.po
+trans.fr = library/email.iterators.po
type = PO
source_lang = en
[python-36.library--threading]
-trans.fr = .tx/library/threading.po
+trans.fr = library/threading.po
type = PO
source_lang = en
[python-36.library--email_mime]
-trans.fr = .tx/library/email.mime.po
+trans.fr = library/email.mime.po
type = PO
source_lang = en
[python-36.library--shelve]
-trans.fr = .tx/library/shelve.po
+trans.fr = library/shelve.po
type = PO
source_lang = en
[python-36.library--profile]
-trans.fr = .tx/library/profile.po
+trans.fr = library/profile.po
type = PO
source_lang = en
[python-36.library--math]
-trans.fr = .tx/library/math.po
+trans.fr = library/math.po
type = PO
source_lang = en
[python-36.library--fileinput]
-trans.fr = .tx/library/fileinput.po
+trans.fr = library/fileinput.po
type = PO
source_lang = en
[python-36.library--select]
-trans.fr = .tx/library/select.po
+trans.fr = library/select.po
type = PO
source_lang = en
[python-36.library--pprint]
-trans.fr = .tx/library/pprint.po
+trans.fr = library/pprint.po
type = PO
source_lang = en
[python-36.library--datatypes]
-trans.fr = .tx/library/datatypes.po
+trans.fr = library/datatypes.po
type = PO
source_lang = en
[python-36.library--ssl]
-trans.fr = .tx/library/ssl.po
+trans.fr = library/ssl.po
type = PO
source_lang = en
[python-36.library--asyncio-queue]
-trans.fr = .tx/library/asyncio-queue.po
+trans.fr = library/asyncio-queue.po
type = PO
source_lang = en
[python-36.library--binhex]
-trans.fr = .tx/library/binhex.po
+trans.fr = library/binhex.po
type = PO
source_lang = en
[python-36.library--io]
-trans.fr = .tx/library/io.po
+trans.fr = library/io.po
type = PO
source_lang = en
[python-36.library--asyncio-protocol]
-trans.fr = .tx/library/asyncio-protocol.po
+trans.fr = library/asyncio-protocol.po
type = PO
source_lang = en
[python-36.library--othergui]
-trans.fr = .tx/library/othergui.po
+trans.fr = library/othergui.po
type = PO
source_lang = en
[python-36.library--webbrowser]
-trans.fr = .tx/library/webbrowser.po
+trans.fr = library/webbrowser.po
type = PO
source_lang = en
[python-36.library--hmac]
-trans.fr = .tx/library/hmac.po
+trans.fr = library/hmac.po
type = PO
source_lang = en
[python-36.library--collections_abc]
-trans.fr = .tx/library/collections.abc.po
+trans.fr = library/collections.abc.po
type = PO
source_lang = en
[python-36.library--ftplib]
-trans.fr = .tx/library/ftplib.po
+trans.fr = library/ftplib.po
type = PO
source_lang = en
[python-36.library--multiprocessing]
-trans.fr = .tx/library/multiprocessing.po
+trans.fr = library/multiprocessing.po
type = PO
source_lang = en
[python-36.library--types]
-trans.fr = .tx/library/types.po
+trans.fr = library/types.po
type = PO
source_lang = en
[python-36.library--ipaddress]
-trans.fr = .tx/library/ipaddress.po
+trans.fr = library/ipaddress.po
type = PO
source_lang = en
[python-36.library--fpectl]
-trans.fr = .tx/library/fpectl.po
+trans.fr = library/fpectl.po
type = PO
source_lang = en
[python-36.library--exceptions]
-trans.fr = .tx/library/exceptions.po
+trans.fr = library/exceptions.po
type = PO
source_lang = en
[python-36.library--asyncio-stream]
-trans.fr = .tx/library/asyncio-stream.po
+trans.fr = library/asyncio-stream.po
type = PO
source_lang = en
[python-36.library--custominterp]
-trans.fr = .tx/library/custominterp.po
+trans.fr = library/custominterp.po
type = PO
source_lang = en
[python-36.library--codecs]
-trans.fr = .tx/library/codecs.po
+trans.fr = library/codecs.po
type = PO
source_lang = en
[python-36.library--bdb]
-trans.fr = .tx/library/bdb.po
+trans.fr = library/bdb.po
type = PO
source_lang = en
[python-36.library--archiving]
-trans.fr = .tx/library/archiving.po
+trans.fr = library/archiving.po
type = PO
source_lang = en
[python-36.library--hashlib]
-trans.fr = .tx/library/hashlib.po
+trans.fr = library/hashlib.po
type = PO
source_lang = en
[python-36.library--tkinter]
-trans.fr = .tx/library/tkinter.po
+trans.fr = library/tkinter.po
type = PO
source_lang = en
[python-36.library--sys]
-trans.fr = .tx/library/sys.po
+trans.fr = library/sys.po
type = PO
source_lang = en
[python-36.library--cmath]
-trans.fr = .tx/library/cmath.po
+trans.fr = library/cmath.po
type = PO
source_lang = en
[python-36.library--functional]
-trans.fr = .tx/library/functional.po
+trans.fr = library/functional.po
type = PO
source_lang = en
[python-36.library--html_entities]
-trans.fr = .tx/library/html.entities.po
+trans.fr = library/html.entities.po
type = PO
source_lang = en
[python-36.library--resource]
-trans.fr = .tx/library/resource.po
+trans.fr = library/resource.po
type = PO
source_lang = en
[python-36.library--pickletools]
-trans.fr = .tx/library/pickletools.po
+trans.fr = library/pickletools.po
type = PO
source_lang = en
[python-36.library--email_util]
-trans.fr = .tx/library/email.util.po
+trans.fr = library/email.util.po
type = PO
source_lang = en
[python-36.library--xmlrpc]
-trans.fr = .tx/library/xmlrpc.po
+trans.fr = library/xmlrpc.po
type = PO
source_lang = en
[python-36.library--lzma]
-trans.fr = .tx/library/lzma.po
+trans.fr = library/lzma.po
type = PO
source_lang = en
[python-36.library--syslog]
-trans.fr = .tx/library/syslog.po
+trans.fr = library/syslog.po
type = PO
source_lang = en
[python-36.library--subprocess]
-trans.fr = .tx/library/subprocess.po
+trans.fr = library/subprocess.po
type = PO
source_lang = en
[python-36.library--pdb]
-trans.fr = .tx/library/pdb.po
+trans.fr = library/pdb.po
type = PO
source_lang = en
[python-36.library--wsgiref]
-trans.fr = .tx/library/wsgiref.po
+trans.fr = library/wsgiref.po
type = PO
source_lang = en
[python-36.library--formatter]
-trans.fr = .tx/library/formatter.po
+trans.fr = library/formatter.po
type = PO
source_lang = en
[python-36.library--getopt]
-trans.fr = .tx/library/getopt.po
+trans.fr = library/getopt.po
type = PO
source_lang = en
[python-36.library--cgi]
-trans.fr = .tx/library/cgi.po
+trans.fr = library/cgi.po
type = PO
source_lang = en
[python-36.library--winsound]
-trans.fr = .tx/library/winsound.po
+trans.fr = library/winsound.po
type = PO
source_lang = en
[python-36.library--audioop]
-trans.fr = .tx/library/audioop.po
+trans.fr = library/audioop.po
type = PO
source_lang = en
[python-36.library--__main__]
-trans.fr = .tx/library/__main__.po
+trans.fr = library/__main__.po
type = PO
source_lang = en
[python-36.library--sndhdr]
-trans.fr = .tx/library/sndhdr.po
+trans.fr = library/sndhdr.po
type = PO
source_lang = en
[python-36.library--copy]
-trans.fr = .tx/library/copy.po
+trans.fr = library/copy.po
type = PO
source_lang = en
[python-36.library--email_contentmanager]
-trans.fr = .tx/library/email.contentmanager.po
+trans.fr = library/email.contentmanager.po
type = PO
source_lang = en
[python-36.library--aifc]
-trans.fr = .tx/library/aifc.po
+trans.fr = library/aifc.po
type = PO
source_lang = en
[python-36.library--msvcrt]
-trans.fr = .tx/library/msvcrt.po
+trans.fr = library/msvcrt.po
type = PO
source_lang = en
[python-36.library--xmlrpc_client]
-trans.fr = .tx/library/xmlrpc.client.po
+trans.fr = library/xmlrpc.client.po
type = PO
source_lang = en
[python-36.library--logging_handlers]
-trans.fr = .tx/library/logging.handlers.po
+trans.fr = library/logging.handlers.po
type = PO
source_lang = en
[python-36.library--grp]
-trans.fr = .tx/library/grp.po
+trans.fr = library/grp.po
type = PO
source_lang = en
[python-36.library--logging]
-trans.fr = .tx/library/logging.po
+trans.fr = library/logging.po
type = PO
source_lang = en
[python-36.library--i18n]
-trans.fr = .tx/library/i18n.po
+trans.fr = library/i18n.po
type = PO
source_lang = en
[python-36.library--zipimport]
-trans.fr = .tx/library/zipimport.po
+trans.fr = library/zipimport.po
type = PO
source_lang = en
[python-36.library--curses_ascii]
-trans.fr = .tx/library/curses.ascii.po
+trans.fr = library/curses.ascii.po
type = PO
source_lang = en
[python-36.library--operator]
-trans.fr = .tx/library/operator.po
+trans.fr = library/operator.po
type = PO
source_lang = en
[python-36.library--winreg]
-trans.fr = .tx/library/winreg.po
+trans.fr = library/winreg.po
type = PO
source_lang = en
[python-36.library--frameworks]
-trans.fr = .tx/library/frameworks.po
+trans.fr = library/frameworks.po
type = PO
source_lang = en
[python-36.library--ossaudiodev]
-trans.fr = .tx/library/ossaudiodev.po
+trans.fr = library/ossaudiodev.po
type = PO
source_lang = en
[python-36.library--urllib]
-trans.fr = .tx/library/urllib.po
+trans.fr = library/urllib.po
type = PO
source_lang = en
[python-36.library--os]
-trans.fr = .tx/library/os.po
+trans.fr = library/os.po
type = PO
source_lang = en
[python-36.library--smtplib]
-trans.fr = .tx/library/smtplib.po
+trans.fr = library/smtplib.po
type = PO
source_lang = en
[python-36.library--copyreg]
-trans.fr = .tx/library/copyreg.po
+trans.fr = library/copyreg.po
type = PO
source_lang = en
[python-36.library--test]
-trans.fr = .tx/library/test.po
+trans.fr = library/test.po
type = PO
source_lang = en
[python-36.library--xml_sax]
-trans.fr = .tx/library/xml.sax.po
+trans.fr = library/xml.sax.po
type = PO
source_lang = en
[python-36.library--2to3]
-trans.fr = .tx/library/2to3.po
+trans.fr = library/2to3.po
type = PO
source_lang = en
[python-36.library--http_server]
-trans.fr = .tx/library/http.server.po
+trans.fr = library/http.server.po
type = PO
source_lang = en
[python-36.library--email_compat32-message]
-trans.fr = .tx/library/email.compat32-message.po
+trans.fr = library/email.compat32-message.po
type = PO
source_lang = en
[python-36.library--zlib]
-trans.fr = .tx/library/zlib.po
+trans.fr = library/zlib.po
type = PO
source_lang = en
[python-36.distutils--configfile]
-trans.fr = .tx/distutils/configfile.po
+trans.fr = distutils/configfile.po
type = PO
source_lang = en
[python-36.distutils--sourcedist]
-trans.fr = .tx/distutils/sourcedist.po
+trans.fr = distutils/sourcedist.po
type = PO
source_lang = en
[python-36.distutils--extending]
-trans.fr = .tx/distutils/extending.po
+trans.fr = distutils/extending.po
type = PO
source_lang = en
[python-36.distutils--setupscript]
-trans.fr = .tx/distutils/setupscript.po
+trans.fr = distutils/setupscript.po
type = PO
source_lang = en
[python-36.distutils--commandref]
-trans.fr = .tx/distutils/commandref.po
+trans.fr = distutils/commandref.po
type = PO
source_lang = en
[python-36.distutils--builtdist]
-trans.fr = .tx/distutils/builtdist.po
+trans.fr = distutils/builtdist.po
type = PO
source_lang = en
[python-36.distutils--introduction]
-trans.fr = .tx/distutils/introduction.po
+trans.fr = distutils/introduction.po
type = PO
source_lang = en
[python-36.distutils--index]
-trans.fr = .tx/distutils/index.po
+trans.fr = distutils/index.po
type = PO
source_lang = en
[python-36.distutils--packageindex]
-trans.fr = .tx/distutils/packageindex.po
+trans.fr = distutils/packageindex.po
type = PO
source_lang = en
[python-36.distutils--examples]
-trans.fr = .tx/distutils/examples.po
+trans.fr = distutils/examples.po
type = PO
source_lang = en
[python-36.distutils--uploading]
-trans.fr = .tx/distutils/uploading.po
+trans.fr = distutils/uploading.po
type = PO
source_lang = en
[python-36.distutils--apiref]
-trans.fr = .tx/distutils/apiref.po
+trans.fr = distutils/apiref.po
type = PO
source_lang = en
[python-36.distributing--index]
-trans.fr = .tx/distributing/index.po
+trans.fr = distributing/index.po
type = PO
source_lang = en
[python-36.faq--extending]
-trans.fr = .tx/faq/extending.po
+trans.fr = faq/extending.po
type = PO
source_lang = en
[python-36.faq--windows]
-trans.fr = .tx/faq/windows.po
+trans.fr = faq/windows.po
type = PO
source_lang = en
[python-36.faq--general]
-trans.fr = .tx/faq/general.po
+trans.fr = faq/general.po
type = PO
source_lang = en
[python-36.faq--library]
-trans.fr = .tx/faq/library.po
+trans.fr = faq/library.po
type = PO
source_lang = en
[python-36.faq--gui]
-trans.fr = .tx/faq/gui.po
+trans.fr = faq/gui.po
type = PO
source_lang = en
[python-36.faq--installed]
-trans.fr = .tx/faq/installed.po
+trans.fr = faq/installed.po
type = PO
source_lang = en
[python-36.faq--index]
-trans.fr = .tx/faq/index.po
+trans.fr = faq/index.po
type = PO
source_lang = en
[python-36.faq--design]
-trans.fr = .tx/faq/design.po
+trans.fr = faq/design.po
type = PO
source_lang = en
[python-36.faq--programming]
-trans.fr = .tx/faq/programming.po
+trans.fr = faq/programming.po
type = PO
source_lang = en
[python-36.using--unix]
-trans.fr = .tx/using/unix.po
+trans.fr = using/unix.po
type = PO
source_lang = en
[python-36.using--mac]
-trans.fr = .tx/using/mac.po
+trans.fr = using/mac.po
type = PO
source_lang = en
[python-36.using--cmdline]
-trans.fr = .tx/using/cmdline.po
+trans.fr = using/cmdline.po
type = PO
source_lang = en
[python-36.using--windows]
-trans.fr = .tx/using/windows.po
+trans.fr = using/windows.po
type = PO
source_lang = en
[python-36.using--index]
-trans.fr = .tx/using/index.po
+trans.fr = using/index.po
type = PO
source_lang = en
[python-36.howto--clinic]
-trans.fr = .tx/howto/clinic.po
+trans.fr = howto/clinic.po
type = PO
source_lang = en
[python-36.howto--urllib2]
-trans.fr = .tx/howto/urllib2.po
+trans.fr = howto/urllib2.po
type = PO
source_lang = en
[python-36.howto--argparse]
-trans.fr = .tx/howto/argparse.po
+trans.fr = howto/argparse.po
type = PO
source_lang = en
[python-36.howto--curses]
-trans.fr = .tx/howto/curses.po
+trans.fr = howto/curses.po
type = PO
source_lang = en
[python-36.howto--logging-cookbook]
-trans.fr = .tx/howto/logging-cookbook.po
+trans.fr = howto/logging-cookbook.po
type = PO
source_lang = en
[python-36.howto--sockets]
-trans.fr = .tx/howto/sockets.po
+trans.fr = howto/sockets.po
type = PO
source_lang = en
[python-36.howto--pyporting]
-trans.fr = .tx/howto/pyporting.po
+trans.fr = howto/pyporting.po
type = PO
source_lang = en
[python-36.howto--index]
-trans.fr = .tx/howto/index.po
+trans.fr = howto/index.po
type = PO
source_lang = en
[python-36.howto--unicode]
-trans.fr = .tx/howto/unicode.po
+trans.fr = howto/unicode.po
type = PO
source_lang = en
[python-36.howto--instrumentation]
-trans.fr = .tx/howto/instrumentation.po
+trans.fr = howto/instrumentation.po
type = PO
source_lang = en
[python-36.howto--cporting]
-trans.fr = .tx/howto/cporting.po
+trans.fr = howto/cporting.po
type = PO
source_lang = en
[python-36.howto--ipaddress]
-trans.fr = .tx/howto/ipaddress.po
+trans.fr = howto/ipaddress.po
type = PO
source_lang = en
[python-36.howto--sorting]
-trans.fr = .tx/howto/sorting.po
+trans.fr = howto/sorting.po
type = PO
source_lang = en
[python-36.howto--functional]
-trans.fr = .tx/howto/functional.po
+trans.fr = howto/functional.po
type = PO
source_lang = en
[python-36.howto--logging]
-trans.fr = .tx/howto/logging.po
+trans.fr = howto/logging.po
type = PO
source_lang = en
[python-36.howto--regex]
-trans.fr = .tx/howto/regex.po
+trans.fr = howto/regex.po
type = PO
source_lang = en
[python-36.howto--descriptor]
-trans.fr = .tx/howto/descriptor.po
+trans.fr = howto/descriptor.po
type = PO
source_lang = en
[python-36.install--index]
-trans.fr = .tx/install/index.po
+trans.fr = install/index.po
type = PO
source_lang = en
[python-36.reference--simple_stmts]
-trans.fr = .tx/reference/simple_stmts.po
+trans.fr = reference/simple_stmts.po
type = PO
source_lang = en
[python-36.reference--expressions]
-trans.fr = .tx/reference/expressions.po
+trans.fr = reference/expressions.po
type = PO
source_lang = en
[python-36.reference--compound_stmts]
-trans.fr = .tx/reference/compound_stmts.po
+trans.fr = reference/compound_stmts.po
type = PO
source_lang = en
[python-36.reference--introduction]
-trans.fr = .tx/reference/introduction.po
+trans.fr = reference/introduction.po
type = PO
source_lang = en
[python-36.reference--import]
-trans.fr = .tx/reference/import.po
+trans.fr = reference/import.po
type = PO
source_lang = en
[python-36.reference--grammar]
-trans.fr = .tx/reference/grammar.po
+trans.fr = reference/grammar.po
type = PO
source_lang = en
[python-36.reference--datamodel]
-trans.fr = .tx/reference/datamodel.po
+trans.fr = reference/datamodel.po
type = PO
source_lang = en
[python-36.reference--index]
-trans.fr = .tx/reference/index.po
+trans.fr = reference/index.po
type = PO
source_lang = en
[python-36.reference--toplevel_components]
-trans.fr = .tx/reference/toplevel_components.po
+trans.fr = reference/toplevel_components.po
type = PO
source_lang = en
[python-36.reference--lexical_analysis]
-trans.fr = .tx/reference/lexical_analysis.po
+trans.fr = reference/lexical_analysis.po
type = PO
source_lang = en
[python-36.reference--executionmodel]
-trans.fr = .tx/reference/executionmodel.po
+trans.fr = reference/executionmodel.po
type = PO
source_lang = en
[python-36.whatsnew--2_6]
-trans.fr = .tx/whatsnew/2.6.po
+trans.fr = whatsnew/2.6.po
type = PO
source_lang = en
[python-36.whatsnew--2_3]
-trans.fr = .tx/whatsnew/2.3.po
+trans.fr = whatsnew/2.3.po
type = PO
source_lang = en
[python-36.whatsnew--changelog]
-trans.fr = .tx/whatsnew/changelog.po
+trans.fr = whatsnew/changelog.po
type = PO
source_lang = en
[python-36.whatsnew--2_2]
-trans.fr = .tx/whatsnew/2.2.po
+trans.fr = whatsnew/2.2.po
type = PO
source_lang = en
[python-36.whatsnew--3_3]
-trans.fr = .tx/whatsnew/3.3.po
+trans.fr = whatsnew/3.3.po
type = PO
source_lang = en
[python-36.whatsnew--3_4]
-trans.fr = .tx/whatsnew/3.4.po
+trans.fr = whatsnew/3.4.po
type = PO
source_lang = en
[python-36.whatsnew--3_2]
-trans.fr = .tx/whatsnew/3.2.po
+trans.fr = whatsnew/3.2.po
type = PO
source_lang = en
[python-36.whatsnew--2_7]
-trans.fr = .tx/whatsnew/2.7.po
+trans.fr = whatsnew/2.7.po
type = PO
source_lang = en
[python-36.whatsnew--3_1]
-trans.fr = .tx/whatsnew/3.1.po
+trans.fr = whatsnew/3.1.po
type = PO
source_lang = en
[python-36.whatsnew--3_0]
-trans.fr = .tx/whatsnew/3.0.po
+trans.fr = whatsnew/3.0.po
type = PO
source_lang = en
[python-36.whatsnew--index]
-trans.fr = .tx/whatsnew/index.po
+trans.fr = whatsnew/index.po
type = PO
source_lang = en
[python-36.whatsnew--2_0]
-trans.fr = .tx/whatsnew/2.0.po
+trans.fr = whatsnew/2.0.po
type = PO
source_lang = en
[python-36.whatsnew--2_4]
-trans.fr = .tx/whatsnew/2.4.po
+trans.fr = whatsnew/2.4.po
type = PO
source_lang = en
[python-36.whatsnew--3_5]
-trans.fr = .tx/whatsnew/3.5.po
+trans.fr = whatsnew/3.5.po
type = PO
source_lang = en
[python-36.whatsnew--2_5]
-trans.fr = .tx/whatsnew/2.5.po
+trans.fr = whatsnew/2.5.po
type = PO
source_lang = en
[python-36.whatsnew--2_1]
-trans.fr = .tx/whatsnew/2.1.po
+trans.fr = whatsnew/2.1.po
type = PO
source_lang = en
[python-36.whatsnew--3_6]
-trans.fr = .tx/whatsnew/3.6.po
+trans.fr = whatsnew/3.6.po
type = PO
source_lang = en
[python-36.tutorial--modules]
-trans.fr = .tx/tutorial/modules.po
+trans.fr = tutorial/modules.po
type = PO
source_lang = en
[python-36.tutorial--stdlib2]
-trans.fr = .tx/tutorial/stdlib2.po
+trans.fr = tutorial/stdlib2.po
type = PO
source_lang = en
[python-36.tutorial--whatnow]
-trans.fr = .tx/tutorial/whatnow.po
+trans.fr = tutorial/whatnow.po
type = PO
source_lang = en
[python-36.tutorial--floatingpoint]
-trans.fr = .tx/tutorial/floatingpoint.po
+trans.fr = tutorial/floatingpoint.po
type = PO
source_lang = en
[python-36.tutorial--inputoutput]
-trans.fr = .tx/tutorial/inputoutput.po
+trans.fr = tutorial/inputoutput.po
type = PO
source_lang = en
[python-36.tutorial--classes]
-trans.fr = .tx/tutorial/classes.po
+trans.fr = tutorial/classes.po
type = PO
source_lang = en
[python-36.tutorial--appendix]
-trans.fr = .tx/tutorial/appendix.po
+trans.fr = tutorial/appendix.po
type = PO
source_lang = en
[python-36.tutorial--interactive]
-trans.fr = .tx/tutorial/interactive.po
+trans.fr = tutorial/interactive.po
type = PO
source_lang = en
[python-36.tutorial--venv]
-trans.fr = .tx/tutorial/venv.po
+trans.fr = tutorial/venv.po
type = PO
source_lang = en
[python-36.tutorial--introduction]
-trans.fr = .tx/tutorial/introduction.po
+trans.fr = tutorial/introduction.po
type = PO
source_lang = en
[python-36.tutorial--index]
-trans.fr = .tx/tutorial/index.po
+trans.fr = tutorial/index.po
type = PO
source_lang = en
[python-36.tutorial--controlflow]
-trans.fr = .tx/tutorial/controlflow.po
+trans.fr = tutorial/controlflow.po
type = PO
source_lang = en
[python-36.tutorial--appetite]
-trans.fr = .tx/tutorial/appetite.po
+trans.fr = tutorial/appetite.po
type = PO
source_lang = en
[python-36.tutorial--errors]
-trans.fr = .tx/tutorial/errors.po
+trans.fr = tutorial/errors.po
type = PO
source_lang = en
[python-36.tutorial--interpreter]
-trans.fr = .tx/tutorial/interpreter.po
+trans.fr = tutorial/interpreter.po
type = PO
source_lang = en
[python-36.tutorial--datastructures]
-trans.fr = .tx/tutorial/datastructures.po
+trans.fr = tutorial/datastructures.po
type = PO
source_lang = en
[python-36.tutorial--stdlib]
-trans.fr = .tx/tutorial/stdlib.po
+trans.fr = tutorial/stdlib.po
type = PO
source_lang = en
[python-36.extending--building]
-trans.fr = .tx/extending/building.po
+trans.fr = extending/building.po
type = PO
source_lang = en
[python-36.extending--extending]
-trans.fr = .tx/extending/extending.po
+trans.fr = extending/extending.po
type = PO
source_lang = en
[python-36.extending--windows]
-trans.fr = .tx/extending/windows.po
+trans.fr = extending/windows.po
type = PO
source_lang = en
[python-36.extending--index]
-trans.fr = .tx/extending/index.po
+trans.fr = extending/index.po
type = PO
source_lang = en
[python-36.extending--embedding]
-trans.fr = .tx/extending/embedding.po
+trans.fr = extending/embedding.po
type = PO
source_lang = en
[python-36.extending--newtypes]
-trans.fr = .tx/extending/newtypes.po
+trans.fr = extending/newtypes.po
type = PO
source_lang = en
[python-36.installing--index]
-trans.fr = .tx/installing/index.po
+trans.fr = installing/index.po
type = PO
source_lang = en
[python-36.c-api--conversion]
-trans.fr = .tx/c-api/conversion.po
+trans.fr = c-api/conversion.po
type = PO
source_lang = en
[python-36.c-api--datetime]
-trans.fr = .tx/c-api/datetime.po
+trans.fr = c-api/datetime.po
type = PO
source_lang = en
[python-36.c-api--memory]
-trans.fr = .tx/c-api/memory.po
+trans.fr = c-api/memory.po
type = PO
source_lang = en
[python-36.c-api--coro]
-trans.fr = .tx/c-api/coro.po
+trans.fr = c-api/coro.po
type = PO
source_lang = en
[python-36.c-api--file]
-trans.fr = .tx/c-api/file.po
+trans.fr = c-api/file.po
type = PO
source_lang = en
[python-36.c-api--object]
-trans.fr = .tx/c-api/object.po
+trans.fr = c-api/object.po
type = PO
source_lang = en
[python-36.c-api--capsule]
-trans.fr = .tx/c-api/capsule.po
+trans.fr = c-api/capsule.po
type = PO
source_lang = en
[python-36.c-api--function]
-trans.fr = .tx/c-api/function.po
+trans.fr = c-api/function.po
type = PO
source_lang = en
[python-36.c-api--refcounting]
-trans.fr = .tx/c-api/refcounting.po
+trans.fr = c-api/refcounting.po
type = PO
source_lang = en
[python-36.c-api--cell]
-trans.fr = .tx/c-api/cell.po
+trans.fr = c-api/cell.po
type = PO
source_lang = en
[python-36.c-api--none]
-trans.fr = .tx/c-api/none.po
+trans.fr = c-api/none.po
type = PO
source_lang = en
[python-36.c-api--allocation]
-trans.fr = .tx/c-api/allocation.po
+trans.fr = c-api/allocation.po
type = PO
source_lang = en
[python-36.c-api--intro]
-trans.fr = .tx/c-api/intro.po
+trans.fr = c-api/intro.po
type = PO
source_lang = en
[python-36.c-api--number]
-trans.fr = .tx/c-api/number.po
+trans.fr = c-api/number.po
type = PO
source_lang = en
[python-36.c-api--float]
-trans.fr = .tx/c-api/float.po
+trans.fr = c-api/float.po
type = PO
source_lang = en
[python-36.c-api--list]
-trans.fr = .tx/c-api/list.po
+trans.fr = c-api/list.po
type = PO
source_lang = en
[python-36.c-api--memoryview]
-trans.fr = .tx/c-api/memoryview.po
+trans.fr = c-api/memoryview.po
type = PO
source_lang = en
[python-36.c-api--structures]
-trans.fr = .tx/c-api/structures.po
+trans.fr = c-api/structures.po
type = PO
source_lang = en
[python-36.c-api--mapping]
-trans.fr = .tx/c-api/mapping.po
+trans.fr = c-api/mapping.po
type = PO
source_lang = en
[python-36.c-api--iterator]
-trans.fr = .tx/c-api/iterator.po
+trans.fr = c-api/iterator.po
type = PO
source_lang = en
[python-36.c-api--abstract]
-trans.fr = .tx/c-api/abstract.po
+trans.fr = c-api/abstract.po
type = PO
source_lang = en
[python-36.c-api--gen]
-trans.fr = .tx/c-api/gen.po
+trans.fr = c-api/gen.po
type = PO
source_lang = en
[python-36.c-api--arg]
-trans.fr = .tx/c-api/arg.po
+trans.fr = c-api/arg.po
type = PO
source_lang = en
[python-36.c-api--method]
-trans.fr = .tx/c-api/method.po
+trans.fr = c-api/method.po
type = PO
source_lang = en
[python-36.c-api--sequence]
-trans.fr = .tx/c-api/sequence.po
+trans.fr = c-api/sequence.po
type = PO
source_lang = en
[python-36.c-api--marshal]
-trans.fr = .tx/c-api/marshal.po
+trans.fr = c-api/marshal.po
type = PO
source_lang = en
[python-36.c-api--import]
-trans.fr = .tx/c-api/import.po
+trans.fr = c-api/import.po
type = PO
source_lang = en
[python-36.c-api--weakref]
-trans.fr = .tx/c-api/weakref.po
+trans.fr = c-api/weakref.po
type = PO
source_lang = en
[python-36.c-api--dict]
-trans.fr = .tx/c-api/dict.po
+trans.fr = c-api/dict.po
type = PO
source_lang = en
[python-36.c-api--buffer]
-trans.fr = .tx/c-api/buffer.po
+trans.fr = c-api/buffer.po
type = PO
source_lang = en
[python-36.c-api--code]
-trans.fr = .tx/c-api/code.po
+trans.fr = c-api/code.po
type = PO
source_lang = en
[python-36.c-api--index]
-trans.fr = .tx/c-api/index.po
+trans.fr = c-api/index.po
type = PO
source_lang = en
[python-36.c-api--concrete]
-trans.fr = .tx/c-api/concrete.po
+trans.fr = c-api/concrete.po
type = PO
source_lang = en
[python-36.c-api--unicode]
-trans.fr = .tx/c-api/unicode.po
+trans.fr = c-api/unicode.po
type = PO
source_lang = en
[python-36.c-api--bytes]
-trans.fr = .tx/c-api/bytes.po
+trans.fr = c-api/bytes.po
type = PO
source_lang = en
[python-36.c-api--init]
-trans.fr = .tx/c-api/init.po
+trans.fr = c-api/init.po
type = PO
source_lang = en
[python-36.c-api--bool]
-trans.fr = .tx/c-api/bool.po
+trans.fr = c-api/bool.po
type = PO
source_lang = en
[python-36.c-api--reflection]
-trans.fr = .tx/c-api/reflection.po
+trans.fr = c-api/reflection.po
type = PO
source_lang = en
[python-36.c-api--gcsupport]
-trans.fr = .tx/c-api/gcsupport.po
+trans.fr = c-api/gcsupport.po
type = PO
source_lang = en
[python-36.c-api--module]
-trans.fr = .tx/c-api/module.po
+trans.fr = c-api/module.po
type = PO
source_lang = en
[python-36.c-api--veryhigh]
-trans.fr = .tx/c-api/veryhigh.po
+trans.fr = c-api/veryhigh.po
type = PO
source_lang = en
[python-36.c-api--exceptions]
-trans.fr = .tx/c-api/exceptions.po
+trans.fr = c-api/exceptions.po
type = PO
source_lang = en
[python-36.c-api--objimpl]
-trans.fr = .tx/c-api/objimpl.po
+trans.fr = c-api/objimpl.po
type = PO
source_lang = en
[python-36.c-api--type]
-trans.fr = .tx/c-api/type.po
+trans.fr = c-api/type.po
type = PO
source_lang = en
[python-36.c-api--set]
-trans.fr = .tx/c-api/set.po
+trans.fr = c-api/set.po
type = PO
source_lang = en
[python-36.c-api--codec]
-trans.fr = .tx/c-api/codec.po
+trans.fr = c-api/codec.po
type = PO
source_lang = en
[python-36.c-api--typeobj]
-trans.fr = .tx/c-api/typeobj.po
+trans.fr = c-api/typeobj.po
type = PO
source_lang = en
[python-36.c-api--sys]
-trans.fr = .tx/c-api/sys.po
+trans.fr = c-api/sys.po
type = PO
source_lang = en
[python-36.c-api--bytearray]
-trans.fr = .tx/c-api/bytearray.po
+trans.fr = c-api/bytearray.po
type = PO
source_lang = en
[python-36.c-api--tuple]
-trans.fr = .tx/c-api/tuple.po
+trans.fr = c-api/tuple.po
type = PO
source_lang = en
[python-36.c-api--apiabiversion]
-trans.fr = .tx/c-api/apiabiversion.po
+trans.fr = c-api/apiabiversion.po
type = PO
source_lang = en
[python-36.c-api--stable]
-trans.fr = .tx/c-api/stable.po
+trans.fr = c-api/stable.po
type = PO
source_lang = en
[python-36.c-api--objbuffer]
-trans.fr = .tx/c-api/objbuffer.po
+trans.fr = c-api/objbuffer.po
type = PO
source_lang = en
[python-36.c-api--slice]
-trans.fr = .tx/c-api/slice.po
+trans.fr = c-api/slice.po
type = PO
source_lang = en
[python-36.c-api--long]
-trans.fr = .tx/c-api/long.po
+trans.fr = c-api/long.po
type = PO
source_lang = en
[python-36.c-api--iter]
-trans.fr = .tx/c-api/iter.po
+trans.fr = c-api/iter.po
type = PO
source_lang = en
[python-36.c-api--utilities]
-trans.fr = .tx/c-api/utilities.po
+trans.fr = c-api/utilities.po
type = PO
source_lang = en
[python-36.c-api--complex]
-trans.fr = .tx/c-api/complex.po
+trans.fr = c-api/complex.po
type = PO
source_lang = en
[python-36.c-api--descriptor]
-trans.fr = .tx/c-api/descriptor.po
+trans.fr = c-api/descriptor.po
type = PO
source_lang = en
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..0ab7990cd
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,93 @@
+# Makefile for French Python Documentation
+#
+# Here is what you can do:
+#
+# - make # Automatically build an html local version
+# - make todo # To list remaining tasks
+# - make merge # To merge pot from upstream
+# - make fuzzy # To find fuzzy strings
+# - make progress # To compute current progression
+# - make upgrade_venv # To upgrade the venv that compiles the doc
+#
+# Modes are: autobuild-stable, autobuild-dev, and autobuild-html,
+# documented in gen/src/3.6/Doc/Makefile as we're only delegating the
+# real work to the Python Doc Makefile.
+
+CPYTHON_CLONE := ../cpython/
+SPHINX_CONF := $(CPYTHON_CLONE)/Doc/conf.py
+LANGUAGE := fr
+VENV := ~/.venvs/python-docs-i18n/
+PYTHON := $(shell which python3)
+MODE := autobuild-dev-html
+BRANCH = $(shell git describe --contains --all HEAD)
+JOBS = 1
+
+
+.PHONY: all
+all: $(VENV)/bin/sphinx-build $(VENV)/bin/blurb $(SPHINX_CONF)
+ mkdir -p $(CPYTHON_CLONE)/Doc/locales/$(LANGUAGE)/
+ ln -nfs $(shell readlink -f .) $(CPYTHON_CLONE)/Doc/locales/$(LANGUAGE)/LC_MESSAGES
+ . $(VENV)/bin/activate; $(MAKE) -C $(CPYTHON_CLONE)/Doc/ SPHINXOPTS='-j$(JOBS) -D locale_dirs=locales -D language=$(LANGUAGE) -D gettext_compact=0' $(MODE)
+
+
+$(SPHINX_CONF):
+ git clone --depth 1 --no-single-branch https://github.com/python/cpython.git $(CPYTHON_CLONE)
+
+
+$(VENV)/bin/activate:
+ mkdir -p $(VENV)
+ $(PYTHON) -m venv $(VENV)
+
+
+$(VENV)/bin/sphinx-build: $(VENV)/bin/activate
+ . $(VENV)/bin/activate; python3 -m pip install sphinx
+
+
+$(VENV)/bin/blurb: $(VENV)/bin/activate
+ . $(VENV)/bin/activate; python3 -m pip install blurb
+
+
+.PHONY: upgrade_venv
+upgrade_venv: $(VENV)/bin/activate
+ . $(VENV)/bin/activate; python3 -m pip install --upgrade sphinx blurb
+
+
+.PHONY: progress
+progress:
+ @python3 -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: todo
+todo:
+ for file in *.po */*.po; do echo $$(msgattrib --untranslated $$file | grep ^msgid | sed 1d | wc -l ) $$file; done | grep -v ^0 | sort -gr
+
+
+.PHONY: merge
+merge: upgrade_venv
+ifneq "$(shell cd $(CPYTHON_CLONE) 2>/dev/null && git describe --contains --all HEAD)" "$(BRANCH)"
+ $(error "You're merging from a different branch")
+endif
+ (cd $(CPYTHON_CLONE)/Doc; rm -f build/NEWS)
+ (cd $(CPYTHON_CLONE); $(VENV)/bin/sphinx-build -Q -b gettext -D gettext_compact=0 Doc pot/)
+ find $(CPYTHON_CLONE)/pot/ -name '*.pot' |\
+ while read -r POT;\
+ do\
+ PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_CLONE)/pot/##; s#\.pot\$$#.po#")";\
+ mkdir -p "$$(dirname "$$PO")";\
+ if [ -f "$$PO" ];\
+ then\
+ case "$$POT" in\
+ *whatsnew*) msgmerge --backup=off --force-po --no-fuzzy-matching -U "$$PO" "$$POT" ;;\
+ *) msgmerge --backup=off --force-po -U "$$PO" "$$POT" ;;\
+ esac\
+ else\
+ msgcat -o "$$PO" "$$POT";\
+ fi\
+ done
+
+
+.PHONY: fuzzy
+fuzzy:
+ for file in *.po */*.po; do echo $$(msgattrib --only-fuzzy --no-obsolete "$$file" | grep -c '#, fuzzy') $$file; done | grep -v ^0 | sort -gr
diff --git a/README.rst b/README.rst
index 8031c5703..1ba169980 100644
--- a/README.rst
+++ b/README.rst
@@ -1,5 +1,11 @@
-This is the French Translation of the Python Documentation
-==========================================================
+French Translation of the Python Documentation
+==============================================
+
+**Translated: 29%**
+
+This is the 3.6 branch, we're no longer translating on it, see the 3.7
+branch.
+
Documentation Contribution Agreement
------------------------------------
@@ -22,268 +28,3 @@ Python community is welcomed and appreciated.
You signify acceptance of this agreement by submitting your work to
the PSF for inclusion in the documentation.
-
-
-TODO
-----
-
-- Check and merge the language switch:
- https://github.com/python/cpython/pull/2652
-
-
-Translation Progression
------------------------
-
-============ ===== ===== =====
- .. 2.7 3.5 3.6
-============ ===== ===== =====
- about.po 100% 100% 100%
- bugs.po 100% 100% 100%
- c-api 9% 12% 11%
- contents.po 100% 100% 100%
-copyright.po 100% 100% 100%
-distributing 100% 100% 100%
- distutils 32% 33% 33%
- extending 21% 24% 24%
- faq 29% 33% 32%
- glossary.po 85% 100% 100%
- howto 7% 6% 6%
- install 45% 46% 43%
- installing 100% 100% 66%
- library 16% 20% 19%
- license.po 100% 100% 100%
- reference 5% 5% 5%
- sphinx.po 100% 100% 100%
- tutorial 100% 100% 100%
- using 31% 21% 19%
- whatsnew 6% 41% 7%
- ~total~ 19% 25% 19%
-============ ===== ===== =====
-
-
-Contributing to the Translation
--------------------------------
-
-Your help is welcome, you can start with easy tasks like reviewing
-fuzzy entries to help keeping the documentation up to date. You can
-also proofread already translated entries, and finally translate
-untranslated ones.
-
-
-How to Contribute
-~~~~~~~~~~~~~~~~~
-
-You can either contribute on `transifex/python-doc/public
-`_, or by simply openning an
-issue on this repository, or by editing the ``po`` files.
-
-To modify those files you first have to fork this project and follow
-github instructions to clone it.
-
-Next, to edit the files, you can use an editor of your choice, there's many:
-
-- Highly recommended: `poedit `_
-- gted
-- gtranslator
-- lokalize
-- betterpoeditor
-- vim or emacs with an appropriate mode
-- Vé on Android
-- Probably many others
-
-Finally, once your contribution is done, do a ``pull request`` so we
-can review and merge it.
-
-
-What to translate
-~~~~~~~~~~~~~~~~~
-
-- Prioritize the higher version, identical strings between version can
- automatically be reused.
-- Do not translate content of ``:ref:...`` and ``:term:...``
-- Put english words, if you have to use them, in *italics* (surrounded
- by stars).
-- ``::`` at the end of some paragraphs have to be translated to ``:
- ::`` in French to place the space before the column.
-
-
-Where to get help
-~~~~~~~~~~~~~~~~~
-
-The coordinator for this translation is `mdk `_.
-
-Feel free to ask your questions on ``#python-fr`` on `freenode
-`_.
-
-
-Priorities
-----------
-
-The ``tutorial/`` directory has a high priority as translations aim
-for newcomers, then here are files most read in the original version:
-
-- library/functions.po
-- library/stdtypes.po
-- library/string.po
-- library/re.po
-- library/datetime.po
-- library/csv.po
-- library/os.po
-- library/random.po
-- library/json.po
-- library/subprocess.po
-
-
-Translation Resources
----------------------
-
-- `Le Grand Dictionnaire Terminologique `_
-- IRC channel `#python-fr `_ on freenode.
-- The `liste traductions `_
-- `Glossaire traduc.org `_
-- `Glossaires et Dictionnaires of traduc.org
- `_
-- glossary.po, as it's already translated.
-
-
-Glossary
---------
-
-For consistency in our translations, here are some propositions and
-reminders for frequent terms you'll have to translate, don't hesitate
-to open an issue if you disagree.
-
-- double quote: *guillemet*
-- simple quote: *guillemet simple*, *apostrophe* (*apostrophe* is to glue,
- *guillemet* is to surround, use when appropriate)
-- -like: *-compatible* (when appropriate)
-- abstract data type: *type abstrait*
-- argument: *argument* (Don't mix with parameter)
-- parameter: *paramètre*
-- backslash: *antislash*, *backslash* (in italics)
-- bound: *lier*
-- bug: *bogue*, *bug* (in italics)
-- debugging: *débogage*
-- built-in: *primitive*, *native*
-- identifier: *identifiant*
-- immutable: *immuable*
-- interpreter: *interpréteur*
-- library: *bibliothèque*
-- list compréhension: *liste en compréhension*
-- mutable: *variable*
-- prompt: *invite*
-- regular expression: *expression rationnelle*, *expression régulière*
-- socket: *socket* (in italics)
-- statement: *instruction*
-- underscore: *tiret bas*, *underscore* (in italics)
-- little-endian, big-endian: `petit-boutise, gros-boutiste
- `_
-
-
-Project History
----------------
-
-This project was started `around 2012
-`_
-by `afpy `_ members, in 2017 this project
-became the official french Python documentation translation thanks to
-`PEP 545 `_.
-
-
-Simplify git diffs
-------------------
-
-Git diffs are often crowded with useless line number changes, like:
-
- -#: ../Doc/library/signal.rst:406
- +#: ../Doc/library/signal.rst:408
-
-To tell git they are not usefull information, you can do the following
-after ensuring ``~/.local/bin/`` is in your ``PATH``.
-
- cat < ~/.local/bin/podiff
- #!/bin/sh
- grep -v '^#:' "\$1"
- EOF
-
- chmod a+x ~/.local/bin/podiff
-
- git config diff.podiff.textconv podiff
-
-
-Maintenance
------------
-
-All those snippets are to run from the root of a ``python-docs-fr``
-clone, and some expect to find an up-to-date CPython clone near to it,
-like::
-
- ~/
- ├── python-docs-fr/
- └── cpython/
-
-To clone CPython you may use::
-
- git clone --depth 1 --no-single-branch https://github.com/python/cpython.git
-
-This avoids to download the whole history (not usefull to build
-documentation) but still fetches all branches.
-
-
-Merge pot files from CPython
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: bash
-
- VERSION="$(git describe --contains --all HEAD)"
- (cd ../cpython; git checkout $VERSION && git pull --ff-only && sphinx-build -Q -b gettext -D gettext_compact=0 Doc pot/)
- find ../cpython/pot/ -name '*.pot' |
- while read -r POT
- do
- PO="./$(echo "$POT" | sed "s#../cpython/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
-
-
-Find fuzzy strings
-~~~~~~~~~~~~~~~~~~
-
-.. code-block:: bash
-
- find -name '*.po' | xargs -L1 msgattrib --only-fuzzy --no-obsolete
-
-
-Run a test build locally
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. code-block:: bash
-
- mkdir -p /tmp/$USER/locales/fr
- ln -nfs $(readlink -f .) /tmp/$USER/locales/fr/LC_MESSAGES
- make -C ../cpython/Doc SPHINXOPTS="-D locale_dirs=/tmp/$USER/locales/ -D language=fr -D gettext_compact=0" autobuild-dev-html
-
-
-Synchronize translation with Transifex
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You'll need the ``transifex-client``, ``pomerge``, and ``poindent``
-from Pypi, and you'll need to configure ``tx`` via ``tx init``, and then:
-
-.. code-block:: bash
-
- tx pull
- pomerge --from .tx/*.po .tx/**/*.po --to *.po **/*.po
- poindent --modified
-
-Now you should review and commit the pull, then push:
-
-.. code-block:: bash
-
- pomerge --from *.po **/*.po --to .tx/*.po .tx/**/*.po
- tx push -t
diff --git a/TRANSLATORS b/TRANSLATORS
index cd3fef980..acae258f2 100644
--- a/TRANSLATORS
+++ b/TRANSLATORS
@@ -4,3 +4,4 @@ RobinPetit
Valentin Lorentz
Antoine Rozo
Mohamed Kiouaz
+Hervé Sousset
diff --git a/about.po b/about.po
index 540dd3d9d..8fe2df5d7 100644
--- a/about.po
+++ b/about.po
@@ -60,7 +60,7 @@ msgid ""
"reStructuredText and the Docutils suite;"
msgstr ""
"le projet `Docutils `_ pour avoir créé "
-"reStructuredText et la suite d'outils Docutils ;"
+"*reStructuredText* et la suite d'outils *Docutils* ;"
#: ../Doc/about.rst:26
msgid ""
@@ -80,7 +80,7 @@ msgid ""
"library, and the Python documentation. See :source:`Misc/ACKS` in the "
"Python source distribution for a partial list of contributors."
msgstr ""
-"De nombreuses personnes ont contribué au language Python, à sa librarie "
+"De nombreuses personnes ont contribué au langage Python, à sa bibliothèque "
"standard et à sa documentation. Consultez :source:`Misc/ACKS` dans les "
"sources de la distribution Python pour avoir une liste partielle des "
"contributeurs."
@@ -91,4 +91,4 @@ msgid ""
"Python has such wonderful documentation -- Thank You!"
msgstr ""
"Ce n'est que grâce aux suggestions et contributions de la communauté Python "
-"que Python a une documentation si merveilleuse -- Merci !"
+"que Python a une documentation si merveilleuse — Merci !"
diff --git a/bugs.po b/bugs.po
index 723a76618..5947f4f2c 100644
--- a/bugs.po
+++ b/bugs.po
@@ -3,23 +3,23 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-10 00:49+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"POT-Creation-Date: 2017-09-21 09:15+0200\n"
+"PO-Revision-Date: 2018-02-15 00:28+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/bugs.rst:5
msgid "Dealing with Bugs"
-msgstr "S'attaquer aux Bugs"
+msgstr "S'attaquer aux bogues"
#: ../Doc/bugs.rst:7
msgid ""
@@ -27,9 +27,9 @@ msgid ""
"for stability. In order to maintain this reputation, the developers would "
"like to know of any deficiencies you find in Python."
msgstr ""
-"Python est un langage de programmation mature réputé pour sa stabilité. Afin "
-"de maintenir cette réputation, les développeurs souhaitent connaître toute "
-"déficience que vous pourriez rencontrer dans Python."
+"Python est un langage de programmation robuste réputé pour sa stabilité. "
+"Afin de maintenir cette réputation, les développeurs souhaitent connaître "
+"tout problème que vous pourriez rencontrer dans Python."
#: ../Doc/bugs.rst:11
msgid ""
@@ -37,9 +37,9 @@ msgid ""
"Python as it streamlines the process and involves less people. Learn how to :"
"ref:`contribute `."
msgstr ""
-"Il est parfois plus rapide de réparer les bugs soi-même et d'en proposer les "
-"*patch*, ca simplifie le processus et implique moins de monde. Apprenez à :"
-"ref:`contribuer `."
+"Il est parfois plus rapide de réparer les bogues soi-même et d'en proposer "
+"les correctifs, ça simplifie le processus et implique moins de monde. "
+"Apprenez à :ref:`contribuer `."
#: ../Doc/bugs.rst:16
msgid "Documentation bugs"
@@ -54,11 +54,11 @@ msgstr ""
"Si vous trouvez un bogue dans cette documentation ou si vous désirez "
"proposer une amélioration, si cela concerne aussi la documentation en "
"anglais, ouvrez un rapport sur le :ref:`tracker ` "
-"décrivant le bogue et où vous l'avez trouvé, si le problème ne touche que la "
-"traduction en français, envoyez un e-mail à traductions@lists.afpy.org ou "
-"ouvrez un ticket sur `github `_. Si vous avez une suggestion de correction, merci de l'inclure "
-"également."
+"décrivant en anglais le bogue et où vous l'avez trouvé. Si le problème ne "
+"touche que la traduction en français, ouvrez un ticket sur https://github."
+"com/python/python-docs-fr/issues, ou venez nous en toucher un mot sur le "
+"canal #python-fr sur *freenode* (https://webchat.freenode.net/). Si vous "
+"avez une suggestion de correction, merci de l'inclure également."
#: ../Doc/bugs.rst:22
msgid ""
@@ -67,9 +67,9 @@ msgid ""
"'docs@' is a mailing list run by volunteers; your request will be noticed, "
"though it may take a while to be processed."
msgstr ""
-"Si vous êtes limités par le temps, vous pouvez aussi envoyer un e-mail à "
-"docs@python.org (les bugs de comportement peuvent être envoyés à python-"
-"list@python.org). 'docs@' est une liste de diffusion gérée par des "
+"Si vous êtes limité par le temps, vous pouvez aussi envoyer un courriel à "
+"docs@python.org (les bogues de comportement peuvent être envoyés à python-"
+"list@python.org). « docs@ » est une liste de diffusion gérée par des "
"volontaires, votre requête sera vue, mais elle peut prendre un moment pour "
"être traitée."
@@ -79,7 +79,7 @@ msgstr "`Documentation bugs`_ sur le gestionnaire de ticket de Python"
#: ../Doc/bugs.rst:33
msgid "Using the Python issue tracker"
-msgstr "Utilisation du gestionnaire de ticket Python"
+msgstr "Utilisation du gestionnaire de tickets Python"
#: ../Doc/bugs.rst:35
msgid ""
@@ -87,10 +87,10 @@ msgid ""
"(https://bugs.python.org/). The bug tracker offers a Web form which allows "
"pertinent information to be entered and submitted to the developers."
msgstr ""
-"Les rapports de bugs pour Python lui-même devraient être soumis via le Bug "
-"Tracker Python (http://bugs.python.org/). Le gestionnaire de ticket propose "
-"un formulaire Web permettant de saisir des informations pertinentes à "
-"soumettre aux développeurs."
+"Les rapports de bogues pour Python lui-même devraient être soumis via le "
+"*Bug Tracker Python* (http://bugs.python.org/). Le gestionnaire de tickets "
+"propose un formulaire Web permettant de saisir des informations pertinentes "
+"à soumettre aux développeurs."
#: ../Doc/bugs.rst:39
msgid ""
@@ -118,11 +118,11 @@ msgid ""
"OpenID provider logos in the sidebar. It is not possible to submit a bug "
"report anonymously."
msgstr ""
-"Si le problème que vous soumettez n'est pas déjà dans le bug tracker, "
-"retournez 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 bug de "
+"Si le problème que vous soumettez n'est pas déjà dans le *bug tracker*, "
+"revenez au *Python Bug Tracker* et connectez-vous. Si vous n'avez pas déjà "
+"un compte pour le *tracker*, cliquez sur le lien « S'enregistrer », ou, si "
+"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."
#: ../Doc/bugs.rst:51
@@ -131,7 +131,7 @@ msgid ""
"in the sidebar to open the bug reporting form."
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 "
+"*Create New* dans la barre latérale pour ouvrir un nouveau formulaire de "
"rapport de bogue."
#: ../Doc/bugs.rst:54
@@ -142,9 +142,9 @@ msgid ""
"\"Component\" and \"Versions\" to which the bug relates."
msgstr ""
"Le formulaire de soumission a un certain nombre de champs. Pour le champ "
-"\"Titre\", saisissez une *très* courte description du problème ; moins de "
-"dix mots est approprié. Dans le champ \"Type\", sélectionnez le type de "
-"problème ; sélectionnez aussi \"Composant\" et \"Versions\" en rapport avec "
+"« Titre », saisissez une *très* courte description du problème ; moins de "
+"dix mots est approprié. Dans le champ « Type », sélectionnez le type de "
+"problème ; sélectionnez aussi « Composant » et « Versions » en rapport avec "
"le bogue."
#: ../Doc/bugs.rst:59
@@ -154,7 +154,7 @@ msgid ""
"extension modules were involved, and what hardware and software platform you "
"were using (including version information as appropriate)."
msgstr ""
-"Dans le champ \"Commentaire\", décrivez le problème de manière détaillée, "
+"Dans le champ « Commentaire », décrivez le problème de manière détaillée, "
"incluant ce à quoi vous vous attendiez et ce qui s'est vraiment produit. "
"Assurez-vous d'y inclure les éventuels modules d'extensions impliqués et la "
"plateforme matérielle et logicielle vous utilisiez (en incluant les "
@@ -215,8 +215,8 @@ msgid ""
"the `core-mentorship mailing list`_ is a friendly place to get answers to "
"any and all questions pertaining to the process of fixing issues in Python."
msgstr ""
-"Au delà de simplement remonter les bugs que vous trouvez, vous serez aussi "
-"appréciés si vous y attachiez des correctifs. Vous pouvez trouver plus "
+"Au-delà de simplement remonter les bogues que vous trouvez, il est aussi "
+"apprécié d'y attacher des correctifs. Vous pouvez trouver plus "
"d'informations pour débuter la rédaction de correctifs dans le `Python "
"Developer's Guide`_. Si vous avez des questions, le `core-mentorship mailing "
"list`_ est un endroit amical pour obtenir des réponses à toutes les "
diff --git a/c-api/abstract.po b/c-api/abstract.po
index abb2d7e0b..f64a7bcea 100644
--- a/c-api/abstract.po
+++ b/c-api/abstract.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-02-15 00:28+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/abstract.rst:7
msgid "Abstract Objects Layer"
-msgstr "Couche d'Abstraction des Objets"
+msgstr "Couche d'abstraction des objets"
#: ../Doc/c-api/abstract.rst:9
msgid ""
diff --git a/c-api/allocation.po b/c-api/allocation.po
index 4cbb8de31..473afd23e 100644
--- a/c-api/allocation.po
+++ b/c-api/allocation.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-08-10 00:57+0200\n"
+"PO-Revision-Date: 2017-09-22 10:29+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/c-api/allocation.rst:6
msgid "Allocating Objects on the Heap"
@@ -30,7 +30,7 @@ msgid ""
"affected."
msgstr ""
"Permet d'initialiser un objet *op* nouvellement alloué ainsi que son type et "
-"sa référence initiale. Retourne l'objet initialisé. La présence de *type* "
+"sa référence initiale. Renvoie l'objet initialisé. La présence de *type* "
"indique que l'objet doit être traité par le détecteur d'ordures cycliques, "
"il est de ce fait ajouté à l'ensemble du détecteur d'objets observés. Les "
"autres champs de l'objet ne sont pas affectés."
@@ -70,13 +70,12 @@ msgid ""
msgstr ""
"Alloue un nouvel objet Python en utilisant le type de structure C *TYPE* et "
"l'objet de type Python *type*. Les champs non définis par l'en-tête de "
-"l'objet Python ne sont pas initialisés. La mémoire allouée autorise pour la "
-"structure *TYPE* plus *size* champs de la taille donnée par le champ de "
-"*type* :c:member:`~PyTypeObject.tp_itemsize`. C'est utile pour "
+"l'objet Python ne sont pas initialisés. La mémoire allouée est suffisante "
+"pour pour la structure *TYPE* plus *size* champs de la taille donnée par le "
+"champ de *type* :c:member:`~PyTypeObject.tp_itemsize`. C'est utile pour "
"l'implémentation d'objets comme les tuples, qui sont capables de déterminer "
-"leur taille durant le temps de la construction. Intégrer l'array de champs "
-"dans la même allocation diminue le nombre d'allocations, mettant à l'épreuve "
-"l'efficacité de la gestion de la mémoire."
+"leur taille à la construction. Allouer les champs en même temps que l'objet "
+"diminue le nombre d'allocations, améliorant ainsi les performances."
#: ../Doc/c-api/allocation.rst:53
msgid ""
diff --git a/c-api/arg.po b/c-api/arg.po
index bccef846e..e4a0c2e68 100644
--- a/c-api/arg.po
+++ b/c-api/arg.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-08-10 01:04+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
+"PO-Revision-Date: 2018-05-08 17:57+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -90,6 +90,10 @@ msgid ""
"this object. You won't have to release any memory yourself. The only "
"exceptions are ``es``, ``es#``, ``et`` and ``et#``."
msgstr ""
+"En général, lorsqu'un format définit un pointeur vers un tampon, le tampon "
+"est géré par l'objet Python correspondant et le tampon partage la durée de "
+"vie de cet objet. vous n'avez pas à libérer de mémoire. Les seules "
+"exceptions sont ``es``, ``es#``, ``et`` et ``et#``."
#: ../Doc/c-api/arg.rst:42
msgid ""
@@ -101,13 +105,12 @@ msgid ""
"early abort case)."
msgstr ""
"Néanmoins, quand une structure :c:type:`Py_buffer` est en cours de "
-"remplissage, le buffer sous-jacent est verrouillé pour permettre à "
-"l'appelant d'utiliser le buffer par la suite, même à l'intérieur d'un bloc :"
-"c:type:`Py_BEGIN_ALLOW_THREADS`. Ceci sans le risque pour les données "
-"mutables de voir leur taille changée ou d'être supprimées. En conséquence, "
-"**il vous appartient d'appeler** :c:func:`PyBuffer_Release` après que vous "
-"ayez terminé de traiter les données (ou après une interruption prémataturée "
-"du traitement de ces données)."
+"remplissage, le tampon sous-jacent est verrouillé pour permettre à "
+"l'appelant d'utiliser le tampon par la suite, même à l'intérieur d'un bloc :"
+"c:type:`Py_BEGIN_ALLOW_THREADS`, sans risques de voir des données muables se "
+"faire redimensionner ou supprimer. En conséquence, **il vous appartient "
+"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)."
#: ../Doc/c-api/arg.rst:49
msgid "Unless otherwise stated, buffers are not NUL-terminated."
@@ -131,8 +134,8 @@ msgid ""
"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 de formats ``#`` (``s#``, ``y#``, etc), le type de "
-"l'argument *length* (int ou :c:type:`Py_ssize_t`) est contrôlé en "
+"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 "
@@ -142,7 +145,7 @@ msgstr ""
#: ../Doc/c-api/arg.rst:85
msgid "``s`` (:class:`str`) [const char \\*]"
-msgstr "``s`` (:class:`str`) [const char \\*]"
+msgstr "``s`` (:class:`str`) [``const char *``]"
#: ../Doc/c-api/arg.rst:68
msgid ""
@@ -153,6 +156,13 @@ msgid ""
"is raised. Unicode objects are converted to C strings using ``'utf-8'`` "
"encoding. If this conversion fails, a :exc:`UnicodeError` is raised."
msgstr ""
+"Convertit un objet Unicode en un pointeur vers une chaîne de caractères. "
+"S'il s'agit d'un pointeur vers une chaîne de caractères déjà existante, il "
+"est stocké dans la variable de type pointeur vers un caractère dont vous "
+"avez donné l'adresse. Une chaîne de caractères en C se termine par *NULL*. "
+"La chaîne de caractères Python ne doit donc pas contenir de caractère dont "
+"le code est *null*. Si elle en contient, une exception :exc:`ValueError` est "
+"levée. Si la conversion échoue, une :exc:`UnicodeError` est levée."
#: ../Doc/c-api/arg.rst:77
msgid ""
@@ -161,16 +171,23 @@ msgid ""
"strings, it is preferable to use the ``O&`` format with :c:func:"
"`PyUnicode_FSConverter` as *converter*."
msgstr ""
+"Ce format n'accepte pas les :term:`objets compatibles avec une chaîne "
+"d'octets `. Si vous voulez accepter les chemins du "
+"système de fichiers et les convertir vers des chaînes de caractères C, il "
+"est préférable d'utiliser le format ``O&`` avec :c:func:"
+"`PyUnicode_FSConverter` en tant que *converter*."
#: ../Doc/c-api/arg.rst:83 ../Doc/c-api/arg.rst:150
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null code points were "
"encountered in the Python string."
msgstr ""
+"Auparavant, une :exc:`TypeError` était levée quand la chaîne de caractères "
+"Python contenait des codes NULL."
#: ../Doc/c-api/arg.rst:91
msgid "``s*`` (:class:`str` or :term:`bytes-like object`) [Py_buffer]"
-msgstr "``s*`` (:class:`str` ou :term:`bytes-like object`) [Py_buffer]"
+msgstr "``s*`` (:class:`str` ou :term:`bytes-like object`) [``Py_buffer``]"
#: ../Doc/c-api/arg.rst:88
msgid ""
@@ -179,12 +196,19 @@ msgid ""
"resulting C string may contain embedded NUL bytes. Unicode objects are "
"converted to C strings using ``'utf-8'`` encoding."
msgstr ""
+"Ce format accepte les objets Unicode et les *bytes-like object*. Cela "
+"remplit une structure :c:type:`Py_buffer` qui est fournie par l'appelant. "
+"Dans ce cas, la chaîne de caractères C qui en résulte peut contenir des "
+"octets NULL. Les objets Unicode sont convertis en chaînes de caractères C en "
+"utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:98
msgid ""
"``s#`` (:class:`str`, read-only :term:`bytes-like object`) [const char \\*, "
"int or :c:type:`Py_ssize_t`]"
msgstr ""
+"``s#`` (:class:`str`, :term:`bytes-like object` en lecture seule) [``const "
+"char \\*``, ``int`` ou :c:type:`Py_ssize_t`]"
#: ../Doc/c-api/arg.rst:94
msgid ""
@@ -193,10 +217,15 @@ msgid ""
"second one its length. The string may contain embedded null bytes. Unicode "
"objects are converted to C strings using ``'utf-8'`` encoding."
msgstr ""
+"La même chose que ``s*``, mais n'accepte pas les objets muables. Le résultat "
+"est stocké dans deux variables C, la première est un pointeur vers une "
+"chaîne de caractères C, la seconde contient sa taille. La chaîne de "
+"caractères peut contenir des octets NULL. Les objets Unicode sont convertis "
+"vers des chaînes de caractères C utilisant l'encodage ``'utf-8'``."
#: ../Doc/c-api/arg.rst:102
msgid "``z`` (:class:`str` or ``None``) [const char \\*]"
-msgstr "``z`` (:class:`str` ou ``None``) [const char \\*]"
+msgstr "``z`` (:class:`str` ou ``None``) [``const char *``]"
#: ../Doc/c-api/arg.rst:101
msgid ""
@@ -210,7 +239,7 @@ msgstr ""
msgid ""
"``z*`` (:class:`str`, :term:`bytes-like object` or ``None``) [Py_buffer]"
msgstr ""
-"``z*`` (:class:`str`, :term:`bytes-like object` ou ``None``) [Py_buffer]"
+"``z*`` (:class:`str`, :term:`bytes-like object` ou ``None``) [``Py_buffer``]"
#: ../Doc/c-api/arg.rst:105
msgid ""
@@ -235,6 +264,8 @@ msgstr ""
#: ../Doc/c-api/arg.rst:120
msgid "``y`` (read-only :term:`bytes-like object`) [const char \\*]"
msgstr ""
+"``y`` (lecture seule :term:`objet compatible avec une chaîne d'octets `) [constante char \\*]"
#: ../Doc/c-api/arg.rst:113
msgid ""
@@ -243,16 +274,22 @@ msgid ""
"contain embedded null bytes; if it does, a :exc:`ValueError` exception is "
"raised."
msgstr ""
+"Ce format convertit un *objet compatible avec une chaîne d'octets* en un "
+"pointeur C vers une chaîne de caractères ; il n'accepte pas les objets "
+"Unicode. Le tampon d'octets ne doit pas contenir d'octets *null* ; si c'est "
+"le cas, une exception :exc:`ValueError` est levée."
#: ../Doc/c-api/arg.rst:118
msgid ""
"Previously, :exc:`TypeError` was raised when embedded null bytes were "
"encountered in the bytes buffer."
msgstr ""
+"Auparavant, :exc:`TypeError` était levée lorsque des octets *null* étaient "
+"rencontrés dans le tampon d'octets."
#: ../Doc/c-api/arg.rst:125
msgid "``y*`` (:term:`bytes-like object`) [Py_buffer]"
-msgstr "``y*`` (:term:`bytes-like object`) [Py_buffer]"
+msgstr "``y*`` (:term:`bytes-like object`) [``Py_buffer``]"
#: ../Doc/c-api/arg.rst:123
msgid ""
@@ -274,7 +311,7 @@ msgstr ""
#: ../Doc/c-api/arg.rst:134
msgid "``S`` (:class:`bytes`) [PyBytesObject \\*]"
-msgstr "``S`` (:class:`bytes`) [PyBytesObject \\*]"
+msgstr "``S`` (:class:`bytes`) [``PyBytesObject *``]"
#: ../Doc/c-api/arg.rst:132
msgid ""
@@ -285,7 +322,7 @@ msgstr ""
#: ../Doc/c-api/arg.rst:139
msgid "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]"
-msgstr "``Y`` (:class:`bytearray`) [PyByteArrayObject \\*]"
+msgstr "``Y`` (:class:`bytearray`) [``PyByteArrayObject *``]"
#: ../Doc/c-api/arg.rst:137
msgid ""
@@ -295,7 +332,7 @@ msgid ""
"`PyObject\\*`."
msgstr ""
-#: ../Doc/c-api/arg.rst:152 ../Doc/c-api/arg.rst:557
+#: ../Doc/c-api/arg.rst:156
msgid "``u`` (:class:`str`) [Py_UNICODE \\*]"
msgstr "``u`` (:class:`str`) [Py_UNICODE \\*]"
@@ -309,23 +346,37 @@ msgid ""
"Python string must not contain embedded null code points; if it does, a :exc:"
"`ValueError` exception is raised."
msgstr ""
+"Convertit un objet Python Unicode en un pointeur C vers un tampon de "
+"caractères Unicode terminé par *NULL*. Vous devez passer l'adresse d'un "
+"pointeur :c:type:`Py_UNICODE`, qui sera rempli avec le pointeur vers un "
+"tampon Unicode existant. Veuillez noter que la taille d'un :c:type:"
+"`Py_UNICODE` dépend des options de compilation (soit 16, soit 32 bits). La "
+"chaîne de caractères Python ne doit pas contenir de code *NULL*. Si elle en "
+"contient, une exception :exc:`ValueError` est levée."
-#: ../Doc/c-api/arg.rst:157 ../Doc/c-api/arg.rst:562
+#: ../Doc/c-api/arg.rst:157 ../Doc/c-api/arg.rst:166 ../Doc/c-api/arg.rst:174
+#: ../Doc/c-api/arg.rst:182
+msgid ""
+"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
+"func:`PyUnicode_AsWideCharString`."
+msgstr ""
+
+#: ../Doc/c-api/arg.rst:165
msgid "``u#`` (:class:`str`) [Py_UNICODE \\*, int]"
msgstr "``u#`` (:class:`str`) [Py_UNICODE \\*, int]"
-#: ../Doc/c-api/arg.rst:155
+#: ../Doc/c-api/arg.rst:159
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 ""
-#: ../Doc/c-api/arg.rst:161
+#: ../Doc/c-api/arg.rst:173
msgid "``Z`` (:class:`str` or ``None``) [Py_UNICODE \\*]"
msgstr "``Z`` (:class:`str` ou ``None``) [Py_UNICODE \\*]"
-#: ../Doc/c-api/arg.rst:160
+#: ../Doc/c-api/arg.rst:168
msgid ""
"Like ``u``, but the Python object may also be ``None``, in which case the :c:"
"type:`Py_UNICODE` pointer is set to *NULL*."
@@ -333,11 +384,11 @@ msgstr ""
"Comme ``u``, mais l'objet Python peut aussi être ``None``, auquel cas le "
"pointeur :c:type:`Py_UNICODE` vaut *NULL*."
-#: ../Doc/c-api/arg.rst:165
+#: ../Doc/c-api/arg.rst:181
msgid "``Z#`` (:class:`str` or ``None``) [Py_UNICODE \\*, int]"
msgstr "``Z#`` (:class:`str` ou ``None``) [Py_UNICODE \\*, int]"
-#: ../Doc/c-api/arg.rst:164
+#: ../Doc/c-api/arg.rst:176
msgid ""
"Like ``u#``, but the Python object may also be ``None``, in which case the :"
"c:type:`Py_UNICODE` pointer is set to *NULL*."
@@ -345,22 +396,22 @@ msgstr ""
"Comme ``u#``, mais l'objet Python peut également être ``None``, auquel cas "
"le pointeur :c:type:`Py_UNICODE` vaut *NULL*."
-#: ../Doc/c-api/arg.rst:170
+#: ../Doc/c-api/arg.rst:186
msgid "``U`` (:class:`str`) [PyObject \\*]"
-msgstr "``U`` (:class:`str`) [PyObject \\*]"
+msgstr "``U`` (:class:`str`) [``PyObject *``]"
-#: ../Doc/c-api/arg.rst:168
+#: ../Doc/c-api/arg.rst:184
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\\*`."
msgstr ""
-#: ../Doc/c-api/arg.rst:176
+#: ../Doc/c-api/arg.rst:192
msgid "``w*`` (read-write :term:`bytes-like object`) [Py_buffer]"
-msgstr "``w*`` (read-write :term:`bytes-like object`) [Py_buffer]"
+msgstr "``w*`` (lecture-écriture :term:`bytes-like object`) [``Py_buffer``]"
-#: ../Doc/c-api/arg.rst:173
+#: ../Doc/c-api/arg.rst:189
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. "
@@ -368,17 +419,17 @@ msgid ""
"`PyBuffer_Release` when it is done with the buffer."
msgstr ""
-#: ../Doc/c-api/arg.rst:193
+#: ../Doc/c-api/arg.rst:209
msgid "``es`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer]"
msgstr ""
-#: ../Doc/c-api/arg.rst:179
+#: ../Doc/c-api/arg.rst:195
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 ""
-#: ../Doc/c-api/arg.rst:182
+#: ../Doc/c-api/arg.rst:198
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 "
@@ -390,7 +441,7 @@ msgid ""
"argument."
msgstr ""
-#: ../Doc/c-api/arg.rst:190
+#: ../Doc/c-api/arg.rst:206
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 "
@@ -398,33 +449,33 @@ msgid ""
"`PyMem_Free` to free the allocated buffer after use."
msgstr ""
-#: ../Doc/c-api/arg.rst:198
+#: ../Doc/c-api/arg.rst:214
msgid ""
"``et`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char "
"\\*encoding, char \\*\\*buffer]"
msgstr ""
-#: ../Doc/c-api/arg.rst:196
+#: ../Doc/c-api/arg.rst:212
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 ""
-#: ../Doc/c-api/arg.rst:229
+#: ../Doc/c-api/arg.rst:245
msgid ""
"``es#`` (:class:`str`) [const char \\*encoding, char \\*\\*buffer, int "
"\\*buffer_length]"
msgstr ""
-#: ../Doc/c-api/arg.rst:201
+#: ../Doc/c-api/arg.rst:217
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 ""
-#: ../Doc/c-api/arg.rst:205
+#: ../Doc/c-api/arg.rst:221
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-"
@@ -437,11 +488,11 @@ msgid ""
"will be set to the number of bytes in the output buffer."
msgstr ""
-#: ../Doc/c-api/arg.rst:215
+#: ../Doc/c-api/arg.rst:231
msgid "There are two modes of operation:"
msgstr "Il existe deux modes de fonctionnement :"
-#: ../Doc/c-api/arg.rst:217
+#: ../Doc/c-api/arg.rst:233
msgid ""
"If *\\*buffer* points a *NULL* pointer, the function will allocate a buffer "
"of the needed size, copy the encoded data into this buffer and set *"
@@ -450,7 +501,7 @@ msgid ""
"after usage."
msgstr ""
-#: ../Doc/c-api/arg.rst:222
+#: ../Doc/c-api/arg.rst:238
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 "
@@ -459,7 +510,7 @@ msgid ""
"the buffer is not large enough, a :exc:`ValueError` will be set."
msgstr ""
-#: ../Doc/c-api/arg.rst:228
+#: ../Doc/c-api/arg.rst:244
msgid ""
"In both cases, *\\*buffer_length* is set to the length of the encoded data "
"without the trailing NUL byte."
@@ -467,60 +518,60 @@ msgstr ""
"Dans les deux cas, *\\*buffer_length* est la longueur des données encodées, "
"sans l'octet NUL de fin."
-#: ../Doc/c-api/arg.rst:234
+#: ../Doc/c-api/arg.rst:250
msgid ""
"``et#`` (:class:`str`, :class:`bytes` or :class:`bytearray`) [const char "
"\\*encoding, char \\*\\*buffer, int \\*buffer_length]"
msgstr ""
-#: ../Doc/c-api/arg.rst:232
+#: ../Doc/c-api/arg.rst:248
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 ""
-#: ../Doc/c-api/arg.rst:237
+#: ../Doc/c-api/arg.rst:253
msgid "Numbers"
msgstr "Les nombres"
-#: ../Doc/c-api/arg.rst:241
+#: ../Doc/c-api/arg.rst:257
msgid "``b`` (:class:`int`) [unsigned char]"
-msgstr "``b`` (:class:`int`) [unsigned char]"
+msgstr "``b`` (:class:`int`) [``unsigned char``]"
-#: ../Doc/c-api/arg.rst:240
+#: ../Doc/c-api/arg.rst:256
msgid ""
"Convert a nonnegative Python integer to an unsigned tiny int, stored in a C :"
"c:type:`unsigned char`."
msgstr ""
-"Convertit un entier Python positif ou nul en un unsigned tiny int, stocké "
-"dans un :c:type:`unsigned char` C."
+"Convertit un entier Python positif ou nul en un ``unsigned tiny int``, "
+"stocké dans un :c:type:`unsigned char` C."
-#: ../Doc/c-api/arg.rst:245 ../Doc/c-api/arg.rst:583
+#: ../Doc/c-api/arg.rst:261 ../Doc/c-api/arg.rst:600
msgid "``B`` (:class:`int`) [unsigned char]"
-msgstr "``B`` (:class:`int`) [unsigned char]"
+msgstr "``B`` (:class:`int`) [``unsigned char``]"
-#: ../Doc/c-api/arg.rst:244
+#: ../Doc/c-api/arg.rst:260
msgid ""
"Convert a Python integer to a tiny int without overflow checking, stored in "
"a C :c:type:`unsigned char`."
msgstr ""
-"Convertit un entier Python en un tiny int sans vérifier le débordement, "
+"Convertit un entier Python en un ``tiny int`` sans vérifier le débordement, "
"stocké dans un :c:type:`unsigned char` C."
-#: ../Doc/c-api/arg.rst:248 ../Doc/c-api/arg.rst:577
+#: ../Doc/c-api/arg.rst:264 ../Doc/c-api/arg.rst:594
msgid "``h`` (:class:`int`) [short int]"
-msgstr "``h`` (:class:`int`) [short int]"
+msgstr "``h`` (:class:`int`) [``short int``]"
-#: ../Doc/c-api/arg.rst:248
+#: ../Doc/c-api/arg.rst:264
msgid "Convert a Python integer to a C :c:type:`short int`."
msgstr "Convertit un entier Python en un :c:type:`short int` C."
-#: ../Doc/c-api/arg.rst:252 ../Doc/c-api/arg.rst:586
+#: ../Doc/c-api/arg.rst:268 ../Doc/c-api/arg.rst:603
msgid "``H`` (:class:`int`) [unsigned short int]"
-msgstr "``H`` (:class:`int`) [unsigned short int]"
+msgstr "``H`` (:class:`int`) [``unsigned short int``]"
-#: ../Doc/c-api/arg.rst:251
+#: ../Doc/c-api/arg.rst:267
msgid ""
"Convert a Python integer to a C :c:type:`unsigned short int`, without "
"overflow checking."
@@ -528,19 +579,19 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned short int` C, sans "
"contrôle de débordement."
-#: ../Doc/c-api/arg.rst:255 ../Doc/c-api/arg.rst:571
+#: ../Doc/c-api/arg.rst:271 ../Doc/c-api/arg.rst:588
msgid "``i`` (:class:`int`) [int]"
-msgstr "``i`` (:class:`int`) [int]"
+msgstr "``i`` (:class:`int`) [``int``]"
-#: ../Doc/c-api/arg.rst:255
+#: ../Doc/c-api/arg.rst:271
msgid "Convert a Python integer to a plain C :c:type:`int`."
msgstr "Convertit un entier Python en un :c:type:`int` C."
-#: ../Doc/c-api/arg.rst:259 ../Doc/c-api/arg.rst:589
+#: ../Doc/c-api/arg.rst:275 ../Doc/c-api/arg.rst:606
msgid "``I`` (:class:`int`) [unsigned int]"
-msgstr "``I`` (:class:`int`) [unsigned int]"
+msgstr "``I`` (:class:`int`) [``unsigned int``]"
-#: ../Doc/c-api/arg.rst:258
+#: ../Doc/c-api/arg.rst:274
msgid ""
"Convert a Python integer to a C :c:type:`unsigned int`, without overflow "
"checking."
@@ -548,19 +599,19 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned int` C, sans contrôle de "
"le débordement."
-#: ../Doc/c-api/arg.rst:262 ../Doc/c-api/arg.rst:580
+#: ../Doc/c-api/arg.rst:278 ../Doc/c-api/arg.rst:597
msgid "``l`` (:class:`int`) [long int]"
-msgstr "``l`` (:class:`int`) [long int]"
+msgstr "``l`` (:class:`int`) [``long int``]"
-#: ../Doc/c-api/arg.rst:262
+#: ../Doc/c-api/arg.rst:278
msgid "Convert a Python integer to a C :c:type:`long int`."
msgstr "Convertit un entier Python en un :c:type:`long int`."
-#: ../Doc/c-api/arg.rst:266 ../Doc/c-api/arg.rst:592
+#: ../Doc/c-api/arg.rst:282 ../Doc/c-api/arg.rst:609
msgid "``k`` (:class:`int`) [unsigned long]"
-msgstr "``k`` (:class:`int`) [unsigned long]"
+msgstr "``k`` (:class:`int`) [``unsigned long``]"
-#: ../Doc/c-api/arg.rst:265
+#: ../Doc/c-api/arg.rst:281
msgid ""
"Convert a Python integer to a C :c:type:`unsigned long` without overflow "
"checking."
@@ -568,53 +619,53 @@ msgstr ""
"Convertit un entier Python en un :c:type:`unsigned long` C sans en vérifier "
"le débordement."
-#: ../Doc/c-api/arg.rst:269 ../Doc/c-api/arg.rst:595
+#: ../Doc/c-api/arg.rst:285 ../Doc/c-api/arg.rst:612
msgid "``L`` (:class:`int`) [long long]"
-msgstr "``L`` (:class:`int`) [long long]"
+msgstr "``L`` (:class:`int`) [``long long``]"
-#: ../Doc/c-api/arg.rst:269
+#: ../Doc/c-api/arg.rst:285
msgid "Convert a Python integer to a C :c:type:`long long`."
msgstr ""
-#: ../Doc/c-api/arg.rst:273 ../Doc/c-api/arg.rst:598
+#: ../Doc/c-api/arg.rst:289 ../Doc/c-api/arg.rst:615
msgid "``K`` (:class:`int`) [unsigned long long]"
-msgstr "``K`` (:class:`int`) [unsigned long long]"
+msgstr "``K`` (:class:`int`) [``unsigned long long``]"
-#: ../Doc/c-api/arg.rst:272
+#: ../Doc/c-api/arg.rst:288
msgid ""
"Convert a Python integer to a C :c:type:`unsigned long long` without "
"overflow checking."
msgstr ""
-#: ../Doc/c-api/arg.rst:276 ../Doc/c-api/arg.rst:601
+#: ../Doc/c-api/arg.rst:292 ../Doc/c-api/arg.rst:618
msgid "``n`` (:class:`int`) [Py_ssize_t]"
-msgstr "``n`` (:class:`int`) [Py_ssize_t]"
+msgstr "``n`` (:class:`int`) [``Py_ssize_t``]"
-#: ../Doc/c-api/arg.rst:276
+#: ../Doc/c-api/arg.rst:292
msgid "Convert a Python integer to a C :c:type:`Py_ssize_t`."
msgstr "Convertit un entier Python en un :c:type:`short int` C."
-#: ../Doc/c-api/arg.rst:283
+#: ../Doc/c-api/arg.rst:299
msgid "``c`` (:class:`bytes` or :class:`bytearray` of length 1) [char]"
-msgstr "``c`` (:class:`bytes` ou :class:`bytearray` of length 1) [char]"
+msgstr "``c`` (:class:`bytes` ou :class:`bytearray` de longueur 1) [``char``]"
-#: ../Doc/c-api/arg.rst:279
+#: ../Doc/c-api/arg.rst:295
msgid ""
"Convert a Python byte, represented as a :class:`bytes` or :class:`bytearray` "
"object of length 1, to a C :c:type:`char`."
msgstr ""
-"Convertit un octet Python, représenté comme un objet :class:`bytes` ou :"
+"Convertit un *byte* Python, représenté comme un objet :class:`bytes` ou :"
"class:`bytearray` de longueur 1, en un :c:type:`char` C."
-#: ../Doc/c-api/arg.rst:282
+#: ../Doc/c-api/arg.rst:298
msgid "Allow :class:`bytearray` objects."
msgstr ""
-#: ../Doc/c-api/arg.rst:287 ../Doc/c-api/arg.rst:609
+#: ../Doc/c-api/arg.rst:303 ../Doc/c-api/arg.rst:626
msgid "``C`` (:class:`str` of length 1) [int]"
-msgstr "``C`` (:class:`str` of length 1) [int]"
+msgstr "``C`` (:class:`str` de longueur 1) [``int``]"
-#: ../Doc/c-api/arg.rst:286
+#: ../Doc/c-api/arg.rst:302
msgid ""
"Convert a Python character, represented as a :class:`str` object of length "
"1, to a C :c:type:`int`."
@@ -622,41 +673,41 @@ msgstr ""
"Convertit un caractère Python, représenté comme un objet :class:`str` de "
"longueur 1, en un :c:type:`int` C."
-#: ../Doc/c-api/arg.rst:290 ../Doc/c-api/arg.rst:615
+#: ../Doc/c-api/arg.rst:306 ../Doc/c-api/arg.rst:632
msgid "``f`` (:class:`float`) [float]"
-msgstr "``f`` (:class:`float`) [float]"
+msgstr "``f`` (:class:`float`) [``float``]"
-#: ../Doc/c-api/arg.rst:290
+#: ../Doc/c-api/arg.rst:306
msgid "Convert a Python floating point number to a C :c:type:`float`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`float`."
-#: ../Doc/c-api/arg.rst:293 ../Doc/c-api/arg.rst:612
+#: ../Doc/c-api/arg.rst:309 ../Doc/c-api/arg.rst:629
msgid "``d`` (:class:`float`) [double]"
-msgstr "``d`` (:class:`float`) [double]"
+msgstr "``d`` (:class:`float`) [``double``]"
-#: ../Doc/c-api/arg.rst:293
+#: ../Doc/c-api/arg.rst:309
msgid "Convert a Python floating point number to a C :c:type:`double`."
msgstr "Convertit un nombre flottant Python vers un :c:type:`double` C."
-#: ../Doc/c-api/arg.rst:296
+#: ../Doc/c-api/arg.rst:312
msgid "``D`` (:class:`complex`) [Py_complex]"
-msgstr "``D`` (:class:`complex`) [Py_complex]"
+msgstr "``D`` (:class:`complex`) [``Py_complex``]"
-#: ../Doc/c-api/arg.rst:296
+#: ../Doc/c-api/arg.rst:312
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."
-#: ../Doc/c-api/arg.rst:299
+#: ../Doc/c-api/arg.rst:315
msgid "Other objects"
-msgstr "Autres Objets"
+msgstr "Autres objets"
-#: ../Doc/c-api/arg.rst:304 ../Doc/c-api/arg.rst:626
+#: ../Doc/c-api/arg.rst:320 ../Doc/c-api/arg.rst:643
msgid "``O`` (object) [PyObject \\*]"
-msgstr "``O`` (object) [PyObject \\*]"
+msgstr "``O`` (objet) [``PyObject *``]"
-#: ../Doc/c-api/arg.rst:302
+#: ../Doc/c-api/arg.rst:318
msgid ""
"Store a Python object (without any conversion) in a C object pointer. The C "
"program thus receives the actual object that was passed. The object's "
@@ -667,11 +718,11 @@ msgstr ""
"référence sur l'objet n'est pas incrémenté. Le pointeur stocké n'est pas "
"*NULL*."
-#: ../Doc/c-api/arg.rst:311
+#: ../Doc/c-api/arg.rst:327
msgid "``O!`` (object) [*typeobject*, PyObject \\*]"
-msgstr "``O!`` (object) [*typeobject*, PyObject \\*]"
+msgstr "``O!`` (objet) [*typeobject*, ``PyObject *``]"
-#: ../Doc/c-api/arg.rst:307
+#: ../Doc/c-api/arg.rst:323
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 "
@@ -680,11 +731,11 @@ msgid ""
"required type, :exc:`TypeError` is raised."
msgstr ""
-#: ../Doc/c-api/arg.rst:336 ../Doc/c-api/arg.rst:640
+#: ../Doc/c-api/arg.rst:352 ../Doc/c-api/arg.rst:657
msgid "``O&`` (object) [*converter*, *anything*]"
-msgstr "``O&`` (object) [*converter*, *anything*]"
+msgstr "``O&`` (objet) [*converter*, *anything*]"
-#: ../Doc/c-api/arg.rst:316
+#: ../Doc/c-api/arg.rst:332
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 "
@@ -692,7 +743,7 @@ msgid ""
"*converter* function in turn is called as follows::"
msgstr ""
-#: ../Doc/c-api/arg.rst:323
+#: ../Doc/c-api/arg.rst:339
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\\*` "
@@ -702,7 +753,7 @@ msgid ""
"*address* unmodified."
msgstr ""
-#: ../Doc/c-api/arg.rst:329
+#: ../Doc/c-api/arg.rst:345
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 "
@@ -711,15 +762,15 @@ msgid ""
"value as in the original call."
msgstr ""
-#: ../Doc/c-api/arg.rst:335
+#: ../Doc/c-api/arg.rst:351
msgid "``Py_CLEANUP_SUPPORTED`` was added."
msgstr "``Py_CLEANUP_SUPPORTED`` à été ajouté."
-#: ../Doc/c-api/arg.rst:345
+#: ../Doc/c-api/arg.rst:361
msgid "``p`` (:class:`bool`) [int]"
-msgstr "``p`` (:class:`bool`) [int]"
+msgstr "``p`` (:class:`bool`) [``int``]"
-#: ../Doc/c-api/arg.rst:339
+#: ../Doc/c-api/arg.rst:355
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 "
@@ -728,11 +779,11 @@ msgid ""
"how Python tests values for truth."
msgstr ""
-#: ../Doc/c-api/arg.rst:350 ../Doc/c-api/arg.rst:643
+#: ../Doc/c-api/arg.rst:366 ../Doc/c-api/arg.rst:660
msgid "``(items)`` (:class:`tuple`) [*matching-items*]"
msgstr "``(items)`` (:class:`tuple`) [*matching-items*]"
-#: ../Doc/c-api/arg.rst:348
+#: ../Doc/c-api/arg.rst:364
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 "
@@ -741,9 +792,9 @@ msgstr ""
"L'objet doit être une séquence Python dont la longueur est le nombre "
"d'unités de formats dans *articles*. Les arguments C doivent correspondre à "
"chaque unité de format particulière dans *articles*. Les unités de formats "
-"pour les séquences peuvent être imbriquées. "
+"pour les séquences peuvent être imbriquées."
-#: ../Doc/c-api/arg.rst:352
+#: ../Doc/c-api/arg.rst:368
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 --- "
@@ -752,7 +803,7 @@ msgid ""
"downcasts in C --- your mileage may vary)."
msgstr ""
-#: ../Doc/c-api/arg.rst:358
+#: ../Doc/c-api/arg.rst:374
msgid ""
"A few other characters have a meaning in a format string. These may not "
"occur inside nested parentheses. They are:"
@@ -760,11 +811,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 :"
-#: ../Doc/c-api/arg.rst:366
+#: ../Doc/c-api/arg.rst:382
msgid "``|``"
-msgstr ""
+msgstr "``|``"
-#: ../Doc/c-api/arg.rst:362
+#: ../Doc/c-api/arg.rst:378
msgid ""
"Indicates that the remaining arguments in the Python argument list are "
"optional. The C variables corresponding to optional arguments should be "
@@ -773,11 +824,11 @@ msgid ""
"corresponding C variable(s)."
msgstr ""
-#: ../Doc/c-api/arg.rst:375
+#: ../Doc/c-api/arg.rst:391
msgid "``$``"
-msgstr ""
+msgstr "``$``"
-#: ../Doc/c-api/arg.rst:369
+#: ../Doc/c-api/arg.rst:385
msgid ""
":c:func:`PyArg_ParseTupleAndKeywords` only: Indicates that the remaining "
"arguments in the Python argument list are keyword-only. Currently, all "
@@ -785,22 +836,22 @@ msgid ""
"be specified before ``$`` in the format string."
msgstr ""
-#: ../Doc/c-api/arg.rst:380
+#: ../Doc/c-api/arg.rst:396
msgid "``:``"
msgstr ""
-#: ../Doc/c-api/arg.rst:378
+#: ../Doc/c-api/arg.rst:394
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 ""
-#: ../Doc/c-api/arg.rst:385
+#: ../Doc/c-api/arg.rst:401
msgid "``;``"
msgstr ""
-#: ../Doc/c-api/arg.rst:383
+#: ../Doc/c-api/arg.rst:399
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 ``;"
@@ -808,18 +859,18 @@ msgid ""
msgstr ""
"La liste des unités de format s'arrête ici ; la chaîne après le point-"
"virgule est utilise comme message d'erreur *au lieu* du message d'erreur par "
-"défaut. ``:`` et ``;`` sont mutuellement exclusifs. "
+"défaut. ``:`` et ``;`` sont mutuellement exclusifs."
-#: ../Doc/c-api/arg.rst:387
+#: ../Doc/c-api/arg.rst:403
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
msgstr ""
"Notez que n'importe quelles références sur un objet Python qui sont données "
"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
-"compteur de références ! "
+"compteur de références !"
-#: ../Doc/c-api/arg.rst:390
+#: ../Doc/c-api/arg.rst:406
msgid ""
"Additional arguments passed to these functions must be addresses of "
"variables whose type is determined by the format string; these are used to "
@@ -829,14 +880,14 @@ msgid ""
"unit in that case."
msgstr ""
"Les arguments additionnels qui sont donnés à ces fonctions doivent être des "
-"adresses de variables dont le type est déterminé par la chaîine de format. "
+"adresses de variables dont le type est déterminé par la chaîne de format. "
"Elles sont utilisées pour stocker les valeurs du n-uplet d'entrée. Il y a "
"quelques cas, comme décrit précédemment dans le liste des unités de formats, "
"où ces paramètres sont utilisés comme valeurs d'entrée. Dans ce cas, ils "
"devraient correspondre à ce qui est spécifié pour l'unité de format "
"correspondante."
-#: ../Doc/c-api/arg.rst:396
+#: ../Doc/c-api/arg.rst:412
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\\*` "
@@ -847,24 +898,24 @@ msgid ""
"untouched."
msgstr ""
-#: ../Doc/c-api/arg.rst:405
+#: ../Doc/c-api/arg.rst:421
msgid "API Functions"
msgstr "Fonction de l'API"
-#: ../Doc/c-api/arg.rst:409
+#: ../Doc/c-api/arg.rst:425
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 ""
-#: ../Doc/c-api/arg.rst:416
+#: ../Doc/c-api/arg.rst:432
msgid ""
"Identical to :c:func:`PyArg_ParseTuple`, except that it accepts a va_list "
"rather than a variable number of arguments."
msgstr ""
-#: ../Doc/c-api/arg.rst:422
+#: ../Doc/c-api/arg.rst:438
msgid ""
"Parse the parameters of a function that takes both positional and keyword "
"parameters into local variables. The *keywords* argument is a *NULL*-"
@@ -873,26 +924,26 @@ msgid ""
"success; on failure, it returns false and raises the appropriate exception."
msgstr ""
-#: ../Doc/c-api/arg.rst:429
+#: ../Doc/c-api/arg.rst:445
msgid ""
"Added support for :ref:`positional-only parameters `."
msgstr ""
-#: ../Doc/c-api/arg.rst:436
+#: ../Doc/c-api/arg.rst:452
msgid ""
"Identical to :c:func:`PyArg_ParseTupleAndKeywords`, except that it accepts a "
"va_list rather than a variable number of arguments."
msgstr ""
-#: ../Doc/c-api/arg.rst:442
+#: ../Doc/c-api/arg.rst:458
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 ""
-#: ../Doc/c-api/arg.rst:452
+#: ../Doc/c-api/arg.rst:468
msgid ""
"Function used to deconstruct the argument lists of \"old-style\" functions "
"--- these are functions which use the :const:`METH_OLDARGS` parameter "
@@ -903,7 +954,7 @@ msgid ""
"continue to be used for that purpose."
msgstr ""
-#: ../Doc/c-api/arg.rst:463
+#: ../Doc/c-api/arg.rst:479
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 "
@@ -921,23 +972,23 @@ msgid ""
"a failure."
msgstr ""
-#: ../Doc/c-api/arg.rst:477
+#: ../Doc/c-api/arg.rst:493
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 ""
-#: ../Doc/c-api/arg.rst:493
+#: ../Doc/c-api/arg.rst:509
msgid ""
"The call to :c:func:`PyArg_UnpackTuple` in this example is entirely "
"equivalent to this call to :c:func:`PyArg_ParseTuple`::"
msgstr ""
-#: ../Doc/c-api/arg.rst:501
+#: ../Doc/c-api/arg.rst:517
msgid "Building values"
msgstr "Construction des valeurs"
-#: ../Doc/c-api/arg.rst:505
+#: ../Doc/c-api/arg.rst:521
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. "
@@ -945,7 +996,7 @@ msgid ""
"raised if *NULL* is returned."
msgstr ""
-#: ../Doc/c-api/arg.rst:510
+#: ../Doc/c-api/arg.rst:526
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 "
@@ -954,7 +1005,7 @@ msgid ""
"it to return a tuple of size 0 or one, parenthesize the format string."
msgstr ""
-#: ../Doc/c-api/arg.rst:516
+#: ../Doc/c-api/arg.rst:532
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. "
@@ -965,7 +1016,7 @@ msgid ""
"`Py_BuildValue` returns."
msgstr ""
-#: ../Doc/c-api/arg.rst:524
+#: ../Doc/c-api/arg.rst:540
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 "
@@ -973,173 +1024,181 @@ msgid ""
"be passed."
msgstr ""
-#: ../Doc/c-api/arg.rst:528
+#: ../Doc/c-api/arg.rst:544
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 ""
-#: ../Doc/c-api/arg.rst:534
+#: ../Doc/c-api/arg.rst:550
msgid "``s`` (:class:`str` or ``None``) [char \\*]"
msgstr "``s`` (:class:`str` ou ``None``) [char \\*]"
-#: ../Doc/c-api/arg.rst:533
+#: ../Doc/c-api/arg.rst:549
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 ""
-#: ../Doc/c-api/arg.rst:539
+#: ../Doc/c-api/arg.rst:555
msgid "``s#`` (:class:`str` or ``None``) [char \\*, int]"
msgstr "``s#`` (:class:`str` ou ``None``) [char \\*, int]"
-#: ../Doc/c-api/arg.rst:537
+#: ../Doc/c-api/arg.rst:553
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 ""
-#: ../Doc/c-api/arg.rst:543
+#: ../Doc/c-api/arg.rst:559
msgid "``y`` (:class:`bytes`) [char \\*]"
msgstr "``y`` (:class:`bytes`) [char \\*]"
-#: ../Doc/c-api/arg.rst:542
+#: ../Doc/c-api/arg.rst:558
msgid ""
"This converts a C string to a Python :class:`bytes` object. If the C string "
"pointer is *NULL*, ``None`` is returned."
msgstr ""
-#: ../Doc/c-api/arg.rst:547
+#: ../Doc/c-api/arg.rst:563
msgid "``y#`` (:class:`bytes`) [char \\*, int]"
msgstr "``y#`` (:class:`bytes`) [char \\*, int]"
-#: ../Doc/c-api/arg.rst:546
+#: ../Doc/c-api/arg.rst:562
msgid ""
"This converts a C string and its lengths to a Python object. If the C "
"string pointer is *NULL*, ``None`` is returned."
msgstr ""
-#: ../Doc/c-api/arg.rst:550
+#: ../Doc/c-api/arg.rst:566
msgid "``z`` (:class:`str` or ``None``) [char \\*]"
msgstr "``z`` (:class:`str` ou ``None``) [char \\*]"
-#: ../Doc/c-api/arg.rst:550 ../Doc/c-api/arg.rst:565
+#: ../Doc/c-api/arg.rst:566 ../Doc/c-api/arg.rst:582
msgid "Same as ``s``."
msgstr ""
-#: ../Doc/c-api/arg.rst:553
+#: ../Doc/c-api/arg.rst:569
msgid "``z#`` (:class:`str` or ``None``) [char \\*, int]"
msgstr "``z#`` (:class:`str` ou ``None``) [char \\*, int]"
-#: ../Doc/c-api/arg.rst:553 ../Doc/c-api/arg.rst:568
+#: ../Doc/c-api/arg.rst:569 ../Doc/c-api/arg.rst:585
msgid "Same as ``s#``."
msgstr ""
-#: ../Doc/c-api/arg.rst:556
+#: ../Doc/c-api/arg.rst:574
+msgid "``u`` (:class:`str`) [wchar_t \\*]"
+msgstr "``u`` (:class:`str`) [wchar_t \\*]"
+
+#: ../Doc/c-api/arg.rst:572
msgid ""
-"Convert a null-terminated buffer of Unicode (UCS-2 or UCS-4) data to a "
-"Python Unicode object. If the Unicode buffer pointer is *NULL*, ``None`` is "
-"returned."
+"Convert a null-terminated :c:type:`wchar_t` buffer of Unicode (UTF-16 or "
+"UCS-4) data to a Python Unicode object. If the Unicode buffer pointer is "
+"*NULL*, ``None`` is returned."
msgstr ""
-#: ../Doc/c-api/arg.rst:560
+#: ../Doc/c-api/arg.rst:579
+msgid "``u#`` (:class:`str`) [wchar_t \\*, int]"
+msgstr "``u#`` (:class:`str`) [wchar_t \\*, int]"
+
+#: ../Doc/c-api/arg.rst:577
msgid ""
-"Convert a Unicode (UCS-2 or UCS-4) data buffer and its length to a Python "
+"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 ""
-#: ../Doc/c-api/arg.rst:565
+#: ../Doc/c-api/arg.rst:582
msgid "``U`` (:class:`str` or ``None``) [char \\*]"
msgstr "``U`` (:class:`str` ou ``None``) [char \\*]"
-#: ../Doc/c-api/arg.rst:568
+#: ../Doc/c-api/arg.rst:585
msgid "``U#`` (:class:`str` or ``None``) [char \\*, int]"
msgstr "``U#`` (:class:`str` ou ``None``) [char \\*, int]"
-#: ../Doc/c-api/arg.rst:571
+#: ../Doc/c-api/arg.rst:588
msgid "Convert a plain C :c:type:`int` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:574
+#: ../Doc/c-api/arg.rst:591
msgid "``b`` (:class:`int`) [char]"
-msgstr "``b`` (:class:`int`) [char]"
+msgstr "``b`` (:class:`int`) [``char``]"
-#: ../Doc/c-api/arg.rst:574
+#: ../Doc/c-api/arg.rst:591
msgid "Convert a plain C :c:type:`char` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:577
+#: ../Doc/c-api/arg.rst:594
msgid "Convert a plain C :c:type:`short int` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:580
+#: ../Doc/c-api/arg.rst:597
msgid "Convert a C :c:type:`long int` to a Python integer object."
-msgstr "Convertit un :c:type:`long int` en un int Python."
+msgstr "Convertit un :c:type:`long int` en un *int* Python."
-#: ../Doc/c-api/arg.rst:583
+#: ../Doc/c-api/arg.rst:600
msgid "Convert a C :c:type:`unsigned char` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:586
+#: ../Doc/c-api/arg.rst:603
msgid "Convert a C :c:type:`unsigned short int` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:589
+#: ../Doc/c-api/arg.rst:606
msgid "Convert a C :c:type:`unsigned int` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:592
+#: ../Doc/c-api/arg.rst:609
msgid "Convert a C :c:type:`unsigned long` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:595
+#: ../Doc/c-api/arg.rst:612
msgid "Convert a C :c:type:`long long` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:598
+#: ../Doc/c-api/arg.rst:615
msgid "Convert a C :c:type:`unsigned long long` to a Python integer object."
msgstr ""
-#: ../Doc/c-api/arg.rst:601
+#: ../Doc/c-api/arg.rst:618
msgid "Convert a C :c:type:`Py_ssize_t` to a Python integer."
msgstr ""
-#: ../Doc/c-api/arg.rst:605
+#: ../Doc/c-api/arg.rst:622
msgid "``c`` (:class:`bytes` of length 1) [char]"
-msgstr "``c`` (:class:`bytes` de taille 1) [char]"
+msgstr "``c`` (:class:`bytes` de taille 1) [``char``]"
-#: ../Doc/c-api/arg.rst:604
+#: ../Doc/c-api/arg.rst:621
msgid ""
"Convert a C :c:type:`int` representing a byte to a Python :class:`bytes` "
"object of length 1."
msgstr ""
-#: ../Doc/c-api/arg.rst:608
+#: ../Doc/c-api/arg.rst:625
msgid ""
"Convert a C :c:type:`int` representing a character to Python :class:`str` "
"object of length 1."
msgstr ""
-#: ../Doc/c-api/arg.rst:612
+#: ../Doc/c-api/arg.rst:629
msgid "Convert a C :c:type:`double` to a Python floating point number."
msgstr ""
-#: ../Doc/c-api/arg.rst:615
+#: ../Doc/c-api/arg.rst:632
msgid "Convert a C :c:type:`float` to a Python floating point number."
msgstr ""
-#: ../Doc/c-api/arg.rst:618
+#: ../Doc/c-api/arg.rst:635
msgid "``D`` (:class:`complex`) [Py_complex \\*]"
-msgstr "``D`` (:class:`complex`) [Py_complex \\*]"
+msgstr "``D`` (:class:`complex`) [``Py_complex *``]"
-#: ../Doc/c-api/arg.rst:618
+#: ../Doc/c-api/arg.rst:635
msgid "Convert a C :c:type:`Py_complex` structure to a Python complex number."
msgstr ""
-#: ../Doc/c-api/arg.rst:621
+#: ../Doc/c-api/arg.rst:638
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 "
@@ -1149,26 +1208,26 @@ msgid ""
"yet, :exc:`SystemError` is set."
msgstr ""
-#: ../Doc/c-api/arg.rst:629
+#: ../Doc/c-api/arg.rst:646
msgid "``S`` (object) [PyObject \\*]"
-msgstr "``S`` (object) [PyObject \\*]"
+msgstr "``S`` (objet) [``PyObject *``]"
-#: ../Doc/c-api/arg.rst:629
+#: ../Doc/c-api/arg.rst:646
msgid "Same as ``O``."
msgstr ""
-#: ../Doc/c-api/arg.rst:634
+#: ../Doc/c-api/arg.rst:651
msgid "``N`` (object) [PyObject \\*]"
-msgstr "``N`` (object) [PyObject \\*]"
+msgstr "``N`` (objet) [``PyObject *``]"
-#: ../Doc/c-api/arg.rst:632
+#: ../Doc/c-api/arg.rst:649
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 ""
-#: ../Doc/c-api/arg.rst:637
+#: ../Doc/c-api/arg.rst:654
msgid ""
"Convert *anything* to a Python object through a *converter* function. The "
"function is called with *anything* (which should be compatible with :c:type:"
@@ -1176,40 +1235,40 @@ msgid ""
"*NULL* if an error occurred."
msgstr ""
-#: ../Doc/c-api/arg.rst:643
+#: ../Doc/c-api/arg.rst:660
msgid ""
"Convert a sequence of C values to a Python tuple with the same number of "
"items."
msgstr ""
-#: ../Doc/c-api/arg.rst:646
+#: ../Doc/c-api/arg.rst:663
msgid "``[items]`` (:class:`list`) [*matching-items*]"
msgstr "``[items]`` (:class:`list`) [*matching-items*]"
-#: ../Doc/c-api/arg.rst:646
+#: ../Doc/c-api/arg.rst:663
msgid ""
"Convert a sequence of C values to a Python list with the same number of "
"items."
msgstr ""
-#: ../Doc/c-api/arg.rst:651
+#: ../Doc/c-api/arg.rst:668
msgid "``{items}`` (:class:`dict`) [*matching-items*]"
msgstr "``{items}`` (:class:`dict`) [*matching-items*]"
-#: ../Doc/c-api/arg.rst:649
+#: ../Doc/c-api/arg.rst:666
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 ""
-#: ../Doc/c-api/arg.rst:653
+#: ../Doc/c-api/arg.rst:670
msgid ""
"If there is an error in the format string, the :exc:`SystemError` exception "
"is set and *NULL* returned."
msgstr ""
-#: ../Doc/c-api/arg.rst:658
+#: ../Doc/c-api/arg.rst:675
msgid ""
"Identical to :c:func:`Py_BuildValue`, except that it accepts a va_list "
"rather than a variable number of arguments."
diff --git a/c-api/buffer.po b/c-api/buffer.po
index 969f47aab..27729832b 100644
--- a/c-api/buffer.po
+++ b/c-api/buffer.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:11
msgid "Buffer Protocol"
-msgstr ""
+msgstr "Protocole tampon"
#: ../Doc/c-api/buffer.rst:18
msgid ""
@@ -29,6 +29,12 @@ msgid ""
"party libraries may define their own types for special purposes, such as "
"image processing or numeric analysis."
msgstr ""
+"Certains objets Python enveloppent l'accès à un tableau de mémoire sous-"
+"jacente (nommée zone tampon ou simplement tampon, *buffer* en anglais). Les "
+"objets natifs :class:`bytes` et :class:`bytearray` en sont des exemples, "
+"ainsi que quelques types d'extension comme :class:`array.array`. Les "
+"bibliothèques tierces peuvent définir leurs propres types à des fins "
+"spéciales, telles que le traitement d'image ou l'analyse numérique."
#: ../Doc/c-api/buffer.rst:24
msgid ""
@@ -37,12 +43,18 @@ msgid ""
"then desirable, in some situations, to access that buffer directly and "
"without intermediate copying."
msgstr ""
+"Alors que chacun de ces types a sa propre sémantique, ils partagent la "
+"caractéristique commune d'être soutenus par un tampon de mémoire important. "
+"Il est donc souhaitable, dans certains cas, d'accéder à cette mémoire "
+"directement sans l'étape intermédiaire de copie."
#: ../Doc/c-api/buffer.rst:29
msgid ""
"Python provides such a facility at the C level in the form of the :ref:"
"`buffer protocol `. This protocol has two sides:"
msgstr ""
+"Python fournit une telle facilité au niveau du C sous la forme de :ref:"
+"`protocole tampon `. Ce protocole comporte deux aspects :"
#: ../Doc/c-api/buffer.rst:34
msgid ""
@@ -50,12 +62,19 @@ msgid ""
"objects of that type to expose information about their underlying buffer. "
"This interface is described in the section :ref:`buffer-structs`;"
msgstr ""
+"du côté producteur, un type peut exporter une \"interface tampon\" qui "
+"permet aux objets de ce type d'exposer des informations concernant leur "
+"tampon sous-jacent. Cette interface est décrite dans la section :ref:`buffer-"
+"structs` ;"
#: ../Doc/c-api/buffer.rst:38
msgid ""
"on the consumer side, several means are available to obtain a pointer to the "
"raw underlying data of an object (for example a method parameter)."
msgstr ""
+"du côté consommateur, plusieurs moyens sont disponibles pour obtenir un "
+"pointeur vers les données sous-jacentes brutes d'un objet (par exemple un "
+"paramètre de méthode)."
#: ../Doc/c-api/buffer.rst:41
msgid ""
@@ -64,6 +83,10 @@ msgid ""
"example, the elements exposed by an :class:`array.array` can be multi-byte "
"values."
msgstr ""
+"Des objets simples tels que :class:`bytes` et :class:`bytearray` exposent "
+"leur tampon sous-jacent dans un format orienté octet. D'autres formes sont "
+"possibles ; par exemple, les éléments exposés par un :class:`array.array` "
+"peuvent être des valeurs multi-octets."
#: ../Doc/c-api/buffer.rst:45
msgid ""
@@ -76,22 +99,35 @@ msgid ""
"objects to selectively allow or reject exporting of read-write and read-only "
"buffers."
msgstr ""
+"Un exemple de consommateur de l'interface tampon est la méthode :meth:`~io."
+"BufferedIOBase.write` des objets fichiers : tout objet qui peut exporter une "
+"série d'octets à travers l'interface tampon peut être écrit dans un fichier. "
+"Alors que :meth:`write` n'a besoin que d'un accès lecture au contenu "
+"interne de l'objet qui lui est passé, d'autres méthodes telles que :meth:"
+"`~io.BufferedIOBase.readinto` nécessitent un accès écriture au contenu de "
+"leur argument. L'interface *buffer* permet aux objets d'autoriser ou de "
+"rejeter sélectivement l'exportation de tampons en mode lecture-écriture et "
+"en mode lecture seule."
#: ../Doc/c-api/buffer.rst:53
msgid ""
"There are two ways for a consumer of the buffer interface to acquire a "
"buffer over a target object:"
msgstr ""
+"Un consommateur de l'interface tampon peut acquérir un tampon sur un objet "
+"cible de deux manières :"
#: ../Doc/c-api/buffer.rst:56
msgid "call :c:func:`PyObject_GetBuffer` with the right parameters;"
-msgstr ""
+msgstr "appelez :c:func:`PyObject_GetBuffer` avec les paramètres appropriés ;"
#: ../Doc/c-api/buffer.rst:58
msgid ""
"call :c:func:`PyArg_ParseTuple` (or one of its siblings) with one of the "
"``y*``, ``w*`` or ``s*`` :ref:`format codes `."
msgstr ""
+"appelez :c:func:`PyArg_ParseTuple` (ou l'un de ses fonctions sœurs) avec "
+"l'un des ``y*``, ``w*`` ou ``s*`` :ref:`format codes `."
#: ../Doc/c-api/buffer.rst:61
msgid ""
@@ -99,6 +135,9 @@ msgid ""
"isn't needed anymore. Failure to do so could lead to various issues such as "
"resource leaks."
msgstr ""
+"Dans les deux cas, :c:func:`PyBuffer_Release` doit être appelée quand le "
+"tampon n'est plus nécessaire. Ne pas le faire peut conduire à divers "
+"problèmes tels que des fuites de ressources."
#: ../Doc/c-api/buffer.rst:69
msgid "Buffer structure"
@@ -115,6 +154,16 @@ msgid ""
"operating system library, or it could be used to pass around structured data "
"in its native, in-memory format."
msgstr ""
+"Les structures tampons (ou simplement les \"tampons\", *buffers* en anglais) "
+"sont utiles pour exposer les données binaires d'un autre objet au "
+"programmeur Python. Elles peuvent également être utilisées comme un "
+"mécanisme de découpage sans copie. En utilisant leur capacité à référencer "
+"un bloc de mémoire, il est possible d'exposer toutes les données au "
+"programmeur Python assez facilement. La mémoire peut être un grand tableau "
+"constant dans une extension C, il peut s'agir d'un bloc brut de mémoire à "
+"manipuler avant de passer à une bibliothèque de système d'exploitation ou "
+"être utilisé pour transmettre des données structurées dans son format natif "
+"en mémoire."
#: ../Doc/c-api/buffer.rst:80
msgid ""
@@ -124,6 +173,12 @@ msgid ""
"buffer is needed, a :ref:`memoryview ` object can be "
"created."
msgstr ""
+"Contrairement à la plupart des types de données exposés par l'interpréteur "
+"Python, les tampons ne sont pas de simples pointeurs vers :c:type:`PyObject` "
+"mais plutôt des structures C simples. Cela leur permet d'être créés et "
+"copiés très simplement. lorsque vous avez besoin d'une enveloppe générique "
+"(*wrapper* en anglais) pour un tampon, un objet :ref:`memoryview ` peut être créé."
#: ../Doc/c-api/buffer.rst:86
msgid ""
@@ -475,7 +530,7 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:321
msgid "format"
-msgstr ""
+msgstr "format"
#: ../Doc/c-api/buffer.rst:323 ../Doc/c-api/buffer.rst:325
#: ../Doc/c-api/buffer.rst:327 ../Doc/c-api/buffer.rst:329
@@ -560,7 +615,7 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:426
msgid "Buffer-related functions"
-msgstr "Fonctions relatives aux buffers"
+msgstr "Fonctions relatives aux tampons"
#: ../Doc/c-api/buffer.rst:430
msgid ""
@@ -622,33 +677,44 @@ msgstr ""
#: ../Doc/c-api/buffer.rst:478
msgid ""
+"Copy *len* bytes from *src* to its contiguous representation in *buf*. "
+"*order* can be ``'C'`` or ``'F'`` (for C-style or Fortran-style ordering). "
+"``0`` is returned on success, ``-1`` on error."
+msgstr ""
+
+#: ../Doc/c-api/buffer.rst:482
+msgid "This function fails if *len* != *src->len*."
+msgstr ""
+
+#: ../Doc/c-api/buffer.rst:487
+msgid ""
"Fill the *strides* array with byte-strides of a :term:`contiguous` (C-style "
"if *order* is ``'C'`` or Fortran-style if *order* is ``'F'``) array of the "
"given shape with the given number of bytes per element."
msgstr ""
-#: ../Doc/c-api/buffer.rst:485
+#: ../Doc/c-api/buffer.rst:494
msgid ""
"Handle buffer requests for an exporter that wants to expose *buf* of size "
"*len* with writability set according to *readonly*. *buf* is interpreted as "
"a sequence of unsigned bytes."
msgstr ""
-#: ../Doc/c-api/buffer.rst:489
+#: ../Doc/c-api/buffer.rst:498
msgid ""
"The *flags* argument indicates the request type. This function always fills "
"in *view* as specified by flags, unless *buf* has been designated as read-"
"only and :c:macro:`PyBUF_WRITABLE` is set in *flags*."
msgstr ""
-#: ../Doc/c-api/buffer.rst:493
+#: ../Doc/c-api/buffer.rst:502
msgid ""
"On success, set :c:member:`view->obj` to a new reference to *exporter* and "
"return 0. Otherwise, raise :c:data:`PyExc_BufferError`, set :c:member:`view-"
">obj` to *NULL* and return ``-1``;"
msgstr ""
-#: ../Doc/c-api/buffer.rst:497
+#: ../Doc/c-api/buffer.rst:506
msgid ""
"If this function is used as part of a :ref:`getbufferproc `, "
"*exporter* MUST be set to the exporting object and *flags* must be passed "
diff --git a/c-api/bytearray.po b/c-api/bytearray.po
index 7e2d3b57c..71594bee1 100644
--- a/c-api/bytearray.po
+++ b/c-api/bytearray.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:30+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,19 +19,21 @@ msgstr ""
#: ../Doc/c-api/bytearray.rst:6
msgid "Byte Array Objects"
-msgstr "Objets Tableau d'Octets"
+msgstr "Objets tableau d'octets"
#: ../Doc/c-api/bytearray.rst:13
msgid ""
"This subtype of :c:type:`PyObject` represents a Python bytearray object."
msgstr ""
-"Ce sous-type e :c:type:`PyObject` représente un objet bytearray Python."
+"Ce sous-type de :c:type:`PyObject` représente un objet ``bytearray`` Python."
#: ../Doc/c-api/bytearray.rst:18
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python bytearray "
"type; it is the same object as :class:`bytearray` in the Python layer."
msgstr ""
+"Cette instance de :c:type:`PyTypeObject` représente le type Python "
+"*bytearray*, c'est le même que :class:`bytearray` côté Python."
#: ../Doc/c-api/bytearray.rst:23
msgid "Type check macros"
@@ -42,16 +44,16 @@ msgid ""
"Return true if the object *o* is a bytearray object or an instance of a "
"subtype of the bytearray type."
msgstr ""
-"Renvoie la valeur true (vrai) si l'objet *o* est un objet bytearray ou une "
-"instance d'un sous-type du type bytearray."
+"Renvoie vrai si l'objet *o* est un ``bytearray`` ou une instance d'un sous-"
+"type du type ``bytearray``."
#: ../Doc/c-api/bytearray.rst:33
msgid ""
"Return true if the object *o* is a bytearray object, but not an instance of "
"a subtype of the bytearray type."
msgstr ""
-"Renvoie la valeur true si l'objet *o* est un objet bytearray, mais pas une "
-"instance d'un sous-type du type bytearray."
+"Renvoie vrai si l'objet *o* est un ``bytearray``, mais pas une instance d'un "
+"sous-type du type ``bytearray``."
#: ../Doc/c-api/bytearray.rst:38
msgid "Direct API functions"
@@ -62,26 +64,28 @@ msgid ""
"Return a new bytearray object from any object, *o*, that implements the :ref:"
"`buffer protocol `."
msgstr ""
+"Renvoie un nouvel objet *bytearray* depuis n'importe quel objet, *o*, qui "
+"implémente le :ref:`protocole buffer `."
#: ../Doc/c-api/bytearray.rst:50
msgid ""
"Create a new bytearray object from *string* and its length, *len*. On "
"failure, *NULL* is returned."
msgstr ""
-"Crée un nouvel objet bytearray à partir d'un objet *string* et de sa "
+"Crée un nouvel objet ``bytearray`` à partir d'un objet *string* et de sa "
"longueur, *len*. En cas d'échec, *NULL* est renvoyé."
#: ../Doc/c-api/bytearray.rst:56
msgid ""
"Concat bytearrays *a* and *b* and return a new bytearray with the result."
msgstr ""
-"Concatène les bytearrays *a* et *b* et renvoit un nouveau bytearray avec le "
-"résultat."
+"Concatène les ``bytearrays`` *a* et *b* et renvoie un nouveau ``bytearray`` "
+"avec le résultat."
#: ../Doc/c-api/bytearray.rst:61
msgid "Return the size of *bytearray* after checking for a *NULL* pointer."
msgstr ""
-"Renvoit la taille de *bytearray* après vérification de la présence d'un "
+"Renvoie la taille de *bytearray* après vérification de la présence d'un "
"pointeur *NULL*."
#: ../Doc/c-api/bytearray.rst:66
@@ -89,10 +93,13 @@ msgid ""
"Return the contents of *bytearray* as a char array after checking for a "
"*NULL* pointer. The returned array always has an extra null byte appended."
msgstr ""
+"Renvoie le contenu de *bytearray* sous forme d'un tableau de caractères, en "
+"vérifiant que ce n'est pas un pointeur *NULL*. Le tableau renvoyé se termine "
+"toujours par un octet *null*."
#: ../Doc/c-api/bytearray.rst:73
msgid "Resize the internal buffer of *bytearray* to *len*."
-msgstr "Redimensionne le buffer interne de *bytearray* à la taille *len*."
+msgstr "Redimensionne le tampon interne de *bytearray* à la taille *len*."
#: ../Doc/c-api/bytearray.rst:76
msgid "Macros"
diff --git a/c-api/bytes.po b/c-api/bytes.po
index 96e1005b0..6e7412d7c 100644
--- a/c-api/bytes.po
+++ b/c-api/bytes.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-02-15 00:30+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:6
msgid "Bytes Objects"
-msgstr "Objets *Bytes*"
+msgstr "Objets *bytes*"
#: ../Doc/c-api/bytes.rst:8
msgid ""
@@ -75,7 +75,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:68
msgid "Format Characters"
-msgstr ""
+msgstr "Caractères de format"
#: ../Doc/c-api/bytes.rst:68
msgid "Type"
@@ -124,7 +124,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:78
msgid "unsigned int"
-msgstr "unsigned int"
+msgstr "``unsigned int``"
#: ../Doc/c-api/bytes.rst:78
msgid "Exactly equivalent to ``printf(\"%u\")``."
@@ -148,7 +148,7 @@ msgstr ""
#: ../Doc/c-api/bytes.rst:84
msgid "unsigned long"
-msgstr "unsigned long"
+msgstr "``unsigned long``"
#: ../Doc/c-api/bytes.rst:84
msgid "Exactly equivalent to ``printf(\"%lu\")``."
diff --git a/c-api/capsule.po b/c-api/capsule.po
index f43f5b110..a724eff34 100644
--- a/c-api/capsule.po
+++ b/c-api/capsule.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -28,7 +28,7 @@ msgstr ""
"Reportez-vous à :ref:`using-capsules` pour plus d'informations sur "
"l'utilisation de ces objets."
-#: ../Doc/c-api/capsule.rst:15
+#: ../Doc/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\\*` "
@@ -38,57 +38,57 @@ msgid ""
"loaded modules."
msgstr ""
-#: ../Doc/c-api/capsule.rst:24
+#: ../Doc/c-api/capsule.rst:27
msgid "The type of a destructor callback for a capsule. Defined as::"
msgstr ""
-#: ../Doc/c-api/capsule.rst:28
+#: ../Doc/c-api/capsule.rst:31
msgid ""
"See :c:func:`PyCapsule_New` for the semantics of PyCapsule_Destructor "
"callbacks."
msgstr ""
-#: ../Doc/c-api/capsule.rst:34
+#: ../Doc/c-api/capsule.rst:37
msgid "Return true if its argument is a :c:type:`PyCapsule`."
msgstr ""
-#: ../Doc/c-api/capsule.rst:39
+#: ../Doc/c-api/capsule.rst:42
msgid ""
"Create a :c:type:`PyCapsule` encapsulating the *pointer*. The *pointer* "
"argument may not be *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:42
+#: ../Doc/c-api/capsule.rst:45
msgid "On failure, set an exception and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:44
+#: ../Doc/c-api/capsule.rst:47
msgid ""
"The *name* string may either be *NULL* or a pointer to a valid C string. If "
"non-*NULL*, this string must outlive the capsule. (Though it is permitted "
"to free it inside the *destructor*.)"
msgstr ""
-#: ../Doc/c-api/capsule.rst:48
+#: ../Doc/c-api/capsule.rst:51
msgid ""
"If the *destructor* argument is not *NULL*, it will be called with the "
"capsule as its argument when it is destroyed."
msgstr ""
-#: ../Doc/c-api/capsule.rst:51
+#: ../Doc/c-api/capsule.rst:54
msgid ""
"If this capsule will be stored as an attribute of a module, the *name* "
"should be specified as ``modulename.attributename``. This will enable other "
"modules to import the capsule using :c:func:`PyCapsule_Import`."
msgstr ""
-#: ../Doc/c-api/capsule.rst:58
+#: ../Doc/c-api/capsule.rst:61
msgid ""
"Retrieve the *pointer* stored in the capsule. On failure, set an exception "
"and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:61
+#: ../Doc/c-api/capsule.rst:64
msgid ""
"The *name* parameter must compare exactly to the name stored in the capsule. "
"If the name stored in the capsule is *NULL*, the *name* passed in must also "
@@ -96,46 +96,46 @@ msgid ""
"names."
msgstr ""
-#: ../Doc/c-api/capsule.rst:69
+#: ../Doc/c-api/capsule.rst:72
msgid ""
"Return the current destructor stored in the capsule. On failure, set an "
"exception and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:72
+#: ../Doc/c-api/capsule.rst:75
msgid ""
"It is legal for a capsule to have a *NULL* destructor. This makes a *NULL* "
"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:"
"`PyErr_Occurred` to disambiguate."
msgstr ""
-#: ../Doc/c-api/capsule.rst:79
+#: ../Doc/c-api/capsule.rst:82
msgid ""
"Return the current context stored in the capsule. On failure, set an "
"exception and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:82
+#: ../Doc/c-api/capsule.rst:85
msgid ""
"It is legal for a capsule to have a *NULL* context. This makes a *NULL* "
"return code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:"
"`PyErr_Occurred` to disambiguate."
msgstr ""
-#: ../Doc/c-api/capsule.rst:89
+#: ../Doc/c-api/capsule.rst:92
msgid ""
"Return the current name stored in the capsule. On failure, set an exception "
"and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:92
+#: ../Doc/c-api/capsule.rst:95
msgid ""
"It is legal for a capsule to have a *NULL* name. This makes a *NULL* return "
"code somewhat ambiguous; use :c:func:`PyCapsule_IsValid` or :c:func:"
"`PyErr_Occurred` to disambiguate."
msgstr ""
-#: ../Doc/c-api/capsule.rst:99
+#: ../Doc/c-api/capsule.rst:102
msgid ""
"Import a pointer to a C object from a capsule attribute in a module. The "
"*name* parameter should specify the full name to the attribute, as in "
@@ -145,14 +145,13 @@ msgid ""
"import the module conventionally (using :c:func:`PyImport_ImportModule`)."
msgstr ""
-#: ../Doc/c-api/capsule.rst:106
+#: ../Doc/c-api/capsule.rst:109
msgid ""
"Return the capsule's internal *pointer* on success. On failure, set an "
-"exception and return *NULL*. However, if :c:func:`PyCapsule_Import` failed "
-"to import the module, and *no_block* was true, no exception is set."
+"exception and return *NULL*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:112
+#: ../Doc/c-api/capsule.rst:115
msgid ""
"Determines whether or not *capsule* is a valid capsule. A valid capsule is "
"non-*NULL*, passes :c:func:`PyCapsule_CheckExact`, has a non-*NULL* pointer "
@@ -161,41 +160,41 @@ msgid ""
"compared.)"
msgstr ""
-#: ../Doc/c-api/capsule.rst:118
+#: ../Doc/c-api/capsule.rst:121
msgid ""
"In other words, if :c:func:`PyCapsule_IsValid` returns a true value, calls "
"to any of the accessors (any function starting with :c:func:`PyCapsule_Get`) "
"are guaranteed to succeed."
msgstr ""
-#: ../Doc/c-api/capsule.rst:122
+#: ../Doc/c-api/capsule.rst:125
msgid ""
"Return a nonzero value if the object is valid and matches the name passed "
"in. Return ``0`` otherwise. This function will not fail."
msgstr ""
-#: ../Doc/c-api/capsule.rst:127
+#: ../Doc/c-api/capsule.rst:131
msgid "Set the context pointer inside *capsule* to *context*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:129 ../Doc/c-api/capsule.rst:135
-#: ../Doc/c-api/capsule.rst:143 ../Doc/c-api/capsule.rst:150
+#: ../Doc/c-api/capsule.rst:133 ../Doc/c-api/capsule.rst:140
+#: ../Doc/c-api/capsule.rst:149 ../Doc/c-api/capsule.rst:157
msgid ""
"Return ``0`` on success. Return nonzero and set an exception on failure."
msgstr ""
-#: ../Doc/c-api/capsule.rst:133
+#: ../Doc/c-api/capsule.rst:138
msgid "Set the destructor inside *capsule* to *destructor*."
msgstr ""
-#: ../Doc/c-api/capsule.rst:139
+#: ../Doc/c-api/capsule.rst:145
msgid ""
"Set the name inside *capsule* to *name*. If non-*NULL*, the name must "
"outlive the capsule. If the previous *name* stored in the capsule was not "
"*NULL*, no attempt is made to free it."
msgstr ""
-#: ../Doc/c-api/capsule.rst:147
+#: ../Doc/c-api/capsule.rst:154
msgid ""
"Set the void pointer inside *capsule* to *pointer*. The pointer may not be "
"*NULL*."
diff --git a/c-api/cell.po b/c-api/cell.po
index ebee8a578..4564c9276 100644
--- a/c-api/cell.po
+++ b/c-api/cell.po
@@ -32,44 +32,50 @@ msgid ""
"support from the generated byte-code; these are not automatically de-"
"referenced when accessed. Cell objects are not likely to be useful elsewhere."
msgstr ""
-"Les objets \"Cellules\" sont utilisés pour implémenter des variables "
-"référencées dans de multiples enviromments. Pour chacune de ces variables, "
-"un objet cellule est créé pour stocker sa valeur ; les variables locales de "
-"chaque pile d'exécution qui référence cette valeur contiennent une référence "
-"sur les cellules des autres environnements qui utilisent aussi cette "
-"variable. Quand la valeur est accédée, la valeur de la cellule est utilisée, "
-"au lei de celle de l'objet cellule proprement dit. Ce dé-référencement de "
-"l'objet cellule requiert l'intervention du bytecode généré ; il n'est pas "
-"automatiquement dé-référencé quand il est accédé. Il est plausible que les "
-"objets cellules ne soit utilisés ailleurs."
+"Les objets \"Cellules\" (*cell* en anglais) sont utilisés pour implémenter "
+"des variables référencées dans de multiples environnements. Pour chacune de "
+"ces variables, un objet cellule est créé pour stocker sa valeur ; les "
+"variables locales de chaque pile d'exécution qui référence cette valeur "
+"contiennent une référence sur les cellules des autres environnements qui "
+"utilisent aussi cette variable. Quand la valeur est accédée, la valeur de la "
+"cellule est utilisée, au lei de celle de l'objet cellule proprement dit. Ce "
+"dé-référencement de l'objet cellule requiert l'intervention du *bytecode* "
+"généré ; il n'est pas automatiquement dé-référencé quand il est accédé. Il "
+"est plausible que les objets cellules ne soit utilisés ailleurs."
#: ../Doc/c-api/cell.rst:20
msgid "The C structure used for cell objects."
-msgstr ""
+msgstr "Structure C utilisée pour les objets cellules."
#: ../Doc/c-api/cell.rst:25
msgid "The type object corresponding to cell objects."
-msgstr ""
+msgstr "Type objet correspondant aux objets cellules."
#: ../Doc/c-api/cell.rst:30
msgid "Return true if *ob* is a cell object; *ob* must not be *NULL*."
msgstr ""
+"Renvoie ``True`` si *ob* est un objet cellule ; *ob* ne doit pas être à "
+"*NULL*."
#: ../Doc/c-api/cell.rst:35
msgid ""
"Create and return a new cell object containing the value *ob*. The parameter "
"may be *NULL*."
msgstr ""
+"Crée et retourne un nouvel objet cellule contenant la valeur *ob*. Le "
+"paramètre peut être mis à *NULL*."
#: ../Doc/c-api/cell.rst:41
msgid "Return the contents of the cell *cell*."
-msgstr ""
+msgstr "Renvoie le contenu de la cellule *cell*."
#: ../Doc/c-api/cell.rst:46
msgid ""
"Return the contents of the cell *cell*, but without checking that *cell* is "
"non-*NULL* and a cell object."
msgstr ""
+"Renvoie le contenu de la cellule *cell*, mais sans vérifier si *cell* est "
+"non *NULL* et sans vérifier si c'est un objet cellule."
#: ../Doc/c-api/cell.rst:52
msgid ""
@@ -78,6 +84,10 @@ msgid ""
"must be non-*NULL*; if it is not a cell object, ``-1`` will be returned. On "
"success, ``0`` will be returned."
msgstr ""
+"Définit le contenu de l'objet cellule à *value*. Cela libère la référence à "
+"toute valeur de la cellule. *value* peut être fixé à *NULL*. *cell* ne doit "
+"pas être *NULL* ; si ce n'est pas un objet cellule, ``-1`` est renvoyé. Si "
+"c'est un objet cellule, renvoie ``0``."
#: ../Doc/c-api/cell.rst:60
msgid ""
@@ -85,3 +95,6 @@ msgid ""
"are adjusted, and no checks are made for safety; *cell* must be non-*NULL* "
"and must be a cell object."
msgstr ""
+"Définit la valeur de l'objet cellule à *value*. Pas de comptage de "
+"références n'est ajusté et il n'y' a pas de contrôle effectué pour vérifier "
+"la sûreté ; *cell* doit être à non *NULL* et doit être un objet cellule."
diff --git a/c-api/code.po b/c-api/code.po
index 229f420b5..c0ff0efd5 100644
--- a/c-api/code.po
+++ b/c-api/code.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-02-15 00:30+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/code.rst:8
msgid "Code Objects"
-msgstr "Objets Code"
+msgstr "Objets code"
#: ../Doc/c-api/code.rst:12
msgid ""
@@ -27,7 +27,7 @@ msgid ""
"represents a chunk of executable code that hasn't yet been bound into a "
"function."
msgstr ""
-"Les objets Code sont un détail bas-niveau de l'implémentation CPython. "
+"Les objets *Code* sont spécifiques à l'implémentation bas niveau de CPython. "
"Chacun d'eux représente une partie de code exécutable, qui n'a pas encore "
"été lié dans une fonction."
@@ -36,20 +36,24 @@ msgid ""
"The C structure of the objects used to describe code objects. The fields of "
"this type are subject to change at any time."
msgstr ""
+"La structure C utilisée pour décrire les objets *Code*. Les attributs de "
+"cette structure sont sujets à changer à tout moment."
#: ../Doc/c-api/code.rst:24
msgid ""
"This is an instance of :c:type:`PyTypeObject` representing the Python :class:"
"`code` type."
msgstr ""
+"C'est une instance de :c:type:`PyTypeObject` représentant le type Python :"
+"class:`code`."
#: ../Doc/c-api/code.rst:30
msgid "Return true if *co* is a :class:`code` object."
-msgstr ""
+msgstr "Renvoie vrai si *co* est un objet :class:`code`."
#: ../Doc/c-api/code.rst:34
msgid "Return the number of free variables in *co*."
-msgstr ""
+msgstr "Renvoie le nombre de variables libres dans *co*."
#: ../Doc/c-api/code.rst:38
msgid ""
@@ -58,6 +62,10 @@ msgid ""
"directly can bind you to a precise Python version since the definition of "
"the bytecode changes often."
msgstr ""
+"Renvoie un nouvel objet *code*. Si vous avez besoin d'un objet code factice "
+"pour créer une *frame*, utilisez plutôt :c:func:`PyCode_NewEmpty`. Appeler :"
+"c:func:`PyCode_New` peut vous lier directement à une version spécifique de "
+"Python, le *bytecode* étant sujet à modifications."
#: ../Doc/c-api/code.rst:46
msgid ""
@@ -65,3 +73,6 @@ msgid ""
"and first line number. It is illegal to :func:`exec` or :func:`eval` the "
"resulting code object."
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é."
diff --git a/c-api/complex.po b/c-api/complex.po
index a65fe67e6..11781e423 100644
--- a/c-api/complex.po
+++ b/c-api/complex.po
@@ -3,23 +3,23 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"POT-Creation-Date: 2017-09-21 09:15+0200\n"
+"PO-Revision-Date: 2018-02-15 00:31+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/c-api/complex.rst:6
msgid "Complex Number Objects"
-msgstr "Objets Nombres Complexes"
+msgstr "Objets nombres complexes"
#: ../Doc/c-api/complex.rst:10
msgid ""
@@ -45,7 +45,7 @@ msgid ""
"through pointers. This is consistent throughout the API."
msgstr ""
"Remarquez que les fonctions qui acceptent ces structures comme paramètres et "
-"les retournent comme résultats le font *par valeur* au lieur de les dé-"
+"les renvoient comme résultats le font *par valeur* au lieur de les dé-"
"référencer en utilisant des pointeurs. Cela est constant dans toute l'API."
#: ../Doc/c-api/complex.rst:26
@@ -55,54 +55,73 @@ msgid ""
"objects use structures of this type as input or output values, as "
"appropriate. It is defined as::"
msgstr ""
+"Structure C représentant la valeur d'un nombre complexe Python. La majorité "
+"des fonctions qui traitent des nombres complexes utilisent cette structure "
+"en entrée ou en sortie, selon le cas. Elle est définie par ::"
#: ../Doc/c-api/complex.rst:39
msgid ""
"Return the sum of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie la somme de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:45
msgid ""
"Return the difference between two complex numbers, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie la différence de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:51
msgid ""
"Return the negation of the complex number *complex*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie l'opposé du nombre complexe *complex*, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:57
msgid ""
"Return the product of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie le produit de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:63
msgid ""
"Return the quotient of two complex numbers, using the C :c:type:`Py_complex` "
"representation."
msgstr ""
+"Renvoie le quotient de deux nombres complexes, sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:66
msgid ""
"If *divisor* is null, this method returns zero and sets :c:data:`errno` to :"
"c:data:`EDOM`."
msgstr ""
+"Si *divisor* est nul, cette méthode renvoie zéro et assigne :c:data:`EDOM` "
+"à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:72
msgid ""
"Return the exponentiation of *num* by *exp*, using the C :c:type:"
"`Py_complex` representation."
msgstr ""
+"Renvoie *num* à la puissance *exp*, sous la forme d'un :c:type:`Py_complex` "
+"en C."
#: ../Doc/c-api/complex.rst:75
msgid ""
"If *num* is null and *exp* is not a positive real number, this method "
"returns zero and sets :c:data:`errno` to :c:data:`EDOM`."
msgstr ""
+"Si *num* est nul et *exp* n'est pas un nombre réel positif, cette méthode "
+"renvoie zéro et assigne :c:data:`EDOM` à :c:data:`errno`."
#: ../Doc/c-api/complex.rst:80
msgid "Complex Numbers as Python Objects"
@@ -112,46 +131,64 @@ msgstr "Nombres complexes en tant qu'objets Python"
msgid ""
"This subtype of :c:type:`PyObject` represents a Python complex number object."
msgstr ""
+"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre complexe en "
+"Python."
#: ../Doc/c-api/complex.rst:90
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python complex number "
"type. It is the same object as :class:`complex` in the Python layer."
msgstr ""
+"Cette instance de :c:type:`PyTypeObject` représente le type nombre complexe "
+"Python. C'est le même objet que la classe :class:`complex` de la couche "
+"Python."
#: ../Doc/c-api/complex.rst:96
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject` or a subtype of :"
"c:type:`PyComplexObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject` ou un sous-"
+"type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:102
msgid ""
"Return true if its argument is a :c:type:`PyComplexObject`, but not a "
"subtype of :c:type:`PyComplexObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyComplexObject`, mais pas "
+"un sous-type de :c:type:`PyComplexObject`."
#: ../Doc/c-api/complex.rst:108
msgid ""
"Create a new Python complex number object from a C :c:type:`Py_complex` "
"value."
msgstr ""
+"Crée un nouveau nombre complexe à partir de la valeur d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:113
msgid "Return a new :c:type:`PyComplexObject` object from *real* and *imag*."
msgstr ""
+"Renvoie un nouveau :c:type:`PyComplexObject` à partir de *real* et de *imag*."
#: ../Doc/c-api/complex.rst:118
msgid "Return the real part of *op* as a C :c:type:`double`."
msgstr ""
+"Renvoie la partie réelle du nombre complexe *op* sous la forme d'un :c:type:"
+"`double` en C."
#: ../Doc/c-api/complex.rst:123
msgid "Return the imaginary part of *op* as a C :c:type:`double`."
msgstr ""
+"Renvoie la partie imaginaire du nombre complexe *op* sous la forme d'un :c:"
+"type:`double` en C."
#: ../Doc/c-api/complex.rst:128
msgid "Return the :c:type:`Py_complex` value of the complex number *op*."
msgstr ""
+"Renvoie la valeur du nombre complexe *op* sous la forme d'un :c:type:"
+"`Py_complex` en C."
#: ../Doc/c-api/complex.rst:130
msgid ""
@@ -159,3 +196,7 @@ msgid ""
"method, this method will first be called to convert *op* to a Python complex "
"number object. Upon failure, this method returns ``-1.0`` as a real value."
msgstr ""
+"Si *op* n'est pas un nombre complexe Python mais a une méthode :meth:"
+"`__complex__`, cette méthode est d'abord appelée pour convertir *op* en "
+"nombre complexe Python. En cas d'échec, cette méthode renvoie ``-1.0`` en "
+"tant que nombre réel."
diff --git a/c-api/concrete.po b/c-api/concrete.po
index 473f05e6e..595d2ce19 100644
--- a/c-api/concrete.po
+++ b/c-api/concrete.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:31+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/concrete.rst:8
msgid "Concrete Objects Layer"
-msgstr "Couche des Objets Concrets"
+msgstr "Couche des objets concrets"
#: ../Doc/c-api/concrete.rst:10
msgid ""
@@ -30,6 +30,13 @@ msgid ""
"object is a dictionary, use :c:func:`PyDict_Check`. The chapter is "
"structured like the \"family tree\" of Python object types."
msgstr ""
+"Les fonctions de ce chapitre sont spécifiques à certains types d'objets "
+"Python. Leur donner un objet du mauvais type n'est pas une bonne idée, si "
+"vous recevez un objet d'un programme Python, et que vous n'êtes pas sûr "
+"qu'il soit du bon type, vous devez vérifier son type en premier. Par "
+"exemple, pour vérifier qu'un objet est un dictionnaire, utilisez :c:func:"
+"`PyDict_Check`. Ce chapitre est organisé comme un arbre généalogique de "
+"types d'objets Python."
#: ../Doc/c-api/concrete.rst:19
msgid ""
@@ -74,12 +81,12 @@ msgstr ""
#: ../Doc/c-api/concrete.rst:78
msgid "Container Objects"
-msgstr "Objets Conteneurs"
+msgstr "Objets conteneurs"
#: ../Doc/c-api/concrete.rst:91
msgid "Function Objects"
-msgstr ""
+msgstr "Objets fonctions"
#: ../Doc/c-api/concrete.rst:102
msgid "Other Objects"
-msgstr "Autres Objets"
+msgstr "Autres objets"
diff --git a/c-api/coro.po b/c-api/coro.po
index af194ab63..205f1dbc6 100644
--- a/c-api/coro.po
+++ b/c-api/coro.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:31+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,25 +19,28 @@ msgstr ""
#: ../Doc/c-api/coro.rst:6
msgid "Coroutine Objects"
-msgstr ""
+msgstr "Objets coroutines"
#: ../Doc/c-api/coro.rst:10
msgid ""
"Coroutine objects are what functions declared with an ``async`` keyword "
"return."
msgstr ""
+"Les objets coroutines sont les objets renvoyés par les fonctions déclarées "
+"avec le mot clef ``async``."
#: ../Doc/c-api/coro.rst:16
msgid "The C structure used for coroutine objects."
-msgstr ""
+msgstr "La structure C utilisée pour les objets coroutine."
#: ../Doc/c-api/coro.rst:21
msgid "The type object corresponding to coroutine objects."
-msgstr ""
+msgstr "L'objet type correspondant aux objets coroutines."
#: ../Doc/c-api/coro.rst:26
msgid "Return true if *ob*'s type is *PyCoro_Type*; *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type *PyCoro_Type*. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/coro.rst:31
msgid ""
@@ -46,3 +49,7 @@ msgid ""
"to *frame* is stolen by this function. The *frame* argument must not be "
"*NULL*."
msgstr ""
+"Crée et renvoie un nouvel objet coroutine basé sur l'objet *frame*, avec "
+"``__name__`` et ``__qualname__`` respectivement assignés de *name* et "
+"*qualname*. Une référence à *frame* est empruntée par cette fonction. "
+"L'argument *frame* ne doit pas être *NULL*."
diff --git a/c-api/datetime.po b/c-api/datetime.po
index 4d29d84f0..e8235d7f5 100644
--- a/c-api/datetime.po
+++ b/c-api/datetime.po
@@ -31,74 +31,102 @@ msgid ""
"structure into a static variable, :c:data:`PyDateTimeAPI`, that is used by "
"the following macros."
msgstr ""
+"De nombreux objets *date* et *time* sont exposés par le module :mod:"
+"`DateTime`. Avant d'utiliser une de ces fonctions, le fichier d'en-tête :"
+"file:`datetime.h` doit être inclus dans vos sources (veuillez noter qu'il "
+"n'est pas inclus par le fichier :file:`Python.h`) et la macro :c:macro:"
+"`PyDateTime_IMPORT` doit-être invoquée, généralement lors de la fonction "
+"d'initialisation du module. La macro crée un pointeur vers une structure C "
+"et place celui-ci dans une variable statique, :c:data:`PyDateTimeAPI`, qui "
+"est utilisée par les macros suivantes."
#: ../Doc/c-api/datetime.rst:16
msgid "Type-check macros:"
-msgstr ""
+msgstr "Macros pour vérifier les types :"
#: ../Doc/c-api/datetime.rst:20
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType` or a subtype "
"of :c:data:`PyDateTime_DateType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType` ou un sous-"
+"type de :c:data:`PyDateTime_DateType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:26
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateType`. *ob* ne doit "
+"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:32
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType` or a "
"subtype of :c:data:`PyDateTime_DateTimeType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType` ou un "
+"sous-type de :c:data:`PyDateTime_DateTimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:38
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DateTimeType`. *ob* must "
"not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DateTimeType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:44
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType` or a subtype "
"of :c:data:`PyDateTime_TimeType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType` ou un sous-"
+"type de :c:data:`PyDateTime_TimeType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:50
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TimeType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TimeType`. *ob* ne doit "
+"pas être *NULL*."
#: ../Doc/c-api/datetime.rst:56
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType` or a subtype "
"of :c:data:`PyDateTime_DeltaType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType` ou un sous-"
+"type de :c:data:`PyDateTime_DeltaType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:62
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_DeltaType`. *ob* must not "
"be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_DeltaType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:68
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType` or a subtype "
"of :c:data:`PyDateTime_TZInfoType`. *ob* must not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType` ou un sous-"
+"type de :c:data:`PyDateTime_TZInfoType`. *ob* ne doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:74
msgid ""
"Return true if *ob* is of type :c:data:`PyDateTime_TZInfoType`. *ob* must "
"not be *NULL*."
msgstr ""
+"Renvoie vrai si *ob* est de type :c:data:`PyDateTime_TZInfoType`. *ob* ne "
+"doit pas être *NULL*."
#: ../Doc/c-api/datetime.rst:78
msgid "Macros to create objects:"
-msgstr ""
+msgstr "Macros pour créer des objets :"
#: ../Doc/c-api/datetime.rst:82
msgid ""
@@ -132,18 +160,22 @@ msgid ""
"`PyDateTime_DateTime`). The argument must not be *NULL*, and the type is "
"not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *date*. L'argument doit être une "
+"instance de :c:data:`PyDateTime_Date`, ou une sous-classe (telle que :c:data:"
+"`PyDateTime_DateTime`). L'argument ne doit pas être *NULL*, et le type n'est "
+"pas vérifié :"
#: ../Doc/c-api/datetime.rst:112
msgid "Return the year, as a positive int."
-msgstr ""
+msgstr "Renvoie l'année, sous forme d'entier positif."
#: ../Doc/c-api/datetime.rst:117
msgid "Return the month, as an int from 1 through 12."
-msgstr ""
+msgstr "Renvoie le mois, sous forme d'entier allant de 1 à 12."
#: ../Doc/c-api/datetime.rst:122
msgid "Return the day, as an int from 1 through 31."
-msgstr ""
+msgstr "Renvoie le jour, sous forme d'entier allant de 1 à 31."
#: ../Doc/c-api/datetime.rst:125
msgid ""
@@ -151,22 +183,25 @@ msgid ""
"instance of :c:data:`PyDateTime_DateTime`, including subclasses. The "
"argument must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *datetime*. L'argument doit être "
+"une instance de :c:data:`PyDateTime_DateTime` ou une sous-classe de celle-"
+"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:131 ../Doc/c-api/datetime.rst:155
msgid "Return the hour, as an int from 0 through 23."
-msgstr ""
+msgstr "Renvoie l'heure, sous forme d'entier allant de 0 à 23."
#: ../Doc/c-api/datetime.rst:136 ../Doc/c-api/datetime.rst:160
msgid "Return the minute, as an int from 0 through 59."
-msgstr ""
+msgstr "Renvoie la minute, sous forme d'entier allant de 0 à 59."
#: ../Doc/c-api/datetime.rst:141 ../Doc/c-api/datetime.rst:165
msgid "Return the second, as an int from 0 through 59."
-msgstr ""
+msgstr "Renvoie la seconde, sous forme d'entier allant de 0 à 59."
#: ../Doc/c-api/datetime.rst:146 ../Doc/c-api/datetime.rst:170
msgid "Return the microsecond, as an int from 0 through 999999."
-msgstr ""
+msgstr "Renvoie la microseconde, sous forme d'entier allant de 0 à 999999."
#: ../Doc/c-api/datetime.rst:149
msgid ""
@@ -174,6 +209,9 @@ msgid ""
"instance of :c:data:`PyDateTime_Time`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *time*. L'argument doit être une "
+"instance de :c:data:`PyDateTime_Time` ou une sous-classe de celle-ci. "
+"L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:173
msgid ""
@@ -181,22 +219,28 @@ msgid ""
"instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument "
"must not be *NULL*, and the type is not checked:"
msgstr ""
+"Macros pour extraire les champs des objets *time delta*. L'argument doit "
+"être une instance de :c:data:`PyDateTime_Delta` ou une sous-classe de celle-"
+"ci. L'argument ne doit pas être *NULL*, et le type n'est pas vérifié :"
#: ../Doc/c-api/datetime.rst:179
msgid "Return the number of days, as an int from -999999999 to 999999999."
msgstr ""
+"Renvoie le nombre de jours, sous forme d'entier allant de -999999999 à "
+"999999999."
#: ../Doc/c-api/datetime.rst:186
msgid "Return the number of seconds, as an int from 0 through 86399."
-msgstr ""
+msgstr "Renvoie le nombre de secondes sous forme d'entier allant de 0 à 86399."
#: ../Doc/c-api/datetime.rst:193
msgid "Return the number of microseconds, as an int from 0 through 999999."
msgstr ""
+"Renvoie le nombre de microsecondes, sous forme d'entier allant de 0 à 999999."
#: ../Doc/c-api/datetime.rst:198
msgid "Macros for the convenience of modules implementing the DB API:"
-msgstr ""
+msgstr "Macros de confort pour les modules implémentant l'API DB :"
#: ../Doc/c-api/datetime.rst:202
msgid ""
diff --git a/c-api/descriptor.po b/c-api/descriptor.po
index 12659379a..e64e485f9 100644
--- a/c-api/descriptor.po
+++ b/c-api/descriptor.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:32+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,17 +19,19 @@ msgstr ""
#: ../Doc/c-api/descriptor.rst:6
msgid "Descriptor Objects"
-msgstr ""
+msgstr "Les descripteurs"
#: ../Doc/c-api/descriptor.rst:8
msgid ""
"\"Descriptors\" are objects that describe some attribute of an object. They "
"are found in the dictionary of type objects."
msgstr ""
+"Les \"Descripteurs\" sont des objets décrivant des attributs pour un objet. "
+"Ils se trouvent dans le dictionnaire du type de l'objet."
#: ../Doc/c-api/descriptor.rst:15
msgid "The type object for the built-in descriptor types."
-msgstr ""
+msgstr "L'objet *type* des descripteurs natifs."
#: ../Doc/c-api/descriptor.rst:35
msgid ""
@@ -37,3 +39,6 @@ msgid ""
"false 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 "
+"pas de vérification d'erreur."
diff --git a/c-api/dict.po b/c-api/dict.po
index 456fc8e9c..53170b14a 100644
--- a/c-api/dict.po
+++ b/c-api/dict.po
@@ -164,7 +164,7 @@ msgstr ""
#: ../Doc/c-api/dict.rst:160
msgid "For example::"
-msgstr "Par exemple : ::"
+msgstr "Par exemple ::"
#: ../Doc/c-api/dict.rst:170
msgid ""
diff --git a/c-api/exceptions.po b/c-api/exceptions.po
index d1986dfeb..04e1d9908 100644
--- a/c-api/exceptions.po
+++ b/c-api/exceptions.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-01 13:21+0200\n"
-"PO-Revision-Date: 2017-05-27 19:52+0200\n"
+"PO-Revision-Date: 2018-02-15 00:32+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -486,7 +486,7 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:477
msgid "Signal Handling"
-msgstr ""
+msgstr "Traitement des signaux"
#: ../Doc/c-api/exceptions.rst:487
msgid ""
@@ -559,7 +559,7 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:554
msgid "Exception Objects"
-msgstr "Objets Exception"
+msgstr "Objets exception"
#: ../Doc/c-api/exceptions.rst:558
msgid ""
@@ -610,7 +610,7 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:603
msgid "Unicode Exception Objects"
-msgstr "Objets Exception Unicode"
+msgstr "Objets exception Unicode"
#: ../Doc/c-api/exceptions.rst:605
msgid ""
@@ -1273,11 +1273,11 @@ msgstr ""
#: ../Doc/c-api/exceptions.rst:949 ../Doc/c-api/exceptions.rst:1013
msgid "Notes:"
-msgstr "Notes : "
+msgstr "Notes :"
#: ../Doc/c-api/exceptions.rst:952
msgid "This is a base class for other standard exceptions."
-msgstr "C'est la classe de base pour les autres exceptions standards"
+msgstr "C'est la classe de base pour les autres exceptions standards."
#: ../Doc/c-api/exceptions.rst:955
msgid "This is the same as :exc:`weakref.ReferenceError`."
diff --git a/c-api/file.po b/c-api/file.po
index db2b2fe0e..4a6dabad8 100644
--- a/c-api/file.po
+++ b/c-api/file.po
@@ -32,6 +32,16 @@ msgid ""
"reporting in the interpreter; third-party code is advised to access the :mod:"
"`io` APIs instead."
msgstr ""
+"Ces API sont une émulation minimale de l'API C Python 2 pour les objets "
+"fichier natifs, qui reposaient sur la gestion des entrées-sorties avec "
+"tampon (:c:type:`FILE\\*`) de la bibliothèque standard C. En Python 3, les "
+"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 "
+"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."
#: ../Doc/c-api/file.rst:22
msgid ""
@@ -42,6 +52,13 @@ msgid ""
"failure. For a more comprehensive description of the arguments, please refer "
"to the :func:`io.open` function documentation."
msgstr ""
+"Crée un objet fichier Python à partir du descripteur d'un fichier déjà "
+"ouvert *fd*. Les arguments *name*, *encoding*, *errors* et *newline* peuvent "
+"être *NULL* pour utiliser ceux par défaut ; *buffering* peut être *-1* pour "
+"utiliser celui par défaut ; *name* est ignoré et gardé pour la rétro-"
+"compatibilité. Renvoie *NULL* en cas d'échec. Pour une description plus "
+"détaillée des arguments, merci de vous référer à la documentation de "
+"fonction :func:`io.open`."
#: ../Doc/c-api/file.rst:31
msgid ""
@@ -49,10 +66,14 @@ msgid ""
"level file descriptors can produce various issues (such as unexpected "
"ordering of data)."
msgstr ""
+"Étant donné que les flux de données Python possèdent leur propre couche de "
+"tampon, les mélanger avec des descripteurs de fichiers du niveau du système "
+"d'exploitation peut produire des erreurs (comme par exemple un ordre des "
+"données inattendu)."
#: ../Doc/c-api/file.rst:35
msgid "Ignore *name* attribute."
-msgstr ""
+msgstr "ignore l'attribut *name*"
#: ../Doc/c-api/file.rst:41
msgid ""
@@ -62,6 +83,11 @@ msgid ""
"integer, which is returned as the file descriptor value. Sets an exception "
"and returns ``-1`` on failure."
msgstr ""
+"Renvoie un descripteur de fichier associé avec *p* comme un :c:type:`int`. "
+"Si l'objet est un entier, sa valeur est renvoyée. Sinon, la méthode :meth:"
+"`~io.IOBase.fileno` de l'objet est appelée si elle existe; la méthode doit "
+"renvoyer un entier, qui est renvoyé en tant que valeur du descripteur. "
+"Affecte une exception et renvoie ``-1`` lors d'un échec."
#: ../Doc/c-api/file.rst:52
msgid ""
@@ -75,6 +101,16 @@ msgid ""
"regardless of length, but :exc:`EOFError` is raised if the end of the file "
"is reached immediately."
msgstr ""
+"Cette fonction, équivalente à ``p.readline([n])``, lit une ligne de l'objet "
+"*p*. *p* peut être un objet fichier ou n'importe quel objet qui possède une "
+"méthode :meth:`~io.IOBase.readline`. Si *n* vaut ``0``, une seule ligne est "
+"lue, indépendamment de la taille de la ligne. Si *n* est plus grand que "
+"``0``, un maximum de *n* octets seront lus en provenance du fichier ; une "
+"ligne partielle peut être renvoyée. Dans les deux cas, une chaîne de "
+"caractères vide est renvoyée si la fin du fichier est atteinte "
+"immédiatement. Cependant, si *n* est plus petit que ``0``, une ligne est lue "
+"indépendamment de sa taille, mais :exc:`EOFError` est levée si la fin du "
+"fichier est atteinte immédiatement."
#: ../Doc/c-api/file.rst:67
msgid ""
@@ -83,9 +119,16 @@ msgid ""
"instead of the :func:`repr`. Return ``0`` on success or ``-1`` on failure; "
"the appropriate exception will be set."
msgstr ""
+"Écrit l'objet *obj* dans l'objet fichier *p*. La seule option gérée pour "
+"*flags* est :const:`Py_PRINT_RAW` ; si défini, l'attribut :func:`str` de "
+"l'objet est écrit à la place de l'attribut :func:`repr`. Retourne ``0`` en "
+"cas de succès ou ``-1`` en cas échec ; l'exception appropriée sera levée."
#: ../Doc/c-api/file.rst:75
msgid ""
"Write string *s* to file object *p*. Return ``0`` on success or ``-1`` on "
"failure; the appropriate exception will be set."
msgstr ""
+"Écrit la chaîne de caractères *s* dans l'objet fichier *p*. Retourne ``0`` "
+"en cas de succès ou ``-1`` en cas d'échec ; l'exception appropriée sera mise "
+"en place."
diff --git a/c-api/float.po b/c-api/float.po
index 9308be4e7..f5aa5c435 100644
--- a/c-api/float.po
+++ b/c-api/float.po
@@ -19,40 +19,53 @@ msgstr ""
#: ../Doc/c-api/float.rst:6
msgid "Floating Point Objects"
-msgstr ""
+msgstr "Objets représentant les nombres à virgule flottante"
#: ../Doc/c-api/float.rst:13
msgid ""
"This subtype of :c:type:`PyObject` represents a Python floating point object."
msgstr ""
+"Ce sous-type de l'objet :c:type:`PyObject` représente un nombre à virgule "
+"flottante en Python."
#: ../Doc/c-api/float.rst:18
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python floating point "
"type. This is the same object as :class:`float` in the Python layer."
msgstr ""
+"Cette instance de l'objet :c:type:`PyTypeObject` représente le type nombre à "
+"virgule flottante en Python. C'est le même objet que la classe :class:"
+"`float` de la couche Python."
#: ../Doc/c-api/float.rst:24
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject` or a subtype of :c:"
"type:`PyFloatObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject` ou un sous-"
+"type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:30
msgid ""
"Return true if its argument is a :c:type:`PyFloatObject`, but not a subtype "
"of :c:type:`PyFloatObject`."
msgstr ""
+"Renvoie vrai si l'argument est de type :c:type:`PyFloatObject`, mais pas un "
+"sous-type de :c:type:`PyFloatObject`."
#: ../Doc/c-api/float.rst:36
msgid ""
"Create a :c:type:`PyFloatObject` object based on the string value in *str*, "
"or *NULL* on failure."
msgstr ""
+"Crée un objet :c:type:`PyFloatObject` à partir de la valeur de la chaîne de "
+"caractères *str*, ou *NULL* en cas d'échec."
#: ../Doc/c-api/float.rst:42
msgid "Create a :c:type:`PyFloatObject` object from *v*, or *NULL* on failure."
msgstr ""
+"Crée un objet :c:type:`PyFloatObject` à partir de *v*, ou *NULL* en cas "
+"d'échec."
#: ../Doc/c-api/float.rst:47
msgid ""
@@ -62,12 +75,20 @@ msgid ""
"This method returns ``-1.0`` upon failure, so one should call :c:func:"
"`PyErr_Occurred` to check for errors."
msgstr ""
+"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
+"type:`double` en C. Si le *pyfloat* n'est pas un nombre à virgule flottante "
+"mais contient une méthode :meth:`__float__`, elle est d'abord appelée pour "
+"convertir le *pyfloat* en nombre à virgule flottante. Cette méthode renvoie "
+"``-1.0`` en cas d'échec, il faut appeler :c:func:`PyErr_Occurred` pour "
+"vérifier les erreurs."
#: ../Doc/c-api/float.rst:56
msgid ""
"Return a C :c:type:`double` representation of the contents of *pyfloat*, but "
"without error checking."
msgstr ""
+"Renvoie une représentation du contenu d'un *pyfloat* sous la forme d'un :c:"
+"type:`double` en C, sans vérifier les erreurs."
#: ../Doc/c-api/float.rst:62
msgid ""
@@ -75,20 +96,29 @@ msgid ""
"minimum and maximum values of a float. It's a thin wrapper around the header "
"file :file:`float.h`."
msgstr ""
+"Renvoie une instance *structseq* qui contient les informations sur la "
+"précision et les valeurs minimales et maximales pour un nombre à virgule "
+"flottante. C'est une enveloppe autour du fichier d'entête :file:`float.h`."
#: ../Doc/c-api/float.rst:69
msgid ""
"Return the maximum representable finite float *DBL_MAX* as C :c:type:"
"`double`."
msgstr ""
+"Renvoie le nombre à virgule flottante fini maximal *DBL_MAX* sous la forme "
+"d'un :c:type:`double` en C."
#: ../Doc/c-api/float.rst:74
msgid ""
"Return the minimum normalized positive float *DBL_MIN* as C :c:type:`double`."
msgstr ""
+"Renvoie le nombre à virgule flottante minimal normalisé *DBL_MIN* sous la "
+"forme :c:type:`double` en C."
#: ../Doc/c-api/float.rst:78
msgid ""
"Clear the float free list. Return the number of items that could not be "
"freed."
msgstr ""
+"Libère la mémoire de la *free list* des nombres à virgule flottante. Renvoie "
+"le nombre d'éléments qui n'ont pas pu être libérés."
diff --git a/c-api/function.po b/c-api/function.po
index d5dc14040..45e1916d0 100644
--- a/c-api/function.po
+++ b/c-api/function.po
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/function.rst:6
msgid "Function Objects"
-msgstr ""
+msgstr "Objets fonctions"
#: ../Doc/c-api/function.rst:10
msgid "There are a few functions specific to Python functions."
diff --git a/c-api/gcsupport.po b/c-api/gcsupport.po
index 48cc1038b..65bdcae4e 100644
--- a/c-api/gcsupport.po
+++ b/c-api/gcsupport.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -78,7 +78,8 @@ msgstr ""
#: ../Doc/c-api/gcsupport.rst:51
msgid ""
"Resize an object allocated by :c:func:`PyObject_NewVar`. Returns the "
-"resized object or *NULL* on failure."
+"resized object or *NULL* on failure. *op* must not be tracked by the "
+"collector yet."
msgstr ""
#: ../Doc/c-api/gcsupport.rst:57
diff --git a/c-api/gen.po b/c-api/gen.po
index 89dfc4af2..4cc345e94 100644
--- a/c-api/gen.po
+++ b/c-api/gen.po
@@ -8,18 +8,18 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-05-25 22:40+0200\n"
+"PO-Revision-Date: 2018-02-15 00:32+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/c-api/gen.rst:6
msgid "Generator Objects"
-msgstr "Objets Générateur"
+msgstr "Objets générateur"
#: ../Doc/c-api/gen.rst:8
msgid ""
@@ -29,13 +29,13 @@ msgid ""
"`PyGen_NewWithQualName`."
msgstr ""
"Python utilise des objets générateurs pour implémenter les itérations de "
-"générateurs. Ils sont normalement crées en iterant sur une fonction donnant "
+"générateurs. Ils sont normalement crées en itérant sur une fonction donnant "
"des valeurs via ``yield``, au lieu d'appeler explicitement :c:func:"
"`PyGen_New` ou :c:func:`PyGen_NewWithQualName`."
#: ../Doc/c-api/gen.rst:15
msgid "The C structure used for generator objects."
-msgstr "La structure C utilisée pour les objets générateurs"
+msgstr "La structure C utilisée pour les objets générateurs."
#: ../Doc/c-api/gen.rst:20
msgid "The type object corresponding to generator objects."
@@ -44,12 +44,13 @@ msgstr "Le type objet correspondant aux objets générateurs."
#: ../Doc/c-api/gen.rst:25
msgid "Return true if *ob* is a generator object; *ob* must not be *NULL*."
msgstr ""
-"Retourne vrai si *ob* est un objet générateur. *ob* ne doit pas être *NULL*."
+"Renvoie ``True`` si *ob* est un objet générateur. *ob* ne doit pas être "
+"*NULL*."
#: ../Doc/c-api/gen.rst:30
msgid "Return true if *ob*'s type is *PyGen_Type*; *ob* must not be *NULL*."
msgstr ""
-"Retourne vrai si le type de *ob* est *PyGen_Type*. *ob* ne doit pas être "
+"Renvoie ``True`` si le type de *ob* est *PyGen_Type*. *ob* ne doit pas être "
"*NULL*."
#: ../Doc/c-api/gen.rst:35
@@ -60,7 +61,7 @@ msgid ""
msgstr ""
"Crée et renvoie un nouvel objet générateur basé sur l'objet *frame*. Une "
"référence à *frame* est volée par cette fonction. L'argument ne doit pas "
-"être *NULL*"
+"être *NULL*."
#: ../Doc/c-api/gen.rst:41
msgid ""
diff --git a/c-api/import.po b/c-api/import.po
index f16737328..8c27710af 100644
--- a/c-api/import.po
+++ b/c-api/import.po
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/import.rst:6
msgid "Importing Modules"
-msgstr ""
+msgstr "Importer des modules"
#: ../Doc/c-api/import.rst:16
msgid ""
diff --git a/c-api/index.po b/c-api/index.po
index 7aee54c2a..d9d1fc2e8 100644
--- a/c-api/index.po
+++ b/c-api/index.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:33+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/index.rst:5
msgid "Python/C API Reference Manual"
-msgstr ""
+msgstr "Manuel de référence de l'API Python/C"
#: ../Doc/c-api/index.rst:7
msgid ""
@@ -28,3 +28,8 @@ msgid ""
"`extending-index`, which describes the general principles of extension "
"writing but does not document the API functions in detail."
msgstr ""
+"C'est la documentation de l'API utilisée par les développeurs C et C++ "
+"écrivant des modules d'extension ou intégrant Python. Elle va de pair avec :"
+"ref:`extending-index`, qui décrit les principes généraux de l'écriture "
+"d'extensions, mais ne rentre pas dans les détails de chaque fonction de "
+"l'API."
diff --git a/c-api/init.po b/c-api/init.po
index 3c61683ac..a19de72a3 100644
--- a/c-api/init.po
+++ b/c-api/init.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-03-23 09:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -67,8 +67,8 @@ msgid ""
"last call to :c:func:`Py_Initialize`. Ideally, this frees all memory "
"allocated by the Python interpreter. This is a no-op when called for a "
"second time (without calling :c:func:`Py_Initialize` again first). Normally "
-"the return value is 0. If there were errors during finalization (flushing "
-"buffered data), -1 is returned."
+"the return value is ``0``. If there were errors during finalization "
+"(flushing buffered data), ``-1`` is returned."
msgstr ""
#: ../Doc/c-api/init.rst:70
@@ -1123,7 +1123,7 @@ msgid ":const:`PyTrace_CALL`"
msgstr ""
#: ../Doc/c-api/init.rst:1066 ../Doc/c-api/init.rst:1071
-msgid "Always *NULL*."
+msgid "Always :c:data:`Py_None`."
msgstr ""
#: ../Doc/c-api/init.rst:1068
@@ -1194,7 +1194,7 @@ msgstr ""
#: ../Doc/c-api/init.rst:1112
msgid ""
"The value for the *what* parameter to :c:type:`Py_tracefunc` functions when "
-"a call is returning without propagating an exception."
+"a call is about to return."
msgstr ""
#: ../Doc/c-api/init.rst:1118
@@ -1221,166 +1221,169 @@ msgid ""
"function as its first parameter, and may be any Python object, or *NULL*. "
"If the profile function needs to maintain state, using a different value for "
"*obj* for each thread provides a convenient and thread-safe place to store "
-"it. The profile function is called for all monitored events except the line-"
-"number events."
+"it. The profile function is called for all monitored events except :const:"
+"`PyTrace_LINE` and :const:`PyTrace_EXCEPTION`."
msgstr ""
#: ../Doc/c-api/init.rst:1146
msgid ""
"Set the tracing function to *func*. This is similar to :c:func:"
"`PyEval_SetProfile`, except the tracing function does receive line-number "
-"events."
+"events and does not receive any event related to C function objects being "
+"called. Any trace function registered using :c:func:`PyEval_SetTrace` will "
+"not receive :const:`PyTrace_C_CALL`, :const:`PyTrace_C_EXCEPTION` or :const:"
+"`PyTrace_C_RETURN` as a value for the *what* parameter."
msgstr ""
-#: ../Doc/c-api/init.rst:1152
+#: ../Doc/c-api/init.rst:1156
msgid ""
"Return a tuple of function call counts. There are constants defined for the "
"positions within the tuple:"
msgstr ""
-#: ../Doc/c-api/init.rst:1156
+#: ../Doc/c-api/init.rst:1160
msgid "Name"
msgstr "Nom"
-#: ../Doc/c-api/init.rst:1156
+#: ../Doc/c-api/init.rst:1160
msgid "Value"
msgstr "Valeur"
-#: ../Doc/c-api/init.rst:1158
+#: ../Doc/c-api/init.rst:1162
msgid ":const:`PCALL_ALL`"
msgstr ""
-#: ../Doc/c-api/init.rst:1158
+#: ../Doc/c-api/init.rst:1162
msgid "0"
msgstr "0"
-#: ../Doc/c-api/init.rst:1160
+#: ../Doc/c-api/init.rst:1164
msgid ":const:`PCALL_FUNCTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1160
+#: ../Doc/c-api/init.rst:1164
msgid "1"
msgstr "1"
-#: ../Doc/c-api/init.rst:1162
+#: ../Doc/c-api/init.rst:1166
msgid ":const:`PCALL_FAST_FUNCTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1162
+#: ../Doc/c-api/init.rst:1166
msgid "2"
msgstr "2"
-#: ../Doc/c-api/init.rst:1164
+#: ../Doc/c-api/init.rst:1168
msgid ":const:`PCALL_FASTER_FUNCTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1164
+#: ../Doc/c-api/init.rst:1168
msgid "3"
msgstr "3"
-#: ../Doc/c-api/init.rst:1166
+#: ../Doc/c-api/init.rst:1170
msgid ":const:`PCALL_METHOD`"
msgstr ""
-#: ../Doc/c-api/init.rst:1166
+#: ../Doc/c-api/init.rst:1170
msgid "4"
msgstr "4"
-#: ../Doc/c-api/init.rst:1168
+#: ../Doc/c-api/init.rst:1172
msgid ":const:`PCALL_BOUND_METHOD`"
msgstr ""
-#: ../Doc/c-api/init.rst:1168
+#: ../Doc/c-api/init.rst:1172
msgid "5"
msgstr "5"
-#: ../Doc/c-api/init.rst:1170
+#: ../Doc/c-api/init.rst:1174
msgid ":const:`PCALL_CFUNCTION`"
msgstr ""
-#: ../Doc/c-api/init.rst:1170
+#: ../Doc/c-api/init.rst:1174
msgid "6"
msgstr "6"
-#: ../Doc/c-api/init.rst:1172
+#: ../Doc/c-api/init.rst:1176
msgid ":const:`PCALL_TYPE`"
msgstr ""
-#: ../Doc/c-api/init.rst:1172
+#: ../Doc/c-api/init.rst:1176
msgid "7"
msgstr "7"
-#: ../Doc/c-api/init.rst:1174
+#: ../Doc/c-api/init.rst:1178
msgid ":const:`PCALL_GENERATOR`"
msgstr ""
-#: ../Doc/c-api/init.rst:1174
+#: ../Doc/c-api/init.rst:1178
msgid "8"
msgstr "8"
-#: ../Doc/c-api/init.rst:1176
+#: ../Doc/c-api/init.rst:1180
msgid ":const:`PCALL_OTHER`"
msgstr ""
-#: ../Doc/c-api/init.rst:1176
+#: ../Doc/c-api/init.rst:1180
msgid "9"
msgstr ""
-#: ../Doc/c-api/init.rst:1178
+#: ../Doc/c-api/init.rst:1182
msgid ":const:`PCALL_POP`"
msgstr ""
-#: ../Doc/c-api/init.rst:1178
+#: ../Doc/c-api/init.rst:1182
msgid "10"
msgstr "10"
-#: ../Doc/c-api/init.rst:1181
+#: ../Doc/c-api/init.rst:1185
msgid ""
":const:`PCALL_FAST_FUNCTION` means no argument tuple needs to be created. :"
"const:`PCALL_FASTER_FUNCTION` means that the fast-path frame setup code is "
"used."
msgstr ""
-#: ../Doc/c-api/init.rst:1184
+#: ../Doc/c-api/init.rst:1188
msgid ""
"If there is a method call where the call can be optimized by changing the "
"argument tuple and calling the function directly, it gets recorded twice."
msgstr ""
-#: ../Doc/c-api/init.rst:1188
+#: ../Doc/c-api/init.rst:1192
msgid ""
"This function is only present if Python is compiled with :const:"
"`CALL_PROFILE` defined."
msgstr ""
-#: ../Doc/c-api/init.rst:1194
+#: ../Doc/c-api/init.rst:1198
msgid "Advanced Debugger Support"
-msgstr "Support avancé du debugger"
+msgstr "Support avancé du débogueur"
-#: ../Doc/c-api/init.rst:1199
+#: ../Doc/c-api/init.rst:1203
msgid ""
"These functions are only intended to be used by advanced debugging tools."
msgstr ""
-#: ../Doc/c-api/init.rst:1204
+#: ../Doc/c-api/init.rst:1208
msgid ""
"Return the interpreter state object at the head of the list of all such "
"objects."
msgstr ""
-#: ../Doc/c-api/init.rst:1209
+#: ../Doc/c-api/init.rst:1213
msgid ""
"Return the next interpreter state object after *interp* from the list of all "
"such objects."
msgstr ""
-#: ../Doc/c-api/init.rst:1215
+#: ../Doc/c-api/init.rst:1219
msgid ""
"Return the pointer to the first :c:type:`PyThreadState` object in the list "
"of threads associated with the interpreter *interp*."
msgstr ""
-#: ../Doc/c-api/init.rst:1221
+#: ../Doc/c-api/init.rst:1225
msgid ""
"Return the next thread state object after *tstate* from the list of all such "
"objects belonging to the same :c:type:`PyInterpreterState` object."
diff --git a/c-api/intro.po b/c-api/intro.po
index 7ae5da99f..9bb3723aa 100644
--- a/c-api/intro.po
+++ b/c-api/intro.po
@@ -157,7 +157,7 @@ msgstr ""
#: ../Doc/c-api/intro.rst:113
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
#: ../Doc/c-api/intro.rst:115
msgid ""
@@ -361,7 +361,7 @@ msgstr ""
#: ../Doc/c-api/intro.rst:369
msgid "Exceptions"
-msgstr "Les exceptions"
+msgstr "Exceptions"
#: ../Doc/c-api/intro.rst:371
msgid ""
@@ -466,7 +466,7 @@ msgstr ""
#: ../Doc/c-api/intro.rst:517
msgid "Embedding Python"
-msgstr ""
+msgstr "Embarquer Python"
#: ../Doc/c-api/intro.rst:519
msgid ""
diff --git a/c-api/iter.po b/c-api/iter.po
index b76b76655..ca0108ee7 100644
--- a/c-api/iter.po
+++ b/c-api/iter.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-02-15 00:33+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,15 +19,15 @@ msgstr ""
#: ../Doc/c-api/iter.rst:6
msgid "Iterator Protocol"
-msgstr ""
+msgstr "Protocole d'itération"
#: ../Doc/c-api/iter.rst:8
msgid "There are two functions specifically for working with iterators."
-msgstr ""
+msgstr "Il existe deux fonctions dédiées à l'interaction avec les itérateurs."
#: ../Doc/c-api/iter.rst:12
msgid "Return true if the object *o* supports the iterator protocol."
-msgstr ""
+msgstr "Renvoie vrai si l'objet *o* supporte le protocole d'itération."
#: ../Doc/c-api/iter.rst:17
msgid ""
@@ -36,9 +36,16 @@ msgid ""
"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* "
+"s'il n'y a plus de valeurs, sans déclarer d'exception. Renvoie *NULL* en "
+"déclarant une exception si une erreur survient lors de la récupération d'un "
+"élément."
#: ../Doc/c-api/iter.rst:22
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 "
+"à : ::"
diff --git a/c-api/iterator.po b/c-api/iterator.po
index f76434510..fc61cf774 100644
--- a/c-api/iterator.po
+++ b/c-api/iterator.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-12-13 08:47+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/iterator.rst:6
msgid "Iterator Objects"
-msgstr ""
+msgstr "Itérateurs"
#: ../Doc/c-api/iterator.rst:8
msgid ""
@@ -29,6 +29,11 @@ msgid ""
"sentinel value, calling the callable for each item in the sequence, and "
"ending the iteration when the sentinel value is returned."
msgstr ""
+"Python fournit deux itérateurs génériques. Le premier est un itérateur de "
+"séquence, il fonctionne avec n'importe quelle séquence gérant la méthode :"
+"meth:`__getitem__`. Le second fonctionne avec un objet appelable et une "
+"valeur sentinelle, il appelle l'appelable pour obtenir chaque élément de la "
+"séquence, et l'itération se termine lorsque la sentinelle est reçue."
#: ../Doc/c-api/iterator.rst:17
msgid ""
@@ -36,10 +41,13 @@ msgid ""
"one-argument form of the :func:`iter` built-in function for built-in "
"sequence types."
msgstr ""
+"Type des itérateurs renvoyés par les fonctions :c:func:`PySeqIter_New` et la "
+"forme à un argument de la fonction native :func:`iter` pour les séquences "
+"natives."
#: ../Doc/c-api/iterator.rst:24
msgid "Return true if the type of *op* is :c:data:`PySeqIter_Type`."
-msgstr ""
+msgstr "Renvoie vrai si *op* est de type :c:data:`PySeqIter_Type`."
#: ../Doc/c-api/iterator.rst:29
msgid ""
@@ -47,16 +55,20 @@ msgid ""
"iteration ends when the sequence raises :exc:`IndexError` for the "
"subscripting operation."
msgstr ""
+"Renvoie un itérateur sur la séquence *seq*. L'itération prend fin lorsque la "
+"séquence lève :exc:`IndexError` lors d'une tentative d'accès."
#: ../Doc/c-api/iterator.rst:36
msgid ""
"Type object for iterator objects returned by :c:func:`PyCallIter_New` and "
"the two-argument form of the :func:`iter` built-in function."
msgstr ""
+"Type de l'itérateur renvoyé par les fonctions :c:func:`PyCallIter_New` et :"
+"func:`iter` à deux arguments."
#: ../Doc/c-api/iterator.rst:42
msgid "Return true if the type of *op* is :c:data:`PyCallIter_Type`."
-msgstr ""
+msgstr "Renvoie vrai si *op* est de type :c:data:`PyCallIter_Type`."
#: ../Doc/c-api/iterator.rst:47
msgid ""
@@ -65,3 +77,7 @@ msgid ""
"should return the next item in the iteration. When *callable* returns a "
"value equal to *sentinel*, the iteration will be terminated."
msgstr ""
+"Renvoie un nouvel itérateur. Le premier paramètre, *callable*, peut être "
+"n'importe quel objet Python appelable sans aucun paramètre ; chaque appel "
+"doit renvoyer l'élément suivant de l'itération. Lorsque *callable* renvoie "
+"une valeur égale à *sentinel*, l'itération prend fin."
diff --git a/c-api/long.po b/c-api/long.po
index e0bf33f68..808c8c6f8 100644
--- a/c-api/long.po
+++ b/c-api/long.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-27 19:40+0200\n"
+"POT-Creation-Date: 2018-03-23 09:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -26,34 +26,41 @@ msgid ""
"All integers are implemented as \"long\" integer objects of arbitrary size."
msgstr ""
-#: ../Doc/c-api/long.rst:15
+#: ../Doc/c-api/long.rst:13
+msgid ""
+"On error, most ``PyLong_As*`` APIs return ``(return type)-1`` which cannot "
+"be distinguished from a number. Use :c:func:`PyErr_Occurred` to "
+"disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:18
msgid "This subtype of :c:type:`PyObject` represents a Python integer object."
msgstr ""
-#: ../Doc/c-api/long.rst:20
+#: ../Doc/c-api/long.rst:23
msgid ""
"This instance of :c:type:`PyTypeObject` represents the Python integer type. "
"This is the same object as :class:`int` in the Python layer."
msgstr ""
-#: ../Doc/c-api/long.rst:26
+#: ../Doc/c-api/long.rst:29
msgid ""
"Return true if its argument is a :c:type:`PyLongObject` or a subtype of :c:"
"type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:32
+#: ../Doc/c-api/long.rst:35
msgid ""
"Return true if its argument is a :c:type:`PyLongObject`, but not a subtype "
"of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:38
+#: ../Doc/c-api/long.rst:41
msgid ""
"Return a new :c:type:`PyLongObject` object from *v*, or *NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:40
+#: ../Doc/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 "
@@ -62,43 +69,43 @@ msgid ""
"in this case is undefined. :-)"
msgstr ""
-#: ../Doc/c-api/long.rst:49
+#: ../Doc/c-api/long.rst:52
msgid ""
"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long`, "
"or *NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:55
+#: ../Doc/c-api/long.rst:58
msgid ""
"Return a new :c:type:`PyLongObject` object from a C :c:type:`Py_ssize_t`, or "
"*NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:61
+#: ../Doc/c-api/long.rst:64
msgid ""
"Return a new :c:type:`PyLongObject` object from a C :c:type:`size_t`, or "
"*NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:67
+#: ../Doc/c-api/long.rst:70
msgid ""
"Return a new :c:type:`PyLongObject` object from a C :c:type:`long long`, or "
"*NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:73
+#: ../Doc/c-api/long.rst:76
msgid ""
"Return a new :c:type:`PyLongObject` object from a C :c:type:`unsigned long "
"long`, or *NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:79
+#: ../Doc/c-api/long.rst:82
msgid ""
"Return a new :c:type:`PyLongObject` object from the integer part of *v*, or "
"*NULL* on failure."
msgstr ""
-#: ../Doc/c-api/long.rst:85
+#: ../Doc/c-api/long.rst:88
msgid ""
"Return a new :c:type:`PyLongObject` based on the string value in *str*, "
"which is interpreted according to the radix in *base*. If *pend* is non-"
@@ -111,7 +118,7 @@ msgid ""
"are no digits, :exc:`ValueError` will be raised."
msgstr ""
-#: ../Doc/c-api/long.rst:98
+#: ../Doc/c-api/long.rst:101
msgid ""
"Convert a sequence of Unicode digits to a Python integer value. The Unicode "
"string is first encoded to a byte string using :c:func:"
@@ -119,19 +126,13 @@ msgid ""
"`PyLong_FromString`."
msgstr ""
-#: ../Doc/c-api/long.rst:104
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyLong_FromUnicodeObject()."
-msgstr ""
-
-#: ../Doc/c-api/long.rst:104
+#: ../Doc/c-api/long.rst:107
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyLong_FromUnicodeObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:109
+#: ../Doc/c-api/long.rst:112
msgid ""
"Convert a sequence of Unicode digits in the string *u* to a Python integer "
"value. The Unicode string is first encoded to a byte string using :c:func:"
@@ -139,26 +140,33 @@ msgid ""
"`PyLong_FromString`."
msgstr ""
-#: ../Doc/c-api/long.rst:119
+#: ../Doc/c-api/long.rst:122
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 ""
-#: ../Doc/c-api/long.rst:130 ../Doc/c-api/long.rst:140
+#: ../Doc/c-api/long.rst:133 ../Doc/c-api/long.rst:145
msgid ""
"Return a C :c:type:`long` representation of *obj*. If *obj* is not an "
"instance of :c:type:`PyLongObject`, first call its :meth:`__int__` method "
"(if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:134 ../Doc/c-api/long.rst:159
+#: ../Doc/c-api/long.rst:137 ../Doc/c-api/long.rst:166
msgid ""
"Raise :exc:`OverflowError` if the value of *obj* is out of range for a :c:"
"type:`long`."
msgstr ""
-#: ../Doc/c-api/long.rst:144
+#: ../Doc/c-api/long.rst:140 ../Doc/c-api/long.rst:154
+#: ../Doc/c-api/long.rst:169 ../Doc/c-api/long.rst:183
+#: ../Doc/c-api/long.rst:200 ../Doc/c-api/long.rst:262
+#: ../Doc/c-api/long.rst:274
+msgid "Returns ``-1`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:149
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 "
@@ -166,14 +174,14 @@ msgid ""
"occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: ../Doc/c-api/long.rst:155 ../Doc/c-api/long.rst:165
+#: ../Doc/c-api/long.rst:162 ../Doc/c-api/long.rst:174
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:`__int__` method "
"(if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:169
+#: ../Doc/c-api/long.rst:178
msgid ""
"If the value of *obj* is greater than :const:`PY_LLONG_MAX` or less than :"
"const:`PY_LLONG_MIN`, set *\\*overflow* to ``1`` or ``-1``, respectively, "
@@ -181,101 +189,128 @@ msgid ""
"exception occurs set *\\*overflow* to ``0`` and return ``-1`` as usual."
msgstr ""
-#: ../Doc/c-api/long.rst:183
+#: ../Doc/c-api/long.rst:194
msgid ""
"Return a C :c:type:`Py_ssize_t` representation of *pylong*. *pylong* must "
"be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:186
+#: ../Doc/c-api/long.rst:197
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`Py_ssize_t`."
msgstr ""
-#: ../Doc/c-api/long.rst:196
+#: ../Doc/c-api/long.rst:209
msgid ""
"Return a C :c:type:`unsigned long` representation of *pylong*. *pylong* "
"must be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:199
+#: ../Doc/c-api/long.rst:212
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`unsigned long`."
msgstr ""
-#: ../Doc/c-api/long.rst:205
+#: ../Doc/c-api/long.rst:215
+msgid ""
+"Returns ``(unsigned long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
+"disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:225
msgid ""
"Return a C :c:type:`size_t` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:208
+#: ../Doc/c-api/long.rst:228
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`size_t`."
msgstr ""
-#: ../Doc/c-api/long.rst:217
+#: ../Doc/c-api/long.rst:231
+msgid ""
+"Returns ``(size_t)-1`` on error. Use :c:func:`PyErr_Occurred` to "
+"disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:240
msgid ""
"Return a C :c:type:`unsigned long long` representation of *pylong*. "
"*pylong* must be an instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:220
+#: ../Doc/c-api/long.rst:243
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for an :"
"c:type:`unsigned long long`."
msgstr ""
-#: ../Doc/c-api/long.rst:223
+#: ../Doc/c-api/long.rst:246
+msgid ""
+"Returns ``(unsigned long long)-1`` on error. Use :c:func:`PyErr_Occurred` to "
+"disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:249
msgid ""
"A negative *pylong* now raises :exc:`OverflowError`, not :exc:`TypeError`."
msgstr ""
-#: ../Doc/c-api/long.rst:229
+#: ../Doc/c-api/long.rst:255
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:`__int__` method "
"(if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:233
+#: ../Doc/c-api/long.rst:259
msgid ""
"If the value of *obj* is out of range for an :c:type:`unsigned long`, return "
"the reduction of that value modulo ``ULONG_MAX + 1``."
msgstr ""
-#: ../Doc/c-api/long.rst:239
+#: ../Doc/c-api/long.rst:267
msgid ""
"Return a C :c:type:`unsigned long long` representation of *obj*. If *obj* "
"is not an instance of :c:type:`PyLongObject`, first call its :meth:`__int__` "
"method (if present) to convert it to a :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:243
+#: ../Doc/c-api/long.rst:271
msgid ""
"If the value of *obj* is out of range for an :c:type:`unsigned long long`, "
"return the reduction of that value modulo ``PY_ULLONG_MAX + 1``."
msgstr ""
-#: ../Doc/c-api/long.rst:249
+#: ../Doc/c-api/long.rst:279
msgid ""
"Return a C :c:type:`double` representation of *pylong*. *pylong* must be an "
"instance of :c:type:`PyLongObject`."
msgstr ""
-#: ../Doc/c-api/long.rst:252
+#: ../Doc/c-api/long.rst:282
msgid ""
"Raise :exc:`OverflowError` if the value of *pylong* is out of range for a :c:"
"type:`double`."
msgstr ""
-#: ../Doc/c-api/long.rst:258
+#: ../Doc/c-api/long.rst:285
+msgid ""
+"Returns ``-1.0`` on error. Use :c:func:`PyErr_Occurred` to disambiguate."
+msgstr ""
+
+#: ../Doc/c-api/long.rst:290
msgid ""
"Convert a Python integer *pylong* to a C :c:type:`void` pointer. If *pylong* "
"cannot be converted, an :exc:`OverflowError` will be raised. This is only "
"assured to produce a usable :c:type:`void` pointer for values created with :"
"c:func:`PyLong_FromVoidPtr`."
msgstr ""
+
+#: ../Doc/c-api/long.rst:295
+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 0a656f447..842fa4659 100644
--- a/c-api/mapping.po
+++ b/c-api/mapping.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,67 +19,89 @@ msgstr ""
#: ../Doc/c-api/mapping.rst:6
msgid "Mapping Protocol"
+msgstr "Protocole de correspondance"
+
+#: ../Doc/c-api/mapping.rst:8
+msgid ""
+"See also :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` and :c:func:"
+"`PyObject_DelItem`."
msgstr ""
+"Voir aussi :c:func:`PyObject_GetItem`, :c:func:`PyObject_SetItem` et :c:func:"
+"`PyObject_DelItem`."
-#: ../Doc/c-api/mapping.rst:11
+#: ../Doc/c-api/mapping.rst:14
msgid ""
-"Return ``1`` if the object provides mapping protocol, and ``0`` otherwise. "
-"This function always succeeds."
+"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 the type of keys it supports. This function always succeeds."
msgstr ""
-#: ../Doc/c-api/mapping.rst:20
+#: ../Doc/c-api/mapping.rst:26
msgid ""
-"Returns the number of keys in object *o* on success, and ``-1`` on failure. "
-"For objects that do not provide mapping protocol, this is equivalent to the "
-"Python expression ``len(o)``."
+"Returns the number of keys in object *o* on success, and ``-1`` on failure. "
+"This is equivalent to the Python expression ``len(o)``."
msgstr ""
+"Renvoie le nombre de clefs dans l'objet *o* et ``-1`` en cas d'échec. C'est "
+"l'équivalent de l'expression Python ``len(o)``."
-#: ../Doc/c-api/mapping.rst:27 ../Doc/c-api/mapping.rst:33
+#: ../Doc/c-api/mapping.rst:32
msgid ""
-"Remove the mapping for object *key* from the object *o*. Return ``-1`` on "
-"failure. This is equivalent to the Python statement ``del o[key]``."
+"Return element of *o* corresponding to the string *key* or *NULL* on "
+"failure. This is the equivalent of the Python expression ``o[key]``. See "
+"also :c:func:`PyObject_GetItem`."
msgstr ""
#: ../Doc/c-api/mapping.rst:39
msgid ""
-"On success, return ``1`` if the mapping object has the key *key* and ``0`` "
-"otherwise. This is equivalent to the Python expression ``key in o``. This "
-"function always succeeds."
+"Map the string *key* to the value *v* in object *o*. Returns ``-1`` on "
+"failure. This is the equivalent of the Python statement ``o[key] = v``. See "
+"also :c:func:`PyObject_SetItem`."
msgstr ""
#: ../Doc/c-api/mapping.rst:46
msgid ""
-"Return ``1`` if the mapping object has the key *key* and ``0`` otherwise. "
-"This is equivalent to the Python expression ``key in o``. This function "
-"always succeeds."
+"Remove the mapping for the object *key* from the object *o*. Return ``-1`` "
+"on failure. This is equivalent to the Python statement ``del o[key]``. This "
+"is an alias of :c:func:`PyObject_DelItem`."
msgstr ""
+"Supprime la correspondance associée à l'objet *key* dans l'objet *o*. "
+"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
+"``del o[key]``. C'est un alias pour :c:func:`PyObject_DelItem`."
#: ../Doc/c-api/mapping.rst:53
msgid ""
-"On success, return a list or tuple of the keys in object *o*. On failure, "
-"return *NULL*."
+"Remove the mapping for the string *key* from the object *o*. Return ``-1`` "
+"on failure. This is equivalent to the Python statement ``del o[key]``."
msgstr ""
+"Supprime la correspondance associée à la chaîne *key* dans l'objet *o*. "
+"Renvoie ``-1`` en cas d'échec. C'est l'équivalent de la commande Python "
+"``del o[key]``."
-#: ../Doc/c-api/mapping.rst:59
+#: ../Doc/c-api/mapping.rst:59 ../Doc/c-api/mapping.rst:66
msgid ""
-"On success, return a list or tuple of the values in object *o*. On failure, "
-"return *NULL*."
+"Return ``1`` if the mapping object has the key *key* and ``0`` otherwise. "
+"This is equivalent to the Python expression ``key in o``. This function "
+"always succeeds."
msgstr ""
+"Renvoie ``1`` si l'objet de correspondance possède une clef *key* et ``0`` "
+"sinon. C'est l'équivalent de l'expression Python ``key in o``. Cette "
+"fonction ne provoque jamais d'erreur."
-#: ../Doc/c-api/mapping.rst:65
+#: ../Doc/c-api/mapping.rst:73
msgid ""
-"On success, return a list or tuple of the items in object *o*, where each "
-"item is a tuple containing a key-value pair. On failure, return *NULL*."
+"On success, return a list or tuple of the keys in object *o*. On failure, "
+"return *NULL*."
msgstr ""
-#: ../Doc/c-api/mapping.rst:71
+#: ../Doc/c-api/mapping.rst:79
msgid ""
-"Return element of *o* corresponding to the object *key* or *NULL* on "
-"failure. This is the equivalent of the Python expression ``o[key]``."
+"On success, return a list or tuple of the values in object *o*. On failure, "
+"return *NULL*."
msgstr ""
-#: ../Doc/c-api/mapping.rst:77
+#: ../Doc/c-api/mapping.rst:85
msgid ""
-"Map the object *key* to the value *v* in object *o*. Returns ``-1`` on "
-"failure. This is the equivalent of the Python statement ``o[key] = v``."
+"On success, return a list or tuple of the items in object *o*, where each "
+"item is a tuple containing a key-value pair. On failure, return *NULL*."
msgstr ""
diff --git a/c-api/memory.po b/c-api/memory.po
index 9260be10e..6cb1d4249 100644
--- a/c-api/memory.po
+++ b/c-api/memory.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2017-12-01 07:43+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -23,7 +23,7 @@ msgstr ""
#: ../Doc/c-api/memory.rst:17
msgid "Overview"
-msgstr ""
+msgstr "Aperçu"
#: ../Doc/c-api/memory.rst:19
msgid ""
@@ -127,6 +127,7 @@ msgid ""
msgstr ""
#: ../Doc/c-api/memory.rst:111 ../Doc/c-api/memory.rst:181
+#: ../Doc/c-api/memory.rst:282
msgid ""
"Allocates *n* bytes and returns a pointer of type :c:type:`void\\*` to the "
"allocated memory, or *NULL* if the request fails."
@@ -140,6 +141,7 @@ msgid ""
msgstr ""
#: ../Doc/c-api/memory.rst:121 ../Doc/c-api/memory.rst:191
+#: ../Doc/c-api/memory.rst:292
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 "
@@ -154,6 +156,7 @@ msgid ""
msgstr ""
#: ../Doc/c-api/memory.rst:134 ../Doc/c-api/memory.rst:204
+#: ../Doc/c-api/memory.rst:305
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."
@@ -183,11 +186,12 @@ msgstr ""
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:"
-"func:`PyMem_RawCalloc`. Otherwise, or if ``PyMem_Free(p)`` has been called "
-"before, undefined behavior occurs."
+"func:`PyMem_RawCalloc`. Otherwise, or if ``PyMem_RawFree(p)`` has been "
+"called before, undefined behavior occurs."
msgstr ""
#: ../Doc/c-api/memory.rst:156 ../Doc/c-api/memory.rst:225
+#: ../Doc/c-api/memory.rst:326
msgid "If *p* is *NULL*, no operation is performed."
msgstr ""
@@ -195,19 +199,19 @@ msgstr ""
msgid "Memory Interface"
msgstr ""
-#: ../Doc/c-api/memory.rst:164
+#: ../Doc/c-api/memory.rst:164 ../Doc/c-api/memory.rst:269
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 ""
-#: ../Doc/c-api/memory.rst:168
+#: ../Doc/c-api/memory.rst:168 ../Doc/c-api/memory.rst:273
msgid ""
"By default, these functions use :ref:`pymalloc memory allocator `."
msgstr ""
-#: ../Doc/c-api/memory.rst:172
+#: ../Doc/c-api/memory.rst:172 ../Doc/c-api/memory.rst:277
msgid ""
"The :term:`GIL ` must be held when using these "
"functions."
@@ -323,190 +327,236 @@ msgid "``PyMem_DEL(ptr)``"
msgstr ""
#: ../Doc/c-api/memory.rst:267
+msgid "Object allocators"
+msgstr ""
+
+#: ../Doc/c-api/memory.rst:285
+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 ""
+
+#: ../Doc/c-api/memory.rst:296
+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 ""
+
+#: ../Doc/c-api/memory.rst:308
+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 ""
+
+#: ../Doc/c-api/memory.rst:312
+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 ""
+
+#: ../Doc/c-api/memory.rst:315
+msgid ""
+"If the request fails, :c:func:`PyObject_Realloc` returns *NULL* and *p* "
+"remains a valid pointer to the previous memory area."
+msgstr ""
+
+#: ../Doc/c-api/memory.rst:321
+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:"
+"func:`PyObject_Calloc`. Otherwise, or if ``PyObject_Free(p)`` has been "
+"called before, undefined behavior occurs."
+msgstr ""
+
+#: ../Doc/c-api/memory.rst:330
msgid "Customize Memory Allocators"
msgstr ""
-#: ../Doc/c-api/memory.rst:273
+#: ../Doc/c-api/memory.rst:336
msgid ""
"Structure used to describe a memory block allocator. The structure has four "
"fields:"
msgstr ""
-#: ../Doc/c-api/memory.rst:277 ../Doc/c-api/memory.rst:414
+#: ../Doc/c-api/memory.rst:340 ../Doc/c-api/memory.rst:477
msgid "Field"
-msgstr ""
+msgstr "Champ"
-#: ../Doc/c-api/memory.rst:277 ../Doc/c-api/memory.rst:414
+#: ../Doc/c-api/memory.rst:340 ../Doc/c-api/memory.rst:477
msgid "Meaning"
msgstr "Signification"
-#: ../Doc/c-api/memory.rst:279 ../Doc/c-api/memory.rst:416
+#: ../Doc/c-api/memory.rst:342 ../Doc/c-api/memory.rst:479
msgid "``void *ctx``"
msgstr "``void *ctx``"
-#: ../Doc/c-api/memory.rst:279 ../Doc/c-api/memory.rst:416
+#: ../Doc/c-api/memory.rst:342 ../Doc/c-api/memory.rst:479
msgid "user context passed as first argument"
msgstr ""
-#: ../Doc/c-api/memory.rst:281
+#: ../Doc/c-api/memory.rst:344
msgid "``void* malloc(void *ctx, size_t size)``"
msgstr "``void* malloc(void *ctx, size_t size)``"
-#: ../Doc/c-api/memory.rst:281
+#: ../Doc/c-api/memory.rst:344
msgid "allocate a memory block"
msgstr ""
-#: ../Doc/c-api/memory.rst:283
+#: ../Doc/c-api/memory.rst:346
msgid "``void* calloc(void *ctx, size_t nelem, size_t elsize)``"
msgstr ""
-#: ../Doc/c-api/memory.rst:283
+#: ../Doc/c-api/memory.rst:346
msgid "allocate a memory block initialized with zeros"
msgstr ""
-#: ../Doc/c-api/memory.rst:286
+#: ../Doc/c-api/memory.rst:349
msgid "``void* realloc(void *ctx, void *ptr, size_t new_size)``"
msgstr ""
-#: ../Doc/c-api/memory.rst:286
+#: ../Doc/c-api/memory.rst:349
msgid "allocate or resize a memory block"
msgstr ""
-#: ../Doc/c-api/memory.rst:288
+#: ../Doc/c-api/memory.rst:351
msgid "``void free(void *ctx, void *ptr)``"
msgstr "``void free(void *ctx, void *ptr)``"
-#: ../Doc/c-api/memory.rst:288
+#: ../Doc/c-api/memory.rst:351
msgid "free a memory block"
msgstr ""
-#: ../Doc/c-api/memory.rst:291
+#: ../Doc/c-api/memory.rst:354
msgid ""
"The :c:type:`PyMemAllocator` structure was renamed to :c:type:"
"`PyMemAllocatorEx` and a new ``calloc`` field was added."
msgstr ""
-#: ../Doc/c-api/memory.rst:298
+#: ../Doc/c-api/memory.rst:361
msgid "Enum used to identify an allocator domain. Domains:"
msgstr ""
-#: ../Doc/c-api/memory.rst:302 ../Doc/c-api/memory.rst:311
-#: ../Doc/c-api/memory.rst:320
+#: ../Doc/c-api/memory.rst:365 ../Doc/c-api/memory.rst:374
+#: ../Doc/c-api/memory.rst:383
msgid "Functions:"
msgstr ""
-#: ../Doc/c-api/memory.rst:304
+#: ../Doc/c-api/memory.rst:367
msgid ":c:func:`PyMem_RawMalloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:305
+#: ../Doc/c-api/memory.rst:368
msgid ":c:func:`PyMem_RawRealloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:306
+#: ../Doc/c-api/memory.rst:369
msgid ":c:func:`PyMem_RawCalloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:307
+#: ../Doc/c-api/memory.rst:370
msgid ":c:func:`PyMem_RawFree`"
msgstr ""
-#: ../Doc/c-api/memory.rst:313
+#: ../Doc/c-api/memory.rst:376
msgid ":c:func:`PyMem_Malloc`,"
msgstr ""
-#: ../Doc/c-api/memory.rst:314
+#: ../Doc/c-api/memory.rst:377
msgid ":c:func:`PyMem_Realloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:315
+#: ../Doc/c-api/memory.rst:378
msgid ":c:func:`PyMem_Calloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:316
+#: ../Doc/c-api/memory.rst:379
msgid ":c:func:`PyMem_Free`"
msgstr ""
-#: ../Doc/c-api/memory.rst:322
+#: ../Doc/c-api/memory.rst:385
msgid ":c:func:`PyObject_Malloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:323
+#: ../Doc/c-api/memory.rst:386
msgid ":c:func:`PyObject_Realloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:324
+#: ../Doc/c-api/memory.rst:387
msgid ":c:func:`PyObject_Calloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:325
+#: ../Doc/c-api/memory.rst:388
msgid ":c:func:`PyObject_Free`"
msgstr ""
-#: ../Doc/c-api/memory.rst:329
+#: ../Doc/c-api/memory.rst:392
msgid "Get the memory block allocator of the specified domain."
msgstr ""
-#: ../Doc/c-api/memory.rst:334
+#: ../Doc/c-api/memory.rst:397
msgid "Set the memory block allocator of the specified domain."
msgstr ""
-#: ../Doc/c-api/memory.rst:336
+#: ../Doc/c-api/memory.rst:399
msgid ""
"The new allocator must return a distinct non-NULL pointer when requesting "
"zero bytes."
msgstr ""
-#: ../Doc/c-api/memory.rst:339
+#: ../Doc/c-api/memory.rst:402
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 ""
-#: ../Doc/c-api/memory.rst:343
+#: ../Doc/c-api/memory.rst:406
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 ""
-#: ../Doc/c-api/memory.rst:350
+#: ../Doc/c-api/memory.rst:413
msgid "Setup hooks to detect bugs in the Python memory allocator functions."
msgstr ""
-#: ../Doc/c-api/memory.rst:352
+#: ../Doc/c-api/memory.rst:415
msgid ""
"Newly allocated memory is filled with the byte ``0xCB``, freed memory is "
"filled with the byte ``0xDB``."
msgstr ""
-#: ../Doc/c-api/memory.rst:355
+#: ../Doc/c-api/memory.rst:418
msgid "Runtime checks:"
msgstr ""
-#: ../Doc/c-api/memory.rst:357
+#: ../Doc/c-api/memory.rst:420
msgid ""
"Detect API violations, ex: :c:func:`PyObject_Free` called on a buffer "
"allocated by :c:func:`PyMem_Malloc`"
msgstr ""
-#: ../Doc/c-api/memory.rst:359
+#: ../Doc/c-api/memory.rst:422
msgid "Detect write before the start of the buffer (buffer underflow)"
msgstr ""
-#: ../Doc/c-api/memory.rst:360
+#: ../Doc/c-api/memory.rst:423
msgid "Detect write after the end of the buffer (buffer overflow)"
msgstr ""
-#: ../Doc/c-api/memory.rst:361
+#: ../Doc/c-api/memory.rst:424
msgid ""
"Check that the :term:`GIL ` is held when allocator "
"functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and :"
"c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called"
msgstr ""
-#: ../Doc/c-api/memory.rst:366
+#: ../Doc/c-api/memory.rst:429
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 "
@@ -514,14 +564,14 @@ msgid ""
"memory block was traced."
msgstr ""
-#: ../Doc/c-api/memory.rst:371
+#: ../Doc/c-api/memory.rst:434
msgid ""
"These hooks are 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."
msgstr ""
-#: ../Doc/c-api/memory.rst:375
+#: ../Doc/c-api/memory.rst:438
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 "
@@ -530,11 +580,11 @@ msgid ""
"`PYMEM_DOMAIN_MEM` domains are called."
msgstr ""
-#: ../Doc/c-api/memory.rst:386
+#: ../Doc/c-api/memory.rst:449
msgid "The pymalloc allocator"
msgstr ""
-#: ../Doc/c-api/memory.rst:388
+#: ../Doc/c-api/memory.rst:451
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 "
@@ -543,79 +593,79 @@ msgid ""
"512 bytes."
msgstr ""
-#: ../Doc/c-api/memory.rst:393
+#: ../Doc/c-api/memory.rst:456
msgid ""
"*pymalloc* is the default allocator of the :c:data:`PYMEM_DOMAIN_MEM` (ex: :"
"c:func:`PyMem_Malloc`) and :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:"
"`PyObject_Malloc`) domains."
msgstr ""
-#: ../Doc/c-api/memory.rst:397
+#: ../Doc/c-api/memory.rst:460
msgid "The arena allocator uses the following functions:"
msgstr ""
-#: ../Doc/c-api/memory.rst:399
+#: ../Doc/c-api/memory.rst:462
msgid ":c:func:`VirtualAlloc` and :c:func:`VirtualFree` on Windows,"
msgstr ""
-#: ../Doc/c-api/memory.rst:400
+#: ../Doc/c-api/memory.rst:463
msgid ":c:func:`mmap` and :c:func:`munmap` if available,"
msgstr ""
-#: ../Doc/c-api/memory.rst:401
+#: ../Doc/c-api/memory.rst:464
msgid ":c:func:`malloc` and :c:func:`free` otherwise."
msgstr ""
-#: ../Doc/c-api/memory.rst:404
+#: ../Doc/c-api/memory.rst:467
msgid "Customize pymalloc Arena Allocator"
msgstr ""
-#: ../Doc/c-api/memory.rst:410
+#: ../Doc/c-api/memory.rst:473
msgid ""
"Structure used to describe an arena allocator. The structure has three "
"fields:"
msgstr ""
-#: ../Doc/c-api/memory.rst:418
+#: ../Doc/c-api/memory.rst:481
msgid "``void* alloc(void *ctx, size_t size)``"
msgstr "``void* alloc(void *ctx, size_t size)``"
-#: ../Doc/c-api/memory.rst:418
+#: ../Doc/c-api/memory.rst:481
msgid "allocate an arena of size bytes"
msgstr ""
-#: ../Doc/c-api/memory.rst:420
+#: ../Doc/c-api/memory.rst:483
msgid "``void free(void *ctx, size_t size, void *ptr)``"
msgstr "``void free(void *ctx, size_t size, void *ptr)``"
-#: ../Doc/c-api/memory.rst:420
+#: ../Doc/c-api/memory.rst:483
msgid "free an arena"
msgstr ""
-#: ../Doc/c-api/memory.rst:425
+#: ../Doc/c-api/memory.rst:488
msgid "Get the arena allocator."
msgstr ""
-#: ../Doc/c-api/memory.rst:429
+#: ../Doc/c-api/memory.rst:492
msgid "Set the arena allocator."
msgstr ""
-#: ../Doc/c-api/memory.rst:435
+#: ../Doc/c-api/memory.rst:498
msgid "Examples"
msgstr "Exemples"
-#: ../Doc/c-api/memory.rst:437
+#: ../Doc/c-api/memory.rst:500
msgid ""
"Here is the example from section :ref:`memoryoverview`, rewritten so that "
"the I/O buffer is allocated from the Python heap by using the first function "
"set::"
msgstr ""
-#: ../Doc/c-api/memory.rst:450
+#: ../Doc/c-api/memory.rst:513
msgid "The same code using the type-oriented function set::"
msgstr ""
-#: ../Doc/c-api/memory.rst:462
+#: ../Doc/c-api/memory.rst:525
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 "
@@ -625,14 +675,14 @@ msgid ""
"different allocators operating on different heaps. ::"
msgstr ""
-#: ../Doc/c-api/memory.rst:477
+#: ../Doc/c-api/memory.rst:540
msgid ""
"In addition to the functions aimed at handling raw memory blocks from the "
"Python heap, objects in Python are allocated and released with :c:func:"
"`PyObject_New`, :c:func:`PyObject_NewVar` and :c:func:`PyObject_Del`."
msgstr ""
-#: ../Doc/c-api/memory.rst:481
+#: ../Doc/c-api/memory.rst:544
msgid ""
"These will be explained in the next chapter on defining and implementing new "
"object types in C."
diff --git a/c-api/memoryview.po b/c-api/memoryview.po
index f5d49afc2..c65d36aa5 100644
--- a/c-api/memoryview.po
+++ b/c-api/memoryview.po
@@ -27,6 +27,9 @@ msgid ""
"` as a Python object which can then be passed around like any "
"other object."
msgstr ""
+"Un objet Python :class:`memoryview` expose le :ref:`protocole tampon "
+"` du C. Cet objet peut ensuite être passé comme n'importe "
+"quel objet."
#: ../Doc/c-api/memoryview.rst:18
msgid ""
@@ -35,12 +38,18 @@ msgid ""
"will be read/write, otherwise it may be either read-only or read/write at "
"the discretion of the exporter."
msgstr ""
+"Crée un objet *memoryview* à partir d'un objet implémentant le protocole "
+"tampon. Si *obj* permet d'exporter des tampons modifiables, l'objet "
+"*memoryview* crée acceptera la lecture et écriture, sinon l'objet crée est "
+"soit en lecture seule ou lecture/écriture, à la discrétion de l'*exporteur*."
#: ../Doc/c-api/memoryview.rst:25
msgid ""
"Create a memoryview object using *mem* as the underlying buffer. *flags* can "
"be one of :c:macro:`PyBUF_READ` or :c:macro:`PyBUF_WRITE`."
msgstr ""
+"Crée un objet *memoryview* utilisant *mem* comme un tampon sous-jacent. "
+"*flags* peut être :c:macro:`PyBUF_READ` ou :c:macro:`PyBUF_WRITE`."
#: ../Doc/c-api/memoryview.rst:32
msgid ""
@@ -48,6 +57,8 @@ msgid ""
"simple byte buffers, :c:func:`PyMemoryView_FromMemory` is the preferred "
"function."
msgstr ""
+"Crée un objet *memoryview* à partir de la structure tampon *view*. Pour de "
+"simples tampons d'octets, :c:func:`PyMemoryView_FromMemory` est préférée."
#: ../Doc/c-api/memoryview.rst:38
msgid ""
@@ -57,6 +68,11 @@ msgid ""
"original memory. Otherwise, a copy is made and the memoryview points to a "
"new bytes object."
msgstr ""
+"Crée un objet *memoryview* vers un segment de mémoire :term:`contiguous` "
+"(organisé comme en ``'C'`` ou comme en ``'F'`` pour Fortran) à partir d'un "
+"objet qui expose le protocole tampon. Si la mémoire est contiguë, l'objet "
+"*memoryview* pointe vers la mémoire d'origine. Sinon une copie est faite et "
+"la *memoryview* pointe vers un nouvel objet *bytes*."
#: ../Doc/c-api/memoryview.rst:47
msgid ""
@@ -70,6 +86,10 @@ msgid ""
"*mview* **must** be a memoryview instance; this macro doesn't check its "
"type, you must do it yourself or you will risk crashes."
msgstr ""
+"Retourne un pointeur vers la copie privée du tampon de l'*exporteur* de "
+"*memoryview*. *mview* **doit** être une instance de *memoryview*; cette "
+"macro ne vérifie pas le type, vous devez le faire vous-même sinon vous "
+"pourriez subir un crash."
#: ../Doc/c-api/memoryview.rst:59
msgid ""
diff --git a/c-api/method.po b/c-api/method.po
index 6bd99c55b..87eb49451 100644
--- a/c-api/method.po
+++ b/c-api/method.po
@@ -59,7 +59,7 @@ msgstr ""
#: ../Doc/c-api/method.rst:47
msgid "Method Objects"
-msgstr "Les objets méthode"
+msgstr "Objets méthode"
#: ../Doc/c-api/method.rst:51
msgid ""
diff --git a/c-api/module.po b/c-api/module.po
index e89ad7bea..2ab3f3988 100644
--- a/c-api/module.po
+++ b/c-api/module.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-01 13:21+0200\n"
+"POT-Creation-Date: 2018-03-23 09:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -211,64 +211,70 @@ msgstr ""
#: ../Doc/c-api/module.rst:198
msgid ""
"A traversal function to call during GC traversal of the module object, or "
-"*NULL* if not needed."
+"*NULL* if not needed. This function may be called before module state is "
+"allocated (:c:func:`PyModule_GetState()` may return `NULL`), and before the :"
+"c:member:`Py_mod_exec` function is executed."
msgstr ""
-#: ../Doc/c-api/module.rst:203
+#: ../Doc/c-api/module.rst:205
msgid ""
"A clear function to call during GC clearing of the module object, or *NULL* "
-"if not needed."
+"if not needed. This function may be called before module state is allocated "
+"(:c:func:`PyModule_GetState()` may return `NULL`), and before the :c:member:"
+"`Py_mod_exec` function is executed."
msgstr ""
-#: ../Doc/c-api/module.rst:208
+#: ../Doc/c-api/module.rst:212
msgid ""
"A function to call during deallocation of the module object, or *NULL* if "
-"not needed."
+"not needed. This function may be called before module state is allocated (:c:"
+"func:`PyModule_GetState()` may return `NULL`), and before the :c:member:"
+"`Py_mod_exec` function is executed."
msgstr ""
-#: ../Doc/c-api/module.rst:212
+#: ../Doc/c-api/module.rst:218
msgid "Single-phase initialization"
msgstr ""
-#: ../Doc/c-api/module.rst:214
+#: ../Doc/c-api/module.rst:220
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 ""
-#: ../Doc/c-api/module.rst:220
+#: ../Doc/c-api/module.rst:226
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 ""
-#: ../Doc/c-api/module.rst:227
+#: ../Doc/c-api/module.rst:233
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 ""
-#: ../Doc/c-api/module.rst:233
+#: ../Doc/c-api/module.rst:239
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 ""
-#: ../Doc/c-api/module.rst:236
+#: ../Doc/c-api/module.rst:242
msgid ""
"Before it is returned from in the initialization function, the resulting "
"module object is typically populated using functions like :c:func:"
"`PyModule_AddObject`."
msgstr ""
-#: ../Doc/c-api/module.rst:242
+#: ../Doc/c-api/module.rst:248
msgid "Multi-phase initialization"
msgstr ""
-#: ../Doc/c-api/module.rst:244
+#: ../Doc/c-api/module.rst:250
msgid ""
"An alternate way to specify extensions is to request \"multi-phase "
"initialization\". Extension modules created this way behave more like Python "
@@ -278,7 +284,7 @@ msgid ""
"methods of classes."
msgstr ""
-#: ../Doc/c-api/module.rst:251
+#: ../Doc/c-api/module.rst:257
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-"
@@ -291,14 +297,14 @@ msgid ""
"or individual classes created with :c:func:`PyType_FromSpec`)."
msgstr ""
-#: ../Doc/c-api/module.rst:261
+#: ../Doc/c-api/module.rst:267
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 ""
-#: ../Doc/c-api/module.rst:265
+#: ../Doc/c-api/module.rst:271
msgid ""
"To request multi-phase initialization, the initialization function "
"(PyInit_modulename) returns a :c:type:`PyModuleDef` instance with non-empty :"
@@ -306,65 +312,65 @@ msgid ""
"instance must be initialized with the following function:"
msgstr ""
-#: ../Doc/c-api/module.rst:272
+#: ../Doc/c-api/module.rst:278
msgid ""
"Ensures a module definition is a properly initialized Python object that "
"correctly reports its type and reference count."
msgstr ""
-#: ../Doc/c-api/module.rst:275
+#: ../Doc/c-api/module.rst:281
msgid "Returns *def* cast to ``PyObject*``, or *NULL* if an error occurred."
msgstr ""
-#: ../Doc/c-api/module.rst:279
+#: ../Doc/c-api/module.rst:285
msgid ""
"The *m_slots* member of the module definition must point to an array of "
"``PyModuleDef_Slot`` structures:"
msgstr ""
-#: ../Doc/c-api/module.rst:286
+#: ../Doc/c-api/module.rst:292
msgid "A slot ID, chosen from the available values explained below."
msgstr ""
-#: ../Doc/c-api/module.rst:290
+#: ../Doc/c-api/module.rst:296
msgid "Value of the slot, whose meaning depends on the slot ID."
msgstr ""
-#: ../Doc/c-api/module.rst:294
+#: ../Doc/c-api/module.rst:300
msgid "The *m_slots* array must be terminated by a slot with id 0."
msgstr ""
-#: ../Doc/c-api/module.rst:296
+#: ../Doc/c-api/module.rst:302
msgid "The available slot types are:"
msgstr ""
-#: ../Doc/c-api/module.rst:300
+#: ../Doc/c-api/module.rst:306
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 ""
-#: ../Doc/c-api/module.rst:305
+#: ../Doc/c-api/module.rst:311
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 ""
-#: ../Doc/c-api/module.rst:310
+#: ../Doc/c-api/module.rst:316
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 ""
-#: ../Doc/c-api/module.rst:314
+#: ../Doc/c-api/module.rst:320
msgid ""
"Multiple ``Py_mod_create`` slots may not be specified in one module "
"definition."
msgstr ""
-#: ../Doc/c-api/module.rst:317
+#: ../Doc/c-api/module.rst:323
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 "
@@ -373,7 +379,7 @@ msgid ""
"through symlinks, all while sharing a single module definition."
msgstr ""
-#: ../Doc/c-api/module.rst:323
+#: ../Doc/c-api/module.rst:329
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 "
@@ -383,7 +389,7 @@ msgid ""
"``Py_mod_create``."
msgstr ""
-#: ../Doc/c-api/module.rst:332
+#: ../Doc/c-api/module.rst:338
msgid ""
"Specifies a function that is called to *execute* the module. This is "
"equivalent to executing the code of a Python module: typically, this "
@@ -391,21 +397,21 @@ msgid ""
"function is:"
msgstr ""
-#: ../Doc/c-api/module.rst:339
+#: ../Doc/c-api/module.rst:345
msgid ""
"If multiple ``Py_mod_exec`` slots are specified, they are processed in the "
"order they appear in the *m_slots* array."
msgstr ""
-#: ../Doc/c-api/module.rst:342
+#: ../Doc/c-api/module.rst:348
msgid "See :PEP:`489` for more details on multi-phase initialization."
msgstr ""
-#: ../Doc/c-api/module.rst:345
+#: ../Doc/c-api/module.rst:351
msgid "Low-level module creation functions"
msgstr ""
-#: ../Doc/c-api/module.rst:347
+#: ../Doc/c-api/module.rst:353
msgid ""
"The following functions are called under the hood when using multi-phase "
"initialization. They can be used directly, for example when creating module "
@@ -413,14 +419,14 @@ msgid ""
"``PyModule_ExecDef`` must be called to fully initialize a module."
msgstr ""
-#: ../Doc/c-api/module.rst:354
+#: ../Doc/c-api/module.rst:360
msgid ""
"Create a new module object, given the definition in *module* and the "
"ModuleSpec *spec*. This behaves like :c:func:`PyModule_FromDefAndSpec2` "
"with *module_api_version* set to :const:`PYTHON_API_VERSION`."
msgstr ""
-#: ../Doc/c-api/module.rst:362
+#: ../Doc/c-api/module.rst:368
msgid ""
"Create a new module object, given the definition in *module* and the "
"ModuleSpec *spec*, assuming the API version *module_api_version*. If that "
@@ -428,24 +434,24 @@ msgid ""
"`RuntimeWarning` is emitted."
msgstr ""
-#: ../Doc/c-api/module.rst:369
+#: ../Doc/c-api/module.rst:375
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 ""
-#: ../Doc/c-api/module.rst:376
+#: ../Doc/c-api/module.rst:382
msgid "Process any execution slots (:c:data:`Py_mod_exec`) given in *def*."
msgstr ""
-#: ../Doc/c-api/module.rst:382
+#: ../Doc/c-api/module.rst:388
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 ""
-#: ../Doc/c-api/module.rst:391
+#: ../Doc/c-api/module.rst:397
msgid ""
"Add the functions from the *NULL* terminated *functions* array to *module*. "
"Refer to the :c:type:`PyMethodDef` documentation for details on individual "
@@ -457,11 +463,11 @@ msgid ""
"``PyModule_FromDefAndSpec``."
msgstr ""
-#: ../Doc/c-api/module.rst:403
+#: ../Doc/c-api/module.rst:409
msgid "Support functions"
msgstr ""
-#: ../Doc/c-api/module.rst:405
+#: ../Doc/c-api/module.rst:411
msgid ""
"The module initialization function (if using single phase initialization) or "
"a function called from a module execution slot (if using multi-phase "
@@ -469,28 +475,28 @@ msgid ""
"module state:"
msgstr ""
-#: ../Doc/c-api/module.rst:412
+#: ../Doc/c-api/module.rst:418
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*. Return ``-1`` on error, ``0`` on success."
msgstr ""
-#: ../Doc/c-api/module.rst:418
+#: ../Doc/c-api/module.rst:424
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 ""
-#: ../Doc/c-api/module.rst:425
+#: ../Doc/c-api/module.rst:431
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 ""
-#: ../Doc/c-api/module.rst:432
+#: ../Doc/c-api/module.rst:438
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 "
@@ -498,29 +504,29 @@ msgid ""
"error, ``0`` on success."
msgstr ""
-#: ../Doc/c-api/module.rst:440
+#: ../Doc/c-api/module.rst:446
msgid "Add a string constant to *module*."
msgstr ""
-#: ../Doc/c-api/module.rst:444
+#: ../Doc/c-api/module.rst:450
msgid "Module lookup"
msgstr ""
-#: ../Doc/c-api/module.rst:446
+#: ../Doc/c-api/module.rst:452
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 ""
-#: ../Doc/c-api/module.rst:450
+#: ../Doc/c-api/module.rst:456
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 ""
-#: ../Doc/c-api/module.rst:455
+#: ../Doc/c-api/module.rst:461
msgid ""
"Returns the module object that was created from *def* for the current "
"interpreter. This method requires that the module object has been attached "
@@ -529,18 +535,18 @@ msgid ""
"to the interpreter state yet, it returns *NULL*."
msgstr ""
-#: ../Doc/c-api/module.rst:462
+#: ../Doc/c-api/module.rst:468
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 ""
-#: ../Doc/c-api/module.rst:465
+#: ../Doc/c-api/module.rst:471
msgid "Only effective on modules created using single-phase initialization."
msgstr ""
-#: ../Doc/c-api/module.rst:471
+#: ../Doc/c-api/module.rst:477
msgid ""
"Removes the module object created from *def* from the interpreter state."
msgstr ""
diff --git a/c-api/none.po b/c-api/none.po
index 7d0c23a9c..bfb1b9097 100644
--- a/c-api/none.po
+++ b/c-api/none.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-11-05 11:18+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/none.rst:6
msgid "The ``None`` Object"
-msgstr ""
+msgstr "L'objet ``None``"
#: ../Doc/c-api/none.rst:10
msgid ""
@@ -28,6 +28,10 @@ msgid ""
"identity (using ``==`` in C) is sufficient. There is no :c:func:"
"`PyNone_Check` function for the same reason."
msgstr ""
+"Notez que le :c:type:`PyTypeObject` de ``None`` n'est pas directement exposé "
+"via l'API Python/C. Puisque ``None`` est un singleton, tester son identité "
+"(en utilisant ``==`` en C) est suffisant. Il n'existe pas de fonction :c:"
+"func:`PyNone_Check` pour la même raison."
#: ../Doc/c-api/none.rst:18
msgid ""
@@ -35,9 +39,14 @@ msgid ""
"methods. It needs to be treated just like any other object with respect to "
"reference counts."
msgstr ""
+"L'objet Python ``None``, exprimant l'absence de valeur. Cet objet n'a "
+"aucune méthode. Il doit être traité exactement comme les autres objets en "
+"terme de comptage de références."
#: ../Doc/c-api/none.rst:25
msgid ""
"Properly handle returning :c:data:`Py_None` from within a C function (that "
"is, increment the reference count of ``None`` and return it.)"
msgstr ""
+"Renvoie, de la bonne manière, :c:data:`Py_None` depuis une fonction C (c'est "
+"à dire en incrémentant les références à ``None`` avant de le donner)."
diff --git a/c-api/objbuffer.po b/c-api/objbuffer.po
index 6eb4efd45..ee11f7dc2 100644
--- a/c-api/objbuffer.po
+++ b/c-api/objbuffer.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-01-29 00:24+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/objbuffer.rst:4
msgid "Old Buffer Protocol"
-msgstr ""
+msgstr "Ancien *Buffer Protocol*"
#: ../Doc/c-api/objbuffer.rst:8
msgid ""
@@ -30,6 +30,12 @@ msgid ""
"you control over the lifetime of the resources acquired when a buffer is "
"exported."
msgstr ""
+"Ces fonctions faisaient partie de l'API de l'ancien protocole de tampons "
+"dans Python 2. Dans Python 3, ce protocole n'existe plus, mais les fonctions "
+"sont toujours exposées pour simplifier le portage de code Python 2.x. Elles "
+"se comportent comme une abstraction de compatibilité du :ref:`nouveau "
+"protocole de tampons `, mais sans vous donner de contrôle sur "
+"la durée de vie des ressources acquises lorsqu'un tampon est exporté."
#: ../Doc/c-api/objbuffer.rst:15
msgid ""
@@ -38,6 +44,10 @@ msgid ""
"`PyArg_ParseTuple` family of functions) to get a buffer view over an object, "
"and :c:func:`PyBuffer_Release` when the buffer view can be released."
msgstr ""
+"Il est donc recommandé d'appeler :c:func:`PyObject_GetBuffer` (ou les :ref:"
+"`codes ` ``y*`` ou ``w*`` à la famille de fonctions :c:func:"
+"`PyArg_ParseTuple`) pour obtenir une vue d'un tampon sur un objet, et :c:"
+"func:`PyBuffer_Release` lorsque la vue peut être libérée."
#: ../Doc/c-api/objbuffer.rst:23
msgid ""
@@ -47,6 +57,12 @@ msgid ""
"and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:"
"`TypeError` on error."
msgstr ""
+"Retourne un pointeur vers un emplacement de mémoire en lecture seule "
+"utilisable en tant qu'entrée basée sur des caractères. L'argument *obj* doit "
+"prendre en charge l'interface de tampon de caractère à segment unique. En "
+"cas de succès, retourne ``0``, définit *buffer* à l'emplacement de la "
+"mémoire et *buffer_len* à la longueur de la mémoire tampon. Retourne ``-1`` "
+"et affecte une exception :exc:`TypeError` en cas d'erreur."
#: ../Doc/c-api/objbuffer.rst:32
msgid ""
@@ -56,12 +72,20 @@ msgid ""
"and *buffer_len* to the buffer length. Returns ``-1`` and sets a :exc:"
"`TypeError` on error."
msgstr ""
+"Retourne un pointeur vers un emplacement de mémoire en lecture seule "
+"contenant des données arbitraires. L'argument *obj* doit prendre en charge "
+"l'interface de tampon lisible à segment unique. En cas de succès, retourne "
+"``0``, définit *buffer* à l'emplacement de la mémoire et *buffer_len* à la "
+"longueur de la mémoire tampon. Renvoie ``-1`` et affecte l'exception :exc:"
+"`TypeError` en cas d'erreur."
#: ../Doc/c-api/objbuffer.rst:41
msgid ""
"Returns ``1`` if *o* supports the single-segment readable buffer interface. "
"Otherwise returns ``0``."
msgstr ""
+"Renvoie ``1`` si *o* gère l'interface *single-segment readable buffer*, "
+"``0`` sinon."
#: ../Doc/c-api/objbuffer.rst:47
msgid ""
@@ -70,3 +94,8 @@ msgid ""
"``0``, sets *buffer* to the memory location and *buffer_len* to the buffer "
"length. Returns ``-1`` and sets a :exc:`TypeError` on error."
msgstr ""
+"Renvoie un pointeur vers un espace mémoire dans lequel il est possible "
+"décrire. L'argument *obj* doit gérer l'interface *single-segment, character "
+"buffer*. Si tout s'est bien passé, ``0`` est renvoyé, *buffer* pointe vers "
+"l'espace mémoire, et *buffer_len* vaudra la taille du tampon. Renvoie ``-1`` "
+"et met l'exception :exc:`TypeError` en cas d'erreur."
diff --git a/c-api/object.po b/c-api/object.po
index 63787c2d6..67c917ab1 100644
--- a/c-api/object.po
+++ b/c-api/object.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,13 +19,15 @@ msgstr ""
#: ../Doc/c-api/object.rst:6
msgid "Object Protocol"
-msgstr ""
+msgstr "Protocole Objet"
#: ../Doc/c-api/object.rst:11
msgid ""
"The ``NotImplemented`` singleton, used to signal that an operation is not "
"implemented for the given type combination."
msgstr ""
+"Le singleton ``NotImplemented``, utilisé pour signaler qu'une opération "
+"n'est pas implémentée pour la combinaison de types en question."
#: ../Doc/c-api/object.rst:17
msgid ""
@@ -33,6 +35,9 @@ msgid ""
"function (that is, increment the reference count of NotImplemented and "
"return it)."
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)."
#: ../Doc/c-api/object.rst:24
msgid ""
@@ -41,6 +46,11 @@ msgid ""
"currently supported is :const:`Py_PRINT_RAW`; if given, the :func:`str` of "
"the object is written instead of the :func:`repr`."
msgstr ""
+"Écrit un objet *o*, dans le fichier *fp*. Renvoie ``-1`` en cas d'erreur. "
+"L'argument *flags* est utilisé pour permettre certaines options de rendu. La "
+"seule option actuellement gérée est :const:`Py_PRINT_RAW` ; si cet argument "
+"est fourni, le :func:`str` de l'objet est utilisé pour le rendu à la place "
+"de :func:`repr`."
#: ../Doc/c-api/object.rst:32 ../Doc/c-api/object.rst:39
msgid ""
@@ -48,6 +58,9 @@ msgid ""
"This is equivalent to the Python expression ``hasattr(o, attr_name)``. This "
"function always succeeds."
msgstr ""
+"Renvoie ``1`` si *o* a l'attribut *attr_name*, et ``0`` sinon. Ceci est "
+"équivalent à l'expression Python ``hasattr(o, attr_name)``. Cette fonction "
+"réussit toujours."
#: ../Doc/c-api/object.rst:46
msgid ""
@@ -55,6 +68,9 @@ msgid ""
"attribute value on success, or *NULL* on failure. This is the equivalent of "
"the Python expression ``o.attr_name``."
msgstr ""
+"Récupère l'attribut nommé *attr_name* de l'objet *o*. Renvoie la valeur de "
+"l'attribut en cas de succès, ou *NULL* en cas d'échec. Ceci est équivalent à "
+"l'expression Python ``o.attr_name``."
#: ../Doc/c-api/object.rst:53
msgid ""
@@ -62,6 +78,9 @@ msgid ""
"attribute value on success, or *NULL* on failure. This is the equivalent of "
"the Python expression ``o.attr_name``."
msgstr ""
+"Récupère un attribut nommé *attr_name* de l'objet *o*. Renvoie la valeur de "
+"l'attribut en cas de succès, ou *NULL* en cas d'échec. Ceci est équivalent à "
+"l'expression Python ``o.attr_name``."
#: ../Doc/c-api/object.rst:60
msgid ""
@@ -72,6 +91,13 @@ msgid ""
"descriptors take preference over instance attributes, while non-data "
"descriptors don't. Otherwise, an :exc:`AttributeError` is raised."
msgstr ""
+"Accesseur d'attribut générique destiné à être mis dans le *slot* "
+"``tp_getattro`` d'un objet type. Recherche un descripteur dans le "
+"dictionnaire de classes du MRO de l'objet ainsi qu'un attribut dans le :attr:"
+"`~object.__dict__` de l'objet (si présent). Comme défini dans :ref:"
+"`descriptors`, les descripteurs de données sont prioritaires sur les "
+"attributs d'instance, contrairement aux autres descripteurs. Sinon, une :exc:"
+"`AttributeError` est levée."
#: ../Doc/c-api/object.rst:70 ../Doc/c-api/object.rst:81
msgid ""
@@ -79,18 +105,26 @@ msgid ""
"value *v*. Raise an exception and return ``-1`` on failure; return ``0`` on "
"success. This is the equivalent of the Python statement ``o.attr_name = v``."
msgstr ""
+"Définit la valeur de l'attribut nommé *attr_name*, pour l'objet *o*, à la "
+"valeur *v*. Lève une exception et renvoie ``-1`` en cas d'échec ; renvoie "
+"``0`` en cas de succès. Ceci est équivalent à l'instruction Python ``o."
+"attr_name = v``."
#: ../Doc/c-api/object.rst:75
msgid ""
"If *v* is *NULL*, the attribute is deleted, however this feature is "
"deprecated in favour of using :c:func:`PyObject_DelAttr`."
msgstr ""
+"Si *v* est *NULL*, l'attribut est supprimé. Cette fonctionnalité est "
+"obsolète,nous vous conseillons d'utiliser :c:func:`PyObject_DelAttr`."
#: ../Doc/c-api/object.rst:86
msgid ""
"If *v* is *NULL*, the attribute is deleted, however 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`."
#: ../Doc/c-api/object.rst:92
msgid ""
@@ -103,24 +137,39 @@ msgid ""
"returned, otherwise an :exc:`AttributeError` is raised and ``-1`` is "
"returned."
msgstr ""
+"Accesseur et suppresseur générique d'attributs qui est fait pour être mis "
+"dans le :c:member:`~PyTypeObject.tp_setattro` d'un objet type. Il cherche un "
+"descripteur de données dans le dictionnaire de classes dans le MRO de "
+"l'objet et, si ce descripteur est trouvé, c'est lui qui est utilisé de "
+"préférence pour la suppression et la définition de l'attribut dans le "
+"dictionnaire d'instance. Sinon, l'attribut est défini ou supprimé dans le :"
+"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é."
#: ../Doc/c-api/object.rst:104 ../Doc/c-api/object.rst:110
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``."
msgstr ""
+"Supprime l'attribut nommé *attr_name*, pour l'objet *o*. Renvoie ``-1`` en "
+"cas d'échec. Ceci est l'équivalent de l'expression Python ``del o."
+"attr_name``."
#: ../Doc/c-api/object.rst:116
msgid ""
"A generic implementation for the getter of a ``__dict__`` descriptor. It "
"creates the dictionary if necessary."
msgstr ""
+"Une implémentation générique de l'accesseur d'un descripteur d'un "
+"``__dict__``. Crée le dictionnaire si nécessaire."
#: ../Doc/c-api/object.rst:124
msgid ""
"A generic implementation for the setter of a ``__dict__`` descriptor. This "
"implementation does not allow the dictionary to be deleted."
msgstr ""
+"Une implémentation générique du mutateur d'un descripteur de ``__dict__``. "
+"Cette implémentation n'autorise pas la suppression du dictionnaire."
#: ../Doc/c-api/object.rst:132
msgid ""
@@ -132,6 +181,13 @@ msgid ""
"to *opid*. Returns the value of the comparison on success, or *NULL* on "
"failure."
msgstr ""
+"Compare les valeurs de *o1* et *o2* en utilisant l'opération spécifiée par "
+"*opid*, qui doit être :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:"
+"`Py_NE`, :const:`Py_GT`, ou :const:`Py_GE`, correspondant à ``<``, ``<=``, "
+"``==``, ``!=``, ``>``, ou ``>=`` respectivement. Ceci est l'équivalent de "
+"l'expression Python ``o1 op o2``, où ``op`` est l'opérateur correspondant à "
+"*opid*. Renvoie la valeur de la comparaison en cas de succès, ou *NULL* en "
+"cas d'échec."
#: ../Doc/c-api/object.rst:142
msgid ""
@@ -143,12 +199,21 @@ msgid ""
"Python expression ``o1 op o2``, where ``op`` is the operator corresponding "
"to *opid*."
msgstr ""
+"Compare les valeurs de *o1* et *o2* en utilisant l'opération spécifiée par "
+"*opid*, qui doit être :const:`Py_LT`, :const:`Py_LE`, :const:`Py_EQ`, :const:"
+"`Py_NE`, :const:`Py_GT`, ou :const:`Py_GE`, correspondant à ``<``, ``<=``, "
+"``==``, ``!=``, ``>``, ou ``>=`` respectivement. Renvoie ``-1`` en cas "
+"d'erreur, ``0`` si le résultat est faux, et ``1`` sinon. Ceci est "
+"l'équivalent de l'expression Python ``o1 op o2``, où ``op`` est l'opérateur "
+"correspondant à *opid*."
#: ../Doc/c-api/object.rst:151
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`."
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`."
#: ../Doc/c-api/object.rst:158
msgid ""
@@ -156,12 +221,18 @@ msgid ""
"representation on success, *NULL* on failure. This is the equivalent of the "
"Python expression ``repr(o)``. Called by the :func:`repr` built-in function."
msgstr ""
+"Calcule une représentation en chaîne de caractères de l'objet *o*. Renvoie "
+"la représentation en chaîne de caractères en cas de succès, *NULL* en cas "
+"d'échec. Ceci est l'équivalent de l'expression Python ``repr(o)``. Appelé "
+"par la fonction intégrée :func:`repr`."
#: ../Doc/c-api/object.rst:162 ../Doc/c-api/object.rst:186
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
msgstr ""
+"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
+"qu'elle ne passe pas sous silence une exception active."
#: ../Doc/c-api/object.rst:170
msgid ""
@@ -171,6 +242,12 @@ msgid ""
"string similar to that returned by :c:func:`PyObject_Repr` in Python 2. "
"Called by the :func:`ascii` built-in function."
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 "
+"renvoyée par :c:func:`PyObject_Repr` en Python 2. Appelée par la fonction "
+"native :func:`ascii`."
#: ../Doc/c-api/object.rst:181
msgid ""
@@ -179,6 +256,11 @@ msgid ""
"Python expression ``str(o)``. Called by the :func:`str` built-in function "
"and, therefore, by the :func:`print` function."
msgstr ""
+"Calcule une représentation en chaîne de caractères de l'objet *o*. Renvoie "
+"la représentation en chaîne de caractères en cas de succès, *NULL* en cas "
+"d'échec. Ceci est l'équivalent de l'expression Python ``str(o)``. Appelée "
+"par la fonction native :func:`str`, et, par conséquent, par la fonction :"
+"func:`print`."
#: ../Doc/c-api/object.rst:194
msgid ""
@@ -187,12 +269,19 @@ msgid ""
"``bytes(o)``, when *o* is not an integer. Unlike ``bytes(o)``, a TypeError "
"is raised when *o* is an integer instead of a zero-initialized bytes object."
msgstr ""
+"Calcule une représentation en octets de l'objet *o*. *NULL* est renvoyé en "
+"cas d'échec, un objet séquence d'octets est renvoyé en cas de succès. Ceci "
+"est l'équivalent de l'expression Python ``bytes(o)``, quand *o* n'est pas un "
+"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."
#: ../Doc/c-api/object.rst:203
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``."
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``."
#: ../Doc/c-api/object.rst:206 ../Doc/c-api/object.rst:225
msgid ""
@@ -200,6 +289,9 @@ msgid ""
"The result will be ``1`` when at least one of the checks returns ``1``, "
"otherwise it will be ``0``."
msgstr ""
+"Si *cls* est un tuple, la vérification est menée sur chaque entrée de *cls*. "
+"Le résultat sera ``1`` quand au moins une des vérifications renvoie ``1``, "
+"sinon ce sera ``0``."
#: ../Doc/c-api/object.rst:210
msgid ""
@@ -208,6 +300,10 @@ msgid ""
"*derived* is a subclass of *cls* if it is a direct or indirect subclass, i."
"e. contained in ``cls.__mro__``."
msgstr ""
+"Si *cls* a une méthode :meth:`~class.__subclasscheck__`, elle est appelée "
+"pour déterminer le statut de la sous-classe comme décrit dans :pep:`3119`. "
+"Sinon, *derived* est une sous-classe de *cls* si c'est une sous-classe "
+"directe ou indirecte, c'est-à-dire contenue dans ``cls.__mro__``."
#: ../Doc/c-api/object.rst:215
msgid ""
@@ -215,12 +311,19 @@ msgid ""
"class, are considered classes. However, objects can override this by having "
"a :attr:`__bases__` attribute (which must be a tuple of base classes)."
msgstr ""
+"Normalement seulement les classes objets, c'est-à-dire les instances de :"
+"class:`type` ou d'une classe dérivée, sont considérées classes. Cependant, "
+"les objets peuvent surcharger cela en ayant un attribut :attr:`__bases__` "
+"(qui doit être un tuple de classes de bases)."
#: ../Doc/c-api/object.rst:222
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."
msgstr ""
+"Renvoie ``1`` si *inst* est une instance de la classe *cls* ou une sous-"
+"classe de *cls*, ou ``0`` sinon. En cas d'erreur, renvoie ``-1`` et "
+"initialise une exception."
#: ../Doc/c-api/object.rst:229
msgid ""
@@ -228,12 +331,18 @@ msgid ""
"determine the subclass status as described in :pep:`3119`. Otherwise, "
"*inst* is an instance of *cls* if its class is a subclass of *cls*."
msgstr ""
+"Si *cls* a une méthode :meth:`~class.__subclasscheck__`, elle sera appelée "
+"pour déterminer le statut de la sous-classe comme décrit dans :pep:`3119`. "
+"Sinon, *inst* est une instance *cls* si sa classe est une sous-classe de "
+"*cls*."
#: ../Doc/c-api/object.rst:233
msgid ""
"An instance *inst* can override what is considered its class by having a :"
"attr:`__class__` attribute."
msgstr ""
+"Une instance *inst* peut surcharger ce qui est considéré comme sa classe en "
+"ayant un attribut :attr:`__class__`."
#: ../Doc/c-api/object.rst:236
msgid ""
@@ -241,12 +350,17 @@ msgid ""
"classes are, by having a :attr:`__bases__` attribute (which must be a tuple "
"of base classes)."
msgstr ""
+"Un objet *cls* peut surcharger s'il est considéré comme une classe, et ce "
+"que ses classes de bases sont, en ayant un attribut :attr:`__bases__` (qui "
+"doit être un tuple des classes de base)."
#: ../Doc/c-api/object.rst:243
msgid ""
"Determine if the object *o* is callable. Return ``1`` if the object is "
"callable and ``0`` otherwise. This function always succeeds."
msgstr ""
+"Détermine si l'objet *o* est appelable. Renvoie ``1`` si c'est le cas, et "
+"``0`` sinon. Cette fonction réussit toujours."
#: ../Doc/c-api/object.rst:249
msgid ""
@@ -395,8 +509,8 @@ msgstr ""
#: ../Doc/c-api/object.rst:398
msgid ""
-"Delete the mapping for *key* from *o*. Returns ``-1`` on failure. This is "
-"the equivalent of the Python statement ``del o[key]``."
+"Remove the mapping for the object *key* from the object *o*. Return ``-1`` "
+"on failure. This is equivalent to the Python statement ``del o[key]``."
msgstr ""
#: ../Doc/c-api/object.rst:404
diff --git a/c-api/objimpl.po b/c-api/objimpl.po
index f0e58347e..50ee8262e 100644
--- a/c-api/objimpl.po
+++ b/c-api/objimpl.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-10-18 09:23+0200\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,10 +19,12 @@ msgstr ""
#: ../Doc/c-api/objimpl.rst:7
msgid "Object Implementation Support"
-msgstr ""
+msgstr "Implémentation d'objets"
#: ../Doc/c-api/objimpl.rst:9
msgid ""
"This chapter describes the functions, types, and macros used when defining "
"new object types."
msgstr ""
+"Ce chapitre décrit les fonctions, types, et macros utilisées pour définir de "
+"nouveaux types d'objets."
diff --git a/c-api/reflection.po b/c-api/reflection.po
index 18ff3ef9f..3ac758d98 100644
--- a/c-api/reflection.po
+++ b/c-api/reflection.po
@@ -19,41 +19,52 @@ msgstr ""
#: ../Doc/c-api/reflection.rst:6
msgid "Reflection"
-msgstr ""
+msgstr "Réflexion"
#: ../Doc/c-api/reflection.rst:10
msgid ""
"Return a dictionary of the builtins in the current execution frame, or the "
"interpreter of the thread state if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des fonctions natives de la *frame* en cours "
+"d'exécution, ou si aucune *frame* n'est exécutée, les fonctions natives du "
+"*thread* indiqué par le *thread state*."
#: ../Doc/c-api/reflection.rst:16
msgid ""
"Return a dictionary of the local variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des variables locales de la *frame* en cours "
+"d'exécution, ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:22
msgid ""
"Return a dictionary of the global variables in the current execution frame, "
"or *NULL* if no frame is currently executing."
msgstr ""
+"Renvoie un dictionnaire des variables globales de la *frame* en cours "
+"d'exécution ou *NULL* si aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:28
msgid ""
"Return the current thread state's frame, which is *NULL* if no frame is "
"currently executing."
msgstr ""
+"Renvoie la *frame* actuelle selon le *thread state*, qui est *NULL* si "
+"aucune *frame* n'est en cours d'exécution."
#: ../Doc/c-api/reflection.rst:34
msgid "Return the line number that *frame* is currently executing."
-msgstr ""
+msgstr "Renvoie le numéro de ligne que *frame* est en train d'exécuter"
#: ../Doc/c-api/reflection.rst:39
msgid ""
"Return the name of *func* if it is a function, class or instance object, "
"else the name of *func*\\s type."
msgstr ""
+"Renvoie le nom de *func* s'il s'agit d'une fonction, d'une classe ou d'un "
+"objet d'instance, sinon le nom du type de *func*"
#: ../Doc/c-api/reflection.rst:45
msgid ""
@@ -62,3 +73,8 @@ msgid ""
"and \" object\". Concatenated with the result of :c:func:"
"`PyEval_GetFuncName`, the result will be a description of *func*."
msgstr ""
+"Renvoie une description en chaîne de caractères, en fonction du type de "
+"*func*. Les valeurs renvoyées peuvent être ``\"()\"`` pour les fonction et "
+"les méthodes, ``\\\" constructor\\\"``, ``\\\" instance\\\"``, ``\\\" object"
+"\\\"``. Concaténé avec le résultat de :c:func:`PyEval_GetFuncName`, le "
+"résultat sera une description de *func*"
diff --git a/c-api/sequence.po b/c-api/sequence.po
index d5667bf17..a1d392f65 100644
--- a/c-api/sequence.po
+++ b/c-api/sequence.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -24,55 +24,57 @@ msgstr ""
#: ../Doc/c-api/sequence.rst:11
msgid ""
"Return ``1`` if the object provides sequence protocol, and ``0`` otherwise. "
-"This function always succeeds."
+"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."
msgstr ""
-#: ../Doc/c-api/sequence.rst:20
+#: ../Doc/c-api/sequence.rst:23
msgid ""
"Returns the number of objects in sequence *o* on success, and ``-1`` on "
-"failure. For objects that do not provide sequence protocol, this is "
-"equivalent to the Python expression ``len(o)``."
+"failure. This is equivalent to the Python expression ``len(o)``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:27
+#: ../Doc/c-api/sequence.rst:29
msgid ""
"Return the concatenation of *o1* and *o2* on success, and *NULL* on failure. "
"This is the equivalent of the Python expression ``o1 + o2``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:33
+#: ../Doc/c-api/sequence.rst:35
msgid ""
"Return the result of repeating sequence object *o* *count* times, or *NULL* "
"on failure. This is the equivalent of the Python expression ``o * count``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:39
+#: ../Doc/c-api/sequence.rst:41
msgid ""
"Return the concatenation 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 expression ``o1 += o2``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:46
+#: ../Doc/c-api/sequence.rst:48
msgid ""
"Return the result of repeating sequence object *o* *count* times, or *NULL* "
"on failure. The operation is done *in-place* when *o* supports it. This is "
"the equivalent of the Python expression ``o *= count``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:53
+#: ../Doc/c-api/sequence.rst:55
msgid ""
"Return the *i*\\ th element of *o*, or *NULL* on failure. This is the "
"equivalent of the Python expression ``o[i]``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:59
+#: ../Doc/c-api/sequence.rst:61
msgid ""
"Return the slice of sequence object *o* between *i1* and *i2*, or *NULL* on "
"failure. This is the equivalent of the Python expression ``o[i1:i2]``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:65
+#: ../Doc/c-api/sequence.rst:67
msgid ""
"Assign object *v* to the *i*\\ th element of *o*. Raise an exception and "
"return ``-1`` on failure; return ``0`` on success. This is the equivalent "
@@ -80,105 +82,106 @@ msgid ""
"reference to *v*."
msgstr ""
-#: ../Doc/c-api/sequence.rst:70
+#: ../Doc/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`."
msgstr ""
-#: ../Doc/c-api/sequence.rst:76
+#: ../Doc/c-api/sequence.rst:78
msgid ""
"Delete the *i*\\ th element of object *o*. Returns ``-1`` on failure. This "
"is the equivalent of the Python statement ``del o[i]``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:82
+#: ../Doc/c-api/sequence.rst:84
msgid ""
"Assign the sequence object *v* to the slice in sequence object *o* from *i1* "
"to *i2*. This is the equivalent of the Python statement ``o[i1:i2] = v``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:88
+#: ../Doc/c-api/sequence.rst:90
msgid ""
"Delete the slice in sequence object *o* from *i1* to *i2*. Returns ``-1`` "
"on failure. This is the equivalent of the Python statement ``del o[i1:i2]``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:94
+#: ../Doc/c-api/sequence.rst:96
msgid ""
"Return the number of occurrences of *value* in *o*, that is, return the "
"number of keys for which ``o[key] == value``. On failure, return ``-1``. "
"This is equivalent to the Python expression ``o.count(value)``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:101
+#: ../Doc/c-api/sequence.rst:103
msgid ""
"Determine if *o* contains *value*. If an item in *o* is equal to *value*, "
"return ``1``, otherwise return ``0``. On error, return ``-1``. This is "
"equivalent to the Python expression ``value in o``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:108
+#: ../Doc/c-api/sequence.rst:110
msgid ""
"Return the first index *i* for which ``o[i] == value``. On error, return "
"``-1``. This is equivalent to the Python expression ``o.index(value)``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:114
+#: ../Doc/c-api/sequence.rst:116
msgid ""
"Return a list object with the same contents as the sequence or iterable *o*, "
"or *NULL* on failure. The returned list is guaranteed to be new. This is "
"equivalent to the Python expression ``list(o)``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:123
+#: ../Doc/c-api/sequence.rst:125
msgid ""
-"Return a tuple object with the same contents as the arbitrary sequence *o* "
-"or *NULL* on failure. If *o* is a tuple, a new reference will be returned, "
-"otherwise a tuple will be constructed with the appropriate contents. This "
-"is equivalent to the Python expression ``tuple(o)``."
+"Return a tuple object with the same contents as the sequence or iterable "
+"*o*, or *NULL* on failure. If *o* is a tuple, a new reference will be "
+"returned, otherwise a tuple will be constructed with the appropriate "
+"contents. This is equivalent to the Python expression ``tuple(o)``."
msgstr ""
-#: ../Doc/c-api/sequence.rst:131
+#: ../Doc/c-api/sequence.rst:133
msgid ""
-"Return the sequence *o* as a list, unless it is already a tuple or list, in "
-"which case *o* is returned. Use :c:func:`PySequence_Fast_GET_ITEM` to "
-"access the members of the result. Returns *NULL* on failure. If the object "
-"is not a sequence, raises :exc:`TypeError` with *m* as the message text."
+"Return the sequence or iterable *o* as a list, unless it is already a tuple "
+"or list, in which case *o* is returned. Use :c:func:"
+"`PySequence_Fast_GET_ITEM` to access the members of the result. Returns "
+"*NULL* on failure. If the object is not a sequence or iterable, raises :exc:"
+"`TypeError` with *m* as the message text."
msgstr ""
-#: ../Doc/c-api/sequence.rst:139
+#: ../Doc/c-api/sequence.rst:141
+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_GET_SIZE` is faster because it can assume *o* is a list or "
+"tuple."
+msgstr ""
+
+#: ../Doc/c-api/sequence.rst:150
msgid ""
"Return the *i*\\ th element of *o*, assuming that *o* was returned by :c:"
"func:`PySequence_Fast`, *o* is not *NULL*, and that *i* is within bounds."
msgstr ""
-#: ../Doc/c-api/sequence.rst:145
+#: ../Doc/c-api/sequence.rst:156
msgid ""
"Return the underlying array of PyObject pointers. Assumes that *o* was "
"returned by :c:func:`PySequence_Fast` and *o* is not *NULL*."
msgstr ""
-#: ../Doc/c-api/sequence.rst:148
+#: ../Doc/c-api/sequence.rst:159
msgid ""
"Note, if a list gets resized, the reallocation may relocate the items array. "
"So, only use the underlying array pointer in contexts where the sequence "
"cannot change."
msgstr ""
-#: ../Doc/c-api/sequence.rst:155
+#: ../Doc/c-api/sequence.rst:166
msgid ""
"Return the *i*\\ th element of *o* or *NULL* on failure. Macro form of :c:"
"func:`PySequence_GetItem` but without checking that :c:func:"
"`PySequence_Check` on *o* is true and without adjustment for negative "
"indices."
msgstr ""
-
-#: ../Doc/c-api/sequence.rst:163
-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_GET_SIZE` is faster because it can assume *o* is a list or "
-"tuple."
-msgstr ""
diff --git a/c-api/stable.po b/c-api/stable.po
index d97fca55b..d6d76353f 100644
--- a/c-api/stable.po
+++ b/c-api/stable.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2018-01-21 23:58+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/stable.rst:7
msgid "Stable Application Binary Interface"
-msgstr ""
+msgstr "ABI Stable"
#: ../Doc/c-api/stable.rst:9
msgid ""
@@ -28,6 +28,10 @@ msgid ""
"changing existing API or removing API (although some interfaces do get "
"removed after being deprecated first)."
msgstr ""
+"L'API C de Python change à chaque version. La majorité de ces changement "
+"n'affecte cependant pas la compatibilité du code source. Typiquement, des "
+"API sont ajoutées, mais ni modifiées ni supprimées (bien que certaines "
+"interfaces puissent être supprimées, après avoir d'abord été dépréciées)."
#: ../Doc/c-api/stable.rst:14
msgid ""
@@ -40,6 +44,15 @@ msgid ""
"addition, on Windows, extension modules link with a specific pythonXY.dll "
"and need to be recompiled to link with a newer one."
msgstr ""
+"Malheureusement, la compatibilité de l'API ne s'étend pas à une "
+"compatibilité binaire (l'ABI). L'évolution des structures en est la raison "
+"principale : l'ajout de nouveaux attributs, ou le changement du type d'un "
+"attribut peut ne pas casser l'API mais casser l'ABI. Par conséquent, les "
+"modules d'extension doivent être recompilés à chaque nouvelle version de "
+"Python (ce n'est exceptionnellement pas nécessaire sur Unix, si aucune des "
+"interfaces modifiées n'est utilisée). De plus, sous Windows, les modules "
+"d'extension sont liés à un *pythonXY.dll* spécifique, ils est donc "
+"nécessaire de les recompiler pour les lier au nouveau DLL."
#: ../Doc/c-api/stable.rst:23
msgid ""
@@ -49,6 +62,12 @@ msgid ""
"become hidden from the extension module; in return, a module is built that "
"works on any 3.x version (x>=2) without recompilation."
msgstr ""
+"Depuis Python 3.2 il est garanti qu'une certaine partie de l'API gardera une "
+"ABI stable. Les modules d'extension souhaitant utiliser cette API (Appellée "
+"\"API limitée\") doivent définir ``Py_LIMITED_API``. Des spécificités de "
+"l'interpréteur sont alors cachées au module, en contrepartie le module "
+"devient compatible avec toutes les versions de Python 3.x (x>=2) sans "
+"recompilation."
#: ../Doc/c-api/stable.rst:29
msgid ""
@@ -60,6 +79,14 @@ msgid ""
"Python releases, but fail to load (because of missing symbols) on the older "
"releases."
msgstr ""
+"Dans certains cas, il est nécessaire d'étendre l'ABI stable avec de "
+"nouvelles fonctions. Les modules d'extension souhaitant utiliser ces "
+"nouvelles APIs doivent configurer ``Py_LIMITED_API`` à la valeur "
+"``Py_VERSION_HEX`` correspondant à la plus ancienne version de Python qu'ils "
+"souhaitent supporter (voir :ref:`apiabiversion`, par exemple ``0x03030000`` "
+"pour Python 3.3). De tels modules fonctionneront dans toutes les versions "
+"ultérieures de Python, mais ne pourront pas se charger (dû à des symboles "
+"manquants) sur les versions plus anciennes."
#: ../Doc/c-api/stable.rst:36
msgid ""
@@ -67,3 +94,7 @@ msgid ""
"documented in :pep:`384`. In the C API documentation, API elements that are "
"not part of the limited API are marked as \"Not part of the limited API.\""
msgstr ""
+"Depuis Python 3.2, l'ensemble des fonctions exposées par l'API limitée est "
+"documentée dans la :pep:`384`. Dans la documentation de l'API C, les "
+"éléments ne faisant pas partie de l'API limitée sont notés \"Ne faisant pas "
+"partie de l'API limitée\" (*\"Not part of the limited API\"*)."
diff --git a/c-api/structures.po b/c-api/structures.po
index 5088c5eea..772b2aca5 100644
--- a/c-api/structures.po
+++ b/c-api/structures.po
@@ -135,7 +135,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
#: ../Doc/c-api/structures.rst:305
msgid "Field"
-msgstr ""
+msgstr "Champ"
#: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240
#: ../Doc/c-api/structures.rst:305
@@ -380,7 +380,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:269
msgid "float"
-msgstr "float"
+msgstr "*float*"
#: ../Doc/c-api/structures.rst:270
msgid "T_DOUBLE"
@@ -425,7 +425,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:276
msgid "unsigned char"
-msgstr "unsigned char"
+msgstr "``unsigned char``"
#: ../Doc/c-api/structures.rst:277
msgid "T_UINT"
@@ -433,7 +433,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:277
msgid "unsigned int"
-msgstr "unsigned int"
+msgstr "``unsigned int``"
#: ../Doc/c-api/structures.rst:278
msgid "T_USHORT"
@@ -441,7 +441,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:278
msgid "unsigned short"
-msgstr "unsigned short"
+msgstr "``unsigned short``"
#: ../Doc/c-api/structures.rst:279
msgid "T_ULONG"
@@ -449,7 +449,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:279
msgid "unsigned long"
-msgstr "unsigned long"
+msgstr "``unsigned long``"
#: ../Doc/c-api/structures.rst:280
msgid "T_BOOL"
@@ -469,7 +469,7 @@ msgstr ""
#: ../Doc/c-api/structures.rst:282
msgid "unsigned long long"
-msgstr "unsigned long long"
+msgstr "``unsigned long long``"
#: ../Doc/c-api/structures.rst:283
msgid "T_PYSSIZET"
diff --git a/c-api/sys.po b/c-api/sys.po
index b10f225e5..7d71505d9 100644
--- a/c-api/sys.po
+++ b/c-api/sys.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-02-08 09:58+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -83,74 +83,104 @@ msgid ""
"handler instead of decoding them."
msgstr ""
-#: ../Doc/c-api/sys.rst:69
+#: ../Doc/c-api/sys.rst:69 ../Doc/c-api/sys.rst:106
+msgid "Encoding, highest priority to lowest priority:"
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:71 ../Doc/c-api/sys.rst:108
+msgid "``UTF-8`` on macOS and Android;"
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:72
+msgid ""
+"``ASCII`` if the ``LC_CTYPE`` locale is ``\"C\"``, ``nl_langinfo(CODESET)`` "
+"returns the ``ASCII`` encoding (or an alias), and :c:func:`mbstowcs` and :c:"
+"func:`wcstombs` functions use the ``ISO-8859-1`` encoding."
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:76
+msgid "the current locale encoding (``LC_CTYPE`` locale)."
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:78
msgid ""
"Return a pointer to a newly allocated wide character string, use :c:func:"
"`PyMem_RawFree` to free the memory. If size is not ``NULL``, write the "
-"number of wide characters excluding the null character into ``*size``"
+"number of wide characters excluding the null character into ``*size``."
msgstr ""
-#: ../Doc/c-api/sys.rst:73
+#: ../Doc/c-api/sys.rst:82
msgid ""
"Return ``NULL`` on decoding error or memory allocation error. If *size* is "
"not ``NULL``, ``*size`` is set to ``(size_t)-1`` on memory error or set to "
"``(size_t)-2`` on decoding error."
msgstr ""
-#: ../Doc/c-api/sys.rst:77
+#: ../Doc/c-api/sys.rst:86
msgid ""
"Decoding errors should never happen, unless there is a bug in the C library."
msgstr ""
-#: ../Doc/c-api/sys.rst:80
+#: ../Doc/c-api/sys.rst:89
msgid ""
"Use the :c:func:`Py_EncodeLocale` function to encode the character string "
"back to a byte string."
msgstr ""
-#: ../Doc/c-api/sys.rst:85
+#: ../Doc/c-api/sys.rst:94
msgid ""
"The :c:func:`PyUnicode_DecodeFSDefaultAndSize` and :c:func:"
"`PyUnicode_DecodeLocaleAndSize` functions."
msgstr ""
-#: ../Doc/c-api/sys.rst:93
+#: ../Doc/c-api/sys.rst:102
msgid ""
"Encode a wide character string to the locale encoding with the :ref:"
"`surrogateescape error handler `: surrogate characters in "
"the range U+DC80..U+DCFF are converted to bytes 0x80..0xFF."
msgstr ""
-#: ../Doc/c-api/sys.rst:97
+#: ../Doc/c-api/sys.rst:109
+msgid ""
+"``ASCII`` if the ``LC_CTYPE`` locale is ``\"C\"``, ``nl_langinfo(CODESET)`` "
+"returns the ``ASCII`` encoding (or an alias), and :c:func:`mbstowcs` and :c:"
+"func:`wcstombs` functions uses the ``ISO-8859-1`` encoding."
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:113
+msgid "the current locale encoding."
+msgstr ""
+
+#: ../Doc/c-api/sys.rst:115
msgid ""
"Return a pointer to a newly allocated byte string, use :c:func:`PyMem_Free` "
"to free the memory. Return ``NULL`` on encoding error or memory allocation "
"error"
msgstr ""
-#: ../Doc/c-api/sys.rst:101
+#: ../Doc/c-api/sys.rst:119
msgid ""
"If error_pos is not ``NULL``, ``*error_pos`` is set to the index of the "
"invalid character on encoding error, or set to ``(size_t)-1`` otherwise."
msgstr ""
-#: ../Doc/c-api/sys.rst:104
+#: ../Doc/c-api/sys.rst:122
msgid ""
"Use the :c:func:`Py_DecodeLocale` function to decode the bytes string back "
"to a wide character string."
msgstr ""
-#: ../Doc/c-api/sys.rst:109
+#: ../Doc/c-api/sys.rst:127
msgid ""
"The :c:func:`PyUnicode_EncodeFSDefault` and :c:func:`PyUnicode_EncodeLocale` "
"functions."
msgstr ""
-#: ../Doc/c-api/sys.rst:118
+#: ../Doc/c-api/sys.rst:136
msgid "System Functions"
msgstr ""
-#: ../Doc/c-api/sys.rst:120
+#: ../Doc/c-api/sys.rst:138
msgid ""
"These are utility functions that make functionality from the :mod:`sys` "
"module accessible to C code. They all work with the current interpreter "
@@ -158,45 +188,45 @@ msgid ""
"state structure."
msgstr ""
-#: ../Doc/c-api/sys.rst:126
+#: ../Doc/c-api/sys.rst:144
msgid ""
"Return the object *name* from the :mod:`sys` module or *NULL* if it does not "
"exist, without setting an exception."
msgstr ""
-#: ../Doc/c-api/sys.rst:131
+#: ../Doc/c-api/sys.rst:149
msgid ""
"Set *name* in the :mod:`sys` module to *v* unless *v* is *NULL*, in which "
"case *name* is deleted from the sys module. Returns ``0`` on success, ``-1`` "
"on error."
msgstr ""
-#: ../Doc/c-api/sys.rst:137
+#: ../Doc/c-api/sys.rst:155
msgid "Reset :data:`sys.warnoptions` to an empty list."
msgstr ""
-#: ../Doc/c-api/sys.rst:141
+#: ../Doc/c-api/sys.rst:159
msgid "Append *s* to :data:`sys.warnoptions`."
msgstr ""
-#: ../Doc/c-api/sys.rst:145
+#: ../Doc/c-api/sys.rst:163
msgid "Append *unicode* to :data:`sys.warnoptions`."
msgstr ""
-#: ../Doc/c-api/sys.rst:149
+#: ../Doc/c-api/sys.rst:167
msgid ""
"Set :data:`sys.path` to a list object of paths found in *path* which should "
"be a list of paths separated with the platform's search path delimiter (``:"
"`` on Unix, ``;`` on Windows)."
msgstr ""
-#: ../Doc/c-api/sys.rst:155
+#: ../Doc/c-api/sys.rst:173
msgid ""
"Write the output string described by *format* to :data:`sys.stdout`. No "
"exceptions are raised, even if truncation occurs (see below)."
msgstr ""
-#: ../Doc/c-api/sys.rst:158
+#: ../Doc/c-api/sys.rst:176
msgid ""
"*format* should limit the total size of the formatted output string to 1000 "
"bytes or less -- after 1000 bytes, the output string is truncated. In "
@@ -207,48 +237,48 @@ msgid ""
"of digits for very large numbers."
msgstr ""
-#: ../Doc/c-api/sys.rst:166
+#: ../Doc/c-api/sys.rst:184
msgid ""
"If a problem occurs, or :data:`sys.stdout` is unset, the formatted message "
"is written to the real (C level) *stdout*."
msgstr ""
-#: ../Doc/c-api/sys.rst:171
+#: ../Doc/c-api/sys.rst:189
msgid ""
"As :c:func:`PySys_WriteStdout`, but write to :data:`sys.stderr` or *stderr* "
"instead."
msgstr ""
-#: ../Doc/c-api/sys.rst:176
+#: ../Doc/c-api/sys.rst:194
msgid ""
"Function similar to PySys_WriteStdout() but format the message using :c:func:"
"`PyUnicode_FromFormatV` and don't truncate the message to an arbitrary "
"length."
msgstr ""
-#: ../Doc/c-api/sys.rst:184
+#: ../Doc/c-api/sys.rst:202
msgid ""
"As :c:func:`PySys_FormatStdout`, but write to :data:`sys.stderr` or *stderr* "
"instead."
msgstr ""
-#: ../Doc/c-api/sys.rst:191
+#: ../Doc/c-api/sys.rst:209
msgid ""
"Parse *s* as a set of :option:`-X` options and add them to the current "
"options mapping as returned by :c:func:`PySys_GetXOptions`."
msgstr ""
-#: ../Doc/c-api/sys.rst:198
+#: ../Doc/c-api/sys.rst:216
msgid ""
"Return the current dictionary of :option:`-X` options, similarly to :data:"
"`sys._xoptions`. On error, *NULL* is returned and an exception is set."
msgstr ""
-#: ../Doc/c-api/sys.rst:208
+#: ../Doc/c-api/sys.rst:226
msgid "Process Control"
msgstr ""
-#: ../Doc/c-api/sys.rst:215
+#: ../Doc/c-api/sys.rst:233
msgid ""
"Print a fatal error message and kill the process. No cleanup is performed. "
"This function should only be invoked when a condition is detected that would "
@@ -258,18 +288,18 @@ msgid ""
"file:`core` file."
msgstr ""
-#: ../Doc/c-api/sys.rst:229
+#: ../Doc/c-api/sys.rst:247
msgid ""
"Exit the current process. This calls :c:func:`Py_FinalizeEx` and then calls "
"the standard C library function ``exit(status)``. If :c:func:"
"`Py_FinalizeEx` indicates an error, the exit status is set to 120."
msgstr ""
-#: ../Doc/c-api/sys.rst:233
+#: ../Doc/c-api/sys.rst:251
msgid "Errors from finalization no longer ignored."
msgstr ""
-#: ../Doc/c-api/sys.rst:243
+#: ../Doc/c-api/sys.rst:261
msgid ""
"Register a cleanup function to be called by :c:func:`Py_FinalizeEx`. The "
"cleanup function will be called with no arguments and should return no "
diff --git a/c-api/tuple.po b/c-api/tuple.po
index 649d12327..b93aa6103 100644
--- a/c-api/tuple.po
+++ b/c-api/tuple.po
@@ -153,7 +153,7 @@ msgstr ""
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "Field"
-msgstr ""
+msgstr "Champ"
#: ../Doc/c-api/tuple.rst:145 ../Doc/c-api/tuple.rst:168
msgid "C Type"
diff --git a/c-api/type.po b/c-api/type.po
index b91103e01..ec103f199 100644
--- a/c-api/type.po
+++ b/c-api/type.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-02-15 00:33+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/type.rst:6
msgid "Type Objects"
-msgstr ""
+msgstr "Objets type"
#: ../Doc/c-api/type.rst:13
msgid "The C structure of the objects used to describe built-in types."
diff --git a/c-api/typeobj.po b/c-api/typeobj.po
index 189792e63..b17188191 100644
--- a/c-api/typeobj.po
+++ b/c-api/typeobj.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-09-21 09:15+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/typeobj.rst:6
msgid "Type Objects"
-msgstr ""
+msgstr "Objets type"
#: ../Doc/c-api/typeobj.rst:8
msgid ""
@@ -761,7 +761,7 @@ msgstr ""
#: ../Doc/c-api/typeobj.rst:611
msgid "Constant"
-msgstr ""
+msgstr "Constante"
#: ../Doc/c-api/typeobj.rst:611
msgid "Comparison"
@@ -1361,7 +1361,7 @@ msgid ""
"similar name documented in the :ref:`number` section."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1078 ../Doc/c-api/typeobj.rst:1351
+#: ../Doc/c-api/typeobj.rst:1078 ../Doc/c-api/typeobj.rst:1365
msgid "Here is the structure definition::"
msgstr ""
@@ -1393,66 +1393,71 @@ msgstr ""
#: ../Doc/c-api/typeobj.rst:1154
msgid ""
-"This function is used by :c:func:`PyMapping_Length` and :c:func:"
+"This function is used by :c:func:`PyMapping_Size` and :c:func:"
"`PyObject_Size`, and has the same signature. This slot may be set to *NULL* "
"if the object has no defined length."
msgstr ""
#: ../Doc/c-api/typeobj.rst:1160
msgid ""
-"This function is used by :c:func:`PyObject_GetItem` and has the same "
-"signature. This slot must be filled for the :c:func:`PyMapping_Check` "
-"function to return ``1``, it can be *NULL* otherwise."
+"This function is used by :c:func:`PyObject_GetItem` and :c:func:"
+"`PySequence_GetSlice`, and has the same signature as :c:func:`!"
+"PyObject_GetItem`. This slot must be filled for the :c:func:"
+"`PyMapping_Check` function to return ``1``, it can be *NULL* otherwise."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1166
+#: ../Doc/c-api/typeobj.rst:1168
msgid ""
-"This function is used by :c:func:`PyObject_SetItem` and :c:func:"
-"`PyObject_DelItem`. It has the same signature as :c:func:"
-"`PyObject_SetItem`, but *v* can also be set to *NULL* to delete an item. If "
+"This function is used by :c:func:`PyObject_SetItem`, :c:func:"
+"`PyObject_DelItem`, :c:func:`PyObject_SetSlice` and :c:func:"
+"`PyObject_DelSlice`. It has the same signature as :c:func:`!"
+"PyObject_SetItem`, but *v* can also be set to *NULL* to delete an item. If "
"this slot is *NULL*, the object does not support item assignment and "
"deletion."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1176
+#: ../Doc/c-api/typeobj.rst:1179
msgid "Sequence Object Structures"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1183
+#: ../Doc/c-api/typeobj.rst:1186
msgid ""
"This structure holds pointers to the functions which an object uses to "
"implement the sequence protocol."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1188
+#: ../Doc/c-api/typeobj.rst:1191
msgid ""
"This function is used by :c:func:`PySequence_Size` and :c:func:"
-"`PyObject_Size`, and has the same signature."
+"`PyObject_Size`, and has the same signature. It is also used for handling "
+"negative indices via the :c:member:`~PySequenceMethods.sq_item` and the :c:"
+"member:`~PySequenceMethods.sq_ass_item` slots."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1193
+#: ../Doc/c-api/typeobj.rst:1198
msgid ""
"This function is used by :c:func:`PySequence_Concat` and has the same "
"signature. It is also used by the ``+`` operator, after trying the numeric "
-"addition via the :c:member:`~PyTypeObject.tp_as_number.nb_add` slot."
+"addition via the :c:member:`~PyNumberMethods.nb_add` slot."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1199
+#: ../Doc/c-api/typeobj.rst:1204
msgid ""
"This function is used by :c:func:`PySequence_Repeat` and has the same "
"signature. It is also used by the ``*`` operator, after trying numeric "
-"multiplication via the :c:member:`~PyTypeObject.tp_as_number.nb_multiply` "
-"slot."
+"multiplication via the :c:member:`~PyNumberMethods.nb_multiply` slot."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1206
+#: ../Doc/c-api/typeobj.rst:1210
msgid ""
"This function is used by :c:func:`PySequence_GetItem` and has the same "
-"signature. This slot must be filled for the :c:func:`PySequence_Check` "
-"function to return ``1``, it can be *NULL* otherwise."
+"signature. It is also used by :c:func:`PyObject_GetItem`, after trying the "
+"subscription via the :c:member:`~PyMappingMethods.mp_subscript` slot. This "
+"slot must be filled for the :c:func:`PySequence_Check` function to return "
+"``1``, it can be *NULL* otherwise."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1210
+#: ../Doc/c-api/typeobj.rst:1216
msgid ""
"Negative indexes are handled as follows: if the :attr:`sq_length` slot is "
"filled, it is called and the sequence length is used to compute a positive "
@@ -1460,98 +1465,108 @@ msgid ""
"the index is passed as is to the function."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1217
+#: ../Doc/c-api/typeobj.rst:1223
msgid ""
"This function is used by :c:func:`PySequence_SetItem` and has the same "
-"signature. This slot may be left to *NULL* if the object does not support "
-"item assignment and deletion."
+"signature. It is also used by :c:func:`PyObject_SetItem` and :c:func:"
+"`PyObject_DelItem`, after trying the item assignment and deletion via the :c:"
+"member:`~PyMappingMethods.mp_ass_subscript` slot. This slot may be left to "
+"*NULL* if the object does not support item assignment and deletion."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1223
+#: ../Doc/c-api/typeobj.rst:1232
msgid ""
"This function may be used by :c:func:`PySequence_Contains` and has the same "
-"signature. This slot may be left to *NULL*, in this case :c:func:"
-"`PySequence_Contains` simply traverses the sequence until it finds a match."
+"signature. This slot may be left to *NULL*, in this case :c:func:`!"
+"PySequence_Contains` simply traverses the sequence until it finds a match."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1230
+#: ../Doc/c-api/typeobj.rst:1239
msgid ""
"This function is used by :c:func:`PySequence_InPlaceConcat` and has the same "
-"signature. It should modify its first operand, and return it."
+"signature. It should modify its first operand, and return it. This slot "
+"may be left to *NULL*, in this case :c:func:`!PySequence_InPlaceConcat` will "
+"fall back to :c:func:`PySequence_Concat`. It is also used by the augmented "
+"assignment ``+=``, after trying numeric inplace addition via the :c:member:"
+"`~PyNumberMethods.nb_inplace_add` slot."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1235
+#: ../Doc/c-api/typeobj.rst:1248
msgid ""
"This function is used by :c:func:`PySequence_InPlaceRepeat` and has the same "
-"signature. It should modify its first operand, and return it."
+"signature. It should modify its first operand, and return it. This slot "
+"may be left to *NULL*, in this case :c:func:`!PySequence_InPlaceRepeat` will "
+"fall back to :c:func:`PySequence_Repeat`. It is also used by the augmented "
+"assignment ``*=``, after trying numeric inplace multiplication via the :c:"
+"member:`~PyNumberMethods.nb_inplace_multiply` slot."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1245
+#: ../Doc/c-api/typeobj.rst:1259
msgid "Buffer Object Structures"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1253
+#: ../Doc/c-api/typeobj.rst:1267
msgid ""
"This structure holds pointers to the functions required by the :ref:`Buffer "
"protocol `. The protocol defines how an exporter object can "
"expose its internal data to consumer objects."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1259 ../Doc/c-api/typeobj.rst:1308
-#: ../Doc/c-api/typeobj.rst:1361 ../Doc/c-api/typeobj.rst:1372
-#: ../Doc/c-api/typeobj.rst:1383
+#: ../Doc/c-api/typeobj.rst:1273 ../Doc/c-api/typeobj.rst:1322
+#: ../Doc/c-api/typeobj.rst:1375 ../Doc/c-api/typeobj.rst:1386
+#: ../Doc/c-api/typeobj.rst:1397
msgid "The signature of this function is::"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1263
+#: ../Doc/c-api/typeobj.rst:1277
msgid ""
"Handle a request to *exporter* to fill in *view* as specified by *flags*. "
"Except for point (3), an implementation of this function MUST take these "
"steps:"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1267
+#: ../Doc/c-api/typeobj.rst:1281
msgid ""
"Check if the request can be met. If not, raise :c:data:`PyExc_BufferError`, "
"set :c:data:`view->obj` to *NULL* and return ``-1``."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1270
+#: ../Doc/c-api/typeobj.rst:1284
msgid "Fill in the requested fields."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1272
+#: ../Doc/c-api/typeobj.rst:1286
msgid "Increment an internal counter for the number of exports."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1274
+#: ../Doc/c-api/typeobj.rst:1288
msgid ""
"Set :c:data:`view->obj` to *exporter* and increment :c:data:`view->obj`."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1276
+#: ../Doc/c-api/typeobj.rst:1290
msgid "Return ``0``."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1278
+#: ../Doc/c-api/typeobj.rst:1292
msgid ""
"If *exporter* is part of a chain or tree of buffer providers, two main "
"schemes can be used:"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1281
+#: ../Doc/c-api/typeobj.rst:1295
msgid ""
"Re-export: Each member of the tree acts as the exporting object and sets :c:"
"data:`view->obj` to a new reference to itself."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1284
+#: ../Doc/c-api/typeobj.rst:1298
msgid ""
"Redirect: The buffer request is redirected to the root object of the tree. "
"Here, :c:data:`view->obj` will be a new reference to the root object."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1288
+#: ../Doc/c-api/typeobj.rst:1302
msgid ""
"The individual fields of *view* are described in section :ref:`Buffer "
"structure `, the rules how an exporter must react to "
@@ -1559,7 +1574,7 @@ msgid ""
"types>`."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1293
+#: ../Doc/c-api/typeobj.rst:1307
msgid ""
"All memory pointed to in the :c:type:`Py_buffer` structure belongs to the "
"exporter and must remain valid until there are no consumers left. :c:member:"
@@ -1568,19 +1583,19 @@ msgid ""
"internal` are read-only for the consumer."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1300
+#: ../Doc/c-api/typeobj.rst:1314
msgid ""
":c:func:`PyBuffer_FillInfo` provides an easy way of exposing a simple bytes "
"buffer while dealing correctly with all request types."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1303
+#: ../Doc/c-api/typeobj.rst:1317
msgid ""
":c:func:`PyObject_GetBuffer` is the interface for the consumer that wraps "
"this function."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1312
+#: ../Doc/c-api/typeobj.rst:1326
msgid ""
"Handle a request to release the resources of the buffer. If no resources "
"need to be released, :c:member:`PyBufferProcs.bf_releasebuffer` may be "
@@ -1588,15 +1603,15 @@ msgid ""
"these optional steps:"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1317
+#: ../Doc/c-api/typeobj.rst:1331
msgid "Decrement an internal counter for the number of exports."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1319
+#: ../Doc/c-api/typeobj.rst:1333
msgid "If the counter is ``0``, free all memory associated with *view*."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1321
+#: ../Doc/c-api/typeobj.rst:1335
msgid ""
"The exporter MUST use the :c:member:`~Py_buffer.internal` field to keep "
"track of buffer-specific resources. This field is guaranteed to remain "
@@ -1604,52 +1619,52 @@ msgid ""
"*view* argument."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1327
+#: ../Doc/c-api/typeobj.rst:1341
msgid ""
"This function MUST NOT decrement :c:data:`view->obj`, since that is done "
"automatically in :c:func:`PyBuffer_Release` (this scheme is useful for "
"breaking reference cycles)."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1332
+#: ../Doc/c-api/typeobj.rst:1346
msgid ""
":c:func:`PyBuffer_Release` is the interface for the consumer that wraps this "
"function."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1340
+#: ../Doc/c-api/typeobj.rst:1354
msgid "Async Object Structures"
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1348
+#: ../Doc/c-api/typeobj.rst:1362
msgid ""
"This structure holds pointers to the functions required to implement :term:"
"`awaitable` and :term:`asynchronous iterator` objects."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1365
+#: ../Doc/c-api/typeobj.rst:1379
msgid ""
"The returned object must be an iterator, i.e. :c:func:`PyIter_Check` must "
"return ``1`` for it."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1368
+#: ../Doc/c-api/typeobj.rst:1382
msgid ""
"This slot may be set to *NULL* if an object is not an :term:`awaitable`."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1376
+#: ../Doc/c-api/typeobj.rst:1390
msgid ""
"Must return an :term:`awaitable` object. See :meth:`__anext__` for details."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1378
+#: ../Doc/c-api/typeobj.rst:1392
msgid ""
"This slot may be set to *NULL* if an object does not implement asynchronous "
"iteration protocol."
msgstr ""
-#: ../Doc/c-api/typeobj.rst:1387
+#: ../Doc/c-api/typeobj.rst:1401
msgid ""
"Must return an :term:`awaitable` object. See :meth:`__anext__` for details. "
"This slot may be set to *NULL*."
diff --git a/c-api/unicode.po b/c-api/unicode.po
index c4ca24197..6825afe0b 100644
--- a/c-api/unicode.po
+++ b/c-api/unicode.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-03-23 09:03+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -210,12 +210,6 @@ msgid ""
"Unicode object (not checked)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:213 ../Doc/c-api/unicode.rst:223
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Unicode API, please migrate to using PyUnicode_GET_LENGTH()."
-msgstr ""
-
#: ../Doc/c-api/unicode.rst:213 ../Doc/c-api/unicode.rst:223
msgid ""
"Part of the old-style Unicode API, please migrate to using :c:func:"
@@ -247,13 +241,6 @@ msgid ""
"`PyUnicode_WRITE` or :c:func:`PyUnicode_READ`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:245
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Unicode API, please migrate to using the PyUnicode_nBYTE_DATA() "
-"family of macros."
-msgstr ""
-
#: ../Doc/c-api/unicode.rst:245
msgid ""
"Part of the old-style Unicode API, please migrate to using the :c:func:"
@@ -453,7 +440,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:447
msgid "Format Characters"
-msgstr ""
+msgstr "Caractères de format"
#: ../Doc/c-api/unicode.rst:447
msgid "Type"
@@ -502,7 +489,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:457
msgid "unsigned int"
-msgstr "unsigned int"
+msgstr "``unsigned int``"
#: ../Doc/c-api/unicode.rst:457
msgid "Exactly equivalent to ``printf(\"%u\")``."
@@ -534,7 +521,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:466
msgid "unsigned long"
-msgstr "unsigned long"
+msgstr "``unsigned long``"
#: ../Doc/c-api/unicode.rst:466
msgid "Exactly equivalent to ``printf(\"%lu\")``."
@@ -566,7 +553,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:475
msgid "unsigned long long"
-msgstr "unsigned long long"
+msgstr "``unsigned long long``"
#: ../Doc/c-api/unicode.rst:475
msgid "Exactly equivalent to ``printf(\"%llu\")``."
@@ -666,7 +653,7 @@ msgstr ""
#: ../Doc/c-api/unicode.rst:507
msgid "A unicode object."
-msgstr "Un objet unicode."
+msgstr "Un objet Unicode."
#: ../Doc/c-api/unicode.rst:509
msgid ":attr:`%V`"
@@ -834,10 +821,6 @@ msgstr ""
msgid "Deprecated Py_UNICODE APIs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:661
-msgid "Deprecated since version 3.3, will be removed in version 4.0."
-msgstr ""
-
#: ../Doc/c-api/unicode.rst:662
msgid ""
"These API functions are deprecated with the implementation of :pep:`393`. "
@@ -969,17 +952,25 @@ msgid ""
"startup)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:772 ../Doc/c-api/unicode.rst:860
+#: ../Doc/c-api/unicode.rst:772 ../Doc/c-api/unicode.rst:872
msgid "The :c:func:`Py_DecodeLocale` function."
msgstr ""
-#: ../Doc/c-api/unicode.rst:779
+#: ../Doc/c-api/unicode.rst:776
+msgid ""
+"The function now also uses the current locale encoding for the "
+"``surrogateescape`` error handler. Previously, :c:func:`Py_DecodeLocale` was "
+"used for the ``surrogateescape``, and the current locale encoding was used "
+"for ``strict``."
+msgstr ""
+
+#: ../Doc/c-api/unicode.rst:785
msgid ""
"Similar to :c:func:`PyUnicode_DecodeLocaleAndSize`, but compute the string "
"length using :c:func:`strlen`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:787
+#: ../Doc/c-api/unicode.rst:793
msgid ""
"Encode a Unicode object to the current locale encoding. The supported error "
"handlers are ``\"strict\"`` and ``\"surrogateescape\"`` (:pep:`383`). The "
@@ -987,21 +978,29 @@ msgid ""
"class:`bytes` object. *unicode* cannot contain embedded null characters."
msgstr ""
-#: ../Doc/c-api/unicode.rst:793
+#: ../Doc/c-api/unicode.rst:799
msgid ""
"Use :c:func:`PyUnicode_EncodeFSDefault` to encode a string to :c:data:"
"`Py_FileSystemDefaultEncoding` (the locale encoding read at Python startup)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:799 ../Doc/c-api/unicode.rst:896
+#: ../Doc/c-api/unicode.rst:805 ../Doc/c-api/unicode.rst:908
msgid "The :c:func:`Py_EncodeLocale` function."
msgstr ""
-#: ../Doc/c-api/unicode.rst:805
+#: ../Doc/c-api/unicode.rst:809
+msgid ""
+"The function now also uses the current locale encoding for the "
+"``surrogateescape`` error handler. Previously, :c:func:`Py_EncodeLocale` was "
+"used for the ``surrogateescape``, and the current locale encoding was used "
+"for ``strict``."
+msgstr ""
+
+#: ../Doc/c-api/unicode.rst:817
msgid "File System Encoding"
msgstr ""
-#: ../Doc/c-api/unicode.rst:807
+#: ../Doc/c-api/unicode.rst:819
msgid ""
"To encode and decode file names and other environment strings, :c:data:"
"`Py_FileSystemDefaultEncoding` should be used as the encoding, and :c:data:"
@@ -1011,7 +1010,7 @@ msgid ""
"`PyUnicode_FSConverter` as the conversion function:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:816
+#: ../Doc/c-api/unicode.rst:828
msgid ""
"ParseTuple converter: encode :class:`str` objects -- obtained directly or "
"through the :class:`os.PathLike` interface -- to :class:`bytes` using :c:"
@@ -1020,18 +1019,18 @@ msgid ""
"is no longer used."
msgstr ""
-#: ../Doc/c-api/unicode.rst:824 ../Doc/c-api/unicode.rst:841
+#: ../Doc/c-api/unicode.rst:836 ../Doc/c-api/unicode.rst:853
msgid "Accepts a :term:`path-like object`."
msgstr "Accepte un :term:`path-like object`."
-#: ../Doc/c-api/unicode.rst:827
+#: ../Doc/c-api/unicode.rst:839
msgid ""
"To decode file names to :class:`str` during argument parsing, the ``\"O&\"`` "
"converter should be used, passing :c:func:`PyUnicode_FSDecoder` as the "
"conversion function:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:833
+#: ../Doc/c-api/unicode.rst:845
msgid ""
"ParseTuple converter: decode :class:`bytes` objects -- obtained either "
"directly or indirectly through the :class:`os.PathLike` interface -- to :"
@@ -1040,20 +1039,20 @@ msgid ""
"which must be released when it is no longer used."
msgstr ""
-#: ../Doc/c-api/unicode.rst:847
+#: ../Doc/c-api/unicode.rst:859
msgid ""
"Decode a string using :c:data:`Py_FileSystemDefaultEncoding` and the :c:data:"
"`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: ../Doc/c-api/unicode.rst:850 ../Doc/c-api/unicode.rst:871
-#: ../Doc/c-api/unicode.rst:887
+#: ../Doc/c-api/unicode.rst:862 ../Doc/c-api/unicode.rst:883
+#: ../Doc/c-api/unicode.rst:899
msgid ""
"If :c:data:`Py_FileSystemDefaultEncoding` is not set, fall back to the "
"locale encoding."
msgstr ""
-#: ../Doc/c-api/unicode.rst:853
+#: ../Doc/c-api/unicode.rst:865
msgid ""
":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the "
"locale encoding and cannot be modified later. If you need to decode a string "
@@ -1061,23 +1060,23 @@ msgid ""
"`PyUnicode_DecodeLocaleAndSize`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:862 ../Doc/c-api/unicode.rst:876
-#: ../Doc/c-api/unicode.rst:900
+#: ../Doc/c-api/unicode.rst:874 ../Doc/c-api/unicode.rst:888
+#: ../Doc/c-api/unicode.rst:912
msgid "Use :c:data:`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: ../Doc/c-api/unicode.rst:868
+#: ../Doc/c-api/unicode.rst:880
msgid ""
"Decode a null-terminated string using :c:data:`Py_FileSystemDefaultEncoding` "
"and the :c:data:`Py_FileSystemDefaultEncodeErrors` error handler."
msgstr ""
-#: ../Doc/c-api/unicode.rst:874
+#: ../Doc/c-api/unicode.rst:886
msgid ""
"Use :c:func:`PyUnicode_DecodeFSDefaultAndSize` if you know the string length."
msgstr ""
-#: ../Doc/c-api/unicode.rst:882
+#: ../Doc/c-api/unicode.rst:894
msgid ""
"Encode a Unicode object to :c:data:`Py_FileSystemDefaultEncoding` with the :"
"c:data:`Py_FileSystemDefaultEncodeErrors` error handler, and return :class:"
@@ -1085,29 +1084,29 @@ msgid ""
"bytes."
msgstr ""
-#: ../Doc/c-api/unicode.rst:890
+#: ../Doc/c-api/unicode.rst:902
msgid ""
":c:data:`Py_FileSystemDefaultEncoding` is initialized at startup from the "
"locale encoding and cannot be modified later. If you need to encode a string "
"to the current locale encoding, use :c:func:`PyUnicode_EncodeLocale`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:904
+#: ../Doc/c-api/unicode.rst:916
msgid "wchar_t Support"
msgstr ""
-#: ../Doc/c-api/unicode.rst:906
+#: ../Doc/c-api/unicode.rst:918
msgid ":c:type:`wchar_t` support for platforms which support it:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:910
+#: ../Doc/c-api/unicode.rst:922
msgid ""
"Create a Unicode object from the :c:type:`wchar_t` buffer *w* of the given "
"*size*. Passing ``-1`` as the *size* indicates that the function must itself "
"compute the length, using wcslen. Return *NULL* on failure."
msgstr ""
-#: ../Doc/c-api/unicode.rst:918
+#: ../Doc/c-api/unicode.rst:930
msgid ""
"Copy the Unicode object contents into the :c:type:`wchar_t` buffer *w*. At "
"most *size* :c:type:`wchar_t` characters are copied (excluding a possibly "
@@ -1120,7 +1119,7 @@ msgid ""
"would cause the string to be truncated when used with most C functions."
msgstr ""
-#: ../Doc/c-api/unicode.rst:931
+#: ../Doc/c-api/unicode.rst:943
msgid ""
"Convert the Unicode object to a wide character string. The output string "
"always ends with a null character. If *size* is not *NULL*, write the number "
@@ -1128,7 +1127,7 @@ msgid ""
"\\*size*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:936
+#: ../Doc/c-api/unicode.rst:948
msgid ""
"Returns a buffer allocated by :c:func:`PyMem_Alloc` (use :c:func:"
"`PyMem_Free` to free it) on success. On error, returns *NULL*, *\\*size* is "
@@ -1137,24 +1136,24 @@ msgid ""
"to be truncated when used with most C functions."
msgstr ""
-#: ../Doc/c-api/unicode.rst:948
+#: ../Doc/c-api/unicode.rst:960
msgid "Built-in Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:950
+#: ../Doc/c-api/unicode.rst:962
msgid ""
"Python provides a set of built-in codecs which are written in C for speed. "
"All of these codecs are directly usable via the following functions."
msgstr ""
-#: ../Doc/c-api/unicode.rst:953
+#: ../Doc/c-api/unicode.rst:965
msgid ""
"Many of the following APIs take two arguments encoding and errors, and they "
"have the same semantics as the ones of the built-in :func:`str` string "
"object constructor."
msgstr ""
-#: ../Doc/c-api/unicode.rst:957
+#: ../Doc/c-api/unicode.rst:969
msgid ""
"Setting encoding to *NULL* causes the default encoding to be used which is "
"ASCII. The file system calls should use :c:func:`PyUnicode_FSConverter` for "
@@ -1165,28 +1164,28 @@ msgid ""
"setlocale)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:965
+#: ../Doc/c-api/unicode.rst:977
msgid ""
"Error handling is set by errors which may also be set to *NULL* meaning to "
"use the default handling defined for the codec. Default error handling for "
"all built-in codecs is \"strict\" (:exc:`ValueError` is raised)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:969
+#: ../Doc/c-api/unicode.rst:981
msgid ""
"The codecs all use a similar interface. Only deviation from the following "
"generic ones are documented for simplicity."
msgstr ""
-#: ../Doc/c-api/unicode.rst:974
+#: ../Doc/c-api/unicode.rst:986
msgid "Generic Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:976
+#: ../Doc/c-api/unicode.rst:988
msgid "These are the generic codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:982
+#: ../Doc/c-api/unicode.rst:994
msgid ""
"Create a Unicode object by decoding *size* bytes of the encoded string *s*. "
"*encoding* and *errors* have the same meaning as the parameters of the same "
@@ -1195,7 +1194,7 @@ msgid ""
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:992
+#: ../Doc/c-api/unicode.rst:1004
msgid ""
"Encode a Unicode object and return the result as Python bytes object. "
"*encoding* and *errors* have the same meaning as the parameters of the same "
@@ -1204,7 +1203,7 @@ msgid ""
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1002
+#: ../Doc/c-api/unicode.rst:1014
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* and return a "
"Python bytes object. *encoding* and *errors* have the same meaning as the "
@@ -1213,34 +1212,27 @@ msgid ""
"*NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1010 ../Doc/c-api/unicode.rst:1261
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using "
-"PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1010 ../Doc/c-api/unicode.rst:1261
+#: ../Doc/c-api/unicode.rst:1022 ../Doc/c-api/unicode.rst:1273
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1014
+#: ../Doc/c-api/unicode.rst:1026
msgid "UTF-8 Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1016
+#: ../Doc/c-api/unicode.rst:1028
msgid "These are the UTF-8 codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1021
+#: ../Doc/c-api/unicode.rst:1033
msgid ""
"Create a Unicode object by decoding *size* bytes of the UTF-8 encoded string "
"*s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1028
+#: ../Doc/c-api/unicode.rst:1040
msgid ""
"If *consumed* is *NULL*, behave like :c:func:`PyUnicode_DecodeUTF8`. If "
"*consumed* is not *NULL*, trailing incomplete UTF-8 byte sequences will not "
@@ -1248,14 +1240,14 @@ msgid ""
"bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1036
+#: ../Doc/c-api/unicode.rst:1048
msgid ""
"Encode a Unicode object using UTF-8 and return the result as Python bytes "
"object. Error handling is \"strict\". Return *NULL* if an exception was "
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1043
+#: ../Doc/c-api/unicode.rst:1055
msgid ""
"Return a pointer to the UTF-8 encoding of the Unicode object, and store the "
"size of the encoded representation (in bytes) in *size*. The *size* "
@@ -1264,66 +1256,59 @@ msgid ""
"regardless of whether there are any other null code points."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1049
+#: ../Doc/c-api/unicode.rst:1061
msgid ""
"In the case of an error, *NULL* is returned with an exception set and no "
"*size* is stored."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1052
+#: ../Doc/c-api/unicode.rst:1064
msgid ""
"This caches the UTF-8 representation of the string in the Unicode object, "
"and subsequent calls will return a pointer to the same buffer. The caller "
"is not responsible for deallocating the buffer."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1061
+#: ../Doc/c-api/unicode.rst:1073
msgid "As :c:func:`PyUnicode_AsUTF8AndSize`, but does not store the size."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1068
+#: ../Doc/c-api/unicode.rst:1080
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer *s* of the given *size* using UTF-8 "
"and return a Python bytes object. Return *NULL* if an exception was raised "
"by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1075
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsUTF8String(), "
-"PyUnicode_AsUTF8AndSize() or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1075
+#: ../Doc/c-api/unicode.rst:1087
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF8String`, :c:func:`PyUnicode_AsUTF8AndSize` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1079
+#: ../Doc/c-api/unicode.rst:1091
msgid "UTF-32 Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1081
+#: ../Doc/c-api/unicode.rst:1093
msgid "These are the UTF-32 codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1087
+#: ../Doc/c-api/unicode.rst:1099
msgid ""
"Decode *size* bytes from a UTF-32 encoded buffer string and return the "
"corresponding Unicode object. *errors* (if non-*NULL*) defines the error "
"handling. It defaults to \"strict\"."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1091 ../Doc/c-api/unicode.rst:1164
+#: ../Doc/c-api/unicode.rst:1103 ../Doc/c-api/unicode.rst:1176
msgid ""
"If *byteorder* is non-*NULL*, the decoder starts decoding using the given "
"byte order::"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1098
+#: ../Doc/c-api/unicode.rst:1110
msgid ""
"If ``*byteorder`` is zero, and the first four bytes of the input data are a "
"byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1331,22 +1316,22 @@ msgid ""
"``-1`` or ``1``, any byte order mark is copied to the output."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1103 ../Doc/c-api/unicode.rst:1177
+#: ../Doc/c-api/unicode.rst:1115 ../Doc/c-api/unicode.rst:1189
msgid ""
"After completion, *\\*byteorder* is set to the current byte order at the end "
"of input data."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1106 ../Doc/c-api/unicode.rst:1180
+#: ../Doc/c-api/unicode.rst:1118 ../Doc/c-api/unicode.rst:1192
msgid "If *byteorder* is *NULL*, the codec starts in native order mode."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1108 ../Doc/c-api/unicode.rst:1144
-#: ../Doc/c-api/unicode.rst:1182 ../Doc/c-api/unicode.rst:1219
+#: ../Doc/c-api/unicode.rst:1120 ../Doc/c-api/unicode.rst:1156
+#: ../Doc/c-api/unicode.rst:1194 ../Doc/c-api/unicode.rst:1231
msgid "Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1114
+#: ../Doc/c-api/unicode.rst:1126
msgid ""
"If *consumed* is *NULL*, behave like :c:func:`PyUnicode_DecodeUTF32`. If "
"*consumed* is not *NULL*, :c:func:`PyUnicode_DecodeUTF32Stateful` will not "
@@ -1355,60 +1340,53 @@ msgid ""
"number of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1123
+#: ../Doc/c-api/unicode.rst:1135
msgid ""
"Return a Python byte string using the UTF-32 encoding in native byte order. "
"The string always starts with a BOM mark. Error handling is \"strict\". "
"Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1131
+#: ../Doc/c-api/unicode.rst:1143
msgid ""
"Return a Python bytes object holding the UTF-32 encoded value of the Unicode "
"data in *s*. Output is written according to the following byte order::"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1138 ../Doc/c-api/unicode.rst:1212
+#: ../Doc/c-api/unicode.rst:1150 ../Doc/c-api/unicode.rst:1224
msgid ""
"If byteorder is ``0``, the output string will always start with the Unicode "
"BOM mark (U+FEFF). In the other two modes, no BOM mark is prepended."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1141
+#: ../Doc/c-api/unicode.rst:1153
msgid ""
"If *Py_UNICODE_WIDE* is not defined, surrogate pairs will be output as a "
"single code point."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1148
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsUTF32String() "
-"or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1148
+#: ../Doc/c-api/unicode.rst:1160
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF32String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1152
+#: ../Doc/c-api/unicode.rst:1164
msgid "UTF-16 Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1154
+#: ../Doc/c-api/unicode.rst:1166
msgid "These are the UTF-16 codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1160
+#: ../Doc/c-api/unicode.rst:1172
msgid ""
"Decode *size* bytes from a UTF-16 encoded buffer string and return the "
"corresponding Unicode object. *errors* (if non-*NULL*) defines the error "
"handling. It defaults to \"strict\"."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1171
+#: ../Doc/c-api/unicode.rst:1183
msgid ""
"If ``*byteorder`` is zero, and the first two bytes of the input data are a "
"byte order mark (BOM), the decoder switches to this byte order and the BOM "
@@ -1417,7 +1395,7 @@ msgid ""
"result in either a ``\\ufeff`` or a ``\\ufffe`` character)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1188
+#: ../Doc/c-api/unicode.rst:1200
msgid ""
"If *consumed* is *NULL*, behave like :c:func:`PyUnicode_DecodeUTF16`. If "
"*consumed* is not *NULL*, :c:func:`PyUnicode_DecodeUTF16Stateful` will not "
@@ -1427,54 +1405,47 @@ msgid ""
"*consumed*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1197
+#: ../Doc/c-api/unicode.rst:1209
msgid ""
"Return a Python byte string using the UTF-16 encoding in native byte order. "
"The string always starts with a BOM mark. Error handling is \"strict\". "
"Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1205
+#: ../Doc/c-api/unicode.rst:1217
msgid ""
"Return a Python bytes object holding the UTF-16 encoded value of the Unicode "
"data in *s*. Output is written according to the following byte order::"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1215
+#: ../Doc/c-api/unicode.rst:1227
msgid ""
"If *Py_UNICODE_WIDE* is defined, a single :c:type:`Py_UNICODE` value may get "
"represented as a surrogate pair. If it is not defined, each :c:type:"
"`Py_UNICODE` values is interpreted as a UCS-2 character."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1223
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsUTF16String() "
-"or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1223
+#: ../Doc/c-api/unicode.rst:1235
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUTF16String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1227
+#: ../Doc/c-api/unicode.rst:1239
msgid "UTF-7 Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1229
+#: ../Doc/c-api/unicode.rst:1241
msgid "These are the UTF-7 codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1234
+#: ../Doc/c-api/unicode.rst:1246
msgid ""
"Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string "
"*s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1241
+#: ../Doc/c-api/unicode.rst:1253
msgid ""
"If *consumed* is *NULL*, behave like :c:func:`PyUnicode_DecodeUTF7`. If "
"*consumed* is not *NULL*, trailing incomplete UTF-7 base-64 sections will "
@@ -1482,14 +1453,14 @@ msgid ""
"of bytes that have been decoded will be stored in *consumed*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1250
+#: ../Doc/c-api/unicode.rst:1262
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given size using UTF-7 and "
"return a Python bytes object. Return *NULL* if an exception was raised by "
"the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1254
+#: ../Doc/c-api/unicode.rst:1266
msgid ""
"If *base64SetO* is nonzero, \"Set O\" (punctuation that has no otherwise "
"special meaning) will be encoded in base-64. If *base64WhiteSpace* is "
@@ -1497,180 +1468,152 @@ msgid ""
"the Python \"utf-7\" codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1265
+#: ../Doc/c-api/unicode.rst:1277
msgid "Unicode-Escape Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1267
+#: ../Doc/c-api/unicode.rst:1279
msgid "These are the \"Unicode Escape\" codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1273
+#: ../Doc/c-api/unicode.rst:1285
msgid ""
"Create a Unicode object by decoding *size* bytes of the Unicode-Escape "
"encoded string *s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1279
+#: ../Doc/c-api/unicode.rst:1291
msgid ""
"Encode a Unicode object using Unicode-Escape and return the result as a "
"bytes object. Error handling is \"strict\". Return *NULL* if an exception "
"was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1286
+#: ../Doc/c-api/unicode.rst:1298
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Unicode-"
"Escape and return a bytes object. Return *NULL* if an exception was raised "
"by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1291
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using "
-"PyUnicode_AsUnicodeEscapeString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1291
+#: ../Doc/c-api/unicode.rst:1303
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsUnicodeEscapeString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1295
+#: ../Doc/c-api/unicode.rst:1307
msgid "Raw-Unicode-Escape Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1297
+#: ../Doc/c-api/unicode.rst:1309
msgid "These are the \"Raw Unicode Escape\" codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1303
+#: ../Doc/c-api/unicode.rst:1315
msgid ""
"Create a Unicode object by decoding *size* bytes of the Raw-Unicode-Escape "
"encoded string *s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1309
+#: ../Doc/c-api/unicode.rst:1321
msgid ""
"Encode a Unicode object using Raw-Unicode-Escape and return the result as a "
"bytes object. Error handling is \"strict\". Return *NULL* if an exception "
"was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1317
+#: ../Doc/c-api/unicode.rst:1329
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Raw-Unicode-"
"Escape and return a bytes object. Return *NULL* if an exception was raised "
"by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1323
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using "
-"PyUnicode_AsRawUnicodeEscapeString() or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1323
+#: ../Doc/c-api/unicode.rst:1335
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsRawUnicodeEscapeString` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1327
+#: ../Doc/c-api/unicode.rst:1339
msgid "Latin-1 Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1329
+#: ../Doc/c-api/unicode.rst:1341
msgid ""
"These are the Latin-1 codec APIs: Latin-1 corresponds to the first 256 "
"Unicode ordinals and only these are accepted by the codecs during encoding."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1335
+#: ../Doc/c-api/unicode.rst:1347
msgid ""
"Create a Unicode object by decoding *size* bytes of the Latin-1 encoded "
"string *s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1341
+#: ../Doc/c-api/unicode.rst:1353
msgid ""
"Encode a Unicode object using Latin-1 and return the result as Python bytes "
"object. Error handling is \"strict\". Return *NULL* if an exception was "
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1348
+#: ../Doc/c-api/unicode.rst:1360
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using Latin-1 and "
"return a Python bytes object. Return *NULL* if an exception was raised by "
"the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1355
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsLatin1String() "
-"or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1355
+#: ../Doc/c-api/unicode.rst:1367
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsLatin1String` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1359
+#: ../Doc/c-api/unicode.rst:1371
msgid "ASCII Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1361
+#: ../Doc/c-api/unicode.rst:1373
msgid ""
"These are the ASCII codec APIs. Only 7-bit ASCII data is accepted. All "
"other codes generate errors."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1367
+#: ../Doc/c-api/unicode.rst:1379
msgid ""
"Create a Unicode object by decoding *size* bytes of the ASCII encoded string "
"*s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1373
+#: ../Doc/c-api/unicode.rst:1385
msgid ""
"Encode a Unicode object using ASCII and return the result as Python bytes "
"object. Error handling is \"strict\". Return *NULL* if an exception was "
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1380
+#: ../Doc/c-api/unicode.rst:1392
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using ASCII and "
"return a Python bytes object. Return *NULL* if an exception was raised by "
"the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1387
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsASCIIString() "
-"or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1387
+#: ../Doc/c-api/unicode.rst:1399
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsASCIIString` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1391
+#: ../Doc/c-api/unicode.rst:1403
msgid "Character Map Codecs"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1393
+#: ../Doc/c-api/unicode.rst:1405
msgid ""
"This codec is special in that it can be used to implement many different "
"codecs (and this is in fact what was done to obtain most of the standard "
@@ -1680,18 +1623,18 @@ msgid ""
"well."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1399
+#: ../Doc/c-api/unicode.rst:1411
msgid "These are the mapping codec APIs:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1404
+#: ../Doc/c-api/unicode.rst:1416
msgid ""
"Create a Unicode object by decoding *size* bytes of the encoded string *s* "
"using the given *mapping* object. Return *NULL* if an exception was raised "
"by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1408
+#: ../Doc/c-api/unicode.rst:1420
msgid ""
"If *mapping* is *NULL*, Latin-1 decoding will be applied. Else *mapping* "
"must map bytes ordinals (integers in the range from 0 to 255) to Unicode "
@@ -1701,14 +1644,14 @@ msgid ""
"treated as undefined mappings and cause an error."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1419
+#: ../Doc/c-api/unicode.rst:1431
msgid ""
"Encode a Unicode object using the given *mapping* object and return the "
"result as a bytes object. Error handling is \"strict\". Return *NULL* if "
"an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1423
+#: ../Doc/c-api/unicode.rst:1435
msgid ""
"The *mapping* object must map Unicode ordinal integers to bytes objects, "
"integers in the range from 0 to 255 or ``None``. Unmapped character "
@@ -1716,38 +1659,31 @@ msgid ""
"``None`` are treated as \"undefined mapping\" and cause an error."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1432
+#: ../Doc/c-api/unicode.rst:1444
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using the given "
"*mapping* object and return the result as a bytes object. Return *NULL* if "
"an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1439
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using "
-"PyUnicode_AsCharmapString() or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1439
+#: ../Doc/c-api/unicode.rst:1451
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsCharmapString` or :c:func:`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1442
+#: ../Doc/c-api/unicode.rst:1454
msgid "The following codec API is special in that maps Unicode to Unicode."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1447
+#: ../Doc/c-api/unicode.rst:1459
msgid ""
"Translate a Unicode object using the given *mapping* object and return the "
"resulting Unicode object. Return *NULL* if an exception was raised by the "
"codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1451
+#: ../Doc/c-api/unicode.rst:1463
msgid ""
"The *mapping* object must map Unicode ordinal integers to Unicode strings, "
"integers (which are then interpreted as Unicode ordinals) or ``None`` "
@@ -1755,32 +1691,25 @@ msgid ""
"which cause a :exc:`LookupError`) are left untouched and are copied as-is."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1460
+#: ../Doc/c-api/unicode.rst:1472
msgid ""
"Translate a :c:type:`Py_UNICODE` buffer of the given *size* by applying a "
"character *mapping* table to it and return the resulting Unicode object. "
"Return *NULL* when an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1467
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_Translate(). or "
-"generic codec based API"
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1467
+#: ../Doc/c-api/unicode.rst:1479
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_Translate`. or :ref:`generic codec based API `"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1471
+#: ../Doc/c-api/unicode.rst:1483
msgid "MBCS codecs for Windows"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1473
+#: ../Doc/c-api/unicode.rst:1485
msgid ""
"These are the MBCS codec APIs. They are currently only available on Windows "
"and use the Win32 MBCS converters to implement the conversions. Note that "
@@ -1788,13 +1717,13 @@ msgid ""
"is defined by the user settings on the machine running the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1480
+#: ../Doc/c-api/unicode.rst:1492
msgid ""
"Create a Unicode object by decoding *size* bytes of the MBCS encoded string "
"*s*. Return *NULL* if an exception was raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1487
+#: ../Doc/c-api/unicode.rst:1499
msgid ""
"If *consumed* is *NULL*, behave like :c:func:`PyUnicode_DecodeMBCS`. If "
"*consumed* is not *NULL*, :c:func:`PyUnicode_DecodeMBCSStateful` will not "
@@ -1802,65 +1731,58 @@ msgid ""
"will be stored in *consumed*."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1495
+#: ../Doc/c-api/unicode.rst:1507
msgid ""
"Encode a Unicode object using MBCS and return the result as Python bytes "
"object. Error handling is \"strict\". Return *NULL* if an exception was "
"raised by the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1502
+#: ../Doc/c-api/unicode.rst:1514
msgid ""
"Encode the Unicode object using the specified code page and return a Python "
"bytes object. Return *NULL* if an exception was raised by the codec. Use :c:"
"data:`CP_ACP` code page to get the MBCS encoder."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1511
+#: ../Doc/c-api/unicode.rst:1523
msgid ""
"Encode the :c:type:`Py_UNICODE` buffer of the given *size* using MBCS and "
"return a Python bytes object. Return *NULL* if an exception was raised by "
"the codec."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1518
-msgid ""
-"Deprecated since version 3.3, will be removed in version 4.0: Part of the "
-"old-style Py_UNICODE API; please migrate to using PyUnicode_AsMBCSString(), "
-"PyUnicode_EncodeCodePage() or PyUnicode_AsEncodedString()."
-msgstr ""
-
-#: ../Doc/c-api/unicode.rst:1518
+#: ../Doc/c-api/unicode.rst:1530
msgid ""
"Part of the old-style :c:type:`Py_UNICODE` API; please migrate to using :c:"
"func:`PyUnicode_AsMBCSString`, :c:func:`PyUnicode_EncodeCodePage` or :c:func:"
"`PyUnicode_AsEncodedString`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1522
+#: ../Doc/c-api/unicode.rst:1534
msgid "Methods & Slots"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1528
+#: ../Doc/c-api/unicode.rst:1540
msgid "Methods and Slot Functions"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1530
+#: ../Doc/c-api/unicode.rst:1542
msgid ""
"The following APIs are capable of handling Unicode objects and strings on "
"input (we refer to them as strings in the descriptions) and return Unicode "
"objects or integers as appropriate."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1534
+#: ../Doc/c-api/unicode.rst:1546
msgid "They all return *NULL* or ``-1`` if an exception occurs."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1539
+#: ../Doc/c-api/unicode.rst:1551
msgid "Concat two strings giving a new Unicode string."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1544
+#: ../Doc/c-api/unicode.rst:1556
msgid ""
"Split a string giving a list of Unicode strings. If *sep* is *NULL*, "
"splitting will be done at all whitespace substrings. Otherwise, splits "
@@ -1869,52 +1791,52 @@ msgid ""
"list."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1552
+#: ../Doc/c-api/unicode.rst:1564
msgid ""
"Split a Unicode string at line breaks, returning a list of Unicode strings. "
"CRLF is considered to be one line break. If *keepend* is ``0``, the Line "
"break characters are not included in the resulting strings."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1560
+#: ../Doc/c-api/unicode.rst:1572
msgid ""
"Translate a string by applying a character mapping table to it and return "
"the resulting Unicode object."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1563
+#: ../Doc/c-api/unicode.rst:1575
msgid ""
"The mapping table must map Unicode ordinal integers to Unicode ordinal "
"integers or ``None`` (causing deletion of the character)."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1566
+#: ../Doc/c-api/unicode.rst:1578
msgid ""
"Mapping tables need only provide the :meth:`__getitem__` interface; "
"dictionaries and sequences work well. Unmapped character ordinals (ones "
"which cause a :exc:`LookupError`) are left untouched and are copied as-is."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1570
+#: ../Doc/c-api/unicode.rst:1582
msgid ""
"*errors* has the usual meaning for codecs. It may be *NULL* which indicates "
"to use the default error handling."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1576
+#: ../Doc/c-api/unicode.rst:1588
msgid ""
"Join a sequence of strings using the given *separator* and return the "
"resulting Unicode string."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1583
+#: ../Doc/c-api/unicode.rst:1595
msgid ""
"Return ``1`` if *substr* matches ``str[start:end]`` at the given tail end "
"(*direction* == ``-1`` means to do a prefix match, *direction* == ``1`` a "
"suffix match), ``0`` otherwise. Return ``-1`` if an error occurred."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1591
+#: ../Doc/c-api/unicode.rst:1603
msgid ""
"Return the first position of *substr* in ``str[start:end]`` using the given "
"*direction* (*direction* == ``1`` means to do a forward search, *direction* "
@@ -1923,7 +1845,7 @@ msgid ""
"indicates that an error occurred and an exception has been set."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1601
+#: ../Doc/c-api/unicode.rst:1613
msgid ""
"Return the first position of the character *ch* in ``str[start:end]`` using "
"the given *direction* (*direction* == ``1`` means to do a forward search, "
@@ -1932,32 +1854,32 @@ msgid ""
"``-2`` indicates that an error occurred and an exception has been set."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1613
+#: ../Doc/c-api/unicode.rst:1625
msgid ""
"Return the number of non-overlapping occurrences of *substr* in ``str[start:"
"end]``. Return ``-1`` if an error occurred."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1620
+#: ../Doc/c-api/unicode.rst:1632
msgid ""
"Replace at most *maxcount* occurrences of *substr* in *str* with *replstr* "
"and return the resulting Unicode object. *maxcount* == ``-1`` means replace "
"all occurrences."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1627
+#: ../Doc/c-api/unicode.rst:1639
msgid ""
"Compare two strings and return ``-1``, ``0``, ``1`` for less than, equal, "
"and greater than, respectively."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1630
+#: ../Doc/c-api/unicode.rst:1642
msgid ""
"This function returns ``-1`` upon failure, so one should call :c:func:"
"`PyErr_Occurred` to check for errors."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1636
+#: ../Doc/c-api/unicode.rst:1648
msgid ""
"Compare a unicode object, *uni*, with *string* and return ``-1``, ``0``, "
"``1`` for less than, equal, and greater than, respectively. It is best to "
@@ -1965,51 +1887,51 @@ msgid ""
"string as ISO-8859-1 if it contains non-ASCII characters."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1641
+#: ../Doc/c-api/unicode.rst:1653
msgid "This function does not raise exceptions."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1646
+#: ../Doc/c-api/unicode.rst:1658
msgid "Rich compare two unicode strings and return one of the following:"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1648
+#: ../Doc/c-api/unicode.rst:1660
msgid "``NULL`` in case an exception was raised"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1649
+#: ../Doc/c-api/unicode.rst:1661
msgid ":const:`Py_True` or :const:`Py_False` for successful comparisons"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1650
+#: ../Doc/c-api/unicode.rst:1662
msgid ":const:`Py_NotImplemented` in case the type combination is unknown"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1652
+#: ../Doc/c-api/unicode.rst:1664
msgid ""
"Possible values for *op* are :const:`Py_GT`, :const:`Py_GE`, :const:"
"`Py_EQ`, :const:`Py_NE`, :const:`Py_LT`, and :const:`Py_LE`."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1658
+#: ../Doc/c-api/unicode.rst:1670
msgid ""
"Return a new string object from *format* and *args*; this is analogous to "
"``format % args``."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1664
+#: ../Doc/c-api/unicode.rst:1676
msgid ""
"Check whether *element* is contained in *container* and return true or false "
"accordingly."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1667
+#: ../Doc/c-api/unicode.rst:1679
msgid ""
"*element* has to coerce to a one element Unicode string. ``-1`` is returned "
"if there was an error."
msgstr ""
-#: ../Doc/c-api/unicode.rst:1673
+#: ../Doc/c-api/unicode.rst:1685
msgid ""
"Intern the argument *\\*string* in place. The argument must be the address "
"of a pointer variable pointing to a Python unicode string object. If there "
@@ -2022,7 +1944,7 @@ msgid ""
"the object after the call if and only if you owned it before the call.)"
msgstr ""
-#: ../Doc/c-api/unicode.rst:1686
+#: ../Doc/c-api/unicode.rst:1698
msgid ""
"A combination of :c:func:`PyUnicode_FromString` and :c:func:"
"`PyUnicode_InternInPlace`, returning either a new unicode string object that "
diff --git a/c-api/utilities.po b/c-api/utilities.po
index 73c1441d8..6de7a4e48 100644
--- a/c-api/utilities.po
+++ b/c-api/utilities.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-10-18 09:03+0200\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -28,3 +28,7 @@ msgid ""
"C, and parsing function arguments and constructing Python values from C "
"values."
msgstr ""
+"Les fonctions de ce chapitre sont utilitaires, certaines aident à rendre le "
+"code en C plus portable, d'autres à utiliser des modules Python depuis du C, "
+"analyser des arguments de fonctions, ou encore construire des valeurs Python "
+"à partir de valeurs C."
diff --git a/c-api/veryhigh.po b/c-api/veryhigh.po
index 28a2717c2..c08607347 100644
--- a/c-api/veryhigh.po
+++ b/c-api/veryhigh.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2017-12-01 07:43+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -173,10 +173,11 @@ msgid ""
"Read and execute statements from a file associated with an interactive "
"device until EOF is reached. The user will be prompted using ``sys.ps1`` "
"and ``sys.ps2``. *filename* is decoded from the filesystem encoding (:func:"
-"`sys.getfilesystemencoding`). Returns ``0`` at EOF."
+"`sys.getfilesystemencoding`). Returns ``0`` at EOF or a negative number "
+"upon failure."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:149
+#: ../Doc/c-api/veryhigh.rst:150
msgid ""
"Can be set to point to a function with the prototype ``int func(void)``. "
"The function will be called when Python's interpreter prompt is about to "
@@ -186,7 +187,7 @@ msgid ""
"the Python source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:160
+#: ../Doc/c-api/veryhigh.rst:161
msgid ""
"Can be set to point to a function with the prototype ``char *func(FILE "
"*stdin, FILE *stdout, char *prompt)``, overriding the default function used "
@@ -197,34 +198,34 @@ msgid ""
"line-editing and tab-completion features."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:169
+#: ../Doc/c-api/veryhigh.rst:170
msgid ""
"The result must be a string allocated by :c:func:`PyMem_RawMalloc` or :c:"
"func:`PyMem_RawRealloc`, or *NULL* if an error occurred."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:172
+#: ../Doc/c-api/veryhigh.rst:173
msgid ""
"The result must be allocated by :c:func:`PyMem_RawMalloc` or :c:func:"
"`PyMem_RawRealloc`, instead of being allocated by :c:func:`PyMem_Malloc` or :"
"c:func:`PyMem_Realloc`."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:180
+#: ../Doc/c-api/veryhigh.rst:181
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"*NULL* and *flags* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:187
+#: ../Doc/c-api/veryhigh.rst:188
msgid ""
"This is a simplified interface to :c:func:"
"`PyParser_SimpleParseStringFlagsFilename` below, leaving *filename* set to "
"*NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:194
+#: ../Doc/c-api/veryhigh.rst:195
msgid ""
"Parse Python source code from *str* using the start token *start* according "
"to the *flags* argument. The result can be used to create a code object "
@@ -233,25 +234,25 @@ msgid ""
"(:func:`sys.getfilesystemencoding`)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:203
+#: ../Doc/c-api/veryhigh.rst:204
msgid ""
"This is a simplified interface to :c:func:`PyParser_SimpleParseFileFlags` "
"below, leaving *flags* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:209
+#: ../Doc/c-api/veryhigh.rst:210
msgid ""
"Similar to :c:func:`PyParser_SimpleParseStringFlagsFilename`, but the Python "
"source code is read from *fp* instead of an in-memory string."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:215
+#: ../Doc/c-api/veryhigh.rst:216
msgid ""
"This is a simplified interface to :c:func:`PyRun_StringFlags` below, leaving "
"*flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:221
+#: ../Doc/c-api/veryhigh.rst:222
msgid ""
"Execute Python source code from *str* in the context specified by the "
"objects *globals* and *locals* with the compiler flags specified by "
@@ -260,31 +261,31 @@ msgid ""
"token that should be used to parse the source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:227
+#: ../Doc/c-api/veryhigh.rst:228
msgid ""
"Returns the result of executing the code as a Python object, or *NULL* if an "
"exception was raised."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:233
+#: ../Doc/c-api/veryhigh.rst:234
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0`` and *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:239
+#: ../Doc/c-api/veryhigh.rst:240
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:245
+#: ../Doc/c-api/veryhigh.rst:246
msgid ""
"This is a simplified interface to :c:func:`PyRun_FileExFlags` below, leaving "
"*closeit* set to ``0``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:251
+#: ../Doc/c-api/veryhigh.rst:252
msgid ""
"Similar to :c:func:`PyRun_StringFlags`, but the Python source code is read "
"from *fp* instead of an in-memory string. *filename* should be the name of "
@@ -293,19 +294,19 @@ msgid ""
"func:`PyRun_FileExFlags` returns."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:260
+#: ../Doc/c-api/veryhigh.rst:261
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringFlags` below, "
"leaving *flags* set to *NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:266
+#: ../Doc/c-api/veryhigh.rst:267
msgid ""
"This is a simplified interface to :c:func:`Py_CompileStringExFlags` below, "
"with *optimize* set to ``-1``."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:272
+#: ../Doc/c-api/veryhigh.rst:273
msgid ""
"Parse and compile the Python source code in *str*, returning the resulting "
"code object. The start token is given by *start*; this can be used to "
@@ -316,7 +317,7 @@ msgid ""
"returns *NULL* if the code cannot be parsed or compiled."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:280
+#: ../Doc/c-api/veryhigh.rst:281
msgid ""
"The integer *optimize* specifies the optimization level of the compiler; a "
"value of ``-1`` selects the optimization level of the interpreter as given "
@@ -325,20 +326,20 @@ msgid ""
"or ``2`` (docstrings are removed too)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:291
+#: ../Doc/c-api/veryhigh.rst:292
msgid ""
"Like :c:func:`Py_CompileStringObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:298
+#: ../Doc/c-api/veryhigh.rst:299
msgid ""
"This is a simplified interface to :c:func:`PyEval_EvalCodeEx`, with just the "
"code object, and global and local variables. The other arguments are set to "
"*NULL*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:305
+#: ../Doc/c-api/veryhigh.rst:306
msgid ""
"Evaluate a precompiled code object, given a particular environment for its "
"evaluation. This environment consists of a dictionary of global variables, "
@@ -347,19 +348,19 @@ msgid ""
"only_parameter>` arguments and a closure tuple of cells."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:314
+#: ../Doc/c-api/veryhigh.rst:315
msgid ""
"The C structure of the objects used to describe frame objects. The fields of "
"this type are subject to change at any time."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:320
+#: ../Doc/c-api/veryhigh.rst:321
msgid ""
"Evaluate an execution frame. This is a simplified interface to :c:func:"
"`PyEval_EvalFrameEx`, for backward compatibility."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:326
+#: ../Doc/c-api/veryhigh.rst:327
msgid ""
"This is the main, unvarnished function of Python interpretation. It is "
"literally 2000 lines long. The code object associated with the execution "
@@ -369,39 +370,41 @@ msgid ""
"`~generator.throw` methods of generator objects."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:333
+#: ../Doc/c-api/veryhigh.rst:334
msgid ""
"This function now includes a debug assertion to help ensure that it does not "
"silently discard an active exception."
msgstr ""
+"Cette fonction inclut maintenant une assertion de débogage afin d'assurer "
+"qu'elle ne passe pas sous silence une exception active."
-#: ../Doc/c-api/veryhigh.rst:340
+#: ../Doc/c-api/veryhigh.rst:341
msgid ""
"This function changes the flags of the current evaluation frame, and returns "
"true on success, false on failure."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:348
+#: ../Doc/c-api/veryhigh.rst:349
msgid ""
"The start symbol from the Python grammar for isolated expressions; for use "
"with :c:func:`Py_CompileString`."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:356
+#: ../Doc/c-api/veryhigh.rst:357
msgid ""
"The start symbol from the Python grammar for sequences of statements as read "
"from a file or other source; for use with :c:func:`Py_CompileString`. This "
"is the symbol to use when compiling arbitrarily long Python source code."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:365
+#: ../Doc/c-api/veryhigh.rst:366
msgid ""
"The start symbol from the Python grammar for a single statement; for use "
"with :c:func:`Py_CompileString`. This is the symbol used for the interactive "
"interpreter loop."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:372
+#: ../Doc/c-api/veryhigh.rst:373
msgid ""
"This is the structure used to hold compiler flags. In cases where code is "
"only being compiled, it is passed as ``int flags``, and in cases where code "
@@ -409,14 +412,14 @@ msgid ""
"case, ``from __future__ import`` can modify *flags*."
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:377
+#: ../Doc/c-api/veryhigh.rst:378
msgid ""
"Whenever ``PyCompilerFlags *flags`` is *NULL*, :attr:`cf_flags` is treated "
"as equal to ``0``, and any modification due to ``from __future__ import`` is "
"discarded. ::"
msgstr ""
-#: ../Doc/c-api/veryhigh.rst:388
+#: ../Doc/c-api/veryhigh.rst:389
msgid ""
"This bit can be set in *flags* to cause division operator ``/`` to be "
"interpreted as \"true division\" according to :pep:`238`."
diff --git a/c-api/weakref.po b/c-api/weakref.po
index 4cc8773b8..4b922b618 100644
--- a/c-api/weakref.po
+++ b/c-api/weakref.po
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/c-api/weakref.rst:6
msgid "Weak Reference Objects"
-msgstr ""
+msgstr "Objets à références faibles"
#: ../Doc/c-api/weakref.rst:8
msgid ""
@@ -28,18 +28,22 @@ msgid ""
"is a simple reference object, and the second acts as a proxy for the "
"original object as much as it can."
msgstr ""
+"Python gère les *références faibles* comme des objets de première classe. Il "
+"existe deux types d'objets spécifiques qui implémentent directement les "
+"références faibles. Le premier est un objet de référence simple, et le "
+"second agit autant que possible comme un mandataire vers l'objet original."
#: ../Doc/c-api/weakref.rst:16
msgid "Return true if *ob* is either a reference or proxy object."
-msgstr ""
+msgstr "Renvoie vrai si *ob* est soit une référence, soit un objet proxy."
#: ../Doc/c-api/weakref.rst:21
msgid "Return true if *ob* is a reference object."
-msgstr ""
+msgstr "Retourne vrai si *ob* est un objet référence."
#: ../Doc/c-api/weakref.rst:26
msgid "Return true if *ob* is a proxy object."
-msgstr ""
+msgstr "Retourne vrai si *ob* est un objet proxy"
#: ../Doc/c-api/weakref.rst:31
msgid ""
@@ -52,6 +56,16 @@ msgid ""
"referencable object, or if *callback* is not callable, ``None``, or *NULL*, "
"this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
+"Retourne un objet de référence faible pour l'objet *ob*. Elle renvoie "
+"toujours une nouvelle référence, mais cela ne signifie pas qu'un nouvel "
+"objet est créé ; un objet référence existant peut être renvoyé. Le second "
+"paramètre, *callback*, peut être un objet appelable qui reçoit une "
+"notification lorsque *ob* est collecté par le ramasse-miette (*garbage "
+"collected* en anglais) ; il doit accepter un paramètre unique, qui est "
+"l'objet référence faible lui-même. *callback* peut aussi être positionné à "
+"``None`` ou à *NULL*. Si *ob* n'est pas un objet faiblement référençable, "
+"ou si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci retourne "
+"*NULL* et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:43
msgid ""
@@ -64,12 +78,23 @@ msgid ""
"is not a weakly-referencable object, or if *callback* is not callable, "
"``None``, or *NULL*, this will return *NULL* and raise :exc:`TypeError`."
msgstr ""
+"Retourne un objet mandataire à référence faible pour l'objet *ob*. Ceci "
+"renvoie toujours une nouvelle référence, mais ne garantit pas la création "
+"d'un nouvel objet ; un objet proxy existant peut être retourné. Le second "
+"paramètre, *callback*, peut être un objet appelable qui reçoit une "
+"notification lorsque *ob* est collecté ; il doit accepter un seul paramètre, "
+"qui sera l'objet de référence faible lui-même. *callback* peut aussi être "
+"``None`` ou *NULLL*. Si *ob* n'est pas un objet faiblement référençable, ou "
+"si *callback* n'est pas appelable, ``None``` ou *NULL*, ceci renvoie *NULL* "
+"et lève une :exc:`TypeError`."
#: ../Doc/c-api/weakref.rst:55
msgid ""
"Return the referenced object from a weak reference, *ref*. If the referent "
"is no longer live, returns :const:`Py_None`."
msgstr ""
+"Retourne l'objet référencé à partir d'une référence faible, *ref*. Si le "
+"référence n'existe plus, alors l'objet renvoie :const:`Py_None`."
#: ../Doc/c-api/weakref.rst:60
msgid ""
@@ -77,9 +102,15 @@ msgid ""
"This means that you should always call :c:func:`Py_INCREF` on the object "
"except if you know that it cannot be destroyed while you are still using it."
msgstr ""
+"Cette fonction renvoie une **référence empruntée** à l'objet référencé. Cela "
+"signifie que vous devez toujours appeler :c:func:`Py_INCREF` sur l'objet "
+"sauf si vous savez qu'il ne peut pas être détruit tant que vous l'utilisez "
+"encore."
#: ../Doc/c-api/weakref.rst:68
msgid ""
"Similar to :c:func:`PyWeakref_GetObject`, but implemented as a macro that "
"does no error checking."
msgstr ""
+"Similaire à :c:func:`PyWeakref_GetObject`, mais implémenté comme une macro "
+"qui ne vérifie pas les erreurs."
diff --git a/copyright.po b/copyright.po
index e83c46b19..0c401a684 100644
--- a/copyright.po
+++ b/copyright.po
@@ -3,14 +3,13 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2018-02-08 09:58+0100\n"
+"PO-Revision-Date: 2017-12-01 08:54+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -26,27 +25,27 @@ msgid "Python and this documentation is:"
msgstr "Python et cette documentation sont :"
#: ../Doc/copyright.rst:7
-msgid "Copyright © 2001-2016 Python Software Foundation. All rights reserved."
+msgid "Copyright © 2001-2018 Python Software Foundation. All rights reserved."
msgstr ""
-"Copyright © 2001-2016 Python Software Foundation. Tous droits réservés."
+"Copyright © 2001-2018 *Python Software Foundation*. Tout droits réservés."
#: ../Doc/copyright.rst:9
msgid "Copyright © 2000 BeOpen.com. All rights reserved."
-msgstr "Copyright © 2000 BeOpen.com. Tous droits réservés."
+msgstr "Copyright © 2000 *BeOpen.com*. Tous droits réservés."
#: ../Doc/copyright.rst:11
msgid ""
"Copyright © 1995-2000 Corporation for National Research Initiatives. All "
"rights reserved."
msgstr ""
-"Copyright © 1995-2000 Corporation for National Research Initiatives. Tous "
+"Copyright © 1995-2000 *Corporation for National Research Initiatives*. Tous "
"droits réservés."
#: ../Doc/copyright.rst:14
msgid ""
"Copyright © 1991-1995 Stichting Mathematisch Centrum. All rights reserved."
msgstr ""
-"Copyright © 1991-1995 Stichting Mathematisch Centrum. Tous droits réservés."
+"Copyright © 1991-1995 *Stichting Mathematisch Centrum*. Tous droits réservés."
#: ../Doc/copyright.rst:18
msgid ""
diff --git a/distributing/index.po b/distributing/index.po
index 39e0d45cd..050b3cafa 100644
--- a/distributing/index.po
+++ b/distributing/index.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-09-21 09:15+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-06-10 15:33+0200\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,11 @@ msgstr ""
#: ../Doc/distributing/index.rst:5
msgid "Distributing Python Modules"
-msgstr "Distribuer des Modules Python"
+msgstr "Distribuer des modules Python"
+
+#: ../Doc/distributing/index.rst:0
+msgid "Email"
+msgstr "Email"
#: ../Doc/distributing/index.rst:7
msgid "distutils-sig@python.org"
@@ -31,7 +35,7 @@ msgid ""
"supporting community of contributors and users that also make their software "
"available for other Python developers to use under open source license terms."
msgstr ""
-"En temps que logiciel libre populaire, Python bénéficie d'une communauté "
+"En tant que logiciel libre populaire, Python bénéficie d'une communauté "
"active de contributeurs et d'utilisateurs qui rendent à leur tour leurs "
"logiciels disponibles, sous licence libre, pour les autres développeurs "
"Python."
@@ -66,8 +70,8 @@ msgid ""
"the distribution and installation tools provided with Python."
msgstr ""
"Pour les entreprises et autres institutions, gardez en tête que certaines "
-"organisations ont leur propres règles sur l'utilisation et la contribution "
-"au logiciel libre. Prennez ces règles en compte lorsque vous utilisez les "
+"organisations ont leurs propres règles sur l'utilisation et la contribution "
+"au logiciel libre. Prenez ces règles en compte lorsque vous utilisez les "
"outils de distribution et d'installation fournis par Python."
#: ../Doc/distributing/index.rst:32
@@ -76,13 +80,12 @@ msgstr "Vocabulaire"
#: ../Doc/distributing/index.rst:34
msgid ""
-"the `Python Packaging Index `__ is a public "
-"repository of open source licensed packages made available for use by other "
-"Python users"
+"the `Python Packaging Index `__ is a public repository of "
+"open source licensed packages made available for use by other Python users"
msgstr ""
-"le `Python Packaging Index `__ est un dépôt "
-"public de paquets sous licence libre rendus disponibles par d'autres "
-"utilisateurs Python"
+"le `Python Packaging Index `__ est un dépôt public de "
+"paquets sous licence libre rendus disponibles par d'autres utilisateurs "
+"Python"
#: ../Doc/distributing/index.rst:37
msgid ""
@@ -131,7 +134,7 @@ msgstr ""
"modifiés de :mod:`distutils` est la possibilité de déclarer des dépendances "
"à d'autres paquets. C'est l'alternative actuellement recommandée car plus "
"régulièrement mise à jour que :mod:`distutils` et gère mieux les standards "
-"de créaction de paquets actuels, pour un large choix de version de Python."
+"de création de paquets actuels, pour un large choix de version de Python."
#: ../Doc/distributing/index.rst:57
msgid ""
@@ -222,7 +225,7 @@ msgid ""
msgstr ""
"Les outils de construction de paquets et de distribution actuellement "
"recommandées peuvent être installées en invoquant le module ``pip`` dans une "
-"invite de commande : ::"
+"invite de commande ::"
#: ../Doc/distributing/index.rst:104
msgid ""
@@ -247,7 +250,7 @@ msgid ""
"The Python Packaging User Guide includes more details on the `currently "
"recommended tools`_."
msgstr ""
-" Le *Python Packaging User Guide* contient plus de détails sur les `(en) "
+"Le *Python Packaging User Guide* contient plus de détails sur les `(en) "
"outils actuellement recommandés `_."
#: ../Doc/distributing/index.rst:117
diff --git a/distutils/apiref.po b/distutils/apiref.po
index 3ff493dae..99f68ba13 100644
--- a/distutils/apiref.po
+++ b/distutils/apiref.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-05-27 10:18+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-06-10 23:27+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -24,6 +24,7 @@ msgstr "Référence de l'API"
#: ../Doc/distutils/apiref.rst:9
msgid ":mod:`distutils.core` --- Core Distutils functionality"
msgstr ""
+":mod:`distutils.core` --- Fonctionnalités principales du module Distutils"
#: ../Doc/distutils/apiref.rst:15
msgid ""
@@ -34,8 +35,8 @@ msgid ""
msgstr ""
"Le module :mod:`distutils.core` est le seul module qui a besoin d'être "
"installé pour utiliser Distutils. Il fournit le :func:`setup` (qui est "
-"appelé par le script de setup). Il fournit indirectement les classes :class:"
-"`distutils.dist.Distribution` et :class:`distutils.cmd.Command`."
+"appelé par le script *setup.py*). Il fournit indirectement les classes :"
+"class:`distutils.dist.Distribution` et :class:`distutils.cmd.Command`."
#: ../Doc/distutils/apiref.rst:23
msgid ""
@@ -50,8 +51,8 @@ msgid ""
"The setup function takes a large number of arguments. These are laid out in "
"the following table."
msgstr ""
-"La fonction setup prend un grand nombre d'arguments. Ils sont présentés dans "
-"le tableau suivant."
+"La fonction ``setup`` prend un grand nombre d'arguments. Ils sont présentés "
+"dans le tableau suivant."
#: ../Doc/distutils/apiref.rst:32 ../Doc/distutils/apiref.rst:175
msgid "argument name"
@@ -134,6 +135,9 @@ msgid ""
"if the maintainer is provided, distutils will use it as the author in :file:"
"`PKG-INFO`"
msgstr ""
+"Le nom de l'actuel mainteneur, s'il est différent de l'auteur. Remarquez que "
+"si *maintainer* est fourni, *distutils* l'utilise à la place de *author* "
+"dans :file:`PKG-INFO`."
#: ../Doc/distutils/apiref.rst:58
msgid "*maintainer_email*"
@@ -166,7 +170,7 @@ msgstr "*packages*"
#: ../Doc/distutils/apiref.rst:67
msgid "A list of Python packages that distutils will manipulate"
-msgstr "Une liste des paquets Python que distutils va manipuler"
+msgstr "Une liste des paquets Python que *distutils* va manipuler"
#: ../Doc/distutils/apiref.rst:67 ../Doc/distutils/apiref.rst:70
#: ../Doc/distutils/apiref.rst:73 ../Doc/distutils/apiref.rst:90
@@ -185,7 +189,7 @@ msgstr "*py_modules*"
#: ../Doc/distutils/apiref.rst:70
msgid "A list of Python modules that distutils will manipulate"
-msgstr "Une liste de modules Python que distutils va manipuler"
+msgstr "Une liste de modules Python que *distutils* va manipuler"
#: ../Doc/distutils/apiref.rst:73
msgid "*scripts*"
@@ -217,11 +221,11 @@ msgstr "Une liste de catégories pour le paquet"
#: ../Doc/distutils/apiref.rst:80
msgid ""
-"a list of strings; valid classifiers are listed on `PyPI `_."
+"a list of strings; valid classifiers are listed on `PyPI `_."
msgstr ""
-"une liste des chaînes de charactères, les classifieurs valides est listés "
-"sur `PyPI `_."
+"une liste des chaînes de caractères, les classificateurs valides sont listés "
+"sur `PyPI `_."
#: ../Doc/distutils/apiref.rst:83
msgid "*distclass*"
@@ -241,7 +245,7 @@ msgstr "*script_name*"
#: ../Doc/distutils/apiref.rst:86
msgid "The name of the setup.py script - defaults to ``sys.argv[0]``"
-msgstr ""
+msgstr "Le nom du script *setup.py* . Initialisé par ``sys.argv[0]``"
#: ../Doc/distutils/apiref.rst:90
msgid "*script_args*"
@@ -283,6 +287,8 @@ msgstr "Méta-données descriptives, voir :pep:`314`"
#: ../Doc/distutils/apiref.rst:98 ../Doc/distutils/apiref.rst:101
msgid "a list of strings or a comma-separated string"
msgstr ""
+"Une liste de chaînes de caractères ou une chaîne de caractère dont les "
+"éléments sont séparés par des virgules."
#: ../Doc/distutils/apiref.rst:101
msgid "*platforms*"
@@ -294,7 +300,8 @@ msgstr "*cmdclass*"
#: ../Doc/distutils/apiref.rst:103
msgid "A mapping of command names to :class:`Command` subclasses"
-msgstr "Un mapping des noms de commandes et des sous-classes :class:`Command`"
+msgstr ""
+"Un dictionnaire des noms de commandes et des sous-classes :class:`Command`"
#: ../Doc/distutils/apiref.rst:106
msgid "*data_files*"
@@ -314,7 +321,7 @@ msgstr "*package_dir*"
#: ../Doc/distutils/apiref.rst:109
msgid "A mapping of package to directory names"
-msgstr "Un mapping des paquets et des noms de dossiers"
+msgstr "Un dictionnaire des paquets et des noms de dossiers"
#: ../Doc/distutils/apiref.rst:117
msgid ""
@@ -324,6 +331,12 @@ msgid ""
"keyword args from *script* to :func:`setup`), or the contents of the config "
"files or command-line."
msgstr ""
+"Exécute un script d'installation dans un environnement quelque peu contrôlé, "
+"et renvoie une instance :class:`distutils.dist.distribution` qui contrôle "
+"l’exécution. Ceci est utile si vous avez besoin de connaître les méta-"
+"données de la distribution (passées sous forme d'arguments nommés de "
+"*script* à la fonction :func:`setup`), ou le contenu des fichiers de "
+"configuration ou de la ligne de commande."
#: ../Doc/distutils/apiref.rst:123
msgid ""
@@ -439,8 +452,8 @@ msgid ""
"the full name of the extension, including any packages --- ie. *not* a "
"filename or pathname, but Python dotted name"
msgstr ""
-"le nom complet de l'extension, incluant n'importe quel paquet --- c-à-d "
-"*pas* un nom de fichier ou de chemin mais un nom Python séparé par des points"
+"Le nom complet de l'extension, incluant n'importe quel paquet — c-à-d *pas* "
+"un nom de fichier ou de chemin mais un nom Python séparé par des points."
#: ../Doc/distutils/apiref.rst:183
msgid "*sources*"
@@ -455,15 +468,15 @@ msgid ""
"extension."
msgstr ""
"listes des noms de fichier des sources, relatifs à la racine de la "
-"distribution (où est placé le script setup), dans un format Unix (séparé par "
-"des slashs) dans un souci de portabilité. Les fichiers de code source "
-"peuvent être du C, C++, SWIG (.i), des fichiers de ressources spécifiques à "
-"la plateforme ou tout autre reconnu par la commande :command:`build_ext` "
-"comme source d'une extension Python"
+"distribution (où est placé le script *setup.py*), dans un format Unix "
+"(séparé par des slashs) dans un souci de portabilité. Les fichiers de code "
+"source peuvent être du C, C++, SWIG (*.i*), des fichiers de ressources "
+"spécifiques à la plateforme ou tout autre reconnu par la commande :command:"
+"`build_ext` comme source d'une extension Python."
#: ../Doc/distutils/apiref.rst:196
msgid "*include_dirs*"
-msgstr ""
+msgstr "*include_dirs*"
#: ../Doc/distutils/apiref.rst:196
msgid ""
@@ -484,11 +497,11 @@ msgid ""
"define it without a particular value (equivalent of ``#define FOO`` in "
"source or :option:`!-DFOO` on Unix C compiler command line)"
msgstr ""
-"liste de macros à définir ; chaque macro est définie à l'aide d'un tuple de "
-"deux valeurs ``(name, value)``, où *value* correspond soit à la chaîne sur "
-"laquelle la macro doit être définie, soit à ``None`` pour définir la macro "
-"sur aucune valeur particulière (équivalent à ``#define FOO`` dans la source "
-"ou à :option:`!-DFOO` dans la ligne de commande du compilateur C Unix."
+"Liste de macros à définir ; chaque macro est définie à l'aide d'un couple "
+"``(name, value)``, où *value* correspond soit à la chaîne sur laquelle la "
+"macro doit être définie, soit à ``None`` pour définir la macro sur aucune "
+"valeur particulière (équivalent à ``#define TRUC`` dans la source ou à :"
+"option:`!-DTRUC` dans la ligne de commande du compilateur C Unix."
#: ../Doc/distutils/apiref.rst:200
msgid "a list of tuples"
@@ -500,37 +513,44 @@ msgstr "*undef_macros*"
#: ../Doc/distutils/apiref.rst:212
msgid "list of macros to undefine explicitly"
-msgstr ""
+msgstr "Liste de macros à ignorer explicitement."
#: ../Doc/distutils/apiref.rst:215
msgid "*library_dirs*"
-msgstr ""
+msgstr "*library_dirs*"
#: ../Doc/distutils/apiref.rst:215
msgid "list of directories to search for C/C++ libraries at link time"
msgstr ""
+"Liste de répertoires à parcourir pour chercher les bibliothèques C/C++ lors "
+"de la phase d'édition de liens."
#: ../Doc/distutils/apiref.rst:219
msgid "*libraries*"
-msgstr ""
+msgstr "*libraries*"
#: ../Doc/distutils/apiref.rst:219
msgid "list of library names (not filenames or paths) to link against"
msgstr ""
+"Liste de noms de bibliothèques à lier à la compilation. Pas de noms de "
+"fichiers ou de chemin."
#: ../Doc/distutils/apiref.rst:223
msgid "*runtime_library_dirs*"
-msgstr ""
+msgstr "*runtime_library_dirs*"
#: ../Doc/distutils/apiref.rst:223
msgid ""
"list of directories to search for C/C++ libraries at run time (for shared "
"extensions, this is when the extension is loaded)"
msgstr ""
+"Liste de répertoires à parcourir pour les bibliothèques C/C++ lors de la "
+"phase d'exécution. Pour les extensions partagées, c'est à ce moment que "
+"l'extension est chargée. "
#: ../Doc/distutils/apiref.rst:229
msgid "*extra_objects*"
-msgstr ""
+msgstr "*extra_objects*"
#: ../Doc/distutils/apiref.rst:229
msgid ""
@@ -538,10 +558,13 @@ msgid ""
"static library that must be explicitly specified, binary resource files, "
"etc.)"
msgstr ""
+"Liste des fichiers supplémentaires à lier (par exemple les fichiers d'objets "
+"non explicités dans les 'sources', bibliothèque statique qui doit être "
+"explicitement spécifiée, fichiers de ressources binaires, etc. )."
#: ../Doc/distutils/apiref.rst:236
msgid "*extra_compile_args*"
-msgstr ""
+msgstr "*extra_compile_args*"
#: ../Doc/distutils/apiref.rst:236
msgid ""
@@ -550,10 +573,15 @@ msgid ""
"line makes sense, this is typically a list of command-line arguments, but "
"for other platforms it could be anything."
msgstr ""
+"Toute information supplémentaire spécifique à la plate-forme et au "
+"compilateur à utiliser lors de la compilation des fichiers sources dans "
+"'sources'. Pour les plates-formes et les compilateurs où une ligne de "
+"commande a du sens, il s'agit généralement d'une liste d'arguments de ligne "
+"de commande, mais pour d'autres plates-formes, cela peut être n'importe quoi."
#: ../Doc/distutils/apiref.rst:247
msgid "*extra_link_args*"
-msgstr ""
+msgstr "*extra_link_args*"
#: ../Doc/distutils/apiref.rst:247
msgid ""
@@ -561,10 +589,14 @@ msgid ""
"object files together to create the extension (or to create a new static "
"Python interpreter). Similar interpretation as for 'extra_compile_args'."
msgstr ""
+"Toute information supplémentaire spécifique à la plate-forme et au "
+"compilateur à utiliser lors de la liaison de fichiers objets pour créer "
+"l'extension (ou pour créer un nouvel interpréteur Python statique). "
+"Interprétation similaire à celle de *extra_compile_args*."
#: ../Doc/distutils/apiref.rst:256
msgid "*export_symbols*"
-msgstr ""
+msgstr "*export_symbols*"
#: ../Doc/distutils/apiref.rst:256
msgid ""
@@ -572,62 +604,75 @@ msgid ""
"platforms, and not generally necessary for Python extensions, which "
"typically export exactly one symbol: ``init`` + extension_name."
msgstr ""
+"Liste des symboles à exporter à partir d'une extension partagée. N'est pas "
+"utilisé sur toutes les plates-formes et n'est généralement pas nécessaire "
+"pour les extensions Python, qui exportent généralement exactement un "
+"symbole : ``init + nom_de_l'extension``."
#: ../Doc/distutils/apiref.rst:264
msgid "*depends*"
-msgstr ""
+msgstr "*depends*"
#: ../Doc/distutils/apiref.rst:264
msgid "list of files that the extension depends on"
-msgstr "liste des fichiers dont dépend l'extension"
+msgstr "Liste des fichiers dont dépend l'extension."
#: ../Doc/distutils/apiref.rst:267
msgid "*language*"
-msgstr ""
+msgstr "*language*"
#: ../Doc/distutils/apiref.rst:267
msgid ""
"extension language (i.e. ``'c'``, ``'c++'``, ``'objc'``). Will be detected "
"from the source extensions if not provided."
msgstr ""
-"langage de l'extension (par exemple ``'c'``, ``'c++'``, ``'objc'``). Il sera "
+"Langage de l'extension (par exemple ``'c'``, ``'c++'``, ``'objc'``). Il sera "
"détecté selon l'extension de la source s'il n'est pas précisé."
#: ../Doc/distutils/apiref.rst:273
msgid "*optional*"
-msgstr "*optionnel*"
+msgstr "*optional*"
#: ../Doc/distutils/apiref.rst:273
msgid ""
"specifies that a build failure in the extension should not abort the build "
"process, but simply skip the extension."
msgstr ""
+"Spécifie qu'un échec de compilation dans l'extension ne doit pas interrompre "
+"le processus de compilation, mais simplement ignorer l'extension."
#: ../Doc/distutils/apiref.rst:273
msgid "a boolean"
-msgstr ""
+msgstr "un booléen"
#: ../Doc/distutils/apiref.rst:282
msgid ""
"A :class:`Distribution` describes how to build, install and package up a "
"Python software package."
msgstr ""
+"Une classe :class:`Distribution` décrit comment compiler, installer et "
+"empaqueter un paquet logiciel Python."
#: ../Doc/distutils/apiref.rst:285
msgid ""
"See the :func:`setup` function for a list of keyword arguments accepted by "
"the Distribution constructor. :func:`setup` creates a Distribution instance."
msgstr ""
+"Voir la fonction :func:`setup` pour une liste des arguments de mots-clés "
+"acceptés par le constructeur *Distribution*. :func:`setup` crée une instance "
+"de Distribution."
#: ../Doc/distutils/apiref.rst:291
msgid ""
"A :class:`Command` class (or rather, an instance of one of its subclasses) "
"implement a single distutils command."
msgstr ""
+"Une classe :class:`Command` (ou plutôt une instance d'une de ses sous-"
+"classes) implémente une commande *distutils* unique."
#: ../Doc/distutils/apiref.rst:296
msgid ":mod:`distutils.ccompiler` --- CCompiler base class"
-msgstr ""
+msgstr ":mod:`distutils.ccompiler` — Classe de base CCompiler"
#: ../Doc/distutils/apiref.rst:302
msgid ""
@@ -637,6 +682,12 @@ msgid ""
"options for the compiler --- macro definitions, include directories, link "
"path, libraries and the like."
msgstr ""
+"Ce module fournit la classe de base abstraite pour les classes :class:"
+"`CCompiler`. Une instance de :class:`CCompiler` peut être utilisée pour "
+"toutes les étapes de compilation et de liaison nécessaires à la compilation "
+"d'un projet unique. Des méthodes sont fournies pour définir des options pour "
+"le compilateur --- définitions de macros, inclusion des répertoires, des "
+"chemins de liens, des bibliothèques, etc."
#: ../Doc/distutils/apiref.rst:308
msgid "This module provides the following functions."
@@ -650,6 +701,13 @@ msgid ""
"command-line options suitable for use with some compiler (depending on the "
"two format strings passed in)."
msgstr ""
+"Génère des options de liaison pour chercher dans les répertoires des "
+"bibliothèques et pour effectuer les liaisons avec des bibliothèques "
+"spécifiques. *libraries* et *library_dirs* sont, respectivement, des listes "
+"de noms de bibliothèques (pas de noms de fichiers !) et de répertoires à "
+"rechercher. Renvoie une liste d'options de ligne de commande utilisables "
+"avec certains compilateurs (en fonction des deux chaînes de format "
+"transmises)."
#: ../Doc/distutils/apiref.rst:322
msgid ""
@@ -662,11 +720,19 @@ msgid ""
"file search path (:option:`!-I`). Returns a list of command-line options "
"suitable for either Unix compilers or Visual C++."
msgstr ""
+"Génère les options du préprocesseur C (:option:`!-D`, :option:`!-U`, :option:"
+"`!-I`) utilisées par au moins deux types de compilateurs : les compilateurs "
+"type Unix et Visual C++. *macros* est une liste de couples où ``(name,)`` "
+"est traité comme *non définie* (:option:`!-U`); ``(name, value)`` est traité "
+"comme *définie* (:option:`!-D`). *include_dirs* est la liste de noms de "
+"répertoires à ajouter au chemin de recherche du fichier d'en-tête (:option:"
+"`!-I`). Renvoie une liste d'options de ligne de commande pour les "
+"compilateurs Unix ou Visual C+++."
#: ../Doc/distutils/apiref.rst:334
msgid "Determine the default compiler to use for the given platform."
msgstr ""
-"Détermine le compilateur par défaut a utiliser par une plateforme donnée"
+"Détermine le compilateur par défaut a utiliser par une plateforme donnée."
#: ../Doc/distutils/apiref.rst:336
msgid ""
@@ -674,6 +740,9 @@ msgid ""
"returned by ``os.name``) and *platform* the common value returned by ``sys."
"platform`` for the platform in question."
msgstr ""
+"*osname* doit être l'un des noms d'OS Python standard (c'est-à-dire un des "
+"noms renvoyés par ``os.name``) et *platform* la valeur commune renvoyés par "
+"``sys.platform`` pour la plate-forme en question."
#: ../Doc/distutils/apiref.rst:340
msgid ""
@@ -695,12 +764,25 @@ msgid ""
"Windows, and a Microsoft compiler object under Unix---if you supply a value "
"for *compiler*, *plat* is ignored."
msgstr ""
+"Fonction de génération produisant une instance d'une sous-classe CCompiler "
+"pour la combinaison plateforme/compilateur fournie. Par défaut, *plat* est "
+"le ``os.name`` (par exemple ``'posix'``, ``'nt'``), et *compiler* est le "
+"compilateur par défaut pour cette plate-forme. Actuellement, seuls "
+"``'posix'`` et ``'nt'`` sont gérés, et les compilateurs par défaut sont ceux "
+"qui gèrent une \"interface Unix traditionnelle\" (:class:`UnixCCompiler`) et "
+"Visual C++ (:class:`MSVCCompiler`). Notez qu'il est tout à fait possible de "
+"demander un objet compilateur Unix sous Windows, et un objet compilateur "
+"Microsoft sous Unix. Si vous fournissez une valeur pour *compiler*, *plat* "
+"est ignoré."
#: ../Doc/distutils/apiref.rst:362
msgid ""
"Print list of available compilers (used by the :option:`!--help-compiler` "
"options to :command:`build`, :command:`build_ext`, :command:`build_clib`)."
msgstr ""
+"Affiche la liste des compilateurs disponibles (utilisés par l'option :option:"
+"`!--help-compiler` pour les commandes :command:`build`, :command:"
+"`build_ext`, :command:`build_clib`)."
#: ../Doc/distutils/apiref.rst:368
msgid ""
@@ -708,6 +790,10 @@ msgid ""
"be implemented by real compiler classes. The class also has some utility "
"methods used by several compiler classes."
msgstr ""
+"La classe de base abstraite :class:`CCompiler` définit l'interface qui doit "
+"être implémentée par des classes de compilateur concrètes. La classe "
+"possède également quelques méthodes utilitaires utilisées par plusieurs "
+"classes de compilateurs."
#: ../Doc/distutils/apiref.rst:372
msgid ""
@@ -719,6 +805,14 @@ msgid ""
"individual files are treated, most of those attributes may be varied on a "
"per-compilation or per-link basis."
msgstr ""
+"L'idée de base derrière une classe abstraite de compilateur est que chaque "
+"instance peut être utilisée pour toutes les étapes de compilation/lien dans "
+"la construction d'un seul projet. Ainsi, les attributs communs à toutes ces "
+"étapes de compilation et de liaison (ce qui inclut les répertoires, les "
+"macros à définir, les bibliothèques à relier, etc.) sont des attributs de "
+"l'instance du compilateur. Pour tenir compte des variations dans la façon "
+"dont chaque fichier est traité, la plupart de ces attributs peuvent être "
+"modifiés en fonction de chaque compilation ou de chaque lien."
#: ../Doc/distutils/apiref.rst:380
msgid ""
@@ -730,12 +824,22 @@ msgid ""
"subclasses directly - use the :func:`distutils.CCompiler.new_compiler` "
"factory function instead."
msgstr ""
+"Le constructeur de chaque sous-classe crée une instance de l'objet "
+"*Compiler*. Les paramètres optionnels sont *verbose* (affiche plus "
+"d'information à l'exécution), *dry_run* (ne pas exécuter les étapes) et "
+"*force* (tout reconstruire, indépendamment des dépendances). Tous ces "
+"paramètres ont la valeur par défaut ``0`` (désactivé). Notez que vous ne "
+"voulez probablement pas instancier directement la classe :class:`CCompiler` "
+"ou une de ses sous-classes. Utilisez plutôt la fonction génératrice :func:"
+"`distutils.CCompiler.new_compiler`."
#: ../Doc/distutils/apiref.rst:387
msgid ""
"The following methods allow you to manually alter compiler options for the "
"instance of the Compiler class."
msgstr ""
+"Les méthodes suivantes vous permettent de modifier manuellement les options "
+"du compilateur de l'instance de la classe *Compiler*."
#: ../Doc/distutils/apiref.rst:393
msgid ""
@@ -743,6 +847,10 @@ msgid ""
"The compiler is instructed to search directories in the order in which they "
"are supplied by successive calls to :meth:`add_include_dir`."
msgstr ""
+"Ajoute *dir* à la liste des répertoires qui sont recherchés pour les "
+"fichiers d'en-tête. Le compilateur est chargé de rechercher les répertoires "
+"dans l'ordre dans lequel ils sont fournis par des appels successifs à :meth:"
+"`add_include_dir`."
#: ../Doc/distutils/apiref.rst:400
msgid ""
@@ -752,6 +860,12 @@ msgid ""
"`set_include_dirs`. This does not affect any list of standard include "
"directories that the compiler may search by default."
msgstr ""
+"Affecte la liste des répertoires qui seront recherchés à la valeur de *dirs* "
+"(une liste de chaînes). Remplace tous les appels précédents de :meth:"
+"`add_include_dir` ; les appels suivants de :meth:`add_include_dir` "
+"s'ajoutent à la liste transmise par :meth:`set_include_dirs`. Ceci n'affecte "
+"pas la liste des répertoires d'inclusion standard que le compilateur peut "
+"rechercher par défaut."
#: ../Doc/distutils/apiref.rst:409
msgid ""
@@ -761,6 +875,11 @@ msgid ""
"actual filename will be inferred by the linker, the compiler, or the "
"compiler class (depending on the platform)."
msgstr ""
+"Ajoute *libname* à la liste des bibliothèques qui seront incluses dans tous "
+"les liens gérés par l'objet compilateur. Notez que *libname* ne *doit pas "
+"être* le nom d'un fichier contenant une bibliothèque, mais le nom de la "
+"bibliothèque elle-même : le nom du fichier sera déduit par l'éditeur de "
+"liens, le compilateur ou la classe de compilation (selon la plate-forme)."
#: ../Doc/distutils/apiref.rst:415
msgid ""
@@ -769,6 +888,11 @@ msgid ""
"perfectly valid to duplicate library names; the linker will be instructed to "
"link against libraries as many times as they are mentioned."
msgstr ""
+"L'éditeur de liens est chargé de lier les bibliothèques dans l'ordre dans "
+"lequel elles sont fournies à :meth:`add_library` et/ou :meth:"
+"`set_libraries`. Il est parfaitement valide de dupliquer les noms de "
+"bibliothèques ; l'éditeur de liens est chargé de créer des liens avec les "
+"bibliothèques autant de fois que les noms sont mentionnées."
#: ../Doc/distutils/apiref.rst:423
msgid ""
@@ -776,6 +900,10 @@ msgid ""
"compiler object to *libnames* (a list of strings). This does not affect any "
"standard system libraries that the linker may include by default."
msgstr ""
+"Affecte la liste des bibliothèques à inclure dans tous les liens gérés par "
+"l'objet compilateur avec la valeur de *libnames* (une liste des chaînes de "
+"caractères). Ceci n'affecte pas les bibliothèques système standard que "
+"l'éditeur de liens peut inclure par défaut."
#: ../Doc/distutils/apiref.rst:430
msgid ""
@@ -784,6 +912,11 @@ msgid ""
"be instructed to search for libraries in the order they are supplied to :"
"meth:`add_library_dir` and/or :meth:`set_library_dirs`."
msgstr ""
+"Ajoute *dir* à la liste des répertoires qui seront recherchés pour les "
+"bibliothèques spécifiées dans :meth:`add_library` et :meth:`set_libraries`. "
+"L'éditeur de liens est chargé de rechercher les bibliothèques dans l'ordre "
+"dans lequel elles sont fournies à :meth:`add_library_dir` et/ou :meth:"
+"`set_library_dirs`."
#: ../Doc/distutils/apiref.rst:438
msgid ""
@@ -791,12 +924,18 @@ msgid ""
"This does not affect any standard library search path that the linker may "
"search by default."
msgstr ""
+"Affecte la liste des répertoires de recherche de bibliothèque avec la valeur "
+"de *dirs* (une liste de chaînes de caractères). Cela n'affecte pas le "
+"chemin de recherche standard de la bibliothèque que l'éditeur de liens peut "
+"rechercher par défaut."
#: ../Doc/distutils/apiref.rst:445
msgid ""
"Add *dir* to the list of directories that will be searched for shared "
"libraries at runtime."
msgstr ""
+"Ajoute *dir* à la liste des répertoires qui seront recherchés par les "
+"bibliothèques partagées au moment de l'exécution."
#: ../Doc/distutils/apiref.rst:451
msgid ""
@@ -804,6 +943,10 @@ msgid ""
"*dirs* (a list of strings). This does not affect any standard search path "
"that the runtime linker may search by default."
msgstr ""
+"Affecte la liste des répertoires pour rechercher les bibliothèques partagées "
+"au moment de l'exécution à la valeur de *dirs* (une liste des chaînes de "
+"caractères). Ceci n'affecte aucun chemin de recherche standard que "
+"l'éditeur de liens d'exécution peut rechercher par défaut."
#: ../Doc/distutils/apiref.rst:458
msgid ""
@@ -812,6 +955,10 @@ msgid ""
"supplied, then the macro will be defined without an explicit value and the "
"exact outcome depends on the compiler used."
msgstr ""
+"Définit une macro de préprocesseur pour toutes les compilations gérées par "
+"cet objet compilateur. Le paramètre optionnel *value* doit être une chaîne "
+"de caractères ; s'il n'est pas fourni, alors la macro sera définie sans "
+"valeur explicite et le résultat exact dépendra du compilateur utilisé."
#: ../Doc/distutils/apiref.rst:468
msgid ""
@@ -822,6 +969,12 @@ msgid ""
"per-compilation basis (ie. in the call to :meth:`compile`), then that takes "
"precedence."
msgstr ""
+"Désactive une macro de préprocesseur pour toutes les compilations gérées par "
+"cet objet compilateur. Si la même macro est définie par :meth:"
+"`define_macro` et ensuite désactivée par un appel à :meth:`undefine_macro`, "
+"le dernier appel est prioritaire (y compris en cas de redéfinitions "
+"multiples). Si la macro est redéfinie/désactivée par compilation (c'est-à-"
+"dire dans l'appel à :meth:`compile`), alors cet appel prévaut."
#: ../Doc/distutils/apiref.rst:478
msgid ""
@@ -829,6 +982,10 @@ msgid ""
"named library files or the output of \"resource compilers\") to be included "
"in every link driven by this compiler object."
msgstr ""
+"Ajoute *objet* à la liste des fichiers objets (ou analogues, tels que les "
+"fichiers de bibliothèque explicitement nommés ou la sortie des "
+"\"compilateurs de ressources\") à inclure dans chaque lien qui est géré par "
+"ce compilateur d'objets."
#: ../Doc/distutils/apiref.rst:485
msgid ""
@@ -836,12 +993,19 @@ msgid ""
"*objects*. This does not affect any standard object files that the linker "
"may include by default (such as system libraries)."
msgstr ""
+"Définit la liste des fichiers objets (ou analogues) à inclure dans chaque "
+"lien à la valeur de *objects*. Ceci n'affecte pas les fichiers d'objets "
+"standard que l'éditeur de liens peut inclure par défaut (comme les "
+"bibliothèques système)."
#: ../Doc/distutils/apiref.rst:489
msgid ""
"The following methods implement methods for autodetection of compiler "
"options, providing some functionality similar to GNU :program:`autoconf`."
msgstr ""
+"Les méthodes suivantes offre des services pour l'auto-détection des options "
+"du compilateur. Elles offrent des fonctionnalités similaires à celles du "
+"programme GNU :program:`autoconf`."
#: ../Doc/distutils/apiref.rst:495
msgid ""
@@ -849,6 +1013,9 @@ msgid ""
"attributes :attr:`language_map` (a dictionary), and :attr:`language_order` "
"(a list) to do the job."
msgstr ""
+"Détecte le langage d'un fichier donné, ou d'une liste de fichiers. Utilise "
+"les attributs d'instance :attr:`language_map` (un dictionnaire) et :attr:"
+"`language_order` (une liste) pour faire le travail."
#: ../Doc/distutils/apiref.rst:502
msgid ""
@@ -857,6 +1024,11 @@ msgid ""
"debugging version (if that makes sense on the current platform). Return "
"``None`` if *lib* wasn't found in any of the specified directories."
msgstr ""
+"Recherche dans la liste des répertoires spécifiés un fichier de bibliothèque "
+"statique ou partagée *lib* et renvoie le chemin complet vers ce fichier. Si "
+"*debug* est vrai, recherche une version de débogage (si cela a du sens sur "
+"la plate-forme actuelle). Renvoie ``None`` si *lib* n'a pas été trouvé dans "
+"l'un des répertoires spécifiés."
#: ../Doc/distutils/apiref.rst:510
msgid ""
@@ -865,24 +1037,35 @@ msgid ""
"environment by providing additional include files and paths and libraries "
"and paths."
msgstr ""
+"Renvoie un booléen indiquant si *funcname* est pris en charge sur la plate-"
+"forme courante. Les arguments optionnels peuvent être utilisés pour "
+"enrichir l'environnement de compilation en fournissant des fichiers, des "
+"répertoires de fichiers, des bibliothèques, des répertoires de bibliothèques "
+"supplémentaires"
#: ../Doc/distutils/apiref.rst:518
msgid ""
"Return the compiler option to add *dir* to the list of directories searched "
"for libraries."
msgstr ""
+"Renvoie l'option de compilation pour ajouter *dir* à la liste des "
+"répertoires recherchés pour les bibliothèques."
#: ../Doc/distutils/apiref.rst:524
msgid ""
"Return the compiler option to add *lib* to the list of libraries linked into "
"the shared library or executable."
msgstr ""
+"Renvoie l'option de compilation pour ajouter *lib* à la liste des "
+"bibliothèques liées à la bibliothèque partagée ou à l'exécutable."
#: ../Doc/distutils/apiref.rst:530
msgid ""
"Return the compiler option to add *dir* to the list of directories searched "
"for runtime libraries."
msgstr ""
+"Renvoie l'option de compilation pour ajouter *dir* à la liste des "
+"répertoires recherchés par les bibliothèques d'exécution."
#: ../Doc/distutils/apiref.rst:536
msgid ""
@@ -891,6 +1074,11 @@ msgid ""
"specified here depends on the compiler class (via the 'executables' class "
"attribute), but most will have:"
msgstr ""
+"Définit les exécutables (et leurs options) qui seront exécutés pour "
+"effectuer les différentes étapes de compilation. L'ensemble exact des "
+"exécutables qui peuvent être spécifiés ici dépend de la classe du "
+"compilateur (via l'attribut de classe *executables*), mais la plupart "
+"utilisent :"
#: ../Doc/distutils/apiref.rst:542
msgid "attribute"
@@ -898,35 +1086,37 @@ msgstr "attribut"
#: ../Doc/distutils/apiref.rst:544
msgid "*compiler*"
-msgstr ""
+msgstr "*compiler*"
#: ../Doc/distutils/apiref.rst:544
msgid "the C/C++ compiler"
-msgstr ""
+msgstr "Le compilateur C/C++."
#: ../Doc/distutils/apiref.rst:546
msgid "*linker_so*"
-msgstr ""
+msgstr "*linker_so*"
#: ../Doc/distutils/apiref.rst:546
msgid "linker used to create shared objects and libraries"
msgstr ""
+"L'éditeur de liens utilisé pour la création d'objets ou de bibliothèques "
+"partagées."
#: ../Doc/distutils/apiref.rst:549
msgid "*linker_exe*"
-msgstr ""
+msgstr "*linker_exe*"
#: ../Doc/distutils/apiref.rst:549
msgid "linker used to create binary executables"
-msgstr ""
+msgstr "L'éditeur de lien utilisé pour créer des exécutables binaires."
#: ../Doc/distutils/apiref.rst:551
msgid "*archiver*"
-msgstr ""
+msgstr "*archiver*"
#: ../Doc/distutils/apiref.rst:551
msgid "static library creator"
-msgstr ""
+msgstr "Créateur de bibliothèque statique."
#: ../Doc/distutils/apiref.rst:554
msgid ""
@@ -940,8 +1130,8 @@ msgstr ""
"Windows), chacun de ces éléments est une chaîne qui sera fractionnée en un "
"nom exécutable et, éventuellement, une liste d'arguments. Le fractionnement "
"de la chaîne est réalisée selon la même procédure que celle appliquée par "
-"les shells Unix : les mots sont délimités par des espaces, mais les "
-"guillemets et les backslashs permettent de les ignorer. Voir :func:"
+"les *shells* Unix : les mots sont délimités par des espaces, mais les "
+"guillemets et les antislashs permettent de les ignorer. Voir :func:"
"`distutils.util.split_quoted`."
#: ../Doc/distutils/apiref.rst:560
@@ -967,14 +1157,13 @@ msgid ""
"Depending on the implementation, not all source files will necessarily be "
"compiled, but all corresponding object filenames will be returned."
msgstr ""
-"*sources* doit être une liste de noms de fichiers. Généralement, ce sont des "
-"fichiers C/C++, mais ce peut être n'importe quoi qui peut être géré par un "
-"compilateur et une classe de compilateur en particulier (par exemple, :class:"
-"`MSVCCompiler` peut gérer les fichiers de ressources dans *sources*). "
-"Renvoie une liste de noms de fichiers objet : un objet par nom de fichier "
-"dans *sources*. Selon les cas, tous les fichiers source ne seront pas "
-"forcément compilés, mais tous les noms de fichiers objet correspondants "
-"seront revoyés."
+"*sources* doit être une liste de noms de fichiers, généralement des fichiers "
+"C/C++, mais elle pourrait contenir n'importe quel fichier géré par un "
+"compilateur et une classe de compilateur (par exemple, :class:`MSVCCompiler` "
+"peut gérer les fichiers de ressources dans *sources*). Renvoie une liste de "
+"noms de fichiers objet : un objet par nom de fichier dans *sources*. Selon "
+"les cas, tous les fichiers source ne seront pas forcément compilés, mais "
+"tous les noms de fichiers objet correspondants seront renvoyés."
#: ../Doc/distutils/apiref.rst:575
msgid ""
@@ -983,6 +1172,11 @@ msgid ""
"to :file:`foo/bar.o` (for a Unix implementation); if *output_dir* is "
"*build*, then it would compile to :file:`build/foo/bar.o`."
msgstr ""
+"Si *output_dir* est donné, les fichiers objets seront placés à l'intérieur, "
+"tout en conservant leurs chemins relatifs. Par exemple, le :file:`truc/"
+"machin.c` compile normalement en :file:`truc/machin.o` (pour une "
+"implémentation Unix) ; si *output_dir* a la valeur *build*, alors il "
+"compilera en :file:`build/truc/machin.o`."
#: ../Doc/distutils/apiref.rst:580
msgid ""
@@ -992,18 +1186,30 @@ msgid ""
"explicit value. The 1-tuple case undefines a macro. Later definitions/"
"redefinitions/undefinitions take precedence."
msgstr ""
+"Le paramètre *macros*, s'il est donné, doit être une liste de définitions de "
+"macros. Une définition de macro est soit un couple ``(nom, valeur)``, ou un "
+"singleton ``(nom,)``. Le premier définit une macro ; si la valeur est "
+"``None``, la macro est définie sans valeur explicite. L'utilisation d'un "
+"singleton désactive la macro. Les définitions, redéfinitions ou "
+"désactivations ultérieures priment."
#: ../Doc/distutils/apiref.rst:586
msgid ""
"*include_dirs*, if given, must be a list of strings, the directories to add "
"to the default include file search path for this compilation only."
msgstr ""
+"*include_dirs* doit être une liste de chaînes de caractères contenant les "
+"répertoires à ajouter au chemin de recherche par défaut pour cette "
+"compilation uniquement."
#: ../Doc/distutils/apiref.rst:589
msgid ""
"*debug* is a boolean; if true, the compiler will be instructed to output "
"debug symbols in (or alongside) the object file(s)."
msgstr ""
+"*debug* est un booléen ; si sa valeur est *vraie*, le compilateur est chargé "
+"d'afficher les symboles de débogage dans (ou à côté) du ou des fichiers "
+"objets."
#: ../Doc/distutils/apiref.rst:592
msgid ""
@@ -1015,6 +1221,13 @@ msgid ""
"an escape hatch for those occasions when the abstract compiler framework "
"doesn't cut the mustard."
msgstr ""
+"*extra_preargs* et *extra_postargs* dépendent de l'implémentation. Sur les "
+"plates-formes qui ont une ligne de commande (par exemple Unix, DOS/Windows), "
+"il s'agit très probablement de listes de chaînes de caractères. Ce sont des "
+"arguments supplémentaires à ajouter avant (*preargs*) et après (*postargs*) "
+"la ligne de commande du compilateur. Sur d'autres plates-formes, consultez "
+"la documentation de la classe d'implémentation. Ces paramètres sont exposés "
+"pour permettre de sortir du cadre de la classe abstraite en cas de nécessité."
#: ../Doc/distutils/apiref.rst:599
msgid ""
@@ -1023,10 +1236,14 @@ msgid ""
"be recompiled. This supports dependency tracking, but only at a coarse "
"granularity."
msgstr ""
+"*depends* est une liste de noms de fichiers dont dépendent toutes les "
+"cibles. Si un fichier source est plus ancien qu'un fichier dans *depends*, "
+"alors le fichier source sera recompilé. Cela permet un suivi des "
+"dépendances à un niveau macro. "
#: ../Doc/distutils/apiref.rst:604
msgid "Raises :exc:`CompileError` on failure."
-msgstr ""
+msgstr "Lève :exc:`CompileError` en cas d'échec."
#: ../Doc/distutils/apiref.rst:609
msgid ""
@@ -1036,6 +1253,12 @@ msgid ""
"`set_link_objects`, the libraries supplied to :meth:`add_library` and/or :"
"meth:`set_libraries`, and the libraries supplied as *libraries* (if any)."
msgstr ""
+"Relie un ensemble d'éléments pour créer un fichier de bibliothèque statique. "
+"L'ensemble d'éléments se compose de la liste des fichiers d'objets fournis "
+"comme *objets*, des fichiers d'objets supplémentaires fournis à :meth:"
+"`add_link_object` et/ou :meth:`set_link_objects`, des bibliothèques fournies "
+"à :meth:`add_library` et/ou :meth:`set_libraries` et les bibliothèques "
+"fournies à *libraries* (le cas échéant)."
#: ../Doc/distutils/apiref.rst:615
msgid ""
@@ -1043,6 +1266,9 @@ msgid ""
"be inferred from the library name. *output_dir* is the directory where the "
"library file will be put."
msgstr ""
+"*output_libname* doit être un nom de bibliothèque et non un nom de fichier ; "
+"le nom de fichier sera déduit du nom de bibliothèque. *output_dir* est le "
+"répertoire dans lequel le fichier bibliothèque sera placé."
#: ../Doc/distutils/apiref.rst:621
msgid ""
@@ -1050,22 +1276,31 @@ msgid ""
"library (note that on most platforms, it is the compile step where this "
"matters: the *debug* flag is included here just for consistency)."
msgstr ""
+"*debug* est un booléen ; si sa valeur est *vraie*, les informations de "
+"débogage seront incluses dans la bibliothèque (notez que sur la plupart des "
+"plateformes, c'est à l'étape de compilation que ce paramètre est pris en "
+"compte : le paramètre *debug* est inclus ici pour assurer une cohérence)."
#: ../Doc/distutils/apiref.rst:625 ../Doc/distutils/apiref.rst:667
msgid ""
"*target_lang* is the target language for which the given objects are being "
"compiled. This allows specific linkage time treatment of certain languages."
msgstr ""
+"*target_lang* est le langage cible pour lequel les objets donnés sont "
+"compilés. Cela permet un traitement spécifique du temps de liaison dans "
+"certains langages."
#: ../Doc/distutils/apiref.rst:628
msgid "Raises :exc:`LibError` on failure."
-msgstr ""
+msgstr "Lève :exc:`LibError` en cas d'échec."
#: ../Doc/distutils/apiref.rst:633
msgid ""
"Link a bunch of stuff together to create an executable or shared library "
"file."
msgstr ""
+"Relie un ensemble d'éléments pour créer un fichier exécutable ou une "
+"bibliothèque partagée."
#: ../Doc/distutils/apiref.rst:635
msgid ""
@@ -1074,6 +1309,10 @@ msgid ""
"supplied, *output_filename* is relative to it (i.e. *output_filename* can "
"provide directory components if needed)."
msgstr ""
+"L'ensemble d'éléments se compose de la liste des fichiers objets fournis "
+"comme *objets*. *output_filename* devrait être un nom de fichier. Si "
+"*output_dir* est fourni, *output_filename* lui est relatif (c'est-à-dire que "
+"*output_filename* peut être un chemin vers un fichier )."
#: ../Doc/distutils/apiref.rst:640
msgid ""
@@ -1084,6 +1323,13 @@ msgid ""
"means the linker will look in that specific directory rather than searching "
"all the normal locations."
msgstr ""
+"*libraries* est une liste de bibliothèques avec lesquelles il est possible "
+"d'établir des liens. Ce sont des noms de bibliothèques, pas des noms de "
+"fichiers, puisqu'ils sont traduits en noms de fichiers d'une manière "
+"spécifique à la plate-forme (par exemple *truc* devient :file:`libtruc.a` "
+"sous Unix et :file:`truc.lib` sous DOS/Windows). Cependant, ils peuvent "
+"inclure un chemin, ce qui signifie que l'éditeur de liens cherchera dans ce "
+"chemin spécifique plutôt que de rechercher tous les emplacements standard."
#: ../Doc/distutils/apiref.rst:647
msgid ""
@@ -1095,12 +1341,23 @@ msgid ""
"the shared library and used to search for other shared libraries that \\*it"
"\\* depends on at run-time. (This may only be relevant on Unix.)"
msgstr ""
+"*library_dirs*, s'il est fourni, doit être une liste de répertoires à "
+"rechercher pour les bibliothèques qui ont été spécifiées comme des "
+"bibliothèques pures (c'est-à-dire sans aucun répertoire). Celles-ci "
+"s'ajoutent aux valeurs par défaut du système et à celles fournies à :meth:"
+"`add_library_dir` et/ou :meth:`set_library_dirs`. *runtime_library_dirs* "
+"est une liste de répertoires qui seront intégrés dans la bibliothèque "
+"partagée et utilisés pour rechercher d'autres bibliothèques partagées dont "
+"elle dépend à l'exécution. (Ceci est probablement valable uniquement sous "
+"UNIX.)"
#: ../Doc/distutils/apiref.rst:655
msgid ""
"*export_symbols* is a list of symbols that the shared library will export. "
"(This appears to be relevant only on Windows.)"
msgstr ""
+"*export_symbols* est une liste de symboles que la bibliothèque partagée va "
+"exporter. (Ceci est probablement valable uniquement sous Window.)"
#: ../Doc/distutils/apiref.rst:658
msgid ""
@@ -1109,6 +1366,10 @@ msgid ""
"to :meth:`create_static_lib`, which includes a *debug* flag mostly for "
"form's sake)."
msgstr ""
+"*debug* s'utilise comme pour :meth:`compile` et :meth:`create_static_lib`, "
+"avec la nuance qu'elle a ici une importance sur la plupart des plateformes "
+"(par opposition à :meth:`create_static_lib` qui inclut une option *debug* "
+"pour se conformer à l'interface)."
#: ../Doc/distutils/apiref.rst:663
msgid ""
@@ -1116,10 +1377,13 @@ msgid ""
"course that they supply command-line arguments for the particular linker "
"being used)."
msgstr ""
+"*extra_preargs* et *extra_postargs* s'utilisent comme pour :meth:`compile` "
+"(sauf bien sûr qu'ils fournissent des arguments à la ligne de commande pour "
+"l'éditeur de liens spécifique utilisé)."
#: ../Doc/distutils/apiref.rst:670
msgid "Raises :exc:`LinkError` on failure."
-msgstr ""
+msgstr "Lève :exc:`LinkError` en cas d'échec."
#: ../Doc/distutils/apiref.rst:675
msgid ""
@@ -1127,6 +1391,9 @@ msgid ""
"while *objects* are a list of object filenames to link in. Other arguments "
"are as for the :meth:`link` method."
msgstr ""
+"Lie un exécutable. *output_progname* est le nom de l'exécutable du fichier, "
+"tandis que *objects* est une liste de noms de fichiers objets à lier. Les "
+"autres arguments sont les mêmes que pour la méthode :meth:`link`."
#: ../Doc/distutils/apiref.rst:682
msgid ""
@@ -1134,6 +1401,10 @@ msgid ""
"while *objects* is a list of object filenames to link in. Other arguments "
"are as for the :meth:`link` method."
msgstr ""
+"Lie une bibliothèque partagée. *output_libname* est le nom de la "
+"bibliothèque de sortie, tandis que *objects* est une liste de noms de "
+"fichiers d'objets à lier. Les autres arguments sont les mêmes que pour la "
+"méthode :meth:`link`."
#: ../Doc/distutils/apiref.rst:689
msgid ""
@@ -1141,6 +1412,9 @@ msgid ""
"that will be created, while *objects* is a list of object filenames to link "
"in. Other arguments are as for the :meth:`link` method."
msgstr ""
+"Lie un objet partagé. *output_filename* est le nom de l'objet partagé qui "
+"sera créé, tandis que *objects* est une liste de noms de fichiers d'objets à "
+"lier. Les autres arguments sont les mêmes que pour la méthode :meth:`link`."
#: ../Doc/distutils/apiref.rst:696
msgid ""
@@ -1151,16 +1425,25 @@ msgid ""
"`undefine_macro`. *include_dirs* is a list of directory names that will be "
"added to the default list, in the same way as :meth:`add_include_dir`."
msgstr ""
+"Prétraitement d'un seul fichier source C/C++, désigné dans *source*. La "
+"sortie du traitement est écrite dans un fichier nommé *output_file*, ou dans "
+"*stdout* si *output_file* n'est pas fourni. *macros* est une liste de "
+"définitions de macros comme pour :meth:`compile`, qui vont s'ajouter aux "
+"macros définies avec :meth:`define_macro` et :meth:`undefine_macro`. "
+"*include_dirs* est une liste de noms de répertoires qui seront ajoutés à la "
+"liste par défaut, de la même manière que :meth:`add_include_dir`."
#: ../Doc/distutils/apiref.rst:703
msgid "Raises :exc:`PreprocessError` on failure."
-msgstr ""
+msgstr "Lève :exc:`PreprocessError` en cas d'échec."
#: ../Doc/distutils/apiref.rst:705
msgid ""
"The following utility methods are defined by the :class:`CCompiler` class, "
"for use by the various concrete subclasses."
msgstr ""
+"Les méthodes utilitaires suivantes sont définies par la classe :class:"
+"`CCompiler`, à l'usage des différentes sous-classes concrètes."
#: ../Doc/distutils/apiref.rst:711
msgid ""
@@ -1168,6 +1451,9 @@ msgid ""
"for non-Windows platforms this is the same as the basename, while Windows "
"will get a :file:`.exe` added."
msgstr ""
+"Renvoie le nom de fichier de l'exécutable pour un *nom de base* donné. "
+"Généralement, pour les plates-formes non Windows, c'est le même nom que le "
+"nom de base, tandis que sur Windows l'extension :file:`.exe` sera ajouté."
#: ../Doc/distutils/apiref.rst:718
msgid ""
@@ -1176,17 +1462,24 @@ msgid ""
"form :file:`liblibname.a`, while a *lib_type* of ``'dynamic'`` will be of "
"the form :file:`liblibname.so`."
msgstr ""
+"Renvoie le nom de fichier pour le nom de bibliothèque donné sur la plate-"
+"forme actuelle. Sous Unix, une bibliothèque avec un *lib_type* de type "
+"``static`` sera généralement de la forme :file:`liblibname.a`, tandis qu'un "
+"*lib_type* de type ``dynamic`` sera de la forme :file:`liblibname.so`."
#: ../Doc/distutils/apiref.rst:726
msgid ""
"Returns the name of the object files for the given source files. "
"*source_filenames* should be a list of filenames."
msgstr ""
+"Renvoie le nom des fichiers objets pour les fichiers sources donnés. "
+"*source_filenames* doit être une liste de noms de fichiers."
#: ../Doc/distutils/apiref.rst:732
msgid ""
"Returns the name of a shared object file for the given file name *basename*."
msgstr ""
+"Renvoie le nom d'un fichier objet partagé pour le nom de fichier *basename*."
#: ../Doc/distutils/apiref.rst:737
msgid ""
@@ -1194,86 +1487,109 @@ msgid ""
"function *func* with the given arguments *args*, after logging and taking "
"into account the *dry_run* flag."
msgstr ""
+"Invoque :func:`distutils.util.execute`. Cette méthode invoque une fonction "
+"Python *func* avec les arguments *args* , après journalisation et prise en "
+"compte de l'option *dry_run*."
#: ../Doc/distutils/apiref.rst:744
msgid ""
"Invokes :func:`distutils.util.spawn`. This invokes an external process to "
"run the given command."
msgstr ""
+"Invoque :func:`distutils.util.spawn`. Invoque un processus externe pour "
+"exécuter la commande donnée."
#: ../Doc/distutils/apiref.rst:750
msgid ""
"Invokes :func:`distutils.dir_util.mkpath`. This creates a directory and any "
"missing ancestor directories."
msgstr ""
+"Invoque :func:`distutils.dir_util.mkpath`. Crée un répertoire et tous les "
+"répertoires parents manquants."
#: ../Doc/distutils/apiref.rst:756
msgid "Invokes :meth:`distutils.file_util.move_file`. Renames *src* to *dst*."
-msgstr ""
+msgstr "Invoque :meth:`distutils.file_util.move_file`. Renomme *src* en *dst*."
#: ../Doc/distutils/apiref.rst:761
msgid "Write a message using :func:`distutils.log.debug`."
-msgstr ""
+msgstr "Écrit un message en utilisant :func:`distutils.log.debug`."
#: ../Doc/distutils/apiref.rst:766
msgid "Write a warning message *msg* to standard error."
msgstr ""
+"Écris un message d'avertissement *msg* dans la sortie d'erreur standard."
#: ../Doc/distutils/apiref.rst:771
msgid ""
"If the *debug* flag is set on this :class:`CCompiler` instance, print *msg* "
"to standard output, otherwise do nothing."
msgstr ""
+"Si l'option *debug* est activée pour cette instance de :class:`CCompiler`, "
+"affiche *msg* sur la sortie standard, sinon rien ne s'affiche."
#: ../Doc/distutils/apiref.rst:783
msgid ":mod:`distutils.unixccompiler` --- Unix C Compiler"
-msgstr ""
+msgstr ":mod:`distutils.unixccompiler` — Compilateur C Unix"
#: ../Doc/distutils/apiref.rst:789
msgid ""
"This module provides the :class:`UnixCCompiler` class, a subclass of :class:"
"`CCompiler` that handles the typical Unix-style command-line C compiler:"
msgstr ""
+"Ce module fournit la classe :class:`UnixCCompiler`, une sous-classe de la "
+"classe :class:`CCompiler` qui gère les compilateurs C ayant une interface en "
+"ligne de commande conforme au standard Unix :"
#: ../Doc/distutils/apiref.rst:792
msgid "macros defined with :option:`!-Dname[=value]`"
-msgstr ""
+msgstr "macros définies avec l'option :option:`!-Dname[=value]`."
#: ../Doc/distutils/apiref.rst:794
msgid "macros undefined with :option:`!-Uname`"
-msgstr ""
+msgstr "macros désaffectées avec :option:`!-Uname`."
#: ../Doc/distutils/apiref.rst:796
msgid "include search directories specified with :option:`!-Idir`"
msgstr ""
+"inclut les répertoires de recherche spécifiés avec l'option :option:`!-Idir`."
#: ../Doc/distutils/apiref.rst:798
msgid "libraries specified with :option:`!-llib`"
-msgstr ""
+msgstr "bibliothèques spécifiées avec l'option :option:`!-llib`"
#: ../Doc/distutils/apiref.rst:800
msgid "library search directories specified with :option:`!-Ldir`"
msgstr ""
+"répertoires de recherche des bibliothèques définis avec l'option :option:`!-"
+"Ldir`."
#: ../Doc/distutils/apiref.rst:802
msgid ""
"compile handled by :program:`cc` (or similar) executable with :option:`!-c` "
"option: compiles :file:`.c` to :file:`.o`"
msgstr ""
+"compilation gérée par :program:`cc` (ou similaire) exécutable avec l'option :"
+"option:`!-c` compile :file:`.c` vers :file:`.o`."
#: ../Doc/distutils/apiref.rst:805
msgid ""
"link static library handled by :program:`ar` command (possibly with :program:"
"`ranlib`)"
msgstr ""
+"édition de liens pour une bibliothèque statique gérée par le programme en "
+"ligne de commande :program:`ar` (éventuellement avec le programme :program:"
+"`ranlib`)."
#: ../Doc/distutils/apiref.rst:808
msgid "link shared library handled by :program:`cc` :option:`!-shared`"
msgstr ""
+"édition de liens pour une bibliothèque gérée par :program:`cc` :option:`!-"
+"shared`."
#: ../Doc/distutils/apiref.rst:812
msgid ":mod:`distutils.msvccompiler` --- Microsoft Compiler"
-msgstr ""
+msgstr ":mod:`distutils.msvccompiler` — Compilateur Microsoft"
#: ../Doc/distutils/apiref.rst:818
msgid ""
@@ -1295,20 +1611,31 @@ msgid ""
"installed; *DISTUTILS_USE_SDK* indicates that the distutils user has made an "
"explicit choice to override the compiler selection by :class:`MSVCCompiler`."
msgstr ""
+"La classe :class:`MSVCCompiler` sélectionnera normalement le bon "
+"compilateur, éditeur de liens, etc. Pour remplacer ces choix, les variables "
+"d'environnement *DISTUTILS_USE_SDK* et *MSSdk* doivent être toutes les deux "
+"définies. *MSSdk* indique que l'environnement courant a été configuré par le "
+"script ``SetEnv.Cmd`` du kit de développement logiciel (*SDK*), ou que les "
+"variables d'environnement ont été enregistrées lorsque le kit a été "
+"installé ; *DISTUTILS_USE_SDK* indique que l'utilisateur de *distutils* a "
+"choisi explicitement de remplacer le compilateur utilisé par :class:"
+"`MSVCCompiler`."
#: ../Doc/distutils/apiref.rst:835
msgid ":mod:`distutils.bcppcompiler` --- Borland Compiler"
-msgstr ""
+msgstr ":mod:`distutils.bcppcompiler` — Compilateur Borland"
#: ../Doc/distutils/apiref.rst:840
msgid ""
"This module provides :class:`BorlandCCompiler`, a subclass of the abstract :"
"class:`CCompiler` class for the Borland C++ compiler."
msgstr ""
+"Ce module fournit :class:`BorlandCCompiler`, une sous-classe de la classe "
+"abstraite :class:`CCompiler` classe pour le compilateur Borland C++."
#: ../Doc/distutils/apiref.rst:845
msgid ":mod:`distutils.cygwincompiler` --- Cygwin Compiler"
-msgstr ""
+msgstr ":mod:`distutils.cygwincompiler` — Compilateur Cygwin"
#: ../Doc/distutils/apiref.rst:850
msgid ""
@@ -1317,16 +1644,22 @@ msgid ""
"Windows. It also contains the Mingw32CCompiler class which handles the "
"mingw32 port of GCC (same as cygwin in no-cygwin mode)."
msgstr ""
+"Ce module fournit la classe :class:`CygwinCCompiler`, une sous-classe de la "
+"classe :class:`UnixCCompiler` qui gère *Cygwin*, le portage du compilateur "
+"GNU C sur Windows. Il contient également la classe Mingw32CCompiler qui "
+"gère le portage *mingw32* de GCC (comme *cygwin* en mode *no-cygwin*)."
#: ../Doc/distutils/apiref.rst:857
msgid ":mod:`distutils.archive_util` --- Archiving utilities"
-msgstr ""
+msgstr ":mod:`distutils.archive_util` — Utilitaires d'archivage"
#: ../Doc/distutils/apiref.rst:863
msgid ""
"This module provides a few functions for creating archive files, such as "
"tarballs or zipfiles."
msgstr ""
+"Ce module fournit quelques fonctions pour créer des fichiers d'archive, tels "
+"que des archives aux formats *tarballs* ou *zipfiles*."
#: ../Doc/distutils/apiref.rst:869
msgid ""
@@ -1340,10 +1673,20 @@ msgid ""
"archive. *root_dir* and *base_dir* both default to the current directory. "
"Returns the name of the archive file."
msgstr ""
+"Crée un fichier d'archive (par exemple ``zip`` ou ``tar``). *base_name* est "
+"le nom du fichier à créer, sans extension spécifique indiquant le format. "
+"*format* est le format d'archive : un parmi ``zip``, ``tar``, ``gztar``, "
+"``bztar``, ``xztar``, ``xztar``, ou ``ztar``. *root_dir* est un répertoire "
+"qui sera le répertoire racine de l'archive ; c'est-à-dire que le programme "
+"se positionne dans *root_dir* avant de créer l'archive. *base_dir* est le "
+"répertoire à partir duquel se lance l'archivage ; par exemple, *base_dir* "
+"est le préfixe commun à tous les fichiers et répertoires de l'archive. "
+"*root_dir* et *base_dir* sont tous deux par défaut dans le répertoire "
+"courant. Renvoie le nom du fichier archive."
#: ../Doc/distutils/apiref.rst:879
msgid "Added support for the ``xztar`` format."
-msgstr "Ajout du support des fichiers ``xztar``"
+msgstr "Ajout du support des fichiers ``xztar``."
#: ../Doc/distutils/apiref.rst:885
msgid ""
@@ -1356,10 +1699,18 @@ msgid ""
"compression extension (``.gz``, ``.bz2``, ``.xz`` or ``.Z``). Return the "
"output filename."
msgstr ""
+"Crée une archive (compressée en option) sous forme de fichier au format "
+"*tar* à partir de tous les fichiers dans et sous *base_dir*. *compress* doit "
+"être ``'gzip'`` (par défaut), ``'bzip2'``, ``'xz'``, ``'compress'`` ou "
+"``None``. Pour la méthode ``'compress'`` l'utilitaire de compression nommé "
+"par :program:`compress` doit être sur le chemin de recherche par défaut, "
+"donc c'est sans doute spécifique à Unix. Le fichier *tar* de sortie sera "
+"nommé :file:`base_dir.tar`, avec l'extension de compression appropriée (``."
+"gz``, ``.bz2``, ``.xz`` ou ``.Z``). Renvoie le nom du fichier de sortie."
#: ../Doc/distutils/apiref.rst:894
msgid "Added support for the ``xz`` compression."
-msgstr ""
+msgstr "Ajout du support de la compression ``xz``."
#: ../Doc/distutils/apiref.rst:900
msgid ""
@@ -1370,10 +1721,16 @@ msgid ""
"available, raises :exc:`DistutilsExecError`. Returns the name of the "
"output zip file."
msgstr ""
+"Crée un fichier zip à partir de tous les fichiers dans et sous *base_dir*. "
+"Le fichier zip de sortie est nommé *base_name* + :file:`.zip`. Utilise soit "
+"le module Python :mod:`zipfile` (si disponible) ou l'utilitaire InfoZIP :"
+"file:`zip` (s'il est installé et trouvé sur le chemin de recherche par "
+"défaut). Si aucun des deux outils n'est disponible, lève :exc:"
+"`DistutilsExecError`. Renvoie le nom du fichier zip de sortie."
#: ../Doc/distutils/apiref.rst:908
msgid ":mod:`distutils.dep_util` --- Dependency checking"
-msgstr ""
+msgstr ":mod:`distutils.dep_util` — Vérification des dépendances"
#: ../Doc/distutils/apiref.rst:914
msgid ""
@@ -1381,6 +1738,10 @@ msgid ""
"dependency of files and groups of files; also, functions based entirely on "
"such timestamp dependency analysis."
msgstr ""
+"Ce module fournit des fonctions permettant d'effectuer des tests de "
+"dépendance simples, basés sur les horodatages de fichiers et de groupes de "
+"fichiers, ainsi que des fonctionnalités entièrement basées sur ces analyses "
+"de dépendance par rapport aux horodatages."
#: ../Doc/distutils/apiref.rst:921
msgid ""
@@ -1389,6 +1750,10 @@ msgid ""
"*target* is the same age or newer than *source*. Raise :exc:"
"`DistutilsFileError` if *source* does not exist."
msgstr ""
+"Renvoie la valeur *true* si *source* existe et a été modifiée plus récemment "
+"que *target*, ou si *source* existe et *target* n'existe pas. Renvoie la "
+"valeur *false* si les deux existent et que *target* est aussi ou plus récent "
+"que *source*. Lève :exc:`DistutilsFileError` si *source* n'existe pas."
#: ../Doc/distutils/apiref.rst:929
msgid ""
@@ -1397,6 +1762,10 @@ msgid ""
"where source is newer than target, according to the semantics of :func:"
"`newer`."
msgstr ""
+"Parcourt en parallèle deux listes de noms de fichiers, en vérifiant si "
+"chaque source est plus récente que sa cible correspondante. Renvoie une "
+"paire de listes (*sources*, *cibles*) où la source est plus récente que la "
+"cible, selon la sémantique de :func:`newer`."
#: ../Doc/distutils/apiref.rst:938
msgid ""
@@ -1415,12 +1784,15 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:951
msgid ":mod:`distutils.dir_util` --- Directory tree operations"
msgstr ""
+":mod:`distutils.dir_util` --- Opérations sur l'arborescence des répertoires"
#: ../Doc/distutils/apiref.rst:957
msgid ""
"This module provides functions for operating on directories and trees of "
"directories."
msgstr ""
+"Ce module fournit des fonctions pour travailler sur des répertoires et des "
+"arborescences de répertoires."
#: ../Doc/distutils/apiref.rst:963
msgid ""
@@ -1432,6 +1804,14 @@ msgid ""
"is true, print a one-line summary of each mkdir to stdout. Return the list "
"of directories actually created."
msgstr ""
+"Crée un répertoire et tous les répertoires parents manquants. Si le "
+"répertoire existe déjà (ou si *name* est la chaîne vide, c'est-à-dire le "
+"répertoire courant, qui existe bien sûr), alors ne fait rien. Lève :exc:"
+"`DistutilsFileError` s'il n'est pas possible de créer un répertoire en cours "
+"de route (par exemple, un sous-chemin existe, mais est un fichier plutôt "
+"qu'un répertoire). Si *verbose* est vrai, affiche un résumé d'une ligne de "
+"chaque *mkdir* vers *stdout*. Renvoie la liste des répertoires réellement "
+"créés."
#: ../Doc/distutils/apiref.rst:974
msgid ""
@@ -1442,6 +1822,12 @@ msgid ""
"be created if it doesn't already exist. *mode*, *verbose* and *dry_run* "
"flags are as for :func:`mkpath`."
msgstr ""
+"Crée tous les répertoires vides sous *base_dir* nécessaires pour placer "
+"*files*. *base_dir* est le nom d'un répertoire qui n'existe pas encore "
+"nécessairement ; *files* est une liste de noms de fichiers relatifs à "
+"*base_dir*. *base_dir* + la partie répertoire de chaque fichier dans *files* "
+"est créée si elle n'existe pas déjà. Les options *mode*, *verbose* et "
+"*dry_run* sont les mêmes que pour :func:`mkpath`."
#: ../Doc/distutils/apiref.rst:984
msgid ""
@@ -1455,6 +1841,17 @@ msgid ""
"it is simply the list of all files under *src*, with the names changed to be "
"under *dst*."
msgstr ""
+"Copie une arborescence de répertoires entière *src* vers un nouvel "
+"emplacement *dst*. *src* et *dst* doivent tous deux être des noms de "
+"répertoire. Si *src* n'est pas un répertoire, lève :exc:"
+"`DistutilsFileError`. Si *dst* n'existe pas, il est créé avec :func:"
+"`mkpath`. Le résultat final de la copie est que chaque fichier dans *src* "
+"est copié dans *dst*, et les répertoires sous *src* sont récursivement "
+"copiés dans *dst*. Renvoie la liste des fichiers qui ont été copiés ou qui "
+"auraient pu l'être, en utilisant leur nom de sortie. La valeur renvoyée "
+"n'est pas affectée par *update* ou *dry_run* : c'est tout simplement la "
+"liste de tous les fichiers sous *src*, avec les noms modifiés pour être sous "
+"*dst*."
#: ../Doc/distutils/apiref.rst:994
msgid ""
@@ -1465,6 +1862,13 @@ msgid ""
"destination of the symlink will be copied. *update* and *verbose* are the "
"same as for :func:`copy_file`."
msgstr ""
+"Les modes *preserve_mode* et *preserve_times* sont les mêmes que pour :func:"
+"`distutils.file_util.copy_file` ; il faut savoir que cela ne concerne que "
+"les fichiers réguliers, et non les dossiers. Si *preserve_symlinks* est "
+"vrai, les liens symboliques seront copiés en tant que liens symboliques (sur "
+"les plateformes qui les gèrent !); sinon (par défaut), la destination du "
+"lien sera copiée. *update* et *verbose* sont les mêmes que pour :func:"
+"`copy_file`."
#: ../Doc/distutils/apiref.rst:1002
msgid ""
@@ -1472,10 +1876,13 @@ msgid ""
"these files is available in answer D2 of the `NFS FAQ page `_)."
msgstr ""
+"Les fichiers dans *src* qui commencent par :file:`.nfs` sont ignorés (plus "
+"d'informations sur ces fichiers sont disponibles dans la réponse *D2* de la "
+"page `NFS FAQ page `_)."
#: ../Doc/distutils/apiref.rst:1006
msgid "NFS files are ignored."
-msgstr ""
+msgstr "Les fichiers NFS sont ignorés."
#: ../Doc/distutils/apiref.rst:1011
msgid ""
@@ -1483,16 +1890,21 @@ msgid ""
"Any errors are ignored (apart from being reported to ``sys.stdout`` if "
"*verbose* is true)."
msgstr ""
+"Supprime récursivement *directory* et tous les fichiers et répertoires en "
+"dessous. Toutes les erreurs sont ignorées (sauf si *verbose* est vrai, elles "
+"sont affichées sur ``sys.stdout``)."
#: ../Doc/distutils/apiref.rst:1017
msgid ":mod:`distutils.file_util` --- Single file operations"
-msgstr ""
+msgstr ":mod:`distutils.file_util` — Traitements mono-fichier"
#: ../Doc/distutils/apiref.rst:1023
msgid ""
"This module contains some utility functions for operating on individual "
"files."
msgstr ""
+"Ce module contient quelques fonctions de service pour travailler sur des "
+"fichiers individuels."
#: ../Doc/distutils/apiref.rst:1028
msgid ""
@@ -1505,6 +1917,14 @@ msgid ""
"If *update* is true, *src* will only be copied if *dst* does not exist, or "
"if *dst* does exist but is older than *src*."
msgstr ""
+"Copie le fichier *src* dans *dst*. Si *dst* est un répertoire, alors *src* y "
+"est copié avec le même nom ; sinon, il faut que ce soit un nom de fichier. "
+"Si *preserve_mode* est vrai (par défaut), le mode du fichier (son type et "
+"ses bits de permission, ou ce qui est analogue sur la plate-forme actuelle) "
+"sont copiés. Si *preserve_times* est vrai (par défaut), les horodatages de "
+"la dernière modification et du dernier accès sont également copiés. Si "
+"*update* est vrai, *src* ne peut être copié que si *dst* n'existe pas, ou si "
+"*dst* existe mais est plus ancien que *src*."
#: ../Doc/distutils/apiref.rst:1037
msgid ""
@@ -1515,6 +1935,13 @@ msgid ""
"hard or symbolic linking is available. It uses :func:`_copy_file_contents` "
"to copy file contents."
msgstr ""
+"*link* permets de créer des liens physiques (en utilisant :func:`os.link`) "
+"ou symboliques (en utilisant :func:`os.symlink`) au lieu de les copier : "
+"paramétrez la valeur a ``'hard'`` ou ``'sym'`` ; si elle vaut ``None`` (par "
+"défaut), les fichiers sont copiés. Ne définissez pas *link* sur les systèmes "
+"qui ne les gèrent pas : :func:`copy_file` ne vérifie pas si des liens "
+"symboliques ou physiques sont disponibles. La fonction :func:"
+"`_copy_file_contents` est utilisée pour copier le contenu des fichiers."
#: ../Doc/distutils/apiref.rst:1044
msgid ""
@@ -1522,6 +1949,9 @@ msgid ""
"the output file, and *copied* is true if the file was copied (or would have "
"been copied, if *dry_run* true)."
msgstr ""
+"Renvoie un couple ``(dest_name, copied)`` : *dest_name* est le nom réel du "
+"fichier de sortie, et *copied* est vrai si le fichier a été copié (ou aurait "
+"été copié, si *dry_run* est vrai)."
#: ../Doc/distutils/apiref.rst:1058
msgid ""
@@ -1529,28 +1959,37 @@ msgid ""
"into it with the same name; otherwise, *src* is just renamed to *dst*. "
"Returns the new full name of the file."
msgstr ""
+"Déplace le fichier *src* vers *dst*. Si *dst* est un répertoire, le fichier "
+"y est déplacé avec le même nom ; sinon, *src* est simplement renommé *dst*. "
+"Renvoie le nouveau nom complet du fichier."
#: ../Doc/distutils/apiref.rst:1064
msgid ""
"Handles cross-device moves on Unix using :func:`copy_file`. What about "
"other systems?"
msgstr ""
+"Gère les déplacements inter-périphériques sous Unix en utilisant :func:"
+"`copy_file`. Qu'en est-il sur les autres systèmes ?"
#: ../Doc/distutils/apiref.rst:1070
msgid ""
"Create a file called *filename* and write *contents* (a sequence of strings "
"without line terminators) to it."
msgstr ""
+"Crée un fichier appelé *filename* et y écrit *contents* (une séquence de "
+"chaînes sans terminaison de ligne)."
#: ../Doc/distutils/apiref.rst:1075
msgid ":mod:`distutils.util` --- Miscellaneous other utility functions"
-msgstr ""
+msgstr ":mod:`distutils.util` — Autres fonctions de service"
#: ../Doc/distutils/apiref.rst:1081
msgid ""
"This module contains other assorted bits and pieces that don't fit into any "
"other utility module."
msgstr ""
+"Ce module contient d'autres éléments qui ne correspondent à aucun autre "
+"module de service."
#: ../Doc/distutils/apiref.rst:1087
msgid ""
@@ -1565,19 +2004,19 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1095
msgid "Examples of returned values:"
-msgstr ""
+msgstr "Exemples de valeurs renvoyées :"
#: ../Doc/distutils/apiref.rst:1097
msgid "``linux-i586``"
-msgstr ""
+msgstr "``linux-i586``"
#: ../Doc/distutils/apiref.rst:1098
msgid "``linux-alpha``"
-msgstr ""
+msgstr "``linux-alpha``"
#: ../Doc/distutils/apiref.rst:1099
msgid "``solaris-2.6-sun4u``"
-msgstr ""
+msgstr "``solaris-2.6-sun4u``"
#: ../Doc/distutils/apiref.rst:1100
msgid "``irix-5.3``"
@@ -1590,6 +2029,8 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1103
msgid "For non-POSIX platforms, currently just returns ``sys.platform``."
msgstr ""
+"Pour les plates-formes qui ne sont pas POSIX, renvoie simplement ``sys."
+"platform``."
#: ../Doc/distutils/apiref.rst:1105
msgid ""
@@ -1597,6 +2038,10 @@ msgid ""
"binaries will run (that is, the value of ``MACOSX_DEPLOYMENT_TARGET`` during "
"the build of Python), not the OS version of the current system."
msgstr ""
+"Pour les systèmes Mac OS X, la version du système d'exploitation correspond "
+"à la version minimale sur laquelle les binaires pourront être exécutés "
+"(c'est-à-dire la valeur de ``MACOSX_DEPLOYMENT_TARGET`` pendant la "
+"compilation de Python), et non la version du système actuel."
#: ../Doc/distutils/apiref.rst:1109
msgid ""
@@ -1609,26 +2054,35 @@ msgid ""
"build (ppc, i386, x86_64) and ``intel`` is used for a universal build with "
"the i386 and x86_64 architectures"
msgstr ""
+"Pour les binaires universels construits sur Mac OS X, la valeur de "
+"l'architecture reflète l'état du binaire universel au lieu de celle de "
+"l'architecture du processeur en cours. Pour les binaires universels 32 bits, "
+"l'architecture est ``fat``, pour les binaires universels 64 bits, "
+"l'architecture est ``fat64``, et pour les binaires universels 4 voies, "
+"l'architecture est ``universelle``. A partir de Python 2.7 et Python 3.2, "
+"l'architecture ``fat3`` est utilisée pour une compilation universelle à 3 "
+"voies (*ppc*, *i386*, *x86_64*) et ``intel`` est utilisée pour une "
+"compilation universelle avec les architectures *i386* et *x86_64*"
#: ../Doc/distutils/apiref.rst:1118
msgid "Examples of returned values on Mac OS X:"
-msgstr ""
+msgstr "Exemples de valeurs renvoyées sous Mac OS X :"
#: ../Doc/distutils/apiref.rst:1120
msgid "``macosx-10.3-ppc``"
-msgstr ""
+msgstr "``macosx-10.3-ppc``"
#: ../Doc/distutils/apiref.rst:1122
msgid "``macosx-10.3-fat``"
-msgstr ""
+msgstr "``macosx-10.3-fat``"
#: ../Doc/distutils/apiref.rst:1124
msgid "``macosx-10.5-universal``"
-msgstr ""
+msgstr "``macosx-10.5-universal``"
#: ../Doc/distutils/apiref.rst:1126
msgid "``macosx-10.6-intel``"
-msgstr ""
+msgstr "``macosx-10.6-intel``"
#: ../Doc/distutils/apiref.rst:1131
msgid ""
@@ -1639,6 +2093,14 @@ msgid ""
"can actually use them in the filesystem. Raises :exc:`ValueError` on non-"
"Unix-ish systems if *pathname* either starts or ends with a slash."
msgstr ""
+"Renvoie un chemin *pathname* qui fonctionne sur le système de fichiers "
+"natif. Par exemple, il sépare le chemin sur */* et le recompose en utilisant "
+"le séparateur de répertoires courant. Cela est nécessaire parce que les noms "
+"de fichiers dans les scripts d'installations sont toujours fournis dans le "
+"style Unix, et doivent être convertis dans la convention du système avant "
+"d'être utilisé par le système de fichiers. Lève :exc:`ValueError` sur les "
+"systèmes non UNIX si *pathname* commence ou se termine par une barre oblique "
+"(*slash* en anglais)."
#: ../Doc/distutils/apiref.rst:1141
msgid ""
@@ -1647,6 +2109,10 @@ msgid ""
"requires making *pathname* relative and then joining the two, which is "
"tricky on DOS/Windows."
msgstr ""
+"Renvoie un chemin *pathname* préfixé avec *new_root*. Si *pathname* est "
+"relatif, c`est l'équivalent de ``os.path.join(new_root,pathname)`` Sinon, il "
+"faut rendre *pathname* relatif et joindre les deux, ce qui est dangereux "
+"sous DOS/Windows."
#: ../Doc/distutils/apiref.rst:1148
msgid ""
@@ -1654,16 +2120,22 @@ msgid ""
"users can use in config files, command-line options, etc. Currently this "
"includes:"
msgstr ""
+"Vérifie que 'os.environ' possède toutes les variables d'environnement "
+"utilisables dans les fichiers de configuration, les options en ligne de "
+"commande, etc. À l'heure actuelle, cela comprend :"
#: ../Doc/distutils/apiref.rst:1152
msgid ":envvar:`HOME` - user's home directory (Unix only)"
msgstr ""
+":envvar:`HOME`. Répertoire d’accueil de l'utilisateur (Unix uniquement)"
#: ../Doc/distutils/apiref.rst:1153
msgid ""
":envvar:`PLAT` - description of the current platform, including hardware and "
"OS (see :func:`get_platform`)"
msgstr ""
+":envvar:`PLAT`. Description de la plate-forme actuelle, y compris le "
+"matériel et le l'OS (voir :func:`get_platform`)"
#: ../Doc/distutils/apiref.rst:1159
msgid ""
@@ -1675,6 +2147,14 @@ msgid ""
"`check_environ`. Raise :exc:`ValueError` for any variables not found in "
"either *local_vars* or ``os.environ``."
msgstr ""
+"Exécute la substitution de variable de style shell/Perl sur *s*. Chaque "
+"occurrence de ``$`` suivie d'un nom est considérée comme une variable, et la "
+"variable est remplacée par la valeur trouvée dans le dictionnaire "
+"*local_vars*, ou dans ``os.environ`` si elle ne se trouve pas dans "
+"*local_vars*. *os.environ* est d'abord vérifié/étendu pour garantir qu'elle "
+"contient certaines valeurs : voir :func:`check_environ`. Lève :exc:"
+"`ValueError` pour toute variable non trouvée dans *local_vars* ou ``os."
+"environ``."
#: ../Doc/distutils/apiref.rst:1166
msgid ""
@@ -1682,6 +2162,10 @@ msgid ""
"``$variable`` can consist only of upper and lower case letters, numbers and "
"an underscore. No { } or ( ) style quoting is available."
msgstr ""
+"Remarquez qu'il ne s'agit pas d'une fonction d'interpolation de chaîne à "
+"part entière. Une ``$variable`` valide ne peut être composée que de lettres "
+"majuscules et minuscules, de chiffres et d'un tiret bas. Aucune syntaxe de "
+"type {} ou () pour indiquer des variables n'est disponible."
#: ../Doc/distutils/apiref.rst:1173
msgid ""
@@ -1693,6 +2177,16 @@ msgid ""
"leaving only the escaped character. The quote characters are stripped from "
"any quoted string. Returns a list of words."
msgstr ""
+"Sépare une chaîne de caractères selon les règles de type shell Unix pour les "
+"guillemets et les barres obliques inverses. En bref : les mots sont "
+"délimités par des espaces, tant que ces espaces ne sont pas échappées par "
+"une barre oblique inversée, ou à l'intérieur d'une chaîne guillemets. Les "
+"guillemets simples et doubles sont équivalents, et les caractères entre "
+"guillemets peuvent être échappés à l'aide d'une barre oblique inversée. La "
+"barre oblique inversée est supprimée de toute séquence d'échappement à deux "
+"caractères, ne laissant que le caractère échappé. Les caractères guillemets "
+"sont supprimés de toute chaîne de caractères entre guillemets. Renvoie une "
+"liste de mots."
#: ../Doc/distutils/apiref.rst:1186
msgid ""
@@ -1703,10 +2197,18 @@ msgid ""
"it (to embody the \"external action\" being performed), and an optional "
"message to print."
msgstr ""
+"Exécute une action qui affecte le monde extérieur (par exemple, écrire dans "
+"le système de fichiers). De telles actions sont spéciales car elles sont "
+"désactivées par l'option *dry_run*. Cette méthode s'occupe de tout. Vous "
+"devez simplement fournir la fonction à appeler avec un couple d'argument lui "
+"correspondant et un message facultatif à afficher."
#: ../Doc/distutils/apiref.rst:1195
msgid "Convert a string representation of truth to true (1) or false (0)."
msgstr ""
+"Convertit une chaîne de caractères représentant une valeur booléenne en "
+"``1`` (si elle est évaluée comme vraie) ou ``0`` (si elle est évaluée comme "
+"fausse)."
#: ../Doc/distutils/apiref.rst:1197
msgid ""
@@ -1714,6 +2216,9 @@ msgid ""
"values are ``n``, ``no``, ``f``, ``false``, ``off`` and ``0``. Raises :exc:"
"`ValueError` if *val* is anything else."
msgstr ""
+"Les valeurs *vraies* sont , ``y``, ``yes``, ``t``, ``true``, ``on`` et "
+"``1``. Les valeurs *fausses* sont ``n``, ``no``, ``f``, ``false``, ``off`` "
+"et ``0``. Lève :exc:`ValueError` si *val* est autre chose."
#: ../Doc/distutils/apiref.rst:1204
msgid ""
@@ -1722,22 +2227,30 @@ msgid ""
"is a list of files to compile; any files that don't end in :file:`.py` are "
"silently skipped. *optimize* must be one of the following:"
msgstr ""
+"Effectue une compilation vers du *bytecode* Python à partir d'un ensemble de "
+"fichiers sources Python dans un fichier :file:`.pyc` dans un sous "
+"répertoire :file:`__pycache__` (voir :pep:`3147` et :pep:`488`). *py_files* "
+"est une liste de fichiers à compiler ; tous les fichiers qui ne se terminent "
+"pas par :file:`.py` sont ignorés en silence. *optimize* doit être l'un des "
+"éléments suivants :"
#: ../Doc/distutils/apiref.rst:1209
msgid "``0`` - don't optimize"
-msgstr ""
+msgstr "``0``: ne pas optimiser"
#: ../Doc/distutils/apiref.rst:1210
msgid "``1`` - normal optimization (like ``python -O``)"
-msgstr ""
+msgstr "``1``: optimisation normale (comme ``python -O``)"
#: ../Doc/distutils/apiref.rst:1211
msgid "``2`` - extra optimization (like ``python -OO``)"
-msgstr ""
+msgstr "``2``: optimisation supplémentaire (comme ``python -OO``)"
#: ../Doc/distutils/apiref.rst:1213
msgid "If *force* is true, all files are recompiled regardless of timestamps."
msgstr ""
+"Si *force* est vrai, tous les fichiers sont recompilés indépendamment des "
+"horodatages."
#: ../Doc/distutils/apiref.rst:1215
msgid ""
@@ -1748,12 +2261,21 @@ msgid ""
"*prefix* is stripped). You can supply either or both (or neither) of "
"*prefix* and *base_dir*, as you wish."
msgstr ""
+"Le nom du fichier source encodé dans chaque fichier :term:`bytecode` est par "
+"défaut le nom présent dans la liste des noms de fichiers source *py_files* ; "
+"vous pouvez modifier dynamiquement ses noms avec *prefix* et *basedir*. "
+"*prefix* est une chaîne de caractères qui sera supprimée de chaque nom de "
+"fichier source, et *base_dir* est un nom de répertoire qui sera préfixé au "
+"nom (après que le *prefixe* soit supprimé). Vous pouvez choisir de fournir "
+"l'un ou l'autre (ou les deux) paramètres : *prefixe* et *base_dir*."
#: ../Doc/distutils/apiref.rst:1222
msgid ""
"If *dry_run* is true, doesn't actually do anything that would affect the "
"filesystem."
msgstr ""
+"Si *dry_run* est vrai, ne fait rien qui puisse affecter le système de "
+"fichiers."
#: ../Doc/distutils/apiref.rst:1225
msgid ""
@@ -1764,6 +2286,13 @@ msgid ""
"The *direct* flag is used by the script generated in indirect mode; unless "
"you know what you're doing, leave it set to ``None``."
msgstr ""
+"La compilation binaire se fait soit directement dans l'interpréteur courant "
+"avec le module standard :mod:`py_compile`, soit indirectement en écrivant un "
+"script temporaire et en l'exécutant. Normalement, vous devez laisser :func:"
+"`byte_compile` choisir d'utiliser la compilation directe ou non (voir le "
+"code-source pour les détails). Le paramètre *direct* est utilisé par le "
+"script généré en mode indirect ; à moins que vous ne sachiez ce que vous "
+"faites, laissez le paramètre à ``None`` (Aucun)."
#: ../Doc/distutils/apiref.rst:1232
msgid ""
@@ -1771,10 +2300,13 @@ msgid ""
"their name, in a :file:`__pycache__` subdirectory instead of files without "
"tag in the current directory."
msgstr ""
+"Crée des fichiers ``.pyc`` avec un sous-répertoire :func:`import magic tag "
+"` dans leur nom, dans le sous répertoire :file:`__pycache__` "
+"plutôt que dans le répertoire courant, sans tag."
#: ../Doc/distutils/apiref.rst:1237
msgid "Create ``.pyc`` files according to :pep:`488`."
-msgstr ""
+msgstr "Crée des fichiers ``.pyc`` selon la :pep:`488`."
#: ../Doc/distutils/apiref.rst:1243
msgid ""
@@ -1782,38 +2314,47 @@ msgid ""
"by ensuring there are 8 spaces space after each newline. Note that it does "
"no other modification of the string."
msgstr ""
+"Renvoie une version de *header* traitée avec les échappements compatibles "
+"avec les en-têtes :rfc:`822`, en s'assurant qu'il y a 8 espaces après chaque "
+"nouvelle ligne. Notez qu'il ne fait aucune autre modification de la chaîne "
+"de caractères."
#: ../Doc/distutils/apiref.rst:1253
msgid ":mod:`distutils.dist` --- The Distribution class"
-msgstr ""
+msgstr ":mod:`distutils.dist` — La classe Distribution"
#: ../Doc/distutils/apiref.rst:1260
msgid ""
"This module provides the :class:`~distutils.core.Distribution` class, which "
"represents the module distribution being built/installed/distributed."
msgstr ""
+"Ce module fournit la classe :class:`~distutils.core.Distribution`, qui "
+"représente le module *distribution* en cours de construction/installation/"
+"distribution."
#: ../Doc/distutils/apiref.rst:1265
msgid ":mod:`distutils.extension` --- The Extension class"
-msgstr ""
+msgstr ":mod:`distutils.extension` — La classe Extension"
#: ../Doc/distutils/apiref.rst:1272
msgid ""
"This module provides the :class:`Extension` class, used to describe C/C++ "
"extension modules in setup scripts."
msgstr ""
+"Ce module fournit la classe :class:`Extension`, utilisée pour décrire les "
+"modules d'extension C/C++ dans les scripts de configuration."
#: ../Doc/distutils/apiref.rst:1280
msgid ":mod:`distutils.debug` --- Distutils debug mode"
-msgstr ""
+msgstr ":mod:`distutils.debug` — Mode de débogage du module *Distutils*"
#: ../Doc/distutils/apiref.rst:1286
msgid "This module provides the DEBUG flag."
-msgstr ""
+msgstr "Ce module fournit l'option *DEBUG*."
#: ../Doc/distutils/apiref.rst:1290
msgid ":mod:`distutils.errors` --- Distutils exceptions"
-msgstr ""
+msgstr ":mod:`distutils.errors` — Exceptions du module *Distutils*"
#: ../Doc/distutils/apiref.rst:1296
msgid ""
@@ -1822,37 +2363,50 @@ msgid ""
"raised for errors that are obviously the end-user's fault (eg. bad command-"
"line arguments)."
msgstr ""
+"Fournit les exceptions utilisées par les modules de *Distutils*. Notez que "
+"les modules *Distutils* peuvent soulever des exceptions standard ; en "
+"particulier, ``SystemExit`` est généralement levée pour les erreurs qui sont "
+"manifestement de la responsabilité de l'utilisateur final (ex : mauvais "
+"argument en ligne de commande)."
#: ../Doc/distutils/apiref.rst:1300
msgid ""
"This module is safe to use in ``from ... import *`` mode; it only exports "
"symbols whose names start with ``Distutils`` and end with ``Error``."
msgstr ""
+"Ce module est utilisable avec la syntaxe ``from ... import *`` ; il "
+"n'exporte que des symboles dont le nom commence par ``Distutils`` et se "
+"termine par ``Error``."
#: ../Doc/distutils/apiref.rst:1305
msgid ""
":mod:`distutils.fancy_getopt` --- Wrapper around the standard getopt module"
msgstr ""
+":mod:`distutils.fancy_getopt` --- Encapsulation du module *getopt* standard"
#: ../Doc/distutils/apiref.rst:1311
msgid ""
"This module provides a wrapper around the standard :mod:`getopt` module "
"that provides the following additional features:"
msgstr ""
+"Ce module est une encapsulation du module standard :mod:`getopt` qui apporte "
+"les fonctionnalités supplémentaires suivantes :"
#: ../Doc/distutils/apiref.rst:1314
msgid "short and long options are tied together"
-msgstr ""
+msgstr "Les options *short* et *long* sont liées entre elles."
#: ../Doc/distutils/apiref.rst:1316
msgid ""
"options have help strings, so :func:`fancy_getopt` could potentially create "
"a complete usage summary"
msgstr ""
+"Les options ont des pages d'aide, donc :func:`fancy_getopt` pourrait "
+"potentiellement créer un résumé d'utilisation complet"
#: ../Doc/distutils/apiref.rst:1319
msgid "options set attributes of a passed-in object"
-msgstr ""
+msgstr "Les options définissent les attributs à partir d'un objet fourni."
#: ../Doc/distutils/apiref.rst:1321
msgid ""
@@ -1860,6 +2414,9 @@ msgid ""
"is the \"negative alias\" of :option:`!--verbose`, then :option:`!--quiet` "
"on the command line sets *verbose* to false."
msgstr ""
+"Les options booléennes peuvent avoir des \"alias négatifs\" --- par exemple "
+"l'option :option:`!-quiet` est *l'alias négatif* de :option:`!--verbose`, "
+"l'option :option:`!-quiet` sur la ligne de commande met *verbose* à faux."
#: ../Doc/distutils/apiref.rst:1327
msgid ""
@@ -1871,16 +2428,28 @@ msgid ""
"`getopt` method of the :class:`FancyGetopt` class). *args* is the argument "
"list. Will use ``sys.argv[1:]`` if you pass ``None`` as *args*."
msgstr ""
+"Encapsulation de la fonction ``getopt``. *options* est une liste de triplets "
+"``(long_option, short_option, help_string)`` comme décrit dans le "
+"constructeur de la classe :class:`FancyGetopt`. *negative_opt* doit être un "
+"dictionnaire associant les noms des options aux noms des options, la clé et "
+"la valeur doivent être dans la liste *options*. *object* est un objet qui "
+"sera utilisé pour stocker des valeurs (voir la méthode :meth:`getopt` de la "
+"classe :class:`FancyGetopt`). *args* est la liste des arguments. Utilise "
+"``sys.argv[1 :]`` si ``None`` est passé à *args*."
#: ../Doc/distutils/apiref.rst:1338
msgid "Wraps *text* to less than *width* wide."
msgstr ""
+"Ajoute des retours à la ligne à *texte* de manière à ce que la largeur soit "
+"inférieure à *largeur*."
#: ../Doc/distutils/apiref.rst:1343
msgid ""
"The option_table is a list of 3-tuples: ``(long_option, short_option, "
"help_string)``"
msgstr ""
+"La liste *option_table* est constituée de triplets : ``(long_option, "
+"short_option, help_string*)``"
#: ../Doc/distutils/apiref.rst:1346
msgid ""
@@ -1889,14 +2458,21 @@ msgid ""
"any case. *short_option* should be ``None`` if a *long_option* doesn't have "
"a corresponding *short_option*. All option tuples must have long options."
msgstr ""
+"Si une option prend un argument, sa *long_option* doit se terminer par "
+"``'='``. *short_option* doit être un seul caractère, jamais ``':'`'. "
+"*option_courte* doit être ``None`` si *long_option* n'a pas de "
+"*short_option* correspondante. Tous les triplets d'options doivent avoir des "
+"options longues."
#: ../Doc/distutils/apiref.rst:1351
msgid "The :class:`FancyGetopt` class provides the following methods:"
-msgstr ""
+msgstr "La classe :class:`FancyGetopt` fournit les méthodes suivantes :"
#: ../Doc/distutils/apiref.rst:1356
msgid "Parse command-line options in args. Store as attributes on *object*."
msgstr ""
+"Analyse les options de ligne de commande des arguments. Les stocke en tant "
+"qu'attributs de *objet*."
#: ../Doc/distutils/apiref.rst:1358
msgid ""
@@ -1907,6 +2483,13 @@ msgid ""
"returns *args*; in both cases, the returned *args* is a modified copy of the "
"passed-in *args* list, which is left untouched."
msgstr ""
+"Si *args* est ``None`` ou n'est pas définie, utilise ``sys.argv[1:]``. Si "
+"*object* est ``None`` ou n'est pas définie, créer une nouvelle instance de "
+"la classe :class:`OptionDummy` , stocke les valeurs d'options dans "
+"l'instance et renvoie un couple ``(args, object)``. Si *objet* est fourni, "
+"il est modifié sur place et :func:`getopt` renvoie simplement *args*; dans "
+"les deux cas, Les arguments *args* renvoyés sont une copie modifiée de la "
+"liste *args* transmise, qui est n'est pas modifiée."
#: ../Doc/distutils/apiref.rst:1370
msgid ""
@@ -1914,34 +2497,43 @@ msgid ""
"of :meth:`getopt` Raises :exc:`RuntimeError` if :meth:`getopt` hasn't been "
"called yet."
msgstr ""
+"Renvoie la liste des couples ``(option, valeur)`` traités par l'exécution "
+"précédente de :meth:`getopt`. Déclenche :exc:`RuntimeError` si :meth:"
+"`getopt` n'a pas encore été appelée."
#: ../Doc/distutils/apiref.rst:1377
msgid ""
"Generate help text (a list of strings, one per suggested line of output) "
"from the option table for this :class:`FancyGetopt` object."
msgstr ""
+"Génère un texte d'aide (une liste de chaînes, une par ligne de sortie "
+"suggérée) de la liste d'options pour l'objet de la classe :class:"
+"`FancyGetopt`."
#: ../Doc/distutils/apiref.rst:1380
msgid "If supplied, prints the supplied *header* at the top of the help."
-msgstr ""
+msgstr "S'il est fourni, affiche l'en-tête *header* en haut de l'aide."
#: ../Doc/distutils/apiref.rst:1384
msgid ":mod:`distutils.filelist` --- The FileList class"
-msgstr ""
+msgstr ":mod:`distutils.filelist` — La classe *FileList* liste des fichiers"
#: ../Doc/distutils/apiref.rst:1391
msgid ""
"This module provides the :class:`FileList` class, used for poking about the "
"filesystem and building lists of files."
msgstr ""
+"Ce module fournit la classe :class:`FileList`, utilisée pour parcourir le "
+"système de fichiers et construire des listes de fichiers."
#: ../Doc/distutils/apiref.rst:1396
msgid ":mod:`distutils.log` --- Simple PEP 282-style logging"
msgstr ""
+":mod:`distutils.log` --- Journalisation basée sur le style de la PEP 282"
#: ../Doc/distutils/apiref.rst:1403
msgid ":mod:`distutils.spawn` --- Spawn a sub-process"
-msgstr ""
+msgstr ":mod:`distutils.spawn` — Crée un sous-processus"
#: ../Doc/distutils/apiref.rst:1409
msgid ""
@@ -1950,10 +2542,15 @@ msgid ""
"Also provides :func:`find_executable` to search the path for a given "
"executable name."
msgstr ""
+"Ce module offre la fonction :func:`spawn`, une interface avec diverses "
+"fonctions spécifiques à la plate-forme pour lancer un autre programme dans "
+"un sous-processus. Inclut également :func:`find_executable` pour rechercher "
+"le chemin d'accès pour un nom d'exécutable donné."
#: ../Doc/distutils/apiref.rst:1416
msgid ":mod:`distutils.sysconfig` --- System configuration information"
msgstr ""
+":mod:`distutils.sysconfig` --- Informations de configuration du système"
#: ../Doc/distutils/apiref.rst:1425
msgid ""
@@ -1966,26 +2563,40 @@ msgid ""
"header is called :file:`pyconfig.h` for Python versions starting with 2.2, "
"and :file:`config.h` for earlier versions of Python."
msgstr ""
+"Le module :mod:`distutils.sysconfig` donne accès aux informations de "
+"configuration bas niveau de Python. Les variables de configuration "
+"spécifiques disponibles dépendent de la plate-forme et de la configuration. "
+"Les variables spécifiques dépendent du processus de compilation de la "
+"version *spécifique* de Python en cours d'exécution. Les variables sont "
+"celles qui se trouvent dans le fichier :file:`Makefile` et dans les entêtes "
+"de configuration installés avec Python sur des systèmes Unix. Le fichier "
+"des entêtes de configuration s'appelle :file:`pyconfig.h` pour les versions "
+"de Python commençant par 2.2, et :file:`config.h` pour les versions "
+"antérieures de Python."
#: ../Doc/distutils/apiref.rst:1434
msgid ""
"Some additional functions are provided which perform some useful "
"manipulations for other parts of the :mod:`distutils` package."
msgstr ""
+"Quelques fonctions supplémentaires sont fournies pour effectuer des "
+"manipulations utiles pour d'autres parties du paquet :mod:`distutils`."
#: ../Doc/distutils/apiref.rst:1440
msgid "The result of ``os.path.normpath(sys.prefix)``."
-msgstr ""
+msgstr "Le résultat de ``os.path.normpath(sys.prefix)``."
#: ../Doc/distutils/apiref.rst:1445
msgid "The result of ``os.path.normpath(sys.exec_prefix)``."
-msgstr ""
+msgstr "Le résultat de ``os.path.normpath(sys.exec_prefix)``."
#: ../Doc/distutils/apiref.rst:1450
msgid ""
"Return the value of a single variable. This is equivalent to "
"``get_config_vars().get(name)``."
msgstr ""
+"Retourne la valeur d'une seule variable. C'est l'équivalent de "
+"``get_config_vars().get(name)``."
#: ../Doc/distutils/apiref.rst:1456
msgid ""
@@ -1995,6 +2606,12 @@ msgid ""
"a sequence giving the associated values. If a given name does not have a "
"corresponding value, ``None`` will be included for that variable."
msgstr ""
+"Retourne un ensemble de définitions de variables. S'il n'y a pas "
+"d'arguments, cela renvoie un dictionnaire qui associe les noms des variables "
+"de configuration aux valeurs. Si des arguments sont spécifiés, ils doivent "
+"être des chaînes de caractères, et la valeur renvoyée sera une séquence "
+"donnant les valeurs correspondantes. Si un nom donné n'a pas de valeur "
+"correspondante, la valeur ``None`` sera utilisée pour cette variable."
#: ../Doc/distutils/apiref.rst:1465
msgid ""
@@ -2003,6 +2620,10 @@ msgid ""
"platforms the header will have been supplied directly by the Python source "
"distribution. The file is a platform-specific text file."
msgstr ""
+"Renvoie le nom complet du chemin d'accès de l'en-tête de configuration. "
+"Pour Unix, c'est l'en-tête généré par le script :program:`configure` ; pour "
+"les autres plates-formes, l'en-tête provient directement de la distribution "
+"source Python. Le fichier est un fichier texte spécifique à la plate-forme."
#: ../Doc/distutils/apiref.rst:1473
msgid ""
@@ -2011,6 +2632,11 @@ msgid ""
"meaning for other platforms will vary. The file is a platform-specific text "
"file, if it exists. This function is only useful on POSIX platforms."
msgstr ""
+"Renvoie le nom complet du chemin d'accès du fichier :file:`Makefile` utilisé "
+"pour construire Python. Pour Unix, c'est le fichier généré par le script :"
+"program:`configure`. La définition pour les autres plateformes varie. S'il "
+"existe, il s'agit d'un fichier texte spécifique à la plate-forme. Cette "
+"fonction n'est utile que sur les plates-formes POSIX."
#: ../Doc/distutils/apiref.rst:1481
msgid ""
@@ -2021,6 +2647,13 @@ msgid ""
"const:`PREFIX`, or as the exec-prefix instead of :const:`EXEC_PREFIX` if "
"*plat_specific* is true."
msgstr ""
+"Renvoie le répertoire pour les fichiers d'inclusion C standards ou "
+"dépendants de la plate-forme. Si *plat_specific* est vrai, le répertoire "
+"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *faux* "
+"ou *None*, le répertoire indépendant de la plate-forme est renvoyé. Si "
+"*prefix* est donné, il est utilisé soit comme préfixe au lieu de :const:"
+"`PREFIX`, soit comme préfixe d'exécution au lieu de :const:`EXEC_PREFIX` si "
+"*plat_specific* est vrai."
#: ../Doc/distutils/apiref.rst:1491
msgid ""
@@ -2033,18 +2666,31 @@ msgid ""
"directory for the standard library is returned rather than the directory for "
"the installation of third-party extensions."
msgstr ""
+"Renvoie le répertoire pour l'installation de la bibliothèque standard ou "
+"dépendante de la plate-forme. Si *plat_specific* est vrai, le répertoire "
+"*include* dépendant de la plate-forme est renvoyé ; si la valeur est *faux* "
+"ou *None*, le répertoire indépendant de la plate-forme est renvoyé. Si "
+"*prefix* est donné, il est utilisé soit comme préfixe au lieu de :const:"
+"`PREFIX`, soit comme préfixe d'exécution au lieu de :const:`EXEC_PREFIX` si "
+"*plat_specific* est vrai. Si *standard_lib* est vrai, le répertoire de la "
+"bibliothèque standard est renvoyé plutôt que le répertoire d'installation "
+"des extensions tierces."
#: ../Doc/distutils/apiref.rst:1500
msgid ""
"The following function is only intended for use within the :mod:`distutils` "
"package."
msgstr ""
+"La fonction suivante est uniquement destinée à être utilisée dans le paquet :"
+"mod:`distutils`."
#: ../Doc/distutils/apiref.rst:1506
msgid ""
"Do any platform-specific customization of a :class:`distutils.ccompiler."
"CCompiler` instance."
msgstr ""
+"Exécute toute personnalisation spécifique à la plate-forme d'une instance :"
+"class:`distutils.ccompiler.CCompiler`."
#: ../Doc/distutils/apiref.rst:1509
msgid ""
@@ -2054,12 +2700,21 @@ msgid ""
"This information includes the selected compiler, compiler and linker "
"options, and the extension used by the linker for shared objects."
msgstr ""
+"Cette fonction n'est nécessaire que sous Unix pour le moment, mais doit être "
+"appelée de manière cohérente pour supporter la compatibilité ascendante. "
+"Elle insère des informations qui varient d'une version à l'autre d'Unix et "
+"qui sont stockées dans le fichier Python :file:`Makefile`. Ces informations "
+"comprennent le compilateur, les options du compilateur et de l'éditeur de "
+"liens sélectionnés, ainsi que l'extension utilisée par l'éditeur de liens "
+"pour les objets partagés."
#: ../Doc/distutils/apiref.rst:1515
msgid ""
"This function is even more special-purpose, and should only be used from "
"Python's own build procedures."
msgstr ""
+"Cette fonction est encore plus spéciale, et ne devrait être utilisée que "
+"dans les procédures de compilation de Python."
#: ../Doc/distutils/apiref.rst:1521
msgid ""
@@ -2068,10 +2723,14 @@ msgid ""
"for files, allowing them to be located in the build area rather than in an "
"installed Python."
msgstr ""
+"Informe le module :mod:`distutils.sysconfig` qu'il est utilisé dans le cadre "
+"du processus de compilation de Python. Cela change beaucoup d'emplacements "
+"relatifs pour les fichiers, ce qui les place dans la zone de compilation "
+"plutôt que dans un interpréteur Python installé."
#: ../Doc/distutils/apiref.rst:1528
msgid ":mod:`distutils.text_file` --- The TextFile class"
-msgstr ""
+msgstr ":mod:`distutils.text_file` — La classe TextFile"
#: ../Doc/distutils/apiref.rst:1534
msgid ""
@@ -2079,6 +2738,9 @@ msgid ""
"to text files that (optionally) takes care of stripping comments, ignoring "
"blank lines, and joining lines with backslashes."
msgstr ""
+"Ce module fournit la classe :class:`TextFile`, qui donne une interface aux "
+"fichiers texte qui s'occupe (optionnellement) de supprimer les commentaires, "
+"d'ignorer les lignes vides et de joindre les lignes avec des antislash."
#: ../Doc/distutils/apiref.rst:1541
msgid ""
@@ -2089,6 +2751,14 @@ msgid ""
"at end of line), strip leading and/or trailing whitespace. All of these are "
"optional and independently controllable."
msgstr ""
+"Cette classe fournit un objet de type fichier qui se charge de tout ce que "
+"vous voulez généralement faire lors du traitement d'un fichier texte ayant "
+"une syntaxe ligne par ligne : Suppression des commentaires (tant que ``#`` "
+"est votre caractère de commentaire), passer les lignes vides, joindre des "
+"lignes adjacentes en échappant la nouvelle ligne (les lignes se terminant "
+"par une antislash), supprime les espace blancs avant et après le texte etc. "
+"Toutes ces fonctions sont optionnelles et peuvent être commandées "
+"indépendamment."
#: ../Doc/distutils/apiref.rst:1548
msgid ""
@@ -2097,6 +2767,10 @@ msgid ""
"question spans multiple physical lines. Also provides :meth:`unreadline` "
"for implementing line-at-a-time lookahead."
msgstr ""
+"La classe fournit une méthode :meth:`warn` pour pouvoir générer des messages "
+"d'avertissement qui renvoie le numéro de ligne physique, même si la ligne "
+"logique en question couvre plusieurs lignes physiques. Fournit également :"
+"meth:`unreadline` pour implémenter un système prospectif ligne par ligne."
#: ../Doc/distutils/apiref.rst:1553
msgid ""
@@ -2108,16 +2782,26 @@ msgid ""
"messages. If *file* is not supplied, :class:`TextFile` creates its own "
"using the :func:`open` built-in function."
msgstr ""
+"Les instances de :class:`TextFile` sont créées soit avec *filename*, soit "
+"avec *file* ou bien les deux. :exc:`RuntimeError` est levé si les deux "
+"valent ``None``. *filename* doit être une chaîne de caractères, et *file* un "
+"objet fichier (ou quelque chose qui fournit les méthodes :meth:`readline` "
+"et :meth:`close`). Il est recommandé de fournir au moins *filename*, afin "
+"que :class:`TextFile` puisse l'inclure dans les messages d'avertissement. "
+"Si *file* n'est pas fourni, :class:`TextFile` crée son propre fichier en "
+"utilisant la fonction :func:`open`."
#: ../Doc/distutils/apiref.rst:1561
msgid ""
"The options are all boolean, and affect the values returned by :meth:"
"`readline`"
msgstr ""
+"Les options sont toutes booléennes et affectent les valeurs renvoyées par :"
+"meth:`readline`."
#: ../Doc/distutils/apiref.rst:1566
msgid "option name"
-msgstr ""
+msgstr "Nom des options"
#: ../Doc/distutils/apiref.rst:1566
msgid "default"
@@ -2125,7 +2809,7 @@ msgstr "default"
#: ../Doc/distutils/apiref.rst:1568
msgid "*strip_comments*"
-msgstr ""
+msgstr "*strip_comments*"
#: ../Doc/distutils/apiref.rst:1568
msgid ""
@@ -2140,11 +2824,12 @@ msgstr "*true*"
#: ../Doc/distutils/apiref.rst:1574
msgid "*lstrip_ws*"
-msgstr ""
+msgstr "*lstrip_ws*"
#: ../Doc/distutils/apiref.rst:1574
msgid "strip leading whitespace from each line before returning it"
msgstr ""
+"Efface les espaces blancs en début de chaque ligne avant de la renvoyer."
#: ../Doc/distutils/apiref.rst:1574 ../Doc/distutils/apiref.rst:1592
#: ../Doc/distutils/apiref.rst:1603
@@ -2153,17 +2838,19 @@ msgstr "*false*"
#: ../Doc/distutils/apiref.rst:1577
msgid "*rstrip_ws*"
-msgstr ""
+msgstr "*rstrip_ws*"
#: ../Doc/distutils/apiref.rst:1577
msgid ""
"strip trailing whitespace (including line terminator!) from each line before "
"returning it."
msgstr ""
+"Efface les espaces blancs de fin de ligne (y compris le terminateur de "
+"ligne !) de chaque ligne avant de la renvoyer."
#: ../Doc/distutils/apiref.rst:1582
msgid "*skip_blanks*"
-msgstr ""
+msgstr "*skip_blanks*"
#: ../Doc/distutils/apiref.rst:1582
msgid ""
@@ -2172,10 +2859,14 @@ msgid ""
"solely whitespace: these will \\*not\\* be skipped, even if *skip_blanks* is "
"true.)"
msgstr ""
+"Ignore les lignes qui sont vides \\*après\\* la suppression des commentaires "
+"et des espaces. (Si *lstrip_ws* et *rstrip_ws* sont tous les deux faux, "
+"alors certaines lignes peuvent être composées uniquement d'espaces : elles "
+"ne seront pas ignorées, même si *skip_blanks* est vrai."
#: ../Doc/distutils/apiref.rst:1592
msgid "*join_lines*"
-msgstr ""
+msgstr "*join_lines*"
#: ../Doc/distutils/apiref.rst:1592
msgid ""
@@ -2184,16 +2875,23 @@ msgid ""
"line; if N consecutive lines end with a backslash, then N+1 physical lines "
"will be joined to form one logical line."
msgstr ""
+"Si sur la ligne, une antislash est le dernier caractère et que ce caractère "
+"n'est pas le caractère de nouvelle ligne. Joint la ligne suivante pour "
+"former une ligne logique. Si N lignes consécutives se terminent par une "
+"antislash, alors N+1 lignes physiques seront liées pour former une seul "
+"ligne logique."
#: ../Doc/distutils/apiref.rst:1603
msgid "*collapse_join*"
-msgstr ""
+msgstr "*collapse_join*"
#: ../Doc/distutils/apiref.rst:1603
msgid ""
"strip leading whitespace from lines that are joined to their predecessor; "
"only matters if ``(join_lines and not lstrip_ws)``"
msgstr ""
+"Supprime les espaces blancs des lignes qui sont jointes à leur prédécesseur. "
+"n'est utile que que si ``(join_lines and not lstrip_ws)``."
#: ../Doc/distutils/apiref.rst:1610
msgid ""
@@ -2203,18 +2901,28 @@ msgid ""
"for end-of-file: an empty string might just be a blank line (or an all-"
"whitespace line), if *rstrip_ws* is true but *skip_blanks* is not."
msgstr ""
+"Notez que puisque *rstrip_ws* peut effacer la fin de la ligne, la sémantique "
+"de :meth:`readline` doit être différente de celle de la méthode standard :"
+"meth:`readline` des objets fichier ! En particulier, :meth:`readline` "
+"renvoie ``None`` pour indiquer la fin du fichier: une chaîne vide peut être "
+"juste une ligne blanche (ou une ligne entièrement blanche), si *rstrip_ws* "
+"est vrai mais pas si *skip_blanks* est faux."
#: ../Doc/distutils/apiref.rst:1619
msgid ""
"Open a new file *filename*. This overrides any *file* or *filename* "
"constructor arguments."
msgstr ""
+"Ouvre un nouveau fichier *filename*. Remplace tous les arguments du "
+"constructeur *file* ou *filename*."
#: ../Doc/distutils/apiref.rst:1625
msgid ""
"Close the current file and forget everything we know about it (including the "
"filename and the current line number)."
msgstr ""
+"Ferme le fichier courant et oublie toutes les informations connues à son "
+"sujet (y compris le nom du fichier et le numéro de la ligne courante)."
#: ../Doc/distutils/apiref.rst:1631
msgid ""
@@ -2225,6 +2933,13 @@ msgid ""
"may be a list or tuple to indicate a range of physical lines, or an integer "
"for a single physical line."
msgstr ""
+"Affiche (vers *stderr*) un message d'avertissement lié à la ligne logique "
+"courante dans le fichier courant. Si la ligne logique courante dans le "
+"fichier s'étend sur plusieurs lignes physiques, l'avertissement se réfère à "
+"une plage de lignes physiques, telles que ``\"lignes 3-5\"``. Si *line* est "
+"fourni, il remplace le numéro de la ligne courante ; il peut s'agir d'une "
+"liste ou d'un couple pour indiquer une plage de lignes physiques, ou d'un "
+"entier pour une seule ligne physique."
#: ../Doc/distutils/apiref.rst:1641
msgid ""
@@ -2237,12 +2952,24 @@ msgid ""
"end-of-file, since the empty string can occur if *rstrip_ws* is true but "
"*strip_blanks* is not."
msgstr ""
+"Lit et renvoie une seule ligne logique à partir du fichier courant (ou à "
+"partir d'un tampon interne si les lignes ont déjà été marqué comme non lue "
+"avec :meth:`unreadline`). Si l'option *join_lines* est vraie, cela peut "
+"impliquer la lecture de plusieurs lignes physiques concaténées en une seule "
+"chaîne. Met à jour le numéro de la ligne courante. Appeler :meth:`warn` "
+"après :meth:`readline` émet donc un avertissement sur la ou les lignes "
+"physiques qui viennent d'être lues. Renvoie ``None`` à la fin du fichier, "
+"puisque la chaîne vide peut se produire si *rstrip_ws* est vrai mais pas si "
+"*strip_blanks* est faux."
#: ../Doc/distutils/apiref.rst:1652
msgid ""
"Read and return the list of all logical lines remaining in the current file. "
"This updates the current line number to the last line of the file."
msgstr ""
+"Lit et renvoie la liste de toutes les lignes logiques restant dans le "
+"fichier courant. Met à jour le numéro de la ligne courante à la dernière "
+"ligne du fichier."
#: ../Doc/distutils/apiref.rst:1658
msgid ""
@@ -2254,18 +2981,28 @@ msgid ""
"meth:`unreadline` before a call to :meth:`readline`, the lines will be "
"returned most in most recent first order."
msgstr ""
+"Insère la ligne *line* (une chaîne de caractères) dans un tampon interne qui "
+"sera vérifié par les futurs appels de :meth:`readline`. Utile pour "
+"implémenter un analyseur prospectif ligne par ligne. Notez que les lignes "
+"qui sont \"non lues\" avec :meth:`unreadline` ne sont ensuite pas traitées "
+"de nouveau (espace blancs, ou autre) quand elles sont lues avec :meth:"
+"`readline`. Si plusieurs appels sont faits à :meth:`unreadline` avant un "
+"appel à :meth:`readline`, les lignes sont renvoyées dans l'ordre de la plus "
+"récente première à la plus ancienne."
#: ../Doc/distutils/apiref.rst:1667
msgid ":mod:`distutils.version` --- Version number classes"
-msgstr ""
+msgstr ":mod:`distutils.version` — Classes de numéros de version"
#: ../Doc/distutils/apiref.rst:1682
msgid ":mod:`distutils.cmd` --- Abstract base class for Distutils commands"
msgstr ""
+":mod:`distutils.cmd` --- Classe de base abstraite pour les commandes "
+"*Distutils*"
#: ../Doc/distutils/apiref.rst:1689
msgid "This module supplies the abstract base class :class:`Command`."
-msgstr ""
+msgstr "Ce module fournit la classe de base abstraite :class:`Command`."
#: ../Doc/distutils/apiref.rst:1694
msgid ""
@@ -2282,6 +3019,19 @@ msgid ""
"options, is the :meth:`run` method, which must also be implemented by every "
"command class."
msgstr ""
+"Classe de base abstraite pour définir les classes de commandes, les "
+"\"ouvrières\" de *Distutils*. Une analogie utile pour les classes de "
+"commandes est de les considérer comme des sous-routines avec des variables "
+"locales appelées *options*. Les options sont déclarées dans :meth:"
+"`initialiser_options` et définies (compte tenu de leur valeur finale) dans :"
+"meth:`finalize_options`, qui doivent être définies pour chaque classe de "
+"commande. La distinction entre les deux est nécessaire parce que les "
+"valeurs des options peuvent venir de l'extérieur (ligne de commande, fichier "
+"de configuration, ....), et toutes les options dépendantes d'autres options "
+"doivent être calculées après que ces options externes aient été traitées --- "
+"ce qui explique :meth:`finalize_options`. Le corps de la sous-routine, où "
+"s'effectue tout le travail est basé sur les valeurs de ses options, est la "
+"méthode :meth:`run`, qui doit être implémentée par chaque classe de commande."
#: ../Doc/distutils/apiref.rst:1707
msgid ""
@@ -2293,11 +3043,12 @@ msgstr ""
#: ../Doc/distutils/apiref.rst:1712
msgid "Creating a new Distutils command"
-msgstr ""
+msgstr "Créer une nouvelle commande *Distutils*"
#: ../Doc/distutils/apiref.rst:1714
msgid "This section outlines the steps to create a new Distutils command."
msgstr ""
+"Cette section décrit les étapes pour créer une nouvelle commande *Distutils*."
#: ../Doc/distutils/apiref.rst:1716
msgid ""
@@ -2311,10 +3062,22 @@ msgid ""
"command/peel_banana.py`, then edit it so that it's implementing the class :"
"class:`peel_banana`, a subclass of :class:`distutils.cmd.Command`."
msgstr ""
+"Une nouvelle commande doit résider dans un module du package :mod:`distutils."
+"command`. Il existe un exemple de modèle dans ce répertoire nommé :file:"
+"`command_template`. Copiez ce fichier dans un nouveau module portant le même "
+"nom que la nouvelle commande que vous implémentez. Ce module doit "
+"implémenter une classe portant le même nom que le module (et la commande). "
+"Par exemple, pour créer la commande ``peel_banana`` (afin que les "
+"utilisateurs puissent exécuter ``setup.py peel_banana``), vous devez copier "
+"le fichier :file:`commande_template` dans :file:`distutils/command/"
+"peel_banana.py`, puis l'éditer pour qu'il implémente la classe :class:"
+"`peel_banana`, une sous-classe de la classe :class:`distutils.cmd.Command`."
#: ../Doc/distutils/apiref.rst:1726
msgid "Subclasses of :class:`Command` must define the following methods."
msgstr ""
+"Les sous-classes de la classe :class:`Command` doivent définir les méthodes "
+"suivantes."
#: ../Doc/distutils/apiref.rst:1730
msgid ""
@@ -2325,6 +3088,13 @@ msgid ""
"`initialize_options` implementations are just a bunch of ``self.foo = None`` "
"assignments."
msgstr ""
+"Définit des valeurs par défaut pour toutes les options que cette commande "
+"gère. Notez que ces valeurs par défaut peuvent être remplacées par d'autres "
+"commandes, par le script d'installation, par des fichiers de configuration "
+"ou par la ligne de commande. Ce n'est donc pas l'endroit idéal pour "
+"introduire des dépendances entre les options. En règle générale, les "
+"méthodes suivantes :meth:`initialize_options` ne font que des assignations "
+"de type ``self.truc = None``."
#: ../Doc/distutils/apiref.rst:1739
msgid ""
@@ -2335,6 +3105,14 @@ msgid ""
"safe to set *foo* from *bar* as long as *foo* still has the same value it "
"was assigned in :meth:`initialize_options`."
msgstr ""
+"Définit les valeurs finales pour toutes les options que cette commande gère. "
+"Cette méthode doit toujours être appelée le plus tard possible, c'est-à-dire "
+"après que toutes les affectations des options de la ligne de commande ou que "
+"d'autres commandes ont été faites. C'est donc l'endroit idéal pour "
+"introduire des dépendances d'options : si *truc* dépend de *machin*, alors "
+"il est sûr de mettre *truc* de *machin* aussi longtemps que *truc* a "
+"toujours la même valeur qui lui a été attribué par :meth:"
+"`initialize_options`."
#: ../Doc/distutils/apiref.rst:1749
msgid ""
@@ -2344,6 +3122,12 @@ msgid ""
"files, and finalized in :meth:`finalize_options`. All terminal output and "
"filesystem interaction should be done by :meth:`run`."
msgstr ""
+"La raison d'être d'une commande : exécuter l'action programmée en étant "
+"contrôlée par les options initialisées dans :meth:`initialize_options`, "
+"personnalisées par d'autres commandes, par le script de configuration, par "
+"la ligne de commande et les fichiers de configuration, puis finalisée dans :"
+"meth:`finalize_options`. Toutes les interactions avec le système de fichiers "
+"et la sortie du terminal doivent être effectuées par :meth:`run`."
#: ../Doc/distutils/apiref.rst:1758
msgid ""
@@ -2358,6 +3142,16 @@ msgid ""
"have any C header files to install.) If *predicate* is ``None``, that "
"command is always applicable."
msgstr ""
+"*sub_commands* formalise la notion de \"famille\" de commandes, par exemple. "
+"``install`` est le parent des sous-commandes ``install_lib``, "
+"``install_headers``, etc. Le parent d'une famille de commandes définit "
+"*sub_commands* en tant qu'attribut de classe ; c'est une liste de couples "
+"``(command_name, predicate)``, avec *command_name* le nom de la commande et "
+"*predicate* une fonction, une chaîne ou ``None``. *predicate* est une "
+"méthode de la commande parent qui détermine si la commande correspondante "
+"est applicable dans la situation actuelle. Par exemple : ``install_headers`` "
+"n'est applicable que s'il existe des fichiers d'en-tête C à installer. Si "
+"*predicate* est ``None``, cette commande est toujours effectuée."
#: ../Doc/distutils/apiref.rst:1769
msgid ""
@@ -2365,33 +3159,41 @@ msgid ""
"predicates can be methods of the class, so they must already have been "
"defined. The canonical example is the :command:`install` command."
msgstr ""
+"*sub_commands* est généralement défini à la *fin* d'une classe, car les "
+"prédicats peuvent être des méthodes de la classe, ils doivent donc déjà "
+"avoir été définis. L'exemple canonique est la commande :command:`install`."
#: ../Doc/distutils/apiref.rst:1775
msgid ":mod:`distutils.command` --- Individual Distutils commands"
-msgstr ""
+msgstr ":mod:`distutils.command` — Commandes *Distutils* individuelles"
#: ../Doc/distutils/apiref.rst:1786
msgid ":mod:`distutils.command.bdist` --- Build a binary installer"
-msgstr ""
+msgstr ":mod:`distutils.command.bdist` — Construit un installateur binaire"
#: ../Doc/distutils/apiref.rst:1796
msgid ""
":mod:`distutils.command.bdist_packager` --- Abstract base class for packagers"
msgstr ""
+":mod:`distutils.command.bdist_packager` --- Classe de base abstraite pour "
+"empaqueteurs"
#: ../Doc/distutils/apiref.rst:1806
msgid ":mod:`distutils.command.bdist_dumb` --- Build a \"dumb\" installer"
msgstr ""
+":mod:`distutils.command.bdist_dumb` --- Construit un installateur passif "
+"(*dumb*)"
#: ../Doc/distutils/apiref.rst:1816
msgid ""
":mod:`distutils.command.bdist_msi` --- Build a Microsoft Installer binary "
"package"
msgstr ""
+":mod:`distutils.command.bdist_msi` --- Construit un installateur Microsoft"
#: ../Doc/distutils/apiref.rst:1823
msgid "Builds a `Windows Installer`_ (.msi) binary package."
-msgstr ""
+msgstr "Construit un installateur `Windows Installeur`_ (*.msi*)"
#: ../Doc/distutils/apiref.rst:1827
msgid ""
@@ -2400,39 +3202,53 @@ msgid ""
"platforms, allows administrators to perform non-interactive installations, "
"and allows installation through group policies."
msgstr ""
+"Dans la plupart des cas, l'installateur ``bdist_msi`` est un meilleur choix "
+"que l'installateur ``bdist_wininst``, car il gère mieux les plates-formes "
+"*Win64*, et permet en plus aux administrateurs d'effectuer des installations "
+"non interactives ainsi que des installations via des stratégies de groupe."
#: ../Doc/distutils/apiref.rst:1834
msgid ""
":mod:`distutils.command.bdist_rpm` --- Build a binary distribution as a "
"Redhat RPM and SRPM"
msgstr ""
+":mod:`distutils.command.bdist_rpm` --- Construit une distribution binaire au "
+"format Redhat RPM et SRPM"
#: ../Doc/distutils/apiref.rst:1844
msgid ":mod:`distutils.command.bdist_wininst` --- Build a Windows installer"
msgstr ""
+":mod:`distutils.command.bdist_wininst` --- Construit un installateur Windows"
#: ../Doc/distutils/apiref.rst:1854
msgid ":mod:`distutils.command.sdist` --- Build a source distribution"
-msgstr ""
+msgstr ":mod:`distutils.command.sdist` — Construit une distribution source"
#: ../Doc/distutils/apiref.rst:1864
msgid ":mod:`distutils.command.build` --- Build all files of a package"
msgstr ""
+":mod:`distutils.command.build` --- Construit tous les fichiers d'un paquet"
#: ../Doc/distutils/apiref.rst:1874
msgid ""
":mod:`distutils.command.build_clib` --- Build any C libraries in a package"
msgstr ""
+":mod:`distutils.command.build_clib` --- Construit toutes les bibliothèques C "
+"d'un paquet"
#: ../Doc/distutils/apiref.rst:1884
msgid ""
":mod:`distutils.command.build_ext` --- Build any extensions in a package"
msgstr ""
+":mod:`distutils.command.build_ext` --- Construit toutes les extensions d'un "
+"paquet"
#: ../Doc/distutils/apiref.rst:1894
msgid ""
":mod:`distutils.command.build_py` --- Build the .py/.pyc files of a package"
msgstr ""
+":mod:`distutils.command.build_py` --- Construit les fichiers *.py/.pyc* d'un "
+"paquet"
#: ../Doc/distutils/apiref.rst:1904
msgid ""
@@ -2441,23 +3257,30 @@ msgid ""
"setup.py file for a distribution that is designed to run with both Python 2."
"x and 3.x, add::"
msgstr ""
+"Implémentation alternative de *build_py* qui exécute également la "
+"bibliothèque de conversion *2to3* sur chaque fichier *.py* qui va être "
+"installé. Pour l'utiliser dans un fichier *setup.py* pour une distribution "
+"conçue pour fonctionner avec *Python 2.x* et *3.x*, ajouter ::"
#: ../Doc/distutils/apiref.rst:1914
msgid "to your setup.py, and later::"
-msgstr ""
+msgstr "à votre *setup.py* et, plus tard ::"
#: ../Doc/distutils/apiref.rst:1918
msgid "to the invocation of setup()."
-msgstr ""
+msgstr "à l'appel de *setup()*."
#: ../Doc/distutils/apiref.rst:1922
msgid ""
":mod:`distutils.command.build_scripts` --- Build the scripts of a package"
msgstr ""
+":mod:`distutils.command.build_scripts` --- Construit les scripts d'un paquet"
#: ../Doc/distutils/apiref.rst:1932
msgid ":mod:`distutils.command.clean` --- Clean a package build area"
msgstr ""
+":mod:`distutils.command.clean` --- Nettoie un dossier de compilation d'un "
+"paquet"
#: ../Doc/distutils/apiref.rst:1937
msgid ""
@@ -2465,58 +3288,79 @@ msgid ""
"subcommands, like intermediary compiled object files. With the ``--all`` "
"option, the complete build directory will be removed."
msgstr ""
+"Cette commande supprime les fichiers temporaires créés par la commande :"
+"command:`build` et ses sous-commandes, comme les fichiers objets compilés "
+"intermédiaires. Avec l'option ``--all``, le répertoire de compilation sera "
+"supprimé."
#: ../Doc/distutils/apiref.rst:1941
msgid ""
"Extension modules built :ref:`in place ` will "
"not be cleaned, as they are not in the build directory."
msgstr ""
+"Les modules d'extension construits :ref:`sur place ` ne seront pas effacés, car ils ne sont pas dans le répertoire "
+"*build*."
#: ../Doc/distutils/apiref.rst:1946
msgid ":mod:`distutils.command.config` --- Perform package configuration"
msgstr ""
+":mod:`distutils.command.config` --- Effectue la configuration d'un paquet"
#: ../Doc/distutils/apiref.rst:1956
msgid ":mod:`distutils.command.install` --- Install a package"
-msgstr ""
+msgstr ":mod:`distutils.command.install` — Installe un paquet"
#: ../Doc/distutils/apiref.rst:1966
msgid ""
":mod:`distutils.command.install_data` --- Install data files from a package"
msgstr ""
+":mod:`distutils.command.install_data` --- Installe les fichiers de données "
+"d'un paquet"
#: ../Doc/distutils/apiref.rst:1976
msgid ""
":mod:`distutils.command.install_headers` --- Install C/C++ header files from "
"a package"
msgstr ""
+":mod:`distutils.command.install_headers` --- Installe les fichiers d'en-tête "
+"C/C++ d'un paquet"
#: ../Doc/distutils/apiref.rst:1986
msgid ""
":mod:`distutils.command.install_lib` --- Install library files from a package"
msgstr ""
+":mod:`distutils.command.install_lib` --- Installe les fichiers de "
+"bibliothèque à partir d'un paquet"
#: ../Doc/distutils/apiref.rst:1996
msgid ""
":mod:`distutils.command.install_scripts` --- Install script files from a "
"package"
msgstr ""
+":mod:`distutils.command.install_scripts` --- Installe les fichiers de script "
+"d'un paquet"
#: ../Doc/distutils/apiref.rst:2006
msgid ""
":mod:`distutils.command.register` --- Register a module with the Python "
"Package Index"
msgstr ""
+":mod:`distutils.command.register` --- Enregistre un module dans l'Index des "
+"paquets Python (*Python Package Index* ou *PyPI* en anglais)"
#: ../Doc/distutils/apiref.rst:2012
msgid ""
"The ``register`` command registers the package with the Python Package "
"Index. This is described in more detail in :pep:`301`."
msgstr ""
+"La commande ``register`` enregistre le paquet dans l'index des paquets "
+"Python. Plus de détails à ce sujet dans la :pep:`301`."
#: ../Doc/distutils/apiref.rst:2019
msgid ":mod:`distutils.command.check` --- Check the meta-data of a package"
msgstr ""
+":mod:`distutils.command.check` --- Vérifie les méta-données d'un paquet"
#: ../Doc/distutils/apiref.rst:2025
msgid ""
@@ -2524,3 +3368,6 @@ msgid ""
"example, it verifies that all required meta-data are provided as the "
"arguments passed to the :func:`setup` function."
msgstr ""
+"La commande ``check`` effectue des tests sur les méta-données d'un paquet. "
+"Par exemple, elle vérifie que toutes les méta-données requises sont fournies "
+"lorsque les arguments sont passés à la fonction :func:`setup`."
diff --git a/distutils/builtdist.po b/distutils/builtdist.po
index cc370a960..9af98120e 100644
--- a/distutils/builtdist.po
+++ b/distutils/builtdist.po
@@ -3,23 +3,23 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"POT-Creation-Date: 2017-09-21 09:15+0200\n"
+"PO-Revision-Date: 2018-02-15 00:34+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/distutils/builtdist.rst:5
msgid "Creating Built Distributions"
-msgstr "Créer une Distribution Compilée"
+msgstr "Créer une distribution compilée"
#: ../Doc/distutils/builtdist.rst:7
msgid ""
@@ -33,9 +33,9 @@ msgstr ""
"Une \"distribution compilée\" vous fait surement penser à un \"paquet binaire"
"\" ou à un \"installateur\" (tout dépend de votre environnement). Ce n'est "
"cependant pas forcément un binaire, il peut ne contenir que des sources "
-"Python et/ou du byte-code; et nous n'appelons pas ça un *package* parce que "
-"ce mot est déjà utiliseé dans Python (et \"installateur\" est un terme "
-"spécifique au monde des systèmes de bureau). "
+"Python et / ou du *byte-code* ; et nous n'appelons pas ça un *package* parce "
+"que ce mot est déjà utilisé dans Python (et \"installateur\" est un terme "
+"spécifique au monde des systèmes de bureau)."
#: ../Doc/distutils/builtdist.rst:14
msgid ""
@@ -51,15 +51,15 @@ msgid ""
"as there are packagers."
msgstr ""
"Une distribution compilée est une manière de rendre la vie plus facile à "
-"ceux qui installent votre module: pour les utilisateurs de système Linux "
-"basé sur RPM, ce sera des binaire RPM; pour les utilisateurs de Windows, "
-"c'est un installateur exécutable; pour les utilisateurs de Linux basé sur "
-"Debian, c'est un paquet Debian; et ainsi de suite. Évidemment, personne "
-"n'est capable de créer une distribution compilée pour toute les plateformes "
+"ceux qui installent votre module : pour les utilisateurs de système Linux "
+"basé sur RPM, ce sera des binaires RPM ; pour les utilisateurs de Windows, "
+"c'est un installateur exécutable ; pour les utilisateurs de Linux basés sur "
+"Debian, c'est un paquet Debian ; et ainsi de suite. Évidemment, personne "
+"n'est capable de créer une distribution compilée pour toutes les plateformes "
"existantes, donc Distutils est fait pour permettre aux développeurs de se "
-"concentrer sur leurs spécialités---écrire du code et créer des distribution "
-"source---pendant que d'autres, appelés *packagers* s'occupent de transformer "
-"les sources en paquets pour chaques plateforme."
+"concentrer sur leurs spécialités --- écrire du code et créer des "
+"distributions source --- pendant que d'autres, appelés *packagers* "
+"s'occupent de transformer les sources en paquets pour chaque plateforme."
#: ../Doc/distutils/builtdist.rst:24
msgid ""
@@ -71,13 +71,13 @@ msgid ""
"are, a packager uses the setup script and the :command:`bdist` command "
"family to generate built distributions."
msgstr ""
-"Bien sur, le développeur du module peut être son propre *packager*; ou le "
+"Bien sur, le développeur du module peut être son propre *packager* ; ou le "
"*packager* peut être un volontaire \"quelque part\" qui a accès à une "
-"plateforme que le développeur initial n'a pas; ou bien un logiciel qui prend "
-"les sources périodiquement et les transforme en une distribution compilée "
-"pour autant de plateforme que le logiciel a accès. Peu importe qui ils "
-"sont, les *packagers* utilisent ``setup.py`` et la command :command:`bdist` "
-"afin de générer une distribution compilée."
+"plateforme que le développeur initial n'a pas ; ou bien un logiciel qui "
+"prend les sources périodiquement et les transforme en une distribution "
+"compilée pour autant de plateforme que le logiciel a accès. Peu importe qui "
+"ils sont, les *packagers* utilisent ``setup.py`` et la commande :command:"
+"`bdist` afin de générer une distribution compilée."
#: ../Doc/distutils/builtdist.rst:32
msgid ""
@@ -85,7 +85,7 @@ msgid ""
"tree::"
msgstr ""
"Pour prendre un exemple simple, si je lance la commande suivante dans les "
-"sources de Distutils ::"
+"sources de Distutils ::"
#: ../Doc/distutils/builtdist.rst:37
msgid ""
@@ -97,13 +97,13 @@ msgid ""
"considered \"dumb\" because it has to be unpacked in a specific location to "
"work.)"
msgstr ""
-"alors Distutils construit ma distribution du module (Distutils lui même dans "
+"alors Distutils construit ma distribution du module (Distutils lui-même dans "
"ce cas), fait une \"fausse\" installation (aussi dans le dossier :file:"
"`build`) et crée le type de distribution compilée par défaut pour ma "
-"plateforme. Le format par défaut est un \"bête\" fichier tar pour Unix et un "
-"simple installateur exécutable pour Windows (ce fichier tar est considéré "
-"comme \"bête\" car il doit être décompressé à un endroit précis pour "
-"fonctionner)."
+"plateforme. Le format par défaut est un \"bête\" fichier *tar* pour Unix et "
+"un simple installateur exécutable pour Windows (ce fichier *tar* est "
+"considéré comme \"bête\" car il doit être décompressé à un endroit précis "
+"pour fonctionner)."
#: ../Doc/distutils/builtdist.rst:44
msgid ""
@@ -116,12 +116,12 @@ msgid ""
"distributions relative to :file:`{prefix}`.)"
msgstr ""
"Par conséquent, la commande si dessus crée le fichier :file:`Distutils-1.0."
-"{plat}.tar.gz` sur les systèmes Unix; décompresser cette tarball au bon "
-"endroit installe Distutils exactement comme si vous aviez téléchargé la "
+"{plat}.tar.gz` sur les systèmes Unix ; décompresser cette archive *tar* au "
+"bon endroit installe Distutils exactement comme si vous aviez téléchargé la "
"distribution source et lancé ``python setup.py install`` (le \"bon endroit\" "
"est soit la racine du système de fichier, ou le dossier de Python :file:"
"`{prefix}`, tout dépend des options données à la commande :command:"
-"`bdist_dumb` ;la valeur par défaut est de créer une distribution \"bête\" "
+"`bdist_dumb` ; la valeur par défaut est de créer une distribution \"bête\" "
"relative à :file:`{prefix}`)."
#: ../Doc/distutils/builtdist.rst:52
@@ -139,7 +139,7 @@ msgstr ""
"distribution non-pure qui inclut des extensions qui devraient être "
"compilées, ça peut faire la différence entre quelqu'un qui sera capable "
"d'utiliser votre extension, ou non. De plus créer une distribution compilée "
-"\"intelligente\" tel qu'un paquet RPM ou un installateur executable Windows, "
+"\"intelligente\" tel qu'un paquet RPM ou un installateur exécutable Windows, "
"est bien plus pratique pour les utilisateurs, même si votre module n'inclut "
"aucune extension."
@@ -149,6 +149,9 @@ msgid ""
"the :command:`sdist` command, which you can use to select the types of built "
"distribution to generate: for example, ::"
msgstr ""
+"La commande :command:`bdist` a l'option :option:`!--formats`, similaire à la "
+"commande :command:`sdist`, que vous pouvez utiliser pour sélectionner le "
+"type de distribution compilée à générer : par exemple, ::"
#: ../Doc/distutils/builtdist.rst:66
msgid ""
@@ -156,13 +159,13 @@ msgid ""
"---again, this archive would be unpacked from the root directory to install "
"the Distutils."
msgstr ""
-"aurait, quand lancé sur un système Unix, crée file:`Distutils-1.0.{plat}.zip`"
-"\\ ---à nouveau, cette archive devra être décompressé depuis la racine pour "
-"installer Distutils."
+"serait, lors d'une exécution sur un système Unix, crée :file:`Distutils-1.0."
+"{plat}.zip`\\ ---à nouveau, cette archive devra être décompressé depuis la "
+"racine pour installer Distutils."
#: ../Doc/distutils/builtdist.rst:70
msgid "The available formats for built distributions are:"
-msgstr "Les formats disponible pour les distributions compilées sont:"
+msgstr "Les formats disponibles pour les distributions compilées sont :"
#: ../Doc/distutils/builtdist.rst:73
msgid "Format"
@@ -182,7 +185,7 @@ msgstr "``gztar``"
#: ../Doc/distutils/builtdist.rst:75
msgid "gzipped tar file (:file:`.tar.gz`)"
-msgstr "Fichier tar gzippé (:file:`.tar.gz`)"
+msgstr "fichier *tar* *gzippé* (:file:`.tar.gz`)"
#: ../Doc/distutils/builtdist.rst:75
msgid "\\(1)"
@@ -194,7 +197,7 @@ msgstr "``bztar``"
#: ../Doc/distutils/builtdist.rst:78
msgid "bzipped tar file (:file:`.tar.bz2`)"
-msgstr "fichier tar de type bzipped (:file:`.tar.bz2`)"
+msgstr "fichier *tar* de type *bzipped* (:file:`.tar.bz2`)"
#: ../Doc/distutils/builtdist.rst:81
msgid "``xztar``"
@@ -202,7 +205,7 @@ msgstr "``xztar``"
#: ../Doc/distutils/builtdist.rst:81
msgid "xzipped tar file (:file:`.tar.xz`)"
-msgstr "fichier tar de type xzipped (:file:`.tar.xz`)"
+msgstr "fichier *tar* de type *xzipped* (:file:`.tar.xz`)"
#: ../Doc/distutils/builtdist.rst:84
msgid "``ztar``"
@@ -210,7 +213,7 @@ msgstr "``ztar``"
#: ../Doc/distutils/builtdist.rst:84
msgid "compressed tar file (:file:`.tar.Z`)"
-msgstr "Fichier tar compressé (:file:`.tar.Z`)"
+msgstr "fichier *tar* compressé par *compress* (:file:`.tar.Z`)"
#: ../Doc/distutils/builtdist.rst:84
msgid "\\(3)"
@@ -222,7 +225,7 @@ msgstr "``tar``"
#: ../Doc/distutils/builtdist.rst:87
msgid "tar file (:file:`.tar`)"
-msgstr "Fichier tar (:file:`.tar`)"
+msgstr "fichier *tar* (:file:`.tar`)"
#: ../Doc/distutils/builtdist.rst:89
msgid "``zip``"
@@ -230,7 +233,7 @@ msgstr "``zip``"
#: ../Doc/distutils/builtdist.rst:89
msgid "zip file (:file:`.zip`)"
-msgstr "Fichier zip (:file:`.zip`)"
+msgstr "fichier *zip* (:file:`.zip`)"
#: ../Doc/distutils/builtdist.rst:89
msgid "(2),(4)"
@@ -270,7 +273,7 @@ msgstr "``wininst``"
#: ../Doc/distutils/builtdist.rst:97
msgid "self-extracting ZIP file for Windows"
-msgstr "Fichier zip auto-extracteur Windows"
+msgstr "fichier zip auto-extracteur Windows"
#: ../Doc/distutils/builtdist.rst:97
msgid "\\(4)"
@@ -282,27 +285,27 @@ msgstr "``msi``"
#: ../Doc/distutils/builtdist.rst:100
msgid "Microsoft Installer."
-msgstr "Installateur Microsoft"
+msgstr "Installateur Microsoft."
#: ../Doc/distutils/builtdist.rst:103
msgid "Added support for the ``xztar`` format."
-msgstr "Ajout du support des fichiers ``xztar``"
+msgstr "Ajout du support des fichiers ``xztar``."
#: ../Doc/distutils/builtdist.rst:107
msgid "Notes:"
-msgstr "Notes : "
+msgstr "Notes :"
#: ../Doc/distutils/builtdist.rst:110
msgid "default on Unix"
-msgstr "Par défaut sur Unix"
+msgstr "par défaut sur Unix"
#: ../Doc/distutils/builtdist.rst:113
msgid "default on Windows"
-msgstr "Par défaut sur Windows"
+msgstr "par défaut sur Windows"
#: ../Doc/distutils/builtdist.rst:116
msgid "requires external :program:`compress` utility."
-msgstr "requires external :program:`compress` utility."
+msgstr "nécessite un programme externe :program:`compress`."
#: ../Doc/distutils/builtdist.rst:119
msgid ""
@@ -317,7 +320,7 @@ msgid ""
"requires external :program:`rpm` utility, version 3.0.4 or better (use ``rpm "
"--version`` to find out which version you have)"
msgstr ""
-"nécessite un programme externe :program:`rpm` , version 3.0.4 ou mieux "
+"nécessite un programme externe :program:`rpm`, version 3.0.4 ou mieux "
"(utilisez ``rpm --version`` pour connaître quelle version vous avez)"
#: ../Doc/distutils/builtdist.rst:126
@@ -331,10 +334,19 @@ msgid ""
"`bdist_rpm` generates both binary and source RPMs. The :command:`bdist` sub-"
"commands, and the formats generated by each, are:"
msgstr ""
+"Vous ne devez pas utiliser la commande :command:`bdist` avec l'option :"
+"option:`!--formats` ; Vous pouvez également utiliser la commande qui "
+"implémente directement le format qui vous intéresse. Certaines de ces \"sous-"
+"commandes\" :command:`bdist` génèrent plusieurs formats similaires ; par "
+"exemple, La commande :command:`bdist_dumb` génère les archives aux formats "
+"\"bêtes\" (``tar``, ``gztar``, ``bztar``, ``xztar``, ``ztar``, et ``zip``), "
+"et :command:`bdist_rpm` génère les binaires RPM et ainsi que les sources. "
+"Les sous-commandes :command:`bdist`, et les formats générés par chacun, "
+"sont :"
#: ../Doc/distutils/builtdist.rst:136
msgid "Command"
-msgstr "Command"
+msgstr "Commande"
#: ../Doc/distutils/builtdist.rst:136
msgid "Formats"
@@ -378,7 +390,7 @@ msgid ""
"commands."
msgstr ""
"Le chapitre suivant donne des détails individuel sur les commandes :command:"
-"`bdist_\\*` "
+"`bdist_\\*`."
#: ../Doc/distutils/builtdist.rst:163
msgid "Creating RPM packages"
@@ -408,11 +420,11 @@ msgid ""
"command:`bdist_rpm` command::"
msgstr ""
"La manière habituelle de créer un RPM de votre module est d'utiliser la "
-"commande :command:`bdist_rpm`::"
+"commande :command:`bdist_rpm` ::"
#: ../Doc/distutils/builtdist.rst:177
msgid "or the :command:`bdist` command with the :option:`!--format` option::"
-msgstr ""
+msgstr "ou la commande :command:`bdist` avec l'option :option:`!--format` ::"
#: ../Doc/distutils/builtdist.rst:181
msgid ""
@@ -421,10 +433,10 @@ msgid ""
"you can explicitly specify multiple :command:`bdist_\\*` commands and their "
"options::"
msgstr ""
-"La première vous permet de spécifier des options spécifique à RPM; la "
-"dernière vous permet de spécifier plusieurs format d'un seul coup. Si vous "
+"La première vous permet de spécifier des options spécifiques à RPM ; la "
+"dernière vous permet de spécifier plusieurs formats d'un seul coup. Si vous "
"avez besoin d'utiliser les deux, vous pouvez explicitement spécifier "
-"plusieurs commande :command:`bdist_\\*` et leurs options."
+"plusieurs commandes :command:`bdist_\\*` et leurs options ::"
#: ../Doc/distutils/builtdist.rst:188
msgid ""
@@ -435,13 +447,13 @@ msgid ""
"any Distutils configuration files. Various options and sections in the :"
"file:`.spec` file are derived from options in the setup script as follows:"
msgstr ""
-"La création de Package RPM est configurée par une fichier :file:`.spec`, un "
-"peu comme Distutils est configuré par script setup. Pour vous faciliter la "
-"tâche, la commande :command:`bdist_rpm` crée normalement un fichier :file:`."
-"spec` basé sur les informations que vous fournissez dans ``setup.py``, dans "
+"La création de Package RPM est configurée par un fichier :file:`.spec`, un "
+"peu comme Distutils est configuré par script *setup.py*. Pour vous faciliter "
+"la tâche, la commande :command:`bdist_rpm` crée normalement un fichier :file:"
+"`.spec` basé sur les informations que vous fournissez dans *setup.py*, dans "
"les options de la ligne de commande et dans la configuration de Distutils. "
"Beaucoup d'options du fichier :file:`.spec` sont dérivées des options du "
-"script de préparation suivant :"
+"script de préparation suivant :"
#: ../Doc/distutils/builtdist.rst:196 ../Doc/distutils/builtdist.rst:220
msgid "RPM :file:`.spec` file option or section"
@@ -469,7 +481,7 @@ msgstr "``description``"
#: ../Doc/distutils/builtdist.rst:202
msgid "Version"
-msgstr "*Version*"
+msgstr "Version"
#: ../Doc/distutils/builtdist.rst:202
msgid "``version``"
@@ -477,7 +489,7 @@ msgstr "``version``"
#: ../Doc/distutils/builtdist.rst:204 ../Doc/distutils/builtdist.rst:227
msgid "Vendor"
-msgstr "*vendor*"
+msgstr "Vendor"
#: ../Doc/distutils/builtdist.rst:204
msgid ""
@@ -497,7 +509,7 @@ msgstr "``license``"
#: ../Doc/distutils/builtdist.rst:210
msgid "Url"
-msgstr "*Url*"
+msgstr "Url"
#: ../Doc/distutils/builtdist.rst:210
msgid "``url``"
@@ -519,15 +531,15 @@ msgid ""
msgstr ""
"De plus, il y a beaucoup d'options dans le fichier :file:`.spec` qui n'ont "
"aucun équivalent dans le script de préparation. La plupart de celles ci sont "
-"gérées par les options de la commande :command:`bdist_rpm` suivant:"
+"gérées par les options de la commande :command:`bdist_rpm` suivant :"
#: ../Doc/distutils/builtdist.rst:220
msgid ":command:`bdist_rpm` option"
-msgstr "Option de :command:`bdist_rpm` "
+msgstr "Option de :command:`bdist_rpm`"
#: ../Doc/distutils/builtdist.rst:220
msgid "default value"
-msgstr "Valeur par défaut"
+msgstr "valeur par défaut"
#: ../Doc/distutils/builtdist.rst:223
msgid "Release"
@@ -543,7 +555,7 @@ msgstr "\"1\""
#: ../Doc/distutils/builtdist.rst:225
msgid "Group"
-msgstr "*Group*"
+msgstr "Group"
#: ../Doc/distutils/builtdist.rst:225
msgid "``group``"
@@ -563,7 +575,7 @@ msgstr "(voir au-dessus)"
#: ../Doc/distutils/builtdist.rst:229
msgid "Packager"
-msgstr "*Packager*"
+msgstr "Packager"
#: ../Doc/distutils/builtdist.rst:229
msgid "``packager``"
@@ -578,7 +590,7 @@ msgstr "(none)"
#: ../Doc/distutils/builtdist.rst:231
msgid "Provides"
-msgstr "*Provides*"
+msgstr "Provides"
#: ../Doc/distutils/builtdist.rst:231
msgid "``provides``"
@@ -586,7 +598,7 @@ msgstr "``provides``"
#: ../Doc/distutils/builtdist.rst:233
msgid "Requires"
-msgstr "*Requires*"
+msgstr "Requires"
#: ../Doc/distutils/builtdist.rst:233
msgid "``requires``"
@@ -594,7 +606,7 @@ msgstr "``requires``"
#: ../Doc/distutils/builtdist.rst:235
msgid "Conflicts"
-msgstr "*Conflicts*"
+msgstr "Conflicts"
#: ../Doc/distutils/builtdist.rst:235
msgid "``conflicts``"
@@ -602,7 +614,7 @@ msgstr "``conflicts``"
#: ../Doc/distutils/builtdist.rst:237
msgid "Obsoletes"
-msgstr "*Obsoletes*"
+msgstr "Obsoletes"
#: ../Doc/distutils/builtdist.rst:237
msgid "``obsoletes``"
@@ -610,7 +622,7 @@ msgstr "``obsoletes``"
#: ../Doc/distutils/builtdist.rst:239
msgid "Distribution"
-msgstr "*Distribution*"
+msgstr "Distribution"
#: ../Doc/distutils/builtdist.rst:239
msgid "``distribution_name``"
@@ -618,7 +630,7 @@ msgstr "``distribution_name``"
#: ../Doc/distutils/builtdist.rst:241
msgid "BuildRequires"
-msgstr "*BuildRequires*"
+msgstr "BuildRequires"
#: ../Doc/distutils/builtdist.rst:241
msgid "``build_requires``"
@@ -626,7 +638,7 @@ msgstr "``build_requires``"
#: ../Doc/distutils/builtdist.rst:243
msgid "Icon"
-msgstr "*Icon*"
+msgstr "Icon"
#: ../Doc/distutils/builtdist.rst:243
msgid "``icon``"
@@ -643,6 +655,14 @@ msgid ""
"disable this file, you can pass the :option:`!--no-user-cfg` option to :file:"
"`setup.py`."
msgstr ""
+"Fournir ces options en ligne de commande est fastidieux et sujet à des "
+"erreurs, il est donc recommandé de les mettre dans un fichier de "
+"configuration. :file:`setup.cfg`\\ --- voir la section :ref:`setup-config`. "
+"Si vous distribuez ou empaquetez beaucoup de modules de distribution Python, "
+"vous pourriez vouloir mettre les options qui s'appliquent à tous vos projets "
+"dans votre fichier de configuration personnel Distutils (:file:`~/."
+"pydistutils.cfg`). Si vous voulez temporairement désactiver ce fichier, vous "
+"pouvez passer l'option :option:`!--no-user-cfg` à :file:`setup.py`."
#: ../Doc/distutils/builtdist.rst:254
msgid ""
@@ -650,7 +670,7 @@ msgid ""
"handled automatically by the Distutils:"
msgstr ""
"La création de binaire RPM se fait en trois étapes, chacune gérée "
-"automatiquement par Distutils:"
+"automatiquement par Distutils :"
#: ../Doc/distutils/builtdist.rst:257
msgid ""
@@ -658,20 +678,20 @@ msgid ""
"Distutils setup script; in fact, much of the information in the setup "
"script winds up in the :file:`.spec` file)"
msgstr ""
-"Créer un fichier :file:`.spec` qui décrira le paquet (comme le script de "
+"crée un fichier :file:`.spec` qui décrit le paquet (comme le script de "
"préparation Distutils, en réalité la plupart des informations du script de "
"préparation se retrouve dans le fichier :file:`.spec`)"
#: ../Doc/distutils/builtdist.rst:261
msgid "create the source RPM"
-msgstr "creer un RPM source"
+msgstr "crée un RPM source"
#: ../Doc/distutils/builtdist.rst:263
msgid ""
"create the \"binary\" RPM (which may or may not contain binary code, "
"depending on whether your module distribution contains Python extensions)"
msgstr ""
-"Créer le RPM \"binaire\" (qui peut ou non contenir des binaires, tout dépend "
+"crée le RPM \"binaire\" (qui peut ou non contenir des binaires, tout dépend "
"de si votre module contiens des extensions)"
#: ../Doc/distutils/builtdist.rst:266
@@ -679,7 +699,7 @@ msgid ""
"Normally, RPM bundles the last two steps together; when you use the "
"Distutils, all three steps are typically bundled together."
msgstr ""
-"Normalement, RPM réunit les deux dernières étapes ensemble; quand vous "
+"Normalement, RPM réunit les deux dernières étapes ensemble ; quand vous "
"utilisez Distutils, les trois étapes sont regroupées."
#: ../Doc/distutils/builtdist.rst:269
@@ -692,6 +712,14 @@ msgid ""
"winds up deep in the \"build tree,\" in a temporary directory created by :"
"command:`bdist_rpm`.)"
msgstr ""
+"Si vous le souhaitez, vous pouvez séparer ces trois étapes. Vous pouvez "
+"utiliser l'option :option:`!--spec-only` pour faire en sorte que la "
+"commande :command:`bdist_rpm` crée juste le fichier :file:`.spec` et "
+"quitte ; dans ce cas, le fichier :file:`.spec` sera écrit dans le dossier de "
+"distribution (\"*distribution directory*\") --- normalement :file:`dist/`, "
+"mais personnalisable avec l'option :option:`!--dist-dir`. (Normalement, le "
+"fichier :file:`.spec` se retrouve profondément enfoui dans l'arborescence, "
+"dans un dossier temporaire créé par la commande :command:`bdist_rpm`.)"
#: ../Doc/distutils/builtdist.rst:297
msgid "Creating Windows Installers"
@@ -705,7 +733,7 @@ msgid ""
"metadata in the setup script, let the user select a few options, and start "
"or cancel the installation."
msgstr ""
-"Les installateurs exécutable sont le format naturel pour les distributions "
+"Les installateurs exécutables sont le format naturel pour les distributions "
"sur Windows. Ils affichent une jolie interface graphique, montrent quelques "
"informations à propos du module qui va être installé, tiré des métadonnées "
"dans le script de préparation, laisse l'utilisateur choisir quelques options "
@@ -716,12 +744,12 @@ msgid ""
"Since the metadata is taken from the setup script, creating Windows "
"installers is usually as easy as running::"
msgstr ""
-"Etant donné que les métadonnées sont tirées du script de préparation, créer "
-"un installateur Windows est généralement facile, il suffit de lancer::"
+"Étant donné que les métadonnées sont tirées du script de préparation, créer "
+"un installateur Windows est généralement facile, il suffit de lancer ::"
#: ../Doc/distutils/builtdist.rst:310
msgid "or the :command:`bdist` command with the :option:`!--formats` option::"
-msgstr ""
+msgstr "ou la commande :command:`bdist` avec l'option :option:`!--formats` ::"
#: ../Doc/distutils/builtdist.rst:314
msgid ""
@@ -757,6 +785,11 @@ msgid ""
"`bdist_wininst` command with the :option:`!--no-target-compile` and/or the :"
"option:`!--no-target-optimize` option."
msgstr ""
+"L'installeur essaiera de compiler les modules purs en :term:`bytecode` après "
+"installation sur le système cible dans les modes normaux et optimisé. Si "
+"vous ne voulez pas que ce soit fait, vous pouvez lancer la commande :command:"
+"`bdist_wininst` avec l'option :option:`!--no-target-compile` et/ou l'option :"
+"option:`!--no-target-optimize`."
#: ../Doc/distutils/builtdist.rst:331
msgid ""
@@ -764,6 +797,9 @@ msgid ""
"it is run, but you can also supply your own 152x261 bitmap which must be a "
"Windows :file:`.bmp` file with the :option:`!--bitmap` option."
msgstr ""
+"Par défaut l'installateur affichera le super logo \"Python Powered\", mais "
+"vous pouvez aussi donnez votre propre bitmap de 152x261 qui doit être un "
+"fichier :file:`.bmp` Windows avec l'option :option:`!--bitmap`."
#: ../Doc/distutils/builtdist.rst:335
msgid ""
@@ -772,6 +808,10 @@ msgid ""
"distribution and the version number. This can be changed to another text by "
"using the :option:`!--title` option."
msgstr ""
+"L'installateur affichera aussi un grand titre en arrière plan de la fenêtre "
+"quand exécuté, qui est composé du nom de votre distribution et du numéro de "
+"version. Cela peut être changé avec un autre texte avec l'option :option:`!--"
+"title`."
#: ../Doc/distutils/builtdist.rst:340
msgid ""
@@ -779,6 +819,9 @@ msgid ""
"normally :file:`dist/`, but customizable with the :option:`!--dist-dir` "
"option."
msgstr ""
+"Le fichier d'installation sera écrit dans le dossier de distribution "
+"(\"*distribution directory*\") --- normalement :file:`dist/`, mais "
+"personnalisable avec l'option :option:`!--dist-dir`."
#: ../Doc/distutils/builtdist.rst:346
msgid "Cross-compiling on Windows"
@@ -791,7 +834,7 @@ msgid ""
"installed, you can use a 32bit version of Windows to create 64bit extensions "
"and vice-versa."
msgstr ""
-"Depuis Python 2.6, distutils est capable de compiler pour toute les "
+"Depuis Python 2.6, *distutils* est capable de compiler pour toutes les "
"plateformes de Windows. En pratique, cela signifie qu'avec les bons outils "
"installés, vous pouvez utiliser une version 32 bits de Windows pour créer "
"une extension 64 bits et vice-versa."
@@ -809,16 +852,16 @@ msgid ""
"to build a 64bit version of your extension. The Windows Installers also "
"support this option, so the command::"
msgstr ""
-"Pour construire une version 64 bits de votre module. L'installateur Windows "
-"supporte aussi cette option, donc la commande::"
+"pour construire une version 64 bits de votre module. L'installateur Windows "
+"supporte aussi cette option, donc la commande ::"
#: ../Doc/distutils/builtdist.rst:364
msgid ""
"would create a 64bit installation executable on your 32bit version of "
"Windows."
msgstr ""
-"créera un installateur executable 64 bits depuis votre version 32 bits de "
-"Windows. "
+"créera un installateur exécutable 64 bits depuis votre version 32 bits de "
+"Windows."
#: ../Doc/distutils/builtdist.rst:366
msgid ""
@@ -848,9 +891,9 @@ msgid ""
"to check or modify your existing install.)"
msgstr ""
"Remarquez que par défaut Visual Studio 2008 n'installe pas les outils et "
-"compilateur 64 bits. Vous devrez peut être re-executer le processus "
-"d'installation et sélectionner ces outils (utiliser le Panneau de Contrôle-"
-">[Ajouter/Supprimer] est un bon moyen de vérifier ou modifier votre "
+"compilateur 64 bits. Vous devrez peut-être ré-exécuter le processus "
+"d'installation et sélectionner ces outils (utiliser le *Panneau de Contrôle -"
+"> [Ajouter/Supprimer]* est un bon moyen de vérifier ou modifier votre "
"installation existante.)"
#: ../Doc/distutils/builtdist.rst:383
@@ -864,6 +907,9 @@ msgid ""
"specified, and the script filename must also be listed in the scripts "
"argument to the setup function."
msgstr ""
+"Depuis Python 2.3, un script post-installation peut être spécifié avec "
+"l'option :option:`!--install-script`. Le nom du script doit être spécifié et "
+"présent dans l'argument \"scripts\" de la fonction ``setup``."
#: ../Doc/distutils/builtdist.rst:390
msgid ""
@@ -872,6 +918,11 @@ msgid ""
"again at uninstallation time before the files are removed with ``argv[1]`` "
"set to :option:`!-remove`."
msgstr ""
+"Ce script doit être lancé au moment de l'installation sur le système cible "
+"après que tous les fichiers ont été copiés, avec la valeur de ``argv[1]`` "
+"à :option:`!-install`, et une autre fois durant la désinstallation avant "
+"que les fichiers soient supprimés avec la valeur de ``argv[1]`` à :option:`!-"
+"remove`."
#: ../Doc/distutils/builtdist.rst:395
msgid ""
@@ -888,8 +939,8 @@ msgid ""
"Some functions especially useful in this context are available as additional "
"built-in functions in the installation script."
msgstr ""
-"certaines fonctions spécialement utiles dans ce contexte sont disponibles "
-"comme fonctions intégrées additionnelles dans le script d'installation."
+"Certaines fonctions spécialement utiles dans ce contexte sont disponibles "
+"comme fonctions natives additionnelles dans le script d'installation."
#: ../Doc/distutils/builtdist.rst:406
msgid ""
@@ -900,7 +951,7 @@ msgid ""
msgstr ""
"Ces fonctions peuvent être appelées lorsqu'un répertoire ou un fichier est "
"crée par le script de post installation au moment de l'installation. Cela va "
-"enregistrer le *chemin* avec le des-installeur, de sorte qu'il soit retiré "
+"enregistrer le *chemin* avec le des-installateur, de sorte qu'il soit retiré "
"lors de la des-installation de la distribution. pour être sûr, les "
"répertoires sont uniquement retirés s'ils sont vides."
@@ -912,8 +963,8 @@ msgid ""
msgstr ""
"Cette fonction peut être utilisée pour extraire des localisations de "
"fichiers spéciaux sous Windows comme un menu démarrer ou le Bureau. Cela "
-"retourne le chemin complet pour le fichier. *csidl_string* doit être unes "
-"des chaines suivantes::"
+"renvoie le chemin complet pour le fichier. *csidl_string* doit être unes des "
+"chaines suivantes ::"
#: ../Doc/distutils/builtdist.rst:434
msgid "If the folder cannot be retrieved, :exc:`OSError` is raised."
@@ -946,12 +997,12 @@ msgstr ""
"spécifie les arguments de la ligne de commande, si existant. *cheminRep* est "
"le répertoire de travail pour le programme. *cheminIcone* est le fichier "
"contenant l’icône pour le raccourci, et *IndexIcone* est l'index pour "
-"l’icône dans le fichier *cheminIcone*. Encore, pour les details consulter la "
+"l’icône dans le fichier *cheminIcone*. Encore, pour les détails consulter la "
"documentation Microsoft pour l'interface :class:`ILienShell`."
#: ../Doc/distutils/builtdist.rst:454
msgid "Vista User Access Control (UAC)"
-msgstr "Controle d'accès utilisateur Vista (UAC)"
+msgstr "Contrôle d'accès utilisateur Vista (UAC)"
#: ../Doc/distutils/builtdist.rst:456
msgid ""
@@ -961,3 +1012,9 @@ msgid ""
"Python was installed for all users) and 'force' (meaning always prompt for "
"elevation)."
msgstr ""
+"Depuis Python 2.6, *bdist_wininst* accepte une option :option:`!--user-"
+"access-control`. Sa valeur par défaut est 'none' (Ce qui veut dire que aucun "
+"UAC est fait), et les autres valeurs valides sont 'auto' (ce qui veut dire "
+"qu'il faut demander une élévation de privilèges UAC si Python a été installé "
+"pour tous les utilisateurs) et 'force' (Toujours demander une élévation de "
+"privilèges)."
diff --git a/distutils/commandref.po b/distutils/commandref.po
index 5638b174f..bd8dd6869 100644
--- a/distutils/commandref.po
+++ b/distutils/commandref.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2018-03-21 00:48+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -41,7 +41,8 @@ msgstr ":command:`install_data`"
#: ../Doc/distutils/commandref.rst:37
msgid "This command installs all data files provided with the distribution."
-msgstr "Cette commande installe tout les fichier fournit avec la distribution"
+msgstr ""
+"Cette commande installe tous les fichiers fournis avec la distribution."
#: ../Doc/distutils/commandref.rst:43
msgid ":command:`install_scripts`"
@@ -49,11 +50,12 @@ msgstr ":command:`install_scripts`"
#: ../Doc/distutils/commandref.rst:45
msgid "This command installs all (Python) scripts in the distribution."
-msgstr "Cette commande installe tout les scripts (Python) dans la distribution"
+msgstr ""
+"Cette commande installe tout les scripts (Python) dans la distribution."
#: ../Doc/distutils/commandref.rst:54
msgid "Creating a source distribution: the :command:`sdist` command"
-msgstr "Créer une distribution source: la commande :command:`sdist` "
+msgstr "Créer une distribution source: la commande :command:`sdist`"
#: ../Doc/distutils/commandref.rst:58
msgid "The manifest template commands are:"
@@ -61,7 +63,7 @@ msgstr "Les commandes du modèle manifeste sont :"
#: ../Doc/distutils/commandref.rst:61
msgid "Command"
-msgstr "Command"
+msgstr "Commande"
#: ../Doc/distutils/commandref.rst:61
msgid "Description"
@@ -90,7 +92,7 @@ msgstr ":command:`recursive-include dir pat1 pat2 ...`"
#: ../Doc/distutils/commandref.rst:69
msgid "include all files under *dir* matching any of the listed patterns"
msgstr ""
-"inclut récurssivement tous les fichiers sous *dir* ressemblant aux modèles "
+"inclut récursivement tous les fichiers sous *dir* ressemblant aux modèles "
"listés"
#: ../Doc/distutils/commandref.rst:72
@@ -148,7 +150,7 @@ msgid ""
"filename character\" is platform-specific: on Unix it is anything except "
"slash; on Windows anything except backslash or colon."
msgstr ""
-"Les modèles sont de style Unix \"glob\": ``*`` correspond à n'importe quelle "
+"Les modèles sont de style Unix *glob* : ``*`` correspond à n'importe quelle "
"chaîne de caractères d'un nom de fichier valide, ``?`` correspond à un seul "
"caractère d'un nom de fichier valide et ``[range]`` correspond à n'importe "
"quel caractère dans la *range* (e.g., ``a-z``, ``a-zA-Z``, ``a-f0-9_.``). "
diff --git a/distutils/configfile.po b/distutils/configfile.po
index e05e3e941..2daae7c87 100644
--- a/distutils/configfile.po
+++ b/distutils/configfile.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-10 00:49+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -64,10 +64,10 @@ msgid ""
msgstr ""
#: ../Doc/distutils/configfile.rst:39
-msgid "The basic syntax of the configuration file is simple::"
+msgid "The basic syntax of the configuration file is simple:"
msgstr ""
-#: ../Doc/distutils/configfile.rst:45
+#: ../Doc/distutils/configfile.rst:47
msgid ""
"where *command* is one of the Distutils commands (e.g. :command:`build_py`, :"
"command:`install`), and *option* is one of the options that command "
@@ -78,37 +78,37 @@ msgid ""
"by indenting the continuation lines."
msgstr ""
-#: ../Doc/distutils/configfile.rst:53
+#: ../Doc/distutils/configfile.rst:55
msgid ""
"You can find out the list of options supported by a particular command with "
-"the universal :option:`!--help` option, e.g. ::"
+"the universal :option:`!--help` option, e.g."
msgstr ""
-#: ../Doc/distutils/configfile.rst:69
+#: ../Doc/distutils/configfile.rst:73
msgid ""
"Note that an option spelled :option:`!--foo-bar` on the command-line is "
"spelled ``foo_bar`` in configuration files."
msgstr ""
-#: ../Doc/distutils/configfile.rst:74
+#: ../Doc/distutils/configfile.rst:78
msgid ""
"For example, say you want your extensions to be built \"in-place\"---that "
"is, you have an extension :mod:`pkg.ext`, and you want the compiled "
"extension file (:file:`ext.so` on Unix, say) to be put in the same source "
"directory as your pure Python modules :mod:`pkg.mod1` and :mod:`pkg.mod2`. "
"You can always use the :option:`!--inplace` option on the command-line to "
-"ensure this::"
+"ensure this:"
msgstr ""
-#: ../Doc/distutils/configfile.rst:82
+#: ../Doc/distutils/configfile.rst:88
msgid ""
"But this requires that you always specify the :command:`build_ext` command "
"explicitly, and remember to provide :option:`!--inplace`. An easier way is "
"to \"set and forget\" this option, by encoding it in :file:`setup.cfg`, the "
-"configuration file for this distribution::"
+"configuration file for this distribution:"
msgstr ""
-#: ../Doc/distutils/configfile.rst:90
+#: ../Doc/distutils/configfile.rst:98
msgid ""
"This will affect all builds of this module distribution, whether or not you "
"explicitly specify :command:`build_ext`. If you include :file:`setup.cfg` "
@@ -121,7 +121,7 @@ msgid ""
"always a bad idea, though.)"
msgstr ""
-#: ../Doc/distutils/configfile.rst:99
+#: ../Doc/distutils/configfile.rst:107
msgid ""
"Another example: certain commands take a lot of options that don't change "
"from run to run; for example, :command:`bdist_rpm` needs to know everything "
@@ -130,30 +130,30 @@ msgid ""
"generated by the Distutils (such as the list of files installed). But some "
"of it has to be supplied as options to :command:`bdist_rpm`, which would be "
"very tedious to do on the command-line for every run. Hence, here is a "
-"snippet from the Distutils' own :file:`setup.cfg`::"
+"snippet from the Distutils' own :file:`setup.cfg`:"
msgstr ""
-#: ../Doc/distutils/configfile.rst:117
+#: ../Doc/distutils/configfile.rst:127
msgid ""
"Note that the ``doc_files`` option is simply a whitespace-separated string "
"split across multiple lines for readability."
msgstr ""
-#: ../Doc/distutils/configfile.rst:124
+#: ../Doc/distutils/configfile.rst:134
msgid ":ref:`inst-config-syntax` in \"Installing Python Modules\""
msgstr ""
-#: ../Doc/distutils/configfile.rst:124
+#: ../Doc/distutils/configfile.rst:134
msgid ""
"More information on the configuration files is available in the manual for "
"system administrators."
msgstr ""
-#: ../Doc/distutils/configfile.rst:129
+#: ../Doc/distutils/configfile.rst:139
msgid "Footnotes"
msgstr "Notes"
-#: ../Doc/distutils/configfile.rst:130
+#: ../Doc/distutils/configfile.rst:140
msgid ""
"This ideal probably won't be achieved until auto-configuration is fully "
"supported by the Distutils."
diff --git a/distutils/extending.po b/distutils/extending.po
index ce51ad708..b6c509bbd 100644
--- a/distutils/extending.po
+++ b/distutils/extending.po
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/extending.rst:5
msgid "Extending Distutils"
-msgstr ""
+msgstr "Extension de Distutils"
#: ../Doc/distutils/extending.rst:7
msgid ""
@@ -29,6 +29,11 @@ msgid ""
"while replacements for existing commands may be made to modify details of "
"how the command operates on a package."
msgstr ""
+"*Distutils* peut être étendu de multiples façons. La plupart des extensions "
+"sont soit des nouvelles commandes soit des remplacements de commandes "
+"existantes. De nouvelles commandes pourraient par exemple servir à "
+"l'empaquetage pour des plateformes spécifiques tandis que des remplacements "
+"peuvent modifier certains aspects des commandes existantes."
#: ../Doc/distutils/extending.rst:13
msgid ""
@@ -37,6 +42,9 @@ msgid ""
"that should be copied into packages in addition to :file:`.py` files as a "
"convenience."
msgstr ""
+"La plupart des extensions de *distutils* sont faites dans le script :file:"
+"`setup.py`. La plupart ajoutent simplement quelques extensions de fichiers "
+"qui devraient être copiés dans le paquet en plus des fichiers :file:`.py`."
#: ../Doc/distutils/extending.rst:18
msgid ""
@@ -46,10 +54,16 @@ msgid ""
"indirectly, directly subclassing the command they are replacing. Commands "
"are required to derive from :class:`Command`."
msgstr ""
+"La plupart des implémentations des commandes *distutils* sont des sous-"
+"classes de :class:`distutils.cmd.Command`. Les nouvelles commandes peuvent "
+"hériter directement de :class:`Command`, alors que les remplacements "
+"dérivent souvent de :class:`Command` indirectement, directement sous-"
+"classant la commande qu'ils remplacent. Les commandes doivent dériver de la "
+"classe :class:`Command`."
#: ../Doc/distutils/extending.rst:33
msgid "Integrating new commands"
-msgstr ""
+msgstr "Intégrer de nouvelles commandes"
#: ../Doc/distutils/extending.rst:35
msgid ""
@@ -58,6 +72,11 @@ msgid ""
"features in distutils itself, and wait for (and require) a version of Python "
"that provides that support. This is really hard for many reasons."
msgstr ""
+"Il y a différentes façons d’intégrer de nouvelles implémentations de "
+"commandes dans *distutils*. La plus difficile est de faire pression pour "
+"inclure une nouvelle fonctionnalité dans *distutils* même, et d’attendre (et "
+"demander) une version de Python l'implémentant. C'est très difficile pour "
+"beaucoup de raisons."
#: ../Doc/distutils/extending.rst:40
msgid ""
@@ -65,6 +84,10 @@ msgid ""
"include the new implementations with your :file:`setup.py` script, and cause "
"the :func:`distutils.core.setup` function use them::"
msgstr ""
+"La plus commune, et possiblement la plus raisonnable pour la plupart des "
+"cas, est d'inclure les nouvelles implémentations dans votre fichier :file:"
+"`setup.py`, et de faire en sorte que la fonction :func:`distutils.core."
+"setup` les utilise ::"
#: ../Doc/distutils/extending.rst:55
msgid ""
@@ -72,6 +95,10 @@ msgid ""
"use a particular package, as everyone interested in the package will need to "
"have the new command implementation."
msgstr ""
+"Cette approche est la plus valable si les nouvelles implémentations doivent "
+"être utilisées pour utiliser un paquet particulier, vu que toutes les "
+"personnes intéressées par le paquet devront avoir ces nouvelles "
+"implémentations de commandes."
#: ../Doc/distutils/extending.rst:59
msgid ""
@@ -90,6 +117,23 @@ msgid ""
"it to an empty string on the command line causes the default to be used. "
"This should never be set in a configuration file provided with a package."
msgstr ""
+"Depuis Python 2.4, une troisième option est disponible, prévue pour "
+"permettre d'ajouter de nouvelles commandes compatibles avec le script "
+"existant :file:`setup.py` sans avoir besoin de modifier l'installation "
+"Python. C'est fait pour que les extensions tierces puissent rester "
+"compatibles avec d'autres systèmes d'empaquetage, mais les commandes peuvent "
+"être utilisées pour tout ce que les commandes de *distutils* peuvent faire. "
+"Une nouvelle option de configuration, ``command_packages`` (option shell :"
+"option:`!--command-packages`), peut être utilisée pour spécifier des "
+"recherches de paquets additionnels pour des modules qui implémentent des "
+"commandes. Comme toutes les options *distutils*, cela peut être spécifié en "
+"ligne de commande ou dans un fichier de configuration. Cette option peut "
+"être fixée dans la section ``[global]`` d'un fichier de configuration, ou "
+"avant n'importe quelle commande dans un shell. Si définie dans un fichier de "
+"configuration, elle peut être écrasée depuis la ligne de commande. Mettre "
+"une chaine de caractères vide en valeur de cette option forcera "
+"l'utilisation de la valeur par défaut. Cela ne devrait jamais être fixé dans "
+"un fichier de configuration donné avec un paquet."
#: ../Doc/distutils/extending.rst:74
msgid ""
@@ -105,10 +149,23 @@ msgid ""
"could be implemented by the class :class:`distcmds.bdist_openpkg."
"bdist_openpkg` or :class:`buildcmds.bdist_openpkg.bdist_openpkg`."
msgstr ""
+"Cette nouvelle option peut être utilisée pour ajouter n'importe quel nombre "
+"de paquet à la liste des paquets recherchés pour les implémentations de "
+"commandes ; plusieurs noms de paquets doivent être séparés par des virgules. "
+"Quand non spécifié, la recherche est seulement faite dans le paquet :mod:"
+"`distutils.command`. Cependant, lorsque :file:`setup.py` est lancé avec "
+"l'option ``--command-packages distcmds,buildcmds``, les paquets :mod:"
+"`distutils.command`, :mod:`distcmds`, et :mod:`buildcmds` seront cherchés "
+"dans cet ordre. Il est attendu des nouvelles commandes d’être implémentées "
+"en modules du même nom que la commande en utilisant des classes partageant "
+"le même nom. Comme dans l'exemple shell donné ci-dessus, la commande :"
+"command:`bdist_openpkg` pourrait être implémentée avec la classe :class:"
+"`distcmds.bdist_openpkg.bdist_openpkg` ou :class:`buildcmds.bdist_openpkg."
+"bdist_openpkg`."
#: ../Doc/distutils/extending.rst:88
msgid "Adding new distribution types"
-msgstr ""
+msgstr "Ajout de nouveaux types de distribution"
#: ../Doc/distutils/extending.rst:90
msgid ""
@@ -119,3 +176,9 @@ msgid ""
"file itself. In dry-run mode, pairs should still be added to represent what "
"would have been created."
msgstr ""
+"Les commandes qui créent des distributions (fichiers dans le dossier :file:"
+"`dist/`) doivent ajouter la paire ``(command, filename)`` à ``self."
+"distribution.dist_files`` pour que :command:`upload` puisse publier sur "
+"PyPI. Le nom de fichier (*filename*) dans la paire ne contiens pas de "
+"chemin, juste le nom du fichier lui-même. En mode *dry-run*, les paires "
+"doivent toujours être ajoutées pour représenter ce qui aurait été créé."
diff --git a/distutils/index.po b/distutils/index.po
index 2434d3dfc..76d765e79 100644
--- a/distutils/index.po
+++ b/distutils/index.po
@@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-09-21 09:15+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2017-10-13 22:28+0200\n"
+"PO-Revision-Date: 2017-12-14 08:45+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,11 +19,19 @@ msgstr ""
#: ../Doc/distutils/index.rst:5
msgid "Distributing Python Modules (Legacy version)"
-msgstr ""
+msgstr "Distribuer des modules Python (Version historique)"
+
+#: ../Doc/distutils/index.rst:0
+msgid "Authors"
+msgstr "Auteurs"
#: ../Doc/distutils/index.rst:7
msgid "Greg Ward, Anthony Baxter"
-msgstr ""
+msgstr "Greg Ward, Anthony Baxter"
+
+#: ../Doc/distutils/index.rst:0
+msgid "Email"
+msgstr "Email"
#: ../Doc/distutils/index.rst:8
msgid "distutils-sig@python.org"
@@ -31,11 +39,11 @@ msgstr "distutils-sig@python.org"
#: ../Doc/distutils/index.rst:12
msgid ":ref:`distributing-index`"
-msgstr ""
+msgstr ":ref:`distributing-index`"
#: ../Doc/distutils/index.rst:13
msgid "The up to date module distribution documentations"
-msgstr ""
+msgstr "La documentation actuelle de distribution de modules"
#: ../Doc/distutils/index.rst:15
msgid ""
@@ -44,6 +52,11 @@ msgid ""
"Distutils to make Python modules and extensions easily available to a wider "
"audience with very little overhead for build/release/install mechanics."
msgstr ""
+"Ce document décrit les outils de distribution de Python (\"Distutils\") du "
+"point de vue d'un développeur de modules. Il décrit comment utiliser "
+"`Distutils` pour rendre des modules et extensions Python disponible à une "
+"large audience, simplement, avec un faible surcoût sur les mécaniques de "
+"construction, déploiement et installation."
#: ../Doc/distutils/index.rst:22
msgid ""
@@ -53,3 +66,8 @@ msgid ""
"recommendations section `__ "
"in the Python Packaging User Guide for more information."
msgstr ""
+"Ce guide ne couvre que les outils de base, fournis avec cette version de "
+"Python, pour construire et distribuer des extensions. D'autres outils "
+"peuvent être plus sécurisés et plus simple à utiliser. Consultez `quick "
+"recommendations section `__ "
+"dans le *Python Packaging User Guide* pour plus d'informations."
diff --git a/distutils/introduction.po b/distutils/introduction.po
index feac01af5..93a24310c 100644
--- a/distutils/introduction.po
+++ b/distutils/introduction.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/introduction.rst:5
msgid "An Introduction to Distutils"
-msgstr ""
+msgstr "Introduction à Distutils"
#: ../Doc/distutils/introduction.rst:7
msgid ""
@@ -28,10 +28,14 @@ msgid ""
"information on installing Python modules, you should refer to the :ref:"
"`install-index` chapter."
msgstr ""
+"Ce document traite de l'utilisation de Distutils pour distribuer des modules "
+"Python, en se concentrant sur le rôle de développeur/distributeur : si vous "
+"cherchez des informations sur l'installation de modules Python, vous devriez "
+"vous référer au chapitre :ref:`install-index`."
#: ../Doc/distutils/introduction.rst:16
msgid "Concepts & Terminology"
-msgstr ""
+msgstr "Concepts et Terminologie"
#: ../Doc/distutils/introduction.rst:18
msgid ""
@@ -40,26 +44,30 @@ msgid ""
"responsibilities (apart from writing solid, well-documented and well-tested "
"code, of course!) are:"
msgstr ""
+"Utiliser Distuils est assez simple, à la fois pour les développeurs de "
+"module et pour les utilisateurs/administrateurs qui installent des modules "
+"tiers. En tant que développeur, vos responsabilités (en plus d'écrire du "
+"code solide, bien documenté et bien testé, bien entendu !) sont :"
#: ../Doc/distutils/introduction.rst:23
msgid "write a setup script (:file:`setup.py` by convention)"
-msgstr ""
+msgstr "écrire un script d'installation (:file:`setup.py` par convention) ;"
#: ../Doc/distutils/introduction.rst:25
msgid "(optional) write a setup configuration file"
-msgstr ""
+msgstr "(optionnel) écrire un fichier de configuration pour l'installation ;"
#: ../Doc/distutils/introduction.rst:27
msgid "create a source distribution"
-msgstr ""
+msgstr "créer une distribution source ;"
#: ../Doc/distutils/introduction.rst:29
msgid "(optional) create one or more built (binary) distributions"
-msgstr ""
+msgstr "(optionnel) créer une ou plusieurs distributions compilées (binaires)."
#: ../Doc/distutils/introduction.rst:31
msgid "Each of these tasks is covered in this document."
-msgstr ""
+msgstr "Chacune de ces tâches est couverte dans ce document."
#: ../Doc/distutils/introduction.rst:33
msgid ""
@@ -73,6 +81,16 @@ msgid ""
"module distributions in the most natural way for their platform, without "
"having to run a single setup script or compile a line of code."
msgstr ""
+"Tous les développeurs de modules n'ont pas accès à une multitude de "
+"plateformes, donc on ne peut pas exiger d'eux qu'ils créent une multitude de "
+"distributions compilées. On s'attend à ce que certains intermédiaires, "
+"appelés *packagers*, prennent en charge ce besoin. Les packagers vont "
+"prendre les sources des distributions publiées par les développeurs de "
+"modules, les construire sur on ou plusieurs plateformes, et publier les "
+"distributions compilées résultantes. Ainsi, les utilisateurs sur les "
+"plateformes les plus populaires vont pouvoir installer la plupart des "
+"modules Python de la façon la plus naturelle qui soit pour leur plateforme, "
+"sans avoir à exécuter de script ou à compiler du code."
#: ../Doc/distutils/introduction.rst:47
msgid "A Simple Example"
@@ -87,22 +105,33 @@ msgid ""
"script may be run multiple times in the course of building and installing "
"your module distribution."
msgstr ""
+"Le script d'installation est habituellement assez simple, même s'il n'y a "
+"pas de limite à ce qu'il peut faire (il est écrit en Python, n'est-ce "
+"pas ?). Veillez d'ailleurs à ne pas surcharger ce script avec des opérations "
+"coûteuses car, contrairement aux scripts de configuration façon Autoconf, le "
+"script d'installation peut être amené à être exécuté plusieurs fois au cours "
+"de la compilation et de l'installation du module. "
#: ../Doc/distutils/introduction.rst:56
msgid ""
"If all you want to do is distribute a module called :mod:`foo`, contained in "
"a file :file:`foo.py`, then your setup script can be as simple as this::"
msgstr ""
+"Si tout ce que vous voulez est de distribuer un module appelé :mod:`foo`, "
+"contenu dans un fichier :file:`foo.py`, alors votre script d'installation "
+"peut se résumer à :"
#: ../Doc/distutils/introduction.rst:65
msgid "Some observations:"
-msgstr ""
+msgstr "Quelques observations :"
#: ../Doc/distutils/introduction.rst:67
msgid ""
"most information that you supply to the Distutils is supplied as keyword "
"arguments to the :func:`setup` function"
msgstr ""
+"la plupart des informations que vous fournissez à Distutils sont fournies en "
+"tant que qu'arguments nommés à la fonction :func:`setup`;"
#: ../Doc/distutils/introduction.rst:70
msgid ""
@@ -110,12 +139,17 @@ msgid ""
"version number) and information about what's in the package (a list of pure "
"Python modules, in this case)"
msgstr ""
+"ces arguments nommés tombent dans deux catégories : métadonnées du paquet "
+"(nom, numéro de version) et des informations sur le contenu du paquet paquet "
+"(une liste de purs modules Python, dans ce cas) ; "
#: ../Doc/distutils/introduction.rst:74
msgid ""
"modules are specified by module name, not filename (the same will hold true "
"for packages and extensions)"
msgstr ""
+"les modules sont listés par nom de module, plutôt que par nom de fichier (le "
+"cas est similaire pour les paquets et extensions) ;"
#: ../Doc/distutils/introduction.rst:77
msgid ""
@@ -123,6 +157,9 @@ msgid ""
"name, email address and a URL for the project (see section :ref:`setup-"
"script` for an example)"
msgstr ""
+"il est recommandé de fournir un minimum de métadonnées, en particulier votre "
+"nom, une adresse de courriel et une URL pour le projet (voir section :ref:"
+"`setup-script` pour un exemple)."
#: ../Doc/distutils/introduction.rst:81
msgid ""
@@ -130,12 +167,17 @@ msgid ""
"script, :file:`setup.py`, containing the above code, and run this command "
"from a terminal::"
msgstr ""
+"Pour créer une distribution source pour ce module, il faut créer un script "
+"d'installation, :file:`setup.py`, contenant le code ci-dessus, et exécuter "
+"cette commande depuis un terminal :"
#: ../Doc/distutils/introduction.rst:87
msgid ""
"For Windows, open a command prompt window (:menuselection:`Start --> "
"Accessories`) and change the command to::"
msgstr ""
+"Pour Windows, ouvrez une invite de commande (:menuselection:`Démarrer --> "
+"Accessoires`) et changez la commande en :"
#: ../Doc/distutils/introduction.rst:92
msgid ""
@@ -144,6 +186,11 @@ msgid ""
"module :file:`foo.py`. The archive file will be named :file:`foo-1.0.tar.gz` "
"(or :file:`.zip`), and will unpack into a directory :file:`foo-1.0`."
msgstr ""
+":command:`sdist` va créer un fichier d'archive (p. ex. une archive *tar* sur "
+"Unix, un fichier ZIP sous Windows) contenant votre script d'installation :"
+"file:`setup.py`, et votre module :file:`foo.py`. Le fichier d'archive va "
+"être nommé :file:`foo-1.0.tar.gz` (ou :file:`.zip`), et va se décompresser "
+"dans un répertoire :file:`foo-1.0`."
#: ../Doc/distutils/introduction.rst:97
msgid ""
@@ -157,6 +204,8 @@ msgid ""
"which will ultimately copy :file:`foo.py` to the appropriate directory for "
"third-party modules in their Python installation."
msgstr ""
+"ce qui va finalement copier :file:`foo.py` dans le répertoire approprié pour "
+"un module tiers dans son installation Python."
#: ../Doc/distutils/introduction.rst:106
msgid ""
@@ -167,6 +216,13 @@ msgid ""
"while :command:`install` is more often for installers (although most "
"developers will want to install their own code occasionally)."
msgstr ""
+"Ce simple exemple démontre des concepts fondamentaux de Distutils, "
+"Premièrement, les développeurs et installeurs ont la même interface "
+"utilisateur basique, p. ex. le script d'installation. La différence est "
+"quelle *commande* Distutils ils utilisent : la commande :command:`sdist` est "
+"quasiment exclusivement pour les développeurs de modules Python, tandis que :"
+"command:`install` est plus souvent pour les installeurs (bien que la plupart "
+"des développeurs vont vouloir installer leur code occasionnellement)."
#: ../Doc/distutils/introduction.rst:113
msgid ""
@@ -177,12 +233,21 @@ msgid ""
"distribution for this platform) with the :command:`bdist_wininst` command. "
"For example::"
msgstr ""
+"Si vous voulez rendre les choses vraiment faciles pour vos utilisateurs, "
+"vous pouvez créer on ou plusieurs distributions compilées pour eux. En "
+"l’occurrence, si vous tournez sous une machine Windows, et que vous voulez "
+"rendre les choses faciles pour les autres utilisateurs Windows, vous pouvez "
+"créer un installateur exécutable (le mode de distribution le plus approprié "
+"pour cette plateforme) avec la commande :command:`bdist_wininst`. Par "
+"exemple :"
#: ../Doc/distutils/introduction.rst:121
msgid ""
"will create an executable installer, :file:`foo-1.0.win32.exe`, in the "
"current directory."
msgstr ""
+"va créer une installeur exécutable, :file:`foo-1.0.win32.exe`, dans le "
+"répertoire courant."
#: ../Doc/distutils/introduction.rst:124
msgid ""
@@ -191,6 +256,11 @@ msgid ""
"and HP-UX :program:`swinstall` (:command:`bdist_sdux`). For example, the "
"following command will create an RPM file called :file:`foo-1.0.noarch.rpm`::"
msgstr ""
+"D'autres formats de distributions compilés utiles sont RPM, implémenté par "
+"la commande :command:`bdist_rpm`, Solaris :program:`pkgtool` (:command:"
+"`bdist_pkgtool`), et HP-UX :program:`swinstall` (:command:`bdist_sdux`). Par "
+"exemple, la commande suivante va créer un fichier RPM appelé :file:`foo-1.0."
+"noarch.rpm`::"
#: ../Doc/distutils/introduction.rst:132
msgid ""
@@ -198,16 +268,21 @@ msgid ""
"therefore this has to be run on an RPM-based system such as Red Hat Linux, "
"SuSE Linux, or Mandrake Linux.)"
msgstr ""
+"(La commande :command:`bdist_rpm` utilise l'exécutable :command:`rpm`, "
+"cependant cela doit être exécuté sur un système basé sur RPM tel que Red Hat "
+"Linux, SuSE Linux, or Mandrake Linux.)"
#: ../Doc/distutils/introduction.rst:136
msgid ""
"You can find out what distribution formats are available at any time by "
"running ::"
msgstr ""
+"Vous pouvez trouver quelles sont les formats de distribution disponibles à "
+"n'importe quel moment en exécutant :"
#: ../Doc/distutils/introduction.rst:145
msgid "General Python terminology"
-msgstr ""
+msgstr "Terminologie Python générale"
#: ../Doc/distutils/introduction.rst:147
msgid ""
@@ -216,6 +291,10 @@ msgid ""
"everyone is operating from a common starting point, we offer the following "
"glossary of common Python terms:"
msgstr ""
+"Si vous lisez ce document, vous avez probablement une bonne idée de ce que "
+"sont les modules, extensions, etc. Néanmoins, juste pour être sur que tout "
+"le monde opère depuis un point d'entrée commun, nous reprécisons le "
+"glossaire suivant des termes Python communs :"
#: ../Doc/distutils/introduction.rst:155
msgid "module"
@@ -227,10 +306,13 @@ msgid ""
"some other code. Three types of modules concern us here: pure Python "
"modules, extension modules, and packages."
msgstr ""
+"unité de base de la réutilisabilité en Python : un bloc de code importé par "
+"un autre code. Trois types de modules nous concernent ici : les purs modules "
+"Python, les modules d'extension, et les packages."
#: ../Doc/distutils/introduction.rst:160
msgid "pure Python module"
-msgstr ""
+msgstr "pur module Python"
#: ../Doc/distutils/introduction.rst:158
msgid ""
@@ -238,6 +320,8 @@ msgid ""
"possibly associated :file:`.pyc` files). Sometimes referred to as a \"pure "
"module.\""
msgstr ""
+"un module écrit en Python et contenu dans un seul fichier :file:`.py` (et "
+"possiblement un fichier :file:`.pyc` associé). Parfois appelé \"pur module.\""
#: ../Doc/distutils/introduction.rst:168
msgid "extension module"
@@ -253,6 +337,13 @@ msgid ""
"(Note that currently, the Distutils only handles C/C++ extensions for "
"Python.)"
msgstr ""
+"un module écrit dans un langage de bas niveau de l'implémentation Python: C/C"
+"++ pour Python, Java pour Jython. Typiquement contenu dans un unique fichier "
+"pré-compilé chargeable, p. ex. un fichier objet partagé (:file:`.so`) pour "
+"des extensions Python sous Unix, un fichier DLL (étant donné l'extension :"
+"file:`.pyd`) pour les extensions Python sous Windows, ou un fichier de "
+"classe Java pour les extensions Jython (notez qu'actuellement, Distutils "
+"gère seulement les extensions Python C/C++)."
#: ../Doc/distutils/introduction.rst:173
msgid "package"
@@ -264,6 +355,9 @@ msgid ""
"the filesystem and distinguished from other directories by the presence of a "
"file :file:`__init__.py`."
msgstr ""
+"un module qui contient d'autres modules ; très souvent contenu dans un "
+"répertoire du système de fichier et qui se distingue des autres répertoires "
+"par la présence d'un fichier :file:`__init__.py`."
#: ../Doc/distutils/introduction.rst:183
msgid "root package"
@@ -279,54 +373,73 @@ msgid ""
"package can be found in many directories: in fact, every directory listed in "
"``sys.path`` contributes modules to the root package."
msgstr ""
+"la racine de la hiérarchie de paquets. (Ce n'est pas vraiment un paquet, "
+"puisqu'il n'a pas un fichier :file:`__init__.py`. Mais nous devons bien le "
+"nommer.) La grande majorité de la bibliothèque standard est dans le package "
+"racine, comme le sont certains petits, des packages tiers autonomes qui "
+"n'appartiennent pas à une un module plus grand. Contrairement aux packages "
+"réguliers, les modules dans le package racine peuvent être trouvés dans "
+"plusieurs répertoires : en effet, tous les répertoires listés ``sys.path`` "
+"contribuent à faire partie du package racine."
#: ../Doc/distutils/introduction.rst:188
msgid "Distutils-specific terminology"
-msgstr ""
+msgstr "Terminologie spécifique à Distutils"
#: ../Doc/distutils/introduction.rst:190
msgid ""
"The following terms apply more specifically to the domain of distributing "
"Python modules using the Distutils:"
msgstr ""
+"Les termes suivant s'appliquent plus spécifiquement au domaine de la "
+"distribution de modules Python en utilisant les Distutils :"
#: ../Doc/distutils/introduction.rst:199
msgid "module distribution"
-msgstr ""
+msgstr "module de distribution"
#: ../Doc/distutils/introduction.rst:194
msgid ""
"a collection of Python modules distributed together as a single downloadable "
"resource and meant to be installed *en masse*. Examples of some well-known "
-"module distributions are NumPy, SciPy, PIL (the Python Imaging Library), or "
-"mxBase. (This would be called a *package*, except that term is already "
-"taken in the Python context: a single module distribution may contain zero, "
-"one, or many Python packages.)"
+"module distributions are NumPy, SciPy, Pillow, or mxBase. (This would be "
+"called a *package*, except that term is already taken in the Python context: "
+"a single module distribution may contain zero, one, or many Python packages.)"
msgstr ""
+"une collection de modules Python distribués ensemble, comme une unique "
+"ressource téléchargeable et ayant pour but d'être installé *en bloc*. Des "
+"exemples de modules distribués bien connus sont *NumPy*, *SciPy*, *Pillow*, "
+"ou *mxBase*. (On pourrait les appeler des *packages*, malgré que le terme "
+"soit déjà pris dans le contexte Python : une distribution de module simple "
+"pourrait contenir zéro, on ou plusieurs packages Python"
#: ../Doc/distutils/introduction.rst:203
msgid "pure module distribution"
-msgstr ""
+msgstr "distribution de modules purs"
#: ../Doc/distutils/introduction.rst:202
msgid ""
"a module distribution that contains only pure Python modules and packages. "
"Sometimes referred to as a \"pure distribution.\""
msgstr ""
+"une distribution de module qui contient seulement des modules purs et "
+"packages Python. Parfois appelée « distribution pure »."
#: ../Doc/distutils/introduction.rst:207
msgid "non-pure module distribution"
-msgstr ""
+msgstr "distribution de module non pur"
#: ../Doc/distutils/introduction.rst:206
msgid ""
"a module distribution that contains at least one extension module. "
"Sometimes referred to as a \"non-pure distribution.\""
msgstr ""
+"une distribution de module qui contient au moins un module d'extension. "
+"Parfois appelée « distribution non-pure »."
#: ../Doc/distutils/introduction.rst:211
msgid "distribution root"
-msgstr ""
+msgstr "distribution racine"
#: ../Doc/distutils/introduction.rst:210
msgid ""
@@ -334,3 +447,6 @@ msgid ""
"directory where :file:`setup.py` exists. Generally :file:`setup.py` will "
"be run from this directory."
msgstr ""
+"le répertoire de plus haut niveau de votre arborescence (ou distribution "
+"source) ; le répertoire ou :file:`setup.py` existe. Généralement :file:"
+"`setup.py` est exécuté depuis ce répertoire."
diff --git a/distutils/packageindex.po b/distutils/packageindex.po
index 3a8afaa72..af21089c2 100644
--- a/distutils/packageindex.po
+++ b/distutils/packageindex.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-10 00:49+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/packageindex.rst:9
msgid "The Python Package Index (PyPI)"
-msgstr ""
+msgstr "L'index de paquets Python (*Python Package Index* : PyPI)"
#: ../Doc/distutils/packageindex.rst:11
msgid ""
@@ -214,96 +214,96 @@ msgid ""
"existence of a :file:`.pypirc` file at the location :file:`$HOME/.pypirc`. "
"If this file exists, the command uses the username, password, and repository "
"URL configured in the file. The format of a :file:`.pypirc` file is as "
-"follows::"
+"follows:"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:170
+#: ../Doc/distutils/packageindex.rst:172
msgid ""
"The *distutils* section defines an *index-servers* variable that lists the "
"name of all sections describing a repository."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:173
+#: ../Doc/distutils/packageindex.rst:175
msgid "Each section describing a repository defines three variables:"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:175
+#: ../Doc/distutils/packageindex.rst:177
msgid "*repository*, that defines the url of the PyPI server. Defaults to"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:176
+#: ../Doc/distutils/packageindex.rst:178
msgid "``https://upload.pypi.org/legacy/``."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:177
+#: ../Doc/distutils/packageindex.rst:179
msgid "*username*, which is the registered username on the PyPI server."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:179
+#: ../Doc/distutils/packageindex.rst:181
msgid "*password*, that will be used to authenticate. If omitted the user"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:179
+#: ../Doc/distutils/packageindex.rst:181
msgid "will be prompt to type it when needed."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:181
+#: ../Doc/distutils/packageindex.rst:183
msgid ""
"If you want to define another server a new section can be created and listed "
-"in the *index-servers* variable::"
+"in the *index-servers* variable:"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:199
+#: ../Doc/distutils/packageindex.rst:203
msgid ""
"This allows the :command:`register` and :command:`upload` commands to be "
"called with the ``--repository`` option as described in :ref:`package-"
"cmdoptions`."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:203
+#: ../Doc/distutils/packageindex.rst:207
msgid ""
"Specifically, you might want to add the `PyPI Test Repository `_ to your ``.pypirc`` to facilitate testing before "
"doing your first upload to ``PyPI`` itself."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:211
+#: ../Doc/distutils/packageindex.rst:215
msgid "PyPI package display"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:213
+#: ../Doc/distutils/packageindex.rst:217
msgid ""
"The ``long_description`` field plays a special role at PyPI. It is used by "
"the server to display a home page for the registered package."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:216
+#: ../Doc/distutils/packageindex.rst:220
msgid ""
"If you use the `reStructuredText `_ syntax for this field, PyPI will parse it and display an HTML output "
"for the package home page."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:220
+#: ../Doc/distutils/packageindex.rst:224
msgid ""
"The ``long_description`` field can be attached to a text file located in the "
"package::"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:231
+#: ../Doc/distutils/packageindex.rst:235
msgid ""
"In that case, :file:`README.txt` is a regular reStructuredText text file "
"located in the root of the package besides :file:`setup.py`."
msgstr ""
-#: ../Doc/distutils/packageindex.rst:234
+#: ../Doc/distutils/packageindex.rst:238
msgid ""
"To prevent registering broken reStructuredText content, you can use the :"
"program:`rst2html` program that is provided by the :mod:`docutils` package "
"and check the ``long_description`` from the command line:"
msgstr ""
-#: ../Doc/distutils/packageindex.rst:242
+#: ../Doc/distutils/packageindex.rst:246
msgid ""
":mod:`docutils` will display a warning if there's something wrong with your "
"syntax. Because PyPI applies additional checks (e.g. by passing ``--no-"
diff --git a/distutils/setupscript.po b/distutils/setupscript.po
index 88514accf..f8c07ad53 100644
--- a/distutils/setupscript.po
+++ b/distutils/setupscript.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
+"POT-Creation-Date: 2018-06-17 10:39+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/setupscript.rst:5
msgid "Writing the Setup Script"
-msgstr ""
+msgstr "Rédaction du script ``setup.py``"
#: ../Doc/distutils/setupscript.rst:7
msgid ""
@@ -32,6 +32,15 @@ msgid ""
"Distutils by the module developer is supplied as keyword arguments to :func:"
"`setup`."
msgstr ""
+"Le script ``setup.py`` est au centre de toute opération de construction, de "
+"distribution et d'installation des modules utilisant les *Distutils*. "
+"L'objectif principal du script ``setup.py`` est de décrire le module aux "
+"*Distutils*, de telle sorte que les diverses commandes qui agissent sur "
+"votre module fassent les bonnes choses. Comme nous avons vu dans la section :"
+"ref:`distutils-simple-example` au-dessus, le script ``setup.py`` consiste "
+"principalement à un appel à :func:`setup`, et la plupart des informations "
+"fournies aux *Distutils* par le développeur du module sont fournies en tant "
+"qu'arguments nommés à :func:`setup.py`."
#: ../Doc/distutils/setupscript.rst:15
msgid ""
@@ -42,6 +51,14 @@ msgid ""
"install other module distributions. The Distutils' own setup script, shown "
"here, is used to install the package into Python 1.5.2.) ::"
msgstr ""
+"Voici un exemple un peu plus concret, que nous allons suivre pour les "
+"quelques sections suivantes : le propre script ``setup.py`` des *Distutils* "
+"(gardez toujours à l'esprit qu'en dépit de l'inclusion des *Distutils* dans "
+"python 1.6 et ses versions successives, ils ont aussi une existence à part "
+"entière de telle sorte que les utilisateurs de Python 1.5.2 puissent les "
+"utiliser pour installer d'autres modules. Le propre script ``setup.py`` des "
+"*Distutils* montré ici est utilisé pour installer le paquet dans Python "
+"1.5.2). ::"
#: ../Doc/distutils/setupscript.rst:35
msgid ""
@@ -53,6 +70,14 @@ msgid ""
"module would be tedious to generate and difficult to maintain. For more "
"information on the additional meta-data, see section :ref:`meta-data`."
msgstr ""
+"Il y a seulement deux différences entre cet exemple et l'exemple trivial de "
+"la distribution d'un unique fichier présenté dans la partie :ref:`distutils-"
+"simple-example` : plus de métadonnées, et la définition de modules purement "
+"Python par paquet, plutôt que par module. C'est important car les "
+"*Distutils* sont composés de quelques douzaines de modules séparés (pour le "
+"moment) en deux paquets ; une liste explicite de chaque module serait "
+"pénible à générer et difficile à maintenir. Pour plus d'information sur les "
+"métadonnées supplémentaires, voir la partie :ref:`meta-data`."
#: ../Doc/distutils/setupscript.rst:43
msgid ""
@@ -64,6 +89,15 @@ msgid ""
"systems, which of course is one of the major goals of the Distutils. In "
"this spirit, all pathnames in this document are slash-separated."
msgstr ""
+"À noter que chaque chemin d'accès fourni au script ``setup.py`` doit être "
+"écrit selon la convention Unix. Autrement dit, séparé par des barres "
+"obliques (slash). Les *Distutils* prendront soin de convertir cette "
+"représentation indépendante de la plateforme en une représentation adaptée à "
+"votre plateforme actuelle avant d'effectivement utiliser le chemin d'accès. "
+"Cela rend votre script ``setup.py`` portable d'un système d'exploitation à "
+"l'autre, ce qui évidemment est l'un des buts majeurs des *Distutils*. Dans "
+"cet esprit, tous les chemins d'accès dans ce document sont séparés par des "
+"barres obliques (slash)."
#: ../Doc/distutils/setupscript.rst:51
msgid ""
@@ -72,10 +106,15 @@ msgid ""
"or :func:`os.listdir` to specify files, you should be careful to write "
"portable code instead of hardcoding path separators::"
msgstr ""
+"Cela, évidemment, s'applique uniquement aux chemins d'accès passés aux "
+"fonctions de *Distutils*. Si vous, par exemple, vous utilisez les fonctions "
+"standards de Python telles que :func:`glob.glob` or :func:`os.listdir` pour "
+"définir des fichiers, vous devez prendre soin d'écrire du code portable au "
+"lieu de coder en dur les séparateurs de chemin ::"
#: ../Doc/distutils/setupscript.rst:63
msgid "Listing whole packages"
-msgstr ""
+msgstr "Lister l'ensemble des paquets"
#: ../Doc/distutils/setupscript.rst:65
msgid ""
@@ -92,6 +131,19 @@ msgid ""
"break this promise, the Distutils will issue a warning but still process the "
"broken package anyway."
msgstr ""
+"L'option ``packages`` dit aux *Distutils* de traiter (construire, "
+"distribuer, installer, etc.) tous les modules en Python pur trouvés dans "
+"chaque paquet mentionné dans la liste ``packages``. À cette fin, évidemment, "
+"il faut une correspondance entre les noms des paquets et des répertoires "
+"dans le système de fichiers. La correspondance par défaut est la plus "
+"évidente. À savoir : le paquet :mod:`distutils` se trouve dans le "
+"répertoire :file:`distutils` situé à la racine de la distribution. Ainsi, "
+"quand vous écrivez ``packages = ['foo']`` dans votre script ``setup.py``, "
+"vous vous engagez à ce que les *Distutils* trouvent un fichier ``foo/"
+"__init__.py`` (qui peut s'épeler différemment sur votre système, mais vous "
+"voyez l'idée) à un emplacement relatif au répertoire où se trouve le script "
+"``setup.py``. Si ce n'est pas le cas, les *Distutils* lèvent un "
+"avertissement mais traitent tout de même le paquet défectueux."
#: ../Doc/distutils/setupscript.rst:77
msgid ""
@@ -102,6 +154,14 @@ msgid ""
"in any package at all) are in :file:`lib`, modules in the :mod:`foo` package "
"are in :file:`lib/foo`, and so forth. Then you would put ::"
msgstr ""
+"Si vous utilisez une convention différente pour arranger votre répertoire de "
+"sources, ce n'est pas un problème : vous avez seulement à fournir l'option "
+"``package_dir`` pour prévenir les *Distutils* de l'usage de cette "
+"convention. Par exemple, supposons que vous gardez toutes les sources Python "
+"sous :file:`lib`, de telle sorte que les modules dans le « paquet "
+"racine » (c'est-à-dire dans aucun paquet du tout) sont dans :file:`lib`, les "
+"modules dans le paquet :mod:`foo` sont dans :file:`lib/foo`, et ainsi de "
+"suite. Alors, vous pouvez mettre ::"
#: ../Doc/distutils/setupscript.rst:86
msgid ""
@@ -111,6 +171,11 @@ msgid ""
"``packages = ['foo']``, you are promising that the file :file:`lib/foo/"
"__init__.py` exists."
msgstr ""
+"dans votre script ``setup.py``. Les clés de ce dictionnaire sont les noms "
+"des paquets, et un nom de paquet vide fait office de paquet racine. Les "
+"valeurs sont des noms de répertoires relatifs à la racine de votre "
+"distribution. Dans ce cas, lorsque vous dites ``packages = ['foo']``, vous "
+"vous engagez à ce que le fichier :file:`lib/foo/__init__.py` existe."
#: ../Doc/distutils/setupscript.rst:91
msgid ""
@@ -118,6 +183,9 @@ msgid ""
"`lib`, the :mod:`foo.bar` package in :file:`lib/bar`, etc. This would be "
"written in the setup script as ::"
msgstr ""
+"Une autre convention possible est de mettre le paquet :mod:`foo` directement "
+"dans :file:`lib`, le paquet :mod:`foo.bar` dans :file:`lib/bar`, etc. Cela "
+"s'écrirait ainsi dans le script ``setup.py`` : ::"
#: ../Doc/distutils/setupscript.rst:97
msgid ""
@@ -133,7 +201,7 @@ msgstr ""
#: ../Doc/distutils/setupscript.rst:110
msgid "Listing individual modules"
-msgstr ""
+msgstr "Lister chaque module indépendamment"
#: ../Doc/distutils/setupscript.rst:112
msgid ""
@@ -143,6 +211,11 @@ msgid ""
"shown in section :ref:`distutils-simple-example`; here is a slightly more "
"involved example::"
msgstr ""
+"Pour un petit projet, vous pouvez préférer lister tous les modules plutôt "
+"que les paquets — surtout le cas d'un module seul qui va dans le « paquet "
+"racine » (à savoir, aucun paquet du tout). Le cas le plus simple a été "
+"montré dans la partie :ref:`distutils-simple-example` ; voici un exemple "
+"plus concret ::"
#: ../Doc/distutils/setupscript.rst:119
msgid ""
@@ -153,10 +226,16 @@ msgid ""
"you can override the package/directory correspondence using the "
"``package_dir`` option."
msgstr ""
+"Deux modules sont décrits, l'un dans le paquet « racine », l'autre dans le "
+"paquet :mod:`pkg`. Encore une fois, la structure paquet/répertoire par "
+"défaut implique que ces deux modules peuvent être trouvés dans :file:`mod1."
+"py` et :file:`pkg/mod2.py`, et que :file:`pkg/__init__.py` existe aussi. Là "
+"aussi, vous pouvez redéfinir la correspondance paquet/répertoire en "
+"utilisant l'option ``package_dir``."
#: ../Doc/distutils/setupscript.rst:129
msgid "Describing extension modules"
-msgstr ""
+msgstr "Description des modules d'extension"
#: ../Doc/distutils/setupscript.rst:131
msgid ""
@@ -167,6 +246,13 @@ msgid ""
"have to specify the extension name, source file(s), and any compile/link "
"requirements (include directories, libraries to link with, etc.)."
msgstr ""
+"Tout comme écrire des modules d'extension Python est un peu plus compliqué "
+"que d’écrire des modules purement en Python, les décrire aux *Distutils* est "
+"un peu plus compliqué. Contrairement aux modules purs, il ne suffit pas de "
+"simplement lister les modules ou les paquets et d'attendre que les "
+"*Distutils* trouvent par eux-mêmes les bons fichiers ; vous devez définir le "
+"nom de l'extension, du ou des fichiers de sources, et les prérequis de "
+"compilation/lien (répertoires à inclure, bibliothèques à lier, etc.)."
#: ../Doc/distutils/setupscript.rst:140
msgid ""
@@ -178,6 +264,13 @@ msgid ""
"instructions to the compiler/linker are needed, describing this extension is "
"quite simple::"
msgstr ""
+"Tout ceci est fait à l'aide d'un autre argument nommé passé à :func:`setup`, "
+"l'option ``ext_modules``. ``ext_modules`` est simplement une liste de "
+"classes :class:`~distutils.core.Extension`, chacune décrivant une seule "
+"extension de module. Supposons que votre distribution inclut une seule "
+"extension appelée :mod:`foo` et implémentée par :file:`foo.c`. Si aucune "
+"instruction supplémentaire au compilateur/lieur n'est requise, décrire cette "
+"extension est assez simple ::"
#: ../Doc/distutils/setupscript.rst:150
msgid ""
@@ -185,6 +278,9 @@ msgid ""
"along with :func:`setup`. Thus, the setup script for a module distribution "
"that contains only this one extension and nothing else might be::"
msgstr ""
+"La classe :class:`Extension` peut être importée depuis :mod:`distutils.core` "
+"en même temps que :func:`setup`. Ainsi, le script ``setup.py`` pour un "
+"module qui ne contient que cette seule extension et rien d'autre peut être ::"
#: ../Doc/distutils/setupscript.rst:160
msgid ""
@@ -193,10 +289,14 @@ msgid ""
"deal of flexibility in describing Python extensions, which is explained in "
"the following sections."
msgstr ""
+"La classe :class:`Extension` (en réalité, la machinerie sous-jacente "
+"construisant les extensions implémentées par la commande :command:"
+"`build_ext`) permet une grande flexibilité dans la description des "
+"extensions Python, ce qui est expliqué dans les parties suivantes."
#: ../Doc/distutils/setupscript.rst:167
msgid "Extension names and packages"
-msgstr ""
+msgstr "Nom des extensions et paquets"
#: ../Doc/distutils/setupscript.rst:169
msgid ""
@@ -204,10 +304,12 @@ msgid ""
"always the name of the extension, including any package names. For "
"example, ::"
msgstr ""
+"Le premier argument du constructeur :class:`~distutils.core.Extension` est "
+"toujours le nom de l'extension, incluant tout nom de paquet. Par exemple ::"
#: ../Doc/distutils/setupscript.rst:174
msgid "describes an extension that lives in the root package, while ::"
-msgstr ""
+msgstr "décrit une extension qui se situe dans le paquet racine, tandis que ::"
#: ../Doc/distutils/setupscript.rst:178
msgid ""
@@ -216,6 +318,11 @@ msgid ""
"is where in the filesystem (and therefore where in Python's namespace "
"hierarchy) the resulting extension lives."
msgstr ""
+"décrit la même extension dans le paquet :mod:`pkg`. Les fichiers sources et "
+"le code objet résultant sont identiques dans les deux cas ; la seule "
+"différence est où, dans le système de fichier (et conséquemment dans la "
+"hiérarchie de l'espace de nommage de Python), l'extension résultante se "
+"situe."
#: ../Doc/distutils/setupscript.rst:183
msgid ""
@@ -223,16 +330,21 @@ msgid ""
"same base package), use the ``ext_package`` keyword argument to :func:"
"`setup`. For example, ::"
msgstr ""
+"Si vous avez un certain nombre d'extensions toutes dans le même paquet (ou "
+"toutes sous le même paquet de base), utilisez l'argument nommé "
+"``ext_package`` de :func:`setup`. Par exemple ::"
#: ../Doc/distutils/setupscript.rst:193
msgid ""
"will compile :file:`foo.c` to the extension :mod:`pkg.foo`, and :file:`bar."
"c` to :mod:`pkg.subpkg.bar`."
msgstr ""
+"compile :file:`foo.c` en l’extension :mod:`pkg.foo`, et :file:`bar.c` en :"
+"mod:`pkg.subpkg.bar`."
#: ../Doc/distutils/setupscript.rst:198
msgid "Extension source files"
-msgstr ""
+msgstr "Fichiers sources d'extension"
#: ../Doc/distutils/setupscript.rst:200
msgid ""
@@ -243,6 +355,12 @@ msgid ""
"files: :file:`.cc` and :file:`.cpp` seem to be recognized by both Unix and "
"Windows compilers.)"
msgstr ""
+"Le second argument du constructeur d'\\ :class:`~distutils.core.Extension` "
+"est une liste de fichiers sources. Puisque les *Distutils* ne gèrent que les "
+"extensions en C, C++ et Objective-C, ce sont normalement des fichiers "
+"sources en C/C++/Objective-C (assurez vous d'utiliser les extensions "
+"appropriées pour détecter les fichiers sources en C++ : :file:`.cc` et :file:"
+"`.cpp` semblent être reconnus tant par les compilateurs Unix que Windows)."
#: ../Doc/distutils/setupscript.rst:207
msgid ""
@@ -251,16 +369,22 @@ msgid ""
"will run SWIG on the interface file and compile the resulting C/C++ file "
"into your extension."
msgstr ""
+"Néanmoins, vous pouvez également inclure des fichiers d'interface SWIG (:"
+"file:`.i`) dans la liste ; la commande :command:`build_ext` sait comment "
+"gérer les extensions SWIG : il lancera SWIG sur un fichier d'interface et "
+"compilera le fichier en C/C++ en une extension."
#: ../Doc/distutils/setupscript.rst:214
msgid ""
"This warning notwithstanding, options to SWIG can be currently passed like "
"this::"
msgstr ""
+"Malgré cet avertissement, les options peuvent être actuellement passées à "
+"SWIG de la façon suivante ::"
#: ../Doc/distutils/setupscript.rst:223
msgid "Or on the commandline like this::"
-msgstr ""
+msgstr "Ou en ligne de commande de cette façon ::"
#: ../Doc/distutils/setupscript.rst:227
msgid ""
@@ -270,10 +394,16 @@ msgid ""
"rc`) files for Visual C++. These will be compiled to binary resource (:file:"
"`.res`) files and linked into the executable."
msgstr ""
+"Sur certaines plateformes, vous pouvez inclure des fichiers autres que des "
+"sources qui seront traités par le compilateur et inclus dans votre "
+"extension. Pour l'instant, cela concerne seulement les fichiers de messages "
+"texte Windows (:file:`.mc`) et les fichiers de définition de ressource pour "
+"Visual C++ (:file:`.rc`). Ils seront compilés en fichiers de ressources "
+"binaires (:file:`.res`) et liés à l'exécutable."
#: ../Doc/distutils/setupscript.rst:235
msgid "Preprocessor options"
-msgstr ""
+msgstr "Options de préprocesseur"
#: ../Doc/distutils/setupscript.rst:237
msgid ""
@@ -281,12 +411,19 @@ msgid ""
"you need to specify include directories to search or preprocessor macros to "
"define/undefine: ``include_dirs``, ``define_macros``, and ``undef_macros``."
msgstr ""
+"Trois arguments optionnels de :class:`~distutils.core.Extension` aident si "
+"vous avez besoin de préciser les dossiers d’en-têtes à chercher ou les "
+"macros de préprocesseurs à charger ou ignorer : ``include_dirs``, "
+"``define_macros``, et ``undef_macros``."
#: ../Doc/distutils/setupscript.rst:241
msgid ""
"For example, if your extension requires header files in the :file:`include` "
"directory under your distribution root, use the ``include_dirs`` option::"
msgstr ""
+"Par exemple, si votre extension nécessite des fichiers d'en-tête dans le "
+"répertoire :file:`include` à la racine de votre distribution, utilisez "
+"l'option ``include_dirs`` ::"
#: ../Doc/distutils/setupscript.rst:246
msgid ""
@@ -294,12 +431,17 @@ msgid ""
"will only be built on Unix systems with X11R6 installed to :file:`/usr`, you "
"can get away with ::"
msgstr ""
+"Ici, vous pouvez définir le chemin absolu des répertoires ; si vous savez "
+"que votre extension sera compilée sur un système Unix avec ``X11R6`` "
+"installé dans :file:`/usr`, vous pouvez vous en sortir avec ::"
#: ../Doc/distutils/setupscript.rst:252
msgid ""
"You should avoid this sort of non-portable usage if you plan to distribute "
"your code: it's probably better to write C code like ::"
msgstr ""
+"Il convient d'éviter ce type d'utilisation non portable si vous envisagez de "
+"distribuer votre code : Il est probablement mieux d'écrire du code C comme ::"
#: ../Doc/distutils/setupscript.rst:257
msgid ""
@@ -313,6 +455,17 @@ msgid ""
"in this case---is always included in the search path when building Python "
"extensions, the best approach is to write C code like ::"
msgstr ""
+"Si vous avez besoin d'inclure des fichiers d'en-tête provenant d'autres "
+"extensions Python, vous pouvez profiter du fait que les fichiers d'en-têtes "
+"sont installés de façon cohérente par la commande :command:`install_headers` "
+"des *Distutils*. Par exemple, les fichiers d'en-têtes de *Numerical Python* "
+"(NumPy) sont installés (dans le cas d'une installation Unix standard) dans :"
+"file:`/usr/local/include/python1.5/Numerical` — l'emplacement exact diffère "
+"selon votre plateforme et votre installation de Python. Vu que le "
+"répertoire :file:`include` de Python —\\ :file:`/usr/local/include/"
+"python1.5` dans ce cas-ci — est toujours inclus dans le chemin de recherche "
+"quand vous construisez des extensions Python, la meilleure approche est "
+"d'écrire du code C comme ::"
#: ../Doc/distutils/setupscript.rst:269
msgid ""
@@ -320,6 +473,10 @@ msgid ""
"header search path, though, you can find that directory using the Distutils :"
"mod:`distutils.sysconfig` module::"
msgstr ""
+"Si vous devez mettre le répertoire :file:`include` de :file:`Numerical` "
+"directement dans l'en-tête du chemin de recherche, cependant, vous pouvez "
+"trouver ce répertoire en utilisant le module :mod:`distutils.sysconfig` des "
+"*Distutils* ::"
#: ../Doc/distutils/setupscript.rst:279
msgid ""
@@ -327,6 +484,9 @@ msgid ""
"installation, regardless of platform---it's probably easier to just write "
"your C code in the sensible way."
msgstr ""
+"Même si c'est assez portable — ça marche sur la plupart des installations de "
+"Python, indépendamment de la plateforme — il est probablement plus facile "
+"d'écrire un code C un peu plus réfléchi."
#: ../Doc/distutils/setupscript.rst:283
msgid ""
@@ -338,18 +498,26 @@ msgid ""
"your C source: with most compilers, this sets ``FOO`` to the string ``1``.) "
"``undef_macros`` is just a list of macros to undefine."
msgstr ""
+"Vous pouvez définir ou ignorer des macros de pré-processeur avec les options "
+"``define_macros`` et ``undef_macros``. ``define_macros`` prend une liste de "
+"paires ``(nom, valeur)``, où ``nom`` est le nom de la macro à définir (une "
+"chaîne de caractères) et ``valeur`` est sa valeur ; soit une chaîne de "
+"caractères, soit ``None`` (définir une macro ``FOO`` à ``None`` est "
+"équivalent à un simple ``#define FOO`` dans votre source en C ; pour la "
+"majorité des compilateurs, cela définit la valeur de ``FOO`` à la chaîne de "
+"caractère ``1``). ``undef_macros`` est juste une liste de macros à supprimer."
#: ../Doc/distutils/setupscript.rst:291
msgid "For example::"
-msgstr "Par exemple : ::"
+msgstr "Par exemple ::"
#: ../Doc/distutils/setupscript.rst:298
msgid "is the equivalent of having this at the top of every C source file::"
-msgstr ""
+msgstr "est équivalent à avoir ceci au début de chaque fichier source en C ::"
#: ../Doc/distutils/setupscript.rst:307
msgid "Library options"
-msgstr ""
+msgstr "Options des bibliothèques"
#: ../Doc/distutils/setupscript.rst:309
msgid ""
@@ -360,33 +528,48 @@ msgid ""
"time, and ``runtime_library_dirs`` is a list of directories to search for "
"shared (dynamically loaded) libraries at run-time."
msgstr ""
+"Vous pouvez aussi définir les bibliothèques à lier quand vous construisez "
+"votre extension, ainsi que le répertoire de recherche pour ces "
+"bibliothèques. L'option ``libraries`` est une liste de bibliothèques à lier, "
+"``library_dirs`` est une liste de répertoires dans lesquels chercher des "
+"bibliothèques au moment de la liaison, et ``runtime_library_dirs`` est une "
+"liste de répertoires pour la recherche des bibliothèques partagées (chargées "
+"dynamiquement) à l'exécution."
#: ../Doc/distutils/setupscript.rst:315
msgid ""
"For example, if you need to link against libraries known to be in the "
"standard library search path on target systems ::"
msgstr ""
+"Par exemple, pour lier des bibliothèques que l'on sait dans le chemin des "
+"bibliothèques standards des systèmes cibles ::"
#: ../Doc/distutils/setupscript.rst:321
msgid ""
"If you need to link with libraries in a non-standard location, you'll have "
"to include the location in ``library_dirs``::"
msgstr ""
+"Pour lier une bibliothèque se trouvant à un emplacement non standard, vous "
+"devez inclure son emplacement dans ``library_dirs`` ::"
#: ../Doc/distutils/setupscript.rst:328
msgid ""
"(Again, this sort of non-portable construct should be avoided if you intend "
"to distribute your code.)"
msgstr ""
+"Là aussi, ce genre de construction non portable doit être évité si vous avez "
+"l'intention de distribuer votre code."
#: ../Doc/distutils/setupscript.rst:335
msgid "Other options"
-msgstr ""
+msgstr "Autres options"
#: ../Doc/distutils/setupscript.rst:337
msgid ""
"There are still some other options which can be used to handle special cases."
msgstr ""
+"Il y a encore d'autres options qui peuvent être utilisées pour gérer des cas "
+"spéciaux."
#: ../Doc/distutils/setupscript.rst:339
msgid ""
@@ -394,6 +577,9 @@ msgid ""
"extension will not abort the build process, but instead simply not install "
"the failing extension."
msgstr ""
+"L'option ``optional`` est un booléen ; s'il est vrai, un échec de la "
+"construction dans l'extension n'annule pas le processus de construction, "
+"mais à la place, l'extension en échec ne sera pas installée."
#: ../Doc/distutils/setupscript.rst:343
msgid ""
@@ -401,6 +587,9 @@ msgid ""
"linker. These files must not have extensions, as the default extension for "
"the compiler is used."
msgstr ""
+"L'option ``extra_objects`` est une liste d'objets fichiers à passer à "
+"l'éditeur de liens. Ces fichiers ne doivent pas avoir d'extensions car "
+"l'extension par défaut du compilateur est utilisée."
#: ../Doc/distutils/setupscript.rst:347
msgid ""
@@ -408,6 +597,9 @@ msgid ""
"additional command line options for the respective compiler and linker "
"command lines."
msgstr ""
+"``extra_compile_args`` et ``extra_link_args`` peuvent être utilisées pour "
+"définir des options additionnelles en ligne de commande propres aux lignes "
+"de commandes respectives du compilateur et de l'éditeur de liens."
#: ../Doc/distutils/setupscript.rst:351
msgid ""
@@ -416,6 +608,10 @@ msgid ""
"when building compiled extensions: Distutils will automatically add "
"``initmodule`` to the list of exported symbols."
msgstr ""
+"``export_symbols`` est seulement utile sur Windows. Elle peut contenir une "
+"liste de symboles (fonctions ou variables) à exporter. Cette option n'est "
+"pas requise pour la construction d'extensions compilées : *Distutils* ajoute "
+"automatiquement ``initmodule`` à la liste des symboles exportés."
#: ../Doc/distutils/setupscript.rst:356
msgid ""
@@ -424,32 +620,40 @@ msgid ""
"sources to rebuild extension if any on this files has been modified since "
"the previous build."
msgstr ""
+"L'option ``depends`` est une liste de fichiers dont les extensions dépendent "
+"(par exemple les fichiers d'en-têtes). La commande ``build`` appelle le "
+"compilateur sur les sources pour reconstruire l'extension si un de ces "
+"fichiers a été modifié depuis la dernière construction."
#: ../Doc/distutils/setupscript.rst:362
msgid "Relationships between Distributions and Packages"
-msgstr ""
+msgstr "Relations entre distributions et paquets"
#: ../Doc/distutils/setupscript.rst:364
msgid "A distribution may relate to packages in three specific ways:"
msgstr ""
+"Une distribution peut se rapporter à des paquets de trois manières "
+"spécifiques :"
#: ../Doc/distutils/setupscript.rst:366
msgid "It can require packages or modules."
-msgstr ""
+msgstr "elle peut nécessiter des paquets ou des modules ;"
#: ../Doc/distutils/setupscript.rst:368
msgid "It can provide packages or modules."
-msgstr ""
+msgstr "elle peut fournir des paquets ou des modules ;"
#: ../Doc/distutils/setupscript.rst:370
msgid "It can obsolete packages or modules."
-msgstr ""
+msgstr "elle peut rendre obsolète des paquets ou des modules."
#: ../Doc/distutils/setupscript.rst:372
msgid ""
"These relationships can be specified using keyword arguments to the :func:"
"`distutils.core.setup` function."
msgstr ""
+"Ces relations peuvent être définies en utilisant des paramètres nommés dans "
+"la fonction :func:`distutils.core.setup`."
#: ../Doc/distutils/setupscript.rst:375
msgid ""
@@ -458,6 +662,10 @@ msgid ""
"be a list of strings. Each string specifies a package that is required, and "
"optionally what versions are sufficient."
msgstr ""
+"Les dépendances à d'autres modules et paquets Python peuvent être définies "
+"en fournissant le paramètre nommé ``requires`` à :func:`setup`. La valeur "
+"doit être une liste de chaînes de caractères. Chaque chaîne de caractères "
+"définit un paquet requis et, en option, les versions minimales."
#: ../Doc/distutils/setupscript.rst:380
msgid ""
@@ -465,6 +673,9 @@ msgid ""
"should consist entirely of the module or package name. Examples include "
"``'mymodule'`` and ``'xml.parsers.expat'``."
msgstr ""
+"S'il n'est pas nécessaire de préciser la version d'un module ou d'un paquet, "
+"la chaîne de caractères contient simplement les noms de modules ou de "
+"paquets. Par exemple ``mymodule`` et ``'xml.parsers.expat'``."
#: ../Doc/distutils/setupscript.rst:384
msgid ""
@@ -472,6 +683,10 @@ msgid ""
"in parentheses. Each qualifier may consist of a comparison operator and a "
"version number. The accepted comparison operators are::"
msgstr ""
+"Si des versions spécifiques sont requises, une suite de qualificatifs peut "
+"être fournie entre parenthèses. Chaque qualificatif peut contenir un "
+"opérateur de comparaison et un numéro de version. Les opérateurs de "
+"comparaison acceptés sont ::"
#: ../Doc/distutils/setupscript.rst:391
msgid ""
@@ -479,35 +694,41 @@ msgid ""
"optional whitespace). In this case, all of the qualifiers must be matched; "
"a logical AND is used to combine the evaluations."
msgstr ""
+"Ils peuvent être combinés en utilisant plusieurs qualificatifs séparés par "
+"des virgules (et de façon optionnelle, des espaces). Dans ce cas, tous les "
+"qualificatifs doivent être respectés ; un ET logique est utilisé pour "
+"combiner les évaluations."
#: ../Doc/distutils/setupscript.rst:395
msgid "Let's look at a bunch of examples:"
-msgstr ""
+msgstr "Jetons un œil à quelques exemples :"
#: ../Doc/distutils/setupscript.rst:398
msgid "Requires Expression"
-msgstr ""
+msgstr "Valeur de ``requires``"
#: ../Doc/distutils/setupscript.rst:398 ../Doc/distutils/setupscript.rst:416
msgid "Explanation"
-msgstr ""
+msgstr "Explication"
#: ../Doc/distutils/setupscript.rst:400
msgid "``==1.0``"
-msgstr ""
+msgstr "``==1.0``"
#: ../Doc/distutils/setupscript.rst:400
msgid "Only version ``1.0`` is compatible"
-msgstr ""
+msgstr "Seule la version ``1.0`` est compatible."
#: ../Doc/distutils/setupscript.rst:402
msgid "``>1.0, !=1.5.1, <2.0``"
-msgstr ""
+msgstr "``>1.0, !=1.5.1, <2.0``"
#: ../Doc/distutils/setupscript.rst:402
msgid ""
"Any version after ``1.0`` and before ``2.0`` is compatible, except ``1.5.1``"
msgstr ""
+"Toute version après ``1.0`` et avant ``2.0`` est compatible, à l'exception "
+"de ``1.5.1``."
#: ../Doc/distutils/setupscript.rst:406
msgid ""
@@ -518,6 +739,13 @@ msgid ""
"optionally identifies the version. If the version is not specified, it is "
"assumed to match that of the distribution."
msgstr ""
+"Maintenant que nous pouvons définir des dépendances, nous devons également "
+"être en mesure de définir ce que d'autres distributions peuvent attendre de "
+"notre part. Cela est réalisé en utilisant l'argument nommé *provides* dans :"
+"func:`setup`. La valeur de cet argument est une liste de chaînes de "
+"caractères, chacune d'entre elles étant un module Python ou un paquet et, de "
+"façon optionnelle, identifie une version. Si la version n'est pas définie, "
+"il est supposé qu'elle correspond à celle de la distribution."
#: ../Doc/distutils/setupscript.rst:413
msgid "Some examples:"
@@ -525,23 +753,25 @@ msgstr "Quelques exemples :"
#: ../Doc/distutils/setupscript.rst:416
msgid "Provides Expression"
-msgstr ""
+msgstr "Valeur de ``provides``"
#: ../Doc/distutils/setupscript.rst:418
msgid "``mypkg``"
-msgstr ""
+msgstr "``mypkg``"
#: ../Doc/distutils/setupscript.rst:418
msgid "Provide ``mypkg``, using the distribution version"
-msgstr ""
+msgstr "Fournit ``mypkg`` en utilisant la version de la distribution."
#: ../Doc/distutils/setupscript.rst:421
msgid "``mypkg (1.1)``"
-msgstr ""
+msgstr "``mypkg (1.1)``"
#: ../Doc/distutils/setupscript.rst:421
msgid "Provide ``mypkg`` version 1.1, regardless of the distribution version"
msgstr ""
+"Fournit ``mypkg`` en version 1.1, indépendamment de la version de la "
+"distribution."
#: ../Doc/distutils/setupscript.rst:425
msgid ""
@@ -552,6 +782,13 @@ msgid ""
"more version qualifiers. Version qualifiers are given in parentheses after "
"the module or package name."
msgstr ""
+"On peut déclarer d'autres paquets obsolètes dans un paquet en utilisant "
+"l'argument nommé *obsoletes*. La valeur pour celui-ci est similaire à celui "
+"de l'argument nommé *requires* : une liste de chaînes de caractères donnant "
+"les spécifications du module ou du paquet. Chaque spécification est "
+"constituée d'un nom de module ou de paquet qui peut être suivi au choix par "
+"un ou plusieurs qualificateurs de versions. Les qualificateurs de versions "
+"sont donnés entre parenthèses après le nom de module ou de paquet."
#: ../Doc/distutils/setupscript.rst:432
msgid ""
@@ -559,16 +796,23 @@ msgid ""
"the distribution being described. If no qualifiers are given, all versions "
"of the named module or package are understood to be obsoleted."
msgstr ""
+"Les versions identifiées par les qualificateurs sont celles qui sont rendues "
+"obsolètes par la distribution décrite. Si aucun qualificateur n'est donné, "
+"toutes les versions du module ou du paquet nommé sont considérées comme "
+"obsolètes."
#: ../Doc/distutils/setupscript.rst:439
msgid "Installing Scripts"
-msgstr ""
+msgstr "Installation des scripts"
#: ../Doc/distutils/setupscript.rst:441
msgid ""
"So far we have been dealing with pure and non-pure Python modules, which are "
"usually not run by themselves but imported by scripts."
msgstr ""
+"Jusqu'à présent nous avons interagi avec des modules Python purs ou non, qui "
+"ne sont habituellement pas lancés par eux-mêmes mais importés par des "
+"scripts."
#: ../Doc/distutils/setupscript.rst:444
msgid ""
@@ -581,22 +825,35 @@ msgid ""
"`!--executable` (or :option:`!-e`) option will allow the interpreter path to "
"be explicitly overridden."
msgstr ""
+"Les scripts sont des fichiers contenant du code source Python prévus pour "
+"être lancés en ligne de commande. Les scripts n'ont pas besoin des "
+"*Distutils* pour faire quoi que ce soit de très compliqué. La seule "
+"fonctionnalité astucieuse est que la première ligne du script commence par "
+"``#!`` et contient le mot « python », les *Distutils* ajusteront la première "
+"ligne pour faire référence à l'emplacement actuel de l'interpréteur. Par "
+"défaut, elle est remplacée par l'emplacement de l'interpréteur en fonction. "
+"L'option :option:`!--executable` (ou :option:`!-e`) permet de définir "
+"explicitement le chemin vers l'interpréteur."
#: ../Doc/distutils/setupscript.rst:452
msgid ""
"The ``scripts`` option simply is a list of files to be handled in this way. "
"From the PyXML setup script::"
msgstr ""
+"L'option ``scripts`` est simplement une liste de fichiers à utiliser de "
+"cette façon. Dans le script ``setup.py`` de PyML ::"
#: ../Doc/distutils/setupscript.rst:459
msgid ""
"All the scripts will also be added to the ``MANIFEST`` file if no template "
"is provided. See :ref:`manifest`."
msgstr ""
+"Tous les scripts seront aussi ajoutés au fichier ``MANIFEST`` si aucun "
+"modèle n'est fourni. Voir :ref:`manifest`."
#: ../Doc/distutils/setupscript.rst:467
msgid "Installing Package Data"
-msgstr ""
+msgstr "Installation de paquets de données"
#: ../Doc/distutils/setupscript.rst:469
msgid ""
@@ -605,6 +862,11 @@ msgid ""
"text files containing documentation that might be of interest to programmers "
"using the package. These files are called :dfn:`package data`."
msgstr ""
+"Souvent, des fichiers additionnels doivent être installés dans le paquet. "
+"Ces fichiers sont souvent de la donnée qui est intimement liée à "
+"l'implémentation du paquet, ou des fichiers textes contenant de la "
+"documentation intéressant le programmeur utilisant le paquet. Ces fichiers "
+"sont appelés :dfn:`paquets de données `."
#: ../Doc/distutils/setupscript.rst:474
msgid ""
@@ -616,32 +878,47 @@ msgid ""
"appropriate); that is, the files are expected to be part of the package in "
"the source directories. They may contain glob patterns as well."
msgstr ""
+"Les paquets de données peuvent être ajoutés en utilisant l'argument nommé "
+"``package_data`` dans la fonction :func:`setup`. La valeur doit être un "
+"tableau de correspondances entre le nom du paquet et une liste de chemins "
+"relatifs à copier dans le paquet. Les chemins sont interprétés relativement "
+"au répertoire contenant le paquet (l'information du mappage ``package_dir`` "
+"est utilisée le cas échéant) ; ceci étant, il convient que les fichiers "
+"fassent partie du répertoire source du paquet. Ils peuvent également "
+"contenir des motifs `glob`."
#: ../Doc/distutils/setupscript.rst:482
msgid ""
"The path names may contain directory portions; any necessary directories "
"will be created in the installation."
msgstr ""
+"Les chemins d'accès peuvent contenir une hiérarchie de répertoires ; tout "
+"répertoire nécessaire sera créé dans cette installation."
#: ../Doc/distutils/setupscript.rst:485
msgid ""
"For example, if a package should contain a subdirectory with several data "
"files, the files can be arranged like this in the source tree::"
msgstr ""
+"Par exemple, si un paquet doit inclure un sous-répertoire avec plusieurs "
+"fichiers de donnée, les fichiers peuvent être organisés dans l'arborescence "
+"de la façon suivante ::"
#: ../Doc/distutils/setupscript.rst:498
msgid "The corresponding call to :func:`setup` might be::"
-msgstr ""
+msgstr "L'appel correspondant à :func:`setup` peut s'écrire ::"
#: ../Doc/distutils/setupscript.rst:507
msgid ""
"All the files that match ``package_data`` will be added to the ``MANIFEST`` "
"file if no template is provided. See :ref:`manifest`."
msgstr ""
+"Tous les fichiers correspondant à ``package_data`` seront ajoutés au fichier "
+"``MANIFEST`` si aucun modèle n'est fourni. Voir :ref:`manifest`."
#: ../Doc/distutils/setupscript.rst:515
msgid "Installing Additional Files"
-msgstr ""
+msgstr "Installation de fichiers additionnels"
#: ../Doc/distutils/setupscript.rst:517
msgid ""
@@ -649,12 +926,18 @@ msgid ""
"the module distribution: configuration files, message catalogs, data files, "
"anything which doesn't fit in the previous categories."
msgstr ""
+"L'option ``data_files`` peut être utilisée pour définir des fichiers "
+"additionnels requis pour la distribution du module : fichiers de "
+"configuration, catalogues de messages, fichiers de donnée, tout ce qui ne "
+"rentre pas dans les catégories précédentes."
#: ../Doc/distutils/setupscript.rst:521
msgid ""
"``data_files`` specifies a sequence of (*directory*, *files*) pairs in the "
"following way::"
msgstr ""
+"``data_files`` définit une séquence de paires (*répertoires*, *fichiers*) de "
+"la façon suivante ::"
#: ../Doc/distutils/setupscript.rst:530
msgid ""
@@ -682,26 +965,36 @@ msgid ""
"files directly in the target directory, an empty string should be given as "
"the directory."
msgstr ""
+"Vous pouvez définir les options ``data_files`` comme une simple succession "
+"de fichiers sans définir de répertoire cible, mais cela n'est pas "
+"recommandé, et la commande :command:`install` affichera un message d'alerte "
+"dans ce cas. Pour installer des fichiers de donnée directement dans le "
+"répertoire cible, une chaîne de caractère vide doit être donnée en tant que "
+"répertoire."
#: ../Doc/distutils/setupscript.rst:548
msgid ""
"All the files that match ``data_files`` will be added to the ``MANIFEST`` "
"file if no template is provided. See :ref:`manifest`."
msgstr ""
+"Tous les fichiers correspondant à ``data_files`` seront ajoutés au fichier "
+"``MANIFEST`` si aucun modèle n'est fourni. Voir :ref:`manifest`."
#: ../Doc/distutils/setupscript.rst:556
msgid "Additional meta-data"
-msgstr ""
+msgstr "Métadonnées additionnelles"
#: ../Doc/distutils/setupscript.rst:558
msgid ""
"The setup script may include additional meta-data beyond the name and "
"version. This information includes:"
msgstr ""
+"Le script ``setup.py`` peut inclure des métadonnées additionnelles en plus "
+"du nom et de la version. Cela inclut les informations suivantes :"
#: ../Doc/distutils/setupscript.rst:562
msgid "Meta-Data"
-msgstr ""
+msgstr "Métadonnées"
#: ../Doc/distutils/setupscript.rst:562
msgid "Description"
@@ -721,13 +1014,13 @@ msgstr "``name``"
#: ../Doc/distutils/setupscript.rst:564
msgid "name of the package"
-msgstr ""
+msgstr "nom du paquet"
#: ../Doc/distutils/setupscript.rst:564 ../Doc/distutils/setupscript.rst:566
#: ../Doc/distutils/setupscript.rst:568 ../Doc/distutils/setupscript.rst:573
#: ../Doc/distutils/setupscript.rst:580 ../Doc/distutils/setupscript.rst:594
msgid "short string"
-msgstr ""
+msgstr "courte chaîne de caractères"
#: ../Doc/distutils/setupscript.rst:564 ../Doc/distutils/setupscript.rst:578
msgid "\\(1)"
@@ -739,7 +1032,7 @@ msgstr "``version``"
#: ../Doc/distutils/setupscript.rst:566
msgid "version of this release"
-msgstr ""
+msgstr "version de la publication"
#: ../Doc/distutils/setupscript.rst:566
msgid "(1)(2)"
@@ -747,11 +1040,11 @@ msgstr "(1)(2)"
#: ../Doc/distutils/setupscript.rst:568
msgid "``author``"
-msgstr ""
+msgstr "``author``"
#: ../Doc/distutils/setupscript.rst:568
msgid "package author's name"
-msgstr ""
+msgstr "nom de l'auteur du paquet"
#: ../Doc/distutils/setupscript.rst:568 ../Doc/distutils/setupscript.rst:570
#: ../Doc/distutils/setupscript.rst:573 ../Doc/distutils/setupscript.rst:575
@@ -760,31 +1053,31 @@ msgstr "\\(3)"
#: ../Doc/distutils/setupscript.rst:570
msgid "``author_email``"
-msgstr ""
+msgstr "``author_email``"
#: ../Doc/distutils/setupscript.rst:570
msgid "email address of the package author"
-msgstr ""
+msgstr "adresse courriel de l'auteur du paquet"
#: ../Doc/distutils/setupscript.rst:570 ../Doc/distutils/setupscript.rst:575
msgid "email address"
-msgstr ""
+msgstr "adresse de courriel"
#: ../Doc/distutils/setupscript.rst:573
msgid "``maintainer``"
-msgstr ""
+msgstr "``maintainer``"
#: ../Doc/distutils/setupscript.rst:573
msgid "package maintainer's name"
-msgstr ""
+msgstr "nom du mainteneur du paquet"
#: ../Doc/distutils/setupscript.rst:575
msgid "``maintainer_email``"
-msgstr ""
+msgstr "``maintainer_email``"
#: ../Doc/distutils/setupscript.rst:575
msgid "email address of the package maintainer"
-msgstr ""
+msgstr "adresse du courriel du mainteneur du paquet"
#: ../Doc/distutils/setupscript.rst:578
msgid "``url``"
@@ -792,11 +1085,11 @@ msgstr "``url``"
#: ../Doc/distutils/setupscript.rst:578
msgid "home page for the package"
-msgstr ""
+msgstr "page d’accueil du paquet"
#: ../Doc/distutils/setupscript.rst:578 ../Doc/distutils/setupscript.rst:587
msgid "URL"
-msgstr ""
+msgstr "URL"
#: ../Doc/distutils/setupscript.rst:580
msgid "``description``"
@@ -804,7 +1097,7 @@ msgstr "``description``"
#: ../Doc/distutils/setupscript.rst:580
msgid "short, summary description of the package"
-msgstr ""
+msgstr "bref résumé décrivant le paquet"
#: ../Doc/distutils/setupscript.rst:584
msgid "``long_description``"
@@ -812,11 +1105,11 @@ msgstr "``long_description``"
#: ../Doc/distutils/setupscript.rst:584
msgid "longer description of the package"
-msgstr ""
+msgstr "description plus complète du paquet"
#: ../Doc/distutils/setupscript.rst:584
msgid "long string"
-msgstr ""
+msgstr "longue chaîne de caractères"
#: ../Doc/distutils/setupscript.rst:584
msgid "\\(5)"
@@ -824,11 +1117,11 @@ msgstr "\\(5)"
#: ../Doc/distutils/setupscript.rst:587
msgid "``download_url``"
-msgstr ""
+msgstr "``download_url``"
#: ../Doc/distutils/setupscript.rst:587
msgid "location where the package may be downloaded"
-msgstr ""
+msgstr "endroit où le paquet peut être téléchargé"
#: ../Doc/distutils/setupscript.rst:587 ../Doc/distutils/setupscript.rst:590
msgid "\\(4)"
@@ -836,23 +1129,23 @@ msgstr "\\(4)"
#: ../Doc/distutils/setupscript.rst:590
msgid "``classifiers``"
-msgstr ""
+msgstr "``classifiers``"
#: ../Doc/distutils/setupscript.rst:590
msgid "a list of classifiers"
-msgstr ""
+msgstr "une liste de classificateurs"
#: ../Doc/distutils/setupscript.rst:590 ../Doc/distutils/setupscript.rst:592
msgid "list of strings"
-msgstr ""
+msgstr "liste de chaînes de caractères"
#: ../Doc/distutils/setupscript.rst:592
msgid "``platforms``"
-msgstr ""
+msgstr "``platforms``"
#: ../Doc/distutils/setupscript.rst:592
msgid "a list of platforms"
-msgstr ""
+msgstr "une liste de plateformes"
#: ../Doc/distutils/setupscript.rst:594
msgid "``license``"
@@ -860,7 +1153,7 @@ msgstr "``license``"
#: ../Doc/distutils/setupscript.rst:594
msgid "license for the package"
-msgstr ""
+msgstr "licence du paquet"
#: ../Doc/distutils/setupscript.rst:594
msgid "\\(6)"
@@ -868,28 +1161,32 @@ msgstr "\\(6)"
#: ../Doc/distutils/setupscript.rst:597
msgid "Notes:"
-msgstr "Notes : "
+msgstr "Notes :"
#: ../Doc/distutils/setupscript.rst:600
msgid "These fields are required."
-msgstr ""
+msgstr "Ces champs sont requis."
#: ../Doc/distutils/setupscript.rst:603
msgid ""
"It is recommended that versions take the form *major.minor[.patch[.sub]]*."
msgstr ""
+"Il est recommandé que les versions prennent la forme *majeure.mineure[."
+"correctif[.sous-correctif]]*."
#: ../Doc/distutils/setupscript.rst:606
msgid ""
"Either the author or the maintainer must be identified. If maintainer is "
"provided, distutils lists it as the author in :file:`PKG-INFO`."
msgstr ""
+"L'auteur ou un mainteneur doit être identifié. Si un mainteneur est fourni, "
+"*distutils* l'indique en tant qu'auteur dans le fichier :file:`PKG-INFO`."
#: ../Doc/distutils/setupscript.rst:610
msgid ""
"These fields should not be used if your package is to be compatible with "
"Python versions prior to 2.2.3 or 2.3. The list is available from the `PyPI "
-"website `_."
+"website `_."
msgstr ""
#: ../Doc/distutils/setupscript.rst:615
@@ -906,6 +1203,11 @@ msgid ""
"See the ``Classifier`` field. Notice that there's a ``licence`` distribution "
"option which is deprecated but still acts as an alias for ``license``."
msgstr ""
+"Le champ ``license`` est un texte indiquant la licence du paquet quand la "
+"licence n'est pas indiquée dans les classificateurs de type « Licence » "
+"Trove. Voir le champ ``Classifier``. À noter qu'il y a une option de "
+"distribution ``licence`` qui est obsolète mais agit toujours comme un alias "
+"pour ``license``."
#: ../Doc/distutils/setupscript.rst:627
msgid "'short string'"
@@ -913,7 +1215,7 @@ msgstr "'chaîne courte'"
#: ../Doc/distutils/setupscript.rst:627
msgid "A single line of text, not more than 200 characters."
-msgstr ""
+msgstr "Une simple ligne de texte ne dépassant par 200 caractères."
#: ../Doc/distutils/setupscript.rst:631
msgid "'long string'"
@@ -924,6 +1226,8 @@ msgid ""
"Multiple lines of plain text in reStructuredText format (see http://docutils."
"sourceforge.net/)."
msgstr ""
+"De multiples lignes de texte au format ReStructuredText (voir http://"
+"docutils.sourceforge.net/)."
#: ../Doc/distutils/setupscript.rst:634
msgid "'list of strings'"
@@ -931,7 +1235,7 @@ msgstr "'liste de chaînes'"
#: ../Doc/distutils/setupscript.rst:634
msgid "See below."
-msgstr ""
+msgstr "Voir ci-dessous."
#: ../Doc/distutils/setupscript.rst:636
msgid ""
@@ -947,22 +1251,34 @@ msgid ""
"which only fix bugs) and \"pr1,pr2,...,prN\" (for final pre-release release "
"testing). Some examples:"
msgstr ""
+"Encoder les informations de version est un art en soi. Les paquets Python "
+"adhèrent généralement au format de version *majeure.mineure[.correctif]"
+"[sous]*. Le numéro majeur 0 est utilisé pour les publications "
+"expérimentales, initiales d'un logiciel. Il est incrémenté pour les "
+"publications qui représentent des étapes majeures pour le paquet. Le nombre "
+"mineur est incrémenté quand d'importantes nouvelles fonctionnalités sont "
+"ajoutées au paquet. Le numéro de correctif s'incrémente lors de la "
+"publication d'une correction de bogue est faite. Celles-ci sont \"*a1,a2,...,"
+"aN*\" (pour les publications alpha, où les fonctionnalités et l'API peut "
+"changer), \"*b1,b2,...,bN*\" (pour les publications *beta*, qui corrigent "
+"seulement les bogues) et \"*pr1,pr2,...,prN*\" (pour les ultimes pré-"
+"publication et publications de test). Quelques exemples :"
#: ../Doc/distutils/setupscript.rst:648
msgid "0.1.0"
-msgstr ""
+msgstr "0.1.0"
#: ../Doc/distutils/setupscript.rst:648
msgid "the first, experimental release of a package"
-msgstr ""
+msgstr "la première, publication expérimentale du paquet"
#: ../Doc/distutils/setupscript.rst:651
msgid "1.0.1a2"
-msgstr ""
+msgstr "1.0.1a2"
#: ../Doc/distutils/setupscript.rst:651
msgid "the second alpha release of the first patch version of 1.0"
-msgstr ""
+msgstr "la seconde publication alpha du premier correctif de la version 1.0"
#: ../Doc/distutils/setupscript.rst:653
msgid "``classifiers`` are specified in a Python list::"
@@ -970,13 +1286,15 @@ msgstr ""
#: ../Doc/distutils/setupscript.rst:677
msgid "Debugging the setup script"
-msgstr ""
+msgstr "Débogage du script ``setup.py``"
#: ../Doc/distutils/setupscript.rst:679
msgid ""
"Sometimes things go wrong, and the setup script doesn't do what the "
"developer wants."
msgstr ""
+"Parfois les choses tournent mal et le script ``setup.py`` ne fait pas ce que "
+"le développeur veut."
#: ../Doc/distutils/setupscript.rst:682
msgid ""
@@ -988,6 +1306,14 @@ msgid ""
"or the Python installation is broken because they don't read all the way "
"down to the bottom and see that it's a permission problem."
msgstr ""
+"*Distutils* intercepte toute exception lors de l'exécution du script ``setup."
+"py`` et affiche un message d'erreur simple avant d'arrêter le script. L'idée "
+"est de ne pas embrouiller les administrateurs qui ne savent pas grand-chose "
+"de Python et qui essayent d'installer un paquet. S'ils reçoivent une grosse "
+"et longue trace d'appels provenant des entrailles de *Distutils*, ils "
+"peuvent penser que le paquet ou que l'installation de Python est corrompue "
+"car, ils ne lisent pas tout jusqu'en bas alors que c'est un problème de "
+"droits."
#: ../Doc/distutils/setupscript.rst:690
msgid ""
@@ -998,3 +1324,10 @@ msgid ""
"traceback when an exception occurs, and print the whole command line when an "
"external program (like a C compiler) fails."
msgstr ""
+"D'un autre côté, cela n'aide pas le développeur à trouver la cause du "
+"problème. À cette fin, la variable d'environnement :envvar:`DISTUTILS_DEBUG` "
+"peut être assignée à n'importe quoi sauf une chaîne de caractères vide, et "
+"*distutils* affichera maintenant une information détaillée à propos de ce "
+"qu'il fait, déversera la trace d'appels complète lors d'une exception, et "
+"affichera la ligne de commande complète quand un programme externe (comme un "
+"compilateur C) échoue."
diff --git a/distutils/sourcedist.po b/distutils/sourcedist.po
index 2519f2974..8b0f74a59 100644
--- a/distutils/sourcedist.po
+++ b/distutils/sourcedist.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-05-25 22:44+0200\n"
+"PO-Revision-Date: 2018-02-15 00:34+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/distutils/sourcedist.rst:5
msgid "Creating a Source Distribution"
-msgstr "Créer une Distribution Source"
+msgstr "Créer une distribution source"
#: ../Doc/distutils/sourcedist.rst:7
msgid ""
@@ -37,23 +37,25 @@ msgid ""
"format for the current platform. The default format is a gzip'ed tar file (:"
"file:`.tar.gz`) on Unix, and ZIP file on Windows."
msgstr ""
-"(supposant que vous n'avez spécifié aucune option pour la commande :command:"
-"`sdist` dans le script de préparation ou le fichier de configuration), :"
-"command:`sdist` créé une archive au format par défaut pour la plateforme "
-"utilisé. Le format par défaut est un fichier tar gzippé (:file:`.tar.gz`) "
-"sur Unix et un fichier ZIP sur Windows."
+"(en supposant que vous n'avez spécifié aucune option pour la commande :"
+"command:`sdist` dans le script de préparation ou le fichier de "
+"configuration), :command:`sdist` crée une archive au format par défaut pour "
+"la plateforme utilisée. Le format par défaut est un fichier *tar* compressé "
+"(:file:`.tar.gz`) sur Unix et un fichier ZIP sur Windows."
#: ../Doc/distutils/sourcedist.rst:17
msgid ""
"You can specify as many formats as you like using the :option:`!--formats` "
"option, for example::"
msgstr ""
+"Vous pouvez donner autant de formats que désiré *via* l'option :option:`!--"
+"formats`, par exemple ::"
#: ../Doc/distutils/sourcedist.rst:22
msgid "to create a gzipped tarball and a zip file. The available formats are:"
msgstr ""
-"pour créer un fichier tarball gzippé et un fichier ZIP. Les formats "
-"disponibles actuellement sont:"
+"pour créer un fichier *tarball* compressé et un fichier ZIP. Les formats "
+"disponibles actuellement sont :"
#: ../Doc/distutils/sourcedist.rst:25
msgid "Format"
@@ -73,11 +75,11 @@ msgstr "``zip``"
#: ../Doc/distutils/sourcedist.rst:27
msgid "zip file (:file:`.zip`)"
-msgstr "Fichier zip (:file:`.zip`)"
+msgstr "Fichier *zip* (:file:`.zip`)"
#: ../Doc/distutils/sourcedist.rst:27
msgid "(1),(3)"
-msgstr "(1),(3)"
+msgstr "(1), (3)"
#: ../Doc/distutils/sourcedist.rst:29
msgid "``gztar``"
@@ -85,7 +87,7 @@ msgstr "``gztar``"
#: ../Doc/distutils/sourcedist.rst:29
msgid "gzip'ed tar file (:file:`.tar.gz`)"
-msgstr "Fichier tar gzippé (:file:`.tar.gz`)"
+msgstr "Fichier *tar* compressé par *gzip* (:file:`.tar.gz`)"
#: ../Doc/distutils/sourcedist.rst:29
msgid "\\(2)"
@@ -97,7 +99,7 @@ msgstr "``bztar``"
#: ../Doc/distutils/sourcedist.rst:32
msgid "bzip2'ed tar file (:file:`.tar.bz2`)"
-msgstr "Fichier tar bzip2 (:file:`.tar.bz2`)"
+msgstr "Fichier *tar* compressé par *bzip2* (:file:`.tar.bz2`)"
#: ../Doc/distutils/sourcedist.rst:35
msgid "``xztar``"
@@ -105,7 +107,7 @@ msgstr "``xztar``"
#: ../Doc/distutils/sourcedist.rst:35
msgid "xz'ed tar file (:file:`.tar.xz`)"
-msgstr "fichier tar de type xz (:file:`.tar.xz`)"
+msgstr "Fichier *tar* compressé par *xz* (:file:`.tar.xz`)"
#: ../Doc/distutils/sourcedist.rst:38
msgid "``ztar``"
@@ -113,7 +115,7 @@ msgstr "``ztar``"
#: ../Doc/distutils/sourcedist.rst:38
msgid "compressed tar file (:file:`.tar.Z`)"
-msgstr "Fichier tar compressé (:file:`.tar.Z`)"
+msgstr "Fichier *tar* compressé par *compress* (:file:`.tar.Z`)"
#: ../Doc/distutils/sourcedist.rst:38
msgid "\\(4)"
@@ -125,15 +127,15 @@ msgstr "``tar``"
#: ../Doc/distutils/sourcedist.rst:41
msgid "tar file (:file:`.tar`)"
-msgstr "Fichier tar (:file:`.tar`)"
+msgstr "fichier *tar* (:file:`.tar`)"
#: ../Doc/distutils/sourcedist.rst:44
msgid "Added support for the ``xztar`` format."
-msgstr "Ajout du support des fichiers ``xztar``"
+msgstr "Ajout du support des fichiers ``xztar``."
#: ../Doc/distutils/sourcedist.rst:47
msgid "Notes:"
-msgstr "Notes : "
+msgstr "Notes :"
#: ../Doc/distutils/sourcedist.rst:50
msgid "default on Windows"
@@ -157,7 +159,7 @@ msgid ""
"pending for deprecation and will be removed in the future versions of Python."
msgstr ""
"nécessite le programme :program:`compress`. Remarquez que ce format sera "
-"bientôt déprécié et sera enlevé des prochaines version de Python."
+"bientôt obsolète et sera enlevé des prochaines version de Python."
#: ../Doc/distutils/sourcedist.rst:63
msgid ""
@@ -174,7 +176,7 @@ msgstr ""
msgid "For example, if you want all files of the archive to be owned by root::"
msgstr ""
"Par exemple, si vous voulez que tous les fichiers de l'archive soient détenu "
-"par *root*::"
+"par *root* ::"
#: ../Doc/distutils/sourcedist.rst:75
msgid "Specifying the files to distribute"
@@ -188,7 +190,7 @@ msgid ""
msgstr ""
"Si vous ne fournissez pas une liste explicite de fichiers (ou les "
"instructions pour la générer), la commande :command:`sdist` en met par "
-"défaut le minimum dans la distribution source:"
+"défaut le minimum dans la distribution source :"
#: ../Doc/distutils/sourcedist.rst:81
msgid ""
@@ -220,9 +222,9 @@ msgid ""
"source distributions, but in the future there will be a standard for testing "
"Python module distributions)"
msgstr ""
-"tout ce qui ressemble a un script de test :file:`test/test\\*.py` (pour "
-"l'instant, Distutils ne fait rien avec ces scripts de test a part les "
-"inclure dans les distributions source, mais dans le futur un standard sera "
+"tout ce qui ressemble à un script de test :file:`test/test\\*.py` (pour "
+"l'instant, Distutils ne fait rien avec ces scripts de test, si ce n'est les "
+"inclure dans les distributions sources, mais dans le futur un standard sera "
"implémenté pour tester les distributions de module Python)"
#: ../Doc/distutils/sourcedist.rst:98
@@ -262,13 +264,13 @@ msgid ""
"filesystem."
msgstr ""
"Parfois ce fonctionnement suffit, mais généralement vous voudrez spécifier "
-"des fichier supplémentaire a distribuer. La voie courante pour le faire est "
-"d'écrire un *manifeste modèle*, appelé :file:`MANIFEST.in` par défaut. Ce "
-"modèle manifeste est juste une liste d'instructions pour générer votre "
-"fichier manifeste final, :file:`MANIFEST`, qui est liste exacte des fichiers "
-"à inclure dans votre distribution source. La commande :command:`sdist` "
-"traite ce modèle et génère un manifeste basé sur ces instructions et ce "
-"qu'il trouve dans le système de fichier."
+"des fichiers supplémentaires à distribuer. La façon classique de le faire "
+"est d'écrire un *manifeste modèle*, appelé :file:`MANIFEST.in` par défaut. "
+"Ce manifeste modèle est juste une liste d'instructions pour générer votre "
+"fichier manifeste final, :file:`MANIFEST`, qui est la liste exacte des "
+"fichiers à inclure dans votre distribution source. La commande :command:"
+"`sdist` traite ce modèle et génère un manifeste à partir de ces instructions "
+"et de ce qu'elle trouve dans le système de fichiers."
#: ../Doc/distutils/sourcedist.rst:115
msgid ""
@@ -277,11 +279,11 @@ msgid ""
"supply your own :file:`MANIFEST`, you must specify everything: the default "
"set of files described above does not apply in this case."
msgstr ""
-"Si vous préferez créer votre propre fichier manifeste, le format est simple: "
-"un nom de fichier par ligne, uniquement des fichiers normaux (ou leur lien "
-"symbolique). Si vous fournissez votre propre :file:`MANIFEST`, vous devez "
-"tout spécifier: le groupe de fichier par défaut décrit au dessus ne sera pas "
-"inclu automatiquement dans ce cas"
+"Si vous préférez créer votre propre fichier manifeste, le format est "
+"simple : un nom de fichier par ligne, uniquement des fichiers normaux (ou "
+"leur lien symbolique). Si vous fournissez votre propre :file:`MANIFEST`, "
+"vous devez tout spécifier : les groupes de fichiers par défaut décrits au-"
+"dessus ne sont pas inclus automatiquement dans ce cas."
#: ../Doc/distutils/sourcedist.rst:120
msgid ""
@@ -289,25 +291,26 @@ msgid ""
"`sdist` comparing its modification time to the one of :file:`MANIFEST.in` "
"or :file:`setup.py`."
msgstr ""
-"Un :file:`MANIFEST` généré existant sera regénéré sans que :command:`sdist` "
-"compare son heure de modification à :file:`MANIFEST.in` ou :file:`setup.py`."
+"Un :file:`MANIFEST` existant généré automatiquement sera régénéré sans que :"
+"command:`sdist` ne compare son heure de modification à :file:`MANIFEST.in` "
+"ou :file:`setup.py`."
#: ../Doc/distutils/sourcedist.rst:125
msgid ""
":file:`MANIFEST` files start with a comment indicating they are generated. "
"Files without this comment are not overwritten or removed."
msgstr ""
-"Les fichiers :file:`MANIFEST` commence avec un commentaire indiquant qu'ils "
+"Les fichiers :file:`MANIFEST` commencent par un commentaire indiquant qu'ils "
"sont générés. Les fichiers sans ce commentaire ne sont pas réécrits ou "
-"supprimés"
+"supprimés."
#: ../Doc/distutils/sourcedist.rst:129
msgid ""
":command:`sdist` will read a :file:`MANIFEST` file if no :file:`MANIFEST.in` "
"exists, like it used to do."
msgstr ""
-":command:`sdist` lira un ficher :file:`MANIFEST` si il n'existe pas de :file:"
-"`MANIFEST.in` , tel qu'il y en a d'habitude."
+":command:`sdist` lira un ficher :file:`MANIFEST` s'il n'existe pas de :file:"
+"`MANIFEST.in` , tel qu'il en avait l'habitude."
#: ../Doc/distutils/sourcedist.rst:134
msgid ""
@@ -315,6 +318,9 @@ msgid ""
"a set of files to include or exclude from the source distribution. For an "
"example, again we turn to the Distutils' own manifest template:"
msgstr ""
+"Le modèle de manifeste possède une commande par ligne, où chaque commande "
+"spécifie un ensemble de fichiers à inclure ou à exclure de la distribution "
+"source. Par exemple, regardons à nouveau le propre manifeste de Distutils :"
#: ../Doc/distutils/sourcedist.rst:144
msgid ""
@@ -328,6 +334,16 @@ msgid ""
"There are several other commands available in the manifest template mini-"
"language; see section :ref:`sdist-cmd`."
msgstr ""
+"La signification est assez claire : inclure tous les fichiers à la racine de "
+"la distribution correspondant à :file:`*.txt`, tous les fichiers n'importe "
+"où dans le dossier :file:`examples` correspondant à :file:`\\*.txt` ou :file:"
+"`\\*.py`, et exclure tous les dossiers correspondant à :file:`examples/"
+"sample?/build`. Tout ceci est fait **après** l'ensemble d'inclusions "
+"standard, vous pouvez donc exclure des fichiers précédemment inclus en "
+"utilisant une instruction explicite dans le manifeste. (Vous pouvez aussi "
+"utiliser l'option :option:`!--no-defaults` pour désactiver complètement les "
+"inclusions standards). Il existe d'autres commandes dans le langage du "
+"fichier manifeste, consultez le chapitre :ref:`sdist-cmd`."
#: ../Doc/distutils/sourcedist.rst:154
msgid ""
@@ -337,11 +353,11 @@ msgid ""
"processed the manifest template, we remove files that should not be included "
"in the source distribution:"
msgstr ""
-"L'ordre des commandes dans le modèle manifeste compte: nous avons a la base "
-"la liste de fichier par défaut tel que décrit plus haut et chaque commande "
-"du modèle ajoute ou supprime des fichier de cette liste. Une fois que vous "
-"avez fini de traiter le modèle manifeste, nous enlevons les fichiers qui ne "
-"doivent pas être inclut dans la distribution source:"
+"L'ordre des commandes dans le modèle manifeste compte : nous avons, à la "
+"base, la liste de fichiers par défaut telle que décrite plus haut. Ensuite, "
+"chaque commande du modèle ajoute ou supprime des fichiers de cette liste. "
+"Une fois que le traitement du manifeste modèle est fini, nous enlevons les "
+"fichiers qui ne doivent pas être inclus dans la distribution source :"
#: ../Doc/distutils/sourcedist.rst:160
msgid "all files in the Distutils \"build\" tree (default :file:`build/`)"
@@ -362,8 +378,8 @@ msgid ""
"Now we have our complete list of files, which is written to the manifest for "
"future reference, and then used to build the source distribution archive(s)."
msgstr ""
-"Maintenant nous avons notre liste complète de fichier, qui est désormais "
-"écrite dans le manifeste pour une utilisation future et qui est utilisé pour "
+"Maintenant nous avons notre liste complète de fichiers ; elle est désormais "
+"écrite dans le manifeste pour une utilisation future et sera utilisée pour "
"construire la ou les archive(s) de notre distribution source."
#: ../Doc/distutils/sourcedist.rst:168
@@ -372,6 +388,9 @@ msgid ""
"defaults` option, and you can disable the standard exclude set with :option:"
"`!--no-prune`."
msgstr ""
+"Vous pouvez désactiver l'ensemble des fichiers inclus par défaut en "
+"utilisant l'option :option:`!--no-defaults`, ainsi que désactiver les "
+"exclusions standards avec l'option :option:`!--no-prune`."
#: ../Doc/distutils/sourcedist.rst:172
msgid ""
@@ -379,9 +398,9 @@ msgid ""
"`sdist` command builds the list of files to include in the Distutils source "
"distribution:"
msgstr ""
-"Voici le modèle manifeste de Distutils, suivons comment la commande :command:"
-"`sdist` contruit la liste des fichiers a inclure dans la distribution source "
-"de Distutils."
+"Voici le manifeste modèle de Distutils, suivons comment la commande :command:"
+"`sdist` construit la liste des fichiers à inclure dans la distribution "
+"source de Distutils."
#: ../Doc/distutils/sourcedist.rst:176
msgid ""
@@ -390,10 +409,10 @@ msgid ""
"two directories were mentioned in the ``packages`` option in the setup "
"script---see section :ref:`setup-script`)"
msgstr ""
-"inclure tous les fichier source Python dans les sous-dossiers :file:"
-"`distutils` et :file:`distutils/command` (parce que des packages "
+"inclure tous les fichiers source Python dans les sous-dossiers :file:"
+"`distutils` et :file:`distutils/command` (parce que des paquets "
"correspondant à ces deux dossiers ont été mentionnés dans l'argument "
-"``packages`` du script d'installation ---voir le chapitre :ref:`setup-"
+"``packages`` du script d'installation --- voir le chapitre :ref:`setup-"
"script`)"
#: ../Doc/distutils/sourcedist.rst:181
@@ -401,8 +420,8 @@ msgid ""
"include :file:`README.txt`, :file:`setup.py`, and :file:`setup.cfg` "
"(standard files)"
msgstr ""
-"inclure :file:`README.txt`, :file:`setup.py`, et :file:`setup.cfg` (fichiers "
-"standard)"
+"inclure :file:`README.txt`, :file:`setup.py` et :file:`setup.cfg` (fichiers "
+"standards)"
#: ../Doc/distutils/sourcedist.rst:184
msgid "include :file:`test/test\\*.py` (standard files)"
@@ -413,7 +432,7 @@ msgid ""
"include :file:`\\*.txt` in the distribution root (this will find :file:"
"`README.txt` a second time, but such redundancies are weeded out later)"
msgstr ""
-"inclure :file:`\\*.txt` à la racine de la distribution (ceci trouvera :file:"
+"inclure :file:`\\*.txt` à la racine de la distribution (ceci trouve :file:"
"`README.txt` une seconde fois, mais les redondances sont supprimées plus "
"tard)"
@@ -422,7 +441,7 @@ msgid ""
"include anything matching :file:`\\*.txt` or :file:`\\*.py` in the sub-tree "
"under :file:`examples`,"
msgstr ""
-"inclure tout fichier ressemblant à :file:`\\*.txt` ou :file:`\\*.py` dans la "
+"inclure tout fichier de la forme :file:`\\*.txt` ou :file:`\\*.py` dans la "
"sous-arborescence de :file:`examples`,"
#: ../Doc/distutils/sourcedist.rst:192
@@ -432,11 +451,11 @@ msgid ""
"previous two steps, so it's important that the ``prune`` command in the "
"manifest template comes after the ``recursive-include`` command"
msgstr ""
-"exclure tout les fichiers dans la sous-arborescence démarrant au dossier "
-"ressemblant à :file:`examples/sample?/build`\\ --- Ceci peut exclure des "
-"fichiers inclut dans les étapes précédentes, il est donc important que la "
-"commande ``prune`` dans le modèle manifeste vienne après la commande "
-"``recursive-include``"
+"exclure tous les fichiers dans les sous-arborescences dont les dossiers "
+"racines sont de la forme :file:`examples/sample?/build`\\ --- Ceci peut "
+"exclure des fichiers inclus dans les étapes précédentes, il est donc "
+"important que la commande ``prune`` dans le manifeste modèle vienne après la "
+"commande ``recursive-include``"
#: ../Doc/distutils/sourcedist.rst:197
msgid ""
@@ -455,15 +474,15 @@ msgid ""
"converting them to the standard representation on your platform. That way, "
"the manifest template is portable across operating systems."
msgstr ""
-"Comme dans le script de préparation, les chemins des fichier et des dossiers "
-"dans le modèle manifeste doivent toujours être séparés par des slash; "
-"Distutils s'occupera de les convertir a la représentation standard de votre "
-"plateforme. De cette manière, le modèle manifeste est portable sur tout "
-"système d'exploitation"
+"Comme dans le script de préparation, les chemins des fichiers et des "
+"dossiers dans le manifeste modèle doivent toujours être séparés par des "
+"barres obliques (*slash* en anglais) ; Distutils s'occupe de les convertir à "
+"la représentation standard de votre plateforme. De cette manière, le "
+"manifeste modèle est portable sur tout système d'exploitation."
#: ../Doc/distutils/sourcedist.rst:210
msgid "Manifest-related options"
-msgstr "Options en rapport avec le manifeste"
+msgstr "Options pour le manifeste"
#: ../Doc/distutils/sourcedist.rst:212
msgid ""
@@ -471,7 +490,7 @@ msgid ""
"follows:"
msgstr ""
"L'ordre normal des opérations pour la commande :command:`sdist` est le "
-"suivant:"
+"suivant :"
#: ../Doc/distutils/sourcedist.rst:214
msgid ""
@@ -481,14 +500,14 @@ msgid ""
msgstr ""
"si le fichier manifeste (:file:`MANIFEST` par défaut) existe et que la "
"première ligne n'a pas de commentaire indiquant qu'il a été généré par :file:"
-"`MANIFEST.in`, alors il est utiliser tel quel, inchangé"
+"`MANIFEST.in`, alors il est utilisé tel quel, inchangé"
#: ../Doc/distutils/sourcedist.rst:218
msgid ""
"if the manifest file doesn't exist or has been previously automatically "
"generated, read :file:`MANIFEST.in` and create the manifest"
msgstr ""
-"si le manifeste n'existe pas ou qu'il a été généré automatiquement, lire :"
+"si le manifeste n'existe pas ou s'il a été généré automatiquement, lire :"
"file:`MANIFEST.in` et créer le manifeste"
#: ../Doc/distutils/sourcedist.rst:221
@@ -496,15 +515,15 @@ msgid ""
"if neither :file:`MANIFEST` nor :file:`MANIFEST.in` exist, create a manifest "
"with just the default file set"
msgstr ""
-"si il n'existe ni :file:`MANIFEST` ni :file:`MANIFEST.in`, alors créer un "
-"manifeste contenant uniquement le groupe de fichier par défaut"
+"s'il n'existe ni :file:`MANIFEST`, ni :file:`MANIFEST.in`, alors créer un "
+"manifeste contenant uniquement le groupe de fichiers par défaut"
#: ../Doc/distutils/sourcedist.rst:224
msgid ""
"use the list of files now in :file:`MANIFEST` (either just generated or read "
"in) to create the source distribution archive(s)"
msgstr ""
-"utiliser maintenant la liste de fichier de :file:`MANIFEST` (qu'il soit "
+"utiliser maintenant la liste de fichiers de :file:`MANIFEST` (qu'il ait été "
"généré ou lu) pour créer la ou les archive(s) de la distribution source"
#: ../Doc/distutils/sourcedist.rst:227
@@ -513,15 +532,20 @@ msgid ""
"option:`!--no-defaults` and :option:`!--no-prune` to disable the standard "
"\"include\" and \"exclude\" sets."
msgstr ""
+"Il existe deux manières pour modifier ce comportement. D'abord utilisez les "
+"options :option:`!--no-defaults` et :option:`!--no-prune` pour désactiver "
+"les inclusions et exclusions standards."
#: ../Doc/distutils/sourcedist.rst:231
msgid ""
"Second, you might just want to (re)generate the manifest, but not create a "
"source distribution::"
msgstr ""
-"Deuxièmement, si vous voulez (ré)généré le manifeste, mais pas créer la "
-"distribution source ::"
+"Ensuite, si vous ne voulez que (ré)générer le manifeste, mais pas créer la "
+"distribution source ::"
#: ../Doc/distutils/sourcedist.rst:236
msgid ":option:`!-o` is a shortcut for :option:`!--manifest-only`."
msgstr ""
+"L'option :option:`!-o` est un raccourci pour l'option :option:`!--manifest-"
+"only`."
diff --git a/distutils/uploading.po b/distutils/uploading.po
index d2eb8cd4a..c2dff863e 100644
--- a/distutils/uploading.po
+++ b/distutils/uploading.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-10-18 09:24+0200\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,9 +19,10 @@ msgstr ""
#: ../Doc/distutils/uploading.rst:5
msgid "Uploading Packages to the Package Index"
-msgstr ""
+msgstr "Téléverser des paquets dans *Python Package Index*"
#: ../Doc/distutils/uploading.rst:7
msgid ""
"The contents of this page have moved to the section :ref:`package-index`."
msgstr ""
+"Le contenu de cette page à déménagé dans la section :ref:`package-index`."
diff --git a/extending/building.po b/extending/building.po
index fb01f7ff4..84e9eefd1 100644
--- a/extending/building.po
+++ b/extending/building.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2017-11-07 23:22+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -27,7 +27,7 @@ msgid ""
"``.pyd`` on Windows), which exports an *initialization function*."
msgstr ""
"Une extension C pour CPython est une bibliothèque partagée (Un ``.so`` sur "
-"Linux, un ``.pyd`` sur windows), qui expose une *fonction d'initialisation*."
+"Linux, un ``.pyd`` sur Windows), qui expose une *fonction d'initialisation*."
#: ../Doc/extending/building.rst:12
msgid ""
@@ -38,7 +38,7 @@ msgid ""
msgstr ""
"Pour pouvoir être importée, la bibliothèque partagée doit pourvoir être "
"trouvée dans :envvar:`PYTHONPATH`, et doit porter le nom du module, avec "
-"l'extension appropriée. En utilisant distutils, le nom est généré "
+"l'extension appropriée. En utilisant *distutils*, le nom est généré "
"automatiquement."
#: ../Doc/extending/building.rst:16
@@ -66,11 +66,11 @@ msgstr ""
"Pour les modules dont les noms sont entièrement en ASCII, la fonction doit "
"être nommée ``PyInit_``, dont ```` est remplacé par "
"le nom du module. En utilisant :ref:`multi-phase-initialization`, il est "
-"possible d'utiliser des noms de modules comptant des caractères non-ASCII. "
+"possible d'utiliser des noms de modules comptant des caractères non ASCII. "
"Dans ce cas, le nom de la fonction d'initialisation est "
"``PyInitU_``, où ``modulename`` est encodé avec l'encodage "
"*punyencode* de Python, dont les tirets sont remplacés par des tirets-bas. "
-"En Python ça donne : ::"
+"En Python ça donne ::"
#: ../Doc/extending/building.rst:39
msgid ""
@@ -80,10 +80,16 @@ msgid ""
"function corresponding to the filename is found. See the *\"Multiple modules "
"in one library\"* section in :pep:`489` for details."
msgstr ""
+"Il est possible d'exporter plusieurs modules depuis une seule bibliothèque "
+"partagée en définissant plusieurs fonctions d'initialisation. Cependant pour "
+"les importer, un lien symbolique doit être créé pour chacun, ou un "
+"*importer* personnalisé, puisque par défaut seule la fonction correspondant "
+"au nom du fichier est cherchée. Voir le chapitre *\"Multiple modules in one "
+"library\"* dans la :pep:`489` pour plus d'informations."
#: ../Doc/extending/building.rst:49
msgid "Building C and C++ Extensions with distutils"
-msgstr "Construire les extensions C et C++ avec distutils"
+msgstr "Construire les extensions C et C++ avec *distutils*"
#: ../Doc/extending/building.rst:53
msgid ""
@@ -91,22 +97,22 @@ msgid ""
"Python. Since distutils also supports creation of binary packages, users "
"don't necessarily need a compiler and distutils to install the extension."
msgstr ""
-"Des modules d'extension peuvent être construits avec distutils, qui est "
-"inclus dans Python. Puisque distutils gère aussi la création de paquets "
+"Des modules d'extension peuvent être construits avec *distutils*, qui est "
+"inclus dans Python. Puisque *distutils* gère aussi la création de paquets "
"binaires, les utilisateurs n'auront pas nécessairement besoin ni d'un "
-"compilateur ni de distutils pour installer l'extension."
+"compilateur ni de *distutils* pour installer l'extension."
#: ../Doc/extending/building.rst:57
msgid ""
"A distutils package contains a driver script, :file:`setup.py`. This is a "
"plain Python file, which, in the most simple case, could look like this:"
msgstr ""
-"Un paquet distutils contient un script :file:`setup.py`. C'est un simple "
+"Un paquet *distutils* contient un script :file:`setup.py`. C'est un simple "
"fichier Python, ressemblant dans la plupart des cas à :"
#: ../Doc/extending/building.rst:73
msgid "With this :file:`setup.py`, and a file :file:`demo.c`, running ::"
-msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer : ::"
+msgstr "Avec ce :file:`setup.py` et un fichier :file:`demo.c`, lancer ::"
#: ../Doc/extending/building.rst:77
msgid ""
@@ -137,8 +143,8 @@ msgstr ""
"pour construire les paquets, et définir le contenu du paquet. Normalement un "
"paquet contient des modules additionnels, comme des modules sources, "
"documentation, sous paquets, etc. Referez-vous à la documentation de "
-"distutils dans :ref:`distutils-index` pour en apprendre plus sur les "
-"fonctionnalités de distutils. Cette section n'explique que la construction "
+"*distutils* dans :ref:`distutils-index` pour en apprendre plus sur les "
+"fonctionnalités de *distutils*. Cette section n'explique que la construction "
"de modules d'extension."
#: ../Doc/extending/building.rst:91
@@ -150,6 +156,13 @@ msgid ""
"example, the instance defines an extension named ``demo`` which is build by "
"compiling a single source file, :file:`demo.c`."
msgstr ""
+"Il est classique de pré-calculer les arguments à la fonction :func:`setup`, "
+"pour plus de lisibilité. Dans l'exemple ci-dessus, l'argument "
+"``ext_modules`` à :func:`~distutils.core.setup` est une liste de modules "
+"d'extension, chacun est une instance de la classe :class:`~distutils."
+"extension.Extension`. Dans l'exemple, l'instance définit une extension "
+"nommée ``demo`` construite par la compilation d'un seul fichier source :file:"
+"`demo.c`."
#: ../Doc/extending/building.rst:99
msgid ""
@@ -170,14 +183,20 @@ msgid ""
"distutils passes this information in different ways to the compiler. For "
"example, on Unix, this may result in the compilation commands ::"
msgstr ""
+"Dans cet exemple, la fonction :func:`~distutils.core.setup` est appelée avec "
+"quelques autres méta-informations, ce qui est recommandé pour distribuer des "
+"paquets. En ce qui concerne l'extension, sont définis quelques macros "
+"préprocesseur, dossiers pour les en-têtes et bibliothèques. En fonction du "
+"compilateur, *distutils* peut donner ces informations de manière différente. "
+"Par exemple, sur Unix, ça peut ressembler aux commandes ::"
#: ../Doc/extending/building.rst:139
msgid ""
"These lines are for demonstration purposes only; distutils users should "
"trust that distutils gets the invocations right."
msgstr ""
-"Ces lignes ne sont qu'à titre d'exemple, les utilisateurs de distutils "
-"doivent avoir confiance en distutils qui fera les appels correctement."
+"Ces lignes ne sont qu'à titre d'exemple, les utilisateurs de *distutils* "
+"doivent avoir confiance en *distutils* qui fera les appels correctement."
#: ../Doc/extending/building.rst:146
msgid "Distributing your extension modules"
@@ -196,14 +215,14 @@ msgid ""
"End-users will typically want to install the module, they do so by running ::"
msgstr ""
"Typiquement, les utilisateurs vont vouloir installer le module, ils le font "
-"en exécutant : ::"
+"en exécutant ::"
#: ../Doc/extending/building.rst:154
msgid ""
"Module maintainers should produce source packages; to do so, they run ::"
msgstr ""
"Les mainteneurs de modules voudront produire des paquets source, pour ce "
-"faire ils exécuteront : ::"
+"faire ils exécuteront ::"
#: ../Doc/extending/building.rst:158
msgid ""
@@ -211,6 +230,9 @@ msgid ""
"distribution; this is done through a :file:`MANIFEST.in` file; see :ref:"
"`manifest` for details."
msgstr ""
+"Dans certains cas, des fichiers supplémentaires doivent être inclus dans une "
+"distribution source : c'est possible via un fichier :file:`MANIFEST.in`, c."
+"f. :ref:`manifest`."
#: ../Doc/extending/building.rst:161
msgid ""
diff --git a/extending/embedding.po b/extending/embedding.po
index be23db3ed..626b42b8d 100644
--- a/extending/embedding.po
+++ b/extending/embedding.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-08-10 00:58+0200\n"
+"PO-Revision-Date: 2018-02-15 00:35+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:8
msgid "Embedding Python in Another Application"
-msgstr "Intégrer Python dans une autre Application"
+msgstr "Intégrer Python dans une autre application"
#: ../Doc/extending/embedding.rst:10
msgid ""
@@ -33,13 +33,13 @@ msgid ""
"writing some scripts in Python. You can also use it yourself if some of the "
"functionality can be written in Python more easily."
msgstr ""
-"Les chapitres précédents couvraient l'extension de Python, c'est à dire, "
+"Les chapitres précédents couvraient l'extension de Python, c'est-à-dire, "
"comment enrichir une fonctionnalité de Python en y attachant une "
-"bibliothèque de fonctions C. C'est aussi possible dans l'autre sens: "
+"bibliothèque de fonctions C. C'est aussi possible dans l'autre sens : "
"enrichir vos applications C/C++ en y intégrant Python. Intégrer Python vous "
"permet d'implémenter certaines fonctionnalités de vos applications en Python "
"plutôt qu'en C ou C++. C'est utile dans de nombreux cas, un exemple serait "
-"de permettre aux utilisateurs d'adapter une application à leur besoins en y "
+"de permettre aux utilisateurs d'adapter une application à leurs besoins en y "
"écrivant des scripts Python. Vous pouvez aussi l'utiliser vous même si "
"certaines fonctionnalités peuvent être rédigées plus facilement en Python."
@@ -55,7 +55,7 @@ msgstr ""
"est qu'en étendant Python, le programme principal reste l'interpréteur "
"Python, alors qu'en intégrant Python le programme principal peut ne rien à "
"voir avec Python. C'est simplement quelques parties du programme qui "
-"appellent l'interprète Python pour exécuter un peu de code Python."
+"appellent l'interpréteur Python pour exécuter un peu de code Python."
#: ../Doc/extending/embedding.rst:26
msgid ""
@@ -81,9 +81,9 @@ msgid ""
"level operations described in the previous chapters to construct and use "
"Python objects."
msgstr ""
-"Il existe différents moyens d'appeler l'interpréteur: vous pouvez donner une "
-"chaîne contenant des instructions Python à :c:func:`PyRun_SimpleString`, ou "
-"vous pouvez donner un pointeur de fichier *stdio* et un nom de fichier "
+"Il existe différents moyens d'appeler l'interpréteur : vous pouvez donner "
+"une chaîne contenant des instructions Python à :c:func:`PyRun_SimpleString`, "
+"ou vous pouvez donner un pointeur de fichier *stdio* et un nom de fichier "
"(juste pour nommer les messages d'erreur) à :c:func:`PyRunSimpleFile`. Vous "
"pouvez aussi appeler les API de bas niveau décrites dans les chapitres "
"précédents pour construire et utiliser des objets Python."
@@ -102,7 +102,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:49
msgid "Very High Level Embedding"
-msgstr "Intégration de Très Haut Niveau"
+msgstr "Intégration de très haut niveau"
#: ../Doc/extending/embedding.rst:51
msgid ""
@@ -130,10 +130,21 @@ msgid ""
"which saves you the trouble of allocating memory space and loading the file "
"contents."
msgstr ""
+"C'est la fonction :c:func:`Py_SetProgramName` qui devrait être appelée en "
+"premier, avant :c:func:`Py_Initialize`, afin d'informer l'interpréteur des "
+"chemins vers ses bibliothèques. Ensuite l'interpréteur est initialisé par :c:"
+"func:`Py_Initialize`, suivi de l'exécution de Python codé en dur affichant "
+"la date et l'heure, puis, l'appel à :c:func:`Py_FinalizeEx` éteint "
+"l'interpréteur, engendrant ainsi la fin du programme. Dans un vrai "
+"programme, vous pourriez vouloir lire le script Python depuis une autre "
+"source, peut être depuis un éditeur de texte, un fichier, ou une base de "
+"donnée. Récupérer du code Python depuis un fichier se fait via :c:func:"
+"`PyRun_SimplFile`, qui vous économise le travail d'allouer de la mémoire et "
+"de charger le contenu du fichier."
#: ../Doc/extending/embedding.rst:92
msgid "Beyond Very High Level Embedding: An overview"
-msgstr "Au delà de l'Intégration de Haut Niveau: Survol"
+msgstr "Au-delà de l'intégration de haut niveau : survol"
#: ../Doc/extending/embedding.rst:94
msgid ""
@@ -159,7 +170,7 @@ msgstr ""
"Il est à souligner qu'étendre ou intégrer Python revient à la louche au "
"même, en dépit de la différence d'intention. La plupart des sujets parcourus "
"dans les chapitres précédents sont toujours valides. Pour le prouver, "
-"regardez ce qu'un code d'extension de Python vers C fait réellement :"
+"regardez ce qu'un code d'extension de Python vers C fait réellement :"
#: ../Doc/extending/embedding.rst:104
msgid "Convert data values from Python to C,"
@@ -175,7 +186,7 @@ msgstr "Convertir les résultats de l'appel à la fonction C pour Python."
#: ../Doc/extending/embedding.rst:110
msgid "When embedding Python, the interface code does:"
-msgstr "Lors de l'intégration de Python, le code de l'interface fait :"
+msgstr "Lors de l'intégration de Python, le code de l'interface fait :"
#: ../Doc/extending/embedding.rst:112
msgid "Convert data values from C to Python,"
@@ -201,7 +212,7 @@ msgid ""
"you call a C routine, when embedding, you call a Python routine."
msgstr ""
"Tel que vous le voyez, les conversions sont simplement inversées pour "
-"s'adapter au différentes directions de transfert inter-langage. La seule "
+"s'adapter aux différentes directions de transfert inter-langage. La seule "
"différence est la fonction que vous appelez entre les deux conversions de "
"données. Lors de l'extension, vous appelez une fonction C, lors de "
"l'intégration vous appelez une fonction Python."
@@ -221,7 +232,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:133
msgid "Pure Embedding"
-msgstr "Intégration Pure"
+msgstr "Intégration pure"
#: ../Doc/extending/embedding.rst:135
msgid ""
@@ -237,7 +248,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:140
msgid "The code to run a function defined in a Python script is:"
-msgstr "Le code pour appeler une fonction définie dans un script Python est :"
+msgstr "Le code pour appeler une fonction définie dans un script Python est :"
#: ../Doc/extending/embedding.rst:145
msgid ""
@@ -250,12 +261,12 @@ msgstr ""
"Ce code charge un script Python en utilisant ``argv[1]``, et appelle une "
"fonction dont le nom est dans ``argv[2]``. Ses arguments entiers sont les "
"autres valeurs de ``argv``. Si vous :ref:`compilez et liez ` ce "
-"programme (appelons l'exécutable :program:`call`), et l'appellez pour "
-"exécuter un script Python, tel que :"
+"programme (appelons l'exécutable :program:`call`), et l'appelez pour "
+"exécuter un script Python, tel que :"
#: ../Doc/extending/embedding.rst:160
msgid "then the result should be:"
-msgstr "alors, le résultat sera:"
+msgstr "alors, le résultat sera :"
#: ../Doc/extending/embedding.rst:168
msgid ""
@@ -266,7 +277,7 @@ msgstr ""
"Bien que le programme soit plutôt gros pour ses fonctionnalités, la plupart "
"du code n'est que conversion de données entre Python et C, aussi que pour "
"rapporter les erreurs. La partie intéressante, qui concerne l'intégration de "
-"Python débute par : ::"
+"Python débute par ::"
#: ../Doc/extending/embedding.rst:177
msgid ""
@@ -277,8 +288,8 @@ msgid ""
msgstr ""
"Après avoir initialisé l'interpréteur, le script est chargé en utilisant :c:"
"func:`PyImport_Import`. Cette fonction prend une chaîne Python pour "
-"argument, elle même construite en utilisant la fonction de conversion :c:"
-"func:`PyUnicode_FromString`."
+"argument, elle-même construite en utilisant la fonction de conversion :c:"
+"func:`PyUnicode_FromString`. ::"
#: ../Doc/extending/embedding.rst:190
msgid ""
@@ -291,8 +302,8 @@ msgstr ""
"Une fois le script chargé, le nom recherché est obtenu en utilisant :c:func:"
"`PyObject_GetAttrString`. Si le nom existe, et que l'objet récupéré peut "
"être appelé, vous pouvez présumer sans risque que c'est une fonction. Le "
-"programme continue, classiquement, par la construction de l'uplet "
-"d'arguments. L'appel à la fonction Python est alors effectué avec : ::"
+"programme continue, classiquement, par la construction de n-uplet "
+"d'arguments. L'appel à la fonction Python est alors effectué avec ::"
#: ../Doc/extending/embedding.rst:198
msgid ""
@@ -306,7 +317,7 @@ msgstr ""
#: ../Doc/extending/embedding.rst:206
msgid "Extending Embedded Python"
-msgstr "Étendre un Python Intégré"
+msgstr "Étendre un Python intégré"
#: ../Doc/extending/embedding.rst:208
msgid ""
@@ -327,7 +338,7 @@ msgstr ""
"démarre l'interpréteur Python, au lieu de cela, voyez l'application comme un "
"ensemble de fonctions, et rédigez un peu de code pour exposer ces fonctions "
"à Python, tout comme vous écririez une extension Python normale. Par "
-"exemple : ::"
+"exemple ::"
#: ../Doc/extending/embedding.rst:245
msgid ""
@@ -336,7 +347,7 @@ msgid ""
msgstr ""
"Insérez le code ci-dessus juste avant la fonction :c:func:`main`. Ajoutez "
"aussi les deux instructions suivantes avant l'appel à :c:func:"
-"`Py_Initialize` ::"
+"`Py_Initialize` ::"
#: ../Doc/extending/embedding.rst:251
msgid ""
@@ -345,7 +356,7 @@ msgid ""
"extensions, the Python script can do things like"
msgstr ""
"Ces deux lignes initialisent la variable ``numarg``, et rend la fonction :"
-"func:`emb.numargs` accessible à l'interprète intégré. Avec ces ajouts, le "
+"func:`emb.numargs` accessible à l'interpréteur intégré. Avec ces ajouts, le "
"script Python petit maintenant faire des choses comme"
#: ../Doc/extending/embedding.rst:260
@@ -353,7 +364,7 @@ msgid ""
"In a real application, the methods will expose an API of the application to "
"Python."
msgstr ""
-"Dans un cas réel, les méthodes exposeraient une API de l'application a "
+"Dans un cas réel, les méthodes exposeraient une API de l'application à "
"Python."
#: ../Doc/extending/embedding.rst:270
@@ -398,10 +409,10 @@ msgid ""
"available). This script has several options, of which the following will be "
"directly useful to you:"
msgstr ""
-"Pour trouver les bonnes option de compilateur et *linker*, vous pouvez "
+"Pour trouver les bonnes options de compilateur et *linker*, vous pouvez "
"exécuter le script :file:`python(X.Y)-config` généré durant l'installation "
"(un script :file:`python3-config` peut aussi être disponible). Ce script a "
-"quelques options, celles-ci vous seront utiles :"
+"quelques options, celles-ci vous seront utiles :"
#: ../Doc/extending/embedding.rst:295
msgid ""
@@ -409,7 +420,7 @@ msgid ""
"compiling:"
msgstr ""
"``pythonX.Y-config --cflags`` vous donnera les options recommandées pour "
-"compiler:"
+"compiler :"
#: ../Doc/extending/embedding.rst:303
msgid ""
@@ -417,7 +428,7 @@ msgid ""
"linking:"
msgstr ""
"``pythonX.Y-config --ldflags`` vous donnera les drapeaux recommandés lors de "
-"l'édition de lien:"
+"l'édition de lien :"
#: ../Doc/extending/embedding.rst:312
msgid ""
@@ -444,10 +455,10 @@ msgid ""
msgstr ""
"Si cette procédure ne fonctionne pas pour vous (il n'est pas garanti qu'elle "
"fonctionne pour toutes les plateformes Unix, mais nous traiteront volontiers "
-"les :ref:`rapports de bugs `), vous devrez lire "
-"ladocumentation de votre système sur la liaison dynamique (*dynamic "
-"linking*) et / ouexaminer le :file:`Makefile` de Python (utilisez :func:"
-"`sysconfig.get_makefile_filename` pour trouver son emplacement) et les "
-"options de compilation. Dans ce cas, le module :mod:`sysconfig` est un outil "
-"utile pour extraire automatiquement les valeurs de configuration que vous "
-"voudrez combiner ensemble. Par example :"
+"les :ref:`rapports de bugs `), vous devrez lire la "
+"documentation de votre système sur la liaison dynamique (*dynamic linking*) "
+"et / ou examiner le :file:`Makefile` de Python (utilisez :func:`sysconfig."
+"get_makefile_filename` pour trouver son emplacement) et les options de "
+"compilation. Dans ce cas, le module :mod:`sysconfig` est un outil utile pour "
+"extraire automatiquement les valeurs de configuration que vous voudrez "
+"combiner ensemble. Par exemple :"
diff --git a/extending/extending.po b/extending/extending.po
index d88257393..c7122f63f 100644
--- a/extending/extending.po
+++ b/extending/extending.po
@@ -3,19 +3,19 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language-Team: LANGUAGE \n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
+"PO-Revision-Date: 2018-05-08 17:12+0200\n"
+"Last-Translator: Julien Palard \n"
+"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/extending/extending.rst:8
msgid "Extending Python with C or C++"
@@ -87,18 +87,18 @@ msgstr "Un exemple simple"
msgid ""
"Let's create an extension module called ``spam`` (the favorite food of Monty "
"Python fans...) and let's say we want to create a Python interface to the C "
-"library function :c:func:`system`. [#]_ This function takes a null-"
+"library function :c:func:`system` [#]_. This function takes a null-"
"terminated character string as argument and returns an integer. We want "
-"this function to be callable from Python as follows::"
+"this function to be callable from Python as follows:"
msgstr ""
"Créons un module d'extension appelé ``spam`` (la nourriture préférée de fans "
"des Monty Python ...) et disons que nous voulons créer une interface Python "
-"à la fonction de la bibliothèque C :c:func:`system`. [#]_ Cette fonction "
+"à la fonction de la bibliothèque C :c:func:`system` [#]_. Cette fonction "
"prend une chaîne de caractères terminée par NULL comme argument et renvoie "
"un entier. Nous voulons que cette fonction soit appelable à partir de Python "
-"comme suit : ::"
+"comme suit :"
-#: ../Doc/extending/extending.rst:50
+#: ../Doc/extending/extending.rst:52
msgid ""
"Begin by creating a file :file:`spammodule.c`. (Historically, if a module "
"is called ``spam``, the C file containing its implementation is called :file:"
@@ -110,11 +110,11 @@ msgstr ""
"appelé :file:`spammodule.c`. Si le nom du module est très long, comme "
"``spammify``, le nom du module peut être juste :file:`spammify.c`.)"
-#: ../Doc/extending/extending.rst:55
+#: ../Doc/extending/extending.rst:57
msgid "The first line of our file can be::"
msgstr "La première ligne de notre fichier peut être : ::"
-#: ../Doc/extending/extending.rst:59
+#: ../Doc/extending/extending.rst:61
msgid ""
"which pulls in the Python API (you can add a comment describing the purpose "
"of the module and a copyright notice if you like)."
@@ -122,7 +122,7 @@ msgstr ""
"qui récupère l'API Python (vous pouvez ajouter un commentaire décrivant le "
"but du module et un avis de droit d'auteur si vous le souhaitez)."
-#: ../Doc/extending/extending.rst:64
+#: ../Doc/extending/extending.rst:66
msgid ""
"Since Python may define some pre-processor definitions which affect the "
"standard headers on some systems, you *must* include :file:`Python.h` before "
@@ -132,7 +132,7 @@ msgstr ""
"les têtes standard sur certains systèmes, vous *devez* inclure :file:`Python."
"h` avant les en-têtes standards."
-#: ../Doc/extending/extending.rst:68
+#: ../Doc/extending/extending.rst:70
msgid ""
"All user-visible symbols defined by :file:`Python.h` have a prefix of ``Py`` "
"or ``PY``, except those defined in standard header files. For convenience, "
@@ -145,12 +145,12 @@ msgstr ""
"Tous les symboles exposés par :file:`Python.h` sont préfixés de ``Py`` ou "
"``PY``, sauf ceux qui sont définis dans les en-têtes standard. Pour le "
"confort, et comme ils sont largement utilisés par l'interpréteur Python, ``"
-"\"Python.h\"`` inclu lui même quelques d'en-têtes standard : ````, "
+"\"Python.h\"`` inclut lui même quelques d'en-têtes standard : ````, "
"````, ```` et ````. Si ce dernier n'existe pas "
"sur votre système, il déclare les fonctions :c:func:`malloc`, :c:func:`free` "
"et :c:func:`realloc` directement."
-#: ../Doc/extending/extending.rst:76
+#: ../Doc/extending/extending.rst:78
msgid ""
"The next thing we add to our module file is the C function that will be "
"called when the Python expression ``spam.system(string)`` is evaluated "
@@ -159,21 +159,21 @@ msgstr ""
"La prochaine chose que nous ajoutons à notre fichier de module est la "
"fonction C qui sera appelée lorsque l'expression Python ``spam."
"system(chaîne)`` sera évaluée (nous verrons bientôt comment elle finit par "
-"être appelée) ::"
+"être appelée) ::"
-#: ../Doc/extending/extending.rst:92
+#: ../Doc/extending/extending.rst:94
msgid ""
"There is a straightforward translation from the argument list in Python (for "
"example, the single expression ``\"ls -l\"``) to the arguments passed to the "
"C function. The C function always has two arguments, conventionally named "
"*self* and *args*."
msgstr ""
-"Il ya une correspondance directe de la liste des arguments en Python (par "
+"Il y a une correspondance directe de la liste des arguments en Python (par "
"exemple, l'expression ``\"ls -l\"``) aux arguments passés à la fonction C. "
"La fonction C a toujours deux arguments, appelés par convention *self* et "
"*args*."
-#: ../Doc/extending/extending.rst:97
+#: ../Doc/extending/extending.rst:99
msgid ""
"The *self* argument points to the module object for module-level functions; "
"for a method it would point to the object instance."
@@ -181,7 +181,7 @@ msgstr ""
"Pour les fonctions au niveau du module, l'argument *self* pointe sur l'objet "
"module, pour une méthode, il pointe sur l'instance de l'objet."
-#: ../Doc/extending/extending.rst:100
+#: ../Doc/extending/extending.rst:102
msgid ""
"The *args* argument will be a pointer to a Python tuple object containing "
"the arguments. Each item of the tuple corresponds to an argument in the "
@@ -202,7 +202,7 @@ msgstr ""
"ainsi que les types de variables C dans lequel stocker les valeurs "
"converties. Nous en verront plus, plus tard."
-#: ../Doc/extending/extending.rst:109
+#: ../Doc/extending/extending.rst:111
msgid ""
":c:func:`PyArg_ParseTuple` returns true (nonzero) if all arguments have the "
"right type and its components have been stored in the variables whose "
@@ -213,16 +213,16 @@ msgid ""
msgstr ""
":c:func:`PyArg_ParseTuple` renvoie vrai (pas zéro) si tous les arguments ont "
"le bon type et que ses composants ont été stockés dans les variables dont "
-"les adresses données. Il retourne faux (zéro) si une liste d'arguments "
-"invalide a été passée. Dans ce dernier cas, elle soulève également une "
-"exception appropriée de sorte que la fonction d'appel puisse retourner "
-"*NULL* immédiatement (comme nous l'avons vu dans l'exemple)."
+"les adresses données. Il renvoie faux (zéro) si une liste d'arguments "
+"invalide a été passée. Dans ce dernier cas, elle lève également une "
+"exception appropriée de sorte que la fonction d'appel puisse renvoyer *NULL* "
+"immédiatement (comme nous l'avons vu dans l'exemple)."
-#: ../Doc/extending/extending.rst:119
+#: ../Doc/extending/extending.rst:121
msgid "Intermezzo: Errors and Exceptions"
-msgstr "Intermezzo: Les Erreurs et Exceptions"
+msgstr "Intermezzo: Les erreurs et exceptions"
-#: ../Doc/extending/extending.rst:121
+#: ../Doc/extending/extending.rst:123
msgid ""
"An important convention throughout the Python interpreter is the following: "
"when a function fails, it should set an exception condition and return an "
@@ -249,7 +249,7 @@ msgstr ""
"Reference*). Il est important de les connaître pour comprendre comment les "
"erreurs sont propagées."
-#: ../Doc/extending/extending.rst:132
+#: ../Doc/extending/extending.rst:134
msgid ""
"The Python API defines a number of functions to set various types of "
"exceptions."
@@ -257,7 +257,7 @@ msgstr ""
"L'API Python définit un certain nombre de fonctions pour créer différents "
"types d'exceptions."
-#: ../Doc/extending/extending.rst:134
+#: ../Doc/extending/extending.rst:136
msgid ""
"The most common one is :c:func:`PyErr_SetString`. Its arguments are an "
"exception object and a C string. The exception object is usually a "
@@ -271,7 +271,7 @@ msgstr ""
"cause de l'erreur et est convertie en une chaîne Python puis stockée en tant "
"que \"valeur associée\" à l'exception."
-#: ../Doc/extending/extending.rst:140
+#: ../Doc/extending/extending.rst:142
msgid ""
"Another useful function is :c:func:`PyErr_SetFromErrno`, which only takes an "
"exception argument and constructs the associated value by inspection of the "
@@ -286,7 +286,7 @@ msgstr ""
"arguments: l'exception et sa valeur associée. Vous ne devez pas appliquer :c:"
"func:`Py_INCREF` aux objets transmis à ces fonctions."
-#: ../Doc/extending/extending.rst:147
+#: ../Doc/extending/extending.rst:149
msgid ""
"You can test non-destructively whether an exception has been set with :c:"
"func:`PyErr_Occurred`. This returns the current exception object, or *NULL* "
@@ -301,7 +301,7 @@ msgstr ""
"survenue durant l'appel d'une fonction, puisque vous devriez être en mesure "
"de le déterminer à partir de la valeur de retour."
-#: ../Doc/extending/extending.rst:153
+#: ../Doc/extending/extending.rst:155
msgid ""
"When a function *f* that calls another function *g* detects that the latter "
"fails, *f* should itself return an error value (usually *NULL* or ``-1``). "
@@ -318,7 +318,7 @@ msgstr ""
"cette dernière a échoué, *f* devrait donner une valeur d'erreur à son tour "
"(habituellement *NULL* ou ``-1``). *f* ne devrait *pas* appeler l'une des "
"fonctions :c:func:`PyErr_\\*`, l'une d'elles ayant déjà été appelée par *g*. "
-"La fonction appelant *f* est alors censée retourner aussi un code d'erreur à "
+"La fonction appelant *f* est alors censée renvoyer aussi un code d'erreur à "
"celle qui l'a appelée, toujours sans utiliser :c:func:`PyErr_\\*`, et ainsi "
"de suite. La cause la plus détaillée de l'erreur a déjà été signalée par la "
"fonction l'ayant détectée en premier. Une fois l'erreur remontée à la boucle "
@@ -326,7 +326,7 @@ msgstr ""
"d'exécution et essaie de trouver un gestionnaire d'exception spécifié par le "
"développeur Python."
-#: ../Doc/extending/extending.rst:163
+#: ../Doc/extending/extending.rst:165
msgid ""
"(There are situations where a module can actually give a more detailed error "
"message by calling another :c:func:`PyErr_\\*` function, and in such cases "
@@ -334,14 +334,14 @@ msgid ""
"can cause information about the cause of the error to be lost: most "
"operations can fail for a variety of reasons.)"
msgstr ""
-"(Il ya des situations où un module peut effectivement donner un message "
+"(Il y a des situations où un module peut effectivement donner un message "
"d'erreur plus détaillé en appelant une autre fonction :c:func:`PyErr_\\*`, "
"dans de tels cas, il est tout à fait possible de le faire. Cependant, ce "
"n'est généralement pas nécessaire, et peut amener à perdre des informations "
"sur la cause de l'erreur: la plupart des opérations peuvent échouer pour "
"tout un tas de raisons)."
-#: ../Doc/extending/extending.rst:169
+#: ../Doc/extending/extending.rst:171
msgid ""
"To ignore an exception set by a function call that failed, the exception "
"condition must be cleared explicitly by calling :c:func:`PyErr_Clear`. The "
@@ -356,7 +356,7 @@ msgstr ""
"l'interpréteur, mais souhaite la gérer lui-même (peut-être en essayant "
"quelque chose d'autre, ou en prétendant que rien n'a mal tourné)."
-#: ../Doc/extending/extending.rst:175
+#: ../Doc/extending/extending.rst:177
msgid ""
"Every failing :c:func:`malloc` call must be turned into an exception --- the "
"direct caller of :c:func:`malloc` (or :c:func:`realloc`) must call :c:func:"
@@ -371,7 +371,7 @@ msgstr ""
"`PyLong_FromLong`) le font déjà, donc cette note ne concerne que ceux qui "
"appellent :c:func:`malloc` directement."
-#: ../Doc/extending/extending.rst:181
+#: ../Doc/extending/extending.rst:183
msgid ""
"Also note that, with the important exception of :c:func:`PyArg_ParseTuple` "
"and friends, functions that return an integer status usually return a "
@@ -383,7 +383,7 @@ msgstr ""
"donnent généralement une valeur positive ou zéro en cas de succès et ``-1`` "
"en cas d'échec, comme les appels du système Unix."
-#: ../Doc/extending/extending.rst:185
+#: ../Doc/extending/extending.rst:187
msgid ""
"Finally, be careful to clean up garbage (by making :c:func:`Py_XDECREF` or :"
"c:func:`Py_DECREF` calls for objects you have already created) when you "
@@ -393,7 +393,7 @@ msgstr ""
"de nettoyage (en appelant :c:func:`Py_XDECREF` ou :c:func:`Py_DECREF` avec "
"les objets que vous auriez déjà créés) !"
-#: ../Doc/extending/extending.rst:189
+#: ../Doc/extending/extending.rst:191
msgid ""
"The choice of which exception to raise is entirely yours. There are "
"predeclared C objects corresponding to all built-in Python exceptions, such "
@@ -411,22 +411,21 @@ msgstr ""
"judicieusement vos exceptions, typiquement n'utilisez pas :c:data:"
"`PyExc_TypeError` pour indiquer qu'un fichier n'a pas pu être ouvert (qui "
"devrait probablement être :c:data:`PyExc_IOError`). Si quelque chose ne va "
-"pas avec la liste des arguments, la fonction :c:func:`PyArg_ParseTuple` "
-"soulève habituellement une exception :c:data:`PyExc_TypeError`. Mais si vous "
-"avez un argument dont la valeur doit être dans un intervalle particulier ou "
-"qui doit satisfaire d'autres conditions, :c:data:`PyExc_ValueError` sera "
-"plus appropriée."
+"pas avec la liste des arguments, la fonction :c:func:`PyArg_ParseTuple` lève "
+"habituellement une exception :c:data:`PyExc_TypeError`. Mais si vous avez un "
+"argument dont la valeur doit être dans un intervalle particulier ou qui doit "
+"satisfaire d'autres conditions, :c:data:`PyExc_ValueError` sera plus "
+"appropriée."
-#: ../Doc/extending/extending.rst:199
+#: ../Doc/extending/extending.rst:201
msgid ""
"You can also define a new exception that is unique to your module. For this, "
"you usually declare a static object variable at the beginning of your file::"
msgstr ""
"Vous pouvez également créer une exception spécifique à votre module. Pour "
-"cela, déclarez simplement une variable statique au début de votre "
-"fichier : ::"
+"cela, déclarez simplement une variable statique au début de votre fichier ::"
-#: ../Doc/extending/extending.rst:204
+#: ../Doc/extending/extending.rst:206
msgid ""
"and initialize it in your module's initialization function (:c:func:"
"`PyInit_spam`) with an exception object (leaving out the error checking for "
@@ -434,9 +433,9 @@ msgid ""
msgstr ""
"et initialisez-la dans la fonction d'initialisation de votre module (:c:func:"
"`PyInit_spam`) avec un objet exception (Passons, pour le moment, la "
-"vérification des codes d'erreur) ::"
+"vérification des codes d'erreur) ::"
-#: ../Doc/extending/extending.rst:222
+#: ../Doc/extending/extending.rst:224
msgid ""
"Note that the Python name for the exception object is :exc:`spam.error`. "
"The :c:func:`PyErr_NewException` function may create a class with the base "
@@ -448,7 +447,7 @@ msgstr ""
"`Exception` (à moins qu'une autre classe ne lui soit fournie à la place de "
"*NULL*), voir :ref:`bltin-exceptions`."
-#: ../Doc/extending/extending.rst:227
+#: ../Doc/extending/extending.rst:229
msgid ""
"Note also that the :c:data:`SpamError` variable retains a reference to the "
"newly created exception class; this is intentional! Since the exception "
@@ -458,15 +457,15 @@ msgid ""
"pointer, C code which raises the exception could cause a core dump or other "
"unintended side effects."
msgstr ""
-"Notez également que la variable :c:data:`SpamError` contient une référence "
-"àla nouvelle classe créée; ceci est intentionnel! Comme l'exception peut "
-"êtreretirée du module par un code externe, une référence à la classe est "
-"nécessairepour assurer qu'il ne sera pas rejeté, causant :c:data:`SpamError` "
-"à devenirun pointeur défaillant. S'il devenait un pointeur défaillant, le C "
-"code qui soulèvel'exception peut engendrer un rejet central ou des effets "
-"secondaires innatendus."
+"Notez également que la variable :c:data:`SpamError` contient une référence à "
+"la nouvelle classe créée; ceci est intentionnel! Comme l'exception peut être "
+"retirée du module par un code externe, une référence à la classe est "
+"nécessaire pour assurer qu'il ne sera pas rejeté, causant :c:data:"
+"`SpamError` à devenir un pointeur défaillant. S'il devenait un pointeur "
+"défaillant, le C code qui lève l'exception peut engendrer un rejet central "
+"ou des effets secondaires inattendus."
-#: ../Doc/extending/extending.rst:234
+#: ../Doc/extending/extending.rst:236
msgid ""
"We discuss the use of ``PyMODINIT_FUNC`` as a function return type later in "
"this sample."
@@ -474,27 +473,27 @@ msgstr ""
"Nous traiterons de l'utilisation de ``PyMODINIT_FUNC`` comme un type de "
"retour de fonction plus tard dans cette section."
-#: ../Doc/extending/extending.rst:237
+#: ../Doc/extending/extending.rst:239
msgid ""
"The :exc:`spam.error` exception can be raised in your extension module using "
"a call to :c:func:`PyErr_SetString` as shown below::"
msgstr ""
"L'exception :exc:`spam.error` peut être levée dans votre module d'extension "
-"en appelant :c:func:`PyErr_SetString` comme montré ci-dessous::"
+"en appelant :c:func:`PyErr_SetString` comme montré ci-dessous ::"
-#: ../Doc/extending/extending.rst:260
+#: ../Doc/extending/extending.rst:262
msgid "Back to the Example"
-msgstr "Retour vers l'Exemple"
+msgstr "Retour vers l'exemple"
-#: ../Doc/extending/extending.rst:262
+#: ../Doc/extending/extending.rst:264
msgid ""
"Going back to our example function, you should now be able to understand "
"this statement::"
msgstr ""
-"En retournant vers notre fonction exemple, vous devriez maintenant "
-"êtrecapable de comprendre cette affirmation::"
+"En revenant vers notre fonction exemple, vous devriez maintenant être "
+"capable de comprendre cette affirmation ::"
-#: ../Doc/extending/extending.rst:268
+#: ../Doc/extending/extending.rst:270
msgid ""
"It returns *NULL* (the error indicator for functions returning object "
"pointers) if an error is detected in the argument list, relying on the "
@@ -504,54 +503,54 @@ msgid ""
"which it points (so in Standard C, the variable :c:data:`command` should "
"properly be declared as ``const char *command``)."
msgstr ""
-"Elle retourne *NULL* (l'indicateur d'erreur pour les fonctions retournant "
-"des pointeurs d'objet) si une erreur est detectée dans la liste des "
-"arguments,se fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. "
-"Autrement,la valeur chaîne de l'argument a été copiée dans la variable "
-"locale :c:data:`command`. Il s'agit d'une attribution de pointeur et vous "
-"n'êtes pas supposés modifier la chaîne qui vers laquelle il pointe (donc en "
-"C Standard, la variable :c:data:`command` doit être clairement déclarée "
-"comme ``const char *command``)."
+"Elle renvoie *NULL* (l'indicateur d'erreur pour les fonctions renvoyant des "
+"pointeurs d'objet) si une erreur est détectée dans la liste des arguments,se "
+"fiant à l'exception définie par :c:func:`PyArg_ParseTuple`. Autrement,la "
+"valeur chaîne de l'argument a été copiée dans la variable locale :c:data:"
+"`command`. Il s'agit d'une attribution de pointeur et vous n'êtes pas "
+"supposés modifier la chaîne qui vers laquelle il pointe (donc en C Standard, "
+"la variable :c:data:`command` doit être clairement déclarée comme ``const "
+"char *command``)."
-#: ../Doc/extending/extending.rst:276
+#: ../Doc/extending/extending.rst:278
msgid ""
"The next statement is a call to the Unix function :c:func:`system`, passing "
"it the string we just got from :c:func:`PyArg_ParseTuple`::"
msgstr ""
"La prochaine instruction est un appel à la fonction Unix :c:func:`system`, "
"en lui passant la chaîne que nous venons d'obtenir à partir de :c:func:"
-"`PyArg_ParseTuple`::"
+"`PyArg_ParseTuple` ::"
-#: ../Doc/extending/extending.rst:281
+#: ../Doc/extending/extending.rst:283
msgid ""
"Our :func:`spam.system` function must return the value of :c:data:`sts` as a "
"Python object. This is done using the function :c:func:`PyLong_FromLong`. ::"
msgstr ""
-"Notre fonction :func:`spam.system` doit retourner la valeur de :c:data:`sts` "
+"Notre fonction :func:`spam.system` doit renvoyer la valeur de :c:data:`sts` "
"comme un objet Python. Cela est effectué par l'utilisation de la fonction :c:"
"func:`PyLong_FromLong`. ::"
-#: ../Doc/extending/extending.rst:286
+#: ../Doc/extending/extending.rst:288
msgid ""
"In this case, it will return an integer object. (Yes, even integers are "
"objects on the heap in Python!)"
msgstr ""
-"Dans ce cas, elle retournera un objet entier. (Oui, même les entiers sont "
-"des objets dans le tas en Python!)"
+"Dans ce cas, elle renverra un objet entier. (Oui, même les entiers sont des "
+"objets dans le tas en Python!)"
-#: ../Doc/extending/extending.rst:289
+#: ../Doc/extending/extending.rst:291
msgid ""
"If you have a C function that returns no useful argument (a function "
"returning :c:type:`void`), the corresponding Python function must return "
"``None``. You need this idiom to do so (which is implemented by the :c:"
"macro:`Py_RETURN_NONE` macro)::"
msgstr ""
-"Si vous avez une fonction C qui ne retourne aucun argument utile (une "
-"fonction retournant :c:type:`void`), la fonction Python correspondante doit "
-"retourner ``None``. Vous aurez besoin de cette locution pour cela (qui est "
-"implémentée par la macro :c:macro:`Py_RETURN_NONE`)::"
+"Si vous avez une fonction C qui ne renvoie aucun argument utile (une "
+"fonction renvoyant :c:type:`void`), la fonction Python correspondante doit "
+"renvoyer ``None``. Vous aurez besoin de cette locution pour cela (qui est "
+"implémentée par la macro :c:macro:`Py_RETURN_NONE`) ::"
-#: ../Doc/extending/extending.rst:297
+#: ../Doc/extending/extending.rst:299
msgid ""
":c:data:`Py_None` is the C name for the special Python object ``None``. It "
"is a genuine Python object rather than a *NULL* pointer, which means \"error"
@@ -559,19 +558,23 @@ msgid ""
msgstr ""
":c:data:`Py_None` est le nom C pour l'objet spécial Python ``None``. C'est "
"un authentique objet Python plutôt qu'un pointeur *NULL*, qui signifie "
-"\"error\" dans la plupart des situations, comme nous l'avons vu."
+"qu'une erreur est survenue, dans la plupart des situations, comme nous "
+"l'avons vu."
-#: ../Doc/extending/extending.rst:305
+#: ../Doc/extending/extending.rst:307
msgid "The Module's Method Table and Initialization Function"
-msgstr ""
+msgstr "La fonction d'initialisation et le tableau des méthodes du module"
-#: ../Doc/extending/extending.rst:307
+#: ../Doc/extending/extending.rst:309
msgid ""
"I promised to show how :c:func:`spam_system` is called from Python programs. "
"First, we need to list its name and address in a \"method table\"::"
msgstr ""
+"Nous avons promis de montrer comment :c:func:`spam_system` est appelée "
+"depuis les programmes Python. D'abord, nous avons besoin d'avoir son nom et "
+"son adresse dans un « tableau des méthodes » ::"
-#: ../Doc/extending/extending.rst:318
+#: ../Doc/extending/extending.rst:320
msgid ""
"Note the third entry (``METH_VARARGS``). This is a flag telling the "
"interpreter the calling convention to be used for the C function. It should "
@@ -579,15 +582,24 @@ msgid ""
"value of ``0`` means that an obsolete variant of :c:func:`PyArg_ParseTuple` "
"is used."
msgstr ""
+"Notez la troisième entrée (``METH_VARARGS``). C'est un indicateur du type de "
+"convention à utiliser pour la fonction C, à destination de l'interpréteur. "
+"Il doit valoir normalement ``METH_VARARGS`` ou ``METH_VARARGS | "
+"METH_KEYWORDS`` ; la valeur ``0`` indique qu'une variante obsolète de :c:"
+"func:`PyArg_ParseTuple` est utilisée."
-#: ../Doc/extending/extending.rst:323
+#: ../Doc/extending/extending.rst:325
msgid ""
"When using only ``METH_VARARGS``, the function should expect the Python-"
"level parameters to be passed in as a tuple acceptable for parsing via :c:"
"func:`PyArg_ParseTuple`; more information on this function is provided below."
msgstr ""
+"Si seulement ``METH_VARARGS`` est utilisé, la fonction s'attend à ce que les "
+"paramètres Python soient passés comme un n-uplet que l'on peut analyser "
+"*via* :c:func:`PyArg_ParseTuple` ; des informations supplémentaires sont "
+"fournies plus bas."
-#: ../Doc/extending/extending.rst:327
+#: ../Doc/extending/extending.rst:329
msgid ""
"The :const:`METH_KEYWORDS` bit may be set in the third field if keyword "
"arguments should be passed to the function. In this case, the C function "
@@ -595,28 +607,43 @@ msgid ""
"keywords. Use :c:func:`PyArg_ParseTupleAndKeywords` to parse the arguments "
"to such a function."
msgstr ""
+"Le bit :const:`METH_KEYWORDS` peut être mis à un dans le troisième champ si "
+"des arguments par mot-clés doivent être passés à la fonction. Dans ce cas, "
+"la fonction C doit accepter un troisième paramètre ``PyObject *`` qui est un "
+"dictionnaire des mots-clés. Utilisez :c:func:`PyArg_ParseTupleAndKeywords` "
+"pour analyser les arguments d'une telle fonction."
-#: ../Doc/extending/extending.rst:333
+#: ../Doc/extending/extending.rst:335
msgid ""
"The method table must be referenced in the module definition structure::"
msgstr ""
+"Le tableau des méthodes doit être référencé dans la structure de définition "
+"du module ::"
-#: ../Doc/extending/extending.rst:344
+#: ../Doc/extending/extending.rst:346
msgid ""
"This structure, in turn, must be passed to the interpreter in the module's "
"initialization function. The initialization function must be named :c:func:"
"`PyInit_name`, where *name* is the name of the module, and should be the "
"only non-\\ ``static`` item defined in the module file::"
msgstr ""
+"Cette structure, à son tour, doit être transmise à l'interpréteur dans la "
+"fonction d'initialisation du module. La fonction d'initialisation doit être "
+"nommée :c:func:`PyInit_name`, où *nom* est le nom du module, et doit être le "
+"seul élément non ``static`` défini dans le fichier du module ::"
-#: ../Doc/extending/extending.rst:355
+#: ../Doc/extending/extending.rst:357
msgid ""
"Note that PyMODINIT_FUNC declares the function as ``PyObject *`` return "
"type, declares any special linkage declarations required by the platform, "
"and for C++ declares the function as ``extern \"C\"``."
msgstr ""
+"Notez que *PyMODINIT_FUNC* déclare la fonction comme renvoyant un objet de "
+"type ``PyObject *``, et déclare également toute déclaration de liaison "
+"spéciale requise par la plate-forme, et pour le C++ déclare la fonction "
+"comme un C ``extern``."
-#: ../Doc/extending/extending.rst:359
+#: ../Doc/extending/extending.rst:361
msgid ""
"When the Python program imports module :mod:`spam` for the first time, :c:"
"func:`PyInit_spam` is called. (See below for comments about embedding "
@@ -630,15 +657,20 @@ msgid ""
"gets inserted into ``sys.modules``."
msgstr ""
-#: ../Doc/extending/extending.rst:370
+#: ../Doc/extending/extending.rst:372
msgid ""
"When embedding Python, the :c:func:`PyInit_spam` function is not called "
"automatically unless there's an entry in the :c:data:`PyImport_Inittab` "
"table. To add the module to the initialization table, use :c:func:"
"`PyImport_AppendInittab`, optionally followed by an import of the module::"
msgstr ""
+"Lors de l'intégration de Python, la fonction :c:func:`PyInit_spam` n'est pas "
+"appelée automatiquement, sauf s'il y a une entrée dans la table :c:data:"
+"`PyImport_Inittab`. Pour ajouter le module à la table d'initialisation, "
+"utilisez :c:func:`PyImport_AppendInittab`, suivi éventuellement d'une "
+"importation du module ::"
-#: ../Doc/extending/extending.rst:406
+#: ../Doc/extending/extending.rst:408
msgid ""
"Removing entries from ``sys.modules`` or importing compiled modules into "
"multiple interpreters within a process (or following a :c:func:`fork` "
@@ -646,27 +678,41 @@ msgid ""
"extension modules. Extension module authors should exercise caution when "
"initializing internal data structures."
msgstr ""
+"Supprimer des entrées de ``sys.modules`` ou importer des modules compilés "
+"dans plusieurs interpréteurs au sein d'un processus (ou suivre un :c:func:"
+"`fork` sans l'intervention d'un :c:func:`exec`) peut créer des problèmes "
+"pour certains modules d'extension. Les auteurs de modules d'extension "
+"doivent faire preuve de prudence lorsqu'ils initialisent des structures de "
+"données internes."
-#: ../Doc/extending/extending.rst:412
+#: ../Doc/extending/extending.rst:414
msgid ""
"A more substantial example module is included in the Python source "
"distribution as :file:`Modules/xxmodule.c`. This file may be used as a "
"template or simply read as an example."
msgstr ""
+"Un exemple de module plus substantiel est inclus dans la distribution des "
+"sources Python sous le nom :file:`Modules/xxmodule.c`. Ce fichier peut être "
+"utilisé comme modèle ou simplement lu comme exemple."
-#: ../Doc/extending/extending.rst:418
+#: ../Doc/extending/extending.rst:420
msgid ""
"Unlike our ``spam`` example, ``xxmodule`` uses *multi-phase initialization* "
"(new in Python 3.5), where a PyModuleDef structure is returned from "
"``PyInit_spam``, and creation of the module is left to the import machinery. "
"For details on multi-phase initialization, see :PEP:`489`."
msgstr ""
+"Contrairement à notre exemple de ``spam``, ``xxmodule`` utilise une "
+"*initialisation multi-phase* (nouveau en Python 3.5), où une structure "
+"*PyModuleDef* est renvoyée à partir de ``PyInit_spam``, et la création du "
+"module est laissée au mécanisme d'importation. Pour plus de détails sur "
+"l'initialisation multi-phase, voir :PEP:`489`."
-#: ../Doc/extending/extending.rst:427
+#: ../Doc/extending/extending.rst:429
msgid "Compilation and Linkage"
-msgstr ""
+msgstr "Compilation et liaison"
-#: ../Doc/extending/extending.rst:429
+#: ../Doc/extending/extending.rst:431
msgid ""
"There are two more things to do before you can use your new extension: "
"compiling and linking it with the Python system. If you use dynamic "
@@ -676,17 +722,17 @@ msgid ""
"Windows (chapter :ref:`building-on-windows`) for more information about this."
msgstr ""
-#: ../Doc/extending/extending.rst:436
+#: ../Doc/extending/extending.rst:438
msgid ""
"If you can't use dynamic loading, or if you want to make your module a "
"permanent part of the Python interpreter, you will have to change the "
"configuration setup and rebuild the interpreter. Luckily, this is very "
"simple on Unix: just place your file (:file:`spammodule.c` for example) in "
"the :file:`Modules/` directory of an unpacked source distribution, add a "
-"line to the file :file:`Modules/Setup.local` describing your file::"
+"line to the file :file:`Modules/Setup.local` describing your file:"
msgstr ""
-#: ../Doc/extending/extending.rst:445
+#: ../Doc/extending/extending.rst:449
msgid ""
"and rebuild the interpreter by running :program:`make` in the toplevel "
"directory. You can also run :program:`make` in the :file:`Modules/` "
@@ -695,17 +741,17 @@ msgid ""
"the :file:`Setup` file.)"
msgstr ""
-#: ../Doc/extending/extending.rst:451
+#: ../Doc/extending/extending.rst:455
msgid ""
"If your module requires additional libraries to link with, these can be "
-"listed on the line in the configuration file as well, for instance::"
+"listed on the line in the configuration file as well, for instance:"
msgstr ""
-#: ../Doc/extending/extending.rst:460
+#: ../Doc/extending/extending.rst:466
msgid "Calling Python Functions from C"
-msgstr ""
+msgstr "Appeler des fonctions Python en C"
-#: ../Doc/extending/extending.rst:462
+#: ../Doc/extending/extending.rst:468
msgid ""
"So far we have concentrated on making C functions callable from Python. The "
"reverse is also useful: calling Python functions from C. This is especially "
@@ -716,7 +762,7 @@ msgid ""
"uses are also imaginable."
msgstr ""
-#: ../Doc/extending/extending.rst:470
+#: ../Doc/extending/extending.rst:476
msgid ""
"Fortunately, the Python interpreter is easily called recursively, and there "
"is a standard interface to call a Python function. (I won't dwell on how to "
@@ -725,7 +771,7 @@ msgid ""
"line option in :file:`Modules/main.c` from the Python source code.)"
msgstr ""
-#: ../Doc/extending/extending.rst:476
+#: ../Doc/extending/extending.rst:482
msgid ""
"Calling a Python function is easy. First, the Python program must somehow "
"pass you the Python function object. You should provide a function (or some "
@@ -735,15 +781,19 @@ msgid ""
"function might be part of a module definition::"
msgstr ""
-#: ../Doc/extending/extending.rst:506
+#: ../Doc/extending/extending.rst:512
msgid ""
"This function must be registered with the interpreter using the :const:"
"`METH_VARARGS` flag; this is described in section :ref:`methodtable`. The :"
"c:func:`PyArg_ParseTuple` function and its arguments are documented in "
"section :ref:`parsetuple`."
msgstr ""
+"Cette fonction doit être déclarée en utilisant le drapeau :const:"
+"`METH_VARARGS` ; ceci est décrit dans la section :ref:`methodtable`. La "
+"fonction :c:func:`PyArg_ParseTuple` et ses arguments sont documentés dans la "
+"section :ref:`parsetuple`."
-#: ../Doc/extending/extending.rst:511
+#: ../Doc/extending/extending.rst:517
msgid ""
"The macros :c:func:`Py_XINCREF` and :c:func:`Py_XDECREF` increment/decrement "
"the reference count of an object and are safe in the presence of *NULL* "
@@ -751,7 +801,7 @@ msgid ""
"info on them in section :ref:`refcounts`."
msgstr ""
-#: ../Doc/extending/extending.rst:518
+#: ../Doc/extending/extending.rst:524
msgid ""
"Later, when it is time to call the function, you call the C function :c:func:"
"`PyObject_CallObject`. This function has two arguments, both pointers to "
@@ -763,7 +813,7 @@ msgid ""
"or more format codes between parentheses. For example::"
msgstr ""
-#: ../Doc/extending/extending.rst:538
+#: ../Doc/extending/extending.rst:544
msgid ""
":c:func:`PyObject_CallObject` returns a Python object pointer: this is the "
"return value of the Python function. :c:func:`PyObject_CallObject` is "
@@ -772,7 +822,7 @@ msgid ""
"`Py_DECREF`\\ -ed immediately after the :c:func:`PyObject_CallObject` call."
msgstr ""
-#: ../Doc/extending/extending.rst:544
+#: ../Doc/extending/extending.rst:550
msgid ""
"The return value of :c:func:`PyObject_CallObject` is \"new\": either it is a "
"brand new object, or it is an existing object whose reference count has been "
@@ -781,7 +831,7 @@ msgid ""
"not interested in its value."
msgstr ""
-#: ../Doc/extending/extending.rst:550
+#: ../Doc/extending/extending.rst:556
msgid ""
"Before you do this, however, it is important to check that the return value "
"isn't *NULL*. If it is, the Python function terminated by raising an "
@@ -792,7 +842,7 @@ msgid ""
"should be cleared by calling :c:func:`PyErr_Clear`. For example::"
msgstr ""
-#: ../Doc/extending/extending.rst:563
+#: ../Doc/extending/extending.rst:569
msgid ""
"Depending on the desired interface to the Python callback function, you may "
"also have to provide an argument list to :c:func:`PyObject_CallObject`. In "
@@ -803,8 +853,18 @@ msgid ""
"simplest way to do this is to call :c:func:`Py_BuildValue`. For example, if "
"you want to pass an integral event code, you might use the following code::"
msgstr ""
+"Selon l'interface souhaitée pour la fonction de rappel Python, vous devrez "
+"peut-être aussi fournir une liste d'arguments à :c:func:"
+"`PyObject_CallObject`. Dans certains cas, la liste d'arguments est également "
+"fournie par le programme Python, par l'intermédiaire de la même interface "
+"qui a spécifié la fonction de rappel. Elle peut alors être sauvegardée et "
+"utilisée de la même manière que l'objet fonction. Dans d'autres cas, vous "
+"pouvez avoir à construire un nouveau n-uplet à passer comme liste "
+"d'arguments. La façon la plus simple de faire cela est d'appeler :c:func:"
+"`Py_BuildValue`. Par exemple, si vous voulez passer un code d'événement "
+"intégral, vous pouvez utiliser le code suivant ::"
-#: ../Doc/extending/extending.rst:582
+#: ../Doc/extending/extending.rst:588
msgid ""
"Note the placement of ``Py_DECREF(arglist)`` immediately after the call, "
"before the error check! Also note that strictly speaking this code is not "
@@ -812,22 +872,26 @@ msgid ""
"checked."
msgstr ""
-#: ../Doc/extending/extending.rst:586
+#: ../Doc/extending/extending.rst:592
msgid ""
"You may also call a function with keyword arguments by using :c:func:"
"`PyObject_Call`, which supports arguments and keyword arguments. As in the "
"above example, we use :c:func:`Py_BuildValue` to construct the dictionary. ::"
msgstr ""
+"Vous pouvez également appeler une fonction avec des arguments nommés en "
+"utilisant :c:func:`PyObject_Call`, qui accepte les arguments et les "
+"arguments nommés. Comme dans l'exemple ci-dessus, nous utilisons :c:func:"
+"`Py_BuildValue` pour construire le dictionnaire. ::"
-#: ../Doc/extending/extending.rst:604
+#: ../Doc/extending/extending.rst:610
msgid "Extracting Parameters in Extension Functions"
-msgstr ""
+msgstr "Extraire des paramètres dans des fonctions d'extension"
-#: ../Doc/extending/extending.rst:608
+#: ../Doc/extending/extending.rst:614
msgid "The :c:func:`PyArg_ParseTuple` function is declared as follows::"
-msgstr ""
+msgstr "La fonction :c:func:`PyArg_ParseTuple` est déclarée ainsi ::"
-#: ../Doc/extending/extending.rst:612
+#: ../Doc/extending/extending.rst:618
msgid ""
"The *arg* argument must be a tuple object containing an argument list passed "
"from Python to a C function. The *format* argument must be a format string, "
@@ -836,7 +900,7 @@ msgid ""
"whose type is determined by the format string."
msgstr ""
-#: ../Doc/extending/extending.rst:618
+#: ../Doc/extending/extending.rst:624
msgid ""
"Note that while :c:func:`PyArg_ParseTuple` checks that the Python arguments "
"have the required types, it cannot check the validity of the addresses of C "
@@ -844,29 +908,30 @@ msgid ""
"probably crash or at least overwrite random bits in memory. So be careful!"
msgstr ""
-#: ../Doc/extending/extending.rst:623
+#: ../Doc/extending/extending.rst:629
msgid ""
"Note that any Python object references which are provided to the caller are "
"*borrowed* references; do not decrement their reference count!"
msgstr ""
"Notez que n'importe quelles références sur un objet Python qui sont données "
"à l'appelant sont des références *empruntées* ; ne décrémentez pas leur "
-"compteur de références ! "
+"compteur de références !"
-#: ../Doc/extending/extending.rst:626
+#: ../Doc/extending/extending.rst:632
msgid "Some example calls::"
-msgstr ""
+msgstr "Quelques exemples d'appels ::"
-#: ../Doc/extending/extending.rst:696
+#: ../Doc/extending/extending.rst:702
msgid "Keyword Parameters for Extension Functions"
-msgstr ""
+msgstr "Paramètres nommés pour des fonctions d'extension"
-#: ../Doc/extending/extending.rst:700
+#: ../Doc/extending/extending.rst:706
msgid ""
"The :c:func:`PyArg_ParseTupleAndKeywords` function is declared as follows::"
msgstr ""
+"La fonction :c:func:`PyArg_ParseTupleAndKeywords` est déclarée ainsi ::"
-#: ../Doc/extending/extending.rst:705
+#: ../Doc/extending/extending.rst:711
msgid ""
"The *arg* and *format* parameters are identical to those of the :c:func:"
"`PyArg_ParseTuple` function. The *kwdict* parameter is the dictionary of "
@@ -877,38 +942,50 @@ msgid ""
"returns true, otherwise it returns false and raises an appropriate exception."
msgstr ""
-#: ../Doc/extending/extending.rst:715
+#: ../Doc/extending/extending.rst:721
msgid ""
"Nested tuples cannot be parsed when using keyword arguments! Keyword "
"parameters passed in which are not present in the *kwlist* will cause :exc:"
"`TypeError` to be raised."
msgstr ""
+"Les n-uplets imbriqués ne peuvent pas être traités lorsqu'on utilise des "
+"arguments de type mot-clé ! Ceux-ci doivent apparaître dans dans *kwlist*, "
+"dans le cas contraire une exception :exc:`TypeError` est levée."
-#: ../Doc/extending/extending.rst:721
+#: ../Doc/extending/extending.rst:727
msgid ""
"Here is an example module which uses keywords, based on an example by Geoff "
"Philbrick (philbrick@hks.com)::"
msgstr ""
+"Voici un exemple de module qui utilise des mots-clés, basé sur un exemple de "
+"*Geoff Philbrick* (philbrick@hks.com) ::"
-#: ../Doc/extending/extending.rst:775
+#: ../Doc/extending/extending.rst:781
msgid "Building Arbitrary Values"
-msgstr ""
+msgstr "Créer des valeurs arbitraires"
-#: ../Doc/extending/extending.rst:777
+#: ../Doc/extending/extending.rst:783
msgid ""
"This function is the counterpart to :c:func:`PyArg_ParseTuple`. It is "
"declared as follows::"
msgstr ""
+"Cette fonction est le complément de :c:func:`PyArg_ParseTuple`. Elle est "
+"déclarée comme suit ::"
-#: ../Doc/extending/extending.rst:782
+#: ../Doc/extending/extending.rst:788
msgid ""
"It recognizes a set of format units similar to the ones recognized by :c:"
"func:`PyArg_ParseTuple`, but the arguments (which are input to the function, "
"not output) must not be pointers, just values. It returns a new Python "
"object, suitable for returning from a C function called from Python."
msgstr ""
+"Il reconnaît un ensemble d'unités de format similaires à celles reconnues "
+"par :c:func:`PyArg_ParseTuple`, mais les arguments (qui sont les données en "
+"entrée de fonction, et non de la sortie) ne doivent pas être des pointeurs, "
+"mais juste des valeurs. Il renvoie un nouvel objet Python, adapté pour être "
+"renvoyé par une fonction C appelée depuis Python."
-#: ../Doc/extending/extending.rst:787
+#: ../Doc/extending/extending.rst:793
msgid ""
"One difference with :c:func:`PyArg_ParseTuple`: while the latter requires "
"its first argument to be a tuple (since Python argument lists are always "
@@ -920,16 +997,17 @@ msgid ""
"parenthesize the format string."
msgstr ""
-#: ../Doc/extending/extending.rst:795
+#: ../Doc/extending/extending.rst:801
msgid ""
"Examples (to the left the call, to the right the resulting Python value):"
msgstr ""
+"Exemples (à gauche l'appel, à droite la valeur résultante, en Python) :"
-#: ../Doc/extending/extending.rst:821
+#: ../Doc/extending/extending.rst:827
msgid "Reference Counts"
-msgstr ""
+msgstr "Compteurs de références"
-#: ../Doc/extending/extending.rst:823
+#: ../Doc/extending/extending.rst:829
msgid ""
"In languages like C or C++, the programmer is responsible for dynamic "
"allocation and deallocation of memory on the heap. In C, this is done using "
@@ -937,8 +1015,14 @@ msgid ""
"``new`` and ``delete`` are used with essentially the same meaning and we'll "
"restrict the following discussion to the C case."
msgstr ""
+"Dans les langages comme le C ou le C++, le développeur est responsable de "
+"l'allocation dynamique et de la dés-allocation de la mémoire sur le tas. En "
+"C, cela se fait à l'aide des fonctions :c:func:`malloc` et :c:func:`free`. "
+"En C++, les opérateurs ``new`` et ``delete`` sont utilisés avec "
+"essentiellement la même signification et nous limiterons la discussion "
+"suivante au cas du C."
-#: ../Doc/extending/extending.rst:829
+#: ../Doc/extending/extending.rst:835
msgid ""
"Every block of memory allocated with :c:func:`malloc` should eventually be "
"returned to the pool of available memory by exactly one call to :c:func:"
@@ -953,7 +1037,7 @@ msgid ""
"crashes."
msgstr ""
-#: ../Doc/extending/extending.rst:840
+#: ../Doc/extending/extending.rst:846
msgid ""
"Common causes of memory leaks are unusual paths through the code. For "
"instance, a function may allocate a block of memory, do some calculation, "
@@ -970,7 +1054,7 @@ msgid ""
"of errors."
msgstr ""
-#: ../Doc/extending/extending.rst:853
+#: ../Doc/extending/extending.rst:859
msgid ""
"Since Python makes heavy use of :c:func:`malloc` and :c:func:`free`, it "
"needs a strategy to avoid memory leaks as well as the use of freed memory. "
@@ -980,8 +1064,16 @@ msgid ""
"reference to it is deleted. When the counter reaches zero, the last "
"reference to the object has been deleted and the object is freed."
msgstr ""
+"Comme Python fait un usage intensif de :c:func:`malloc` et de :c:func:"
+"`free`, il a besoin d'une stratégie pour éviter les fuites de mémoire ainsi "
+"que l'utilisation de la mémoire libérée. La méthode choisie est appelée :dfn:"
+"`reference counting`. Le principe est simple : chaque objet contient un "
+"compteur, qui est incrémenté lorsqu'une référence à l'objet est stockée "
+"quelque part, et qui est décrémenté lorsqu'une référence à celui-ci est "
+"supprimée. Lorsque le compteur atteint zéro, la dernière référence à l'objet "
+"a été supprimée et l'objet est libéré."
-#: ../Doc/extending/extending.rst:861
+#: ../Doc/extending/extending.rst:867
msgid ""
"An alternative strategy is called :dfn:`automatic garbage collection`. "
"(Sometimes, reference counting is also referred to as a garbage collection "
@@ -996,8 +1088,21 @@ msgid ""
"garbage collector will be available for C. Until then, we'll have to live "
"with reference counts."
msgstr ""
-
-#: ../Doc/extending/extending.rst:873
+"Une stratégie alternative est appelée :dfn:`automatic garbage collection` "
+"(ramasse-miettes). Parfois, le comptage des références est également appelé "
+"stratégie de ramasse-miettes, d'où l'utilisation du terme \"automatique\" "
+"pour distinguer les deux. Le grand avantage du ramasse-miettes est que "
+"l'utilisateur n'a pas besoin d'appeler :c:func:`free` explicitement. (Un "
+"autre avantage important est l'amélioration de la vitesse ou de "
+"l'utilisation de la mémoire, ce n'est cependant pas un fait avéré). "
+"L'inconvénient est que pour C, il n'y a pas de ramasse-miettes portable "
+"proprement-dit, alors que le comptage des références peut être implémenté de "
+"façon portable (tant que les fonctions :c:func:`malloc` et :c:func:`free` "
+"soient disponibles, ce que la norme C garantit). Peut-être qu'un jour un "
+"ramasse-miettes suffisamment portable sera disponible pour C. D'ici là, nous "
+"devrons utiliser les compteurs des références."
+
+#: ../Doc/extending/extending.rst:879
msgid ""
"While Python uses the traditional reference counting implementation, it also "
"offers a cycle detector that works to detect reference cycles. This allows "
@@ -1010,8 +1115,20 @@ msgid ""
"in a reference cycle, or referenced from the objects in the cycle, even "
"though there are no further references to the cycle itself."
msgstr ""
-
-#: ../Doc/extending/extending.rst:884
+"Bien que Python utilise l'implémentation traditionnelle de comptage de "
+"référence, il contient également un détecteur de cycles qui fonctionne pour "
+"détecter les cycles de référence. Cela permet aux applications d'empêcher la "
+"création de références circulaires directes ou indirectes ; ceci sont les "
+"faiblesses du ramasse-miettes mis en œuvre en utilisant uniquement le "
+"comptage de référence. Les cycles de référence sont constitués d'objets qui "
+"contiennent des références (éventuellement indirectes) à eux-mêmes, de sorte "
+"que chaque objet du cycle a un comptage de référence qui n'est pas nul. Les "
+"implémentations typiques de comptage de référence ne sont pas capables de "
+"récupérer la mémoire appartenant à des objets dans un cycle de référence, ou "
+"référencés à partir des objets dans le cycle, même s'il n'y a pas d'autres "
+"références au cycle lui-même."
+
+#: ../Doc/extending/extending.rst:890
msgid ""
"The cycle detector is able to detect garbage cycles and can reclaim them. "
"The :mod:`gc` module exposes a way to run the detector (the :func:`~gc."
@@ -1023,11 +1140,11 @@ msgid ""
"detector is disabled in this way, the :mod:`gc` module will not be available."
msgstr ""
-#: ../Doc/extending/extending.rst:898
+#: ../Doc/extending/extending.rst:904
msgid "Reference Counting in Python"
-msgstr ""
+msgstr "Comptage de références en Python"
-#: ../Doc/extending/extending.rst:900
+#: ../Doc/extending/extending.rst:906
msgid ""
"There are two macros, ``Py_INCREF(x)`` and ``Py_DECREF(x)``, which handle "
"the incrementing and decrementing of the reference count. :c:func:"
@@ -1037,8 +1154,15 @@ msgid ""
"this purpose (and others), every object also contains a pointer to its type "
"object."
msgstr ""
+"Il existe deux macros, ``Py_INCREF(x)`` et ``Py_DECREF(x)``, qui gèrent "
+"l'incrémentation et la décrémentation du comptage de référence. :c:func:"
+"`Py_DECREF` libère également l'objet lorsque le comptage atteint zéro. Pour "
+"plus de flexibilité, il n'appelle pas :c:func:`free` directement — plutôt, "
+"il fait un appel à travers un pointeur de fonction dans l'objet :dfn:`type "
+"objet` de l'objet. À cette fin (et pour d'autres), chaque objet contient "
+"également un pointeur vers son objet type."
-#: ../Doc/extending/extending.rst:907
+#: ../Doc/extending/extending.rst:913
msgid ""
"The big question now remains: when to use ``Py_INCREF(x)`` and "
"``Py_DECREF(x)``? Let's first introduce some terms. Nobody \"owns\" an "
@@ -1050,17 +1174,27 @@ msgid ""
"on, store it, or call :c:func:`Py_DECREF`. Forgetting to dispose of an owned "
"reference creates a memory leak."
msgstr ""
+"La grande question demeure maintenant : quand utiliser ``Py_INCREF(x)`` et "
+"``Py_DECREF(x)`` ? Commençons par définir quelques termes. Personne ne "
+"possède un objet, mais vous pouvez en :dfn:`avoir une référence`. Le "
+"comptage de références d'un objet est maintenant défini comme étant le "
+"nombre de références à cet objet. Le propriétaire d'une référence est "
+"responsable d'appeler :c:func:`Py_DECREF` lorsque la référence n'est plus "
+"nécessaire. La propriété d'une référence peut être transférée. Il y a trois "
+"façons de disposer d'une référence : la transmettre, la stocker, ou appeler :"
+"c:func:`Py_DECREF`. Oublier de se débarrasser d'une référence crée une fuite "
+"de mémoire."
-#: ../Doc/extending/extending.rst:916
+#: ../Doc/extending/extending.rst:922
msgid ""
"It is also possible to :dfn:`borrow` [#]_ a reference to an object. The "
"borrower of a reference should not call :c:func:`Py_DECREF`. The borrower "
"must not hold on to the object longer than the owner from which it was "
"borrowed. Using a borrowed reference after the owner has disposed of it "
-"risks using freed memory and should be avoided completely. [#]_"
+"risks using freed memory and should be avoided completely [#]_."
msgstr ""
-#: ../Doc/extending/extending.rst:922
+#: ../Doc/extending/extending.rst:928
msgid ""
"The advantage of borrowing over owning a reference is that you don't need to "
"take care of disposing of the reference on all possible paths through the "
@@ -1070,8 +1204,16 @@ msgid ""
"code a borrowed reference can be used after the owner from which it was "
"borrowed has in fact disposed of it."
msgstr ""
+"L'avantage d'emprunter, plutôt qu'être propriétaire d'une référence est que "
+"vous n'avez pas à vous soucier de disposer de la référence sur tous les "
+"chemins possibles dans le code — en d'autres termes, avec une référence "
+"empruntée, vous ne courez pas le risque de fuites lors d'une sortie "
+"prématurée. L'inconvénient de l'emprunt par rapport à la possession est "
+"qu'il existe certaines situations subtiles où, dans un code apparemment "
+"correct, une référence empruntée peut être utilisée après que le "
+"propriétaire auquel elle a été empruntée l'a en fait éliminée."
-#: ../Doc/extending/extending.rst:930
+#: ../Doc/extending/extending.rst:936
msgid ""
"A borrowed reference can be changed into an owned reference by calling :c:"
"func:`Py_INCREF`. This does not affect the status of the owner from which "
@@ -1080,18 +1222,22 @@ msgid ""
"properly, as well as the previous owner)."
msgstr ""
-#: ../Doc/extending/extending.rst:940
+#: ../Doc/extending/extending.rst:946
msgid "Ownership Rules"
-msgstr ""
+msgstr "Règles concernant la propriété de références"
-#: ../Doc/extending/extending.rst:942
+#: ../Doc/extending/extending.rst:948
msgid ""
"Whenever an object reference is passed into or out of a function, it is part "
"of the function's interface specification whether ownership is transferred "
"with the reference or not."
msgstr ""
+"Chaque fois qu'une référence d'objet est passée à l'intérieur ou à "
+"l'extérieur d'une fonction, elle fait partie de la spécification de "
+"l'interface de la fonction, peu importe que la propriété soit transférée "
+"avec la référence ou non."
-#: ../Doc/extending/extending.rst:946
+#: ../Doc/extending/extending.rst:952
msgid ""
"Most functions that return a reference to an object pass on ownership with "
"the reference. In particular, all functions whose function it is to create "
@@ -1102,7 +1248,7 @@ msgid ""
"reference to a cached item."
msgstr ""
-#: ../Doc/extending/extending.rst:954
+#: ../Doc/extending/extending.rst:960
msgid ""
"Many functions that extract objects from other objects also transfer "
"ownership with the reference, for instance :c:func:"
@@ -1113,14 +1259,14 @@ msgid ""
"list or dictionary."
msgstr ""
-#: ../Doc/extending/extending.rst:961
+#: ../Doc/extending/extending.rst:967
msgid ""
"The function :c:func:`PyImport_AddModule` also returns a borrowed reference, "
"even though it may actually create the object it returns: this is possible "
"because an owned reference to the object is stored in ``sys.modules``."
msgstr ""
-#: ../Doc/extending/extending.rst:965
+#: ../Doc/extending/extending.rst:971
msgid ""
"When you pass an object reference into another function, in general, the "
"function borrows the reference from you --- if it needs to store it, it will "
@@ -1131,7 +1277,7 @@ msgid ""
"don't take over ownership --- they are \"normal.\")"
msgstr ""
-#: ../Doc/extending/extending.rst:973
+#: ../Doc/extending/extending.rst:979
msgid ""
"When a C function is called from Python, it borrows references to its "
"arguments from the caller. The caller owns a reference to the object, so "
@@ -1140,40 +1286,50 @@ msgid ""
"turned into an owned reference by calling :c:func:`Py_INCREF`."
msgstr ""
-#: ../Doc/extending/extending.rst:979
+#: ../Doc/extending/extending.rst:985
msgid ""
"The object reference returned from a C function that is called from Python "
"must be an owned reference --- ownership is transferred from the function to "
"its caller."
msgstr ""
-#: ../Doc/extending/extending.rst:987
+#: ../Doc/extending/extending.rst:993
msgid "Thin Ice"
-msgstr ""
+msgstr "Terrain dangereux"
-#: ../Doc/extending/extending.rst:989
+#: ../Doc/extending/extending.rst:995
msgid ""
"There are a few situations where seemingly harmless use of a borrowed "
"reference can lead to problems. These all have to do with implicit "
"invocations of the interpreter, which can cause the owner of a reference to "
"dispose of it."
msgstr ""
+"Il existe quelques situations où l'utilisation apparemment inoffensive d'une "
+"référence empruntée peut entraîner des problèmes. Tous ces problèmes sont en "
+"lien avec des invocations implicites de l’interpréteur, et peuvent amener le "
+"propriétaire d'une référence à s'en défaire."
-#: ../Doc/extending/extending.rst:993
+#: ../Doc/extending/extending.rst:999
msgid ""
"The first and most important case to know about is using :c:func:`Py_DECREF` "
"on an unrelated object while borrowing a reference to a list item. For "
"instance::"
msgstr ""
+"Le premier cas, et le plus important à connaître, est celui de l'application "
+"de :c:func:`Py_DECREF` à un objet non relié, tout en empruntant une "
+"référence à un élément de liste. Par exemple ::"
-#: ../Doc/extending/extending.rst:1005
+#: ../Doc/extending/extending.rst:1011
msgid ""
"This function first borrows a reference to ``list[0]``, then replaces "
"``list[1]`` with the value ``0``, and finally prints the borrowed reference. "
"Looks harmless, right? But it's not!"
msgstr ""
+"Cette fonction emprunte d'abord une référence à ``list[0]``, puis remplace "
+"``list[1]`` par la valeur ``0``, et enfin affiche la référence empruntée. "
+"Ça a l'air inoffensif, n'est-ce pas ? Mais ce n'est pas le cas !"
-#: ../Doc/extending/extending.rst:1009
+#: ../Doc/extending/extending.rst:1015
msgid ""
"Let's follow the control flow into :c:func:`PyList_SetItem`. The list owns "
"references to all its items, so when item 1 is replaced, it has to dispose "
@@ -1182,8 +1338,15 @@ msgid ""
"defined a :meth:`__del__` method. If this class instance has a reference "
"count of 1, disposing of it will call its :meth:`__del__` method."
msgstr ""
+"Suivons le flux de contrôle dans :c:func:`PyList_SetItem`. La liste possède "
+"des références à tous ses éléments, donc quand l'élément 1 est remplacé, "
+"elle doit se débarrasser de l'élément 1 original. Supposons maintenant que "
+"l'élément 1 original était une instance d'une classe définie par "
+"l'utilisateur, et supposons en outre que la classe définisse une méthode :"
+"meth:`__del__`. Si l'instance de cette classe a un nombre des références de "
+"1, sa destruction appellera sa méthode :meth:`__del__`."
-#: ../Doc/extending/extending.rst:1016
+#: ../Doc/extending/extending.rst:1022
msgid ""
"Since it is written in Python, the :meth:`__del__` method can execute "
"arbitrary Python code. Could it perhaps do something to invalidate the "
@@ -1193,21 +1356,28 @@ msgid ""
"this was the last reference to that object, it would free the memory "
"associated with it, thereby invalidating ``item``."
msgstr ""
+"Comme elle est écrite en Python, la méthode :meth:`__del__` peut exécuter du "
+"code Python arbitraire. Pourrait-elle faire quelque chose pour invalider la "
+"référence à ``item`` dans :c:func:`bug` ? Bien sûr ! En supposant que la "
+"liste passée dans :c:func:`bug` est accessible à la méthode :meth:`__del__`, "
+"elle pourrait exécuter une instruction à l'effet de ``del list[0]``, et en "
+"supposant que ce soit la dernière référence à cet objet, elle libérerait la "
+"mémoire qui lui est associée, invalidant ainsi ``item``."
-#: ../Doc/extending/extending.rst:1024
+#: ../Doc/extending/extending.rst:1030
msgid ""
"The solution, once you know the source of the problem, is easy: temporarily "
"increment the reference count. The correct version of the function reads::"
msgstr ""
-#: ../Doc/extending/extending.rst:1038
+#: ../Doc/extending/extending.rst:1044
msgid ""
"This is a true story. An older version of Python contained variants of this "
"bug and someone spent a considerable amount of time in a C debugger to "
"figure out why his :meth:`__del__` methods would fail..."
msgstr ""
-#: ../Doc/extending/extending.rst:1042
+#: ../Doc/extending/extending.rst:1048
msgid ""
"The second case of problems with a borrowed reference is a variant involving "
"threads. Normally, multiple threads in the Python interpreter can't get in "
@@ -1219,12 +1389,22 @@ msgid ""
"complete. Obviously, the following function has the same problem as the "
"previous one::"
msgstr ""
-
-#: ../Doc/extending/extending.rst:1065
+"Le deuxième cas de problèmes liés à une référence empruntée est une variante "
+"impliquant des fils de discussion. Normalement, plusieurs threads dans "
+"l'interpréteur Python ne peuvent pas se gêner mutuellement, car il existe un "
+"verrou global protégeant tout l'espace objet de Python. Cependant, il est "
+"possible de libérer temporairement ce verrou en utilisant la macro :c:macro:"
+"`Py_BEGIN_ALLOW_THREADS`, et de le ré-acquérir en utilisant :c:macro:"
+"`Py_END_ALLOW_THREADS`. Ceci est un procédé courant pour bloquer les appels "
+"d'entrées/sorties, afin de permettre aux autres threads d'utiliser le "
+"processeur en attendant que les E/S soient terminées. Évidemment, la "
+"fonction suivante a le même problème que la précédente ::"
+
+#: ../Doc/extending/extending.rst:1071
msgid "NULL Pointers"
-msgstr ""
+msgstr "Pointeurs ``NULL``"
-#: ../Doc/extending/extending.rst:1067
+#: ../Doc/extending/extending.rst:1073
msgid ""
"In general, functions that take object references as arguments do not expect "
"you to pass them *NULL* pointers, and will dump core (or cause later core "
@@ -1236,21 +1416,21 @@ msgid ""
"slowly."
msgstr ""
-#: ../Doc/extending/extending.rst:1075
+#: ../Doc/extending/extending.rst:1081
msgid ""
"It is better to test for *NULL* only at the \"source:\" when a pointer that "
"may be *NULL* is received, for example, from :c:func:`malloc` or from a "
"function that may raise an exception."
msgstr ""
-#: ../Doc/extending/extending.rst:1079
+#: ../Doc/extending/extending.rst:1085
msgid ""
"The macros :c:func:`Py_INCREF` and :c:func:`Py_DECREF` do not check for "
"*NULL* pointers --- however, their variants :c:func:`Py_XINCREF` and :c:func:"
"`Py_XDECREF` do."
msgstr ""
-#: ../Doc/extending/extending.rst:1083
+#: ../Doc/extending/extending.rst:1089
msgid ""
"The macros for checking for a particular object type (``Pytype_Check()``) "
"don't check for *NULL* pointers --- again, there is much code that calls "
@@ -1259,24 +1439,24 @@ msgid ""
"variants with *NULL* checking."
msgstr ""
-#: ../Doc/extending/extending.rst:1089
+#: ../Doc/extending/extending.rst:1095
msgid ""
"The C function calling mechanism guarantees that the argument list passed to "
"C functions (``args`` in the examples) is never *NULL* --- in fact it "
-"guarantees that it is always a tuple. [#]_"
+"guarantees that it is always a tuple [#]_."
msgstr ""
-#: ../Doc/extending/extending.rst:1093
+#: ../Doc/extending/extending.rst:1099
msgid ""
"It is a severe error to ever let a *NULL* pointer \"escape\" to the Python "
"user."
msgstr ""
-#: ../Doc/extending/extending.rst:1104
+#: ../Doc/extending/extending.rst:1110
msgid "Writing Extensions in C++"
-msgstr ""
+msgstr "Écrire des extensions en C++"
-#: ../Doc/extending/extending.rst:1106
+#: ../Doc/extending/extending.rst:1112
msgid ""
"It is possible to write extension modules in C++. Some restrictions apply. "
"If the main program (the Python interpreter) is compiled and linked by the C "
@@ -1288,12 +1468,23 @@ msgid ""
"`` --- they use this form already if the symbol ``__cplusplus`` is defined "
"(all recent C++ compilers define this symbol)."
msgstr ""
-
-#: ../Doc/extending/extending.rst:1120
+"C'est possible d'écrire des modules d'extension en C++, mais sous certaines "
+"conditions. Si le programme principal (l'interpréteur Python) est compilé et "
+"lié par le compilateur C, les objets globaux ou statiques avec les "
+"constructeurs ne peuvent pas être utilisés. Ceci n'est pas un problème si le "
+"programme principal est relié par le compilateur C++. Les fonctions qui "
+"seront appelées par l'interpréteur Python (en particulier, les fonctions "
+"d'initialisation des modules) doivent être déclarées en utilisant ``extern "
+"\"C\"``. Il n'est pas nécessaire d'inclure les fichiers d'en-tête Python "
+"dans le ``extern \"C\" {…}``, car ils utilisent déjà ce format si le symbole "
+"``__cplusplus`` est défini (tous les compilateurs C++ récents définissent ce "
+"symbole)."
+
+#: ../Doc/extending/extending.rst:1126
msgid "Providing a C API for an Extension Module"
-msgstr ""
+msgstr "Fournir une API en langage C pour un module d'extension"
-#: ../Doc/extending/extending.rst:1125
+#: ../Doc/extending/extending.rst:1131
msgid ""
"Many extension modules just provide new functions and types to be used from "
"Python, but sometimes the code in an extension module can be useful for "
@@ -1303,8 +1494,17 @@ msgid ""
"create and manipulate lists, this new collection type should have a set of C "
"functions for direct manipulation from other extension modules."
msgstr ""
+"De nombreux modules d'extension fournissent simplement de nouvelles "
+"fonctions et de nouveaux types à utiliser à partir de Python, mais parfois "
+"le code d'un module d'extension peut être utile pour d'autres modules "
+"d'extension. Par exemple, un module d'extension peut mettre en œuvre un type "
+"\"collection\" qui fonctionne comme des listes sans ordre. Tout comme le "
+"type de liste Python standard possède une API C qui permet aux modules "
+"d'extension de créer et de manipuler des listes, ce nouveau type de "
+"collection devrait posséder un ensemble de fonctions C pour une manipulation "
+"directe à partir d'autres modules d'extension."
-#: ../Doc/extending/extending.rst:1133
+#: ../Doc/extending/extending.rst:1139
msgid ""
"At first sight this seems easy: just write the functions (without declaring "
"them ``static``, of course), provide an appropriate header file, and "
@@ -1319,8 +1519,22 @@ msgid ""
"if symbols are globally visible, the module whose functions one wishes to "
"call might not have been loaded yet!"
msgstr ""
-
-#: ../Doc/extending/extending.rst:1145
+"À première vue, cela semble facile : il suffit d'écrire les fonctions (sans "
+"les déclarer \"statiques\", bien sûr), de fournir un fichier d'en-tête "
+"approprié et de documenter l'API C. Et en fait, cela fonctionnerait si tous "
+"les modules d'extension étaient toujours liés statiquement avec "
+"l'interpréteur Python. Cependant, lorsque les modules sont utilisés comme "
+"des bibliothèques partagées, les symboles définis dans un module peuvent ne "
+"pas être visibles par un autre module. Les détails de la visibilité "
+"dépendent du système d'exploitation ; certains systèmes utilisent un espace "
+"de noms global pour l'interpréteur Python et tous les modules d'extension "
+"(Windows, par exemple), tandis que d'autres exigent une liste explicite des "
+"symboles importés au moment de la liaison des modules (AIX en est un "
+"exemple), ou offrent un choix de stratégies différentes (la plupart des "
+"*Unix*). Et même si les symboles sont globalement visibles, le module dont "
+"on souhaite appeler les fonctions n'est peut-être pas encore chargé !"
+
+#: ../Doc/extending/extending.rst:1151
msgid ""
"Portability therefore requires not to make any assumptions about symbol "
"visibility. This means that all symbols in extension modules should be "
@@ -1329,8 +1543,16 @@ msgid ""
"section :ref:`methodtable`). And it means that symbols that *should* be "
"accessible from other extension modules must be exported in a different way."
msgstr ""
+"La portabilité exige donc de ne faire aucune supposition sur la visibilité "
+"des symboles. Cela signifie que tous les symboles des modules d'extension "
+"doivent être déclarés ``static``, à l'exception de la fonction "
+"d'initialisation du module, afin d'éviter les conflits de noms avec les "
+"autres modules d'extension (comme discuté dans la section :ref:"
+"`methodtable`). Et cela signifie que les symboles qui *devraient* être "
+"accessibles à partir d'autres modules d'extension doivent être exportés "
+"d'une manière différente."
-#: ../Doc/extending/extending.rst:1152
+#: ../Doc/extending/extending.rst:1158
msgid ""
"Python provides a special mechanism to pass C-level information (pointers) "
"from one extension module to another one: Capsules. A Capsule is a Python "
@@ -1342,7 +1564,7 @@ msgid ""
"the Capsule."
msgstr ""
-#: ../Doc/extending/extending.rst:1160
+#: ../Doc/extending/extending.rst:1166
msgid ""
"There are many ways in which Capsules can be used to export the C API of an "
"extension module. Each function could get its own Capsule, or all C API "
@@ -1351,8 +1573,15 @@ msgid ""
"distributed in different ways between the module providing the code and the "
"client modules."
msgstr ""
+"Il existe de nombreuses façons d'utiliser les Capsules pour exporter l'API C "
+"d'un module d'extension. Chaque fonction peut obtenir sa propre Capsule, ou "
+"tous les pointeurs de l'API C peuvent être stockés dans un tableau dont "
+"l'adresse est inscrite dans une Capsule. Et les différentes tâches de "
+"stockage et de récupération des pointeurs peuvent être réparties de "
+"différentes manières entre le module fournissant le code et les modules "
+"clients."
-#: ../Doc/extending/extending.rst:1166
+#: ../Doc/extending/extending.rst:1172
msgid ""
"Whichever method you choose, it's important to name your Capsules properly. "
"The function :c:func:`PyCapsule_New` takes a name parameter (:c:type:`const "
@@ -1362,13 +1591,13 @@ msgid ""
"from another."
msgstr ""
-#: ../Doc/extending/extending.rst:1173
+#: ../Doc/extending/extending.rst:1179
msgid ""
"In particular, Capsules used to expose C APIs should be given a name "
"following this convention::"
msgstr ""
-#: ../Doc/extending/extending.rst:1178
+#: ../Doc/extending/extending.rst:1184
msgid ""
"The convenience function :c:func:`PyCapsule_Import` makes it easy to load a "
"C API provided via a Capsule, but only if the Capsule's name matches this "
@@ -1376,7 +1605,7 @@ msgid ""
"the Capsule they load contains the correct C API."
msgstr ""
-#: ../Doc/extending/extending.rst:1183
+#: ../Doc/extending/extending.rst:1189
msgid ""
"The following example demonstrates an approach that puts most of the burden "
"on the writer of the exporting module, which is appropriate for commonly "
@@ -1386,8 +1615,16 @@ msgid ""
"takes care of importing the module and retrieving its C API pointers; client "
"modules only have to call this macro before accessing the C API."
msgstr ""
+"L'exemple suivant montre une approche qui fait peser la plus grande partie "
+"de la charge sur le rédacteur du module d'exportation, ce qui est approprié "
+"pour les modules de bibliothèque couramment utilisés. Il stocke tous les "
+"pointeurs de l'API C (un seul dans l'exemple !) dans un tableau de "
+"pointeurs :c:type:`void` qui devient la valeur d'une Capsule. Le fichier "
+"d'en-tête correspondant au module fournit une macro qui se charge d'importer "
+"le module et de récupérer ses pointeurs d'API C. Les modules clients n'ont "
+"qu'à appeler cette macro avant d'accéder à l'API C."
-#: ../Doc/extending/extending.rst:1191
+#: ../Doc/extending/extending.rst:1197
msgid ""
"The exporting module is a modification of the :mod:`spam` module from "
"section :ref:`extending-simpleexample`. The function :func:`spam.system` "
@@ -1396,60 +1633,82 @@ msgid ""
"complicated in reality (such as adding \"spam\" to every command). This "
"function :c:func:`PySpam_System` is also exported to other extension modules."
msgstr ""
+"Le module d'exportation est une modification du module :mod:`spam` de la "
+"section :ref:`extending-simpleexample`. La fonction :func:`spam.system` "
+"n'appelle pas directement la fonction de la bibliothèque C :c:func:`system`, "
+"mais une fonction :c:func:`PySpam_System`, qui ferait bien sûr quelque chose "
+"de plus compliqué en réalité (comme ajouter du *spam* à chaque commande). "
+"Cette fonction :c:func:`PySpam_System` est également exportée vers d'autres "
+"modules d'extension."
-#: ../Doc/extending/extending.rst:1198
+#: ../Doc/extending/extending.rst:1204
msgid ""
"The function :c:func:`PySpam_System` is a plain C function, declared "
"``static`` like everything else::"
msgstr ""
-#: ../Doc/extending/extending.rst:1207
+#: ../Doc/extending/extending.rst:1213
msgid "The function :c:func:`spam_system` is modified in a trivial way::"
-msgstr ""
+msgstr "La fonction :c:func:`spam_system` est modifiée de manière simple ::"
-#: ../Doc/extending/extending.rst:1221
+#: ../Doc/extending/extending.rst:1227
msgid "In the beginning of the module, right after the line ::"
-msgstr ""
+msgstr "Au début du module, immédiatement après la ligne ::"
-#: ../Doc/extending/extending.rst:1225
+#: ../Doc/extending/extending.rst:1231
msgid "two more lines must be added::"
-msgstr ""
+msgstr "on doit ajouter deux lignes supplémentaires ::"
-#: ../Doc/extending/extending.rst:1230
+#: ../Doc/extending/extending.rst:1236
msgid ""
"The ``#define`` is used to tell the header file that it is being included in "
"the exporting module, not a client module. Finally, the module's "
"initialization function must take care of initializing the C API pointer "
"array::"
msgstr ""
+"L'indicateur ``#define`` est utilisé pour indiquer au fichier d'en-tête "
+"qu'il est inclus dans le module d'exportation, et non dans un module client. "
+"Enfin, la fonction d'initialisation du module doit prendre en charge "
+"l'initialisation du tableau de pointeurs de l'API C ::"
-#: ../Doc/extending/extending.rst:1256
+#: ../Doc/extending/extending.rst:1262
msgid ""
"Note that ``PySpam_API`` is declared ``static``; otherwise the pointer array "
"would disappear when :func:`PyInit_spam` terminates!"
msgstr ""
+"Notez que ``PySpam_API`` est déclaré ``static`` ; sinon le tableau de "
+"pointeurs disparaîtrait lorsque :func:`PyInit_spam`` se finit !"
-#: ../Doc/extending/extending.rst:1259
+#: ../Doc/extending/extending.rst:1265
msgid ""
"The bulk of the work is in the header file :file:`spammodule.h`, which looks "
"like this::"
msgstr ""
+"L'essentiel du travail se trouve dans le fichier d'en-tête :file:`spammodule."
+"h`, qui ressemble à ceci ::"
-#: ../Doc/extending/extending.rst:1310
+#: ../Doc/extending/extending.rst:1316
msgid ""
"All that a client module must do in order to have access to the function :c:"
"func:`PySpam_System` is to call the function (or rather macro) :c:func:"
"`import_spam` in its initialization function::"
msgstr ""
+"Tout ce qu'un module client doit faire pour avoir accès à la fonction :c:"
+"func:`PySpam_System` est d'appeler la fonction (ou plutôt la macro) :c:func:"
+"`import_spam` dans sa fonction d'initialisation ::"
-#: ../Doc/extending/extending.rst:1328
+#: ../Doc/extending/extending.rst:1334
msgid ""
"The main disadvantage of this approach is that the file :file:`spammodule.h` "
"is rather complicated. However, the basic structure is the same for each "
"function that is exported, so it has to be learned only once."
msgstr ""
+"Le principal inconvénient de cette approche est que le fichier :file:"
+"`spammodule.h` est assez compliqué. Cependant, la structure de base est la "
+"même pour chaque fonction exportée, ce qui fait qu'elle ne doit être apprise "
+"qu'une seule fois."
-#: ../Doc/extending/extending.rst:1332
+#: ../Doc/extending/extending.rst:1338
msgid ""
"Finally it should be mentioned that Capsules offer additional functionality, "
"which is especially useful for memory allocation and deallocation of the "
@@ -1458,32 +1717,49 @@ msgid ""
"Capsules (files :file:`Include/pycapsule.h` and :file:`Objects/pycapsule.c` "
"in the Python source code distribution)."
msgstr ""
+"Enfin, il convient de mentionner que Capsules offrent des fonctionnalités "
+"supplémentaires, qui sont particulièrement utiles pour l'allocation de la "
+"mémoire et la dés-allocation du pointeur stocké dans un objet Capsule. Les "
+"détails sont décrits dans le manuel de référence de l'API Python/C dans la "
+"section :ref:`capsules` et dans l'implémentation des Capsules (fichiers :"
+"file:`Include/pycapsule.h` et :file:`Objects/pycapsule.c` dans la "
+"distribution du code source Python)."
-#: ../Doc/extending/extending.rst:1340
+#: ../Doc/extending/extending.rst:1346
msgid "Footnotes"
msgstr "Notes"
-#: ../Doc/extending/extending.rst:1341
+#: ../Doc/extending/extending.rst:1347
msgid ""
"An interface for this function already exists in the standard module :mod:"
"`os` --- it was chosen as a simple and straightforward example."
msgstr ""
+"Une interface pour cette fonction existe déjà dans le module standard :mod:"
+"`os`, elle a été choisie comme un exemple simple et direct."
-#: ../Doc/extending/extending.rst:1344
+#: ../Doc/extending/extending.rst:1350
msgid ""
"The metaphor of \"borrowing\" a reference is not completely correct: the "
"owner still has a copy of the reference."
msgstr ""
+"L'expression « emprunter une référence » n'est pas tout à fait correcte, car "
+"le propriétaire a toujours une copie de la référence."
-#: ../Doc/extending/extending.rst:1347
+#: ../Doc/extending/extending.rst:1353
msgid ""
"Checking that the reference count is at least 1 **does not work** --- the "
"reference count itself could be in freed memory and may thus be reused for "
"another object!"
msgstr ""
+"Vérifier que le comptage de référence est d'au moins 1 **ne fonctionne "
+"pas**, le compte de référence lui-même pourrait être en mémoire libérée et "
+"peut donc être réutilisé pour un autre objet !"
-#: ../Doc/extending/extending.rst:1351
+#: ../Doc/extending/extending.rst:1357
msgid ""
"These guarantees don't hold when you use the \"old\" style calling "
"convention --- this is still found in much existing code."
msgstr ""
+"Ces garanties ne sont pas valables lorsqu'on emploie les conventions de "
+"nommage anciennes, qu'on retrouve encore assez souvent dans beaucoup de code "
+"existant."
diff --git a/extending/index.po b/extending/index.po
index 781c2363d..a7c56744c 100644
--- a/extending/index.po
+++ b/extending/index.po
@@ -7,19 +7,19 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-08-10 00:58+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
+"PO-Revision-Date: 2018-05-08 12:24+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/extending/index.rst:5
msgid "Extending and Embedding the Python Interpreter"
-msgstr ""
+msgstr "Extension et intégration de l'interpréteur Python"
#: ../Doc/extending/index.rst:7
msgid ""
@@ -31,6 +31,15 @@ msgid ""
"extension modules so that they can be loaded dynamically (at run time) into "
"the interpreter, if the underlying operating system supports this feature."
msgstr ""
+"Ce document décrit comment écrire des modules en C ou C++ pour étendre "
+"l'interpréteur Python à de nouveaux modules. En plus de définir de nouvelles "
+"fonctions, ces modules peuvent définir de nouveaux types d'objets ainsi que "
+"leur méthodes. Ce document explique aussi comment intégrer l'interpréteur "
+"Python dans une autre application, pour être utilisé comme langage "
+"d'extension. Enfin, ce document montre comment compiler et lier les modules "
+"d'extension pour qu'ils puissent être chargés dynamiquement (à l'exécution) "
+"dans l'interpréteur, si le système d'exploitation sous-jacent supporte cette "
+"fonctionnalité."
#: ../Doc/extending/index.rst:15
msgid ""
@@ -40,60 +49,87 @@ msgid ""
"documents the existing object types, functions and modules (both built-in "
"and written in Python) that give the language its wide application range."
msgstr ""
+"Ce document présuppose que vous avez des connaissances de base sur Python. "
+"Pour une introduction informelle du langage, voyez :ref:`tutorial-index`. :"
+"ref:`reference-index` donne une définition plus formelle du langage. :ref:"
+"`library-index` documente les objets types, fonctions et modules existants "
+"(tous intégrés et écrits en Python) qui donnent au langage sa large gamme "
+"d'applications."
#: ../Doc/extending/index.rst:21
msgid ""
"For a detailed description of the whole Python/C API, see the separate :ref:"
"`c-api-index`."
msgstr ""
+"Pour une description dans sa totalité de l'API Python/C, voir :ref:`c-api-"
+"index`."
#: ../Doc/extending/index.rst:26
msgid "Recommended third party tools"
-msgstr ""
+msgstr "Les outils tiers recommandés"
#: ../Doc/extending/index.rst:28
msgid ""
"This guide only covers the basic tools for creating extensions provided as "
-"part of this version of CPython. Third party tools like Cython, ``cffi``, "
-"SWIG and Numba offer both simpler and more sophisticated approaches to "
-"creating C and C++ extensions for Python."
+"part of this version of CPython. Third party tools like `Cython `_, `cffi `_, `SWIG `_ and `Numba `_ offer both simpler and "
+"more sophisticated approaches to creating C and C++ extensions for Python."
msgstr ""
+"Ce guide ne couvre que les outils basiques permettant de créer des "
+"extensions fournies dans cette version de CPython. Les outils tiers tels que "
+"`Cython `_, `cffi `_, `SWIG "
+"`_ et `Numba `_ offrent des "
+"approches plus simples et plus élaborées pour créer des extensions C et C++ "
+"pour Python."
-#: ../Doc/extending/index.rst:38
+#: ../Doc/extending/index.rst:40
msgid ""
"`Python Packaging User Guide: Binary Extensions `_"
msgstr ""
-"`Python Packaging User Guide: Binary Extensions `_"
+"`Guide d'utilisation de l'empaquetage Python : Extensions binaires `_"
-#: ../Doc/extending/index.rst:36
+#: ../Doc/extending/index.rst:38
msgid ""
"The Python Packaging User Guide not only covers several available tools that "
"simplify the creation of binary extensions, but also discusses the various "
"reasons why creating an extension module may be desirable in the first place."
msgstr ""
+"Le guide d'utilisation de l'empaquetage Python ne couvre pas uniquement "
+"quelques outils disponibles qui simplifient la création d'extensions "
+"binaires, mais aborde aussi les différentes raisons pour lesquelles créer un "
+"module d'extension peut être souhaitable d'entrée."
-#: ../Doc/extending/index.rst:43
+#: ../Doc/extending/index.rst:45
msgid "Creating extensions without third party tools"
-msgstr ""
+msgstr "Création d'extensions sans outils tiers"
-#: ../Doc/extending/index.rst:45
+#: ../Doc/extending/index.rst:47
msgid ""
"This section of the guide covers creating C and C++ extensions without "
"assistance from third party tools. It is intended primarily for creators of "
"those tools, rather than being a recommended way to create your own C "
"extensions."
msgstr ""
+"Cette section du guide couvre la création d'extensions C et C++ sans "
+"l'utilisation d'outils tiers. Cette section est destinée aux créateurs de "
+"ces outils, plus que d'être une méthode recommandée pour créer votre propre "
+"extension C."
-#: ../Doc/extending/index.rst:60
+#: ../Doc/extending/index.rst:63
msgid "Embedding the CPython runtime in a larger application"
-msgstr ""
+msgstr "Intégrer l'interpréteur CPython dans une plus grande application"
-#: ../Doc/extending/index.rst:62
+#: ../Doc/extending/index.rst:65
msgid ""
"Sometimes, rather than creating an extension that runs inside the Python "
"interpreter as the main application, it is desirable to instead embed the "
"CPython runtime inside a larger application. This section covers some of the "
"details involved in doing that successfully."
msgstr ""
+"Parfois, plutôt que de créer une extension qui s'exécute dans l'interpréteur "
+"Python comme application principale, il est préférable d'intégrer "
+"l'interpréteur Python dans une application plus large. Cette section donne "
+"quelques informations nécessaires au succès de cette opération."
diff --git a/extending/newtypes.po b/extending/newtypes.po
index 39b9e7a1a..5048e90a4 100644
--- a/extending/newtypes.po
+++ b/extending/newtypes.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-09-12 13:37+0200\n"
+"POT-Creation-Date: 2018-04-29 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -17,846 +17,77 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../Doc/extending/newtypes.rst:8
-msgid "Defining New Types"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:15
-msgid ""
-"As mentioned in the last chapter, Python allows the writer of an extension "
-"module to define new types that can be manipulated from Python code, much "
-"like strings and lists in core Python."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:19
-msgid ""
-"This is not hard; the code for all extension types follows a pattern, but "
-"there are some details that you need to understand before you can get "
-"started."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:26
-msgid "The Basics"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:28
-msgid ""
-"The Python runtime sees all Python objects as variables of type :c:type:"
-"`PyObject\\*`, which serves as a \"base type\" for all Python objects. :c:"
-"type:`PyObject` itself only contains the refcount and a pointer to the "
-"object's \"type object\". This is where the action is; the type object "
-"determines which (C) functions get called when, for instance, an attribute "
-"gets looked up on an object or it is multiplied by another object. These C "
-"functions are called \"type methods\"."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:36
-msgid ""
-"So, if you want to define a new object type, you need to create a new type "
-"object."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:39
-msgid ""
-"This sort of thing can only be explained by example, so here's a minimal, "
-"but complete, module that defines a new type:"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:45
-msgid ""
-"Now that's quite a bit to take in at once, but hopefully bits will seem "
-"familiar from the last chapter."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:48
-msgid "The first bit that will be new is::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:54
-msgid ""
-"This is what a Noddy object will contain---in this case, nothing more than "
-"what every Python object contains---a field called ``ob_base`` of type :c:"
-"type:`PyObject`. :c:type:`PyObject` in turn, contains an ``ob_refcnt`` "
-"field and a pointer to a type object. These can be accessed using the "
-"macros :c:macro:`Py_REFCNT` and :c:macro:`Py_TYPE` respectively. These are "
-"the fields the :c:macro:`PyObject_HEAD` macro brings in. The reason for the "
-"macro is to standardize the layout and to enable special debugging fields in "
-"debug builds."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:62
-msgid ""
-"Note that there is no semicolon after the :c:macro:`PyObject_HEAD` macro; "
-"one is included in the macro definition. Be wary of adding one by accident; "
-"it's easy to do from habit, and your compiler might not complain, but "
-"someone else's probably will! (On Windows, MSVC is known to call this an "
-"error and refuse to compile the code.)"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:68
-msgid ""
-"For contrast, let's take a look at the corresponding definition for standard "
-"Python floats::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:76
-msgid "Moving on, we come to the crunch --- the type object. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:102
-msgid ""
-"Now if you go and look up the definition of :c:type:`PyTypeObject` in :file:"
-"`object.h` you'll see that it has many more fields that the definition "
-"above. The remaining fields will be filled with zeros by the C compiler, "
-"and it's common practice to not specify them explicitly unless you need them."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:107
-msgid ""
-"This is so important that we're going to pick the top of it apart still "
-"further::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:112
-msgid "This line is a bit of a wart; what we'd like to write is::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:116
-msgid ""
-"as the type of a type object is \"type\", but this isn't strictly conforming "
-"C and some compilers complain. Fortunately, this member will be filled in "
-"for us by :c:func:`PyType_Ready`. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:122
-msgid ""
-"The name of our type. This will appear in the default textual "
-"representation of our objects and in some error messages, for example::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:130
-msgid ""
-"Note that the name is a dotted name that includes both the module name and "
-"the name of the type within the module. The module in this case is :mod:"
-"`noddy` and the type is :class:`Noddy`, so we set the type name to :class:"
-"`noddy.Noddy`. One side effect of using an undotted name is that the pydoc "
-"documentation tool will not list the new type in the module documentation. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:138
-msgid ""
-"This is so that Python knows how much memory to allocate when you call :c:"
-"func:`PyObject_New`."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:143
-msgid ""
-"If you want your type to be subclassable from Python, and your type has the "
-"same :c:member:`~PyTypeObject.tp_basicsize` as its base type, you may have "
-"problems with multiple inheritance. A Python subclass of your type will "
-"have to list your type first in its :attr:`~class.__bases__`, or else it "
-"will not be able to call your type's :meth:`__new__` method without getting "
-"an error. You can avoid this problem by ensuring that your type has a "
-"larger value for :c:member:`~PyTypeObject.tp_basicsize` than its base type "
-"does. Most of the time, this will be true anyway, because either your base "
-"type will be :class:`object`, or else you will be adding data members to "
-"your base type, and therefore increasing its size."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:157
-msgid ""
-"This has to do with variable length objects like lists and strings. Ignore "
-"this for now."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:160
-msgid ""
-"Skipping a number of type methods that we don't provide, we set the class "
-"flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:165
-msgid ""
-"All types should include this constant in their flags. It enables all of "
-"the members defined until at least Python 3.3. If you need further members, "
-"you will need to OR the corresponding flags."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:169
-msgid ""
-"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:173
-msgid ""
-"Now we get into the type methods, the things that make your objects "
-"different from the others. We aren't going to implement any of these in "
-"this version of the module. We'll expand this example later to have more "
-"interesting behavior."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:177
-msgid ""
-"For now, all we want to be able to do is to create new :class:`Noddy` "
-"objects. To enable object creation, we have to provide a :c:member:"
-"`~PyTypeObject.tp_new` implementation. In this case, we can just use the "
-"default implementation provided by the API function :c:func:"
-"`PyType_GenericNew`. We'd like to just assign this to the :c:member:"
-"`~PyTypeObject.tp_new` slot, but we can't, for portability sake, On some "
-"platforms or compilers, we can't statically initialize a structure member "
-"with a function defined in another C module, so, instead, we'll assign the :"
-"c:member:`~PyTypeObject.tp_new` slot in the module initialization function "
-"just before calling :c:func:`PyType_Ready`::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:191
-msgid ""
-"All the other type methods are *NULL*, so we'll go over them later --- "
-"that's for a later section!"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:194
-msgid ""
-"Everything else in the file should be familiar, except for some code in :c:"
-"func:`PyInit_noddy`::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:200
-msgid ""
-"This initializes the :class:`Noddy` type, filing in a number of members, "
-"including :attr:`ob_type` that we initially set to *NULL*. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:205
-msgid ""
-"This adds the type to the module dictionary. This allows us to create :"
-"class:`Noddy` instances by calling the :class:`Noddy` class::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:211
-msgid ""
-"That's it! All that remains is to build it; put the above code in a file "
-"called :file:`noddy.c` and ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:218
-msgid "in a file called :file:`setup.py`; then typing"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:224
-msgid ""
-"at a shell should produce a file :file:`noddy.so` in a subdirectory; move to "
-"that directory and fire up Python --- you should be able to ``import noddy`` "
-"and play around with Noddy objects."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:228
-msgid "That wasn't so hard, was it?"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:230
-msgid ""
-"Of course, the current Noddy type is pretty uninteresting. It has no data "
-"and doesn't do anything. It can't even be subclassed."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:235
-msgid "Adding data and methods to the Basic example"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:237
-msgid ""
-"Let's extend the basic example to add some data and methods. Let's also "
-"make the type usable as a base class. We'll create a new module, :mod:"
-"`noddy2` that adds these capabilities:"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:244
-msgid "This version of the module has a number of changes."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:246
-msgid "We've added an extra include::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:250
-msgid ""
-"This include provides declarations that we use to handle attributes, as "
-"described a bit later."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:253
-msgid ""
-"The name of the :class:`Noddy` object structure has been shortened to :class:"
-"`Noddy`. The type object name has been shortened to :class:`NoddyType`."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:256
-msgid ""
-"The :class:`Noddy` type now has three data attributes, *first*, *last*, and "
-"*number*. The *first* and *last* variables are Python strings containing "
-"first and last names. The *number* attribute is an integer."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:260
-msgid "The object structure is updated accordingly::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:269
-msgid ""
-"Because we now have data to manage, we have to be more careful about object "
-"allocation and deallocation. At a minimum, we need a deallocation method::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:280
-msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:284
-msgid ""
-"This method decrements the reference counts of the two Python attributes. We "
-"use :c:func:`Py_XDECREF` here because the :attr:`first` and :attr:`last` "
-"members could be *NULL*. It then calls the :c:member:`~PyTypeObject."
-"tp_free` member of the object's type to free the object's memory. Note that "
-"the object's type might not be :class:`NoddyType`, because the object may be "
-"an instance of a subclass."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:290
-msgid ""
-"We want to make sure that the first and last names are initialized to empty "
-"strings, so we provide a new method::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:318
-msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:322
-msgid ""
-"The new member is responsible for creating (as opposed to initializing) "
-"objects of the type. It is exposed in Python as the :meth:`__new__` "
-"method. See the paper titled \"Unifying types and classes in Python\" for a "
-"detailed discussion of the :meth:`__new__` method. One reason to implement "
-"a new method is to assure the initial values of instance variables. In this "
-"case, we use the new method to make sure that the initial values of the "
-"members :attr:`first` and :attr:`last` are not *NULL*. If we didn't care "
-"whether the initial values were *NULL*, we could have used :c:func:"
-"`PyType_GenericNew` as our new method, as we did before. :c:func:"
-"`PyType_GenericNew` initializes all of the instance variable members to "
-"*NULL*."
-msgstr ""
+#: ../Doc/extending/newtypes.rst:5
+msgid "Defining Extension Types: Assorted Topics"
+msgstr "Définir les types d'extension : divers sujets"
-#: ../Doc/extending/newtypes.rst:333
-msgid ""
-"The new method is a static method that is passed the type being instantiated "
-"and any arguments passed when the type was called, and that returns the new "
-"object created. New methods always accept positional and keyword arguments, "
-"but they often ignore the arguments, leaving the argument handling to "
-"initializer methods. Note that if the type supports subclassing, the type "
-"passed may not be the type being defined. The new method calls the :c:"
-"member:`~PyTypeObject.tp_alloc` slot to allocate memory. We don't fill the :"
-"c:member:`~PyTypeObject.tp_alloc` slot ourselves. Rather :c:func:"
-"`PyType_Ready` fills it for us by inheriting it from our base class, which "
-"is :class:`object` by default. Most types use the default allocation."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:345
-msgid ""
-"If you are creating a co-operative :c:member:`~PyTypeObject.tp_new` (one "
-"that calls a base type's :c:member:`~PyTypeObject.tp_new` or :meth:"
-"`__new__`), you must *not* try to determine what method to call using method "
-"resolution order at runtime. Always statically determine what type you are "
-"going to call, and call its :c:member:`~PyTypeObject.tp_new` directly, or "
-"via ``type->tp_base->tp_new``. If you do not do this, Python subclasses of "
-"your type that also inherit from other Python-defined classes may not work "
-"correctly. (Specifically, you may not be able to create instances of such "
-"subclasses without getting a :exc:`TypeError`.)"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:354
-msgid "We provide an initialization function::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:385
-msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:389
-msgid ""
-"The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:"
-"`__init__` method. It is used to initialize an object after it's created. "
-"Unlike the new method, we can't guarantee that the initializer is called. "
-"The initializer isn't called when unpickling objects and it can be "
-"overridden. Our initializer accepts arguments to provide initial values for "
-"our instance. Initializers always accept positional and keyword arguments. "
-"Initializers should return either 0 on success or -1 on error."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:397
-msgid ""
-"Initializers can be called multiple times. Anyone can call the :meth:"
-"`__init__` method on our objects. For this reason, we have to be extra "
-"careful when assigning the new values. We might be tempted, for example to "
-"assign the :attr:`first` member like this::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:408
-msgid ""
-"But this would be risky. Our type doesn't restrict the type of the :attr:"
-"`first` member, so it could be any kind of object. It could have a "
-"destructor that causes code to be executed that tries to access the :attr:"
-"`first` member. To be paranoid and protect ourselves against this "
-"possibility, we almost always reassign members before decrementing their "
-"reference counts. When don't we have to do this?"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:415
-msgid "when we absolutely know that the reference count is greater than 1"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:417
-msgid ""
-"when we know that deallocation of the object [#]_ will not cause any calls "
-"back into our type's code"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:420
-msgid ""
-"when decrementing a reference count in a :c:member:`~PyTypeObject."
-"tp_dealloc` handler when garbage-collections is not supported [#]_"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:423
-msgid ""
-"We want to expose our instance variables as attributes. There are a number "
-"of ways to do that. The simplest way is to define member definitions::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:436
-msgid ""
-"and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:440
-msgid ""
-"Each member definition has a member name, type, offset, access flags and "
-"documentation string. See the :ref:`Generic-Attribute-Management` section "
-"below for details."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:444
-msgid ""
-"A disadvantage of this approach is that it doesn't provide a way to restrict "
-"the types of objects that can be assigned to the Python attributes. We "
-"expect the first and last names to be strings, but any Python objects can be "
-"assigned. Further, the attributes can be deleted, setting the C pointers to "
-"*NULL*. Even though we can make sure the members are initialized to non-"
-"*NULL* values, the members can be set to *NULL* if the attributes are "
-"deleted."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:451
-msgid ""
-"We define a single method, :meth:`name`, that outputs the objects name as "
-"the concatenation of the first and last names. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:470
-msgid ""
-"The method is implemented as a C function that takes a :class:`Noddy` (or :"
-"class:`Noddy` subclass) instance as the first argument. Methods always take "
-"an instance as the first argument. Methods often take positional and keyword "
-"arguments as well, but in this case we don't take any and don't need to "
-"accept a positional argument tuple or keyword argument dictionary. This "
-"method is equivalent to the Python method::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:480
-msgid ""
-"Note that we have to check for the possibility that our :attr:`first` and :"
-"attr:`last` members are *NULL*. This is because they can be deleted, in "
-"which case they are set to *NULL*. It would be better to prevent deletion "
-"of these attributes and to restrict the attribute values to be strings. "
-"We'll see how to do that in the next section."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:486
-msgid ""
-"Now that we've defined the method, we need to create an array of method "
-"definitions::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:496
-msgid "and assign them to the :c:member:`~PyTypeObject.tp_methods` slot::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:500
-msgid ""
-"Note that we used the :const:`METH_NOARGS` flag to indicate that the method "
-"is passed no arguments."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:503
-msgid ""
-"Finally, we'll make our type usable as a base class. We've written our "
-"methods carefully so far so that they don't make any assumptions about the "
-"type of the object being created or used, so all we need to do is to add "
-"the :const:`Py_TPFLAGS_BASETYPE` to our class flag definition::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:510
-msgid ""
-"We rename :c:func:`PyInit_noddy` to :c:func:`PyInit_noddy2` and update the "
-"module name in the :c:type:`PyModuleDef` struct."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:513
-msgid "Finally, we update our :file:`setup.py` file to build the new module::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:524
-msgid "Providing finer control over data attributes"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:526
-msgid ""
-"In this section, we'll provide finer control over how the :attr:`first` and :"
-"attr:`last` attributes are set in the :class:`Noddy` example. In the "
-"previous version of our module, the instance variables :attr:`first` and :"
-"attr:`last` could be set to non-string values or even deleted. We want to "
-"make sure that these attributes always contain strings."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:535
-msgid ""
-"To provide greater control, over the :attr:`first` and :attr:`last` "
-"attributes, we'll use custom getter and setter functions. Here are the "
-"functions for getting and setting the :attr:`first` attribute::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:566
-msgid ""
-"The getter function is passed a :class:`Noddy` object and a \"closure\", "
-"which is void pointer. In this case, the closure is ignored. (The closure "
-"supports an advanced usage in which definition data is passed to the getter "
-"and setter. This could, for example, be used to allow a single set of getter "
-"and setter functions that decide the attribute to get or set based on data "
-"in the closure.)"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:572
-msgid ""
-"The setter function is passed the :class:`Noddy` object, the new value, and "
-"the closure. The new value may be *NULL*, in which case the attribute is "
-"being deleted. In our setter, we raise an error if the attribute is deleted "
-"or if the attribute value is not a string."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:577
-msgid "We create an array of :c:type:`PyGetSetDef` structures::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:591
-msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:595
-msgid "to register our attribute getters and setters."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:597
-msgid ""
-"The last item in a :c:type:`PyGetSetDef` structure is the closure mentioned "
-"above. In this case, we aren't using the closure, so we just pass *NULL*."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:600
-msgid "We also remove the member definitions for these attributes::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:608
-msgid ""
-"We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only "
-"allow strings [#]_ to be passed::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:640
-msgid ""
-"With these changes, we can assure that the :attr:`first` and :attr:`last` "
-"members are never *NULL* so we can remove checks for *NULL* values in almost "
-"all cases. This means that most of the :c:func:`Py_XDECREF` calls can be "
-"converted to :c:func:`Py_DECREF` calls. The only place we can't change these "
-"calls is in the deallocator, where there is the possibility that the "
-"initialization of these members failed in the constructor."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:647
-msgid ""
-"We also rename the module initialization function and module name in the "
-"initialization function, as we did before, and we add an extra definition to "
-"the :file:`setup.py` file."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:653
-msgid "Supporting cyclic garbage collection"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:655
-msgid ""
-"Python has a cyclic-garbage collector that can identify unneeded objects "
-"even when their reference counts are not zero. This can happen when objects "
-"are involved in cycles. For example, consider::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:663
-msgid ""
-"In this example, we create a list that contains itself. When we delete it, "
-"it still has a reference from itself. Its reference count doesn't drop to "
-"zero. Fortunately, Python's cyclic-garbage collector will eventually figure "
-"out that the list is garbage and free it."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:668
-msgid ""
-"In the second version of the :class:`Noddy` example, we allowed any kind of "
-"object to be stored in the :attr:`first` or :attr:`last` attributes. [#]_ "
-"This means that :class:`Noddy` objects can participate in cycles::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:677
-msgid ""
-"This is pretty silly, but it gives us an excuse to add support for the "
-"cyclic-garbage collector to the :class:`Noddy` example. To support cyclic "
-"garbage collection, types need to fill two slots and set a class flag that "
-"enables these slots:"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:685
-msgid ""
-"The traversal method provides access to subobjects that could participate in "
-"cycles::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:707
-msgid ""
-"For each subobject that can participate in cycles, we need to call the :c:"
-"func:`visit` function, which is passed to the traversal method. The :c:func:"
-"`visit` function takes as arguments the subobject and the extra argument "
-"*arg* passed to the traversal method. It returns an integer value that must "
-"be returned if it is non-zero."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:713
-msgid ""
-"Python provides a :c:func:`Py_VISIT` macro that automates calling visit "
-"functions. With :c:func:`Py_VISIT`, :c:func:`Noddy_traverse` can be "
-"simplified::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:726
-msgid ""
-"Note that the :c:member:`~PyTypeObject.tp_traverse` implementation must name "
-"its arguments exactly *visit* and *arg* in order to use :c:func:`Py_VISIT`. "
-"This is to encourage uniformity across these boring implementations."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:730
-msgid ""
-"We also need to provide a method for clearing any subobjects that can "
-"participate in cycles."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:751
-msgid ""
-"Notice the use of a temporary variable in :c:func:`Noddy_clear`. We use the "
-"temporary variable so that we can set each member to *NULL* before "
-"decrementing its reference count. We do this because, as was discussed "
-"earlier, if the reference count drops to zero, we might cause code to run "
-"that calls back into the object. In addition, because we now support "
-"garbage collection, we also have to worry about code being run that triggers "
-"garbage collection. If garbage collection is run, our :c:member:"
-"`~PyTypeObject.tp_traverse` handler could get called. We can't take a chance "
-"of having :c:func:`Noddy_traverse` called when a member's reference count "
-"has dropped to zero and its value hasn't been set to *NULL*."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:761
-msgid ""
-"Python provides a :c:func:`Py_CLEAR` that automates the careful decrementing "
-"of reference counts. With :c:func:`Py_CLEAR`, the :c:func:`Noddy_clear` "
-"function can be simplified::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:773
-msgid ""
-"Note that :c:func:`Noddy_dealloc` may call arbitrary functions through "
-"``__del__`` method or weakref callback. It means circular GC can be "
-"triggered inside the function. Since GC assumes reference count is not "
-"zero, we need to untrack the object from GC by calling :c:func:"
-"`PyObject_GC_UnTrack` before clearing members. Here is reimplemented "
-"deallocator which uses :c:func:`PyObject_GC_UnTrack` and :c:func:"
-"`Noddy_clear`."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:790
-msgid ""
-"Finally, we add the :const:`Py_TPFLAGS_HAVE_GC` flag to the class flags::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:794
-msgid ""
-"That's pretty much it. If we had written custom :c:member:`~PyTypeObject."
-"tp_alloc` or :c:member:`~PyTypeObject.tp_free` slots, we'd need to modify "
-"them for cyclic-garbage collection. Most extensions will use the versions "
-"automatically provided."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:800
-msgid "Subclassing other types"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:802
-msgid ""
-"It is possible to create new extension types that are derived from existing "
-"types. It is easiest to inherit from the built in types, since an extension "
-"can easily use the :class:`PyTypeObject` it needs. It can be difficult to "
-"share these :class:`PyTypeObject` structures between extension modules."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:807
-msgid ""
-"In this example we will create a :class:`Shoddy` type that inherits from the "
-"built-in :class:`list` type. The new type will be completely compatible with "
-"regular lists, but will have an additional :meth:`increment` method that "
-"increases an internal counter. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:825
-msgid ""
-"As you can see, the source code closely resembles the :class:`Noddy` "
-"examples in previous sections. We will break down the main differences "
-"between them. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:833
-msgid ""
-"The primary difference for derived type objects is that the base type's "
-"object structure must be the first value. The base type will already include "
-"the :c:func:`PyObject_HEAD` at the beginning of its structure."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:837
-msgid ""
-"When a Python object is a :class:`Shoddy` instance, its *PyObject\\** "
-"pointer can be safely cast to both *PyListObject\\** and *Shoddy\\**. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:849
-msgid ""
-"In the :attr:`__init__` method for our type, we can see how to call through "
-"to the :attr:`__init__` method of the base type."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:852
-msgid ""
-"This pattern is important when writing a type with custom :attr:`new` and :"
-"attr:`dealloc` methods. The :attr:`new` method should not actually create "
-"the memory for the object with :c:member:`~PyTypeObject.tp_alloc`, that will "
-"be handled by the base class when calling its :c:member:`~PyTypeObject."
-"tp_new`."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:857
-msgid ""
-"When filling out the :c:func:`PyTypeObject` for the :class:`Shoddy` type, "
-"you see a slot for :c:func:`tp_base`. Due to cross platform compiler issues, "
-"you can't fill that field directly with the :c:func:`PyList_Type`; it can be "
-"done later in the module's :c:func:`init` function. ::"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:880
-msgid ""
-"Before calling :c:func:`PyType_Ready`, the type structure must have the :c:"
-"member:`~PyTypeObject.tp_base` slot filled in. When we are deriving a new "
-"type, it is not necessary to fill out the :c:member:`~PyTypeObject.tp_alloc` "
-"slot with :c:func:`PyType_GenericNew` -- the allocate function from the base "
-"type will be inherited."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:885
-msgid ""
-"After that, calling :c:func:`PyType_Ready` and adding the type object to the "
-"module is the same as with the basic :class:`Noddy` examples."
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:892
-msgid "Type Methods"
-msgstr ""
-
-#: ../Doc/extending/newtypes.rst:894
+#: ../Doc/extending/newtypes.rst:9
msgid ""
"This section aims to give a quick fly-by on the various type methods you can "
"implement and what they do."
msgstr ""
-#: ../Doc/extending/newtypes.rst:897
+#: ../Doc/extending/newtypes.rst:12
msgid ""
"Here is the definition of :c:type:`PyTypeObject`, with some fields only used "
"in debug builds omitted:"
msgstr ""
-#: ../Doc/extending/newtypes.rst:903
+#: ../Doc/extending/newtypes.rst:18
msgid ""
-"Now that's a *lot* of methods. Don't worry too much though - if you have a "
+"Now that's a *lot* of methods. Don't worry too much though -- if you have a "
"type you want to define, the chances are very good that you will only "
"implement a handful of these."
msgstr ""
-#: ../Doc/extending/newtypes.rst:907
+#: ../Doc/extending/newtypes.rst:22
msgid ""
"As you probably expect by now, we're going to go over this and give more "
"information about the various handlers. We won't go in the order they are "
"defined in the structure, because there is a lot of historical baggage that "
-"impacts the ordering of the fields; be sure your type initialization keeps "
-"the fields in the right order! It's often easiest to find an example that "
-"includes all the fields you need (even if they're initialized to ``0``) and "
-"then change the values to suit your new type. ::"
+"impacts the ordering of the fields. It's often easiest to find an example "
+"that includes the fields you need and then change the values to suit your "
+"new type. ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:917
+#: ../Doc/extending/newtypes.rst:31
msgid ""
-"The name of the type - as mentioned in the last section, this will appear in "
-"various places, almost entirely for diagnostic purposes. Try to choose "
-"something that will be helpful in such a situation! ::"
+"The name of the type -- as mentioned in the previous chapter, this will "
+"appear in various places, almost entirely for diagnostic purposes. Try to "
+"choose something that will be helpful in such a situation! ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:923
+#: ../Doc/extending/newtypes.rst:37
msgid ""
"These fields tell the runtime how much memory to allocate when new objects "
"of this type are created. Python has some built-in support for variable "
-"length structures (think: strings, lists) which is where the :c:member:"
+"length structures (think: strings, tuples) which is where the :c:member:"
"`~PyTypeObject.tp_itemsize` field comes in. This will be dealt with "
"later. ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:930
+#: ../Doc/extending/newtypes.rst:44
msgid ""
"Here you can put a string (or its address) that you want returned when the "
"Python script references ``obj.__doc__`` to retrieve the doc string."
msgstr ""
+"Ici vous pouvez mettre une chaîne (ou son adresse) que vous voulez renvoyer "
+"lorsque le script Python référence ``obj.__doc__`` pour récupérer le "
+"*docstring*."
-#: ../Doc/extending/newtypes.rst:933
+#: ../Doc/extending/newtypes.rst:47
msgid ""
-"Now we come to the basic type methods---the ones most extension types will "
+"Now we come to the basic type methods -- the ones most extension types will "
"implement."
msgstr ""
+"Nous en arrivons maintenant aux méthodes de type basiques -- celles que la "
+"plupart des types d'extension mettront en œuvre."
-#: ../Doc/extending/newtypes.rst:938
+#: ../Doc/extending/newtypes.rst:52
msgid "Finalization and De-allocation"
-msgstr ""
+msgstr "Finalisation et de-allocation"
-#: ../Doc/extending/newtypes.rst:950
+#: ../Doc/extending/newtypes.rst:64
msgid ""
"This function is called when the reference count of the instance of your "
"type is reduced to zero and the Python interpreter wants to reclaim it. If "
@@ -865,7 +96,7 @@ msgid ""
"of this function::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:967
+#: ../Doc/extending/newtypes.rst:81
msgid ""
"One important requirement of the deallocator function is that it leaves any "
"pending exceptions alone. This is important since deallocators are "
@@ -880,7 +111,7 @@ msgid ""
"c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` functions::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1006
+#: ../Doc/extending/newtypes.rst:120
msgid ""
"There are limitations to what you can safely do in a deallocator function. "
"First, if your type supports garbage collection (using :c:member:"
@@ -893,43 +124,43 @@ msgid ""
"tp_dealloc` again, causing a double free and a crash."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1015
+#: ../Doc/extending/newtypes.rst:129
msgid ""
"Starting with Python 3.4, it is recommended not to put any complex "
"finalization code in :c:member:`~PyTypeObject.tp_dealloc`, and instead use "
"the new :c:member:`~PyTypeObject.tp_finalize` type method."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1020
+#: ../Doc/extending/newtypes.rst:134
msgid ":pep:`442` explains the new finalization scheme."
-msgstr ""
+msgstr ":pep:`442` explique le nouveau schéma de finalisation."
-#: ../Doc/extending/newtypes.rst:1027
+#: ../Doc/extending/newtypes.rst:141
msgid "Object Presentation"
-msgstr ""
+msgstr "Présentation de l'objet"
-#: ../Doc/extending/newtypes.rst:1029
+#: ../Doc/extending/newtypes.rst:143
msgid ""
"In Python, there are two ways to generate a textual representation of an "
"object: the :func:`repr` function, and the :func:`str` function. (The :func:"
"`print` function just calls :func:`str`.) These handlers are both optional."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1038
+#: ../Doc/extending/newtypes.rst:152
msgid ""
"The :c:member:`~PyTypeObject.tp_repr` handler should return a string object "
"containing a representation of the instance for which it is called. Here is "
"a simple example::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1049
+#: ../Doc/extending/newtypes.rst:163
msgid ""
"If no :c:member:`~PyTypeObject.tp_repr` handler is specified, the "
"interpreter will supply a representation that uses the type's :c:member:"
"`~PyTypeObject.tp_name` and a uniquely-identifying value for the object."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1053
+#: ../Doc/extending/newtypes.rst:167
msgid ""
"The :c:member:`~PyTypeObject.tp_str` handler is to :func:`str` what the :c:"
"member:`~PyTypeObject.tp_repr` handler described above is to :func:`repr`; "
@@ -940,15 +171,15 @@ msgid ""
"the :c:member:`~PyTypeObject.tp_repr` handler is used instead."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1060
+#: ../Doc/extending/newtypes.rst:174
msgid "Here is a simple example::"
-msgstr ""
+msgstr "Voici un exemple simple ::"
-#: ../Doc/extending/newtypes.rst:1072
+#: ../Doc/extending/newtypes.rst:186
msgid "Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs"
-#: ../Doc/extending/newtypes.rst:1074
+#: ../Doc/extending/newtypes.rst:188
msgid ""
"For every object which can support attributes, the corresponding type must "
"provide the functions that control how the attributes are resolved. There "
@@ -958,7 +189,7 @@ msgid ""
"handler is *NULL*."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1080
+#: ../Doc/extending/newtypes.rst:194
msgid ""
"Python supports two pairs of attribute handlers; a type that supports "
"attributes only needs to implement the functions for one pair. The "
@@ -967,7 +198,7 @@ msgid ""
"use whichever pair makes more sense for the implementation's convenience. ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1092
+#: ../Doc/extending/newtypes.rst:206
msgid ""
"If accessing attributes of an object is always a simple operation (this will "
"be explained shortly), there are generic implementations which can be used "
@@ -978,35 +209,37 @@ msgid ""
"mechanism that is available."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1103
+#: ../Doc/extending/newtypes.rst:217
msgid "Generic Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs génériques"
-#: ../Doc/extending/newtypes.rst:1105
+#: ../Doc/extending/newtypes.rst:219
msgid ""
"Most extension types only use *simple* attributes. So, what makes the "
"attributes simple? There are only a couple of conditions that must be met:"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1108
+#: ../Doc/extending/newtypes.rst:222
msgid ""
"The name of the attributes must be known when :c:func:`PyType_Ready` is "
"called."
msgstr ""
+"Le nom des attributs doivent être déjà connus lorsqu'on lance :c:func:"
+"`PyType_Ready`."
-#: ../Doc/extending/newtypes.rst:1111
+#: ../Doc/extending/newtypes.rst:225
msgid ""
"No special processing is needed to record that an attribute was looked up or "
"set, nor do actions need to be taken based on the value."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1114
+#: ../Doc/extending/newtypes.rst:228
msgid ""
"Note that this list does not place any restrictions on the values of the "
"attributes, when the values are computed, or how relevant data is stored."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1117
+#: ../Doc/extending/newtypes.rst:231
msgid ""
"When :c:func:`PyType_Ready` is called, it uses three tables referenced by "
"the type object to create :term:`descriptor`\\s which are placed in the "
@@ -1018,18 +251,19 @@ msgid ""
"*NULL* as well, allowing the base type to handle attributes."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1125
+#: ../Doc/extending/newtypes.rst:239
msgid "The tables are declared as three fields of the type object::"
msgstr ""
+"Les tables sont déclarées sous la forme de trois champs de type objet ::"
-#: ../Doc/extending/newtypes.rst:1131
+#: ../Doc/extending/newtypes.rst:245
msgid ""
"If :c:member:`~PyTypeObject.tp_methods` is not *NULL*, it must refer to an "
"array of :c:type:`PyMethodDef` structures. Each entry in the table is an "
"instance of this structure::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1142
+#: ../Doc/extending/newtypes.rst:256
msgid ""
"One entry should be defined for each method provided by the type; no entries "
"are needed for methods inherited from a base type. One additional entry is "
@@ -1037,7 +271,7 @@ msgid ""
"attr:`ml_name` field of the sentinel must be *NULL*."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1147
+#: ../Doc/extending/newtypes.rst:261
msgid ""
"The second table is used to define attributes which map directly to data "
"stored in the instance. A variety of primitive C types are supported, and "
@@ -1045,7 +279,7 @@ msgid ""
"defined as::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1159
+#: ../Doc/extending/newtypes.rst:273
msgid ""
"For each entry in the table, a :term:`descriptor` will be constructed and "
"added to the type which will be able to extract a value from the instance "
@@ -1056,53 +290,53 @@ msgid ""
"accessed."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1166
+#: ../Doc/extending/newtypes.rst:280
msgid ""
"The following flag constants are defined in :file:`structmember.h`; they may "
"be combined using bitwise-OR."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1170
+#: ../Doc/extending/newtypes.rst:284
msgid "Constant"
-msgstr ""
+msgstr "Constante"
-#: ../Doc/extending/newtypes.rst:1170
+#: ../Doc/extending/newtypes.rst:284
msgid "Meaning"
msgstr "Signification"
-#: ../Doc/extending/newtypes.rst:1172
+#: ../Doc/extending/newtypes.rst:286
msgid ":const:`READONLY`"
-msgstr ""
+msgstr ":const:`READONLY`"
-#: ../Doc/extending/newtypes.rst:1172
+#: ../Doc/extending/newtypes.rst:286
msgid "Never writable."
-msgstr ""
+msgstr "Jamais disponible en écriture."
-#: ../Doc/extending/newtypes.rst:1174
+#: ../Doc/extending/newtypes.rst:288
msgid ":const:`READ_RESTRICTED`"
-msgstr ""
+msgstr ":const:`READ_RESTRICTED`"
-#: ../Doc/extending/newtypes.rst:1174
+#: ../Doc/extending/newtypes.rst:288
msgid "Not readable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture, dans le mode restreint."
-#: ../Doc/extending/newtypes.rst:1176
+#: ../Doc/extending/newtypes.rst:290
msgid ":const:`WRITE_RESTRICTED`"
-msgstr ""
+msgstr ":const:`WRITE_RESTRICTED`"
-#: ../Doc/extending/newtypes.rst:1176
+#: ../Doc/extending/newtypes.rst:290
msgid "Not writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en écriture dans le mode restreint."
-#: ../Doc/extending/newtypes.rst:1178
+#: ../Doc/extending/newtypes.rst:292
msgid ":const:`RESTRICTED`"
-msgstr ""
+msgstr ":const:`RESTRICTED`"
-#: ../Doc/extending/newtypes.rst:1178
+#: ../Doc/extending/newtypes.rst:292
msgid "Not readable or writable in restricted mode."
-msgstr ""
+msgstr "Non disponible en lecture ou écriture, en mode restreint."
-#: ../Doc/extending/newtypes.rst:1187
+#: ../Doc/extending/newtypes.rst:301
msgid ""
"An interesting advantage of using the :c:member:`~PyTypeObject.tp_members` "
"table to build descriptors that are used at runtime is that any attribute "
@@ -1111,18 +345,25 @@ msgid ""
"the descriptor from the class object, and get the doc string using its :attr:"
"`__doc__` attribute."
msgstr ""
+"Un avantage intéressant de l'utilisation de la table :c:member:"
+"`~PyTypeObject.tp_members` pour construire les descripteurs qui sont "
+"utilisés à l'exécution, est que à tout attribut défini de cette façon on "
+"peut associer un *docstring*, en écrivant simplement le texte dans la table. "
+"Une application peut utiliser l'API d'introspection pour récupérer le "
+"descripteur de l'objet de classe, et utiliser son attribut :attr:`__doc__` "
+"pour renvoyer le *docstring*."
-#: ../Doc/extending/newtypes.rst:1193
+#: ../Doc/extending/newtypes.rst:307
msgid ""
"As with the :c:member:`~PyTypeObject.tp_methods` table, a sentinel entry "
"with a :attr:`name` value of *NULL* is required."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1207
+#: ../Doc/extending/newtypes.rst:321
msgid "Type-specific Attribute Management"
-msgstr ""
+msgstr "Gestion des attributs de type spécifiques"
-#: ../Doc/extending/newtypes.rst:1209
+#: ../Doc/extending/newtypes.rst:323
msgid ""
"For simplicity, only the :c:type:`char\\*` version will be demonstrated "
"here; the type of the name parameter is the only difference between the :c:"
@@ -1133,18 +374,18 @@ msgid ""
"functionality, you'll understand what needs to be done."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1217
+#: ../Doc/extending/newtypes.rst:331
msgid ""
"The :c:member:`~PyTypeObject.tp_getattr` handler is called when the object "
"requires an attribute look-up. It is called in the same situations where "
"the :meth:`__getattr__` method of a class would be called."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1221
+#: ../Doc/extending/newtypes.rst:335
msgid "Here is an example::"
-msgstr ""
+msgstr "Voici un exemple ::"
-#: ../Doc/extending/newtypes.rst:1237
+#: ../Doc/extending/newtypes.rst:351
msgid ""
"The :c:member:`~PyTypeObject.tp_setattr` handler is called when the :meth:"
"`__setattr__` or :meth:`__delattr__` method of a class instance would be "
@@ -1154,11 +395,11 @@ msgid ""
"should be set to *NULL*. ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1251
+#: ../Doc/extending/newtypes.rst:365
msgid "Object Comparison"
-msgstr ""
+msgstr "Comparaison des objets"
-#: ../Doc/extending/newtypes.rst:1257
+#: ../Doc/extending/newtypes.rst:371
msgid ""
"The :c:member:`~PyTypeObject.tp_richcompare` handler is called when "
"comparisons are needed. It is analogous to the :ref:`rich comparison "
@@ -1166,7 +407,7 @@ msgid ""
"`PyObject_RichCompare` and :c:func:`PyObject_RichCompareBool`."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1262
+#: ../Doc/extending/newtypes.rst:376
msgid ""
"This function is called with two Python objects and the operator as "
"arguments, where the operator is one of ``Py_EQ``, ``Py_NE``, ``Py_LE``, "
@@ -1177,23 +418,23 @@ msgid ""
"should be tried, or *NULL* if an exception was set."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1270
+#: ../Doc/extending/newtypes.rst:384
msgid ""
"Here is a sample implementation, for a datatype that is considered equal if "
"the size of an internal pointer is equal::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1300
+#: ../Doc/extending/newtypes.rst:414
msgid "Abstract Protocol Support"
-msgstr ""
+msgstr "Support pour le protocole abstrait"
-#: ../Doc/extending/newtypes.rst:1302
+#: ../Doc/extending/newtypes.rst:416
msgid ""
"Python supports a variety of *abstract* 'protocols;' the specific interfaces "
"provided to use these interfaces are documented in :ref:`abstract`."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1306
+#: ../Doc/extending/newtypes.rst:420
msgid ""
"A number of these abstract interfaces were defined early in the development "
"of the Python implementation. In particular, the number, mapping, and "
@@ -1208,7 +449,7 @@ msgid ""
"slot, but a slot may still be unfilled.) ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1321
+#: ../Doc/extending/newtypes.rst:435
msgid ""
"If you wish your object to be able to act like a number, a sequence, or a "
"mapping object, then you place the address of a structure that implements "
@@ -1219,13 +460,21 @@ msgid ""
"distribution. ::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1330
+#: ../Doc/extending/newtypes.rst:444
msgid ""
"This function, if you choose to provide it, should return a hash number for "
-"an instance of your data type. Here is a moderately pointless example::"
+"an instance of your data type. Here is a simple example::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1346
+#: ../Doc/extending/newtypes.rst:457
+msgid ""
+":c:type:`Py_hash_t` is a signed integer type with a platform-varying width. "
+"Returning ``-1`` from :c:member:`~PyTypeObject.tp_hash` indicates an error, "
+"which is why you should be careful to avoid returning it when hash "
+"computation is successful, as seen above."
+msgstr ""
+
+#: ../Doc/extending/newtypes.rst:466
msgid ""
"This function is called when an instance of your data type is \"called\", "
"for example, if ``obj1`` is an instance of your data type and the Python "
@@ -1233,173 +482,200 @@ msgid ""
"handler is invoked."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1350
+#: ../Doc/extending/newtypes.rst:470
msgid "This function takes three arguments:"
-msgstr ""
+msgstr "Cette fonction prend trois arguments :"
-#: ../Doc/extending/newtypes.rst:1352
+#: ../Doc/extending/newtypes.rst:472
msgid ""
-"*arg1* is the instance of the data type which is the subject of the call. If "
-"the call is ``obj1('hello')``, then *arg1* is ``obj1``."
+"*self* is the instance of the data type which is the subject of the call. If "
+"the call is ``obj1('hello')``, then *self* is ``obj1``."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1355
+#: ../Doc/extending/newtypes.rst:475
msgid ""
-"*arg2* is a tuple containing the arguments to the call. You can use :c:func:"
+"*args* is a tuple containing the arguments to the call. You can use :c:func:"
"`PyArg_ParseTuple` to extract the arguments."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1358
+#: ../Doc/extending/newtypes.rst:478
msgid ""
-"*arg3* is a dictionary of keyword arguments that were passed. If this is non-"
+"*kwds* is a dictionary of keyword arguments that were passed. If this is non-"
"*NULL* and you support keyword arguments, use :c:func:"
"`PyArg_ParseTupleAndKeywords` to extract the arguments. If you do not want "
"to support keyword arguments and this is non-*NULL*, raise a :exc:"
"`TypeError` with a message saying that keyword arguments are not supported."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1364
+#: ../Doc/extending/newtypes.rst:484
+msgid "Here is a toy ``tp_call`` implementation::"
+msgstr "Ceci est une implémentation ``tp_call`` très simple ::"
+
+#: ../Doc/extending/newtypes.rst:510
+msgid ""
+"These functions provide support for the iterator protocol. Both handlers "
+"take exactly one parameter, the instance for which they are being called, "
+"and return a new reference. In the case of an error, they should set an "
+"exception and return *NULL*. :c:member:`~PyTypeObject.tp_iter` corresponds "
+"to the Python :meth:`__iter__` method, while :c:member:`~PyTypeObject."
+"tp_iternext` corresponds to the Python :meth:`~iterator.__next__` method."
+msgstr ""
+
+#: ../Doc/extending/newtypes.rst:517
msgid ""
-"Here is a desultory example of the implementation of the call function. ::"
+"Any :term:`iterable` object must implement the :c:member:`~PyTypeObject."
+"tp_iter` handler, which must return an :term:`iterator` object. Here the "
+"same guidelines apply as for Python classes:"
msgstr ""
+"Tout objet :term:`iterable` doit implémenter le gestionnaire :c:member:"
+"`~PyTypeObject.tp_iter`, qui doit renvoyer un objet de type :term:"
+"`iterator`. Ici, les mêmes directives s'appliquent de la même façon que "
+"pour les classes *Python* :"
-#: ../Doc/extending/newtypes.rst:1395
+#: ../Doc/extending/newtypes.rst:521
msgid ""
-"These functions provide support for the iterator protocol. Any object which "
-"wishes to support iteration over its contents (which may be generated during "
-"iteration) must implement the ``tp_iter`` handler. Objects which are "
-"returned by a ``tp_iter`` handler must implement both the ``tp_iter`` and "
-"``tp_iternext`` handlers. Both handlers take exactly one parameter, the "
-"instance for which they are being called, and return a new reference. In "
-"the case of an error, they should set an exception and return *NULL*."
+"For collections (such as lists and tuples) which can support multiple "
+"independent iterators, a new iterator should be created and returned by each "
+"call to :c:member:`~PyTypeObject.tp_iter`."
msgstr ""
+"Pour les collections (telles que les listes et les n-uplets) qui peuvent "
+"implémenter plusieurs itérateurs indépendants, un nouvel itérateur doit être "
+"créé et renvoyé par chaque appel de type :c:member:`~PyTypeObject.tp_iter`."
-#: ../Doc/extending/newtypes.rst:1403
+#: ../Doc/extending/newtypes.rst:524
msgid ""
-"For an object which represents an iterable collection, the ``tp_iter`` "
-"handler must return an iterator object. The iterator object is responsible "
-"for maintaining the state of the iteration. For collections which can "
-"support multiple iterators which do not interfere with each other (as lists "
-"and tuples do), a new iterator should be created and returned. Objects "
-"which can only be iterated over once (usually due to side effects of "
-"iteration) should implement this handler by returning a new reference to "
-"themselves, and should also implement the ``tp_iternext`` handler. File "
-"objects are an example of such an iterator."
+"Objects which can only be iterated over once (usually due to side effects of "
+"iteration, such as file objects) can implement :c:member:`~PyTypeObject."
+"tp_iter` by returning a new reference to themselves -- and should also "
+"therefore implement the :c:member:`~PyTypeObject.tp_iternext` handler."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1413
+#: ../Doc/extending/newtypes.rst:529
msgid ""
-"Iterator objects should implement both handlers. The ``tp_iter`` handler "
-"should return a new reference to the iterator (this is the same as the "
-"``tp_iter`` handler for objects which can only be iterated over "
-"destructively). The ``tp_iternext`` handler should return a new reference "
-"to the next object in the iteration if there is one. If the iteration has "
-"reached the end, it may return *NULL* without setting an exception or it may "
-"set :exc:`StopIteration`; avoiding the exception can yield slightly better "
-"performance. If an actual error occurs, it should set an exception and "
-"return *NULL*."
+"Any :term:`iterator` object should implement both :c:member:`~PyTypeObject."
+"tp_iter` and :c:member:`~PyTypeObject.tp_iternext`. An iterator's :c:member:"
+"`~PyTypeObject.tp_iter` handler should return a new reference to the "
+"iterator. Its :c:member:`~PyTypeObject.tp_iternext` handler should return a "
+"new reference to the next object in the iteration, if there is one. If the "
+"iteration has reached the end, :c:member:`~PyTypeObject.tp_iternext` may "
+"return *NULL* without setting an exception, or it may set :exc:"
+"`StopIteration` *in addition* to returning *NULL*; avoiding the exception "
+"can yield slightly better performance. If an actual error occurs, :c:member:"
+"`~PyTypeObject.tp_iternext` should always set an exception and return *NULL*."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1426
+#: ../Doc/extending/newtypes.rst:545
msgid "Weak Reference Support"
-msgstr ""
+msgstr "Prise en charge de la référence faible"
-#: ../Doc/extending/newtypes.rst:1428
+#: ../Doc/extending/newtypes.rst:547
msgid ""
-"One of the goals of Python's weak-reference implementation is to allow any "
+"One of the goals of Python's weak reference implementation is to allow any "
"type to participate in the weak reference mechanism without incurring the "
-"overhead on those objects which do not benefit by weak referencing (such as "
-"numbers)."
+"overhead on performance-critical objects (such as numbers)."
msgstr ""
+"L'un des objectifs de l'implémentation de la référence faible de *Python* "
+"est de permettre à tout type d'objet de participer au mécanisme de référence "
+"faible sans avoir à supporter le surcoût de la performance critique des "
+"certains objets, tels que les nombres."
+
+#: ../Doc/extending/newtypes.rst:552
+msgid "Documentation for the :mod:`weakref` module."
+msgstr "Documentation pour le module :mod:`weakref`."
-#: ../Doc/extending/newtypes.rst:1432
+#: ../Doc/extending/newtypes.rst:554
msgid ""
-"For an object to be weakly referencable, the extension must include a :c:"
-"type:`PyObject\\*` field in the instance structure for the use of the weak "
-"reference mechanism; it must be initialized to *NULL* by the object's "
-"constructor. It must also set the :c:member:`~PyTypeObject."
-"tp_weaklistoffset` field of the corresponding type object to the offset of "
-"the field. For example, the instance type is defined with the following "
-"structure::"
+"For an object to be weakly referencable, the extension type must do two "
+"things:"
msgstr ""
+"Pour qu'un objet soit faiblement référençable, le type d'extension doit "
+"faire deux choses :"
-#: ../Doc/extending/newtypes.rst:1446
-msgid "The statically-declared type object for instances is defined this way::"
+#: ../Doc/extending/newtypes.rst:556
+msgid ""
+"Include a :c:type:`PyObject\\*` field in the C object structure dedicated to "
+"the weak reference mechanism. The object's constructor should leave it "
+"*NULL* (which is automatic when using the default :c:member:`~PyTypeObject."
+"tp_alloc`)."
msgstr ""
-#: ../Doc/extending/newtypes.rst:1463
+#: ../Doc/extending/newtypes.rst:561
msgid ""
-"The type constructor is responsible for initializing the weak reference list "
-"to *NULL*::"
+"Set the :c:member:`~PyTypeObject.tp_weaklistoffset` type member to the "
+"offset of the aforementioned field in the C object structure, so that the "
+"interpreter knows how to access and modify that field."
msgstr ""
+"Définissez le membre de type :c:member:`~PyTypeObject.tp_weaklistoffset` à "
+"la valeur de décalage (*offset*) du champ susmentionné dans la structure de "
+"l'objet *C*, afin que l'interpréteur sache comment accéder à ce champ et le "
+"modifier."
-#: ../Doc/extending/newtypes.rst:1475
+#: ../Doc/extending/newtypes.rst:565
msgid ""
-"The only further addition is that the destructor needs to call the weak "
-"reference manager to clear any weak references. This is only required if "
-"the weak reference list is non-*NULL*::"
+"Concretely, here is how a trivial object structure would be augmented with "
+"the required field::"
msgstr ""
+"Concrètement, voici comment une structure d'objet simple serait complétée "
+"par le champ requis ::"
-#: ../Doc/extending/newtypes.rst:1494
-msgid "More Suggestions"
+#: ../Doc/extending/newtypes.rst:573
+msgid "And the corresponding member in the statically-declared type object::"
msgstr ""
+"Et le membre correspondant dans l'objet de type déclaré statiquement ::"
-#: ../Doc/extending/newtypes.rst:1496
+#: ../Doc/extending/newtypes.rst:581
msgid ""
-"Remember that you can omit most of these functions, in which case you "
-"provide ``0`` as a value. There are type definitions for each of the "
-"functions you must provide. They are in :file:`object.h` in the Python "
-"include directory that comes with the source distribution of Python."
+"The only further addition is that ``tp_dealloc`` needs to clear any weak "
+"references (by calling :c:func:`PyObject_ClearWeakRefs`) if the field is non-"
+"*NULL*::"
msgstr ""
-#: ../Doc/extending/newtypes.rst:1501
+#: ../Doc/extending/newtypes.rst:597
+msgid "More Suggestions"
+msgstr "Plus de suggestions"
+
+#: ../Doc/extending/newtypes.rst:599
msgid ""
"In order to learn how to implement any specific method for your new data "
-"type, do the following: Download and unpack the Python source distribution. "
-"Go to the :file:`Objects` directory, then search the C source files for "
-"``tp_`` plus the function you want (for example, ``tp_richcompare``). You "
-"will find examples of the function you want to implement."
+"type, get the :term:`CPython` source code. Go to the :file:`Objects` "
+"directory, then search the C source files for ``tp_`` plus the function you "
+"want (for example, ``tp_richcompare``). You will find examples of the "
+"function you want to implement."
msgstr ""
+"Pour savoir comment mettre en œuvre une méthode spécifique pour votre "
+"nouveau type de données, téléchargez le code source :term:`CPython`. Allez "
+"dans le répertoire :file:`Objects`, puis cherchez dans les fichiers sources "
+"*C* la fonction ``tp_`` plus la fonction que vous voulez (par exemple, "
+"``tp_richcompare``). Vous trouverez des exemples de la fonction que vous "
+"voulez implémenter."
-#: ../Doc/extending/newtypes.rst:1507
+#: ../Doc/extending/newtypes.rst:605
msgid ""
-"When you need to verify that an object is an instance of the type you are "
-"implementing, use the :c:func:`PyObject_TypeCheck` function. A sample of its "
-"use might be something like the following::"
+"When you need to verify that an object is a concrete instance of the type "
+"you are implementing, use the :c:func:`PyObject_TypeCheck` function. A "
+"sample of its use might be something like the following::"
msgstr ""
+"Lorsque vous avez besoin de vérifier qu'un objet est une instance concrète "
+"du type que vous implémentez, utilisez la fonction :c:func:"
+"`PyObject_TypeCheck`. Voici un exemple de son utilisation ::"
-#: ../Doc/extending/newtypes.rst:1517
-msgid "Footnotes"
-msgstr "Notes"
+#: ../Doc/extending/newtypes.rst:616
+msgid "Download CPython source releases."
+msgstr "Télécharger les versions sources de *CPython*."
-#: ../Doc/extending/newtypes.rst:1518
-msgid ""
-"This is true when we know that the object is a basic type, like a string or "
-"a float."
-msgstr ""
+#: ../Doc/extending/newtypes.rst:616
+msgid "https://www.python.org/downloads/source/"
+msgstr "https://www.python.org/downloads/source/"
-#: ../Doc/extending/newtypes.rst:1521
+#: ../Doc/extending/newtypes.rst:618
msgid ""
-"We relied on this in the :c:member:`~PyTypeObject.tp_dealloc` handler in "
-"this example, because our type doesn't support garbage collection. Even if a "
-"type supports garbage collection, there are calls that can be made to "
-"\"untrack\" the object from garbage collection, however, these calls are "
-"advanced and not covered here."
+"The CPython project on GitHub, where the CPython source code is developed."
msgstr ""
+"Le projet *CPython* sur *GitHub*, où se trouve le code source *CPython*."
-#: ../Doc/extending/newtypes.rst:1526
-msgid ""
-"We now know that the first and last members are strings, so perhaps we could "
-"be less careful about decrementing their reference counts, however, we "
-"accept instances of string subclasses. Even though deallocating normal "
-"strings won't call back into our objects, we can't guarantee that "
-"deallocating an instance of a string subclass won't call back into our "
-"objects."
-msgstr ""
+#: ../Doc/extending/newtypes.rst:619
+msgid "https://github.com/python/cpython"
+msgstr "https://github.com/python/cpython"
-#: ../Doc/extending/newtypes.rst:1532
-msgid ""
-"Even in the third version, we aren't guaranteed to avoid cycles. Instances "
-"of string subclasses are allowed and string subclasses could allow cycles "
-"even if normal strings don't."
-msgstr ""
+#~ msgid "Footnotes"
+#~ msgstr "Notes"
diff --git a/extending/newtypes_tutorial.po b/extending/newtypes_tutorial.po
new file mode 100644
index 000000000..006c4d35a
--- /dev/null
+++ b/extending/newtypes_tutorial.po
@@ -0,0 +1,862 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2001-2018, 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.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2018-05-02 00:10+0200\n"
+"PO-Revision-Date: 2018-06-17 10:15+0200\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../Doc/extending/newtypes_tutorial.rst:7
+msgid "Defining Extension Types: Tutorial"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:14
+msgid ""
+"Python allows the writer of a C extension module to define new types that "
+"can be manipulated from Python code, much like the built-in :class:`str` "
+"and :class:`list` types. The code for all extension types follows a "
+"pattern, but there are some details that you need to understand before you "
+"can get started. This document is a gentle introduction to the topic."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:24
+msgid "The Basics"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:26
+msgid ""
+"The :term:`CPython` runtime sees all Python objects as variables of type :c:"
+"type:`PyObject\\*`, which serves as a \"base type\" for all Python objects. "
+"The :c:type:`PyObject` structure itself only contains the object's :term:"
+"`reference count` and a pointer to the object's \"type object\". This is "
+"where the action is; the type object determines which (C) functions get "
+"called by the interpreter when, for instance, an attribute gets looked up on "
+"an object, a method called, or it is multiplied by another object. These C "
+"functions are called \"type methods\"."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:35
+msgid ""
+"So, if you want to define a new extension type, you need to create a new "
+"type object."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:38
+msgid ""
+"This sort of thing can only be explained by example, so here's a minimal, "
+"but complete, module that defines a new type named :class:`Custom` inside a "
+"C extension module :mod:`custom`:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:43
+msgid ""
+"What we're showing here is the traditional way of defining *static* "
+"extension types. It should be adequate for most uses. The C API also "
+"allows defining heap-allocated extension types using the :c:func:"
+"`PyType_FromSpec` function, which isn't covered in this tutorial."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:50
+msgid ""
+"Now that's quite a bit to take in at once, but hopefully bits will seem "
+"familiar from the previous chapter. This file defines three things:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:53
+msgid ""
+"What a :class:`Custom` **object** contains: this is the ``CustomObject`` "
+"struct, which is allocated once for each :class:`Custom` instance."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:55
+msgid ""
+"How the :class:`Custom` **type** behaves: this is the ``CustomType`` struct, "
+"which defines a set of flags and function pointers that the interpreter "
+"inspects when specific operations are requested."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:58
+msgid ""
+"How to initialize the :mod:`custom` module: this is the ``PyInit_custom`` "
+"function and the associated ``custommodule`` struct."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:61
+msgid "The first bit is::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:67
+msgid ""
+"This is what a Custom object will contain. ``PyObject_HEAD`` is mandatory "
+"at the start of each object struct and defines a field called ``ob_base`` of "
+"type :c:type:`PyObject`, containing a pointer to a type object and a "
+"reference count (these can be accessed using the macros :c:macro:`Py_REFCNT` "
+"and :c:macro:`Py_TYPE` respectively). The reason for the macro is to "
+"abstract away the layout and to enable additional fields in debug builds."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:75
+msgid ""
+"There is no semicolon above after the :c:macro:`PyObject_HEAD` macro. Be "
+"wary of adding one by accident: some compilers will complain."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:78
+msgid ""
+"Of course, objects generally store additional data besides the standard "
+"``PyObject_HEAD`` boilerplate; for example, here is the definition for "
+"standard Python floats::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:87
+msgid "The second bit is the definition of the type object. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:99
+msgid ""
+"We recommend using C99-style designated initializers as above, to avoid "
+"listing all the :c:type:`PyTypeObject` fields that you don't care about and "
+"also to avoid caring about the fields' declaration order."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:103
+msgid ""
+"The actual definition of :c:type:`PyTypeObject` in :file:`object.h` has many "
+"more :ref:`fields ` than the definition above. The remaining "
+"fields will be filled with zeros by the C compiler, and it's common practice "
+"to not specify them explicitly unless you need them."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:108
+msgid "We're going to pick it apart, one field at a time::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:112
+msgid ""
+"This line is mandatory boilerplate to initialize the ``ob_base`` field "
+"mentioned above. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:117
+msgid ""
+"The name of our type. This will appear in the default textual "
+"representation of our objects and in some error messages, for example:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:127
+msgid ""
+"Note that the name is a dotted name that includes both the module name and "
+"the name of the type within the module. The module in this case is :mod:"
+"`custom` and the type is :class:`Custom`, so we set the type name to :class:"
+"`custom.Custom`. Using the real dotted import path is important to make your "
+"type compatible with the :mod:`pydoc` and :mod:`pickle` modules. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:136
+msgid ""
+"This is so that Python knows how much memory to allocate when creating new :"
+"class:`Custom` instances. :c:member:`~PyTypeObject.tp_itemsize` is only "
+"used for variable-sized objects and should otherwise be zero."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:142
+msgid ""
+"If you want your type to be subclassable from Python, and your type has the "
+"same :c:member:`~PyTypeObject.tp_basicsize` as its base type, you may have "
+"problems with multiple inheritance. A Python subclass of your type will "
+"have to list your type first in its :attr:`~class.__bases__`, or else it "
+"will not be able to call your type's :meth:`__new__` method without getting "
+"an error. You can avoid this problem by ensuring that your type has a "
+"larger value for :c:member:`~PyTypeObject.tp_basicsize` than its base type "
+"does. Most of the time, this will be true anyway, because either your base "
+"type will be :class:`object`, or else you will be adding data members to "
+"your base type, and therefore increasing its size."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:152
+msgid "We set the class flags to :const:`Py_TPFLAGS_DEFAULT`. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:156
+msgid ""
+"All types should include this constant in their flags. It enables all of "
+"the members defined until at least Python 3.3. If you need further members, "
+"you will need to OR the corresponding flags."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:160
+msgid ""
+"We provide a doc string for the type in :c:member:`~PyTypeObject.tp_doc`. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:164
+msgid ""
+"To enable object creation, we have to provide a :c:member:`~PyTypeObject."
+"tp_new` handler. This is the equivalent of the Python method :meth:"
+"`__new__`, but has to be specified explicitly. In this case, we can just "
+"use the default implementation provided by the API function :c:func:"
+"`PyType_GenericNew`. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:171
+msgid ""
+"Everything else in the file should be familiar, except for some code in :c:"
+"func:`PyInit_custom`::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:177
+msgid ""
+"This initializes the :class:`Custom` type, filling in a number of members to "
+"the appropriate default values, including :attr:`ob_type` that we initially "
+"set to *NULL*. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:183
+msgid ""
+"This adds the type to the module dictionary. This allows us to create :"
+"class:`Custom` instances by calling the :class:`Custom` class:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:191
+msgid ""
+"That's it! All that remains is to build it; put the above code in a file "
+"called :file:`custom.c` and:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:200
+msgid "in a file called :file:`setup.py`; then typing"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:206
+msgid ""
+"at a shell should produce a file :file:`custom.so` in a subdirectory; move "
+"to that directory and fire up Python --- you should be able to ``import "
+"custom`` and play around with Custom objects."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:210
+msgid "That wasn't so hard, was it?"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:212
+msgid ""
+"Of course, the current Custom type is pretty uninteresting. It has no data "
+"and doesn't do anything. It can't even be subclassed."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:216
+msgid ""
+"While this documentation showcases the standard :mod:`distutils` module for "
+"building C extensions, it is recommended in real-world use cases to use the "
+"newer and better-maintained ``setuptools`` library. Documentation on how to "
+"do this is out of scope for this document and can be found in the `Python "
+"Packaging User's Guide `_."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:224
+msgid "Adding data and methods to the Basic example"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:226
+msgid ""
+"Let's extend the basic example to add some data and methods. Let's also "
+"make the type usable as a base class. We'll create a new module, :mod:"
+"`custom2` that adds these capabilities:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:233
+msgid "This version of the module has a number of changes."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:235
+msgid "We've added an extra include::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:239
+msgid ""
+"This include provides declarations that we use to handle attributes, as "
+"described a bit later."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:242
+msgid ""
+"The :class:`Custom` type now has three data attributes in its C struct, "
+"*first*, *last*, and *number*. The *first* and *last* variables are Python "
+"strings containing first and last names. The *number* attribute is a C "
+"integer."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:246
+msgid "The object structure is updated accordingly::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:255
+msgid ""
+"Because we now have data to manage, we have to be more careful about object "
+"allocation and deallocation. At a minimum, we need a deallocation method::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:266
+msgid "which is assigned to the :c:member:`~PyTypeObject.tp_dealloc` member::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:270
+msgid ""
+"This method first clears the reference counts of the two Python attributes. :"
+"c:func:`Py_XDECREF` correctly handles the case where its argument is *NULL* "
+"(which might happen here if ``tp_new`` failed midway). It then calls the :c:"
+"member:`~PyTypeObject.tp_free` member of the object's type (computed by "
+"``Py_TYPE(self)``) to free the object's memory. Note that the object's type "
+"might not be :class:`CustomType`, because the object may be an instance of a "
+"subclass."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:279
+msgid ""
+"The explicit cast to ``destructor`` above is needed because we defined "
+"``Custom_dealloc`` to take a ``CustomObject *`` argument, but the "
+"``tp_dealloc`` function pointer expects to receive a ``PyObject *`` "
+"argument. Otherwise, the compiler will emit a warning. This is object-"
+"oriented polymorphism, in C!"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:285
+msgid ""
+"We want to make sure that the first and last names are initialized to empty "
+"strings, so we provide a ``tp_new`` implementation::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:309
+msgid "and install it in the :c:member:`~PyTypeObject.tp_new` member::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:313
+msgid ""
+"The ``tp_new`` handler is responsible for creating (as opposed to "
+"initializing) objects of the type. It is exposed in Python as the :meth:"
+"`__new__` method. It is not required to define a ``tp_new`` member, and "
+"indeed many extension types will simply reuse :c:func:`PyType_GenericNew` as "
+"done in the first version of the ``Custom`` type above. In this case, we "
+"use the ``tp_new`` handler to initialize the ``first`` and ``last`` "
+"attributes to non-*NULL* default values."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:321
+msgid ""
+"``tp_new`` is passed the type being instantiated (not necessarily "
+"``CustomType``, if a subclass is instantiated) and any arguments passed when "
+"the type was called, and is expected to return the instance created. "
+"``tp_new`` handlers always accept positional and keyword arguments, but they "
+"often ignore the arguments, leaving the argument handling to initializer (a."
+"k.a. ``tp_init`` in C or ``__init__`` in Python) methods."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:329
+msgid ""
+"``tp_new`` shouldn't call ``tp_init`` explicitly, as the interpreter will do "
+"it itself."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:332
+msgid ""
+"The ``tp_new`` implementation calls the :c:member:`~PyTypeObject.tp_alloc` "
+"slot to allocate memory::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:337
+msgid ""
+"Since memory allocation may fail, we must check the :c:member:`~PyTypeObject."
+"tp_alloc` result against *NULL* before proceeding."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:341
+msgid ""
+"We didn't fill the :c:member:`~PyTypeObject.tp_alloc` slot ourselves. "
+"Rather :c:func:`PyType_Ready` fills it for us by inheriting it from our base "
+"class, which is :class:`object` by default. Most types use the default "
+"allocation strategy."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:347
+msgid ""
+"If you are creating a co-operative :c:member:`~PyTypeObject.tp_new` (one "
+"that calls a base type's :c:member:`~PyTypeObject.tp_new` or :meth:"
+"`__new__`), you must *not* try to determine what method to call using method "
+"resolution order at runtime. Always statically determine what type you are "
+"going to call, and call its :c:member:`~PyTypeObject.tp_new` directly, or "
+"via ``type->tp_base->tp_new``. If you do not do this, Python subclasses of "
+"your type that also inherit from other Python-defined classes may not work "
+"correctly. (Specifically, you may not be able to create instances of such "
+"subclasses without getting a :exc:`TypeError`.)"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:357
+msgid ""
+"We also define an initialization function which accepts arguments to provide "
+"initial values for our instance::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:386
+msgid "by filling the :c:member:`~PyTypeObject.tp_init` slot. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:390
+msgid ""
+"The :c:member:`~PyTypeObject.tp_init` slot is exposed in Python as the :meth:"
+"`__init__` method. It is used to initialize an object after it's created. "
+"Initializers always accept positional and keyword arguments, and they should "
+"return either ``0`` on success or ``-1`` on error."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:395
+msgid ""
+"Unlike the ``tp_new`` handler, there is no guarantee that ``tp_init`` is "
+"called at all (for example, the :mod:`pickle` module by default doesn't "
+"call :meth:`__init__` on unpickled instances). It can also be called "
+"multiple times. Anyone can call the :meth:`__init__` method on our "
+"objects. For this reason, we have to be extra careful when assigning the "
+"new attribute values. We might be tempted, for example to assign the "
+"``first`` member like this::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:409
+msgid ""
+"But this would be risky. Our type doesn't restrict the type of the "
+"``first`` member, so it could be any kind of object. It could have a "
+"destructor that causes code to be executed that tries to access the "
+"``first`` member; or that destructor could release the :term:`Global "
+"interpreter Lock` and let arbitrary code run in other threads that accesses "
+"and modifies our object."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:416
+msgid ""
+"To be paranoid and protect ourselves against this possibility, we almost "
+"always reassign members before decrementing their reference counts. When "
+"don't we have to do this?"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:420
+msgid "when we absolutely know that the reference count is greater than 1;"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:422
+msgid ""
+"when we know that deallocation of the object [#]_ will neither release the :"
+"term:`GIL` nor cause any calls back into our type's code;"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:425
+msgid ""
+"when decrementing a reference count in a :c:member:`~PyTypeObject."
+"tp_dealloc` handler on a type which doesn't support cyclic garbage "
+"collection [#]_."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:428
+msgid ""
+"We want to expose our instance variables as attributes. There are a number "
+"of ways to do that. The simplest way is to define member definitions::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:441
+msgid ""
+"and put the definitions in the :c:member:`~PyTypeObject.tp_members` slot::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:445
+msgid ""
+"Each member definition has a member name, type, offset, access flags and "
+"documentation string. See the :ref:`Generic-Attribute-Management` section "
+"below for details."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:449
+msgid ""
+"A disadvantage of this approach is that it doesn't provide a way to restrict "
+"the types of objects that can be assigned to the Python attributes. We "
+"expect the first and last names to be strings, but any Python objects can be "
+"assigned. Further, the attributes can be deleted, setting the C pointers to "
+"*NULL*. Even though we can make sure the members are initialized to non-"
+"*NULL* values, the members can be set to *NULL* if the attributes are "
+"deleted."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:456
+msgid ""
+"We define a single method, :meth:`Custom.name()`, that outputs the objects "
+"name as the concatenation of the first and last names. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:473
+msgid ""
+"The method is implemented as a C function that takes a :class:`Custom` (or :"
+"class:`Custom` subclass) instance as the first argument. Methods always "
+"take an instance as the first argument. Methods often take positional and "
+"keyword arguments as well, but in this case we don't take any and don't need "
+"to accept a positional argument tuple or keyword argument dictionary. This "
+"method is equivalent to the Python method:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:485
+msgid ""
+"Note that we have to check for the possibility that our :attr:`first` and :"
+"attr:`last` members are *NULL*. This is because they can be deleted, in "
+"which case they are set to *NULL*. It would be better to prevent deletion "
+"of these attributes and to restrict the attribute values to be strings. "
+"We'll see how to do that in the next section."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:491
+msgid ""
+"Now that we've defined the method, we need to create an array of method "
+"definitions::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:501
+msgid ""
+"(note that we used the :const:`METH_NOARGS` flag to indicate that the method "
+"is expecting no arguments other than *self*)"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:504
+msgid "and assign it to the :c:member:`~PyTypeObject.tp_methods` slot::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:508
+msgid ""
+"Finally, we'll make our type usable as a base class for subclassing. We've "
+"written our methods carefully so far so that they don't make any assumptions "
+"about the type of the object being created or used, so all we need to do is "
+"to add the :const:`Py_TPFLAGS_BASETYPE` to our class flag definition::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:515
+msgid ""
+"We rename :c:func:`PyInit_custom` to :c:func:`PyInit_custom2`, update the "
+"module name in the :c:type:`PyModuleDef` struct, and update the full class "
+"name in the :c:type:`PyTypeObject` struct."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:519
+msgid "Finally, we update our :file:`setup.py` file to build the new module:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:532
+msgid "Providing finer control over data attributes"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:534
+msgid ""
+"In this section, we'll provide finer control over how the :attr:`first` and :"
+"attr:`last` attributes are set in the :class:`Custom` example. In the "
+"previous version of our module, the instance variables :attr:`first` and :"
+"attr:`last` could be set to non-string values or even deleted. We want to "
+"make sure that these attributes always contain strings."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:543
+msgid ""
+"To provide greater control, over the :attr:`first` and :attr:`last` "
+"attributes, we'll use custom getter and setter functions. Here are the "
+"functions for getting and setting the :attr:`first` attribute::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:574
+msgid ""
+"The getter function is passed a :class:`Custom` object and a \"closure\", "
+"which is a void pointer. In this case, the closure is ignored. (The "
+"closure supports an advanced usage in which definition data is passed to the "
+"getter and setter. This could, for example, be used to allow a single set of "
+"getter and setter functions that decide the attribute to get or set based on "
+"data in the closure.)"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:580
+msgid ""
+"The setter function is passed the :class:`Custom` object, the new value, and "
+"the closure. The new value may be *NULL*, in which case the attribute is "
+"being deleted. In our setter, we raise an error if the attribute is deleted "
+"or if its new value is not a string."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:585
+msgid "We create an array of :c:type:`PyGetSetDef` structures::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:595
+msgid "and register it in the :c:member:`~PyTypeObject.tp_getset` slot::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:599
+msgid ""
+"The last item in a :c:type:`PyGetSetDef` structure is the \"closure\" "
+"mentioned above. In this case, we aren't using a closure, so we just pass "
+"*NULL*."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:602
+msgid "We also remove the member definitions for these attributes::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:610
+msgid ""
+"We also need to update the :c:member:`~PyTypeObject.tp_init` handler to only "
+"allow strings [#]_ to be passed::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:639
+msgid ""
+"With these changes, we can assure that the ``first`` and ``last`` members "
+"are never *NULL* so we can remove checks for *NULL* values in almost all "
+"cases. This means that most of the :c:func:`Py_XDECREF` calls can be "
+"converted to :c:func:`Py_DECREF` calls. The only place we can't change "
+"these calls is in the ``tp_dealloc`` implementation, where there is the "
+"possibility that the initialization of these members failed in ``tp_new``."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:646
+msgid ""
+"We also rename the module initialization function and module name in the "
+"initialization function, as we did before, and we add an extra definition to "
+"the :file:`setup.py` file."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:652
+msgid "Supporting cyclic garbage collection"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:654
+msgid ""
+"Python has a :term:`cyclic garbage collector (GC) ` that "
+"can identify unneeded objects even when their reference counts are not zero. "
+"This can happen when objects are involved in cycles. For example, consider:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:664
+msgid ""
+"In this example, we create a list that contains itself. When we delete it, "
+"it still has a reference from itself. Its reference count doesn't drop to "
+"zero. Fortunately, Python's cyclic garbage collector will eventually figure "
+"out that the list is garbage and free it."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:669
+msgid ""
+"In the second version of the :class:`Custom` example, we allowed any kind of "
+"object to be stored in the :attr:`first` or :attr:`last` attributes [#]_. "
+"Besides, in the second and third versions, we allowed subclassing :class:"
+"`Custom`, and subclasses may add arbitrary attributes. For any of those two "
+"reasons, :class:`Custom` objects can participate in cycles:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:683
+msgid ""
+"To allow a :class:`Custom` instance participating in a reference cycle to be "
+"properly detected and collected by the cyclic GC, our :class:`Custom` type "
+"needs to fill two additional slots and to enable a flag that enables these "
+"slots:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:690
+msgid ""
+"First, the traversal method lets the cyclic GC know about subobjects that "
+"could participate in cycles::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:710
+msgid ""
+"For each subobject that can participate in cycles, we need to call the :c:"
+"func:`visit` function, which is passed to the traversal method. The :c:func:"
+"`visit` function takes as arguments the subobject and the extra argument "
+"*arg* passed to the traversal method. It returns an integer value that must "
+"be returned if it is non-zero."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:716
+msgid ""
+"Python provides a :c:func:`Py_VISIT` macro that automates calling visit "
+"functions. With :c:func:`Py_VISIT`, we can minimize the amount of "
+"boilerplate in ``Custom_traverse``::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:729
+msgid ""
+"The :c:member:`~PyTypeObject.tp_traverse` implementation must name its "
+"arguments exactly *visit* and *arg* in order to use :c:func:`Py_VISIT`."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:732
+msgid ""
+"Second, we need to provide a method for clearing any subobjects that can "
+"participate in cycles::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:743
+msgid ""
+"Notice the use of the :c:func:`Py_CLEAR` macro. It is the recommended and "
+"safe way to clear data attributes of arbitrary types while decrementing "
+"their reference counts. If you were to call :c:func:`Py_XDECREF` instead on "
+"the attribute before setting it to *NULL*, there is a possibility that the "
+"attribute's destructor would call back into code that reads the attribute "
+"again (*especially* if there is a reference cycle)."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:751
+msgid "You could emulate :c:func:`Py_CLEAR` by writing::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:758
+msgid ""
+"Nevertheless, it is much easier and less error-prone to always use :c:func:"
+"`Py_CLEAR` when deleting an attribute. Don't try to micro-optimize at the "
+"expense of robustness!"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:762
+msgid ""
+"The deallocator ``Custom_dealloc`` may call arbitrary code when clearing "
+"attributes. It means the circular GC can be triggered inside the function. "
+"Since the GC assumes reference count is not zero, we need to untrack the "
+"object from the GC by calling :c:func:`PyObject_GC_UnTrack` before clearing "
+"members. Here is our reimplemented deallocator using :c:func:"
+"`PyObject_GC_UnTrack` and ``Custom_clear``::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:777
+msgid ""
+"Finally, we add the :const:`Py_TPFLAGS_HAVE_GC` flag to the class flags::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:781
+msgid ""
+"That's pretty much it. If we had written custom :c:member:`~PyTypeObject."
+"tp_alloc` or :c:member:`~PyTypeObject.tp_free` handlers, we'd need to modify "
+"them for cyclic garbage collection. Most extensions will use the versions "
+"automatically provided."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:787
+msgid "Subclassing other types"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:789
+msgid ""
+"It is possible to create new extension types that are derived from existing "
+"types. It is easiest to inherit from the built in types, since an extension "
+"can easily use the :c:type:`PyTypeObject` it needs. It can be difficult to "
+"share these :c:type:`PyTypeObject` structures between extension modules."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:794
+msgid ""
+"In this example we will create a :class:`SubList` type that inherits from "
+"the built-in :class:`list` type. The new type will be completely compatible "
+"with regular lists, but will have an additional :meth:`increment` method "
+"that increases an internal counter:"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:814
+msgid ""
+"As you can see, the source code closely resembles the :class:`Custom` "
+"examples in previous sections. We will break down the main differences "
+"between them. ::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:822
+msgid ""
+"The primary difference for derived type objects is that the base type's "
+"object structure must be the first value. The base type will already "
+"include the :c:func:`PyObject_HEAD` at the beginning of its structure."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:826
+msgid ""
+"When a Python object is a :class:`SubList` instance, its ``PyObject *`` "
+"pointer can be safely cast to both ``PyListObject *`` and ``SubListObject "
+"*``::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:838
+msgid ""
+"We see above how to call through to the :attr:`__init__` method of the base "
+"type."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:841
+msgid ""
+"This pattern is important when writing a type with custom :c:member:"
+"`~PyTypeObject.tp_new` and :c:member:`~PyTypeObject.tp_dealloc` members. "
+"The :c:member:`~PyTypeObject.tp_new` handler should not actually create the "
+"memory for the object with its :c:member:`~PyTypeObject.tp_alloc`, but let "
+"the base class handle it by calling its own :c:member:`~PyTypeObject.tp_new`."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:847
+msgid ""
+"The :c:type:`PyTypeObject` struct supports a :c:member:`~PyTypeObject."
+"tp_base` specifying the type's concrete base class. Due to cross-platform "
+"compiler issues, you can't fill that field directly with a reference to :c:"
+"type:`PyList_Type`; it should be done later in the module initialization "
+"function::"
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:870
+msgid ""
+"Before calling :c:func:`PyType_Ready`, the type structure must have the :c:"
+"member:`~PyTypeObject.tp_base` slot filled in. When we are deriving an "
+"existing type, it is not necessary to fill out the :c:member:`~PyTypeObject."
+"tp_alloc` slot with :c:func:`PyType_GenericNew` -- the allocation function "
+"from the base type will be inherited."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:876
+msgid ""
+"After that, calling :c:func:`PyType_Ready` and adding the type object to the "
+"module is the same as with the basic :class:`Custom` examples."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:881
+msgid "Footnotes"
+msgstr "Notes"
+
+#: ../Doc/extending/newtypes_tutorial.rst:882
+msgid ""
+"This is true when we know that the object is a basic type, like a string or "
+"a float."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:885
+msgid ""
+"We relied on this in the :c:member:`~PyTypeObject.tp_dealloc` handler in "
+"this example, because our type doesn't support garbage collection."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:888
+msgid ""
+"We now know that the first and last members are strings, so perhaps we could "
+"be less careful about decrementing their reference counts, however, we "
+"accept instances of string subclasses. Even though deallocating normal "
+"strings won't call back into our objects, we can't guarantee that "
+"deallocating an instance of a string subclass won't call back into our "
+"objects."
+msgstr ""
+
+#: ../Doc/extending/newtypes_tutorial.rst:894
+msgid ""
+"Also, even with our attributes restricted to strings instances, the user "
+"could pass arbitrary :class:`str` subclasses and therefore still create "
+"reference cycles."
+msgstr ""
diff --git a/extending/windows.po b/extending/windows.po
index ee7779bcc..b002756e4 100644
--- a/extending/windows.po
+++ b/extending/windows.po
@@ -3,14 +3,13 @@
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR , YEAR.
#
-#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
+"POT-Creation-Date: 2017-09-21 09:15+0200\n"
+"PO-Revision-Date: 2017-12-01 08:56+0100\n"
+"Last-Translator: Julien Palard \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -19,7 +18,7 @@ msgstr ""
#: ../Doc/extending/windows.rst:8
msgid "Building C and C++ Extensions on Windows"
-msgstr ""
+msgstr "Construire des extensions C et C++ sur Windows"
#: ../Doc/extending/windows.rst:10
msgid ""
@@ -30,6 +29,12 @@ msgid ""
"programmer interested in producing software which can be successfully built "
"on both Unix and Windows."
msgstr ""
+"Cette page explique rapidement comment créer un module d'extension Windows "
+"pour Python en utilisant Microsoft Visual C++, et donne plus d'informations "
+"contextuelles sur son fonctionnement. Le texte explicatif est utile tant "
+"pour le développeur Windows qui apprend à construire des extensions Python "
+"que pour le développeur Unix souhaitant produire des logiciels pouvant être "
+"construits sur Unix et Windows."
#: ../Doc/extending/windows.rst:17
msgid ""
@@ -38,6 +43,10 @@ msgid ""
"still need the C compiler that was used to build Python; typically Microsoft "
"Visual C++."
msgstr ""
+"Les auteurs de modules sont invités à utiliser l'approche *distutils* pour "
+"construire des modules d'extension, au lieu de celle décrite dans cette "
+"section. Vous aurez toujours besoin du compilateur C utilisé pour construire "
+"Python ; typiquement Microsoft Visual C++."
#: ../Doc/extending/windows.rst:24
msgid ""
@@ -48,10 +57,16 @@ msgid ""
"working with. For example, if you are using Python 2.2.1, ``XY`` will "
"actually be ``22``."
msgstr ""
+"Cette page mentionne plusieurs noms de fichiers comprenant un numéro de "
+"version Python encodé. Ces noms de fichiers sont construits sous le format "
+"de version ``XY`` ; en pratique, ``'X'`` représente le numéro de version "
+"majeure et ``'Y'`` représente le numéro de version mineure de la version "
+"Python avec laquelle vous travaillez. Par exemple, si vous utilisez Python "
+"2.2.1, ``XY`` correspond à ``22``."
#: ../Doc/extending/windows.rst:34
msgid "A Cookbook Approach"
-msgstr ""
+msgstr "Une approche \"recette de cuisine\""
#: ../Doc/extending/windows.rst:36
msgid ""
@@ -64,10 +79,20 @@ msgid ""
"project file for the :source:`winsound ` standard "
"library module."
msgstr ""
+"Il y a deux approches lorsque l'on construit des modules d'extension sur "
+"Windows, tout comme sur Unix : utiliser le paquet :mod:`distutils` pour "
+"contrôler le processus de construction, ou faire les choses manuellement. "
+"L'approche *distutils* fonctionne bien pour la plupart des extensions ; la "
+"documentation pour utiliser :mod:`distutils` pour construire et empaqueter "
+"les modules d'extension est disponible dans :ref:`distutils-index`. Si vous "
+"considérez que vous avez réellement besoin de faire les choses manuellement, "
+"il pourrait être enrichissant d'étudier le fichier de projet :source:"
+"`winsound ` pour le module de la bibliothèque "
+"standard."
#: ../Doc/extending/windows.rst:48
msgid "Differences Between Unix and Windows"
-msgstr ""
+msgstr "Différences entre Unix et Windows"
#: ../Doc/extending/windows.rst:53
msgid ""
@@ -75,6 +100,10 @@ msgid ""
"code. Before you try to build a module that can be dynamically loaded, be "
"aware of how your system works."
msgstr ""
+"\\ Unix et Windows utilisent des paradigmes complètement différents pour le "
+"chargement du code pendant l'exécution. Avant d'essayer de construire un "
+"module qui puisse être chargé dynamiquement, soyez conscient du mode de "
+"fonctionnement du système."
#: ../Doc/extending/windows.rst:57
msgid ""
@@ -85,6 +114,13 @@ msgid ""
"actual locations in the program where the functions and data are placed in "
"memory. This is basically a link operation."
msgstr ""
+"Sur Unix, un fichier objet partagé (:file:`.so`) contient du code servant au "
+"programme, ainsi que les noms des fonctions et les données que l'on "
+"s'attend à trouver dans le programme. Quand le fichier est attaché au "
+"programme, toutes les références à ces fonctions et données dans le code du "
+"fichier sont modifiées pour pointer vers les localisations actuelles dans le "
+"programme où sont désormais placées les fonctions et données dans la "
+"mémoire. C'est tout simplement une opération de liaison."
#: ../Doc/extending/windows.rst:64
msgid ""
@@ -95,6 +131,13 @@ msgid ""
"and the lookup table is modified at runtime to point to the functions and "
"data."
msgstr ""
+"Sur Windows, un fichier bibliothèque de liens dynamiques (:file:`.dll`) n'a "
+"pas de références paresseuses. A la place, un accès aux fonctions ou données "
+"passe par une table de conversion. Cela est fait pour que le code DLL ne "
+"doive pas être réarrangé à l'exécution pour renvoyer à la mémoire du "
+"programme ; à la place, le code utilise déjà la table de conversion DLL, et "
+"cette table est modifiée à l'exécution pour pointer vers les fonctions et "
+"données."
#: ../Doc/extending/windows.rst:70
msgid ""
@@ -105,6 +148,12 @@ msgid ""
"files in the libraries; if it finds it, it will include all the code from "
"that object file."
msgstr ""
+"Sur Unix, il n'y a qu'un type de bibliothèque de fichier (:file:`.a`) qui "
+"contient du code venant de plusieurs fichiers objets (:file:`.o`). Durant "
+"l'étape de liaison pour créer un fichier objet partagé (:file:`.so`), le "
+"lieur peut informer qu'il ne sait pas où un identificateur est défini. Le "
+"lieur le cherchera dans les fichiers objet dans les bibliothèques ; s'il le "
+"trouve, il inclura tout le code provenant de ce fichier objet."
#: ../Doc/extending/windows.rst:76
msgid ""
@@ -119,6 +168,18 @@ msgid ""
"will need to be used for all future DLLs that depend on the symbols in the "
"application or DLL."
msgstr ""
+"Sur Windows, il y a deux types de bibliothèques, une bibliothèque statique "
+"et une bibliothèque d'importation (toutes deux appelées :file:`.lib`). Une "
+"bibliothèque statique est comme un fichier Unix :file:`.a` ; elle contient "
+"du code pouvant être inclus si nécessaire. Une bibliothèque d'importation "
+"est uniquement utilisée pour rassurer le lieur qu'un certain identificateur "
+"est légal, et sera présent dans le programme quand la DLL est chargée. Comme "
+"ça le lieur utilise les informations provenant de la bibliothèque "
+"d'importation pour construire la table de conversion pour utiliser les "
+"identificateurs qui ne sont pas inclus dans la DLL. Quand une application ou "
+"une DLL est liée, une bibliothèque d'importation peut être générée, qui "
+"devra être utilisée pour toutes les futures DLL dépendantes aux symboles "
+"provenant de l'application ou de la DLL."
#: ../Doc/extending/windows.rst:86
msgid ""
@@ -130,6 +191,14 @@ msgid ""
"`A.lib` to the linker for B and C. :file:`A.lib` does not contain code; it "
"just contains information which will be used at runtime to access A's code."
msgstr ""
+"Supposons que vous construisez deux modules de chargement dynamiques, B et "
+"C, qui ne devraient pas partager un autre bloc de code avec A. Sur Unix, "
+"vous ne transmettrez pas :file:`A.a` au lieur pour :file:`B.so` et :file:`C."
+"so` ; cela le ferait être inclus deux fois, pour que B et C aient chacun "
+"leur propre copie. Sur Windows, construire :file:`A.dll` construira aussi :"
+"file:`A.lib`. Vous transmettez :file:`A.lib` au lieur pour B et C. :file:`A."
+"lib` ne contient pas de code ; il contient uniquement des informations qui "
+"seront utilisées lors de l'exécution pour accéder au code de A."
#: ../Doc/extending/windows.rst:94
msgid ""
@@ -138,10 +207,14 @@ msgid ""
"On Unix, linking with a library is more like ``from spam import *``; it does "
"create a separate copy."
msgstr ""
+"Sur Windows, utiliser une bibliothèque d'importation est comme utiliser "
+"``import spam``; cela vous donne accès aux noms des spams, mais ne crée par "
+"de copie séparée. Sur Unix, se lier à une bibliothèque est plus comme ``from "
+"spam import *`` ; cela crée une copie séparée."
#: ../Doc/extending/windows.rst:103
msgid "Using DLLs in Practice"
-msgstr ""
+msgstr "Utiliser les DLL en pratique"
#: ../Doc/extending/windows.rst:108
msgid ""
@@ -149,6 +222,9 @@ msgid ""
"or may not work (though Borland seems to). The rest of this section is MSVC+"
"+ specific."
msgstr ""
+"Le Python de Windows est construit en Microsoft Visual C++ ; utiliser "
+"d'autres compilateurs pourrait fonctionner, ou pas (cependant Borland a "
+"l'air de fonctionner). Le reste de cette section est spécifique à MSVC++."
#: ../Doc/extending/windows.rst:112
msgid ""
@@ -156,6 +232,9 @@ msgid ""
"linker. To build two DLLs, spam and ni (which uses C functions found in "
"spam), you could use these commands::"
msgstr ""
+"Lorsque vous créez des DLL sur Windows, vous devez transmettre :file:"
+"`pythonXY.lib` au lieur. Pour construire deux DLL, spam et ni (qui utilisent "
+"des fonctions C trouvées dans spam), vous pouvez utiliser ces commandes ::"
#: ../Doc/extending/windows.rst:119
msgid ""
@@ -164,6 +243,10 @@ msgid ""
"functions (such as :c:func:`PyArg_ParseTuple`), but it does know how to find "
"the Python code thanks to :file:`pythonXY.lib`."
msgstr ""
+"La première commande a créé trois fichiers : :file:`spam.obj`, :file:`spam."
+"dll` et :file:`spam.lib`. :file:`Spam.dll` ne contient pas de fonctions "
+"Python (telles que :c:func:`PyArg_ParseTuple`), mais il sait comment trouver "
+"le code Python grâce à :file:`pythonXY.lib`."
#: ../Doc/extending/windows.rst:124
msgid ""
@@ -171,6 +254,9 @@ msgid ""
"lib`), which knows how to find the necessary functions from spam, and also "
"from the Python executable."
msgstr ""
+"La seconde commande a créé :file:`ni.dll` (et :file:`.obj` et :file:`.lib`), "
+"qui sait comment trouver les fonctions nécessaires dans spam, ainsi qu'à "
+"partir de l'exécutable Python."
#: ../Doc/extending/windows.rst:128
msgid ""
@@ -179,6 +265,11 @@ msgid ""
"say ``_declspec(dllexport)``, as in ``void _declspec(dllexport) "
"initspam(void)`` or ``PyObject _declspec(dllexport) *NiGetSpamData(void)``."
msgstr ""
+"Chaque identificateur n'est pas exporté vers la table de conversion. Si vous "
+"voulez que tout autre module (y compris Python) soit capable de voir vos "
+"identificateurs, vous devez préciser ``_declspec(dllexport)``, comme dans "
+"``void _declspec(dllexport) initspam(void)`` ou ``PyObject "
+"_declspec(dllexport) *NiGetSpamData(void)``."
#: ../Doc/extending/windows.rst:133
msgid ""
@@ -187,3 +278,8 @@ msgid ""
"the Project Settings dialog, Link tab, to specify *ignore default "
"libraries*. Add the correct :file:`msvcrtxx.lib` to the list of libraries."
msgstr ""
+"\\ Developer Studio apportera beaucoup de bibliothèques d'importation dont "
+"vous n'avez pas vraiment besoin, augmentant d'environ 100ko votre "
+"exécutable. Pour s'en débarrasser, allez dans les Paramètres du Projet, "
+"onglet Lien, pour préciser *ignorer les bibliothèques par défaut*. Et la :"
+"file:`msvcrtxx.lib` correcte à la liste des bibliothèques."
diff --git a/faq/design.po b/faq/design.po
index 509109339..1cad2fd85 100644
--- a/faq/design.po
+++ b/faq/design.po
@@ -8,23 +8,23 @@ msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
-"PO-Revision-Date: 2017-05-27 10:22+0200\n"
+"PO-Revision-Date: 2018-02-15 00:36+0100\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.4\n"
#: ../Doc/faq/design.rst:3
msgid "Design and History FAQ"
-msgstr "FAQ Histoire et Design"
+msgstr "FAQ histoire et design"
#: ../Doc/faq/design.rst:6
msgid "Why does Python use indentation for grouping of statements?"
msgstr ""
-"Pourquoi Python utilise-t-il l'indentation pour grouper les instructions ?"
+"Pourquoi Python utilise-t-il l'indentation pour grouper les instructions ?"
#: ../Doc/faq/design.rst:8
msgid ""
@@ -33,7 +33,7 @@ msgid ""
"Most people learn to love this feature after a while."
msgstr ""
"Guido van Rossum considère que l'usage de l'indentation pour regrouper les "
-"blocs d'instruction est élégant et contribue énormément à la clareté globale "
+"blocs d'instruction est élégant et contribue énormément à la clarté globale "
"du programme Python. La plupart des gens finissent par aimer cette "
"particularité au bout d'un moment."
@@ -46,7 +46,7 @@ msgstr ""
"Comme il n'y a pas d'accolades de début/fin, il ne peut y avoir de "
"différence entre le bloc perçu par l'analyseur syntaxique et le lecteur "
"humain. Parfois les programmeurs C pourront trouver un morceau de code comme "
-"celui-ci : ::"
+"celui-ci ::"
#: ../Doc/faq/design.rst:21
msgid ""
@@ -98,7 +98,7 @@ msgstr ""
msgid "Why am I getting strange results with simple arithmetic operations?"
msgstr ""
"Pourquoi ai-je d'étranges résultats suite à de simples opérations "
-"arithmétiques ?"
+"arithmétiques ?"
#: ../Doc/faq/design.rst:43
msgid "See the next question."
@@ -106,12 +106,11 @@ msgstr "Voir la question suivante."
#: ../Doc/faq/design.rst:47
msgid "Why are floating-point calculations so inaccurate?"
-msgstr "Pourquoi les calculs à virgules flottantes sont si imprécis ?"
+msgstr "Pourquoi les calculs à virgules flottantes sont si imprécis ?"
#: ../Doc/faq/design.rst:49
msgid "Users are often surprised by results like this::"
-msgstr ""
-"Les gens sont très souvent surpris par des résultats comme celui-ci : ::"
+msgstr "Les gens sont très souvent surpris par des résultats comme celui-ci ::"
#: ../Doc/faq/design.rst:54
msgid ""
@@ -148,7 +147,7 @@ msgid ""
msgstr ""
"Beaucoup de nombres pouvant être écrits facilement en notation décimale ne "
"peuvent pas s'exprimer de manière exacte en binaire à virgule flottante. Par "
-"exemple, après : ::"
+"exemple, après ::"
#: ../Doc/faq/design.rst:70
msgid ""
@@ -158,11 +157,11 @@ msgid ""
msgstr ""
"la valeur stockée pour ``x`` est une (très bonne) approximation de la valeur "
"décimale ``1.2``, mais cette valeur n'est pas exacte. Sur une machine "
-"typique, la valeur stockée est en fait : ::"
+"typique, la valeur stockée est en fait ::"
#: ../Doc/faq/design.rst:76
msgid "which is exactly::"
-msgstr "qui est, exactement : ::"
+msgstr "qui est, exactement ::"
#: ../Doc/faq/design.rst:80
msgid ""
@@ -182,7 +181,7 @@ msgstr ""
#: ../Doc/faq/design.rst:88
msgid "Why are Python strings immutable?"
-msgstr "Pourquoi les chaînes de caractères Python sont-elles immuables ?"
+msgstr "Pourquoi les chaînes de caractères Python sont-elles immuables ?"
#: ../Doc/faq/design.rst:90
msgid "There are several advantages."
@@ -216,7 +215,7 @@ msgstr ""
msgid "Why must 'self' be used explicitly in method definitions and calls?"
msgstr ""
"Pourquoi \"self\" doit-il être explicitement utilisé dans les définitions et "
-"les appels de méthode ?"
+"les appels de méthode ?"
#: ../Doc/faq/design.rst:107
msgid ""
@@ -240,11 +239,11 @@ msgid ""
msgstr ""
"Tout d'abord, il est plus évident d'utiliser une méthode ou un attribut "
"d'instance par exemple au lieu d'une variable locale. Lire ``self.x`` ou "
-"``self.meth()`` est sans ambiguité sur le fait que c'est une variable "
+"``self.meth()`` est sans ambiguïté sur le fait que c'est une variable "
"d'instance ou une méthode qui est utilisée, même si vous ne connaissez pas "
"la définition de classe par cœur. En C++, vous pouvez les reconnaitre par "
"l'absence d'une déclaration de variable locale (en supposant que les "
-"variables globales sont rares ou facilement reconnaissables) - mais en "
+"variables globales sont rares ou facilement reconnaissables) -- mais en "
"Python, il n'y a pas de déclarations de variables locales, de sorte que vous "
"devez chercher la définition de classe pour être sûr. Certaines normes de "
"programmation C++ et Java préfixent les attributs d'instance par ``m_``. "
@@ -302,11 +301,11 @@ msgstr ""
"les références vers des noms non-qualifiés au sein d'une méthode n'ont pas à "
"être cherchés dans l'annuaire d'instances. En d'autres termes, les variables "
"locales et les variables d'instance vivent dans deux différents espaces de "
-"noms, et vous devez dire à Python quel espace de noms utiliser."
+"nommage, et vous devez dire à Python quel espace de nommage utiliser."
#: ../Doc/faq/design.rst:145
msgid "Why can't I use an assignment in an expression?"
-msgstr "Pourquoi ne puis-je pas utiliser d'assignation dans une expression ?"
+msgstr "Pourquoi ne puis-je pas utiliser d'assignation dans une expression ?"
#: ../Doc/faq/design.rst:147
msgid ""
@@ -346,11 +345,11 @@ msgid ""
"proper meaning to a human reader who has not yet been introduced to the "
"construct."
msgstr ""
-"De nombreuses alternatives ont été proposées. La plupart des hacks "
-"économisaient de la frappe mais utilisaient d'arbitraires ou cryptiques "
-"syntaxes ou mot-clés et faillait le simple critère pour proposition de "
-"changement du langage : ça doit intuitivement suggérer la bonne "
-"signification au lecteur qui n'a pas encore été introduit à la construction."
+"De nombreuses alternatives ont été proposées. La plupart économisaient "
+"quelques touches mais utilisaient des mots clefs ou des syntaxes arbitraires "
+"ou cryptiques, et manquaient à la règle que toute proposition de changement "
+"de langage devrait respecter : elle doit intuitivement suggérer la bonne "
+"signification au lecteur qui n'a pas encore été introduit à cette syntaxe."
#: ../Doc/faq/design.rst:183
msgid ""
@@ -370,7 +369,7 @@ msgid ""
"generally less robust than the \"while True\" solution::"
msgstr ""
"Il y a une manière alternative de faire ça qui semble attrayante mais elle "
-"est généralement moins robuste que la solution ``while True`` ::"
+"est généralement moins robuste que la solution ``while True`` ::"
#: ../Doc/faq/design.rst:196
msgid ""
@@ -401,8 +400,8 @@ msgid ""
"Why does Python use methods for some functionality (e.g. list.index()) but "
"functions for other (e.g. len(list))?"
msgstr ""
-"Pourquoi Python utilise des méthodes pour certaines fonctionnalités (ex : "
-"list.index()) mais des fonctions pour d'autres (ex : len(list)) ?"
+"Pourquoi Python utilise des méthodes pour certaines fonctionnalités (ex : "
+"``list.index()``) mais des fonctions pour d'autres (ex : ``len(list)``) ?"
#: ../Doc/faq/design.rst:213
msgid ""
@@ -447,8 +446,8 @@ msgstr ""
#: ../Doc/faq/design.rst:234
msgid "Why is join() a string method instead of a list or tuple method?"
msgstr ""
-"Pourquoi join() est une méthode de chaîne plutôt qu'une de liste ou de "
-"tuple ?"
+"Pourquoi ``join()`` est une méthode de chaîne plutôt qu'une de liste ou de "
+"tuple ?"
#: ../Doc/faq/design.rst:236
msgid ""
@@ -463,11 +462,11 @@ msgstr ""
"mêmes fonctionnalités que celles qui étaient déjà disponibles en utilisant "
"les fonctions du module string. La plupart de ces nouvelles méthodes ont été "
"largement acceptées, mais celle qui semble rendre certains programmeurs "
-"inconfortables est : ::"
+"inconfortables est ::"
#: ../Doc/faq/design.rst:244
msgid "which gives the result::"
-msgstr "qui donne le résultat : ::"
+msgstr "qui donne le résultat ::"
#: ../Doc/faq/design.rst:248
msgid "There are two common arguments against this usage."
@@ -498,14 +497,14 @@ msgstr ""
"train de dire à une séquence de joindre ses membres avec une constante de "
"chaîne\". Malheureusement, vous ne l'êtes pas. Pour quelque raison, il "
"semble être bien moins difficile d'avoir :meth:`~str.split` en tant que "
-"méthode de chaîne, puisque dans ce cas il est facile de voir que::"
+"méthode de chaîne, puisque dans ce cas il est facile de voir que ::"
#: ../Doc/faq/design.rst:263
msgid ""
"is an instruction to a string literal to return the substrings delimited by "
"the given separator (or, by default, arbitrary runs of white space)."
msgstr ""
-"est une instruction à une chaîne littérale de retourner les sous-chaînes "
+"est une instruction à une chaîne littérale de renvoyer les sous-chaînes "
"délimitées par le séparateur fournit (ou, par défaut, les espaces, ou "
"groupes d'espaces)."
@@ -522,11 +521,12 @@ msgstr ""
"s'insérer entre les éléments adjacents. Cette méthode peut être utilisée "
"avec n'importe quel argument qui obéit aux règles d'objets séquence, "
"incluant n'importe quelles nouvelles classes que vous pourriez définir vous-"
-"même. Des méthodes similaires existent pour des objets bytes et bytearray."
+"même. Des méthodes similaires existent pour des objets ``bytes`` et "
+"``bytearray``."
#: ../Doc/faq/design.rst:274
msgid "How fast are exceptions?"
-msgstr "À quel point les exceptions sont-elles rapides ?"
+msgstr "À quel point les exceptions sont-elles rapides ?"
#: ../Doc/faq/design.rst:276
msgid ""
@@ -534,10 +534,10 @@ msgid ""
"Actually catching an exception is expensive. In versions of Python prior to "
"2.0 it was common to use this idiom::"
msgstr ""
-"Un bloc try/except est extrêmement efficient tant qu'aucune exception ne "
-"sont levée. En effet, intercepter une exception s'avère coûteux. Dans les "
-"versions de précédant Python 2.0, il était courant d'utiliser cette "
-"pratique::"
+"Un bloc ``try`` / ``except`` est extrêmement efficient tant qu'aucune "
+"exception ne sont levée. En effet, intercepter une exception s'avère "
+"coûteux. Dans les versions de précédant Python 2.0, il était courant "
+"d'utiliser cette pratique ::"
#: ../Doc/faq/design.rst:286
msgid ""
@@ -546,7 +546,7 @@ msgid ""
msgstr ""
"Cela n'a de sens que si vous vous attendez à ce que le dictionnaire ait la "
"clé presque tout le temps. Si ce n'était pas le cas, vous l'auriez codé "
-"comme suit : ::"
+"comme suit ::"
#: ../Doc/faq/design.rst:294
msgid ""
@@ -562,7 +562,7 @@ msgstr ""
msgid "Why isn't there a switch or case statement in Python?"
msgstr ""
"Pourquoi n'y a-t-il pas une instruction *switch* ou une structure similaire "
-"à *switch / case* en Python ?"
+"à *switch / case* en Python ?"
#: ../Doc/faq/design.rst:302
msgid ""
@@ -573,8 +573,8 @@ msgid ""
msgstr ""
"Vous pouvez le faire assez facilement avec une séquence de ``if... elif... "
"elif... else``. Il y a eu quelques propositions pour la syntaxe de "
-"l'instruction switch, mais il n'y a pas (encore) de consensus sur le cas des "
-"intervalles. Voir la :pep:`275` pour tous les détails et l'état actuel."
+"l'instruction ``switch``, mais il n'y a pas (encore) de consensus sur le cas "
+"des intervalles. Voir la :pep:`275` pour tous les détails et l'état actuel."
#: ../Doc/faq/design.rst:307
msgid ""
@@ -584,7 +584,7 @@ msgid ""
msgstr ""
"Dans les cas où vous devez choisir parmi un très grand nombre de "
"possibilités, vous pouvez créer un dictionnaire faisant correspondre des "
-"valeurs à des fonctions à appeler. Par exemple : ::"
+"valeurs à des fonctions à appeler. Par exemple ::"
#: ../Doc/faq/design.rst:321
msgid ""
@@ -593,7 +593,7 @@ msgid ""
msgstr ""
"Pour appeler les méthodes sur des objets, vous pouvez simplifier davantage "
"en utilisant la fonction native :func:`getattr` pour récupérer les méthodes "
-"avec un nom donné : ::"
+"avec un nom donné ::"
#: ../Doc/faq/design.rst:333
msgid ""
@@ -612,8 +612,8 @@ msgid ""
"Can't you emulate threads in the interpreter instead of relying on an OS-"
"specific thread implementation?"
msgstr ""
-"Est-il possible d'émuler des *threads* dans l'interpréteur plutôt que se "
-"baser sur les implémentations spécifique aux OS ?"
+"Est-il possible d'émuler des fils d'exécution dans l'interpréteur plutôt que "
+"se baser sur les implémentations spécifique aux OS ?"
#: ../Doc/faq/design.rst:341
msgid ""
@@ -622,11 +622,11 @@ msgid ""
"almost random moments. Therefore, a complete threads implementation "
"requires thread support for C."
msgstr ""
-"Réponse 1: Malheureusement, l'interpréteur pousse au moins un block de pile "
+"Réponse 1 : Malheureusement, l'interpréteur pousse au moins un bloc de pile "
"C (*stack frame*) pour chaque bloc de pile de Python. Aussi, les extensions "
"peuvent rappeler dans Python à presque n'importe quel moment. Par "
-"conséquent, une implémentation complète des *thread* nécessiterai un support "
-"complet en C."
+"conséquent, une implémentation complète des fils d'exécution nécessiterai un "
+"support complet en C."
#: ../Doc/faq/design.rst:346
msgid ""
@@ -641,7 +641,7 @@ msgstr ""
#: ../Doc/faq/design.rst:351
msgid "Why can't lambda expressions contain statements?"
msgstr ""
-"Pourquoi les expressions lambda ne peuvent pas contenir d'instructions ?"
+"Pourquoi les expressions lambda ne peuvent pas contenir d'instructions ?"
#: ../Doc/faq/design.rst:353
msgid ""
@@ -673,7 +673,7 @@ msgstr ""
"fonction lambda au lieu d'une fonction définie localement est que vous "
"n'avez nullement besoin d'un nom pour la fonction -- Mais c'est juste une "
"variable locale à laquelle est affecté l'objet fonction (qui est exactement "
-"le même type d'objet qui donne une expression lambda) !"
+"le même type d'objet qui donne une expression lambda) !"
#: ../Doc/faq/design.rst:367
msgid "Can Python be compiled to machine code, C or some other language?"
@@ -688,10 +688,15 @@ msgid ""
"full Python language. For compiling to Java you can consider `VOC `_."
msgstr ""
+"`Cython `_ compile une version modifiée de Python avec "
+"des annotations optionnelles en extensions C. `Nuitka `_ est un nouveau compilateur de Python vers C++, visant à supporter le "
+"langage Python entièrement. Pour compiler en Java, vous pouvez regarder `VOC "
+"`_."
#: ../Doc/faq/design.rst:377
msgid "How does Python manage memory?"
-msgstr "Comment Python gère la mémoire ?"
+msgstr "Comment Python gère la mémoire ?"
#: ../Doc/faq/design.rst:379
msgid ""
@@ -708,7 +713,7 @@ msgstr ""
"`CPython`, utilise des compteurs de références afin de détecter des objets "
"inaccessibles et un autre mécanisme pour collecter les références "
"circulaires, exécutant périodiquement un algorithme de détection de cycles "
-"qui recherche les cycles inaccessibles et supprime les objets implqués. Le "
+"qui recherche les cycles inaccessibles et supprime les objets impliqués. Le "
"module :mod:`gc` fournit des fonctions pour lancer le ramasse-miettes, "
"d'obtenir des statistiques de débogage et ajuster ses paramètres."
@@ -733,7 +738,7 @@ msgid ""
msgstr ""
"Dans certaines implémentations de Python, le code suivant (qui marche "
"parfaitement avec *CPython*) aurait probablement manqué de descripteurs de "
-"fichiers::"
+"fichiers ::"
#: ../Doc/faq/design.rst:400
msgid ""
@@ -757,12 +762,12 @@ msgstr ""
"Si vous souhaitez écrire du code qui fonctionne avec n'importe quelle "
"implémentation de Python, vous devez explicitement fermer le fichier ou "
"utiliser l'instruction :keyword:`with` ; ceci fonctionnera indépendamment du "
-"système de gestion de la mémoire::"
+"système de gestion de la mémoire ::"
#: ../Doc/faq/design.rst:415
msgid "Why doesn't CPython use a more traditional garbage collection scheme?"
msgstr ""
-"Pourquoi CPython n'utilise-il pas un ramasse-miette plus traditionnel ?"
+"Pourquoi CPython n'utilise-il pas un ramasse-miette plus traditionnel ?"
#: ../Doc/faq/design.rst:417
msgid ""
@@ -790,16 +795,17 @@ msgid ""
msgstr ""
"Le *GC* classique devient également un problème lorsque Python est incorporé "
"dans d'autres applications. Bien que dans une application Python, il ne soit "
-"pas gênant de remplacer les fonctions malloc() et free() avec les versions "
-"fournies par la bibliothèque *GC*, une application incluant Python peut "
-"vouloir avoir ses propres implémentations de malloc() et free() et peut ne "
-"pas vouloir celles de Python. À l'heure actuelle, CPython fonctionne avec "
-"n'importe quelle implémentation correcte de malloc() et free()."
+"pas gênant de remplacer les fonctions ``malloc()`` et ``free()` avec les "
+"versions fournies par la bibliothèque *GC*, une application incluant Python "
+"peut vouloir avoir ses propres implémentations de ``malloc()`` et ``free()`` "
+"et peut ne pas vouloir celles de Python. À l'heure actuelle, CPython "
+"fonctionne avec n'importe quelle implémentation correcte de ``malloc()`` et "
+"``free()``."
#: ../Doc/faq/design.rst:432
msgid "Why isn't all memory freed when CPython exits?"
msgstr ""
-"Pourquoi toute la mémoire n'est pas libérée lorsque *CPython* s'arrête ?"
+"Pourquoi toute la mémoire n'est pas libérée lorsque *CPython* s'arrête ?"
#: ../Doc/faq/design.rst:434
msgid ""
@@ -810,8 +816,8 @@ msgid ""
"about these). Python is, however, aggressive about cleaning up memory on "
"exit and does try to destroy every single object."
msgstr ""
-"Les objets référencés depuis les espaces de noms globaux des modules Python "
-"ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
+"Les objets référencés depuis les espaces de nommage globaux des modules "
+"Python ne sont pas toujours désalloués lorsque Python s'arrête. Cela peut se "
"produire s'il y a des références circulaires. Il y a aussi certaines parties "
"de mémoire qui sont alloués par la bibliothèque C qui sont impossibles à "
"libérer (par exemple un outil comme *Purify* s'en plaindra). Python est, "
@@ -830,7 +836,7 @@ msgstr ""
#: ../Doc/faq/design.rst:446
msgid "Why are there separate tuple and list data types?"
msgstr ""
-"Pourquoi les *tuples* et les *list* sont deux types de données séparés ?"
+"Pourquoi les *tuples* et les *list* sont deux types de données séparés ?"
#: ../Doc/faq/design.rst:448
msgid ""
@@ -845,7 +851,7 @@ msgstr ""
"généralement utilisés de façons fondamentalement différentes. Les *tuples* "
"peuvent être considérés comme étant similaires aux dossiers en Pascal ou aux "
"structures en C; Ce sont de petites collections de données associées qui "
-"peuvent être de différents types qui sont utilisées sensemble. Par exemple, "
+"peuvent être de différents types qui sont utilisées ensemble. Par exemple, "
"un repère cartésien est correctement représenté comme un *tuple* de deux ou "
"trois nombres."
@@ -860,7 +866,7 @@ msgid ""
msgstr ""
"Les listes, ressemblent davantage à des tableaux dans d'autres langues. "
"Elles ont tendance à contenir un nombre variable d'objets de même type "
-"manipulés individuellement. Par exemple, ``os.listdir('.')`` retourne une "
+"manipulés individuellement. Par exemple, ``os.listdir('.')`` renvoie une "
"liste de chaînes représentant les fichiers dans le dossier courant. Les "
"fonctions travaillant sur cette sortie accepteraient généralement sans aucun "
"problème que vous ajoutiez un ou deux fichiers supplémentaire dans le "
@@ -876,7 +882,7 @@ msgid ""
msgstr ""
"Les *tuples* sont immuables, ce qui signifie que lorsqu'un *tuple* a été "
"créé, vous ne pouvez remplacer aucun de ses éléments par une nouvelle "
-"valeur. Les listes sont mutables, ce qui signifie que vous pouvez toujours "
+"valeur. Les listes sont muables, ce qui signifie que vous pouvez toujours "
"modifier les éléments d'une liste. Seuls des éléments immuables peuvent être "
"utilisés comme clés de dictionnaires, et donc de ``tuple`` et ``list`` seul "
"des *tuples* peuvent être utilisés comme clés."
@@ -984,7 +990,7 @@ msgid ""
msgstr ""
"L'implémentation de la table de hachage des dictionnaires utilise une valeur "
"de hachage calculée à partir de la valeur de la clé pour trouver la clé elle-"
-"même. Si la clé était un objet mutable, sa valeur peut changer, et donc son "
+"même. Si la clé était un objet muable, sa valeur peut changer, et donc son "
"hachage pourrait également changer. Mais toute personne modifiant l'objet "
"clé ne peut pas dire qu'elle a été utilisée comme une clé de dictionnaire. "
"Il ne peut déplacer l'entrée dans le dictionnaire. Ainsi, lorsque vous "
@@ -1007,7 +1013,7 @@ msgstr ""
#: ../Doc/faq/design.rst:521
msgid "Some unacceptable solutions that have been proposed:"
-msgstr "Certaines solutions insatisfaisantes qui ont été proposées :"
+msgstr "Certaines solutions insatisfaisantes qui ont été proposées :"
#: ../Doc/faq/design.rst:523
msgid ""
@@ -1016,7 +1022,7 @@ msgid ""
msgstr ""
"Les listes de hachage par leur adresse (*ID* de l'objet). Cela ne "
"fonctionne pas parce que si vous créez une nouvelle liste avec la même "
-"valeur, elle ne sera pas retrouvée; par exemple.::"
+"valeur, elle ne sera pas retrouvée; par exemple ::"
#: ../Doc/faq/design.rst:529
msgid ""
@@ -1024,10 +1030,10 @@ msgid ""
"the second line differs from that in the first line. In other words, "
"dictionary keys should be compared using ``==``, not using :keyword:`is`."
msgstr ""
-"cela soulèverait une exception de type *KeyError* car l'id de ``[1, 2]`` "
-"utilisée dans la deuxième ligne diffère de celle de la première ligne. En "
+"cela lèverait une exception de type *KeyError* car l'ID de ``[1, 2]`` "
+"utilisé dans la deuxième ligne diffère de celle de la première ligne. En "
"d'autres termes, les clés de dictionnaire doivent être comparées à l'aide du "
-"comparateur ``==`` et non à l'aide du :keyword:`is`."
+"comparateur ``==`` et non à l'aide du mot clé :keyword:`is`."
#: ../Doc/faq/design.rst:533
msgid ""
@@ -1036,7 +1042,7 @@ msgid ""
"copying code would run into an infinite loop."
msgstr ""
"Faire une copie lors de l'utilisation d'une liste en tant que clé. Cela ne "
-"fonctionne pas puisque la liste, étant un objet mutable, pourrait contenir "
+"fonctionne pas puisque la liste, étant un objet muable, pourrait contenir "
"une référence à elle-même ou avoir une boucle infinie au niveau du code "
"copié."
@@ -1047,6 +1053,11 @@ msgid ""
"by accident. It also invalidates an important invariant of dictionaries: "
"every value in ``d.keys()`` is usable as a key of the dictionary."
msgstr ""
+"Autoriser les listes en tant que clés, mais indiquer à l'utilisateur de ne "
+"pas les modifier. Cela permettrait un ensemble de bogues difficiles à suivre "
+"dans les programmes lorsque vous avez oublié ou modifié une liste par "
+"accident. Cela casse également un impératif important des dictionnaires : "
+"chaque valeur de ``d.keys()`` est utilisable comme clé du dictionnaire."
#: ../Doc/faq/design.rst:542
msgid ""
@@ -1057,6 +1068,14 @@ msgid ""
"read-only -- and again, self-referential objects could cause an infinite "
"loop."
msgstr ""
+"Marquer les listes comme étant en lecture seule une fois qu'elles sont "
+"utilisées comme clé de dictionnaire. Le problème est que ce n'est pas "
+"seulement l'objet de niveau supérieur qui pourrait changer sa valeur; vous "
+"pourriez utiliser un tuple contenant une liste comme clé. Utiliser "
+"n'importe quoi comme une clé dans un dictionnaire nécessiterait de marquer "
+"tous les objets accessibles à partir de là comme en lecture seule -- et "
+"encore une fois, les objets se faisant référence pourraient provoquer une "
+"boucle infinie."
#: ../Doc/faq/design.rst:548
msgid ""
@@ -1067,6 +1086,13 @@ msgid ""
"dictionary (or other hash based structure), remain fixed while the object is "
"in the dictionary (or other structure). ::"
msgstr ""
+"Il y a un truc pour contourner ceci si vous en avez besoin, mais utilisez-le "
+"à vos risques et périls. Vous pouvez encapsuler une structure mutable à "
+"l'intérieur d'une instance de classe qui a à la fois une méthode :meth:"
+"`__eq__` et :meth:`__hash__`. Vous devez ensuite vous assurer que la valeur "
+"de hachage pour tous ces objets *wrapper* qui résident dans un dictionnaire "
+"(ou une autre structure basée sur le hachage), restent fixes pendant que "
+"l'objet est dans le dictionnaire (ou une autre structure). ::"
#: ../Doc/faq/design.rst:572
msgid ""
@@ -1074,6 +1100,9 @@ msgid ""
"members of the list may be unhashable and also by the possibility of "
"arithmetic overflow."
msgstr ""
+"Notez que le calcul de hachage peut être compliqué car il est possible que "
+"certains membres de la liste peuvent être impossible à hacher et aussi par "
+"la possibilité de débordement arithmétique."
#: ../Doc/faq/design.rst:576
msgid ""
@@ -1083,6 +1112,11 @@ msgid ""
"not. If you fail to meet these restrictions dictionaries and other hash "
"based structures will misbehave."
msgstr ""
+"De plus, il faut toujours que, si ``o1 == o2`` (par exemple ``o1.__eq__(o2) "
+"vaut True``) alors ``hash(o1) == hash(o2)`` (par exemple, ``o1.__hash__() == "
+"o2.__hash__()``), que l’objet se trouve dans un dictionnaire ou pas. Si vous "
+"ne remplissez pas ces conditions, les dictionnaires et autres structures "
+"basées sur le hachage se comporteront mal."
#: ../Doc/faq/design.rst:581
msgid ""
@@ -1091,10 +1125,15 @@ msgid ""
"you are prepared to think hard about the requirements and the consequences "
"of not meeting them correctly. Consider yourself warned."
msgstr ""
+"Dans le cas de *ListWrapper*, chaque fois que l'objet *wrapper* est dans un "
+"dictionnaire, la liste encapsulée ne doit pas changer pour éviter les "
+"anomalies. Ne faites pas cela à moins que vous n’ayez pensé aux potentielles "
+"conséquences de ne pas satisfaire entièrement ces conditions. Vous avez été "
+"prévenus."
#: ../Doc/faq/design.rst:588
msgid "Why doesn't list.sort() return the sorted list?"
-msgstr ""
+msgstr "Pourquoi ``list.sort()`` ne renvoie pas la liste triée ?"
#: ../Doc/faq/design.rst:590
msgid ""
@@ -1105,6 +1144,12 @@ msgid ""
"when you need a sorted copy but also need to keep the unsorted version "
"around."
msgstr ""
+"Dans les situations où la performance est importante, faire une copie de la "
+"liste juste pour la trier serait un gaspillage. Par conséquent, :meth:`list."
+"sort` trie la liste en place. Afin de vous le rappeler, il ne retourne pas "
+"la liste triée. De cette façon, vous ne serez pas dupés en écrasant "
+"accidentellement une liste lorsque vous avez besoin d’une copie triée, mais "
+"vous devrez également garder sous la main la version non triée."
#: ../Doc/faq/design.rst:596
msgid ""
@@ -1113,10 +1158,16 @@ msgid ""
"it and returns it. For example, here's how to iterate over the keys of a "
"dictionary in sorted order::"
msgstr ""
+"Si vous souhaitez retourner une nouvelle liste, utilisez plutôt la fonction "
+"native :func:`sorted`. Cette fonction crée une nouvelle liste à partir d’un "
+"itérable fourni, la trie et la retourne. Par exemple, voici comment itérer "
+"sur les clefs d’un dictionnaire dans l’ordre trié ::"
#: ../Doc/faq/design.rst:606
msgid "How do you specify and enforce an interface spec in Python?"
msgstr ""
+"Comment spécifiez-vous et appliquez-vous une spécification d’interface en "
+"Python ?"
#: ../Doc/faq/design.rst:608
msgid ""
@@ -1125,6 +1176,10 @@ msgid ""
"module. Many feel that compile-time enforcement of interface specifications "
"helps in the construction of large programs."
msgstr ""
+"Une spécification d'interface pour un module fourni par des langages tels "
+"que C++ et Java décrit les prototypes pour les méthodes et les fonctions du "
+"module. Beaucoup estiment que la vérification au moment de la compilation "
+"des spécifications d'interface aide à la construction de grands programmes."
#: ../Doc/faq/design.rst:613
msgid ""
@@ -1135,6 +1190,13 @@ msgid ""
"`~collections.abc.Iterable`, :class:`~collections.abc.Container`, and :class:"
"`~collections.abc.MutableMapping`."
msgstr ""
+"Python 2.6 ajoute un module :mod:`abc` qui vous permet de définir des "
+"classes de base abstraites (ABCs). Vous pouvez ensuite utiliser :func:"
+"`isinstance` et :func:`issubclass` pour vérifier si une instance ou une "
+"classe implémente une ABC particulière. Le module :mod:`collections.abc` "
+"définit un ensemble d'ABCs utiles telles que :class:`~collections.abc."
+"Iterable`, :class:`~collections.abc.Container` et :class:`collections.abc."
+"MutableMapping`."
#: ../Doc/faq/design.rst:620
msgid ""
@@ -1142,6 +1204,10 @@ msgid ""
"obtained by an appropriate test discipline for components. There is also a "
"tool, PyChecker, which can be used to find problems due to subclassing."
msgstr ""
+"Pour Python, la plupart des avantages des spécifications d'interface peuvent "
+"être obtenus par une discipline de test appropriée pour les composants. Il "
+"existe aussi un outil, PyChecker, qui peut être utilisé pour trouver des "
+"problèmes d'héritage."
#: ../Doc/faq/design.rst:624
msgid ""
@@ -1154,6 +1220,15 @@ msgid ""
"be used to construct exhaustive test suites that exercise every line of code "
"in a module."
msgstr ""
+"Une bonne suite de tests pour un module peut à la fois fournir un test de "
+"non régression et servir de spécification d'interface de module ainsi qu'un "
+"ensemble d'exemples. De nombreux modules Python peuvent être exécutés en "
+"tant que script pour fournir un simple « auto-test ». Même les modules qui "
+"utilisent des interfaces externes complexes peuvent souvent être testés "
+"isolément à l'aide d'émulations triviales embryonnaires de l'interface "
+"externe. Les modules :mod:`doctest` et :mod:`UnitTest` ou des frameworks de "
+"test tiers peuvent être utilisés pour construire des suites de tests "
+"exhaustives qui éprouvent chaque ligne de code dans un module."
#: ../Doc/faq/design.rst:632
msgid ""
@@ -1165,6 +1240,15 @@ msgid ""
"test that your :meth:`append` implementation will actually do this "
"correctly, but it's trivial to check this property in a test suite."
msgstr ""
+"Une discipline de test appropriée peut aider à construire des applications "
+"complexes de grande taille en Python aussi bien que le feraient des "
+"spécifications d'interface. En fait, c'est peut être même mieux parce qu'une "
+"spécification d'interface ne peut pas tester certaines propriétés d'un "
+"programme. Par exemple, la méthode :meth:`Append` est censée ajouter de "
+"nouveaux éléments à la fin d'une liste « sur place » ; une spécification "
+"d'interface ne peut pas tester que votre implémentation de :meth:`append` va "
+"réellement le faire correctement, mais il est trivial de vérifier cette "
+"propriété dans une suite de tests."
#: ../Doc/faq/design.rst:640
msgid ""
@@ -1174,10 +1258,16 @@ msgid ""
"before you write any of the actual code. Of course Python allows you to be "
"sloppy and not write test cases at all."
msgstr ""
+"L'écriture des suites de tests est très utile, et vous voudrez peut-être "
+"concevoir votre code de manière à le rendre facilement testable. Une "
+"technique de plus en plus populaire, le développement dirigé par les tests, "
+"requiert d'écrire d'abord des éléments de la suite de tests, avant d'écrire "
+"le code réel. Bien sûr, Python vous permet d'être laxiste et de ne pas "
+"écrire de test du tout."
#: ../Doc/faq/design.rst:648
msgid "Why is there no goto?"
-msgstr "Pourquoi n'y a-t-il pas de goto en Python ?"
+msgstr "Pourquoi n'y a-t-il pas de ``goto`` en Python ?"
#: ../Doc/faq/design.rst:650
msgid ""
@@ -1186,11 +1276,11 @@ msgid ""
"all reasonable uses of the \"go\" or \"goto\" constructs of C, Fortran, and "
"other languages. For example::"
msgstr ""
-"Vous pouvez utiliser les exceptions afin de mettre en place un \"goto "
+"Vous pouvez utiliser les exceptions afin de mettre en place un \"``goto`` "
"structuré\" qui fonctionne même avec les appels de fonctions. Beaucoup de "
"personnes estiment que les exceptions peuvent émuler idéalement tout "
-"utilisation raisonnable des constructions \"go\" ou \"goto\" en C, en "
-"Fortran ou autres langages de programmation. Par exemple::"
+"utilisation raisonnable des constructions ``go`` ou ``goto`` en C, en "
+"Fortran ou autres langages de programmation. Par exemple ::"
#: ../Doc/faq/design.rst:665
msgid ""
@@ -1198,12 +1288,14 @@ msgid ""
"considered an abuse of goto anyway. Use sparingly."
msgstr ""
"Cela ne vous permet pas de sauter au milieu d'une boucle. Néanmoins, dans "
-"tous les cas cela est généralement considéré comme un abus de goto. À "
+"tous les cas cela est généralement considéré comme un abus de ``goto``. À "
"Utiliser avec parcimonie."
#: ../Doc/faq/design.rst:670
msgid "Why can't raw strings (r-strings) end with a backslash?"
msgstr ""
+"Pourquoi les chaînes de caractères brutes (r-strings) ne peuvent-elles pas "
+"se terminer par un *backslash* ?"
#: ../Doc/faq/design.rst:672
msgid ""
@@ -1211,6 +1303,9 @@ msgid ""
"unpaired backslash at the end escapes the closing quote character, leaving "
"an unterminated string."
msgstr ""
+"Plus précisément, elles ne peuvent pas se terminer par un nombre impair de "
+"*backslashes* : le *backslash* non appairé à la fin échappe le caractère de "
+"guillemet final, laissant une chaîne non terminée."
#: ../Doc/faq/design.rst:676
msgid ""
@@ -1221,23 +1316,36 @@ msgid ""
"pass on the string quote character by escaping it with a backslash. These "
"rules work well when r-strings are used for their intended purpose."
msgstr ""
+"Les chaînes brutes ont été conçues pour faciliter la création de données "
+"pour les processeurs de texte (principalement les moteurs d'expressions "
+"régulières) qui veulent faire leur propre traitement d'échappement "
+"d'*antislashes*. Ces processeurs considèrent un *antislash* de fin non-"
+"appairé comme une erreur, alors les chaînes brutes ne le permettent pas. En "
+"retour, elles vous permettent de transmettre le caractère de citation de la "
+"chaîne en l'échappant avec un *antislash*. Ces règles fonctionnent bien "
+"lorsque les chaînes brutes sont utilisées pour leur but premier."
#: ../Doc/faq/design.rst:683
msgid ""
"If you're trying to build Windows pathnames, note that all Windows system "
"calls accept forward slashes too::"
msgstr ""
+"Si vous essayez de construire des chemins d'accès Windows, notez que tous "
+"les appels système Windows acceptent également les *slashes* \"classiques"
+"\" ::"
#: ../Doc/faq/design.rst:688
msgid ""
"If you're trying to build a pathname for a DOS command, try e.g. one of ::"
msgstr ""
+"Si vous essayez de construire un chemin d'accès pour une commande DOS, "
+"essayez par exemple l'un de ceux-là ::"
#: ../Doc/faq/design.rst:696
msgid "Why doesn't Python have a \"with\" statement for attribute assignments?"
msgstr ""
-"Pourquoi la déclaration \"with\" pour les assignations d'attributs n'existe "
-"pas en Python ?"
+"Pourquoi la déclaration ``with`` pour les assignations d'attributs n'existe "
+"pas en Python ?"
#: ../Doc/faq/design.rst:698
msgid ""
@@ -1245,9 +1353,9 @@ msgid ""
"code on the entrance and exit from the block. Some language have a "
"construct that looks like this::"
msgstr ""
-"Python a une instruction \"with\" qui encapsule l'exécution d'un bloc, en "
+"Python a une instruction ``with`` qui encapsule l'exécution d'un bloc, en "
"appelant le code sur l'entrée et la sortie du bloc. Certains langages "
-"possèdent une construction qui ressemble à ceci::"
+"possèdent une construction qui ressemble à ceci ::"
#: ../Doc/faq/design.rst:706
msgid "In Python, such a construct would be ambiguous."
@@ -1282,7 +1390,7 @@ msgstr ""
#: ../Doc/faq/design.rst:719
msgid "For instance, take the following incomplete snippet::"
-msgstr ""
+msgstr "Prenons par exemple l'extrait incomplet suivant ::"
#: ../Doc/faq/design.rst:725
msgid ""
@@ -1292,6 +1400,11 @@ msgid ""
"variable named \"x\", will it be used inside the with block? As you see, "
"the dynamic nature of Python makes such choices much harder."
msgstr ""
+"L'extrait suppose que \"a\" doit avoir un attribut membre appelé \"x\". "
+"Néanmoins, il n'y a rien en Python qui en informe l'interpréteur. Que se "
+"passe-t-il si \"a\" est, disons, un entier ? Si une variable globale nommée "
+"\"x\" existe, sera-t-elle utilisée dans le bloc ``with`` ? Comme vous "
+"voyez, la nature dynamique du Python rend ces choix beaucoup plus difficiles."
#: ../Doc/faq/design.rst:731
msgid ""
@@ -1299,10 +1412,13 @@ msgid ""
"code volume) can, however, easily be achieved in Python by assignment. "
"Instead of::"
msgstr ""
+"L'avantage principal de ``with`` et des fonctionnalités de langage "
+"similaires (réduction du volume de code) peut, cependant, être facilement "
+"réalisé en Python par assignation. Au lieu de ::"
#: ../Doc/faq/design.rst:738
msgid "write this::"
-msgstr ""
+msgstr "écrivez ceci ::"
#: ../Doc/faq/design.rst:745
msgid ""
@@ -1310,20 +1426,27 @@ msgid ""
"bindings are resolved at run-time in Python, and the second version only "
"needs to perform the resolution once."
msgstr ""
+"Cela a également pour effet secondaire d'augmenter la vitesse d'exécution "
+"car les liaisons de noms sont résolues au moment de l'exécution en Python, "
+"et la deuxième version n'a besoin d'exécuter la résolution qu'une seule fois."
#: ../Doc/faq/design.rst:751
msgid "Why are colons required for the if/while/def/class statements?"
msgstr ""
+"Pourquoi les deux-points sont-ils nécessaires pour les déclarations ``if/"
+"while/def/class`` ?"
#: ../Doc/faq/design.rst:753
msgid ""
"The colon is required primarily to enhance readability (one of the results "
"of the experimental ABC language). Consider this::"
msgstr ""
+"Le deux-points est principalement nécessaires pour améliorer la lisibilité "
+"(l'un des résultats du langage expérimental ABC). Considérez ceci ::"
#: ../Doc/faq/design.rst:759
msgid "versus ::"
-msgstr ""
+msgstr "versus ::"
#: ../Doc/faq/design.rst:764
msgid ""
@@ -1331,6 +1454,9 @@ msgid ""
"colon sets off the example in this FAQ answer; it's a standard usage in "
"English."
msgstr ""
+"Remarquez comment le deuxième est un peu plus facile à lire. Remarquez "
+"aussi comment un deux-points introduit l'exemple dans cette réponse à la "
+"FAQ ; c'est un usage standard en anglais."
#: ../Doc/faq/design.rst:767
msgid ""
@@ -1339,16 +1465,23 @@ msgid ""
"needs to be increased instead of having to do a more elaborate parsing of "
"the program text."
msgstr ""
+"Une autre raison mineure est que les deux-points facilitent la tâche des "
+"éditeurs avec coloration syntaxique ; ils peuvent rechercher les deux-points "
+"pour décider quand l'indentation doit être augmentée au lieu d'avoir à faire "
+"une analyse plus élaborée du texte du programme."
#: ../Doc/faq/design.rst:773
msgid "Why does Python allow commas at the end of lists and tuples?"
msgstr ""
+"Pourquoi Python permet-il les virgules à la fin des listes et des tuples ?"
#: ../Doc/faq/design.rst:775
msgid ""
"Python lets you add a trailing comma at the end of lists, tuples, and "
"dictionaries::"
msgstr ""
+"Python vous permet d'ajouter une virgule à la fin des listes, des tuples et "
+"des dictionnaires ::"
#: ../Doc/faq/design.rst:786
msgid "There are several reasons to allow this."
@@ -1361,12 +1494,19 @@ msgid ""
"remember to add a comma to the previous line. The lines can also be "
"reordered without creating a syntax error."
msgstr ""
+"Lorsque vous avez une valeur littérale pour une liste, un tuple ou un "
+"dictionnaire réparti sur plusieurs lignes, il est plus facile d'ajouter plus "
+"d'éléments parce que vous n'avez pas besoin de vous rappeler d'ajouter une "
+"virgule à la ligne précédente. Les lignes peuvent aussi être réorganisées "
+"sans créer une erreur de syntaxe."
#: ../Doc/faq/design.rst:793
msgid ""
"Accidentally omitting the comma can lead to errors that are hard to "
"diagnose. For example::"
msgstr ""
+"L'omission accidentelle de la virgule peut entraîner des erreurs difficiles "
+"à diagnostiquer, par exemple ::"
#: ../Doc/faq/design.rst:803
msgid ""
@@ -1374,12 +1514,16 @@ msgid ""
"\"fee\", \"fiefoo\" and \"fum\". Always adding the comma avoids this source "
"of error."
msgstr ""
+"Cette liste a l'air d'avoir quatre éléments, mais elle en contient en fait "
+"trois : \"*fee*\", \"*fiefoo*\" et \"*fum*\". Toujours ajouter la virgule "
+"permet d'éviter cette source d'erreur."
#: ../Doc/faq/design.rst:806
msgid ""
"Allowing the trailing comma may also make programmatic code generation "
"easier."
msgstr ""
+"Permettre la virgule de fin peut également faciliter la génération de code."
#~ msgid "Practical answer:"
#~ msgstr "Réponse concrète :"
diff --git a/faq/extending.po b/faq/extending.po
index ca93538fb..eb627b4ef 100644
--- a/faq/extending.po
+++ b/faq/extending.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-02-15 00:37+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,11 @@ msgstr ""
#: ../Doc/faq/extending.rst:3
msgid "Extending/Embedding FAQ"
-msgstr "FAQ Extension/Intégration"
+msgstr "FAQ extension/intégration"
+
+#: ../Doc/faq/extending.rst:6
+msgid "Contents"
+msgstr "Sommaire"
#: ../Doc/faq/extending.rst:16
msgid "Can I create my own functions in C?"
@@ -31,10 +35,15 @@ msgid ""
"exceptions and even new types in C. This is explained in the document :ref:"
"`extending-index`."
msgstr ""
+"Oui, vous pouvez créer des modules intégrés contenant des fonctions, des "
+"variables, des exceptions et même de nouveaux types en C. Ceci est expliqué "
+"dans le document :ref:`extending-index`."
#: ../Doc/faq/extending.rst:22
msgid "Most intermediate or advanced Python books will also cover this topic."
msgstr ""
+"La plupart des livres Python intermédiaires ou avancés couvrent également ce "
+"sujet."
#: ../Doc/faq/extending.rst:26
msgid "Can I create my own functions in C++?"
@@ -73,6 +82,11 @@ msgid ""
"Cython and Pyrex make it possible to write an extension without having to "
"learn Python's C API."
msgstr ""
+"`Cython `_ et son cousin `Pyrex `_ sont des compilateurs qui "
+"acceptent une forme légèrement modifiée de Python et produisent du code C "
+"correspondant. Cython et Pyrex permettent d'écrire une extension sans avoir "
+"à connaître l'API C de Python."
#: ../Doc/faq/extending.rst:50
msgid ""
@@ -81,20 +95,29 @@ msgid ""
"and functions with a tool such as `SWIG `_. `SIP "
"`__, `CXX `_ `Boost `_, or `Weave `_ "
-"are also alternatives for wrapping C++ libraries."
-msgstr ""
+"html>`_, or `Weave `_ are also alternatives "
+"for wrapping C++ libraries."
+msgstr ""
+"Si vous avez besoin d'accéder à l'interface d'une bibliothèque C ou C++ pour "
+"laquelle aucune extension Python n'existe à ce jour, vous pouvez essayer "
+"d'encapsuler les types de données et fonctions de la bibliothèque avec un "
+"outil tel que `SWIG `_. `SIP `__, `CXX `_, `Boost `_ ou "
+"`Weave `_ sont également des alternatives "
+"pour encapsuler des bibliothèques C++."
#: ../Doc/faq/extending.rst:61
msgid "How can I execute arbitrary Python statements from C?"
msgstr ""
+"Comment puis-je exécuter des instructions quelconques Python à partir de C ?"
#: ../Doc/faq/extending.rst:63
msgid ""
"The highest-level function to do this is :c:func:`PyRun_SimpleString` which "
"takes a single string argument to be executed in the context of the module "
-"``__main__`` and returns 0 for success and -1 when an exception occurred "
-"(including ``SyntaxError``). If you want more control, use :c:func:"
+"``__main__`` and returns ``0`` for success and ``-1`` when an exception "
+"occurred (including ``SyntaxError``). If you want more control, use :c:func:"
"`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` in ``Python/"
"pythonrun.c``."
msgstr ""
@@ -102,6 +125,7 @@ msgstr ""
#: ../Doc/faq/extending.rst:72
msgid "How can I evaluate an arbitrary Python expression from C?"
msgstr ""
+"Comment puis-je évaluer une expression quelconque de Python à partir de C ?"
#: ../Doc/faq/extending.rst:74
msgid ""
@@ -109,10 +133,13 @@ msgid ""
"start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it "
"and returns its value."
msgstr ""
+"Appelez la fonction :c:func:`PyRun_String` de la question précédente avec le "
+"symbole de départ :c:data:`Py_eval_input` ; il analyse une expression, "
+"l'évalue et renvoie sa valeur."
#: ../Doc/faq/extending.rst:80
msgid "How do I extract C values from a Python object?"
-msgstr ""
+msgstr "Comment puis-je extraire des donnés en C d'un objet Python ?"
#: ../Doc/faq/extending.rst:82
msgid ""
@@ -121,6 +148,10 @@ msgid ""
"specified index. Lists have similar functions, :c:func:`PyListSize` and :c:"
"func:`PyList_GetItem`."
msgstr ""
+"Cela dépend du type d'objet. Si c'est un tuple, :c:func:`PyTuple_Size` "
+"renvoie sa longueur et :c:func:`PyTuple_GetItem` renvoie l'élément à l'index "
+"spécifié. Les listes ont des fonctions similaires, :c:func:`PyListSize` et :"
+"c:func:`PyList_GetItem`."
#: ../Doc/faq/extending.rst:87
msgid ""
@@ -129,6 +160,10 @@ msgid ""
"Note that Python bytes objects may contain null bytes so C's :c:func:"
"`strlen` should not be used."
msgstr ""
+"Pour les bytes, :c:func:`PyBytes_Size` renvoie sa longueur et :c:func:"
+"`PyBytes_AsStringAndSize` fournit un pointeur vers sa valeur et sa longueur. "
+"Notez que les objets bytes en Python peuvent contenir des valeurs nulles, "
+"c'est pourquoi il ne faut pas utiliser la fonction C :c:func:`strlen`."
#: ../Doc/faq/extending.rst:92
msgid ""
@@ -146,18 +181,26 @@ msgid ""
"as many other useful protocols such as numbers (:c:func:`PyNumber_Index` et "
"al.) and mappings in the PyMapping APIs."
msgstr ""
+"Il y a aussi une API de haut niveau pour les objets Python qui est fournie "
+"par l'interface dite « abstraite » — voir ``Include/abstract.h`` pour plus "
+"de détails. Elle permet l'interfaçage avec tout type de séquence Python en "
+"utilisant des appels tels que :c:func:`PySequence_Length`, :c:func:"
+"`PySequence_GetItem`, etc. ainsi que de nombreux autres protocoles utiles "
+"tels que les nombres (:c:func:`PyNumber_Index` et autres) et les "
+"correspondances dans les APIs PyMapping."
#: ../Doc/faq/extending.rst:104
msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?"
msgstr ""
+"Comment utiliser Py_BuildValue() pour créer un tuple de longueur définie ?"
#: ../Doc/faq/extending.rst:106
msgid "You can't. Use :c:func:`PyTuple_Pack` instead."
-msgstr ""
+msgstr "Vous ne pouvez pas. Utilisez :c:func:`PyTuple_Pack` à la place."
#: ../Doc/faq/extending.rst:110
msgid "How do I call an object's method from C?"
-msgstr ""
+msgstr "Comment puis-je appeler la méthode d'un objet à partir de C ?"
#: ../Doc/faq/extending.rst:112
msgid ""
@@ -166,6 +209,10 @@ msgid ""
"to call, a format string like that used with :c:func:`Py_BuildValue`, and "
"the argument values::"
msgstr ""
+"La fonction :c:func:`PyObject_CallMethod` peut être utilisée pour appeler la "
+"méthode d'un objet. Les paramètres sont l'objet, le nom de la méthode à "
+"appeler, une chaîne de caractères comme celle utilisée pour :c:func:"
+"`Py_BuildValue` et les valeurs des arguments ::"
#: ../Doc/faq/extending.rst:121
msgid ""
@@ -173,12 +220,17 @@ msgid ""
"defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the "
"return value."
msgstr ""
+"Cela fonctionne pour tous les objets qui ont des méthodes — qu'elles soient "
+"intégrées ou définies par l'utilisateur. Vous êtes responsable de « :c:func:"
+"`Py_DECREF`\\ *er* » la valeur de retour à la fin."
#: ../Doc/faq/extending.rst:124
msgid ""
"To call, e.g., a file object's \"seek\" method with arguments 10, 0 "
"(assuming the file object pointer is \"f\")::"
msgstr ""
+"Pour appeler, p. ex., la méthode *seek* d'un objet *file* avec les arguments "
+"10, 0 (en supposant que le pointeur de l'objet fichier est *f*) ::"
#: ../Doc/faq/extending.rst:135
msgid ""
@@ -187,12 +239,18 @@ msgid ""
"format, and to call a function with one argument, surround the argument in "
"parentheses, e.g. \"(i)\"."
msgstr ""
+"Notez que :c:func:`PyObject_CallObject` veut *toujours* un tuple comme liste "
+"d'arguments. Aussi, pour appeler une fonction sans arguments, utilisez "
+"\"()\" pour être conforme au type et, pour appeler une fonction avec un "
+"paramètre, entourez-le de parenthèses, p. ex. \"(i)\"."
#: ../Doc/faq/extending.rst:142
msgid ""
"How do I catch the output from PyErr_Print() (or anything that prints to "
"stdout/stderr)?"
msgstr ""
+"Comment puis-je récupérer la sortie de ``PyErr_Print()`` (ou tout ce qui "
+"s'affiche sur *stdout*/*stderr*) ?"
#: ../Doc/faq/extending.rst:144
msgid ""
@@ -201,22 +259,29 @@ msgid ""
"print_error, or just allow the standard traceback mechanism to work. Then, "
"the output will go wherever your ``write()`` method sends it."
msgstr ""
+"Dans le code Python, définissez un objet qui possède la méthode ``write()``. "
+"Affectez cet objet à :data:`sys.stdout` et :data:`sys.stderr`. Appelez "
+"*print_error* ou faites simplement en sorte que le mécanisme standard de "
+"remontée des erreurs fonctionne. Ensuite, la sortie sera dirigée vers "
+"l'endroit où votre méthode ``write()`` écrit."
#: ../Doc/faq/extending.rst:149
msgid "The easiest way to do this is to use the :class:`io.StringIO` class:"
msgstr ""
+"La façon la plus simple consiste à utiliser la classe :class:`io.StringIO` :"
#: ../Doc/faq/extending.rst:161
msgid "A custom object to do the same would look like this:"
msgstr ""
+"Le code d'un objet à la fonctionnalité similaire ressemblerait à ceci :"
#: ../Doc/faq/extending.rst:182
msgid "How do I access a module written in Python from C?"
-msgstr ""
+msgstr "Comment accéder à un module écrit en Python à partir de C ?"
#: ../Doc/faq/extending.rst:184
msgid "You can get a pointer to the module object as follows::"
-msgstr ""
+msgstr "Vous pouvez obtenir un pointeur sur l'objet module comme suit ::"
#: ../Doc/faq/extending.rst:188
msgid ""
@@ -226,22 +291,32 @@ msgid ""
"module into any namespace -- it only ensures it has been initialized and is "
"stored in :data:`sys.modules`."
msgstr ""
+"Si le module n'a pas encore été importé (c.-à-d. qu'il n'est pas encore "
+"présent dans :data:`sys.modules`), cela initialise le module ; sinon il "
+"renvoie simplement la valeur de ``sys.modules[\"\"]``. Notez "
+"qu'il n'inscrit le module dans aucun espace de nommage — il s'assure "
+"seulement qu'il a été initialisé et qu'il est stocké dans :data:`sys."
+"modules`."
#: ../Doc/faq/extending.rst:194
msgid ""
"You can then access the module's attributes (i.e. any name defined in the "
"module) as follows::"
msgstr ""
+"Vous pouvez alors accéder aux attributs du module (c.-à-d. à tout nom défini "
+"dans le module) comme suit ::"
#: ../Doc/faq/extending.rst:199
msgid ""
"Calling :c:func:`PyObject_SetAttrString` to assign to variables in the "
"module also works."
msgstr ""
+"Appeler :c:func:`PyObject_SetAttrString` pour assigner des valeurs aux "
+"variables du module fonctionne également."
#: ../Doc/faq/extending.rst:204
msgid "How do I interface to C++ objects from Python?"
-msgstr ""
+msgstr "Comment s'interfacer avec les objets C++ depuis Python ?"
#: ../Doc/faq/extending.rst:206
msgid ""
@@ -252,14 +327,22 @@ msgid ""
"building a new Python type around a C structure (pointer) type will also "
"work for C++ objects."
msgstr ""
+"Selon vos besoins, de nombreuses approches sont possibles. Pour le faire "
+"manuellement, commencez par lire :ref:`le document \"Extension et intégration"
+"\" `. Sachez que pour le système d'exécution Python, il n'y "
+"a pas beaucoup de différence entre C et C++ — donc la méthode pour "
+"construire un nouveau type Python à partir d'une structure C (pointeur) "
+"fonctionne également avec des objets en C++."
#: ../Doc/faq/extending.rst:212
msgid "For C++ libraries, see :ref:`c-wrapper-software`."
-msgstr ""
+msgstr "Pour les bibliothèques C++, voir :ref:`c-wrapper-software`."
#: ../Doc/faq/extending.rst:216
msgid "I added a module using the Setup file and the make fails; why?"
msgstr ""
+"J'ai ajouté un module en utilisant le fichier *Setup* et la compilation "
+"échoue ; pourquoi ?"
#: ../Doc/faq/extending.rst:218
msgid ""
@@ -267,30 +350,40 @@ msgid ""
"fails. (Fixing this requires some ugly shell script hackery, and this bug "
"is so minor that it doesn't seem worth the effort.)"
msgstr ""
+"Le fichier *Setup* doit se terminer par une ligne vide, s'il n'y a pas de "
+"ligne vide, le processus de compilation échoue (ce problème peut se régler "
+"en bidouillant un script shell, et ce bogue est si mineur qu'il ne mérite "
+"pas qu'on s'y attarde)."
#: ../Doc/faq/extending.rst:224
msgid "How do I debug an extension?"
-msgstr ""
+msgstr "Comment déboguer une extension ?"
#: ../Doc/faq/extending.rst:226
msgid ""
"When using GDB with dynamically loaded extensions, you can't set a "
"breakpoint in your extension until your extension is loaded."
msgstr ""
+"Lorsque vous utilisez GDB avec des extensions chargées dynamiquement, vous "
+"ne pouvez pas placer de point d'arrêt dans votre extension tant que celle-ci "
+"n'est pas chargée."
#: ../Doc/faq/extending.rst:229
msgid "In your ``.gdbinit`` file (or interactively), add the command:"
msgstr ""
+"Dans votre fichier ``.gdbinit`` (ou manuellement), ajoutez la commande :"
#: ../Doc/faq/extending.rst:235
msgid "Then, when you run GDB:"
-msgstr ""
+msgstr "Ensuite, lorsque vous exécutez GDB :"
#: ../Doc/faq/extending.rst:247
msgid ""
"I want to compile a Python module on my Linux system, but some files are "
"missing. Why?"
msgstr ""
+"Je veux compiler un module Python sur mon système Linux, mais il manque "
+"certains fichiers. Pourquoi ?"
#: ../Doc/faq/extending.rst:249
msgid ""
@@ -298,18 +391,25 @@ msgid ""
"{x}/config/` directory, which contains various files required for compiling "
"Python extensions."
msgstr ""
+"La plupart des versions pré-compilées de Python n'incluent pas le "
+"répertoire :file:`/usr/lib/python2.{x}/config/`, qui contient les différents "
+"fichiers nécessaires à la compilation des extensions Python."
#: ../Doc/faq/extending.rst:253
msgid "For Red Hat, install the python-devel RPM to get the necessary files."
msgstr ""
+"Pour Red Hat, installez le RPM *python-devel* pour obtenir les fichiers "
+"nécessaires."
#: ../Doc/faq/extending.rst:255
msgid "For Debian, run ``apt-get install python-dev``."
-msgstr ""
+msgstr "Pour Debian, exécutez ``apt-get install python-dev``."
#: ../Doc/faq/extending.rst:259
msgid "How do I tell \"incomplete input\" from \"invalid input\"?"
msgstr ""
+"Comment distinguer une « entrée incomplète » (*incomplete input*) d'une "
+"« entrée invalide » (*invalid input*) ?"
#: ../Doc/faq/extending.rst:261
msgid ""
@@ -319,12 +419,19 @@ msgid ""
"parentheses or triple string quotes), but it gives you a syntax error "
"message immediately when the input is invalid."
msgstr ""
+"Parfois vous souhaitez émuler le comportement de l'interpréteur interactif "
+"Python, quand il vous donne une invite de continuation lorsque l'entrée est "
+"incomplète (par exemple, vous avez tapé le début d'une instruction \"if\" ou "
+"vous n'avez pas fermé vos parenthèses ou triple guillemets) mais il vous "
+"renvoie immédiatement une erreur syntaxique quand la saisie est incorrecte."
#: ../Doc/faq/extending.rst:267
msgid ""
"In Python you can use the :mod:`codeop` module, which approximates the "
"parser's behavior sufficiently. IDLE uses this, for example."
msgstr ""
+"En Python, vous pouvez utiliser le module :mod:`codeop`, qui se rapproche "
+"assez du comportement de l'analyseur. Par exemple, IDLE l'utilise."
#: ../Doc/faq/extending.rst:270
msgid ""
@@ -334,6 +441,12 @@ msgid ""
"to point at your custom input function. See ``Modules/readline.c`` and "
"``Parser/myreadline.c`` for more hints."
msgstr ""
+"La façon la plus simple de le faire en C est d'appeler :c:func:"
+"`PyRun_InteractiveLoop` (peut-être dans un autre fil d'exécution) et laisser "
+"l'interpréteur Python gérer l'entrée pour vous. Vous pouvez également "
+"définir :c:func:`PyOS_ReadlineFunctionPointer` pour pointer vers votre "
+"fonction d'entrée personnalisée. Voir ``Modules/readline.c`` et ``Parser/"
+"myreadline.c`` pour plus de conseils."
#: ../Doc/faq/extending.rst:276
msgid ""
@@ -356,10 +469,21 @@ msgid ""
"\". Here is a complete example using the GNU readline library (you may want "
"to ignore **SIGINT** while calling readline())::"
msgstr ""
+"Une autre solution est d'essayer de compiler la chaîne reçue avec :c:func:"
+"`Py_CompileString`. Si cela se compile sans erreur, essayez d'exécuter "
+"l'objet code renvoyé en appelant :c:func:`PyEval_EvalCode`. Sinon, "
+"enregistrez l'entrée pour plus tard. Si la compilation échoue, vérifiez s'il "
+"s'agit d'une erreur ou s'il faut juste plus de données — en extrayant la "
+"chaîne de message du tuple d'exception et en la comparant à la chaîne *"
+"\"unexpected EOF while parsing\"*. Voici un exemple complet d'utilisation de "
+"la bibliothèque *readline* de GNU (il vous est possible d'ignorer **SIGINT** "
+"lors de l'appel à ``readline()``) ::"
#: ../Doc/faq/extending.rst:430
msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?"
msgstr ""
+"Comment puis-je trouver les symboles g++ indéfinis ``__builtin_new`` ou "
+"``__pure_virtual`` ?"
#: ../Doc/faq/extending.rst:432
msgid ""
@@ -367,18 +491,27 @@ msgid ""
"it using g++ (change LINKCC in the Python Modules Makefile), and link your "
"extension module using g++ (e.g., ``g++ -shared -o mymodule.so mymodule.o``)."
msgstr ""
+"Pour charger dynamiquement les modules d'extension g++, vous devez "
+"recompiler Python, effectuer l'édition de liens en utilisant g++ (modifiez "
+"*LINKCC* dans le *Python Modules Makefile*), et effectuer l'édition de liens "
+"de votre module d'extension avec g++ (par exemple, ``g++ -shared -o mymodule."
+"so mymodule.o``)."
#: ../Doc/faq/extending.rst:438
msgid ""
"Can I create an object class with some methods implemented in C and others "
"in Python (e.g. through inheritance)?"
msgstr ""
+"Puis-je créer une classe d'objets avec certaines méthodes implémentées en C "
+"et d'autres en Python (p. ex. en utilisant l'héritage) ?"
#: ../Doc/faq/extending.rst:440
msgid ""
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
"`list`, :class:`dict`, etc."
msgstr ""
+"Oui, vous pouvez hériter de classes intégrées telles que :class:`int`, :"
+"class:`list`, :class:`dict`, etc."
#: ../Doc/faq/extending.rst:443
msgid ""
@@ -386,3 +519,6 @@ msgid ""
"html) provides a way of doing this from C++ (i.e. you can inherit from an "
"extension class written in C++ using the BPL)."
msgstr ""
+"La bibliothèque *Boost Python Library* (BPL, http://www.boost.org/libs/"
+"python/doc/index.html) fournit un moyen de le faire depuis C++ (c.-à-d. que "
+"vous pouvez hériter d'une classe d'extension écrite en C++ en utilisant BPL)."
diff --git a/faq/general.po b/faq/general.po
index 5340867e7..70b871155 100644
--- a/faq/general.po
+++ b/faq/general.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-09-12 13:37+0200\n"
-"PO-Revision-Date: 2017-09-12 13:41+0200\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-06-10 16:25+0200\n"
"Last-Translator: Julien Palard \n"
"Language-Team: \n"
"Language: fr\n"
@@ -19,11 +19,15 @@ msgstr ""
#: ../Doc/faq/general.rst:5
msgid "General Python FAQ"
-msgstr "FAQ Générale sur Python"
+msgstr "FAQ générale sur Python"
+
+#: ../Doc/faq/general.rst:8
+msgid "Contents"
+msgstr "Sommaire"
#: ../Doc/faq/general.rst:13
msgid "General Information"
-msgstr "Informations Générales"
+msgstr "Informations générales"
#: ../Doc/faq/general.rst:16
msgid "What is Python?"
@@ -94,8 +98,8 @@ msgstr ""
#: ../Doc/faq/general.rst:47
msgid "Are there copyright restrictions on the use of Python?"
msgstr ""
-"Y'a-t-il des restrictions liées à la propriété intelectuelle quant à "
-"l'utilisation de Python ?"
+"Existe-il des restrictions liées à la propriété intellectuelle quant à "
+"l'utilisation de Python ?"
#: ../Doc/faq/general.rst:49
msgid ""
@@ -258,7 +262,7 @@ msgid ""
"filesystems, TCP/IP sockets). Look at the table of contents for :ref:"
"`library-index` to get an idea of what's available. A wide variety of third-"
"party extensions are also available. Consult `the Python Package Index "
-"`_ to find packages of interest to you."
+"`_ to find packages of interest to you."
msgstr ""
"Le langage vient avec une bibliothèque standard importante qui couvre des "
"domaines tels que le traitement des chaînes de caractères (expressions "
@@ -266,11 +270,11 @@ msgstr ""
"protocoles Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, script CGI), "
"ingénierie logicielle (tests unitaires, enregistrement, analyse de code "
"Python), et interfaces pour systèmes d'exploitation (appels système, système "
-"de fichiers, *socket* TCP/IP). Regardez la table des matières :ref:`library-"
-"index` pour avoir une idée de ce qui est disponible. Une gande variété de "
-"greffons tiers existent aussi. Consultez `le sommaire des paquets Python "
-"`_ pour trouver les paquets qui pourraient "
-"vous intéresser."
+"de fichiers, connecteurs TCP/IP). Regardez la table des matières :ref:"
+"`library-index` pour avoir une idée de ce qui est disponible. Une grande "
+"variété de greffons tiers existent aussi. Consultez `le sommaire des paquets "
+"Python `_ pour trouver les paquets qui pourraient vous "
+"intéresser."
#: ../Doc/faq/general.rst:125
msgid "How does the Python version numbering scheme work?"
@@ -302,10 +306,10 @@ msgid ""
msgstr ""
"Toutes les sorties ne concernent pas la correction de bogues. A l'approche "
"de la sortie d'une nouvelle version majeure, une série de versions de "
-"développement sont créées, dénommées alpha, beta, *release candidate*. Les "
-"alphas sont des versions primaires dans lesquelles les interfaces ne sont "
-"pas encore finalisées; ce n'est pas inattendu de voir des changements "
-"d'interface entre deux versions alpha. Les betas sont plus stables, "
+"développement sont créées, dénommées *alpha*, *beta*, *release candidate*. "
+"Les alphas sont des versions primaires dans lesquelles les interfaces ne "
+"sont pas encore finalisées; ce n'est pas inattendu de voir des changements "
+"d'interface entre deux versions alpha. Les *betas* sont plus stables, "
"préservent les interfaces existantes mais peuvent ajouter de nouveaux "
"modules, les *release candidate* sont figées, elles ne font aucun changement "
"à l'exception de ceux nécessaires pour corriger des bogues critiques."
@@ -319,13 +323,13 @@ msgid ""
"words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which "
"precede versions labeled 2.0cN, and *those* precede 2.0."
msgstr ""
-"Les versions alpha, beta et *release candidate* ont un suffixe "
+"Les versions *alpha*, *beta* et *release candidate* ont un suffixe "
"supplémentaire. Le suffixe pour une version alpha est « aN » où N est un "
-"petit nombre, le suffixe pour une version beta est « bN » où N est un petit "
+"petit nombre, le suffixe pour une version *beta* est *bN* où N est un petit "
"nombre, et le suffixe pour une *release candidate* est « cN » où N est un "
-"petit nombre. En d'autres mots, toutes les versions nommées 2.0.aN précèdent "
-"les versions 2.0.bN, qui elles-mêmes précèdent 2.0cN, et *celles-ci* "
-"précèdent la version 2.0."
+"petit nombre. En d'autres mots, toutes les versions nommées *2.0.aN* "
+"précèdent les versions *2.0.bN*, qui elles-mêmes précèdent 2.0cN, et *celles-"
+"ci* précèdent la version 2.0."
#: ../Doc/faq/general.rst:148
msgid ""
@@ -339,7 +343,7 @@ msgstr ""
"exemple « 2.2+». Ces versions sont non distribuées, construites directement "
"depuis le dépôt de développement de CPython. En pratique, après la sortie "
"finale d'une version mineure, la version est augmentée à la prochaine "
-"version mineure, qui devient la version « a0 », c'est-à-dire « 2.4a0 »."
+"version mineure, qui devient la version *a0*, c'est-à-dire *2.4a0*."
#: ../Doc/faq/general.rst:153
msgid ""
@@ -371,9 +375,9 @@ msgid ""
"programs, and several useful pieces of freely distributable software. The "
"source will compile and run out of the box on most UNIX platforms."
msgstr ""
-"Le code source est dans une archive *gzippée* au format tar, elle contient "
+"Le code source est dans une archive *gzippée* au format *tar*, elle contient "
"le code source C complet, la documentation formatée avec Sphinx, les "
-"libraires Python, des exemples de programmes, et plusieurs morceux de code "
+"libraires Python, des exemples de programmes, et plusieurs morceaux de code "
"utiles distribuables librement. Le code source sera compilé et prêt à "
"fonctionner immédiatement sur la plupart des plateformes UNIX."
@@ -407,14 +411,14 @@ msgid ""
"Sphinx documentation tool `__. The reStructuredText "
"source for the documentation is part of the Python source distribution."
msgstr ""
-"La documentation est écrite au format reStructuredText et traitée par "
-"l'outil de documentation Sphinx `__. La source du "
-"reStructuredText pour la documentation constitue une partie des sources de "
+"La documentation est écrite au format *reStructuredText* et traitée par "
+"l'outil de documentation `Sphinx `__. La source du "
+"*reStructuredText* pour la documentation constitue une partie des sources de "
"Python."
#: ../Doc/faq/general.rst:189
msgid "I've never programmed before. Is there a Python tutorial?"
-msgstr "Je n'ai jamais prorgammé avant. Existe t-il un tutoriel Python ?"
+msgstr "Je n'ai jamais programmé avant. Existe t-il un tutoriel Python ?"
#: ../Doc/faq/general.rst:191
msgid ""
@@ -463,7 +467,7 @@ msgid ""
"`_."
msgstr ""
"Les annonces pour les nouvelles versions et événements peuvent êtres "
-"trouvées dans comp.lang.python.announce, une liste diminuée peu active qui "
+"trouvées dans *comp.lang.python.announce*, une liste diminuée peu active qui "
"reçoit environ 5 messages par jour. C'est disponible à `liste de diffusion "
"des annonces Python `_."
@@ -488,16 +492,17 @@ msgid ""
"python.org/; an RSS feed of news is available."
msgstr ""
"Les versions alpha et bêta sont disponibles depuis https://www.python.org/"
-"downloads/. Toutes les versions annoncées sur comp.lang.python and comp.lang."
-"python.announce newsgroups et sur la page d'accueil de Python à https://www."
-"python.org/; un flux RSS de *news* est disponible."
+"downloads/. Toutes les versions sont annoncées sur les *newsgroups* *comp."
+"lang.python* et *comp.lang.python.announce* ainsi que sur la page d'accueil "
+"de Python à https://www.python.org/; un flux RSS d'actualités y est aussi "
+"disponible."
#: ../Doc/faq/general.rst:225
msgid ""
"You can also access the development version of Python through Git. See `The "
"Python Developer's Guide `_ for details."
msgstr ""
-"Vous pouvez aussi accéder aux de Python en dévloppement grâce à Git. Voir "
+"Vous pouvez aussi accéder aux de Python en développement grâce à Git. Voir "
"`Le Guide du Développeur Python `_ pour plus "
"de détails."
@@ -535,7 +540,7 @@ msgid ""
"For more information on how Python is developed, consult `the Python "
"Developer's Guide `_."
msgstr ""
-"Pour davantages d'informations sur comment Python est développé, consultez "
+"Pour davantage d'informations sur comment Python est développé, consultez "
"`le Guide du Développeur Python `_."
#: ../Doc/faq/general.rst:246
@@ -564,8 +569,8 @@ msgid ""
"Using the Python Programming Language\", CWI Quarterly, Volume 4, Issue 4 "
"(December 1991), Amsterdam, pp 283--303."
msgstr ""
-"Guido van Rossum et Jelke de Boer, « Interactively Testing Remote Servers "
-"Using the Python Programming Language », CWI Quarterly, Volume 4, Issue 4 "
+"Guido van Rossum et Jelke de Boer, « *Interactively Testing Remote Servers "
+"Using the Python Programming Language* », CWI Quarterly, Volume 4, Issue 4 "
"(December 1991), Amsterdam, pp 283--303."
#: ../Doc/faq/general.rst:259
@@ -586,7 +591,7 @@ msgid ""
"Monty Python references; or perhaps search for \"Python\" and \"language\"."
msgstr ""
"Vous pouvez aussi chercher chez les revendeurs de livres en ligne avec le "
-"terme « Python » et éléminer les références concernant les Monty Python, ou "
+"terme « Python » et éliminer les références concernant les Monty Python, ou "
"peut-être faire une recherche avec les termes « langage » et « Python »."
#: ../Doc/faq/general.rst:269
@@ -709,15 +714,15 @@ msgid ""
msgstr ""
"Python est disponible en téléchargement gratuit, donc il n'y a pas de "
"chiffres de ventes, il est disponible depuis de nombreux sites différents et "
-"il est inclus avec de beaucoup de distributions Linux, donc les "
-"statistisques de téléchargement ne donnent pas la totalité non plus."
+"il est inclus avec de beaucoup de distributions Linux, donc les statistiques "
+"de téléchargement ne donnent pas la totalité non plus."
#: ../Doc/faq/general.rst:332
msgid ""
"The comp.lang.python newsgroup is very active, but not all Python users post "
"to the group or even read it."
msgstr ""
-"Le forum comp.lang.python est très actif, mais tous les utilisateurs de "
+"Le forum *comp.lang.python* est très actif, mais tous les utilisateurs de "
"Python ne laissent pas de messages dessus ou même ne le lisent pas."
#: ../Doc/faq/general.rst:337
@@ -751,7 +756,7 @@ msgstr ""
"zope.org>`_. Plusieurs distributions Linux, notamment `Red Hat `_, qui a écrit tout ou partie de son installateur et de son "
"logiciel d'administration système en Python. Les entreprises qui utilisent "
-"Python en interne comprennent Google, Yahoo, and Lucasfilm Ltd."
+"Python en interne comprennent Google, Yahoo, et Lucasfilm Ltd."
#: ../Doc/faq/general.rst:353
msgid "What new developments are expected for Python in the future?"
@@ -765,12 +770,12 @@ msgid ""
"for a PEP titled \"Python X.Y Release Schedule\", where X.Y is a version "
"that hasn't been publicly released yet."
msgstr ""
-"Regardez https://www.python.org/dev/peps/ pour Python Enhancement Proposals "
-"(PEPs). PEPs sont des documents techniques qui décrivent une nouvelle "
-"fonctionnalité qui a été suggérée pour Python, en fournissant une "
-"spécification technique concise et logique. Recherchez une PEP intitulée "
-"\"Python X.Y Release Schedule\", où X.Y est la version qui n'a pas encore "
-"été publiée."
+"Regardez les propositions d'amélioration de Python (« *Python Enhancement "
+"Proposals* », ou *PEP*) sur https://www.python.org/dev/peps/. Les PEP sont "
+"des documents techniques qui décrivent une nouvelle fonctionnalité qui a été "
+"suggérée pour Python, en fournissant une spécification technique concise et "
+"logique. Recherchez une PEP intitulée \"Python X.Y Release Schedule\", où X."
+"Y est la version qui n'a pas encore été publiée."
#: ../Doc/faq/general.rst:361
msgid ""
@@ -880,10 +885,10 @@ msgstr ""
"De nombreux autres aspects de Python en font un bon premier langage. Comme "
"Java, Python a une large bibliothèque standard donc les étudiants peuvent "
"être assigner à la programmation de projets très tôt dans leur apprentissage "
-"qui *fait* quelque chose. Les missions ne sont pas restreintes aux quatres "
+"qui *fait* quelque chose. Les missions ne sont pas restreintes aux quatre "
"fonction standards. En utilisant la bibliothèque standard, les étudiants "
"peuvent ressentir de la satisfaction en travaillant sur des applications "
-"réalistes alors qu'ils apprenent les fondamentaux de la programmation. "
+"réalistes alors qu'ils apprennent les fondamentaux de la programmation. "
"Utiliser la bibliothèque standard apprend aussi aux étudiants la "
"réutilisation de code. Les modules tiers tels que PyGame sont aussi très "
"utiles pour étendre les compétences des étudiants."
@@ -899,8 +904,8 @@ msgstr ""
"fonctionnalités du langage pendant qu'ils programment. Ils peuvent garder "
"une fenêtre avec l'interpréteur en fonctionnement pendant qu'ils rentrent la "
"source de leur programme dans une autre fenêtre. S'ils ne peuvent pas se "
-"souvenir des méthodes pour une listen, ils peuvent faire quelque chose comme "
-"ça :"
+"souvenir des méthodes pour une liste, ils peuvent faire quelque chose comme "
+"ça ::"
#: ../Doc/faq/general.rst:441
msgid ""
@@ -922,7 +927,7 @@ msgid ""
msgstr ""
"Il y a aussi de bons environnements de développement intégrés (EDIs) pour "
"Python. IDLE est un EDI multiplateforme pour Python qui est écrit en Python "
-"en utilisant Tkinter. PythonWin est EDI spécifique à Windows. Les "
+"en utilisant Tkinter. *PythonWin* est un IDE spécifique à Windows. Les "
"utilisateurs d'Emcs seront heureux d'apprendre qu'il y a un très bon mode "
"Python pour Emacs. Tous ces environnements de développement intégrés "
"fournissent la coloration syntaxique, l'auto-indentation, et l'accès à "
@@ -936,6 +941,6 @@ msgid ""
"joining `the edu-sig mailing list `_."
msgstr ""
-"Si vous voulez discuter de l'usage fe Python dans l'éducation, vous devriez "
+"Si vous voulez discuter de l'usage de Python dans l'éducation, vous devriez "
"intéressé pour rejoindre `la liste de diffusion pour l'enseignement `_."
diff --git a/faq/gui.po b/faq/gui.po
index 22e51b5f0..a8483eed0 100644
--- a/faq/gui.po
+++ b/faq/gui.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-08-01 13:21+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-02-15 00:37+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,11 @@ msgstr ""
#: ../Doc/faq/gui.rst:5
msgid "Graphic User Interface FAQ"
-msgstr "FAQ Interface Graphique"
+msgstr "FAQ interface graphique"
+
+#: ../Doc/faq/gui.rst:8
+msgid "Contents"
+msgstr "Sommaire"
#: ../Doc/faq/gui.rst:15
msgid "General GUI Questions"
@@ -27,7 +31,9 @@ msgstr "Questions générales sur l'interface graphique"
#: ../Doc/faq/gui.rst:18
msgid "What platform-independent GUI toolkits exist for Python?"
-msgstr "Quelles boites à outils multi-platforme existe-t-il sur Python ?"
+msgstr ""
+"Quelles bibliothèques d'interfaces graphiques multi-plateformes existent en "
+"Python ?"
#: ../Doc/faq/gui.rst:20
msgid ""
@@ -36,12 +42,12 @@ msgid ""
"known to be Python 3-compatible."
msgstr ""
"Selon les plateformes que vous comptez utiliser, il en existe plusieurs. "
-"Certaines ne sont cependant pas encore disponible en Python 3. A minima, "
-"`Tkinter`_ et `Qt`_ sont connus pour être compatible avec Python 3."
+"Certaines ne sont cependant pas encore disponibles en Python 3. A minima, "
+"`Tkinter`_ et `Qt`_ sont connus pour être compatibles avec Python 3."
#: ../Doc/faq/gui.rst:27
msgid "Tkinter"
-msgstr "Tkinter"
+msgstr "*Tkinter*"
#: ../Doc/faq/gui.rst:29
msgid ""
@@ -53,10 +59,18 @@ msgid ""
"tk>`_. Tcl/Tk is fully portable to the Mac OS X, Windows, and Unix "
"platforms."
msgstr ""
+"Les versions standards de Python incluent une interface orientée objet pour "
+"le jeu d'objets graphiques *Tcl/Tk*, appelée :ref:`tkinter `. "
+"C'est probablement la plus facile à installer (puisqu'elle est incluse avec "
+"la plupart des `distributions binaires `_ "
+"de Python) et à utiliser. Pour plus d'informations sur *Tk*, y compris les "
+"liens vers les sources, voir la page d'accueil `Tcl/Tk `_. *Tcl/Tk* est entièrement portable sur les plates-formes Mac OS X, "
+"Windows et Unix."
#: ../Doc/faq/gui.rst:38
msgid "wxWidgets"
-msgstr "wxWidgets"
+msgstr "*wxWidgets*"
#: ../Doc/faq/gui.rst:40
msgid ""
@@ -66,6 +80,11 @@ msgid ""
"targets. Language bindings are available for a number of languages "
"including Python, Perl, Ruby, etc."
msgstr ""
+"`wxWidgets` (https://www.wxwidgets.org) est une librairie de classe IUG "
+"portable et gratuite écrite en C++ qui fournit une apparence native sur un "
+"certain nombre de plates-formes, elle est notamment en version stable pour "
+"Windows, Mac OS X, GTK et X11. Des clients sont disponibles pour un certain "
+"nombre de langages, y compris Python, Perl, Ruby, etc."
#: ../Doc/faq/gui.rst:46
msgid ""
@@ -87,10 +106,14 @@ msgid ""
"licences that allow their use in commercial products as well as in freeware "
"or shareware."
msgstr ""
+"*wxWidgets* et *wxPython* sont tous deux des logiciels libres, open source, "
+"avec des licences permissives qui permettent leur utilisation dans des "
+"produits commerciaux ainsi que dans des logiciels gratuits ou contributifs "
+"(*shareware*)."
#: ../Doc/faq/gui.rst:58
msgid "Qt"
-msgstr ""
+msgstr "*Qt*"
#: ../Doc/faq/gui.rst:60
msgid ""
@@ -102,16 +125,26 @@ msgid ""
"com/commercial/license-faq>`_ if you want to write proprietary "
"applications. PySide is free for all applications."
msgstr ""
+"Il existe des liens disponibles pour la boîte à outils *Qt* (en utilisant "
+"soit `PyQt `_ ou `PySide "
+"`_) et pour *KDE* (`PyKDE4 `__). *PyQt* est actuellement plus mûre "
+"que *PySide*, mais*PyQt* nécessite d'acheter une licence de `Riverbank "
+"Computing `_ si "
+"vous voulez écrire des applications propriétaires. *PySide* est gratuit "
+"pour toutes les applications."
#: ../Doc/faq/gui.rst:67
msgid ""
"Qt 4.5 upwards is licensed under the LGPL license; also, commercial licenses "
"are available from `The Qt Company `_."
msgstr ""
+"*Qt >= 4.5* est sous licence LGPL ; de plus, des licences commerciales sont "
+"disponibles auprès de `The Qt Company `_."
#: ../Doc/faq/gui.rst:71
msgid "Gtk+"
-msgstr ""
+msgstr "*Gtk+*"
#: ../Doc/faq/gui.rst:73
msgid ""
@@ -129,7 +162,7 @@ msgstr ""
#: ../Doc/faq/gui.rst:81
msgid "Kivy"
-msgstr ""
+msgstr "*Kivy*"
#: ../Doc/faq/gui.rst:83
msgid ""
@@ -138,15 +171,20 @@ msgid ""
"(Android, iOS). It is written in Python and Cython, and can use a range of "
"windowing backends."
msgstr ""
+"`*Kivy* `_ est une bibliothèque GUI multi-plateformes "
+"disponible à la fois sur les systèmes d'exploitation de bureau (Windows, "
+"MacOS, Linux) et les appareils mobiles (Android, iOS). Elle est écrite en "
+"Python et Cython, et peut utiliser une série de fenêtres de *backends*."
#: ../Doc/faq/gui.rst:88
msgid ""
"Kivy is free and open source software distributed under the MIT license."
msgstr ""
+"*Kivy* est un logiciel libre et open source distribué sous licence MIT."
#: ../Doc/faq/gui.rst:91
msgid "FLTK"
-msgstr ""
+msgstr "*FLTK*"
#: ../Doc/faq/gui.rst:93
msgid ""
@@ -154,18 +192,24 @@ msgid ""
"powerful and mature cross-platform windowing system, are available from `the "
"PyFLTK project `_."
msgstr ""
+"Les liaisons Python pour `the FLTK toolkit `_, un "
+"système de fenêtrage multi-plateformes simple mais puissant et mûr, sont "
+"disponibles auprès de `the PyFLTK project `_."
#: ../Doc/faq/gui.rst:98
msgid "OpenGL"
-msgstr ""
+msgstr "*OpenGL*"
#: ../Doc/faq/gui.rst:100
msgid "For OpenGL bindings, see `PyOpenGL `_."
msgstr ""
+"Pour les clients OpenGL, voir `PyOpenGL `_."
#: ../Doc/faq/gui.rst:104
msgid "What platform-specific GUI toolkits exist for Python?"
msgstr ""
+"Quelles boîtes à outils IUG spécifiques à la plate-forme existent pour "
+"Python ?"
#: ../Doc/faq/gui.rst:106
msgid ""
@@ -179,14 +223,17 @@ msgid ""
"Microsoft Foundation Classes and a Python programming environment that's "
"written mostly in Python using the MFC classes."
msgstr ""
+":ref:`Pythonwin ` de Mark Hammond inclut une interface vers les "
+"classes `Microsoft Foundation Classes` et un environnement de programmation "
+"Python qui est écrit principalement en Python utilisant les classes *MFC*."
#: ../Doc/faq/gui.rst:116
msgid "Tkinter questions"
-msgstr ""
+msgstr "Questions à propos de *Tkinter*"
#: ../Doc/faq/gui.rst:119
msgid "How do I freeze Tkinter applications?"
-msgstr ""
+msgstr "Comment puis-je geler (*freezer*) les applications *Tkinter* ?"
#: ../Doc/faq/gui.rst:121
msgid ""
@@ -194,6 +241,10 @@ msgid ""
"applications, the applications will not be truly stand-alone, as the "
"application will still need the Tcl and Tk libraries."
msgstr ""
+"*Freeze* est un outil pour créer des applications autonomes. Lors du "
+"*freezage* des applications Tkinter, les applications ne seront pas vraiment "
+"autonomes, car l'application aura toujours besoin des bibliothèques Tcl et "
+"Tk."
#: ../Doc/faq/gui.rst:125
msgid ""
@@ -201,6 +252,9 @@ msgid ""
"point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:"
"`TK_LIBRARY` environment variables."
msgstr ""
+"Une solution consiste à empaqueter les bibliothèques *Tcl* et *Tk* dans "
+"l'application et de les retrouver à l'exécution en utilisant les variables "
+"d'environnement :envvar:`TCL_LIBRARY` et :envvar:`TK_LIBRARY`."
#: ../Doc/faq/gui.rst:129
msgid ""
@@ -209,6 +263,10 @@ msgid ""
"is SAM (stand-alone modules), which is part of the Tix distribution (http://"
"tix.sourceforge.net/)."
msgstr ""
+"Pour obtenir des applications vraiment autonomes, les scripts *Tcl* qui "
+"forment la bibliothèque doivent également être intégrés dans l'application. "
+"Un outil supportant cela est *SAM* (modules autonomes), qui fait partie de "
+"la distribution *Tix* (http://tix.sourceforge.net/)."
#: ../Doc/faq/gui.rst:134
msgid ""
@@ -216,10 +274,14 @@ msgid ""
"`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link "
"with libtclsam and libtksam (you might include the Tix libraries as well)."
msgstr ""
+"Compilez Tix avec SAM activé, exécutez l'appel approprié à :c:func:"
+"`Tclsam_init`, etc. dans le fichier :file:`Modules/tkappinit.c` de Python, "
+"et liez avec *libtclsam* et *libtksam* (il est également possible d'inclure "
+"les bibliothèques *Tix*)."
#: ../Doc/faq/gui.rst:141
msgid "Can I have Tk events handled while waiting for I/O?"
-msgstr ""
+msgstr "Puis-je modifier des événements *Tk* pendant l'écoute des *E/S* ?"
#: ../Doc/faq/gui.rst:143
msgid ""
@@ -229,10 +291,18 @@ msgid ""
"function which will be called from the Tk mainloop when I/O is possible on a "
"file descriptor. See :ref:`tkinter-file-handlers`."
msgstr ""
+"Sur d'autres plates-formes que Windows, oui, et vous n'avez même pas besoin "
+"de fils d'exécution multiples ! Mais vous devrez restructurer un peu votre "
+"code *E/S*. *Tk* possède l'équivalent de l'appel :c:func:`XtAddInput()` de "
+"*Xt*, qui vous permet d'enregistrer une fonction de *callback* qui sera "
+"appelée par la boucle principale *Tk* lorsque des *E/S* sont disponibles sur "
+"un descripteur de fichier. Voir :ref:`tkinter-file-handlers`."
#: ../Doc/faq/gui.rst:151
msgid "I can't get key bindings to work in Tkinter: why?"
msgstr ""
+"Je n'arrive pas à faire fonctionner les raccourcis clavier dans *Tkinter* : "
+"pourquoi ?"
#: ../Doc/faq/gui.rst:153
msgid ""
@@ -240,6 +310,9 @@ msgid ""
"meth:`bind` method don't get handled even when the appropriate key is "
"pressed."
msgstr ""
+"Une raison récurrente est que les gestionnaires d’évènements liés à des "
+"évènements avec la méthode :meth:`bind` ne sont pas pris en charge même "
+"lorsque la touche appropriée est activée."
#: ../Doc/faq/gui.rst:156
msgid ""
@@ -248,3 +321,8 @@ msgid ""
"focus command. Usually a widget is given the keyboard focus by clicking in "
"it (but not for labels; see the takefocus option)."
msgstr ""
+"La cause la plus fréquente est que l'objet graphique auquel s'applique la "
+"liaison n'a pas de « focus clavier ». Consultez la documentation *Tk* pour "
+"la commande *focus*. Habituellement, un objet graphique reçoit le focus du "
+"clavier en cliquant dessus (mais pas pour les étiquettes ; voir l'option "
+"*takefocus*)."
diff --git a/faq/installed.po b/faq/installed.po
index f558a2e70..6291f050f 100644
--- a/faq/installed.po
+++ b/faq/installed.po
@@ -19,7 +19,7 @@ msgstr ""
#: ../Doc/faq/installed.rst:3
msgid "\"Why is Python Installed on my Computer?\" FAQ"
-msgstr ""
+msgstr "FAQ \"Pourquoi Python est installé sur mon ordinateur ?\""
#: ../Doc/faq/installed.rst:6
msgid "What is Python?"
@@ -33,22 +33,32 @@ msgid ""
"professional software developers at places such as Google, NASA, and "
"Lucasfilm Ltd."
msgstr ""
+"Python est un langage de programmation. Il est utilisé dans de nombreuses "
+"applications. Souvent utilisé dans les lycées et universités comme langage "
+"d'introduction à la programmation pour sa simplicité d'apprentissage, il est "
+"aussi utilisé par des développeurs professionnels appartenant à des grands "
+"groupes comme Google, la NASA, Lucasfilm etc."
#: ../Doc/faq/installed.rst:13
msgid ""
"If you wish to learn more about Python, start with the `Beginner's Guide to "
"Python `_."
msgstr ""
+"Si vous voulez en apprendre plus sur Python, vous pouvez commencer par le "
+"`Guide des Débutants pour Python `_."
#: ../Doc/faq/installed.rst:18
msgid "Why is Python installed on my machine?"
-msgstr ""
+msgstr "Pourquoi Python est installé sur ma machine ?"
#: ../Doc/faq/installed.rst:20
msgid ""
"If you find Python installed on your system but don't remember installing "
"it, there are several possible ways it could have gotten there."
msgstr ""
+"Si Python est installé sur votre système mais que vous ne vous rappelez pas "
+"l'avoir installé, il y a plusieurs raisons possibles à sa présence."
#: ../Doc/faq/installed.rst:23
msgid ""
@@ -56,6 +66,9 @@ msgid ""
"installed it; you'll have to figure out who's been using the machine and "
"might have installed it."
msgstr ""
+"Peut être qu'un autre utilisateur de l'ordinateur voulait apprendre la "
+"programmation et l'a installé, dans ce cas vous allez devoir trouver qui a "
+"utilisé votre machine et aurait pu l'installer."
#: ../Doc/faq/installed.rst:26
msgid ""
@@ -64,6 +77,10 @@ msgid ""
"applications, from GUI programs to network servers and administrative "
"scripts."
msgstr ""
+"Une application tierce installée sur votre machine écrite en Python "
+"installera Python. Il existe de nombreuses applications de ce type, allant "
+"de programme avec interface graphique, jusqu'aux scripts d'administration, "
+"en passant par les serveurs."
#: ../Doc/faq/installed.rst:29
msgid ""
@@ -71,6 +88,10 @@ msgid ""
"aware of computers from Hewlett-Packard and Compaq that include Python. "
"Apparently some of HP/Compaq's administrative tools are written in Python."
msgstr ""
+"Certaines machines fonctionnant avec le système d'exploitation Windows "
+"possèdent une installation de Python. À ce jour, les ordinateurs des marques "
+"Hewlett-Packard et Compaq incluent nativement Python. Certains outils "
+"d'administration de ces marques sont écrits en Python."
#: ../Doc/faq/installed.rst:32
msgid ""
@@ -78,20 +99,26 @@ msgid ""
"distributions, have Python installed by default; it's included in the base "
"installation."
msgstr ""
+"Python est installé par défaut et à l'installation par de nombreux systèmes "
+"Unix, comme Mac OS X et certaines distributions Linux."
#: ../Doc/faq/installed.rst:38
msgid "Can I delete Python?"
-msgstr ""
+msgstr "Puis-je supprimer Python ?"
#: ../Doc/faq/installed.rst:40
msgid "That depends on where Python came from."
-msgstr ""
+msgstr "Cela dépend de l'origine de Python."
#: ../Doc/faq/installed.rst:42
msgid ""
"If someone installed it deliberately, you can remove it without hurting "
"anything. On Windows, use the Add/Remove Programs icon in the Control Panel."
msgstr ""
+"Si Python a été installé délibérément par une personne tierce ou vous même, "
+"vous pouvez le supprimer sans causer de dommage. Sous Windows, vous pouvez "
+"simplement utiliser l'icône d'Ajout / Suppression de programmes du Panneau "
+"de configuration."
#: ../Doc/faq/installed.rst:45
msgid ""
@@ -99,6 +126,10 @@ msgid ""
"it, but that application will no longer work. You should use that "
"application's uninstaller rather than removing Python directly."
msgstr ""
+"Si Python a été installé par une application tierce, Python peut être "
+"désinstallé, l'application l'ayant installé cessera alors de fonctionner. "
+"Dans ce cas, désinstallez l'application en utilisant son outil de "
+"désinstallation est plus indiqué que supprimer Python."
#: ../Doc/faq/installed.rst:49
msgid ""
@@ -107,3 +138,9 @@ msgid ""
"and some of them might be important to you. Reinstalling the whole system "
"would then be required to fix things again."
msgstr ""
+"Si Python a été installé avec votre système d'exploitation, le supprimer "
+"n'est pas recommandé. Si vous choisissez tout de même de le supprimer, tous "
+"les outils écrits en python cesseront alors de fonctionner, certains outils "
+"pouvant être importants. La réinstallation intégrale du système pourrait "
+"être nécessaire pour résoudre les problèmes suite à la désinstallation de "
+"Python."
diff --git a/faq/library.po b/faq/library.po
index 17570f116..536fd5b92 100644
--- a/faq/library.po
+++ b/faq/library.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-04-02 22:11+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"POT-Creation-Date: 2018-06-10 11:27+0200\n"
+"PO-Revision-Date: 2018-02-15 00:37+0100\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"Language: fr\n"
@@ -19,7 +19,11 @@ msgstr ""
#: ../Doc/faq/library.rst:5
msgid "Library and Extension FAQ"
-msgstr "Bibliothèque et Extension FAQ"
+msgstr "FAQ sur la bibliothèque et les extensions"
+
+#: ../Doc/faq/library.rst:8
+msgid "Contents"
+msgstr "Sommaire"
#: ../Doc/faq/library.rst:12
msgid "General Library Questions"
@@ -28,8 +32,7 @@ msgstr "Questions générales sur la bibliothèque"
#: ../Doc/faq/library.rst:15
msgid "How do I find a module or application to perform task X?"
msgstr ""
-"Comment puis-je trouver un module ou une application pour exécuter la tâche "
-"X?"
+"Comment trouver un module ou une application pour effectuer la tâche X ?"
#: ../Doc/faq/library.rst:17
msgid ""
@@ -37,18 +40,28 @@ msgid ""
"relevant standard library module. (Eventually you'll learn what's in the "
"standard library and will be able to skip this step.)"
msgstr ""
+"Regardez si la :ref:`bibliothèque standard ` contient un "
+"module approprié (avec l'expérience, vous connaitrez le contenu de la "
+"bibliothèque standard et pourrez sauter cette étape)."
#: ../Doc/faq/library.rst:21
msgid ""
"For third-party packages, search the `Python Package Index `_ or try `Google `_ or another Web "
-"search engine. Searching for \"Python\" plus a keyword or two for your "
-"topic of interest will usually find something helpful."
+"org>`_ or try `Google `_ or another Web search "
+"engine. Searching for \"Python\" plus a keyword or two for your topic of "
+"interest will usually find something helpful."
msgstr ""
+"Pour des paquets tiers, regardez dans `l'index des paquets Python `_ ou essayez `Google `_ ou un autre moteur "
+"de recherche (NDT : comme le moteur français `Qwant `_). Rechercher « Python » accompagné d'un ou deux mots-clés se "
+"rapportant à ce qui vous intéresse donne souvent de bons résultats."
#: ../Doc/faq/library.rst:28
msgid "Where is the math.py (socket.py, regex.py, etc.) source file?"
-msgstr "Où se situe le fichier source math.py (socket.py, regex.py, etc.)?"
+msgstr ""
+"Où sont stockés les fichiers sources *math.py*, *socket.py*, *regex.py*, "
+"etc ?"
#: ../Doc/faq/library.rst:30
msgid ""
@@ -58,30 +71,39 @@ msgid ""
"file:`mathmodule.c`, somewhere in a C source directory (not on the Python "
"Path)."
msgstr ""
+"Si vous ne parvenez pas à trouver le fichier source d'un module, c'est peut-"
+"être parce que celui-ci est un module natif ou bien un module implémenté en "
+"C, C++, ou autre langage compilé, qui est chargé dynamiquement. Dans ce cas, "
+"vous ne possédez peut-être pas le fichier source ou celui-ci est en réalité "
+"stocké quelque part dans un dossier de fichiers source C (qui ne sera pas "
+"dans le chemin Python), comme par exemple :file:`mathmodule.c`."
#: ../Doc/faq/library.rst:35
msgid "There are (at least) three kinds of modules in Python:"
-msgstr "Il y a (au moins) trois types de modules dans Python"
+msgstr "Il y a (au moins) trois types de modules dans Python :"
#: ../Doc/faq/library.rst:37
msgid "modules written in Python (.py);"
-msgstr "modules écrits en Python (.py);"
+msgstr "les modules écrits en Python (*.py*) ;"
#: ../Doc/faq/library.rst:38
msgid ""
"modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc);"
msgstr ""
-"modules écrits en C et chargés dynamiquement (.dll, .pyd, .so, .sl, .etc);"
+"les modules écrits en C et chargés dynamiquement (*.dll*, *.pyd*, *.so*, *."
+"sl*, *etc.*) ;"
#: ../Doc/faq/library.rst:39
msgid ""
"modules written in C and linked with the interpreter; to get a list of "
"these, type::"
msgstr ""
+"les modules écrits en C et liés à l'interpréteur ; pour obtenir leur liste, "
+"entrez ::"
#: ../Doc/faq/library.rst:47
msgid "How do I make a Python script executable on Unix?"
-msgstr ""
+msgstr "Comment rendre un script Python exécutable sous Unix ?"
#: ../Doc/faq/library.rst:49
msgid ""
@@ -89,24 +111,31 @@ msgid ""
"first line must begin with ``#!`` followed by the path of the Python "
"interpreter."
msgstr ""
+"Deux conditions doivent être remplies : les droits d'accès au fichier "
+"doivent permettre son exécution et la première ligne du script doit "
+"commencer par ``#!`` suivi du chemin vers l'interpréteur Python."
#: ../Doc/faq/library.rst:53
msgid ""
"The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod "
"755 scriptfile``."
msgstr ""
+"La première condition est remplie en exécutant ``chmod +x scriptfile`` ou "
+"``chmod 755 scriptfile``."
#: ../Doc/faq/library.rst:56
msgid ""
"The second can be done in a number of ways. The most straightforward way is "
"to write ::"
msgstr ""
+"Il y a plusieurs façons de remplir la seconde. La plus simple consiste à "
+"écrire au tout début du fichier ::"
#: ../Doc/faq/library.rst:61
msgid ""
"as the very first line of your file, using the pathname for where the Python "
"interpreter is installed on your platform."
-msgstr ""
+msgstr "en utilisant le chemin de l'interpréteur Python sur votre machine."
#: ../Doc/faq/library.rst:64
msgid ""
@@ -115,6 +144,11 @@ msgid ""
"variants support the following, assuming the Python interpreter is in a "
"directory on the user's :envvar:`PATH`::"
msgstr ""
+"Pour rendre ce script indépendant de la localisation de l'interpréteur "
+"Python, il faut utiliser le programme :program:`env`. La ligne ci-dessous "
+"fonctionne sur la quasi-totalité des dérivés de Unix, à condition que "
+"l'interpréteur Python soit dans un dossier référencé dans la variable :"
+"envvar:`PATH` de l'utilisateur ::"
#: ../Doc/faq/library.rst:71
msgid ""
@@ -122,33 +156,46 @@ msgid ""
"scripts is often very minimal, so you need to use the actual absolute "
"pathname of the interpreter."
msgstr ""
+"Ne faites *pas* ceci pour des scripts CGI. La variable :envvar:`PATH` des "
+"scripts CGI est souvent très succincte, il faut par conséquent préciser le "
+"chemin absolu réel de l'interpréteur."
#: ../Doc/faq/library.rst:75
msgid ""
"Occasionally, a user's environment is so full that the :program:`/usr/bin/"
"env` program fails; or there's no env program at all. In that case, you can "
-"try the following hack (due to Alex Rezinsky)::"
+"try the following hack (due to Alex Rezinsky):"
msgstr ""
+"Il peut arriver que l'environnement d'un utilisateur soit si chargé que le "
+"programme :program:`/usr/bin/env` échoue ; ou que le programme *env* "
+"n'existe pas du tout. Dans ce cas, vous pouvez utiliser l'astuce suivante, "
+"élaborée par Alex Rezinsky :"
-#: ../Doc/faq/library.rst:84
+#: ../Doc/faq/library.rst:86
msgid ""
"The minor disadvantage is that this defines the script's __doc__ string. "
"However, you can fix that by adding ::"
msgstr ""
+"Le léger inconvénient est que cela définit la variable *__doc__* du script. "
+"Cependant, il est possible de corriger cela en ajoutant ::"
-#: ../Doc/faq/library.rst:92
+#: ../Doc/faq/library.rst:94
msgid "Is there a curses/termcap package for Python?"
-msgstr ""
+msgstr "Existe-t'il un module *curse* ou *termcap* en Python ?"
-#: ../Doc/faq/library.rst:96
+#: ../Doc/faq/library.rst:98
msgid ""
"For Unix variants: The standard Python source distribution comes with a "
"curses module in the :source:`Modules` subdirectory, though it's not "
"compiled by default. (Note that this is not available in the Windows "
"distribution -- there is no curses module for Windows.)"
msgstr ""
+"Pour les dérivés d'Unix : la distribution standard de Python contient un "
+"module *curses* dans le sous-dossier :source:`Modules`, bien qu'il ne soit "
+"pas compilé par défaut. Il n'est pas disponible en Windows — le module "
+"*curses* n'existant pas en Windows."
-#: ../Doc/faq/library.rst:101
+#: ../Doc/faq/library.rst:103
msgid ""
"The :mod:`curses` module supports basic curses features as well as many "
"additional functions from ncurses and SYSV curses such as colour, "
@@ -157,59 +204,77 @@ msgid ""
"but there don't seem to be any currently maintained OSes that fall into this "
"category."
msgstr ""
+"Le module :mod:`curses` comprend les fonctionnalités de base de *curses* et "
+"beaucoup de fonctionnalités supplémentaires provenant de *ncurses* et de "
+"*SYSV curses* comme la couleur, la gestion des ensembles de caractères "
+"alternatifs, la prise en charge du pavé tactile et de la souris. Cela "
+"implique que le module n'est pas compatible avec des systèmes d'exploitation "
+"qui n'ont que le *curses* de BSD mais, de nos jours, de tels systèmes "
+"d'exploitation ne semblent plus exister ou être maintenus."
-#: ../Doc/faq/library.rst:107
+#: ../Doc/faq/library.rst:109
msgid ""
"For Windows: use `the consolelib module `_."
msgstr ""
+"Pour Windows : utilisez le module `consolelib