diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..7f909e530 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +# Usefull with: +# +# cat < ~/.local/bin/podiff +# #!/bin/sh +# grep -v '^#:' "$1" +# EOF +# chmod a+x ~/.local/bin/podiff +# git config diff.podiff.textconv podiff + +*.po diff=podiff +*.pot diff=podiff diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..b94dfd2b9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.mo +.tx/**/*.po diff --git a/.tx/config b/.tx/config new file mode 100644 index 000000000..ad2c832c4 --- /dev/null +++ b/.tx/config @@ -0,0 +1,2332 @@ +[main] +host = https://www.transifex.com +[python-36.glossary_] +trans.fr = glossary.po +type = PO +source_lang = en + +[python-36.license] +trans.fr = license.po +type = PO +source_lang = en + +[python-36.sphinx] +trans.fr = sphinx.po +type = PO +source_lang = en + +[python-36.about] +trans.fr = about.po +type = PO +source_lang = en + +[python-36.bugs] +trans.fr = bugs.po +type = PO +source_lang = en + +[python-36.copyright] +trans.fr = copyright.po +type = PO +source_lang = en + +[python-36.contents] +trans.fr = contents.po +type = PO +source_lang = en + +[python-36.library--re] +trans.fr = library/re.po +type = PO +source_lang = en + +[python-36.library--sysconfig] +trans.fr = library/sysconfig.po +type = PO +source_lang = en + +[python-36.library--getpass] +trans.fr = library/getpass.po +type = PO +source_lang = en + +[python-36.library--imghdr] +trans.fr = library/imghdr.po +type = PO +source_lang = en + +[python-36.library--zipapp] +trans.fr = library/zipapp.po +type = PO +source_lang = en + +[python-36.library--urllib_error] +trans.fr = library/urllib.error.po +type = PO +source_lang = en + +[python-36.library--urllib_parse] +trans.fr = library/urllib.parse.po +type = PO +source_lang = en + +[python-36.library--xml_sax_utils] +trans.fr = library/xml.sax.utils.po +type = PO +source_lang = en + +[python-36.library--mmap] +trans.fr = library/mmap.po +type = PO +source_lang = en + +[python-36.library--difflib] +trans.fr = library/difflib.po +type = PO +source_lang = en + +[python-36.library--tkinter_scrolledtext] +trans.fr = library/tkinter.scrolledtext.po +type = PO +source_lang = en + +[python-36.library--parser] +trans.fr = library/parser.po +type = PO +source_lang = en + +[python-36.library--pyexpat] +trans.fr = library/pyexpat.po +type = PO +source_lang = en + +[python-36.library--curses_panel] +trans.fr = library/curses.panel.po +type = PO +source_lang = en + +[python-36.library--fractions] +trans.fr = library/fractions.po +type = PO +source_lang = en + +[python-36.library--asyncio-subprocess] +trans.fr = library/asyncio-subprocess.po +type = PO +source_lang = en + +[python-36.library--compileall] +trans.fr = library/compileall.po +type = PO +source_lang = en + +[python-36.library--optparse] +trans.fr = library/optparse.po +type = PO +source_lang = en + +[python-36.library--imp] +trans.fr = library/imp.po +type = PO +source_lang = en + +[python-36.library--locale] +trans.fr = library/locale.po +type = PO +source_lang = en + +[python-36.library--ctypes] +trans.fr = library/ctypes.po +type = PO +source_lang = en + +[python-36.library--doctest] +trans.fr = library/doctest.po +type = PO +source_lang = en + +[python-36.library--distribution] +trans.fr = library/distribution.po +type = PO +source_lang = en + +[python-36.library--ipc] +trans.fr = library/ipc.po +type = PO +source_lang = en + +[python-36.library--numeric] +trans.fr = library/numeric.po +type = PO +source_lang = en + +[python-36.library--email_headerregistry] +trans.fr = library/email.headerregistry.po +type = PO +source_lang = en + +[python-36.library--wave] +trans.fr = library/wave.po +type = PO +source_lang = en + +[python-36.library--email_errors] +trans.fr = library/email.errors.po +type = PO +source_lang = en + +[python-36.library--sunau] +trans.fr = library/sunau.po +type = PO +source_lang = en + +[python-36.library--datetime] +trans.fr = library/datetime.po +type = PO +source_lang = en + +[python-36.library--macpath] +trans.fr = library/macpath.po +type = PO +source_lang = en + +[python-36.library--unix] +trans.fr = library/unix.po +type = PO +source_lang = en + +[python-36.library--array] +trans.fr = library/array.po +type = PO +source_lang = en + +[python-36.library--email_policy] +trans.fr = library/email.policy.po +type = PO +source_lang = en + +[python-36.library--sched] +trans.fr = library/sched.po +type = PO +source_lang = en + +[python-36.library--http_cookies] +trans.fr = library/http.cookies.po +type = PO +source_lang = en + +[python-36.library--shutil] +trans.fr = library/shutil.po +type = PO +source_lang = en + +[python-36.library--symbol] +trans.fr = library/symbol.po +type = PO +source_lang = en + +[python-36.library--xml_dom_minidom] +trans.fr = library/xml.dom.minidom.po +type = PO +source_lang = en + +[python-36.library--modules] +trans.fr = library/modules.po +type = PO +source_lang = en + +[python-36.library--unicodedata] +trans.fr = library/unicodedata.po +type = PO +source_lang = en + +[python-36.library--tkinter_ttk] +trans.fr = library/tkinter.ttk.po +type = PO +source_lang = en + +[python-36.library--binascii] +trans.fr = library/binascii.po +type = PO +source_lang = en + +[python-36.library--linecache] +trans.fr = library/linecache.po +type = PO +source_lang = en + +[python-36.library--functools] +trans.fr = library/functools.po +type = PO +source_lang = en + +[python-36.library--xml_sax_reader] +trans.fr = library/xml.sax.reader.po +type = PO +source_lang = en + +[python-36.library--pydoc] +trans.fr = library/pydoc.po +type = PO +source_lang = en + +[python-36.library--pwd] +trans.fr = library/pwd.po +type = PO +source_lang = en + +[python-36.library--selectors] +trans.fr = library/selectors.po +type = PO +source_lang = en + +[python-36.library--os_path] +trans.fr = library/os.path.po +type = PO +source_lang = en + +[python-36.library--asyncio-sync] +trans.fr = library/asyncio-sync.po +type = PO +source_lang = en + +[python-36.library--_dummy_thread] +trans.fr = library/_dummy_thread.po +type = PO +source_lang = en + +[python-36.library--fcntl] +trans.fr = library/fcntl.po +type = PO +source_lang = en + +[python-36.library--constants] +trans.fr = library/constants.po +type = PO +source_lang = en + +[python-36.library--statistics] +trans.fr = library/statistics.po +type = PO +source_lang = en + +[python-36.library--pty] +trans.fr = library/pty.po +type = PO +source_lang = en + +[python-36.library--crypto] +trans.fr = library/crypto.po +type = PO +source_lang = en + +[python-36.library--xml] +trans.fr = library/xml.po +type = PO +source_lang = en + +[python-36.library--imaplib] +trans.fr = library/imaplib.po +type = PO +source_lang = en + +[python-36.library--text] +trans.fr = library/text.po +type = PO +source_lang = en + +[python-36.library--mm] +trans.fr = library/mm.po +type = PO +source_lang = en + +[python-36.library--tempfile] +trans.fr = library/tempfile.po +type = PO +source_lang = en + +[python-36.library--traceback] +trans.fr = library/traceback.po +type = PO +source_lang = en + +[python-36.library--itertools] +trans.fr = library/itertools.po +type = PO +source_lang = en + +[python-36.library--__future__] +trans.fr = library/__future__.po +type = PO +source_lang = en + +[python-36.library--csv] +trans.fr = library/csv.po +type = PO +source_lang = en + +[python-36.library--stringprep] +trans.fr = library/stringprep.po +type = PO +source_lang = en + +[python-36.library--development] +trans.fr = library/development.po +type = PO +source_lang = en + +[python-36.library--platform] +trans.fr = library/platform.po +type = PO +source_lang = en + +[python-36.library--time] +trans.fr = library/time.po +type = PO +source_lang = en + +[python-36.library--pyclbr] +trans.fr = library/pyclbr.po +type = PO +source_lang = en + +[python-36.library--crypt] +trans.fr = library/crypt.po +type = PO +source_lang = en + +[python-36.library--token] +trans.fr = library/token.po +type = PO +source_lang = en + +[python-36.library--spwd] +trans.fr = library/spwd.po +type = PO +source_lang = en + +[python-36.library--modulefinder] +trans.fr = library/modulefinder.po +type = PO +source_lang = en + +[python-36.library--argparse] +trans.fr = library/argparse.po +type = PO +source_lang = en + +[python-36.library--collections] +trans.fr = library/collections.po +type = PO +source_lang = en + +[python-36.library--http] +trans.fr = library/http.po +type = PO +source_lang = en + +[python-36.library--email] +trans.fr = library/email.po +type = PO +source_lang = en + +[python-36.library--http_cookiejar] +trans.fr = library/http.cookiejar.po +type = PO +source_lang = en + +[python-36.library--cmd] +trans.fr = library/cmd.po +type = PO +source_lang = en + +[python-36.library--xml_dom_pulldom] +trans.fr = library/xml.dom.pulldom.po +type = PO +source_lang = en + +[python-36.library--glob] +trans.fr = library/glob.po +type = PO +source_lang = en + +[python-36.library--keyword] +trans.fr = library/keyword.po +type = PO +source_lang = en + +[python-36.library--concurrency] +trans.fr = library/concurrency.po +type = PO +source_lang = en + +[python-36.library--atexit] +trans.fr = library/atexit.po +type = PO +source_lang = en + +[python-36.library--py_compile] +trans.fr = library/py_compile.po +type = PO +source_lang = en + +[python-36.library--email_encoders] +trans.fr = library/email.encoders.po +type = PO +source_lang = en + +[python-36.library--inspect] +trans.fr = library/inspect.po +type = PO +source_lang = en + +[python-36.library--unittest_mock] +trans.fr = library/unittest.mock.po +type = PO +source_lang = en + +[python-36.library--asyncio-eventloops] +trans.fr = library/asyncio-eventloops.po +type = PO +source_lang = en + +[python-36.library--allos] +trans.fr = library/allos.po +type = PO +source_lang = en + +[python-36.library--stat] +trans.fr = library/stat.po +type = PO +source_lang = en + +[python-36.library--curses] +trans.fr = library/curses.po +type = PO +source_lang = en + +[python-36.library--persistence] +trans.fr = library/persistence.po +type = PO +source_lang = en + +[python-36.library--trace] +trans.fr = library/trace.po +type = PO +source_lang = en + +[python-36.library--zipfile] +trans.fr = library/zipfile.po +type = PO +source_lang = en + +[python-36.library--mimetypes] +trans.fr = library/mimetypes.po +type = PO +source_lang = en + +[python-36.library--superseded] +trans.fr = library/superseded.po +type = PO +source_lang = en + +[python-36.library--internet] +trans.fr = library/internet.po +type = PO +source_lang = en + +[python-36.library--poplib] +trans.fr = library/poplib.po +type = PO +source_lang = en + +[python-36.library--language] +trans.fr = library/language.po +type = PO +source_lang = en + +[python-36.library--string] +trans.fr = library/string.po +type = PO +source_lang = en + +[python-36.library--mailcap] +trans.fr = library/mailcap.po +type = PO +source_lang = en + +[python-36.library--email_parser] +trans.fr = library/email.parser.po +type = PO +source_lang = en + +[python-36.library--bz2] +trans.fr = library/bz2.po +type = PO +source_lang = en + +[python-36.library--builtins] +trans.fr = library/builtins.po +type = PO +source_lang = en + +[python-36.library--logging_config] +trans.fr = library/logging.config.po +type = PO +source_lang = en + +[python-36.library--xml_sax_handler] +trans.fr = library/xml.sax.handler.po +type = PO +source_lang = en + +[python-36.library--intro] +trans.fr = library/intro.po +type = PO +source_lang = en + +[python-36.library--python] +trans.fr = library/python.po +type = PO +source_lang = en + +[python-36.library--tarfile] +trans.fr = library/tarfile.po +type = PO +source_lang = en + +[python-36.library--fnmatch] +trans.fr = library/fnmatch.po +type = PO +source_lang = en + +[python-36.library--tty] +trans.fr = library/tty.po +type = PO +source_lang = en + +[python-36.library--signal] +trans.fr = library/signal.po +type = PO +source_lang = en + +[python-36.library--contextlib] +trans.fr = library/contextlib.po +type = PO +source_lang = en + +[python-36.library--pkgutil] +trans.fr = library/pkgutil.po +type = PO +source_lang = en + +[python-36.library--codeop] +trans.fr = library/codeop.po +type = PO +source_lang = en + +[python-36.library--gettext] +trans.fr = library/gettext.po +type = PO +source_lang = en + +[python-36.library--enum] +trans.fr = library/enum.po +type = PO +source_lang = en + +[python-36.library--decimal] +trans.fr = library/decimal.po +type = PO +source_lang = en + +[python-36.library--asyncio] +trans.fr = library/asyncio.po +type = PO +source_lang = en + +[python-36.library--windows] +trans.fr = library/windows.po +type = PO +source_lang = en + +[python-36.library--urllib_request] +trans.fr = library/urllib.request.po +type = PO +source_lang = en + +[python-36.library--socket] +trans.fr = library/socket.po +type = PO +source_lang = en + +[python-36.library--mailbox] +trans.fr = library/mailbox.po +type = PO +source_lang = en + +[python-36.library--rlcompleter] +trans.fr = library/rlcompleter.po +type = PO +source_lang = en + +[python-36.library--gzip] +trans.fr = library/gzip.po +type = PO +source_lang = en + +[python-36.library--http_client] +trans.fr = library/http.client.po +type = PO +source_lang = en + +[python-36.library--pickle] +trans.fr = library/pickle.po +type = PO +source_lang = en + +[python-36.library--concurrent] +trans.fr = library/concurrent.po +type = PO +source_lang = en + +[python-36.library--timeit] +trans.fr = library/timeit.po +type = PO +source_lang = en + +[python-36.library--tkinter_tix] +trans.fr = library/tkinter.tix.po +type = PO +source_lang = en + +[python-36.library--readline] +trans.fr = library/readline.po +type = PO +source_lang = en + +[python-36.library--netrc] +trans.fr = library/netrc.po +type = PO +source_lang = en + +[python-36.library--asyncio-dev] +trans.fr = library/asyncio-dev.po +type = PO +source_lang = en + +[python-36.library--email_charset] +trans.fr = library/email.charset.po +type = PO +source_lang = en + +[python-36.library--venv] +trans.fr = library/venv.po +type = PO +source_lang = en + +[python-36.library--struct] +trans.fr = library/struct.po +type = PO +source_lang = en + +[python-36.library--dbm] +trans.fr = library/dbm.po +type = PO +source_lang = en + +[python-36.library--xdrlib] +trans.fr = library/xdrlib.po +type = PO +source_lang = en + +[python-36.library--markup] +trans.fr = library/markup.po +type = PO +source_lang = en + +[python-36.library--dummy_threading] +trans.fr = library/dummy_threading.po +type = PO +source_lang = en + +[python-36.library--xml_dom] +trans.fr = library/xml.dom.po +type = PO +source_lang = en + +[python-36.library--smtpd] +trans.fr = library/smtpd.po +type = PO +source_lang = en + +[python-36.library--idle] +trans.fr = library/idle.po +type = PO +source_lang = en + +[python-36.library--pipes] +trans.fr = library/pipes.po +type = PO +source_lang = en + +[python-36.library--chunk] +trans.fr = library/chunk.po +type = PO +source_lang = en + +[python-36.library--telnetlib] +trans.fr = library/telnetlib.po +type = PO +source_lang = en + +[python-36.library--filesys] +trans.fr = library/filesys.po +type = PO +source_lang = en + +[python-36.library--asynchat] +trans.fr = library/asynchat.po +type = PO +source_lang = en + +[python-36.library--numbers] +trans.fr = library/numbers.po +type = PO +source_lang = en + +[python-36.library--xmlrpc_server] +trans.fr = library/xmlrpc.server.po +type = PO +source_lang = en + +[python-36.library--plistlib] +trans.fr = library/plistlib.po +type = PO +source_lang = en + +[python-36.library--secrets] +trans.fr = library/secrets.po +type = PO +source_lang = en + +[python-36.library--marshal] +trans.fr = library/marshal.po +type = PO +source_lang = en + +[python-36.library--html_parser] +trans.fr = library/html.parser.po +type = PO +source_lang = en + +[python-36.library--netdata] +trans.fr = library/netdata.po +type = PO +source_lang = en + +[python-36.library--gc] +trans.fr = library/gc.po +type = PO +source_lang = en + +[python-36.library--fileformats] +trans.fr = library/fileformats.po +type = PO +source_lang = en + +[python-36.library--bisect] +trans.fr = library/bisect.po +type = PO +source_lang = en + +[python-36.library--symtable] +trans.fr = library/symtable.po +type = PO +source_lang = en + +[python-36.library--nis] +trans.fr = library/nis.po +type = PO +source_lang = en + +[python-36.library--html] +trans.fr = library/html.po +type = PO +source_lang = en + +[python-36.library--typing] +trans.fr = library/typing.po +type = PO +source_lang = en + +[python-36.library--weakref] +trans.fr = library/weakref.po +type = PO +source_lang = en + +[python-36.library--shlex] +trans.fr = library/shlex.po +type = PO +source_lang = en + +[python-36.library--binary] +trans.fr = library/binary.po +type = PO +source_lang = en + +[python-36.library--distutils] +trans.fr = library/distutils.po +type = PO +source_lang = en + +[python-36.library--email_generator] +trans.fr = library/email.generator.po +type = PO +source_lang = en + +[python-36.library--ensurepip] +trans.fr = library/ensurepip.po +type = PO +source_lang = en + +[python-36.library--importlib] +trans.fr = library/importlib.po +type = PO +source_lang = en + +[python-36.library--warnings] +trans.fr = library/warnings.po +type = PO +source_lang = en + +[python-36.library--tabnanny] +trans.fr = library/tabnanny.po +type = PO +source_lang = en + +[python-36.library--json] +trans.fr = library/json.po +type = PO +source_lang = en + +[python-36.library--reprlib] +trans.fr = library/reprlib.po +type = PO +source_lang = en + +[python-36.library--concurrent_futures] +trans.fr = library/concurrent.futures.po +type = PO +source_lang = en + +[python-36.library--tk] +trans.fr = library/tk.po +type = PO +source_lang = en + +[python-36.library--abc] +trans.fr = library/abc.po +type = PO +source_lang = en + +[python-36.library--filecmp] +trans.fr = library/filecmp.po +type = PO +source_lang = en + +[python-36.library--undoc] +trans.fr = library/undoc.po +type = PO +source_lang = en + +[python-36.library--functions] +trans.fr = library/functions.po +type = PO +source_lang = en + +[python-36.library--unittest_mock-examples] +trans.fr = library/unittest.mock-examples.po +type = PO +source_lang = en + +[python-36.library--heapq] +trans.fr = library/heapq.po +type = PO +source_lang = en + +[python-36.library--termios] +trans.fr = library/termios.po +type = PO +source_lang = en + +[python-36.library--errno] +trans.fr = library/errno.po +type = PO +source_lang = en + +[python-36.library--calendar] +trans.fr = library/calendar.po +type = PO +source_lang = en + +[python-36.library--configparser] +trans.fr = library/configparser.po +type = PO +source_lang = en + +[python-36.library--unittest] +trans.fr = library/unittest.po +type = PO +source_lang = en + +[python-36.library--socketserver] +trans.fr = library/socketserver.po +type = PO +source_lang = en + +[python-36.library--tokenize] +trans.fr = library/tokenize.po +type = PO +source_lang = en + +[python-36.library--random] +trans.fr = library/random.po +type = PO +source_lang = en + +[python-36.library--code] +trans.fr = library/code.po +type = PO +source_lang = en + +[python-36.library--sqlite3] +trans.fr = library/sqlite3.po +type = PO +source_lang = en + +[python-36.library--colorsys] +trans.fr = library/colorsys.po +type = PO +source_lang = en + +[python-36.library--quopri] +trans.fr = library/quopri.po +type = PO +source_lang = en + +[python-36.library--dis] +trans.fr = library/dis.po +type = PO +source_lang = en + +[python-36.library--stdtypes] +trans.fr = library/stdtypes.po +type = PO +source_lang = en + +[python-36.library--tracemalloc] +trans.fr = library/tracemalloc.po +type = PO +source_lang = en + +[python-36.library--queue] +trans.fr = library/queue.po +type = PO +source_lang = en + +[python-36.library--posix] +trans.fr = library/posix.po +type = PO +source_lang = en + +[python-36.library--turtle] +trans.fr = library/turtle.po +type = PO +source_lang = en + +[python-36.library--faulthandler] +trans.fr = library/faulthandler.po +type = PO +source_lang = en + +[python-36.library--email_examples] +trans.fr = library/email.examples.po +type = PO +source_lang = en + +[python-36.library--base64] +trans.fr = library/base64.po +type = PO +source_lang = en + +[python-36.library--index] +trans.fr = library/index.po +type = PO +source_lang = en + +[python-36.library--email_message] +trans.fr = library/email.message.po +type = PO +source_lang = en + +[python-36.library--xml_etree_elementtree] +trans.fr = library/xml.etree.elementtree.po +type = PO +source_lang = en + +[python-36.library--asyncio-task] +trans.fr = library/asyncio-task.po +type = PO +source_lang = en + +[python-36.library--asyncore] +trans.fr = library/asyncore.po +type = PO +source_lang = en + +[python-36.library--uu] +trans.fr = library/uu.po +type = PO +source_lang = en + +[python-36.library--urllib_robotparser] +trans.fr = library/urllib.robotparser.po +type = PO +source_lang = en + +[python-36.library--cgitb] +trans.fr = library/cgitb.po +type = PO +source_lang = en + +[python-36.library--pathlib] +trans.fr = library/pathlib.po +type = PO +source_lang = en + +[python-36.library--misc] +trans.fr = library/misc.po +type = PO +source_lang = en + +[python-36.library--_thread] +trans.fr = library/_thread.po +type = PO +source_lang = en + +[python-36.library--email_header] +trans.fr = library/email.header.po +type = PO +source_lang = en + +[python-36.library--runpy] +trans.fr = library/runpy.po +type = PO +source_lang = en + +[python-36.library--asyncio-eventloop] +trans.fr = library/asyncio-eventloop.po +type = PO +source_lang = en + +[python-36.library--textwrap] +trans.fr = library/textwrap.po +type = PO +source_lang = en + +[python-36.library--msilib] +trans.fr = library/msilib.po +type = PO +source_lang = en + +[python-36.library--debug] +trans.fr = library/debug.po +type = PO +source_lang = en + +[python-36.library--nntplib] +trans.fr = library/nntplib.po +type = PO +source_lang = en + +[python-36.library--ast] +trans.fr = library/ast.po +type = PO +source_lang = en + +[python-36.library--site] +trans.fr = library/site.po +type = PO +source_lang = en + +[python-36.library--uuid] +trans.fr = library/uuid.po +type = PO +source_lang = en + +[python-36.library--email_iterators] +trans.fr = library/email.iterators.po +type = PO +source_lang = en + +[python-36.library--threading] +trans.fr = library/threading.po +type = PO +source_lang = en + +[python-36.library--email_mime] +trans.fr = library/email.mime.po +type = PO +source_lang = en + +[python-36.library--shelve] +trans.fr = library/shelve.po +type = PO +source_lang = en + +[python-36.library--profile] +trans.fr = library/profile.po +type = PO +source_lang = en + +[python-36.library--math] +trans.fr = library/math.po +type = PO +source_lang = en + +[python-36.library--fileinput] +trans.fr = library/fileinput.po +type = PO +source_lang = en + +[python-36.library--select] +trans.fr = library/select.po +type = PO +source_lang = en + +[python-36.library--pprint] +trans.fr = library/pprint.po +type = PO +source_lang = en + +[python-36.library--datatypes] +trans.fr = library/datatypes.po +type = PO +source_lang = en + +[python-36.library--ssl] +trans.fr = library/ssl.po +type = PO +source_lang = en + +[python-36.library--asyncio-queue] +trans.fr = library/asyncio-queue.po +type = PO +source_lang = en + +[python-36.library--binhex] +trans.fr = library/binhex.po +type = PO +source_lang = en + +[python-36.library--io] +trans.fr = library/io.po +type = PO +source_lang = en + +[python-36.library--asyncio-protocol] +trans.fr = library/asyncio-protocol.po +type = PO +source_lang = en + +[python-36.library--othergui] +trans.fr = library/othergui.po +type = PO +source_lang = en + +[python-36.library--webbrowser] +trans.fr = library/webbrowser.po +type = PO +source_lang = en + +[python-36.library--hmac] +trans.fr = library/hmac.po +type = PO +source_lang = en + +[python-36.library--collections_abc] +trans.fr = library/collections.abc.po +type = PO +source_lang = en + +[python-36.library--ftplib] +trans.fr = library/ftplib.po +type = PO +source_lang = en + +[python-36.library--multiprocessing] +trans.fr = library/multiprocessing.po +type = PO +source_lang = en + +[python-36.library--types] +trans.fr = library/types.po +type = PO +source_lang = en + +[python-36.library--ipaddress] +trans.fr = library/ipaddress.po +type = PO +source_lang = en + +[python-36.library--fpectl] +trans.fr = library/fpectl.po +type = PO +source_lang = en + +[python-36.library--exceptions] +trans.fr = library/exceptions.po +type = PO +source_lang = en + +[python-36.library--asyncio-stream] +trans.fr = library/asyncio-stream.po +type = PO +source_lang = en + +[python-36.library--custominterp] +trans.fr = library/custominterp.po +type = PO +source_lang = en + +[python-36.library--codecs] +trans.fr = library/codecs.po +type = PO +source_lang = en + +[python-36.library--bdb] +trans.fr = library/bdb.po +type = PO +source_lang = en + +[python-36.library--archiving] +trans.fr = library/archiving.po +type = PO +source_lang = en + +[python-36.library--hashlib] +trans.fr = library/hashlib.po +type = PO +source_lang = en + +[python-36.library--tkinter] +trans.fr = library/tkinter.po +type = PO +source_lang = en + +[python-36.library--sys] +trans.fr = library/sys.po +type = PO +source_lang = en + +[python-36.library--cmath] +trans.fr = library/cmath.po +type = PO +source_lang = en + +[python-36.library--functional] +trans.fr = library/functional.po +type = PO +source_lang = en + +[python-36.library--html_entities] +trans.fr = library/html.entities.po +type = PO +source_lang = en + +[python-36.library--resource] +trans.fr = library/resource.po +type = PO +source_lang = en + +[python-36.library--pickletools] +trans.fr = library/pickletools.po +type = PO +source_lang = en + +[python-36.library--email_util] +trans.fr = library/email.util.po +type = PO +source_lang = en + +[python-36.library--xmlrpc] +trans.fr = library/xmlrpc.po +type = PO +source_lang = en + +[python-36.library--lzma] +trans.fr = library/lzma.po +type = PO +source_lang = en + +[python-36.library--syslog] +trans.fr = library/syslog.po +type = PO +source_lang = en + +[python-36.library--subprocess] +trans.fr = library/subprocess.po +type = PO +source_lang = en + +[python-36.library--pdb] +trans.fr = library/pdb.po +type = PO +source_lang = en + +[python-36.library--wsgiref] +trans.fr = library/wsgiref.po +type = PO +source_lang = en + +[python-36.library--formatter] +trans.fr = library/formatter.po +type = PO +source_lang = en + +[python-36.library--getopt] +trans.fr = library/getopt.po +type = PO +source_lang = en + +[python-36.library--cgi] +trans.fr = library/cgi.po +type = PO +source_lang = en + +[python-36.library--winsound] +trans.fr = library/winsound.po +type = PO +source_lang = en + +[python-36.library--audioop] +trans.fr = library/audioop.po +type = PO +source_lang = en + +[python-36.library--__main__] +trans.fr = library/__main__.po +type = PO +source_lang = en + +[python-36.library--sndhdr] +trans.fr = library/sndhdr.po +type = PO +source_lang = en + +[python-36.library--copy] +trans.fr = library/copy.po +type = PO +source_lang = en + +[python-36.library--email_contentmanager] +trans.fr = library/email.contentmanager.po +type = PO +source_lang = en + +[python-36.library--aifc] +trans.fr = library/aifc.po +type = PO +source_lang = en + +[python-36.library--msvcrt] +trans.fr = library/msvcrt.po +type = PO +source_lang = en + +[python-36.library--xmlrpc_client] +trans.fr = library/xmlrpc.client.po +type = PO +source_lang = en + +[python-36.library--logging_handlers] +trans.fr = library/logging.handlers.po +type = PO +source_lang = en + +[python-36.library--grp] +trans.fr = library/grp.po +type = PO +source_lang = en + +[python-36.library--logging] +trans.fr = library/logging.po +type = PO +source_lang = en + +[python-36.library--i18n] +trans.fr = library/i18n.po +type = PO +source_lang = en + +[python-36.library--zipimport] +trans.fr = library/zipimport.po +type = PO +source_lang = en + +[python-36.library--curses_ascii] +trans.fr = library/curses.ascii.po +type = PO +source_lang = en + +[python-36.library--operator] +trans.fr = library/operator.po +type = PO +source_lang = en + +[python-36.library--winreg] +trans.fr = library/winreg.po +type = PO +source_lang = en + +[python-36.library--frameworks] +trans.fr = library/frameworks.po +type = PO +source_lang = en + +[python-36.library--ossaudiodev] +trans.fr = library/ossaudiodev.po +type = PO +source_lang = en + +[python-36.library--urllib] +trans.fr = library/urllib.po +type = PO +source_lang = en + +[python-36.library--os] +trans.fr = library/os.po +type = PO +source_lang = en + +[python-36.library--smtplib] +trans.fr = library/smtplib.po +type = PO +source_lang = en + +[python-36.library--copyreg] +trans.fr = library/copyreg.po +type = PO +source_lang = en + +[python-36.library--test] +trans.fr = library/test.po +type = PO +source_lang = en + +[python-36.library--xml_sax] +trans.fr = library/xml.sax.po +type = PO +source_lang = en + +[python-36.library--2to3] +trans.fr = library/2to3.po +type = PO +source_lang = en + +[python-36.library--http_server] +trans.fr = library/http.server.po +type = PO +source_lang = en + +[python-36.library--email_compat32-message] +trans.fr = library/email.compat32-message.po +type = PO +source_lang = en + +[python-36.library--zlib] +trans.fr = library/zlib.po +type = PO +source_lang = en + +[python-36.distutils--configfile] +trans.fr = distutils/configfile.po +type = PO +source_lang = en + +[python-36.distutils--sourcedist] +trans.fr = distutils/sourcedist.po +type = PO +source_lang = en + +[python-36.distutils--extending] +trans.fr = distutils/extending.po +type = PO +source_lang = en + +[python-36.distutils--setupscript] +trans.fr = distutils/setupscript.po +type = PO +source_lang = en + +[python-36.distutils--commandref] +trans.fr = distutils/commandref.po +type = PO +source_lang = en + +[python-36.distutils--builtdist] +trans.fr = distutils/builtdist.po +type = PO +source_lang = en + +[python-36.distutils--introduction] +trans.fr = distutils/introduction.po +type = PO +source_lang = en + +[python-36.distutils--index] +trans.fr = distutils/index.po +type = PO +source_lang = en + +[python-36.distutils--packageindex] +trans.fr = distutils/packageindex.po +type = PO +source_lang = en + +[python-36.distutils--examples] +trans.fr = distutils/examples.po +type = PO +source_lang = en + +[python-36.distutils--uploading] +trans.fr = distutils/uploading.po +type = PO +source_lang = en + +[python-36.distutils--apiref] +trans.fr = distutils/apiref.po +type = PO +source_lang = en + +[python-36.distributing--index] +trans.fr = distributing/index.po +type = PO +source_lang = en + +[python-36.faq--extending] +trans.fr = faq/extending.po +type = PO +source_lang = en + +[python-36.faq--windows] +trans.fr = faq/windows.po +type = PO +source_lang = en + +[python-36.faq--general] +trans.fr = faq/general.po +type = PO +source_lang = en + +[python-36.faq--library] +trans.fr = faq/library.po +type = PO +source_lang = en + +[python-36.faq--gui] +trans.fr = faq/gui.po +type = PO +source_lang = en + +[python-36.faq--installed] +trans.fr = faq/installed.po +type = PO +source_lang = en + +[python-36.faq--index] +trans.fr = faq/index.po +type = PO +source_lang = en + +[python-36.faq--design] +trans.fr = faq/design.po +type = PO +source_lang = en + +[python-36.faq--programming] +trans.fr = faq/programming.po +type = PO +source_lang = en + +[python-36.using--unix] +trans.fr = using/unix.po +type = PO +source_lang = en + +[python-36.using--mac] +trans.fr = using/mac.po +type = PO +source_lang = en + +[python-36.using--cmdline] +trans.fr = using/cmdline.po +type = PO +source_lang = en + +[python-36.using--windows] +trans.fr = using/windows.po +type = PO +source_lang = en + +[python-36.using--index] +trans.fr = using/index.po +type = PO +source_lang = en + +[python-36.howto--clinic] +trans.fr = howto/clinic.po +type = PO +source_lang = en + +[python-36.howto--urllib2] +trans.fr = howto/urllib2.po +type = PO +source_lang = en + +[python-36.howto--argparse] +trans.fr = howto/argparse.po +type = PO +source_lang = en + +[python-36.howto--curses] +trans.fr = howto/curses.po +type = PO +source_lang = en + +[python-36.howto--logging-cookbook] +trans.fr = howto/logging-cookbook.po +type = PO +source_lang = en + +[python-36.howto--sockets] +trans.fr = howto/sockets.po +type = PO +source_lang = en + +[python-36.howto--pyporting] +trans.fr = howto/pyporting.po +type = PO +source_lang = en + +[python-36.howto--index] +trans.fr = howto/index.po +type = PO +source_lang = en + +[python-36.howto--unicode] +trans.fr = howto/unicode.po +type = PO +source_lang = en + +[python-36.howto--instrumentation] +trans.fr = howto/instrumentation.po +type = PO +source_lang = en + +[python-36.howto--cporting] +trans.fr = howto/cporting.po +type = PO +source_lang = en + +[python-36.howto--ipaddress] +trans.fr = howto/ipaddress.po +type = PO +source_lang = en + +[python-36.howto--sorting] +trans.fr = howto/sorting.po +type = PO +source_lang = en + +[python-36.howto--functional] +trans.fr = howto/functional.po +type = PO +source_lang = en + +[python-36.howto--logging] +trans.fr = howto/logging.po +type = PO +source_lang = en + +[python-36.howto--regex] +trans.fr = howto/regex.po +type = PO +source_lang = en + +[python-36.howto--descriptor] +trans.fr = howto/descriptor.po +type = PO +source_lang = en + +[python-36.install--index] +trans.fr = install/index.po +type = PO +source_lang = en + +[python-36.reference--simple_stmts] +trans.fr = reference/simple_stmts.po +type = PO +source_lang = en + +[python-36.reference--expressions] +trans.fr = reference/expressions.po +type = PO +source_lang = en + +[python-36.reference--compound_stmts] +trans.fr = reference/compound_stmts.po +type = PO +source_lang = en + +[python-36.reference--introduction] +trans.fr = reference/introduction.po +type = PO +source_lang = en + +[python-36.reference--import] +trans.fr = reference/import.po +type = PO +source_lang = en + +[python-36.reference--grammar] +trans.fr = reference/grammar.po +type = PO +source_lang = en + +[python-36.reference--datamodel] +trans.fr = reference/datamodel.po +type = PO +source_lang = en + +[python-36.reference--index] +trans.fr = reference/index.po +type = PO +source_lang = en + +[python-36.reference--toplevel_components] +trans.fr = reference/toplevel_components.po +type = PO +source_lang = en + +[python-36.reference--lexical_analysis] +trans.fr = reference/lexical_analysis.po +type = PO +source_lang = en + +[python-36.reference--executionmodel] +trans.fr = reference/executionmodel.po +type = PO +source_lang = en + +[python-36.whatsnew--2_6] +trans.fr = whatsnew/2.6.po +type = PO +source_lang = en + +[python-36.whatsnew--2_3] +trans.fr = whatsnew/2.3.po +type = PO +source_lang = en + +[python-36.whatsnew--changelog] +trans.fr = whatsnew/changelog.po +type = PO +source_lang = en + +[python-36.whatsnew--2_2] +trans.fr = whatsnew/2.2.po +type = PO +source_lang = en + +[python-36.whatsnew--3_3] +trans.fr = whatsnew/3.3.po +type = PO +source_lang = en + +[python-36.whatsnew--3_4] +trans.fr = whatsnew/3.4.po +type = PO +source_lang = en + +[python-36.whatsnew--3_2] +trans.fr = whatsnew/3.2.po +type = PO +source_lang = en + +[python-36.whatsnew--2_7] +trans.fr = whatsnew/2.7.po +type = PO +source_lang = en + +[python-36.whatsnew--3_1] +trans.fr = whatsnew/3.1.po +type = PO +source_lang = en + +[python-36.whatsnew--3_0] +trans.fr = whatsnew/3.0.po +type = PO +source_lang = en + +[python-36.whatsnew--index] +trans.fr = whatsnew/index.po +type = PO +source_lang = en + +[python-36.whatsnew--2_0] +trans.fr = whatsnew/2.0.po +type = PO +source_lang = en + +[python-36.whatsnew--2_4] +trans.fr = whatsnew/2.4.po +type = PO +source_lang = en + +[python-36.whatsnew--3_5] +trans.fr = whatsnew/3.5.po +type = PO +source_lang = en + +[python-36.whatsnew--2_5] +trans.fr = whatsnew/2.5.po +type = PO +source_lang = en + +[python-36.whatsnew--2_1] +trans.fr = whatsnew/2.1.po +type = PO +source_lang = en + +[python-36.whatsnew--3_6] +trans.fr = whatsnew/3.6.po +type = PO +source_lang = en + +[python-36.tutorial--modules] +trans.fr = tutorial/modules.po +type = PO +source_lang = en + +[python-36.tutorial--stdlib2] +trans.fr = tutorial/stdlib2.po +type = PO +source_lang = en + +[python-36.tutorial--whatnow] +trans.fr = tutorial/whatnow.po +type = PO +source_lang = en + +[python-36.tutorial--floatingpoint] +trans.fr = tutorial/floatingpoint.po +type = PO +source_lang = en + +[python-36.tutorial--inputoutput] +trans.fr = tutorial/inputoutput.po +type = PO +source_lang = en + +[python-36.tutorial--classes] +trans.fr = tutorial/classes.po +type = PO +source_lang = en + +[python-36.tutorial--appendix] +trans.fr = tutorial/appendix.po +type = PO +source_lang = en + +[python-36.tutorial--interactive] +trans.fr = tutorial/interactive.po +type = PO +source_lang = en + +[python-36.tutorial--venv] +trans.fr = tutorial/venv.po +type = PO +source_lang = en + +[python-36.tutorial--introduction] +trans.fr = tutorial/introduction.po +type = PO +source_lang = en + +[python-36.tutorial--index] +trans.fr = tutorial/index.po +type = PO +source_lang = en + +[python-36.tutorial--controlflow] +trans.fr = tutorial/controlflow.po +type = PO +source_lang = en + +[python-36.tutorial--appetite] +trans.fr = tutorial/appetite.po +type = PO +source_lang = en + +[python-36.tutorial--errors] +trans.fr = tutorial/errors.po +type = PO +source_lang = en + +[python-36.tutorial--interpreter] +trans.fr = tutorial/interpreter.po +type = PO +source_lang = en + +[python-36.tutorial--datastructures] +trans.fr = tutorial/datastructures.po +type = PO +source_lang = en + +[python-36.tutorial--stdlib] +trans.fr = tutorial/stdlib.po +type = PO +source_lang = en + +[python-36.extending--building] +trans.fr = extending/building.po +type = PO +source_lang = en + +[python-36.extending--extending] +trans.fr = extending/extending.po +type = PO +source_lang = en + +[python-36.extending--windows] +trans.fr = extending/windows.po +type = PO +source_lang = en + +[python-36.extending--index] +trans.fr = extending/index.po +type = PO +source_lang = en + +[python-36.extending--embedding] +trans.fr = extending/embedding.po +type = PO +source_lang = en + +[python-36.extending--newtypes] +trans.fr = extending/newtypes.po +type = PO +source_lang = en + +[python-36.installing--index] +trans.fr = installing/index.po +type = PO +source_lang = en + +[python-36.c-api--conversion] +trans.fr = c-api/conversion.po +type = PO +source_lang = en + +[python-36.c-api--datetime] +trans.fr = c-api/datetime.po +type = PO +source_lang = en + +[python-36.c-api--memory] +trans.fr = c-api/memory.po +type = PO +source_lang = en + +[python-36.c-api--coro] +trans.fr = c-api/coro.po +type = PO +source_lang = en + +[python-36.c-api--file] +trans.fr = c-api/file.po +type = PO +source_lang = en + +[python-36.c-api--object] +trans.fr = c-api/object.po +type = PO +source_lang = en + +[python-36.c-api--capsule] +trans.fr = c-api/capsule.po +type = PO +source_lang = en + +[python-36.c-api--function] +trans.fr = c-api/function.po +type = PO +source_lang = en + +[python-36.c-api--refcounting] +trans.fr = c-api/refcounting.po +type = PO +source_lang = en + +[python-36.c-api--cell] +trans.fr = c-api/cell.po +type = PO +source_lang = en + +[python-36.c-api--none] +trans.fr = c-api/none.po +type = PO +source_lang = en + +[python-36.c-api--allocation] +trans.fr = c-api/allocation.po +type = PO +source_lang = en + +[python-36.c-api--intro] +trans.fr = c-api/intro.po +type = PO +source_lang = en + +[python-36.c-api--number] +trans.fr = c-api/number.po +type = PO +source_lang = en + +[python-36.c-api--float] +trans.fr = c-api/float.po +type = PO +source_lang = en + +[python-36.c-api--list] +trans.fr = c-api/list.po +type = PO +source_lang = en + +[python-36.c-api--memoryview] +trans.fr = c-api/memoryview.po +type = PO +source_lang = en + +[python-36.c-api--structures] +trans.fr = c-api/structures.po +type = PO +source_lang = en + +[python-36.c-api--mapping] +trans.fr = c-api/mapping.po +type = PO +source_lang = en + +[python-36.c-api--iterator] +trans.fr = c-api/iterator.po +type = PO +source_lang = en + +[python-36.c-api--abstract] +trans.fr = c-api/abstract.po +type = PO +source_lang = en + +[python-36.c-api--gen] +trans.fr = c-api/gen.po +type = PO +source_lang = en + +[python-36.c-api--arg] +trans.fr = c-api/arg.po +type = PO +source_lang = en + +[python-36.c-api--method] +trans.fr = c-api/method.po +type = PO +source_lang = en + +[python-36.c-api--sequence] +trans.fr = c-api/sequence.po +type = PO +source_lang = en + +[python-36.c-api--marshal] +trans.fr = c-api/marshal.po +type = PO +source_lang = en + +[python-36.c-api--import] +trans.fr = c-api/import.po +type = PO +source_lang = en + +[python-36.c-api--weakref] +trans.fr = c-api/weakref.po +type = PO +source_lang = en + +[python-36.c-api--dict] +trans.fr = c-api/dict.po +type = PO +source_lang = en + +[python-36.c-api--buffer] +trans.fr = c-api/buffer.po +type = PO +source_lang = en + +[python-36.c-api--code] +trans.fr = c-api/code.po +type = PO +source_lang = en + +[python-36.c-api--index] +trans.fr = c-api/index.po +type = PO +source_lang = en + +[python-36.c-api--concrete] +trans.fr = c-api/concrete.po +type = PO +source_lang = en + +[python-36.c-api--unicode] +trans.fr = c-api/unicode.po +type = PO +source_lang = en + +[python-36.c-api--bytes] +trans.fr = c-api/bytes.po +type = PO +source_lang = en + +[python-36.c-api--init] +trans.fr = c-api/init.po +type = PO +source_lang = en + +[python-36.c-api--bool] +trans.fr = c-api/bool.po +type = PO +source_lang = en + +[python-36.c-api--reflection] +trans.fr = c-api/reflection.po +type = PO +source_lang = en + +[python-36.c-api--gcsupport] +trans.fr = c-api/gcsupport.po +type = PO +source_lang = en + +[python-36.c-api--module] +trans.fr = c-api/module.po +type = PO +source_lang = en + +[python-36.c-api--veryhigh] +trans.fr = c-api/veryhigh.po +type = PO +source_lang = en + +[python-36.c-api--exceptions] +trans.fr = c-api/exceptions.po +type = PO +source_lang = en + +[python-36.c-api--objimpl] +trans.fr = c-api/objimpl.po +type = PO +source_lang = en + +[python-36.c-api--type] +trans.fr = c-api/type.po +type = PO +source_lang = en + +[python-36.c-api--set] +trans.fr = c-api/set.po +type = PO +source_lang = en + +[python-36.c-api--codec] +trans.fr = c-api/codec.po +type = PO +source_lang = en + +[python-36.c-api--typeobj] +trans.fr = c-api/typeobj.po +type = PO +source_lang = en + +[python-36.c-api--sys] +trans.fr = c-api/sys.po +type = PO +source_lang = en + +[python-36.c-api--bytearray] +trans.fr = c-api/bytearray.po +type = PO +source_lang = en + +[python-36.c-api--tuple] +trans.fr = c-api/tuple.po +type = PO +source_lang = en + +[python-36.c-api--apiabiversion] +trans.fr = c-api/apiabiversion.po +type = PO +source_lang = en + +[python-36.c-api--stable] +trans.fr = c-api/stable.po +type = PO +source_lang = en + +[python-36.c-api--objbuffer] +trans.fr = c-api/objbuffer.po +type = PO +source_lang = en + +[python-36.c-api--slice] +trans.fr = c-api/slice.po +type = PO +source_lang = en + +[python-36.c-api--long] +trans.fr = c-api/long.po +type = PO +source_lang = en + +[python-36.c-api--iter] +trans.fr = c-api/iter.po +type = PO +source_lang = en + +[python-36.c-api--utilities] +trans.fr = c-api/utilities.po +type = PO +source_lang = en + +[python-36.c-api--complex] +trans.fr = c-api/complex.po +type = PO +source_lang = en + +[python-36.c-api--descriptor] +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 a5618d1a5..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 ------------------------------------ @@ -11,7 +17,7 @@ you to participate, we are proposing an agreement that you will provide your improvements to Python's documentation or the translation of Python's documentation for the PSF's use under the CC0 license (available at -`https://creativecommons.org/publicdomain/zero/1.0/legalcode`_). In +https://creativecommons.org/publicdomain/zero/1.0/legalcode). In return, you may publicly claim credit for the portion of the translation you contributed and if your translation is accepted by the PSF, you may (but are not required to) submit a patch including an @@ -22,203 +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 ----- - -- Wait for the Documentation Contribution Agreement to be redacted -- Setup "The Knight Who Say Ni" - - -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 `_. - - -Maintenance ------------ - -Find fuzzy strings: - -.. code-block:: bash - - grep -c fuzzy **/*.po | grep -v ':1$\|:0$' - - -Merge pot files from cpython doc: - -.. code-block:: bash - - VERSION=3.6 - git clone --depth 1 --branch $VERSION https://github.com/python/cpython.git /tmp/cpython/ - (cd /tmp/cpython/ && sphinx-build -Q -b gettext -D gettext_compact=0 Doc pot/) - POT_PATH="/tmp/cpython/pot/" - PO_PATH="./" - - find "$POT_PATH" -name '*.pot' | - while read -r POT - do - PO="$PO_PATH/$(echo "$POT" | sed "s#$POT_PATH##; 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 diff --git a/TRANSLATORS b/TRANSLATORS index 96246b7db..acae258f2 100644 --- a/TRANSLATORS +++ b/TRANSLATORS @@ -1 +1,7 @@ +Baptiste Fontaine +Julien Palard 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 61ea1697e..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-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: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 7bbc171a4..473afd23e 100644 --- a/c-api/allocation.po +++ b/c-api/allocation.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: 2017-05-27 19:40+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 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 881452311..e4a0c2e68 100644 --- a/c-api/arg.po +++ b/c-api/arg.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:57+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" #: ../Doc/c-api/arg.rst:6 msgid "Parsing arguments and building values" @@ -79,6 +79,9 @@ msgid "" "These formats allow accessing an object as a contiguous chunk of memory. You " "don't have to provide raw storage for the returned unicode or bytes area." msgstr "" +"Ces formats permettent d'accéder à un objet sous forme d'un fragment de " +"mémoire contigüe. Il n'est pas nécessaire d'allouer la mémoire pour " +"l'*unicode* ou le *bytes* renvoyé." #: ../Doc/c-api/arg.rst:37 msgid "" @@ -87,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 "" @@ -98,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." @@ -128,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 " @@ -139,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 "" @@ -150,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 "" @@ -158,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 "" +msgstr "``s*`` (:class:`str` ou :term:`bytes-like object`) [``Py_buffer``]" #: ../Doc/c-api/arg.rst:88 msgid "" @@ -176,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 "" @@ -190,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 "" @@ -207,6 +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``]" #: ../Doc/c-api/arg.rst:105 msgid "" @@ -231,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 "" @@ -239,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 "" @@ -270,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 "" @@ -281,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 "" @@ -291,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 \\*]" @@ -305,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: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:157 ../Doc/c-api/arg.rst:562 +#: ../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*." @@ -329,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 "" +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*." @@ -341,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 "" +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. " @@ -364,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 " @@ -386,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 " @@ -394,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-" @@ -433,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 *" @@ -446,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 " @@ -455,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." @@ -463,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." @@ -524,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." @@ -544,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." @@ -564,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 "" +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 "" +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 "" +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`." @@ -618,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 " @@ -663,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 " @@ -676,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 " @@ -688,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\\*` " @@ -698,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 " @@ -707,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 " @@ -724,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 " @@ -737,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 --- " @@ -748,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:" @@ -756,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 " @@ -769,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 " @@ -781,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 ``;" @@ -804,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 " @@ -825,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\\*` " @@ -843,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*-" @@ -869,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 " @@ -899,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 " @@ -917,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. " @@ -941,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 " @@ -950,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. " @@ -961,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 " @@ -969,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 " @@ -1145,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:" @@ -1172,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 ad3d49f82..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,18 +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 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" @@ -41,12 +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 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 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" @@ -57,31 +64,42 @@ 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 " +"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 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 "" +"Renvoie la taille de *bytearray* après vérification de la présence d'un " +"pointeur *NULL*." #: ../Doc/c-api/bytearray.rst:66 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 "" +msgstr "Redimensionne le tampon interne de *bytearray* à la taille *len*." #: ../Doc/c-api/bytearray.rst:76 msgid "Macros" @@ -95,8 +113,8 @@ msgstr "" #: ../Doc/c-api/bytearray.rst:82 msgid "Macro version of :c:func:`PyByteArray_AsString`." -msgstr "" +msgstr "Version macro de :c:func:`PyByteArray_AsString`." #: ../Doc/c-api/bytearray.rst:87 msgid "Macro version of :c:func:`PyByteArray_Size`." -msgstr "" +msgstr "Version macro de :c:func:`PyByteArray_Size`." diff --git a/c-api/bytes.po b/c-api/bytes.po index 4e295d33b..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" @@ -104,7 +104,7 @@ msgstr "" #: ../Doc/c-api/bytes.rst:72 ../Doc/c-api/bytes.rst:75 #: ../Doc/c-api/bytes.rst:93 ../Doc/c-api/bytes.rst:96 msgid "int" -msgstr "int" +msgstr "*int*" #: ../Doc/c-api/bytes.rst:72 msgid "A single byte, represented as a C int." @@ -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/conversion.po b/c-api/conversion.po index fcb72e14e..d7c804b1e 100644 --- a/c-api/conversion.po +++ b/c-api/conversion.po @@ -25,7 +25,7 @@ msgstr "Conversion et formatage de chaînes" msgid "Functions for number conversion and formatted string output." msgstr "" "Fonctions de conversion pour les nombres et pour la sortie des chaînes " -"formattées." +"formatées." #: ../Doc/c-api/conversion.rst:13 msgid "" 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 488658f50..04e1d9908 100644 --- a/c-api/exceptions.po +++ b/c-api/exceptions.po @@ -7,14 +7,14 @@ 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 19:52+0200\n" +"POT-Creation-Date: 2017-08-01 13:21+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" -"Last-Translator: Julien Palard \n" -"Language-Team: \n" "X-Generator: Poedit 1.8.11\n" #: ../Doc/c-api/exceptions.rst:8 @@ -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 4a9ca825f..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-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" @@ -52,7 +52,7 @@ msgstr "" #: ../Doc/c-api/module.rst:53 msgid "" -"Similar to :c:func:`PyImport_NewObject`, but the name is a UTF-8 encoded " +"Similar to :c:func:`PyModule_NewObject`, but the name is a UTF-8 encoded " "string instead of a Unicode object." msgstr "" @@ -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 b19a599a4..772b2aca5 100644 --- a/c-api/structures.po +++ b/c-api/structures.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-09-21 09:15+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -133,14 +133,17 @@ msgid "" 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 msgid "C Type" msgstr "Type C" #: ../Doc/c-api/structures.rst:129 ../Doc/c-api/structures.rst:240 +#: ../Doc/c-api/structures.rst:305 msgid "Meaning" msgstr "Signification" @@ -150,7 +153,8 @@ msgstr "" #: ../Doc/c-api/structures.rst:131 ../Doc/c-api/structures.rst:139 #: ../Doc/c-api/structures.rst:242 ../Doc/c-api/structures.rst:255 -#: ../Doc/c-api/structures.rst:271 +#: ../Doc/c-api/structures.rst:271 ../Doc/c-api/structures.rst:307 +#: ../Doc/c-api/structures.rst:315 msgid "char \\*" msgstr "" @@ -177,7 +181,7 @@ msgstr "" #: ../Doc/c-api/structures.rst:136 ../Doc/c-api/structures.rst:244 #: ../Doc/c-api/structures.rst:251 ../Doc/c-api/structures.rst:267 msgid "int" -msgstr "int" +msgstr "*int*" #: ../Doc/c-api/structures.rst:136 msgid "flag bits indicating how the call should be constructed" @@ -376,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" @@ -421,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" @@ -429,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" @@ -437,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" @@ -445,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" @@ -465,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" @@ -488,3 +492,89 @@ msgid "" "macro:`READONLY`. Only :c:macro:`T_OBJECT` and :c:macro:`T_OBJECT_EX` " "members can be deleted. (They are set to *NULL*)." msgstr "" + +#: ../Doc/c-api/structures.rst:301 +msgid "" +"Structure to define property-like access for a type. See also description of " +"the :c:member:`PyTypeObject.tp_getset` slot." +msgstr "" + +#: ../Doc/c-api/structures.rst:307 +msgid "name" +msgstr "" + +#: ../Doc/c-api/structures.rst:307 +msgid "attribute name" +msgstr "" + +#: ../Doc/c-api/structures.rst:309 +msgid "get" +msgstr "" + +#: ../Doc/c-api/structures.rst:309 +msgid "getter" +msgstr "" + +#: ../Doc/c-api/structures.rst:309 +msgid "C Function to get the attribute" +msgstr "" + +#: ../Doc/c-api/structures.rst:311 +msgid "set" +msgstr "" + +#: ../Doc/c-api/structures.rst:311 +msgid "setter" +msgstr "" + +#: ../Doc/c-api/structures.rst:311 +msgid "" +"optional C function to set or delete the attribute, if omitted the attribute " +"is readonly" +msgstr "" + +#: ../Doc/c-api/structures.rst:315 +msgid "doc" +msgstr "" + +#: ../Doc/c-api/structures.rst:315 +msgid "optional docstring" +msgstr "" + +#: ../Doc/c-api/structures.rst:317 +msgid "closure" +msgstr "" + +#: ../Doc/c-api/structures.rst:317 +msgid "void \\*" +msgstr "" + +#: ../Doc/c-api/structures.rst:317 +msgid "" +"optional function pointer, providing additional data for getter and setter" +msgstr "" + +#: ../Doc/c-api/structures.rst:322 +msgid "" +"The ``get`` function takes one :c:type:`PyObject\\*` parameter (the " +"instance) and a function pointer (the associated ``closure``)::" +msgstr "" + +#: ../Doc/c-api/structures.rst:327 +msgid "" +"It should return a new reference on success or *NULL* with a set exception " +"on failure." +msgstr "" + +#: ../Doc/c-api/structures.rst:330 +msgid "" +"``set`` functions take two :c:type:`PyObject\\*` parameters (the instance " +"and the value to be set) and a function pointer (the associated " +"``closure``)::" +msgstr "" + +#: ../Doc/c-api/structures.rst:335 +msgid "" +"In case the attribute should be deleted the second parameter is *NULL*. " +"Should return ``0`` on success or ``-1`` with a set exception on failure." +msgstr "" 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 2eca84a0e..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-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,7 +19,7 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:6 msgid "Type Objects" -msgstr "" +msgstr "Objets type" #: ../Doc/c-api/typeobj.rst:8 msgid "" @@ -120,9 +120,9 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:86 ../Doc/c-api/typeobj.rst:188 #: ../Doc/c-api/typeobj.rst:255 ../Doc/c-api/typeobj.rst:322 #: ../Doc/c-api/typeobj.rst:340 ../Doc/c-api/typeobj.rst:666 -#: ../Doc/c-api/typeobj.rst:683 ../Doc/c-api/typeobj.rst:778 -#: ../Doc/c-api/typeobj.rst:873 ../Doc/c-api/typeobj.rst:966 -#: ../Doc/c-api/typeobj.rst:1021 +#: ../Doc/c-api/typeobj.rst:683 ../Doc/c-api/typeobj.rst:763 +#: ../Doc/c-api/typeobj.rst:858 ../Doc/c-api/typeobj.rst:951 +#: ../Doc/c-api/typeobj.rst:1006 msgid "This field is inherited by subtypes." msgstr "" @@ -761,7 +761,7 @@ msgstr "" #: ../Doc/c-api/typeobj.rst:611 msgid "Constant" -msgstr "" +msgstr "Constante" #: ../Doc/c-api/typeobj.rst:611 msgid "Comparison" @@ -951,11 +951,7 @@ msgid "" "through a different mechanism)." msgstr "" -#: ../Doc/c-api/typeobj.rst:724 -msgid "Docs for PyGetSetDef::" -msgstr "" - -#: ../Doc/c-api/typeobj.rst:740 +#: ../Doc/c-api/typeobj.rst:725 msgid "" "An optional pointer to a base type from which type properties are " "inherited. At this level, only single inheritance is supported; multiple " @@ -963,18 +959,18 @@ msgid "" "metatype." msgstr "" -#: ../Doc/c-api/typeobj.rst:744 +#: ../Doc/c-api/typeobj.rst:729 msgid "" "This field is not inherited by subtypes (obviously), but it defaults to " "``&PyBaseObject_Type`` (which to Python programmers is known as the type :" "class:`object`)." msgstr "" -#: ../Doc/c-api/typeobj.rst:751 +#: ../Doc/c-api/typeobj.rst:736 msgid "The type's dictionary is stored here by :c:func:`PyType_Ready`." msgstr "" -#: ../Doc/c-api/typeobj.rst:753 +#: ../Doc/c-api/typeobj.rst:738 msgid "" "This field should normally be initialized to *NULL* before PyType_Ready is " "called; it may also be initialized to a dictionary containing initial " @@ -983,41 +979,41 @@ msgid "" "they don't correspond to overloaded operations (like :meth:`__add__`)." msgstr "" -#: ../Doc/c-api/typeobj.rst:759 +#: ../Doc/c-api/typeobj.rst:744 msgid "" "This field is not inherited by subtypes (though the attributes defined in " "here are inherited through a different mechanism)." msgstr "" -#: ../Doc/c-api/typeobj.rst:764 +#: ../Doc/c-api/typeobj.rst:749 msgid "" "It is not safe to use :c:func:`PyDict_SetItem` on or otherwise modify :c:" "member:`~PyTypeObject.tp_dict` with the dictionary C-API." msgstr "" -#: ../Doc/c-api/typeobj.rst:770 +#: ../Doc/c-api/typeobj.rst:755 msgid "An optional pointer to a \"descriptor get\" function." msgstr "" -#: ../Doc/c-api/typeobj.rst:772 ../Doc/c-api/typeobj.rst:786 -#: ../Doc/c-api/typeobj.rst:858 ../Doc/c-api/typeobj.rst:880 -#: ../Doc/c-api/typeobj.rst:911 +#: ../Doc/c-api/typeobj.rst:757 ../Doc/c-api/typeobj.rst:771 +#: ../Doc/c-api/typeobj.rst:843 ../Doc/c-api/typeobj.rst:865 +#: ../Doc/c-api/typeobj.rst:896 msgid "The function signature is ::" msgstr "" -#: ../Doc/c-api/typeobj.rst:783 +#: ../Doc/c-api/typeobj.rst:768 msgid "" "An optional pointer to a function for setting and deleting a descriptor's " "value." msgstr "" -#: ../Doc/c-api/typeobj.rst:790 +#: ../Doc/c-api/typeobj.rst:775 msgid "" "The *value* argument is set to *NULL* to delete the value. This field is " "inherited by subtypes." msgstr "" -#: ../Doc/c-api/typeobj.rst:798 +#: ../Doc/c-api/typeobj.rst:783 msgid "" "If the instances of this type have a dictionary containing instance " "variables, this field is non-zero and contains the offset in the instances " @@ -1025,13 +1021,13 @@ msgid "" "func:`PyObject_GenericGetAttr`." msgstr "" -#: ../Doc/c-api/typeobj.rst:803 +#: ../Doc/c-api/typeobj.rst:788 msgid "" "Do not confuse this field with :c:member:`~PyTypeObject.tp_dict`; that is " "the dictionary for attributes of the type object itself." msgstr "" -#: ../Doc/c-api/typeobj.rst:806 +#: ../Doc/c-api/typeobj.rst:791 msgid "" "If the value of this field is greater than zero, it specifies the offset " "from the start of the instance structure. If the value is less than zero, " @@ -1047,13 +1043,13 @@ msgid "" "the very end of the structure." msgstr "" -#: ../Doc/c-api/typeobj.rst:818 +#: ../Doc/c-api/typeobj.rst:803 msgid "" "The real dictionary offset in an instance can be computed from a negative :c:" "member:`~PyTypeObject.tp_dictoffset` as follows::" msgstr "" -#: ../Doc/c-api/typeobj.rst:825 +#: ../Doc/c-api/typeobj.rst:810 msgid "" "where :c:member:`~PyTypeObject.tp_basicsize`, :c:member:`~PyTypeObject." "tp_itemsize` and :c:member:`~PyTypeObject.tp_dictoffset` are taken from the " @@ -1063,7 +1059,7 @@ msgid "" "it is done for you by :c:func:`_PyObject_GetDictPtr`.)" msgstr "" -#: ../Doc/c-api/typeobj.rst:831 +#: ../Doc/c-api/typeobj.rst:816 msgid "" "This field is inherited by subtypes, but see the rules listed below. A " "subtype may override this offset; this means that the subtype instances " @@ -1072,7 +1068,7 @@ msgid "" "should not be a problem." msgstr "" -#: ../Doc/c-api/typeobj.rst:836 +#: ../Doc/c-api/typeobj.rst:821 msgid "" "When a type defined by a class statement has no :attr:`~object.__slots__` " "declaration, and none of its base types has an instance variable dictionary, " @@ -1080,14 +1076,14 @@ msgid "" "`~PyTypeObject.tp_dictoffset` is set to that slot's offset." msgstr "" -#: ../Doc/c-api/typeobj.rst:841 +#: ../Doc/c-api/typeobj.rst:826 msgid "" "When a type defined by a class statement has a :attr:`__slots__` " "declaration, the type inherits its :c:member:`~PyTypeObject.tp_dictoffset` " "from its base type." msgstr "" -#: ../Doc/c-api/typeobj.rst:844 +#: ../Doc/c-api/typeobj.rst:829 msgid "" "(Adding a slot named :attr:`~object.__dict__` to the :attr:`__slots__` " "declaration does not have the expected effect, it just causes confusion. " @@ -1095,11 +1091,11 @@ msgid "" "though.)" msgstr "" -#: ../Doc/c-api/typeobj.rst:851 +#: ../Doc/c-api/typeobj.rst:836 msgid "An optional pointer to an instance initialization function." msgstr "" -#: ../Doc/c-api/typeobj.rst:853 +#: ../Doc/c-api/typeobj.rst:838 msgid "" "This function corresponds to the :meth:`__init__` method of classes. Like :" "meth:`__init__`, it is possible to create an instance without calling :meth:" @@ -1107,14 +1103,14 @@ msgid "" "meth:`__init__` method again." msgstr "" -#: ../Doc/c-api/typeobj.rst:862 +#: ../Doc/c-api/typeobj.rst:847 msgid "" "The self argument is the instance to be initialized; the *args* and *kwds* " "arguments represent positional and keyword arguments of the call to :meth:" "`__init__`." msgstr "" -#: ../Doc/c-api/typeobj.rst:866 +#: ../Doc/c-api/typeobj.rst:851 msgid "" "The :c:member:`~PyTypeObject.tp_init` function, if not *NULL*, is called " "when an instance is created normally by calling its type, after the type's :" @@ -1126,11 +1122,11 @@ msgid "" "subtype's :c:member:`~PyTypeObject.tp_init` is called." msgstr "" -#: ../Doc/c-api/typeobj.rst:878 +#: ../Doc/c-api/typeobj.rst:863 msgid "An optional pointer to an instance allocation function." msgstr "" -#: ../Doc/c-api/typeobj.rst:884 +#: ../Doc/c-api/typeobj.rst:869 msgid "" "The purpose of this function is to separate memory allocation from memory " "initialization. It should return a pointer to a block of memory of adequate " @@ -1144,14 +1140,14 @@ msgid "" "member:`~PyTypeObject.tp_basicsize`." msgstr "" -#: ../Doc/c-api/typeobj.rst:894 +#: ../Doc/c-api/typeobj.rst:879 msgid "" "Do not use this function to do any other instance initialization, not even " "to allocate additional memory; that should be done by :c:member:" "`~PyTypeObject.tp_new`." msgstr "" -#: ../Doc/c-api/typeobj.rst:897 +#: ../Doc/c-api/typeobj.rst:882 msgid "" "This field is inherited by static subtypes, but not by dynamic subtypes " "(subtypes created by a class statement); in the latter, this field is always " @@ -1159,18 +1155,18 @@ msgid "" "strategy. That is also the recommended value for statically defined types." msgstr "" -#: ../Doc/c-api/typeobj.rst:905 +#: ../Doc/c-api/typeobj.rst:890 msgid "An optional pointer to an instance creation function." msgstr "" -#: ../Doc/c-api/typeobj.rst:907 +#: ../Doc/c-api/typeobj.rst:892 msgid "" "If this function is *NULL* for a particular type, that type cannot be called " "to create new instances; presumably there is some other way to create " "instances, like a factory function." msgstr "" -#: ../Doc/c-api/typeobj.rst:915 +#: ../Doc/c-api/typeobj.rst:900 msgid "" "The subtype argument is the type of the object being created; the *args* and " "*kwds* arguments represent positional and keyword arguments of the call to " @@ -1179,7 +1175,7 @@ msgid "" "(but not an unrelated type)." msgstr "" -#: ../Doc/c-api/typeobj.rst:921 +#: ../Doc/c-api/typeobj.rst:906 msgid "" "The :c:member:`~PyTypeObject.tp_new` function should call ``subtype-" ">tp_alloc(subtype, nitems)`` to allocate space for the object, and then do " @@ -1191,26 +1187,26 @@ msgid "" "be deferred to :c:member:`~PyTypeObject.tp_init`." msgstr "" -#: ../Doc/c-api/typeobj.rst:929 +#: ../Doc/c-api/typeobj.rst:914 msgid "" "This field is inherited by subtypes, except it is not inherited by static " "types whose :c:member:`~PyTypeObject.tp_base` is *NULL* or " "``&PyBaseObject_Type``." msgstr "" -#: ../Doc/c-api/typeobj.rst:935 +#: ../Doc/c-api/typeobj.rst:920 msgid "" "An optional pointer to an instance deallocation function. Its signature is :" "c:type:`freefunc`::" msgstr "" -#: ../Doc/c-api/typeobj.rst:940 +#: ../Doc/c-api/typeobj.rst:925 msgid "" "An initializer that is compatible with this signature is :c:func:" "`PyObject_Free`." msgstr "" -#: ../Doc/c-api/typeobj.rst:942 +#: ../Doc/c-api/typeobj.rst:927 msgid "" "This field is inherited by static subtypes, but not by dynamic subtypes " "(subtypes created by a class statement); in the latter, this field is set to " @@ -1218,11 +1214,11 @@ msgid "" "of the :const:`Py_TPFLAGS_HAVE_GC` flag bit." msgstr "" -#: ../Doc/c-api/typeobj.rst:950 +#: ../Doc/c-api/typeobj.rst:935 msgid "An optional pointer to a function called by the garbage collector." msgstr "" -#: ../Doc/c-api/typeobj.rst:952 +#: ../Doc/c-api/typeobj.rst:937 msgid "" "The garbage collector needs to know whether a particular object is " "collectible or not. Normally, it is sufficient to look at the object's " @@ -1234,46 +1230,46 @@ msgid "" "instance. The signature is ::" msgstr "" -#: ../Doc/c-api/typeobj.rst:962 +#: ../Doc/c-api/typeobj.rst:947 msgid "" "(The only example of this are types themselves. The metatype, :c:data:" "`PyType_Type`, defines this function to distinguish between statically and " "dynamically allocated types.)" msgstr "" -#: ../Doc/c-api/typeobj.rst:971 +#: ../Doc/c-api/typeobj.rst:956 msgid "Tuple of base types." msgstr "" -#: ../Doc/c-api/typeobj.rst:973 +#: ../Doc/c-api/typeobj.rst:958 msgid "" "This is set for types created by a class statement. It should be *NULL* for " "statically defined types." msgstr "" -#: ../Doc/c-api/typeobj.rst:976 +#: ../Doc/c-api/typeobj.rst:961 msgid "This field is not inherited." msgstr "" -#: ../Doc/c-api/typeobj.rst:981 +#: ../Doc/c-api/typeobj.rst:966 msgid "" "Tuple containing the expanded set of base types, starting with the type " "itself and ending with :class:`object`, in Method Resolution Order." msgstr "" -#: ../Doc/c-api/typeobj.rst:984 +#: ../Doc/c-api/typeobj.rst:969 msgid "" "This field is not inherited; it is calculated fresh by :c:func:" "`PyType_Ready`." msgstr "" -#: ../Doc/c-api/typeobj.rst:989 +#: ../Doc/c-api/typeobj.rst:974 msgid "" "An optional pointer to an instance finalization function. Its signature is :" "c:type:`destructor`::" msgstr "" -#: ../Doc/c-api/typeobj.rst:994 +#: ../Doc/c-api/typeobj.rst:979 msgid "" "If :c:member:`~PyTypeObject.tp_finalize` is set, the interpreter calls it " "once when finalizing an instance. It is called either from the garbage " @@ -1283,39 +1279,39 @@ msgid "" "object in a sane state." msgstr "" -#: ../Doc/c-api/typeobj.rst:1001 +#: ../Doc/c-api/typeobj.rst:986 msgid "" ":c:member:`~PyTypeObject.tp_finalize` should not mutate the current " "exception status; therefore, a recommended way to write a non-trivial " "finalizer is::" msgstr "" -#: ../Doc/c-api/typeobj.rst:1018 +#: ../Doc/c-api/typeobj.rst:1003 msgid "" "For this field to be taken into account (even through inheritance), you must " "also set the :const:`Py_TPFLAGS_HAVE_FINALIZE` flags bit." msgstr "" -#: ../Doc/c-api/typeobj.rst:1025 +#: ../Doc/c-api/typeobj.rst:1010 msgid "\"Safe object finalization\" (:pep:`442`)" msgstr "" -#: ../Doc/c-api/typeobj.rst:1030 +#: ../Doc/c-api/typeobj.rst:1015 msgid "Unused. Not inherited. Internal use only." msgstr "" -#: ../Doc/c-api/typeobj.rst:1035 +#: ../Doc/c-api/typeobj.rst:1020 msgid "" "List of weak references to subclasses. Not inherited. Internal use only." msgstr "" -#: ../Doc/c-api/typeobj.rst:1040 +#: ../Doc/c-api/typeobj.rst:1025 msgid "" "Weak reference list head, for weak references to this type object. Not " "inherited. Internal use only." msgstr "" -#: ../Doc/c-api/typeobj.rst:1043 +#: ../Doc/c-api/typeobj.rst:1028 msgid "" "The remaining fields are only defined if the feature test macro :const:" "`COUNT_ALLOCS` is defined, and are for internal use only. They are " @@ -1323,25 +1319,25 @@ msgid "" "subtypes." msgstr "" -#: ../Doc/c-api/typeobj.rst:1051 +#: ../Doc/c-api/typeobj.rst:1036 msgid "Number of allocations." msgstr "" -#: ../Doc/c-api/typeobj.rst:1056 +#: ../Doc/c-api/typeobj.rst:1041 msgid "Number of frees." msgstr "" -#: ../Doc/c-api/typeobj.rst:1061 +#: ../Doc/c-api/typeobj.rst:1046 msgid "Maximum simultaneously allocated objects." msgstr "" -#: ../Doc/c-api/typeobj.rst:1066 +#: ../Doc/c-api/typeobj.rst:1051 msgid "" "Pointer to the next type object with a non-zero :c:member:`~PyTypeObject." "tp_allocs` field." msgstr "" -#: ../Doc/c-api/typeobj.rst:1068 +#: ../Doc/c-api/typeobj.rst:1053 msgid "" "Also, note that, in a garbage collected Python, tp_dealloc may be called " "from any Python thread, not just the thread which created the object (if the " @@ -1354,22 +1350,22 @@ msgid "" "will not violate any assumptions of the library." msgstr "" -#: ../Doc/c-api/typeobj.rst:1082 +#: ../Doc/c-api/typeobj.rst:1067 msgid "Number Object Structures" msgstr "" -#: ../Doc/c-api/typeobj.rst:1089 +#: ../Doc/c-api/typeobj.rst:1074 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the number protocol. Each function is used by the function of " "similar name documented in the :ref:`number` section." msgstr "" -#: ../Doc/c-api/typeobj.rst:1093 ../Doc/c-api/typeobj.rst:1366 +#: ../Doc/c-api/typeobj.rst:1078 ../Doc/c-api/typeobj.rst:1365 msgid "Here is the structure definition::" msgstr "" -#: ../Doc/c-api/typeobj.rst:1140 +#: ../Doc/c-api/typeobj.rst:1125 msgid "" "Binary and ternary functions must check the type of all their operands, and " "implement the necessary conversions (at least one of the operands is an " @@ -1379,84 +1375,89 @@ msgid "" "and set an exception." msgstr "" -#: ../Doc/c-api/typeobj.rst:1149 +#: ../Doc/c-api/typeobj.rst:1134 msgid "" "The :c:data:`nb_reserved` field should always be ``NULL``. It was " "previously called :c:data:`nb_long`, and was renamed in Python 3.0.1." msgstr "" -#: ../Doc/c-api/typeobj.rst:1157 +#: ../Doc/c-api/typeobj.rst:1142 msgid "Mapping Object Structures" msgstr "" -#: ../Doc/c-api/typeobj.rst:1164 +#: ../Doc/c-api/typeobj.rst:1149 msgid "" "This structure holds pointers to the functions which an object uses to " "implement the mapping protocol. It has three members:" msgstr "" -#: ../Doc/c-api/typeobj.rst:1169 +#: ../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:1175 +#: ../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:1181 +#: ../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:1191 +#: ../Doc/c-api/typeobj.rst:1179 msgid "Sequence Object Structures" msgstr "" -#: ../Doc/c-api/typeobj.rst:1198 +#: ../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:1203 +#: ../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:1208 +#: ../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:1214 +#: ../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:1221 +#: ../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:1225 +#: ../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 " @@ -1464,98 +1465,108 @@ msgid "" "the index is passed as is to the function." msgstr "" -#: ../Doc/c-api/typeobj.rst:1232 +#: ../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:1238 +#: ../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:1245 +#: ../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:1250 +#: ../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:1260 +#: ../Doc/c-api/typeobj.rst:1259 msgid "Buffer Object Structures" msgstr "" -#: ../Doc/c-api/typeobj.rst:1268 +#: ../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:1274 ../Doc/c-api/typeobj.rst:1323 -#: ../Doc/c-api/typeobj.rst:1376 ../Doc/c-api/typeobj.rst:1387 -#: ../Doc/c-api/typeobj.rst:1398 +#: ../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:1278 +#: ../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:1282 +#: ../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:1285 +#: ../Doc/c-api/typeobj.rst:1284 msgid "Fill in the requested fields." msgstr "" -#: ../Doc/c-api/typeobj.rst:1287 +#: ../Doc/c-api/typeobj.rst:1286 msgid "Increment an internal counter for the number of exports." msgstr "" -#: ../Doc/c-api/typeobj.rst:1289 +#: ../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:1291 +#: ../Doc/c-api/typeobj.rst:1290 msgid "Return ``0``." msgstr "" -#: ../Doc/c-api/typeobj.rst:1293 +#: ../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:1296 +#: ../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:1299 +#: ../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:1303 +#: ../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 " @@ -1563,7 +1574,7 @@ msgid "" "types>`." msgstr "" -#: ../Doc/c-api/typeobj.rst:1308 +#: ../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:" @@ -1572,19 +1583,19 @@ msgid "" "internal` are read-only for the consumer." msgstr "" -#: ../Doc/c-api/typeobj.rst:1315 +#: ../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:1318 +#: ../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:1327 +#: ../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 " @@ -1592,15 +1603,15 @@ msgid "" "these optional steps:" msgstr "" -#: ../Doc/c-api/typeobj.rst:1332 +#: ../Doc/c-api/typeobj.rst:1331 msgid "Decrement an internal counter for the number of exports." msgstr "" -#: ../Doc/c-api/typeobj.rst:1334 +#: ../Doc/c-api/typeobj.rst:1333 msgid "If the counter is ``0``, free all memory associated with *view*." msgstr "" -#: ../Doc/c-api/typeobj.rst:1336 +#: ../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 " @@ -1608,52 +1619,52 @@ msgid "" "*view* argument." msgstr "" -#: ../Doc/c-api/typeobj.rst:1342 +#: ../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:1347 +#: ../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:1355 +#: ../Doc/c-api/typeobj.rst:1354 msgid "Async Object Structures" msgstr "" -#: ../Doc/c-api/typeobj.rst:1363 +#: ../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:1380 +#: ../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:1383 +#: ../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:1391 +#: ../Doc/c-api/typeobj.rst:1390 msgid "" "Must return an :term:`awaitable` object. See :meth:`__anext__` for details." msgstr "" -#: ../Doc/c-api/typeobj.rst:1393 +#: ../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:1402 +#: ../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 98b709d25..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" @@ -482,7 +469,7 @@ msgstr "" #: ../Doc/c-api/unicode.rst:451 ../Doc/c-api/unicode.rst:454 #: ../Doc/c-api/unicode.rst:487 ../Doc/c-api/unicode.rst:490 msgid "int" -msgstr "int" +msgstr "*int*" #: ../Doc/c-api/unicode.rst:451 msgid "A single character, represented as a C int." @@ -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 "" +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 5bae4d2e1..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-05-27 19:40+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,11 +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 "" +msgstr "Email" #: ../Doc/distributing/index.rst:7 msgid "distutils-sig@python.org" @@ -35,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." @@ -70,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 @@ -80,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 "" @@ -135,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 "" @@ -226,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 "" @@ -251,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 f53866ede..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,6 +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 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" @@ -495,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 "" @@ -533,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 "" @@ -545,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 "" @@ -556,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 "" @@ -567,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 "" @@ -632,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." @@ -645,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 "" @@ -657,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 "" @@ -669,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 "" @@ -690,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 "" @@ -703,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 "" @@ -714,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 "" @@ -725,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 "" @@ -738,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 "" @@ -747,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 "" @@ -756,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 "" @@ -764,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 "" @@ -771,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 "" @@ -779,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 "" @@ -786,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 "" @@ -799,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 "" @@ -807,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 "" @@ -817,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 "" @@ -824,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 "" @@ -831,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 "" @@ -844,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 "" @@ -852,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 "" @@ -860,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 "" @@ -886,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" @@ -893,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 "" @@ -931,16 +1126,27 @@ msgid "" "operate: words are delimited by spaces, but quotes and backslashes can " "override this. See :func:`distutils.util.split_quoted`.)" msgstr "" +"Sur les plates-formes disposant d'un outil de ligne de commande (Unix, DOS/" +"Windows), chacun de ces éléments est une chaîne qui sera fractionnée en un " +"nom exécutable et, éventuellement, une liste d'arguments. Le fractionnement " +"de la chaîne est réalisée selon la même procédure que celle appliquée par " +"les *shells* Unix : les mots sont délimités par des espaces, mais les " +"guillemets et les antislashs permettent de les ignorer. Voir :func:" +"`distutils.util.split_quoted`." #: ../Doc/distutils/apiref.rst:560 msgid "The following methods invoke stages in the build process." msgstr "" +"Les méthodes suivantes permettent d'exécuter des étapes lors de processus de " +"construction." #: ../Doc/distutils/apiref.rst:565 msgid "" "Compile one or more source files. Generates object files (e.g. transforms " "a :file:`.c` file to a :file:`.o` file.)" msgstr "" +"Compile un ou plusieurs fichiers source. Génère des fichiers objets (par " +"exemple, transforme un fichier :file:`.c` en fichier :file:`.o`)." #: ../Doc/distutils/apiref.rst:568 msgid "" @@ -951,6 +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 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 "" @@ -959,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 "" @@ -968,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 "" @@ -991,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 "" @@ -999,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 "" @@ -1012,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 "" @@ -1019,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 "" @@ -1026,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 "" @@ -1050,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 "" @@ -1060,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 "" @@ -1071,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 "" @@ -1085,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 "" @@ -1092,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 "" @@ -1103,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 "" @@ -1110,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 "" @@ -1117,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 "" @@ -1127,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 "" @@ -1144,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 "" @@ -1152,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 "" @@ -1170,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 "" @@ -1271,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 "" @@ -1293,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 "" @@ -1316,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 "" @@ -1332,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 "" @@ -1346,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 "" @@ -1357,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 "" @@ -1365,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 "" @@ -1373,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 "" @@ -1391,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 "" @@ -1408,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 "" @@ -1418,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 "" @@ -1431,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 "" @@ -1441,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 "" @@ -1448,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 "" @@ -1459,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 "" @@ -1481,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 "" @@ -1491,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 "" @@ -1498,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 "" @@ -1505,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 "" @@ -1541,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``" @@ -1566,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 "" @@ -1573,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 "" @@ -1585,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 "" @@ -1615,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 "" @@ -1623,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 "" @@ -1630,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 "" @@ -1651,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 "" @@ -1658,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 "" @@ -1669,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 "" @@ -1679,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 "" @@ -1690,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 "" @@ -1698,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 "" @@ -1724,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 "" @@ -1740,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 "" @@ -1747,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 "" @@ -1758,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 "" @@ -1798,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 "" @@ -1836,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 "" @@ -1847,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 "" @@ -1865,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 "" @@ -1883,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 "" @@ -1890,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 "" @@ -1926,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 "" @@ -1942,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 "" @@ -1971,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 "" @@ -1979,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 "" @@ -1987,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 "" @@ -1997,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 "" @@ -2009,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 "" @@ -2030,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 "" @@ -2044,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 "" @@ -2055,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 "" @@ -2065,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 "" @@ -2073,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 "" @@ -2084,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" @@ -2101,7 +2809,7 @@ msgstr "default" #: ../Doc/distutils/apiref.rst:1568 msgid "*strip_comments*" -msgstr "" +msgstr "*strip_comments*" #: ../Doc/distutils/apiref.rst:1568 msgid "" @@ -2112,34 +2820,37 @@ msgstr "" #: ../Doc/distutils/apiref.rst:1568 ../Doc/distutils/apiref.rst:1577 #: ../Doc/distutils/apiref.rst:1582 msgid "true" -msgstr "" +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 msgid "false" -msgstr "" +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 "" @@ -2148,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 "" @@ -2160,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 "" @@ -2179,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 "" @@ -2201,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 "" @@ -2213,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 "" @@ -2230,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 "" @@ -2258,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 "" @@ -2269,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 "" @@ -2287,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 "" @@ -2301,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 "" @@ -2311,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 "" @@ -2320,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 "" @@ -2334,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 "" @@ -2341,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 "" @@ -2376,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 "" @@ -2417,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 "" @@ -2441,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 "" @@ -2500,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 9b7d8545d..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-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" @@ -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/examples.po b/distutils/examples.po index a5b320110..f3b4187d1 100644 --- a/distutils/examples.po +++ b/distutils/examples.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-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" 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 d631fb2c7..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-05-27 19:40+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,19 +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 "" +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 "" +msgstr "Email" #: ../Doc/distutils/index.rst:8 msgid "distutils-sig@python.org" @@ -39,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 "" @@ -52,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 "" @@ -61,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 d56fe7ff1..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-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/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 fd9c1a95b..626b42b8d 100644 --- a/extending/embedding.po +++ b/extending/embedding.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-05-27 19:40+0200\n" +"PO-Revision-Date: 2018-02-15 00:35+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" #: ../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 4c6f3c8e1..a7c56744c 100644 --- a/extending/index.po +++ b/extending/index.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: 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 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 0d79d8206..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-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" @@ -17,836 +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: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. We implement the method and reimplement the " -"deallocator to use it::" -msgstr "" - -#: ../Doc/extending/newtypes.rst:757 -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:767 -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:5 +msgid "Defining Extension Types: Assorted Topics" +msgstr "Définir les types d'extension : divers sujets" -#: ../Doc/extending/newtypes.rst:779 -msgid "" -"Finally, we add the :const:`Py_TPFLAGS_HAVE_GC` flag to the class flags::" -msgstr "" - -#: ../Doc/extending/newtypes.rst:783 -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:789 -msgid "Subclassing other types" -msgstr "" - -#: ../Doc/extending/newtypes.rst:791 -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:796 -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:814 -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: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.rst:826 -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:838 -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:841 -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:846 -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:869 -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:874 -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:881 -msgid "Type Methods" -msgstr "" - -#: ../Doc/extending/newtypes.rst:883 +#: ../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:886 +#: ../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:892 +#: ../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:896 +#: ../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:906 +#: ../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:912 +#: ../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:919 +#: ../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:922 +#: ../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:927 +#: ../Doc/extending/newtypes.rst:52 msgid "Finalization and De-allocation" -msgstr "" +msgstr "Finalisation et de-allocation" -#: ../Doc/extending/newtypes.rst:939 +#: ../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 " @@ -855,7 +96,7 @@ msgid "" "of this function::" msgstr "" -#: ../Doc/extending/newtypes.rst:956 +#: ../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 " @@ -870,7 +111,7 @@ msgid "" "c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` functions::" msgstr "" -#: ../Doc/extending/newtypes.rst:995 +#: ../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:" @@ -883,43 +124,43 @@ msgid "" "tp_dealloc` again, causing a double free and a crash." msgstr "" -#: ../Doc/extending/newtypes.rst:1004 +#: ../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:1009 +#: ../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:1016 +#: ../Doc/extending/newtypes.rst:141 msgid "Object Presentation" -msgstr "" +msgstr "Présentation de l'objet" -#: ../Doc/extending/newtypes.rst:1018 +#: ../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:1027 +#: ../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:1038 +#: ../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:1042 +#: ../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`; " @@ -930,15 +171,15 @@ msgid "" "the :c:member:`~PyTypeObject.tp_repr` handler is used instead." msgstr "" -#: ../Doc/extending/newtypes.rst:1049 +#: ../Doc/extending/newtypes.rst:174 msgid "Here is a simple example::" -msgstr "" +msgstr "Voici un exemple simple ::" -#: ../Doc/extending/newtypes.rst:1061 +#: ../Doc/extending/newtypes.rst:186 msgid "Attribute Management" -msgstr "" +msgstr "Gestion des attributs" -#: ../Doc/extending/newtypes.rst:1063 +#: ../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 " @@ -948,7 +189,7 @@ msgid "" "handler is *NULL*." msgstr "" -#: ../Doc/extending/newtypes.rst:1069 +#: ../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 " @@ -957,7 +198,7 @@ msgid "" "use whichever pair makes more sense for the implementation's convenience. ::" msgstr "" -#: ../Doc/extending/newtypes.rst:1081 +#: ../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 " @@ -968,35 +209,37 @@ msgid "" "mechanism that is available." msgstr "" -#: ../Doc/extending/newtypes.rst:1092 +#: ../Doc/extending/newtypes.rst:217 msgid "Generic Attribute Management" -msgstr "" +msgstr "Gestion des attributs génériques" -#: ../Doc/extending/newtypes.rst:1094 +#: ../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:1097 +#: ../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:1100 +#: ../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:1103 +#: ../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:1106 +#: ../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 " @@ -1008,18 +251,19 @@ msgid "" "*NULL* as well, allowing the base type to handle attributes." msgstr "" -#: ../Doc/extending/newtypes.rst:1114 +#: ../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:1120 +#: ../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:1131 +#: ../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 " @@ -1027,7 +271,7 @@ msgid "" "attr:`ml_name` field of the sentinel must be *NULL*." msgstr "" -#: ../Doc/extending/newtypes.rst:1136 +#: ../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 " @@ -1035,7 +279,7 @@ msgid "" "defined as::" msgstr "" -#: ../Doc/extending/newtypes.rst:1148 +#: ../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 " @@ -1046,53 +290,53 @@ msgid "" "accessed." msgstr "" -#: ../Doc/extending/newtypes.rst:1155 +#: ../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:1159 +#: ../Doc/extending/newtypes.rst:284 msgid "Constant" -msgstr "" +msgstr "Constante" -#: ../Doc/extending/newtypes.rst:1159 +#: ../Doc/extending/newtypes.rst:284 msgid "Meaning" msgstr "Signification" -#: ../Doc/extending/newtypes.rst:1161 +#: ../Doc/extending/newtypes.rst:286 msgid ":const:`READONLY`" -msgstr "" +msgstr ":const:`READONLY`" -#: ../Doc/extending/newtypes.rst:1161 +#: ../Doc/extending/newtypes.rst:286 msgid "Never writable." -msgstr "" +msgstr "Jamais disponible en écriture." -#: ../Doc/extending/newtypes.rst:1163 +#: ../Doc/extending/newtypes.rst:288 msgid ":const:`READ_RESTRICTED`" -msgstr "" +msgstr ":const:`READ_RESTRICTED`" -#: ../Doc/extending/newtypes.rst:1163 +#: ../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:1165 +#: ../Doc/extending/newtypes.rst:290 msgid ":const:`WRITE_RESTRICTED`" -msgstr "" +msgstr ":const:`WRITE_RESTRICTED`" -#: ../Doc/extending/newtypes.rst:1165 +#: ../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:1167 +#: ../Doc/extending/newtypes.rst:292 msgid ":const:`RESTRICTED`" -msgstr "" +msgstr ":const:`RESTRICTED`" -#: ../Doc/extending/newtypes.rst:1167 +#: ../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:1176 +#: ../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 " @@ -1101,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:1182 +#: ../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:1196 +#: ../Doc/extending/newtypes.rst:321 msgid "Type-specific Attribute Management" -msgstr "" +msgstr "Gestion des attributs de type spécifiques" -#: ../Doc/extending/newtypes.rst:1198 +#: ../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:" @@ -1123,18 +374,18 @@ msgid "" "functionality, you'll understand what needs to be done." msgstr "" -#: ../Doc/extending/newtypes.rst:1206 +#: ../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:1210 +#: ../Doc/extending/newtypes.rst:335 msgid "Here is an example::" -msgstr "" +msgstr "Voici un exemple ::" -#: ../Doc/extending/newtypes.rst:1226 +#: ../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 " @@ -1144,11 +395,11 @@ msgid "" "should be set to *NULL*. ::" msgstr "" -#: ../Doc/extending/newtypes.rst:1240 +#: ../Doc/extending/newtypes.rst:365 msgid "Object Comparison" -msgstr "" +msgstr "Comparaison des objets" -#: ../Doc/extending/newtypes.rst:1246 +#: ../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 " @@ -1156,7 +407,7 @@ msgid "" "`PyObject_RichCompare` and :c:func:`PyObject_RichCompareBool`." msgstr "" -#: ../Doc/extending/newtypes.rst:1251 +#: ../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``, " @@ -1167,23 +418,23 @@ msgid "" "should be tried, or *NULL* if an exception was set." msgstr "" -#: ../Doc/extending/newtypes.rst:1259 +#: ../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:1289 +#: ../Doc/extending/newtypes.rst:414 msgid "Abstract Protocol Support" -msgstr "" +msgstr "Support pour le protocole abstrait" -#: ../Doc/extending/newtypes.rst:1291 +#: ../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:1295 +#: ../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 " @@ -1198,7 +449,7 @@ msgid "" "slot, but a slot may still be unfilled.) ::" msgstr "" -#: ../Doc/extending/newtypes.rst:1310 +#: ../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 " @@ -1209,13 +460,21 @@ msgid "" "distribution. ::" msgstr "" -#: ../Doc/extending/newtypes.rst:1319 +#: ../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:1335 +#: ../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 " @@ -1223,173 +482,200 @@ msgid "" "handler is invoked." msgstr "" -#: ../Doc/extending/newtypes.rst:1339 +#: ../Doc/extending/newtypes.rst:470 msgid "This function takes three arguments:" -msgstr "" +msgstr "Cette fonction prend trois arguments :" -#: ../Doc/extending/newtypes.rst:1341 +#: ../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:1344 +#: ../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:1347 +#: ../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:1353 +#: ../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:1384 +#: ../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:1392 +#: ../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:1402 +#: ../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:1415 +#: ../Doc/extending/newtypes.rst:545 msgid "Weak Reference Support" -msgstr "" +msgstr "Prise en charge de la référence faible" -#: ../Doc/extending/newtypes.rst:1417 +#: ../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:1421 +#: ../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:1435 -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:1452 +#: ../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:1464 +#: ../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:1483 -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:1485 +#: ../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:1490 +#: ../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:1496 +#: ../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:1506 -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:1507 -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:1510 +#: ../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:1515 -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:1521 -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 ec310b675..70b871155 100644 --- a/faq/general.po +++ b/faq/general.po @@ -7,23 +7,27 @@ 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-28 17:54+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" "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.2\n" #: ../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,21 +375,21 @@ 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." #: ../Doc/faq/general.rst:169 msgid "" "Consult the `Getting Started section of the Python Developer's Guide " -"`__ for more information on " -"getting the source code and compiling it." +"`__ for more information on getting the " +"source code and compiling it." msgstr "" "Consultez `la section Premiers pas du Guide des Développeurs Python `__ pour plus d'informations sur comment " -"obtenir le code source et le compiler." +"devguide.python.org/setup/>`__ pour plus d'informations sur comment obtenir " +"le code source et le compiler." #: ../Doc/faq/general.rst:175 msgid "How do I get documentation on Python?" @@ -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,18 +492,19 @@ 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." +"Python Developer's Guide `_ for details." msgstr "" -"Vous pouvez aussi accéder aux de Python en dévloppement grâce à Git. Voir " -"`Le Guide du Développeur Python `_ pour " -"plus de détails." +"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." #: ../Doc/faq/general.rst:230 msgid "How do I submit bug reports and patches for Python?" @@ -533,10 +538,10 @@ msgstr "" #: ../Doc/faq/general.rst:241 msgid "" "For more information on how Python is developed, consult `the Python " -"Developer's Guide `_." +"Developer's Guide `_." msgstr "" -"Pour davantages d'informations sur comment Python est développé, consultez " -"`le Guide du Développeur Python `_." +"Pour davantage d'informations sur comment Python est développé, consultez " +"`le Guide du Développeur Python `_." #: ../Doc/faq/general.rst:246 msgid "Are there any published articles about Python that I can reference?" @@ -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 d04cb88eb..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-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/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,85 +192,98 @@ 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:99 -msgid "FOX" -msgstr "" - -#: ../Doc/faq/gui.rst:101 -msgid "" -"A wrapper for `the FOX toolkit `_ called `FXpy " -"`_ is available. FOX supports both Unix " -"variants and Windows." -msgstr "" - -#: ../Doc/faq/gui.rst:107 +#: ../Doc/faq/gui.rst:98 msgid "OpenGL" -msgstr "" +msgstr "*OpenGL*" -#: ../Doc/faq/gui.rst:109 +#: ../Doc/faq/gui.rst:100 msgid "For OpenGL bindings, see `PyOpenGL `_." msgstr "" +"Pour les clients OpenGL, voir `PyOpenGL `_." -#: ../Doc/faq/gui.rst:113 +#: ../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:115 +#: ../Doc/faq/gui.rst:106 msgid "" "By installing the `PyObjc Objective-C bridge `_, Python programs can use Mac OS X's Cocoa libraries." msgstr "" -#: ../Doc/faq/gui.rst:119 +#: ../Doc/faq/gui.rst:110 msgid "" ":ref:`Pythonwin ` by Mark Hammond includes an interface to the " "Microsoft Foundation Classes and a Python programming environment that's " "written mostly in Python using the MFC classes." msgstr "" +":ref:`Pythonwin ` de Mark Hammond inclut une interface vers les " +"classes `Microsoft Foundation Classes` et un environnement de programmation " +"Python qui est écrit principalement en Python utilisant les classes *MFC*." -#: ../Doc/faq/gui.rst:125 +#: ../Doc/faq/gui.rst:116 msgid "Tkinter questions" -msgstr "" +msgstr "Questions à propos de *Tkinter*" -#: ../Doc/faq/gui.rst:128 +#: ../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:130 +#: ../Doc/faq/gui.rst:121 msgid "" "Freeze is a tool to create stand-alone applications. When freezing Tkinter " "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:134 +#: ../Doc/faq/gui.rst:125 msgid "" "One solution is to ship the application with the Tcl and Tk libraries, and " "point to them at run-time using the :envvar:`TCL_LIBRARY` and :envvar:" "`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:138 +#: ../Doc/faq/gui.rst:129 msgid "" "To get truly stand-alone applications, the Tcl scripts that form the library " "have to be integrated into the application as well. One tool supporting that " "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:143 +#: ../Doc/faq/gui.rst:134 msgid "" "Build Tix with SAM enabled, perform the appropriate call to :c:func:" "`Tclsam_init`, etc. inside Python's :file:`Modules/tkappinit.c`, and link " "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:150 +#: ../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:152 +#: ../Doc/faq/gui.rst:143 msgid "" "On platforms other than Windows, yes, and you don't even need threads! But " "you'll have to restructure your I/O code a bit. Tk has the equivalent of " @@ -240,22 +291,38 @@ 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:160 +#: ../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:162 +#: ../Doc/faq/gui.rst:153 msgid "" "An often-heard complaint is that event handlers bound to events with the :" "meth:`bind` method don't get handled even when the appropriate key is " "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:165 +#: ../Doc/faq/gui.rst:156 msgid "" "The most common cause is that the widget to which the binding applies " "doesn't have \"keyboard focus\". Check out the Tk documentation for the " "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 06c4933b5..6291f050f 100644 --- a/faq/installed.po +++ b/faq/installed.po @@ -7,19 +7,19 @@ 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-08-01 13:21+0200\n" "PO-Revision-Date: 2017-05-28 17:54+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" -"Last-Translator: Julien Palard \n" -"Language-Team: \n" "X-Generator: Poedit 1.8.11\n" #: ../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 `_." -#: ../Doc/faq/library.rst:112 +#: ../Doc/faq/library.rst:114 msgid "Is there an equivalent to C's onexit() in Python?" -msgstr "" +msgstr "Existe-t'il un équivalent à la fonction C ``onexit()`` en Python ?" -#: ../Doc/faq/library.rst:114 +#: ../Doc/faq/library.rst:116 msgid "" "The :mod:`atexit` module provides a register function that is similar to " "C's :c:func:`onexit`." msgstr "" +"Le module :mod:`atexit` fournit une fonction d'enregistrement similaire à la " +"fonction C :c:func:`onexit`." -#: ../Doc/faq/library.rst:119 +#: ../Doc/faq/library.rst:121 msgid "Why don't my signal handlers work?" -msgstr "" +msgstr "Pourquoi mes gestionnaires de signaux ne fonctionnent-t'ils pas ?" -#: ../Doc/faq/library.rst:121 +#: ../Doc/faq/library.rst:123 msgid "" "The most common problem is that the signal handler is declared with the " "wrong argument list. It is called as ::" msgstr "" +"Le problème le plus courant est d'appeler le gestionnaire de signaux avec " +"les mauvais arguments. Un gestionnaire est appelé de la façon suivante ::" -#: ../Doc/faq/library.rst:126 +#: ../Doc/faq/library.rst:128 msgid "so it should be declared with two arguments::" -msgstr "" +msgstr "donc il doit être déclaré avec deux paramètres ::" -#: ../Doc/faq/library.rst:133 +#: ../Doc/faq/library.rst:135 msgid "Common tasks" -msgstr "" +msgstr "Tâches fréquentes" -#: ../Doc/faq/library.rst:136 +#: ../Doc/faq/library.rst:138 msgid "How do I test a Python program or component?" -msgstr "" +msgstr "Comment tester un programme ou un composant Python ?" -#: ../Doc/faq/library.rst:138 +#: ../Doc/faq/library.rst:140 msgid "" "Python comes with two testing frameworks. The :mod:`doctest` module finds " "examples in the docstrings for a module and runs them, comparing the output " "with the expected output given in the docstring." msgstr "" +"Python fournit deux cadriciels de test. Le module :mod:`doctest` cherche des " +"exemples dans les *docstrings* d'un module et les exécute. Il compare alors " +"la sortie avec la sortie attendue, telle que définie dans la *docstring*." -#: ../Doc/faq/library.rst:142 +#: ../Doc/faq/library.rst:144 msgid "" "The :mod:`unittest` module is a fancier testing framework modelled on Java " "and Smalltalk testing frameworks." msgstr "" +"Le module :mod:`unittest` est un cadriciel un peu plus élaboré basé sur les " +"cadriciels de test de Java et de Smalltalk." -#: ../Doc/faq/library.rst:145 +#: ../Doc/faq/library.rst:147 msgid "" "To make testing easier, you should use good modular design in your program. " "Your program should have almost all functionality encapsulated in either " @@ -219,16 +284,25 @@ msgid "" "avoid depending on mutating global variables, since this makes testing much " "more difficult to do." msgstr "" +"Pour rendre le test plus aisé, il est nécessaire de bien découper le code " +"d'un programme. Votre programme doit avoir la quasi-totalité des " +"fonctionnalités dans des fonctions ou des classes — et ceci a parfois " +"l'avantage aussi plaisant qu'inattendu de rendre le programme plus rapide, " +"les accès aux variables locales étant en effet plus rapides que les accès " +"aux variables globales. De plus le programme doit éviter au maximum de " +"manipuler des variables globales, car ceci rend le test beaucoup plus " +"difficile." -#: ../Doc/faq/library.rst:153 +#: ../Doc/faq/library.rst:155 msgid "The \"global main logic\" of your program may be as simple as ::" msgstr "" +"La « logique générale » d'un programme devrait être aussi simple que ::" -#: ../Doc/faq/library.rst:158 +#: ../Doc/faq/library.rst:160 msgid "at the bottom of the main module of your program." -msgstr "" +msgstr "à la fin du module principal du programme." -#: ../Doc/faq/library.rst:160 +#: ../Doc/faq/library.rst:162 msgid "" "Once your program is organized as a tractable collection of functions and " "class behaviours you should write test functions that exercise the " @@ -239,91 +313,130 @@ msgid "" "the \"production code\", since this makes it easy to find bugs and even " "design flaws earlier." msgstr "" +"Une fois que la logique du programme est implémentée par un ensemble de " +"fonctions et de comportements de classes, il faut écrire des fonctions de " +"test qui vont éprouver cette logique. À chaque module, il est possible " +"d'associer une suite de tests qui joue de manière automatique un ensemble de " +"tests. Au premier abord, il semble qu'il faille fournir un effort " +"conséquent, mais comme Python est un langage concis et flexible, c'est " +"surprenamment aisé. Écrire simultanément le code « de production » et les " +"fonctions de test associées rend le développement plus agréable et plus " +"amusant, car ceci permet de trouver des bogues, voire des défauts de " +"conception, plus facilement." -#: ../Doc/faq/library.rst:168 +#: ../Doc/faq/library.rst:170 msgid "" "\"Support modules\" that are not intended to be the main module of a program " "may include a self-test of the module. ::" msgstr "" +"Les « modules auxiliaires » qui n'ont pas vocation à être le module " +"principal du programme peuvent inclure un test pour se vérifier eux-mêmes. ::" -#: ../Doc/faq/library.rst:174 +#: ../Doc/faq/library.rst:176 msgid "" "Even programs that interact with complex external interfaces may be tested " "when the external interfaces are unavailable by using \"fake\" interfaces " "implemented in Python." msgstr "" +"Les programmes qui interagissent avec des interfaces externes complexes " +"peuvent être testés même quand ces interfaces ne sont pas disponibles, en " +"utilisant des interfaces « simulacres » implémentées en Python." -#: ../Doc/faq/library.rst:180 +#: ../Doc/faq/library.rst:182 msgid "How do I create documentation from doc strings?" -msgstr "" +msgstr "Comment générer la documentation à partir des *docstrings* ?" -#: ../Doc/faq/library.rst:182 +#: ../Doc/faq/library.rst:184 msgid "" "The :mod:`pydoc` module can create HTML from the doc strings in your Python " "source code. An alternative for creating API documentation purely from " "docstrings is `epydoc `_. `Sphinx `_ can also include docstring content." msgstr "" +"Le module :mod:`pydoc` peut générer du HTML à partir des *docstrings* du " +"code source Python. Il est aussi possible de documenter une API uniquement à " +"partir des *docstrings* à l'aide de `epydoc `_. `Sphinx `_ peut également inclure du contenu " +"provenant de *docstrings*." -#: ../Doc/faq/library.rst:189 +#: ../Doc/faq/library.rst:191 msgid "How do I get a single keypress at a time?" -msgstr "" +msgstr "Comment détecter qu'une touche est pressée ?" -#: ../Doc/faq/library.rst:191 +#: ../Doc/faq/library.rst:193 msgid "" "For Unix variants there are several solutions. It's straightforward to do " "this using curses, but curses is a fairly large module to learn." msgstr "" +"Pour les dérivés d'Unix, plusieurs solutions s'offrent à vous. C'est facile " +"en utilisant le module *curses*, mais *curses* est un module assez " +"conséquent à apprendre." -#: ../Doc/faq/library.rst:235 +#: ../Doc/faq/library.rst:237 msgid "Threads" -msgstr "" +msgstr "Fils d'exécution" -#: ../Doc/faq/library.rst:238 +#: ../Doc/faq/library.rst:240 msgid "How do I program using threads?" -msgstr "" +msgstr "Comment programmer avec des fils d'exécution ?" -#: ../Doc/faq/library.rst:240 +#: ../Doc/faq/library.rst:242 msgid "" "Be sure to use the :mod:`threading` module and not the :mod:`_thread` " "module. The :mod:`threading` module builds convenient abstractions on top of " "the low-level primitives provided by the :mod:`_thread` module." msgstr "" +"Veillez à bien utiliser le module :mod:`threading` et non le module :mod:" +"`_thread`. Le module :mod:`threading` fournit une abstraction plus facile à " +"manipuler que les primitives de bas-niveau du module :mod:`_thread`." -#: ../Doc/faq/library.rst:244 +#: ../Doc/faq/library.rst:246 msgid "" "Aahz has a set of slides from his threading tutorial that are helpful; see " "http://www.pythoncraft.com/OSCON2001/." msgstr "" +"Un ensemble de diapositives issues du didacticiel de Aahz sur les fils " +"d'exécution est disponible à http://www.pythoncraft.com/OSCON2001/." -#: ../Doc/faq/library.rst:249 +#: ../Doc/faq/library.rst:251 msgid "None of my threads seem to run: why?" -msgstr "" +msgstr "Aucun de mes fils ne semble s'exécuter : pourquoi ?" -#: ../Doc/faq/library.rst:251 +#: ../Doc/faq/library.rst:253 msgid "" "As soon as the main thread exits, all threads are killed. Your main thread " "is running too quickly, giving the threads no time to do any work." msgstr "" +"Dès que le fil d'exécution principal se termine, tous les fils sont tués. Le " +"fil principal s'exécute trop rapidement, sans laisser le temps aux autres " +"fils de faire quoi que ce soit." -#: ../Doc/faq/library.rst:254 +#: ../Doc/faq/library.rst:256 msgid "" "A simple fix is to add a sleep to the end of the program that's long enough " "for all the threads to finish::" msgstr "" +"Une correction simple consiste à ajouter un temps d'attente suffisamment " +"long à la fin du programme pour que tous les fils puissent se terminer ::" -#: ../Doc/faq/library.rst:269 +#: ../Doc/faq/library.rst:271 msgid "" "But now (on many platforms) the threads don't run in parallel, but appear to " "run sequentially, one at a time! The reason is that the OS thread scheduler " "doesn't start a new thread until the previous thread is blocked." msgstr "" +"Mais à présent, sur beaucoup de plates-formes, les fils ne s'exécutent pas " +"en parallèle, mais semblent s'exécuter de manière séquentielle, l'un après " +"l'autre ! En réalité, l'ordonnanceur de fils du système d'exploitation ne " +"démarre pas de nouveau fil avant que le précédent ne soit bloqué." -#: ../Doc/faq/library.rst:273 +#: ../Doc/faq/library.rst:275 msgid "A simple fix is to add a tiny sleep to the start of the run function::" msgstr "" +"Une correction simple consiste à ajouter un petit temps d'attente au début " +"de la fonction ::" -#: ../Doc/faq/library.rst:286 +#: ../Doc/faq/library.rst:288 msgid "" "Instead of trying to guess a good delay value for :func:`time.sleep`, it's " "better to use some kind of semaphore mechanism. One idea is to use the :mod:" @@ -331,18 +444,29 @@ msgid "" "the queue when it finishes, and let the main thread read as many tokens from " "the queue as there are threads." msgstr "" +"Au lieu d'essayer de trouver une bonne valeur d'attente pour la fonction :" +"func:`time.sleep`, il vaut mieux utiliser un mécanisme basé sur les " +"sémaphores. Une solution consiste à utiliser le module :mod:`queue` pour " +"créer un objet file, faire en sorte que chaque fil ajoute un jeton à la file " +"quand il se termine, et que le fil principal retire autant de jetons de la " +"file qu'il y a de fils." -#: ../Doc/faq/library.rst:294 +#: ../Doc/faq/library.rst:296 msgid "How do I parcel out work among a bunch of worker threads?" msgstr "" +"Comment découper et répartir une tâche au sein d'un ensemble de fils " +"d'exécutions ?" -#: ../Doc/faq/library.rst:296 +#: ../Doc/faq/library.rst:298 msgid "" "The easiest way is to use the new :mod:`concurrent.futures` module, " "especially the :mod:`~concurrent.futures.ThreadPoolExecutor` class." msgstr "" +"La manière la plus simple est d'utiliser le nouveau module :mod:`concurrent." +"futures`, en particulier la classe :mod:`~concurrent.futures." +"ThreadPoolExecutor`." -#: ../Doc/faq/library.rst:299 +#: ../Doc/faq/library.rst:301 msgid "" "Or, if you want fine control over the dispatching algorithm, you can write " "your own logic manually. Use the :mod:`queue` module to create a queue " @@ -351,26 +475,37 @@ msgid "" "``.get()`` method to return them. The class will take care of the locking " "necessary to ensure that each job is handed out exactly once." msgstr "" +"Ou bien, si vous désirez contrôler plus finement l'algorithme de " +"distribution, vous pouvez écrire votre propre logique « à la main ». " +"Utilisez le module :mod:`queue` pour créer une file de tâches ; la classe :" +"class:`~queue.Queue` gère une liste d'objets et a une méthode ``." +"put(objet)`` pour ajouter un élément à la file, et une méthode ``.get()`` " +"pour les récupérer. La classe s'occupe de gérer les verrous pour que chaque " +"tâche soit exécutée une et une seule fois." -#: ../Doc/faq/library.rst:306 +#: ../Doc/faq/library.rst:308 msgid "Here's a trivial example::" -msgstr "" +msgstr "Voici un exemple trivial ::" -#: ../Doc/faq/library.rst:344 +#: ../Doc/faq/library.rst:346 msgid "When run, this will produce the following output:" -msgstr "" +msgstr "Quand celui-ci est exécuté, il produit la sortie suivante :" -#: ../Doc/faq/library.rst:362 +#: ../Doc/faq/library.rst:364 msgid "" "Consult the module's documentation for more details; the :class:`~queue." "Queue` class provides a featureful interface." msgstr "" +"Consultez la documentation du module pour plus de détails ; la classe :class:" +"`~queue.Queue` fournit une interface pleine de fonctionnalités." -#: ../Doc/faq/library.rst:367 +#: ../Doc/faq/library.rst:369 msgid "What kinds of global value mutation are thread-safe?" msgstr "" +"Quels types de mutations sur des variables globales sont compatibles avec " +"les programmes à fils d'exécution multiples ? sécurisé ?" -#: ../Doc/faq/library.rst:369 +#: ../Doc/faq/library.rst:371 msgid "" "A :term:`global interpreter lock` (GIL) is used internally to ensure that " "only one thread runs in the Python VM at a time. In general, Python offers " @@ -379,46 +514,73 @@ msgid "" "instruction and therefore all the C implementation code reached from each " "instruction is therefore atomic from the point of view of a Python program." msgstr "" +"Le :term:`verrou global de l'interpréteur ` (GIL " +"pour *global interpreter lock*) est utilisé en interne pour s'assurer que la " +"machine virtuelle Python (MVP) n'exécute qu'un seul fil à la fois. De " +"manière générale, Python ne change de fil qu'entre les instructions du code " +"intermédiaire ; :func:`sys.setswitchinterval` permet de contrôler la " +"fréquence de bascule entre les fils. Chaque instruction du code " +"intermédiaire, et, par conséquent, tout le code C appelé par cette " +"instruction est donc atomique du point de vue d'un programme Python." -#: ../Doc/faq/library.rst:376 +#: ../Doc/faq/library.rst:378 msgid "" "In theory, this means an exact accounting requires an exact understanding of " "the PVM bytecode implementation. In practice, it means that operations on " "shared variables of built-in data types (ints, lists, dicts, etc) that " "\"look atomic\" really are." msgstr "" +"En théorie, cela veut dire qu'un décompte exact nécessite une connaissance " +"parfaite de l'implémentation de la MVP. En pratique, cela veut dire que les " +"opérations sur des variables partagées de type natif (les entier, les " +"listes, les dictionnaires etc.) qui « semblent atomiques » le sont " +"réellement." -#: ../Doc/faq/library.rst:381 +#: ../Doc/faq/library.rst:383 msgid "" "For example, the following operations are all atomic (L, L1, L2 are lists, " "D, D1, D2 are dicts, x, y are objects, i, j are ints)::" msgstr "" +"Par exemple, les opérations suivantes sont toutes atomiques (*L*, *L1* et " +"*L2* sont des listes, *D*, *D1* et *D2* sont des dictionnaires, *x* et *y* " +"sont des objets, *i* et *j* des entiers) ::" -#: ../Doc/faq/library.rst:396 +#: ../Doc/faq/library.rst:398 msgid "These aren't::" -msgstr "" +msgstr "Les suivantes ne le sont pas ::" -#: ../Doc/faq/library.rst:403 +#: ../Doc/faq/library.rst:405 msgid "" "Operations that replace other objects may invoke those other objects' :meth:" "`__del__` method when their reference count reaches zero, and that can " "affect things. This is especially true for the mass updates to dictionaries " "and lists. When in doubt, use a mutex!" msgstr "" +"Les opérations qui remplacent d'autres objets peuvent invoquer la méthode :" +"meth:`__del__` de ces objets quand leur compteur de référence passe à zéro, " +"et cela peut avoir de l'impact. C'est tout particulièrement vrai pour les " +"des changements massifs sur des dictionnaires ou des listes. En cas de " +"doute, il vaut mieux utiliser un mutex." -#: ../Doc/faq/library.rst:410 +#: ../Doc/faq/library.rst:412 msgid "Can't we get rid of the Global Interpreter Lock?" -msgstr "" +msgstr "Pourquoi ne pas se débarrasser du verrou global de l'interpréteur ?" -#: ../Doc/faq/library.rst:414 +#: ../Doc/faq/library.rst:416 msgid "" "The :term:`global interpreter lock` (GIL) is often seen as a hindrance to " "Python's deployment on high-end multiprocessor server machines, because a " "multi-threaded Python program effectively only uses one CPU, due to the " "insistence that (almost) all Python code can only run while the GIL is held." msgstr "" +"Le :term:`verrou global de l'interpréteur ` (GIL) " +"est souvent vu comme un obstacle au déploiement de code Python sur des " +"serveurs puissants avec de nombreux processeurs, car un programme Python à " +"fils d'exécutions multiples n'utilise en réalité qu'un seul processeur. " +"Presque tout le code Python ne peut en effet être exécuté qu'avec le GIL " +"acquis." -#: ../Doc/faq/library.rst:419 +#: ../Doc/faq/library.rst:421 msgid "" "Back in the days of Python 1.5, Greg Stein actually implemented a " "comprehensive patch set (the \"free threading\" patches) that removed the " @@ -430,7 +592,7 @@ msgid "" "the GIL." msgstr "" -#: ../Doc/faq/library.rst:427 +#: ../Doc/faq/library.rst:429 msgid "" "This doesn't mean that you can't make good use of Python on multi-CPU " "machines! You just have to be creative with dividing the work up between " @@ -440,8 +602,15 @@ msgid "" "module provides a lower-level API in case you want more control over " "dispatching of tasks." msgstr "" +"Cela ne signifie pas qu'il est impossible de tirer profit de Python sur des " +"machines à plusieurs cœurs ! Il faut seulement être malin et diviser le " +"travail à faire entre plusieurs *processus* plutôt qu'entre plusieurs *fils " +"d'exécution*. La classe :class:`~concurrent.futures.ProcessPoolExecutor` du " +"nouveau module :mod:`concurrent.futures` permet de faire cela facilement ; " +"le module :mod:`multiprocessing` fournit une API de plus bas-niveau pour un " +"meilleur contrôle sur la distribution des tâches." -#: ../Doc/faq/library.rst:435 +#: ../Doc/faq/library.rst:437 msgid "" "Judicious use of C extensions will also help; if you use a C extension to " "perform a time-consuming task, the extension can release the GIL while the " @@ -449,8 +618,13 @@ msgid "" "work done. Some standard library modules such as :mod:`zlib` and :mod:" "`hashlib` already do this." msgstr "" +"Des extensions C appropriées peuvent aussi aider ; en utilisant une " +"extension C pour effectuer une tâche longue, l'extension peut relâcher le " +"GIL pendant que le fil est en train d'exécuter ce code et laisser les autres " +"fils travailler. Des modules de la bibliothèque standard comme :mod:`zlib` " +"ou :mod:`hashlib` utilisent cette technique." -#: ../Doc/faq/library.rst:441 +#: ../Doc/faq/library.rst:443 msgid "" "It has been suggested that the GIL should be a per-interpreter-state lock " "rather than truly global; interpreters then wouldn't be able to share " @@ -461,37 +635,57 @@ msgid "" "types have their own free list; these free lists would have to be moved to " "the interpreter state. And so on." msgstr "" +"On a déjà proposé de restreindre le GIL par interpréteur, et non plus d'être " +"complétement global ; les interpréteurs ne seraient plus en mesure de " +"partager des objets. Malheureusement, cela n'a pas beaucoup de chance non " +"plus d'arriver. Cela nécessiterait un travail considérable, car la façon " +"dont beaucoup d'objets sont implémentés rend leur état global. Par exemple, " +"les entiers et les chaînes de caractères courts sont mis en cache ; ces " +"caches devraient être déplacés au niveau de l'interpréteur. D'autres objets " +"ont leur propre liste de suppression, ces listes devraient être déplacées au " +"niveau de l'interpréteur et ainsi de suite." -#: ../Doc/faq/library.rst:450 +#: ../Doc/faq/library.rst:452 msgid "" "And I doubt that it can even be done in finite time, because the same " "problem exists for 3rd party extensions. It is likely that 3rd party " "extensions are being written at a faster rate than you can convert them to " "store all their global state in the interpreter state." msgstr "" +"C'est une tâche sans fin, car les extensions tierces ont le même problème, " +"et il est probable que les extensions tierces soient développées plus vite " +"qu'il ne soit possible de les corriger pour les faire stocker leur état au " +"niveau de l'interpréteur et non plus au niveau global." -#: ../Doc/faq/library.rst:455 +#: ../Doc/faq/library.rst:457 msgid "" "And finally, once you have multiple interpreters not sharing any state, what " "have you gained over running each interpreter in a separate process?" msgstr "" +"Et enfin, quel intérêt y-a t'il à avoir plusieurs interpréteurs qui ne " +"partagent pas d'état, par rapport à faire tourner chaque interpréteur dans " +"un processus différent ?" -#: ../Doc/faq/library.rst:460 +#: ../Doc/faq/library.rst:462 msgid "Input and Output" msgstr "Les entrées/sorties" -#: ../Doc/faq/library.rst:463 +#: ../Doc/faq/library.rst:465 msgid "How do I delete a file? (And other file questions...)" -msgstr "" +msgstr "Comment supprimer un fichier ? (et autres questions sur les fichiers…)" -#: ../Doc/faq/library.rst:465 +#: ../Doc/faq/library.rst:467 msgid "" "Use ``os.remove(filename)`` or ``os.unlink(filename)``; for documentation, " "see the :mod:`os` module. The two functions are identical; :func:`~os." "unlink` is simply the name of the Unix system call for this function." msgstr "" +"Utilisez ``os.remove(filename)`` ou ``os.unlink(filename)`` ; pour la " +"documentation, référez-vous au module :mod:`os`. Ces deux fonctions sont " +"identiques, :func:`~os.unlink` n'est tout simplement que le nom de l'appel " +"système à cette fonction sous Unix." -#: ../Doc/faq/library.rst:469 +#: ../Doc/faq/library.rst:471 msgid "" "To remove a directory, use :func:`os.rmdir`; use :func:`os.mkdir` to create " "one. ``os.makedirs(path)`` will create any intermediate directories in " @@ -499,79 +693,115 @@ msgid "" "directories as long as they're empty; if you want to delete an entire " "directory tree and its contents, use :func:`shutil.rmtree`." msgstr "" +"Utilisez :func:`os.rmdir` pour supprimer un dossier et :func:`os.mkdir` pour " +"en créer un nouveau. ``os.makedirs(chemin)`` crée les dossiers " +"intermédiaires de ``chemin`` qui n'existent pas et ``os.removedirs(chemin)`` " +"supprime les dossiers intermédiaires si ceux-ci sont vides. Pour supprimer " +"une arborescence et tout son contenu, utilisez :func:`shutil.rmtree`." -#: ../Doc/faq/library.rst:475 +#: ../Doc/faq/library.rst:477 msgid "To rename a file, use ``os.rename(old_path, new_path)``." msgstr "" +"``os.rename(ancien_chemin, nouveau_chemin)`` permet de renommer un fichier." -#: ../Doc/faq/library.rst:477 +#: ../Doc/faq/library.rst:479 msgid "" "To truncate a file, open it using ``f = open(filename, \"rb+\")``, and use " "``f.truncate(offset)``; offset defaults to the current seek position. " "There's also ``os.ftruncate(fd, offset)`` for files opened with :func:`os." "open`, where *fd* is the file descriptor (a small integer)." msgstr "" +"Pour supprimer le contenu d'un fichier, ouvrez celui-ci avec ``f = " +"open(nom_du_fichier, \"rb+\")``, puis exécutez ``f.truncate(décalage)`` où " +"*décalage* est par défaut la position actuelle de la tête de lecture. Il " +"existe aussi ``os.ftruncate(df, décalage)`` pour les fichiers ouverts avec :" +"func:`os.open`, où *df* est le descripteur de fichier (un entier court)." -#: ../Doc/faq/library.rst:482 +#: ../Doc/faq/library.rst:484 msgid "" "The :mod:`shutil` module also contains a number of functions to work on " "files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :" "func:`~shutil.rmtree`." msgstr "" +"Le module :mod:`shutil` propose aussi un grand nombre de fonctions pour " +"effectuer des opérations sur des fichiers comme :func:`~shutil.copyfile`, :" +"func:`~shutil.copytree` et :func:`~shutil.rmtree`." -#: ../Doc/faq/library.rst:488 +#: ../Doc/faq/library.rst:490 msgid "How do I copy a file?" -msgstr "" +msgstr "Comment copier un fichier ?" -#: ../Doc/faq/library.rst:490 +#: ../Doc/faq/library.rst:492 msgid "" "The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note " "that on MacOS 9 it doesn't copy the resource fork and Finder info." msgstr "" +"Le module :mod:`shutil` fournit la fonction :func:`~shutil.copyfile`. Sous " +"MacOS 9, celle-ci ne copie pas le clonage de ressources ni les informations " +"du chercheur." -#: ../Doc/faq/library.rst:495 +#: ../Doc/faq/library.rst:497 msgid "How do I read (or write) binary data?" -msgstr "" +msgstr "Comment lire (ou écrire) des données binaires ?" -#: ../Doc/faq/library.rst:497 +#: ../Doc/faq/library.rst:499 msgid "" "To read or write complex binary data formats, it's best to use the :mod:" "`struct` module. It allows you to take a string containing binary data " "(usually numbers) and convert it to Python objects; and vice versa." msgstr "" +"Pour lire ou écrire des formats de données complexes en binaire, il est " +"recommandé d'utiliser le module :mod:`struct`. Celui-ci permet de convertir " +"une chaîne de caractères qui contient des données binaires, souvent des " +"nombres, en objets Python, et vice-versa." -#: ../Doc/faq/library.rst:501 +#: ../Doc/faq/library.rst:503 msgid "" "For example, the following code reads two 2-byte integers and one 4-byte " "integer in big-endian format from a file::" msgstr "" +"Par exemple, le code suivant lit, depuis un fichier, deux entiers codés sur " +"2 octets et un entier codé sur 4 octets, en format gros-boutiste ::" -#: ../Doc/faq/library.rst:510 +#: ../Doc/faq/library.rst:512 msgid "" "The '>' in the format string forces big-endian data; the letter 'h' reads " "one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 " "bytes) from the string." msgstr "" +"« > » dans la chaîne de formatage indique que la donnée doit être lue en " +"mode gros-boutiste, la lettre « h » indique un entier court (2 octets) et la " +"lettre « l » indique un entier long (4 octets)." -#: ../Doc/faq/library.rst:514 +#: ../Doc/faq/library.rst:516 msgid "" "For data that is more regular (e.g. a homogeneous list of ints or floats), " "you can also use the :mod:`array` module." msgstr "" +"Pour une donnée plus régulière (p. ex. une liste homogène d'entiers ou de " +"nombres à virgule flottante), il est possible d'utiliser le module :mod:" +"`array`." -#: ../Doc/faq/library.rst:519 +#: ../Doc/faq/library.rst:521 msgid "" "To read and write binary data, it is mandatory to open the file in binary " "mode (here, passing ``\"rb\"`` to :func:`open`). If you use ``\"r\"`` " "instead (the default), the file will be open in text mode and ``f.read()`` " "will return :class:`str` objects rather than :class:`bytes` objects." msgstr "" +"Pour lire et écrire de la donnée binaire, il est obligatoire d'ouvrir le " +"fichier en mode binaire également (ici, en passant ``\"rb\"`` à :func:" +"`open`). En utilisant ``\"r\"`` (valeur par défaut), le fichier est ouvert " +"en mode textuel et ``f.read()`` renvoie des objets :class:`str` au lieu " +"d'objets :class:`bytes`." -#: ../Doc/faq/library.rst:527 +#: ../Doc/faq/library.rst:529 msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?" msgstr "" +"Il me semble impossible d'utiliser ``os.read()`` sur un tube créé avec ``os." +"popen()`` ; pourquoi ?" -#: ../Doc/faq/library.rst:529 +#: ../Doc/faq/library.rst:531 msgid "" ":func:`os.read` is a low-level function which takes a file descriptor, a " "small integer representing the opened file. :func:`os.popen` creates a high-" @@ -579,38 +809,49 @@ msgid "" "function. Thus, to read *n* bytes from a pipe *p* created with :func:`os." "popen`, you need to use ``p.read(n)``." msgstr "" +":func:`os.read` est une fonction de bas niveau qui prend en paramètre un " +"descripteur de fichier — un entier court qui représente le fichier ouvert. :" +"func:`os.popen` crée un objet fichier de haut niveau, du même type que celui " +"renvoyé par la fonction native :func:`open`. Par conséquent, pour lire *n* " +"octets d'un tube *p* créé avec :func:`os.popen`, il faut utiliser ``p." +"read(n)``." -#: ../Doc/faq/library.rst:616 +#: ../Doc/faq/library.rst:618 msgid "How do I access the serial (RS232) port?" -msgstr "" +msgstr "Comment accéder au port de transmission en série (RS-232) ?" -#: ../Doc/faq/library.rst:618 +#: ../Doc/faq/library.rst:620 msgid "For Win32, POSIX (Linux, BSD, etc.), Jython:" -msgstr "" +msgstr "Pour Win32, POSIX (Linux, BSD, etc.) et Jython :" -#: ../Doc/faq/library.rst:620 +#: ../Doc/faq/library.rst:622 msgid "http://pyserial.sourceforge.net" -msgstr "" +msgstr "http://pyserial.sourceforge.net" -#: ../Doc/faq/library.rst:622 +#: ../Doc/faq/library.rst:624 msgid "For Unix, see a Usenet post by Mitch Chapman:" msgstr "" +"Pour Unix, référez-vous à une publication sur Usenet de Mitch Chapman :" -#: ../Doc/faq/library.rst:624 +#: ../Doc/faq/library.rst:626 msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" -msgstr "" +msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com" -#: ../Doc/faq/library.rst:628 +#: ../Doc/faq/library.rst:630 msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?" msgstr "" +"Pourquoi fermer *sys.stdout*, *sys.stdin*, *sys.stderr* ne les ferme pas " +"réellement ?" -#: ../Doc/faq/library.rst:630 +#: ../Doc/faq/library.rst:632 msgid "" "Python :term:`file objects ` are a high-level layer of " "abstraction on low-level C file descriptors." msgstr "" +"Les :term:`objets fichiers ` en Python sont des abstractions de " +"haut niveau sur les descripteurs de fichier C de bas niveau." -#: ../Doc/faq/library.rst:633 +#: ../Doc/faq/library.rst:635 msgid "" "For most file objects you create in Python via the built-in :func:`open` " "function, ``f.close()`` marks the Python file object as being closed from " @@ -618,121 +859,162 @@ msgid "" "descriptor. This also happens automatically in ``f``'s destructor, when " "``f`` becomes garbage." msgstr "" +"Pour la plupart des objets fichiers créés en Python avec la fonction native :" +"func:`open`, ``f.close()`` marque le fichier comme fermé du point de vue de " +"Python et ferme aussi le descripteur C sous-jacent. Le même mécanisme est " +"enclenché automatiquement dans le destructeur de ``f``, lorsque ``f`` est " +"recyclé." -#: ../Doc/faq/library.rst:639 +#: ../Doc/faq/library.rst:641 msgid "" "But stdin, stdout and stderr are treated specially by Python, because of the " "special status also given to them by C. Running ``sys.stdout.close()`` " "marks the Python-level file object as being closed, but does *not* close the " "associated C file descriptor." msgstr "" +"Mais *stdin*, *stdout* et *stderr* ont droit à un traitement spécial en " +"Python, car leur statut en C est lui-aussi spécial. Exécuter ``sys.stdout." +"close()`` marque l'objet fichier comme fermé du point de vue de Python, mais " +"le descripteur de fichier C associé n'est *pas* fermé." -#: ../Doc/faq/library.rst:644 +#: ../Doc/faq/library.rst:646 msgid "" "To close the underlying C file descriptor for one of these three, you should " "first be sure that's what you really want to do (e.g., you may confuse " "extension modules trying to do I/O). If it is, use :func:`os.close`::" msgstr "" +"Pour fermer le descripteur de fichier sous-jacent C de l'une de ces trois " +"sorties, demandez-vous avant tout si vous êtes sûr de vous (cela peut, par " +"exemple, perturber le bon fonctionnement de modules qui font des opérations " +"d'entrée-sortie). Si c'est le cas, utilisez :func:`os.close` ::" -#: ../Doc/faq/library.rst:652 +#: ../Doc/faq/library.rst:654 msgid "Or you can use the numeric constants 0, 1 and 2, respectively." msgstr "" +"Il est aussi possible de fermer respectivement les constantes numériques 0, " +"1 ou 2." -#: ../Doc/faq/library.rst:656 +#: ../Doc/faq/library.rst:658 msgid "Network/Internet Programming" -msgstr "" +msgstr "Programmation réseau et Internet" -#: ../Doc/faq/library.rst:659 +#: ../Doc/faq/library.rst:661 msgid "What WWW tools are there for Python?" -msgstr "" +msgstr "Quels sont les outils Python dédiés à la Toile ?" -#: ../Doc/faq/library.rst:661 +#: ../Doc/faq/library.rst:663 msgid "" "See the chapters titled :ref:`internet` and :ref:`netdata` in the Library " "Reference Manual. Python has many modules that will help you build server-" "side and client-side web systems." msgstr "" +"Référez-vous aux chapitres intitulés :ref:`internet` et :ref:`netdata` dans " +"le manuel de référence de la bibliothèque. Python a de nombreux modules pour " +"construire des applications de Toile côté client comme côté serveur." -#: ../Doc/faq/library.rst:667 +#: ../Doc/faq/library.rst:669 msgid "" "A summary of available frameworks is maintained by Paul Boddie at https://" "wiki.python.org/moin/WebProgramming\\ ." msgstr "" +"Un résumé des cadriciels disponibles est maintenu par Paul Boddie à " +"l'adresse https://wiki.python.org/moin/WebProgramming\\ ." -#: ../Doc/faq/library.rst:670 +#: ../Doc/faq/library.rst:672 msgid "" "Cameron Laird maintains a useful set of pages about Python web technologies " "at http://phaseit.net/claird/comp.lang.python/web_python." msgstr "" +"Cameron Laird maintient un ensemble intéressant d'articles sur les " +"technologies Python dédiées à la Toile à l'adresse http://phaseit.net/claird/" +"comp.lang.python/web_python." -#: ../Doc/faq/library.rst:675 +#: ../Doc/faq/library.rst:677 msgid "How can I mimic CGI form submission (METHOD=POST)?" -msgstr "" +msgstr "Comment reproduire un envoi de formulaire CGI (``METHOD=POST``) ?" -#: ../Doc/faq/library.rst:677 +#: ../Doc/faq/library.rst:679 msgid "" "I would like to retrieve web pages that are the result of POSTing a form. Is " "there existing code that would let me do this easily?" msgstr "" +"J'aimerais récupérer la page de retour d'un envoi de formulaire sur la " +"Toile. Existe-t'il déjà du code qui pourrait m'aider à le faire facilement ?" -#: ../Doc/faq/library.rst:680 +#: ../Doc/faq/library.rst:682 msgid "Yes. Here's a simple example that uses urllib.request::" -msgstr "" +msgstr "Oui. Voici un exemple simple d'utilisation de *urllib.request* ::" -#: ../Doc/faq/library.rst:695 +#: ../Doc/faq/library.rst:697 msgid "" "Note that in general for percent-encoded POST operations, query strings must " "be quoted using :func:`urllib.parse.urlencode`. For example, to send " "``name=Guy Steele, Jr.``::" msgstr "" +"Remarquez qu'en général, la chaîne de caractères d'une requête POST encodée " +"avec des des signes « % » doit être mise entre guillemets à l'aide de :func:" +"`urllib.parse.urlencode`. Par exemple pour envoyer ``name=Guy Steele, Jr." +"`` ::" -#: ../Doc/faq/library.rst:703 +#: ../Doc/faq/library.rst:705 msgid ":ref:`urllib-howto` for extensive examples." -msgstr "" +msgstr ":ref:`urllib-howto` pour des exemples complets." -#: ../Doc/faq/library.rst:707 +#: ../Doc/faq/library.rst:709 msgid "What module should I use to help with generating HTML?" -msgstr "" +msgstr "Quel module utiliser pour générer du HTML ?" -#: ../Doc/faq/library.rst:711 +#: ../Doc/faq/library.rst:713 msgid "" "You can find a collection of useful links on the `Web Programming wiki page " "`_." msgstr "" +"La `page wiki de la programmation Toile `_ (en anglais) répertorie un ensemble de liens pertinents." -#: ../Doc/faq/library.rst:716 +#: ../Doc/faq/library.rst:718 msgid "How do I send mail from a Python script?" -msgstr "" +msgstr "Comment envoyer un courriel avec un script Python ?" -#: ../Doc/faq/library.rst:718 +#: ../Doc/faq/library.rst:720 msgid "Use the standard library module :mod:`smtplib`." -msgstr "" +msgstr "Utilisez le module :mod:`smtplib` de la bibliothèque standard." -#: ../Doc/faq/library.rst:720 +#: ../Doc/faq/library.rst:722 msgid "" "Here's a very simple interactive mail sender that uses it. This method will " "work on any host that supports an SMTP listener. ::" msgstr "" +"Voici un exemple très simple d'un envoyeur de courriel qui l'utilise. Cette " +"méthode fonctionne sur tous les serveurs qui implémentent SMTP. ::" -#: ../Doc/faq/library.rst:740 +#: ../Doc/faq/library.rst:742 msgid "" "A Unix-only alternative uses sendmail. The location of the sendmail program " "varies between systems; sometimes it is ``/usr/lib/sendmail``, sometimes ``/" "usr/sbin/sendmail``. The sendmail manual page will help you out. Here's " "some sample code::" msgstr "" +"Sous Unix, il est possible d'utiliser *sendmail*. La localisation de " +"l'exécutable *sendmail* dépend du système ; cela peut-être ``/usr/lib/" +"sendmail`` ou ``/usr/sbin/sendmail``, la page de manuel de *sendmail* peut " +"vous aider. Par exemple ::" -#: ../Doc/faq/library.rst:760 +#: ../Doc/faq/library.rst:762 msgid "How do I avoid blocking in the connect() method of a socket?" msgstr "" +"Comment éviter de bloquer dans la méthode ``connect()`` d'un connecteur " +"réseau ?" -#: ../Doc/faq/library.rst:762 +#: ../Doc/faq/library.rst:764 msgid "" "The :mod:`select` module is commonly used to help with asynchronous I/O on " "sockets." msgstr "" +"Le module :mod:`select` est fréquemment utilisé pour effectuer des entrées-" +"sorties asynchrones sur des connecteurs réseaux." -#: ../Doc/faq/library.rst:765 +#: ../Doc/faq/library.rst:767 msgid "" "To prevent the TCP connect from blocking, you can set the socket to non-" "blocking mode. Then when you do the ``connect()``, you will either connect " @@ -741,111 +1023,151 @@ msgid "" "progress, but hasn't finished yet. Different OSes will return different " "values, so you're going to have to check what's returned on your system." msgstr "" +"Pour empêcher une connexion TCP de se bloquer, il est possible de mettre le " +"connecteur en mode lecture seule. Avec cela, au moment du ``connect()``, la " +"connexion pourra être immédiate (peu probable) ou bien vous obtiendrez une " +"exception qui contient le numéro d'erreur dans ``.errno``. ``errno." +"EINPROGRESS`` indique que la connexion est en cours, mais qu'elle n'a pas " +"encore aboutie. La valeur dépend du système d'exploitation, donc renseignez-" +"vous sur la valeur utilisée par votre système." -#: ../Doc/faq/library.rst:772 +#: ../Doc/faq/library.rst:774 msgid "" "You can use the ``connect_ex()`` method to avoid creating an exception. It " "will just return the errno value. To poll, you can call ``connect_ex()`` " "again later -- ``0`` or ``errno.EISCONN`` indicate that you're connected -- " "or you can pass this socket to select to check if it's writable." msgstr "" +"``connect_ex()`` permet d'éviter la création de l'exception, et de ne " +"renvoyer que la valeur de *errno*. Pour vérifier l'état de la connexion, " +"utilisez encore une fois ``connect_ex()`` — ``0`` ou ``errno.EISCONN`` " +"indiquent que la connexion est active — ou passez le connecteur en argument " +"de ``select()`` pour vérifier si le connecteur est prêt à recevoir des " +"entrées." -#: ../Doc/faq/library.rst:778 +#: ../Doc/faq/library.rst:780 msgid "" "The :mod:`asyncore` module presents a framework-like approach to the problem " "of writing non-blocking networking code. The third-party `Twisted `_ library is a popular and feature-rich alternative." msgstr "" +"Le module :mod:`asyncore` propose une approche en cadriciel pour écrire du " +"code réseau non-bloquant. La bibliothèque tierce `Twisted `_ en est une alternative plébiscitée, avec un grand " +"nombre de fonctionnalités." -#: ../Doc/faq/library.rst:785 +#: ../Doc/faq/library.rst:787 msgid "Databases" -msgstr "" +msgstr "Bases de données" -#: ../Doc/faq/library.rst:788 +#: ../Doc/faq/library.rst:790 msgid "Are there any interfaces to database packages in Python?" msgstr "" +"Existe-t'il des modules Python pour s'interfacer avec des bases de données ?" -#: ../Doc/faq/library.rst:790 +#: ../Doc/faq/library.rst:792 msgid "Yes." msgstr "Oui." -#: ../Doc/faq/library.rst:792 +#: ../Doc/faq/library.rst:794 msgid "" "Interfaces to disk-based hashes such as :mod:`DBM ` and :mod:`GDBM " "` are also included with standard Python. There is also the :mod:" "`sqlite3` module, which provides a lightweight disk-based relational " "database." msgstr "" +"La distribution standard de Python fournit aussi des interfaces à des bases " +"de données comme :mod:`DBM ` ou :mod:`GDBM `. Il existe " +"aussi le module :mod:`sqlite3` qui implémente une base de données " +"relationelle légère sur disque." -#: ../Doc/faq/library.rst:797 +#: ../Doc/faq/library.rst:799 msgid "" "Support for most relational databases is available. See the " "`DatabaseProgramming wiki page `_ for details." msgstr "" +"La gestion de la plupart des bases de données relationnelles est assurée. " +"Voir la page wiki `DatabaseProgramming `_ pour plus de détails." -#: ../Doc/faq/library.rst:803 +#: ../Doc/faq/library.rst:805 msgid "How do you implement persistent objects in Python?" -msgstr "" +msgstr "Comment implémenter la persistance d'objets en Python ?" -#: ../Doc/faq/library.rst:805 +#: ../Doc/faq/library.rst:807 msgid "" "The :mod:`pickle` library module solves this in a very general way (though " "you still can't store things like open files, sockets or windows), and the :" "mod:`shelve` library module uses pickle and (g)dbm to create persistent " "mappings containing arbitrary Python objects." msgstr "" +"Le module :mod:`pickle` répond à cela de manière large (bien qu'il ne soit " +"pas possible de stocker des fichiers ouverts, des connecteurs ou des " +"fenêtres par exemple), et le module :mod:`shelve` de la bibliothèque utilise " +"*pickle* et *(g)dbm* pour créer des liens persistants vers des objets Python." -#: ../Doc/faq/library.rst:812 +#: ../Doc/faq/library.rst:814 msgid "Mathematics and Numerics" -msgstr "" +msgstr "Mathématiques et calcul numérique" -#: ../Doc/faq/library.rst:815 +#: ../Doc/faq/library.rst:817 msgid "How do I generate random numbers in Python?" -msgstr "" +msgstr "Comment générer des nombres aléatoires en Python ?" -#: ../Doc/faq/library.rst:817 +#: ../Doc/faq/library.rst:819 msgid "" "The standard module :mod:`random` implements a random number generator. " "Usage is simple::" msgstr "" +"Le module :mod:`random` de la bibliothèque standard comprend un générateur " +"de nombres aléatoires. Son utilisation est simple ::" -#: ../Doc/faq/library.rst:823 +#: ../Doc/faq/library.rst:825 msgid "This returns a random floating point number in the range [0, 1)." msgstr "" +"Le code précédent renvoie un nombre à virgule flottante aléatoire dans " +"l'intervalle [0, 1[." -#: ../Doc/faq/library.rst:825 +#: ../Doc/faq/library.rst:827 msgid "" "There are also many other specialized generators in this module, such as:" -msgstr "" +msgstr "Ce module fournit beaucoup d'autres générateurs spécialisés comme :" -#: ../Doc/faq/library.rst:827 +#: ../Doc/faq/library.rst:829 msgid "``randrange(a, b)`` chooses an integer in the range [a, b)." -msgstr "" +msgstr "``randrange(a, b)`` génère un entier dans l'intervalle [a, b[." -#: ../Doc/faq/library.rst:828 +#: ../Doc/faq/library.rst:830 msgid "``uniform(a, b)`` chooses a floating point number in the range [a, b)." msgstr "" +"``uniform(a, b)`` génère un nombre à virgule flottante aléatoire dans " +"l'intervalle [a, b[." -#: ../Doc/faq/library.rst:829 +#: ../Doc/faq/library.rst:831 msgid "" "``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution." -msgstr "" +msgstr "``normalvariate(mean, sdev)`` simule la loi normale (Gaussienne)." -#: ../Doc/faq/library.rst:831 +#: ../Doc/faq/library.rst:833 msgid "Some higher-level functions operate on sequences directly, such as:" msgstr "" +"Des fonctions de haut niveau opèrent directement sur des séquences comme :" -#: ../Doc/faq/library.rst:833 +#: ../Doc/faq/library.rst:835 msgid "``choice(S)`` chooses random element from a given sequence" -msgstr "" +msgstr "``choice(S)`` sélectionne au hasard un élément d'une séquence donnée" -#: ../Doc/faq/library.rst:834 +#: ../Doc/faq/library.rst:836 msgid "``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly" msgstr "" +"``shuffle(L)`` mélange une liste en-place, c-à-d lui applique une " +"permutation aléatoire" -#: ../Doc/faq/library.rst:836 +#: ../Doc/faq/library.rst:838 msgid "" "There's also a ``Random`` class you can instantiate to create independent " "multiple random number generators." msgstr "" +"Il existe aussi une classe ``Random`` qu'il est possible d'instancier pour " +"créer des générateurs aléatoires indépendants." diff --git a/faq/programming.po b/faq/programming.po index 2919ccb2d..0a81eda4e 100644 --- a/faq/programming.po +++ b/faq/programming.po @@ -3,33 +3,39 @@ # 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-06-10 11:27+0200\n" +"PO-Revision-Date: 2017-10-27 17:41+0200\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/faq/programming.rst:5 msgid "Programming FAQ" -msgstr "" +msgstr "FAQ de programmation" + +#: ../Doc/faq/programming.rst:8 +msgid "Contents" +msgstr "Sommaire" #: ../Doc/faq/programming.rst:12 msgid "General Questions" -msgstr "" +msgstr "Questions générales" #: ../Doc/faq/programming.rst:15 msgid "" "Is there a source code level debugger with breakpoints, single-stepping, " "etc.?" msgstr "" +"Existe-t-il un débogueur de code source avec points d'arrêts, exécution pas-" +"à-pas, etc. ?" #: ../Doc/faq/programming.rst:17 ../Doc/faq/programming.rst:60 msgid "Yes." @@ -42,6 +48,10 @@ msgid "" "Library Reference Manual `. You can also write your own debugger by " "using the code for pdb as an example." msgstr "" +"Le module ``pdb`` est un débogueur console simple, mais parfaitement adapté " +"à Python. Il fait partie de la bibliothèque standard de Python, sa " +"documentation se trouve dans le :mod:`manuel de référence `. Vous " +"pouvez vous inspirer du code de ``pdb`` pour écrire votre propre débogueur." #: ../Doc/faq/programming.rst:24 msgid "" @@ -49,6 +59,9 @@ msgid "" "Python distribution (normally available as Tools/scripts/idle), includes a " "graphical debugger." msgstr "" +"L'environnement de développement interactif IDLE, qui est fourni avec la " +"distribution standard de Python (normalement disponible dans ``Tools/scripts/" +"idle``) contient un débogueur graphique." #: ../Doc/faq/programming.rst:28 msgid "" @@ -59,6 +72,14 @@ msgid "" ">`__ project and as a part of the ActivePython distribution (see https://www." "activestate.com/activepython\\ )." msgstr "" +"*PythonWin* est un environnement de développement intégré (EDI) Python qui " +"embarque un débogueur graphique basé sur ``pdb``. Le débogueur *PythonWin* " +"colore les points d'arrêts et possède quelques fonctionnalités sympathiques, " +"comme la possibilité de déboguer des programmes développés sans " +"*PythonWin*. *PythonWin* est disponible dans le projet `Extensions Python " +"pour Windows `__ et fait partie " +"de la distribution ActivePython (voir https://www.activestate.com/" +"activepython\\ )." #: ../Doc/faq/programming.rst:35 msgid "" @@ -68,12 +89,21 @@ msgid "" "browsers, inheritance hierarchies, doc string generated html documentation, " "an advanced debugger, integrated help, and Zope support." msgstr "" +"`Boa Constructor `_ est un EDI et " +"un constructeur d'interface homme-machine basé sur *wxWidgets*. Il propose " +"la création et la manipulation de fenêtres, un inspecteur d'objets, de " +"nombreuses façons de visualiser des sources comme un navigateur d'objets, " +"les hiérarchies d'héritage, la documentation html générée par les " +"docstrings, un débogueur avancé, une aide intégrée et la prise en charge de " +"Zope." #: ../Doc/faq/programming.rst:41 msgid "" "`Eric `_ is an IDE built on PyQt and " "the Scintilla editing component." msgstr "" +"`Eric `_ est un EDI basé sur PyQt et " +"l'outil d'édition Scintilla." #: ../Doc/faq/programming.rst:44 msgid "" @@ -82,28 +112,36 @@ msgid "" "can be found at http://bashdb.sourceforge.net/pydb/ and DDD can be found at " "https://www.gnu.org/software/ddd." msgstr "" +"Pydb est une version du débogueur standard Python pdb, modifié pour être " +"utilisé avec DDD (Data Display Debugger), un célèbre débogueur graphique. " +"Pydb est disponible sur http://bashdb.sourceforge.net/pydb/ et DDD est " +"disponible sur https://www.gnu.org/software/ddd." #: ../Doc/faq/programming.rst:49 msgid "" "There are a number of commercial Python IDEs that include graphical " "debuggers. They include:" msgstr "" +"Il existe de nombreux EDI Python propriétaires qui embarquent un débogueur " +"graphique. Notamment :" #: ../Doc/faq/programming.rst:52 msgid "Wing IDE (https://wingware.com/)" -msgstr "" +msgstr "Wing IDE (https://wingware.com/)" #: ../Doc/faq/programming.rst:53 msgid "Komodo IDE (https://komodoide.com/)" -msgstr "" +msgstr "Komodo IDE (https://komodoide.com/)" #: ../Doc/faq/programming.rst:54 msgid "PyCharm (https://www.jetbrains.com/pycharm/)" -msgstr "" +msgstr "PyCharm (https://www.jetbrains.com/pycharm/)" #: ../Doc/faq/programming.rst:58 msgid "Is there a tool to help find bugs or perform static analysis?" msgstr "" +"Existe-t-il des outils pour aider à trouver des bogues ou faire de l'analyse " +"statique de code ?" #: ../Doc/faq/programming.rst:62 msgid "" @@ -111,6 +149,10 @@ msgid "" "and warns about code complexity and style. You can get PyChecker from " "http://pychecker.sourceforge.net/." msgstr "" +"*PyChecker* est un outil d'analyse statique qui trouve les bogues dans le " +"code source Python et émet des avertissements relatifs à la complexité et au " +"style du code. *PyChecker* est disponible sur http://pychecker.sourceforge." +"net/." #: ../Doc/faq/programming.rst:66 msgid "" @@ -122,10 +164,18 @@ msgid "" "standard, whether declared interfaces are fully implemented, and more. " "https://docs.pylint.org/ provides a full list of Pylint's features." msgstr "" +"Pylint `_ est un autre outil qui vérifie si un " +"module satisfait aux normes de développement, et qui permet en plus d'écrire " +"des greffons pour ajouter des fonctionnalités personnalisées. En plus de la " +"vérification des bogues effectuée par PyChecker, Pylint effectue quelques " +"vérifications supplémentaires comme la longueur des lignes, les conventions " +"de nommage des variables, que les interfaces déclarées sont implémentées en " +"totalité, et plus encore. https://docs.pylint.org/ fournit la liste complète " +"des fonctionnalités de Pylint." #: ../Doc/faq/programming.rst:76 msgid "How can I create a stand-alone binary from a Python script?" -msgstr "" +msgstr "Comment créer un binaire autonome à partir d'un script Python ?" #: ../Doc/faq/programming.rst:78 msgid "" @@ -135,6 +185,12 @@ msgid "" "determine the set of modules required by a program and bind these modules " "together with a Python binary to produce a single executable." msgstr "" +"Pour créer un programme autonome, c'est-à-dire un programme que n'importe " +"qui peut télécharger et exécuter sans avoir à installer une distribution " +"Python au préalable, il n'est pas nécessaire de compiler du code Python en " +"code C. Il existe en effet plusieurs outils qui déterminent les modules " +"requis par un programme et lient ces modules avec un binaire Python pour " +"produire un seul exécutable." #: ../Doc/faq/programming.rst:84 msgid "" @@ -143,6 +199,11 @@ msgid "" "you can embed all your modules into a new program, which is then linked with " "the standard Python modules." msgstr "" +"Un de ces outils est freeze, qui se trouve dans ``Tools/freeze`` de " +"l'arborescence des sources de Python. Il convertit le code intermédiaire " +"(*bytecode*) Python en tableaux C ; un compilateur C permet d'intégrer tous " +"vos modules dans un nouveau programme, qui est ensuite lié aux modules " +"standards Python." #: ../Doc/faq/programming.rst:89 msgid "" @@ -156,16 +217,29 @@ msgid "" "rest of the Python interpreter to form a self-contained binary which acts " "exactly like your script." msgstr "" +"Il fonctionne en cherchant de manière récursive les instructions d'import " +"(sous les deux formes) dans le code source et en recherchant ces modules " +"dans le chemin Python standard ainsi que dans le répertoire source (pour les " +"modules natifs). Il transforme ensuite le code intermédiaire des modules " +"écrits en Python en code C (des tableaux pré-remplis qui peuvent être " +"transformés en objets code à l'aide du module *marshal*) et crée un fichier " +"de configuration personnalisé qui contient uniquement les modules natifs qui " +"sont réellement utilisés dans le programme. Il compile ensuite le code C " +"généré et le lie au reste de l'interpréteur Python pour former un binaire " +"autonome qui fait exactement la même chose que le script." #: ../Doc/faq/programming.rst:98 msgid "" "Obviously, freeze requires a C compiler. There are several other utilities " "which don't. One is Thomas Heller's py2exe (Windows only) at" msgstr "" +"Bien évidemment, freeze nécessite un compilateur C. Il existe d'autres " +"outils qui peuvent s'en passer. Un de ceux-ci est py2exe de Thomas Heller " +"(pour Windows uniquement) disponible sur" #: ../Doc/faq/programming.rst:101 msgid "http://www.py2exe.org/" -msgstr "" +msgstr "http://www.py2exe.org/" #: ../Doc/faq/programming.rst:103 msgid "" @@ -176,20 +250,25 @@ msgstr "" #: ../Doc/faq/programming.rst:107 msgid "Are there coding standards or a style guide for Python programs?" msgstr "" +"Existe-t-il des normes de développement ou un guide de style pour écrire des " +"programmes Python ?" #: ../Doc/faq/programming.rst:109 msgid "" "Yes. The coding style required for standard library modules is documented " "as :pep:`8`." msgstr "" +"Oui. Le style de développement que les modules de la bibliothèque standard " +"doivent obligatoirement respecter est documenté dans la :pep:`8`." #: ../Doc/faq/programming.rst:114 msgid "Core Language" -msgstr "" +msgstr "Fondamentaux" #: ../Doc/faq/programming.rst:117 msgid "Why am I getting an UnboundLocalError when the variable has a value?" msgstr "" +"Pourquoi une UnboundLocalError est levée alors qu'une variable a une valeur ?" #: ../Doc/faq/programming.rst:119 msgid "" @@ -197,18 +276,21 @@ msgid "" "when it is modified by adding an assignment statement somewhere in the body " "of a function." msgstr "" +"Il est parfois surprenant d'obtenir une UnboundLocalError dans du code " +"jusqu'à présent correct, quand celui-ci est modifié en ajoutant une " +"instruction d'affectation quelque part dans le corps d'une fonction." #: ../Doc/faq/programming.rst:123 msgid "This code:" -msgstr "" +msgstr "Le code suivant :" #: ../Doc/faq/programming.rst:131 msgid "works, but this code:" -msgstr "" +msgstr "fonctionne, mais le suivant :" #: ../Doc/faq/programming.rst:138 msgid "results in an UnboundLocalError:" -msgstr "" +msgstr "lève une UnboundLocalError :" #: ../Doc/faq/programming.rst:145 msgid "" @@ -219,12 +301,20 @@ msgid "" "Consequently when the earlier ``print(x)`` attempts to print the " "uninitialized local variable and an error results." msgstr "" +"Cela est dû au fait que, quand une variable est affectée dans un contexte, " +"cette variable devient locale à ce contexte et remplace toute variable du " +"même nom du contexte appelant. Vu que la dernière instruction dans *foo* " +"affecte une nouvelle valeur à ``x``, le compilateur la traite comme une " +"nouvelle variable. Par conséquent, quand le ``print(x)`` essaye d'afficher " +"la variable non initialisée, une erreur se produit." #: ../Doc/faq/programming.rst:152 msgid "" "In the example above you can access the outer scope variable by declaring it " "global:" msgstr "" +"Dans l'exemple ci-dessus, la variable du contexte appelant reste accessible " +"en la déclarant globale :" #: ../Doc/faq/programming.rst:163 msgid "" @@ -232,16 +322,23 @@ msgid "" "the superficially analogous situation with class and instance variables) you " "are actually modifying the value of the variable in the outer scope:" msgstr "" +"Cette déclaration explicite est obligatoire pour se rappeler que " +"(contrairement au cas à peu près similaire avec des variables de classe et " +"d'instance), c'est la valeur de la variable du contexte appelant qui est " +"modifiée :" #: ../Doc/faq/programming.rst:170 msgid "" "You can do a similar thing in a nested scope using the :keyword:`nonlocal` " "keyword:" msgstr "" +"Une alternative dans un contexte imbriqué consiste à utiliser le mot-clé :" +"keyword:`nonlocal` :" #: ../Doc/faq/programming.rst:187 msgid "What are the rules for local and global variables in Python?" msgstr "" +"Quelles sont les règles pour les variables locales et globales en Python ?" #: ../Doc/faq/programming.rst:189 msgid "" @@ -250,6 +347,10 @@ msgid "" "function's body, it's assumed to be a local unless explicitly declared as " "global." msgstr "" +"En Python, si une variable n'est pas modifiée dans une fonction mais " +"seulement lue, elle est implicitement considérée comme globale. Si une " +"valeur lui est affectée, elle est considérée locale (sauf si elle est " +"explicitement déclarée globale)." #: ../Doc/faq/programming.rst:193 msgid "" @@ -261,18 +362,30 @@ msgid "" "a component of an imported module. This clutter would defeat the usefulness " "of the ``global`` declaration for identifying side-effects." msgstr "" +"Bien que surprenant au premier abord, ce choix s'explique facilement. D'une " +"part, exiger :keyword:`global` pour des variables affectées est une " +"protection contre des effets de bord inattendus. D'autre part, si ``global`` " +"était obligatoire pour toutes les références à des objets globaux, il " +"faudrait mettre ``global`` partout, car il faudrait dans ce cas déclarer " +"globale chaque référence à une fonction native ou à un composant d'un module " +"importé. Le codé serait alors truffé de déclarations ``global``, ce qui " +"nuirait à leur raison d'être : identifier les effets de bords." #: ../Doc/faq/programming.rst:203 msgid "" "Why do lambdas defined in a loop with different values all return the same " "result?" msgstr "" +"Pourquoi des expressions lambda définies dans une boucle avec des valeurs " +"différentes retournent-elles le même résultat ?" #: ../Doc/faq/programming.rst:205 msgid "" "Assume you use a for loop to define a few different lambdas (or even plain " "functions), e.g.::" msgstr "" +"Supposons que l'on utilise une boucle itérative pour définir des expressions " +"lambda (voire même des fonctions) différentes, par exemple ::" #: ../Doc/faq/programming.rst:212 msgid "" @@ -281,6 +394,9 @@ msgid "" "``1``, ``4``, ``9``, and ``16``. However, when you actually try you will " "see that they all return ``16``::" msgstr "" +"Le code précédent crée une liste de 5 expressions lambda qui calculent " +"chacune ``x**2``. En les exécutant, on pourrait s'attendre à obtenir ``0``, " +"``1``, ``4``, ``9`` et ``16``. Elles renvoient en réalité toutes ``16`` ::" #: ../Doc/faq/programming.rst:222 msgid "" @@ -290,12 +406,21 @@ msgid "" "the functions now return ``4**2``, i.e. ``16``. You can also verify this by " "changing the value of ``x`` and see how the results of the lambdas change::" msgstr "" +"Ceci s'explique par le fait que ``x`` n'est pas une variable locale aux " +"expressions, mais est définie dans le contexte appelant. Elle est lue à " +"l'appel de l'expression lambda – et non au moment où cette expression est " +"définie. À la fin de la boucle, ``x`` vaut ``4``, donc toutes les fonctions " +"renvoient ``4*2``, i.e. ``16``. Ceci se vérifie également en changeant la " +"valeur de ``x`` et en constatant que les résultats sont modifiés ::" #: ../Doc/faq/programming.rst:232 msgid "" "In order to avoid this, you need to save the values in variables local to " "the lambdas, so that they don't rely on the value of the global ``x``::" msgstr "" +"Pour éviter ce phénomène, les valeurs doivent être stockées dans des " +"variables locales aux expressions lambda pour que celles-ci ne se basent " +"plus sur la variable globale ``x`` ::" #: ../Doc/faq/programming.rst:239 msgid "" @@ -305,16 +430,24 @@ msgid "" "the first lambda, ``1`` in the second, ``2`` in the third, and so on. " "Therefore each lambda will now return the correct result::" msgstr "" +"Dans ce code, ``n=x`` crée une nouvelle variable ``n``, locale à " +"l'expression. Cette variable est évaluée quand l'expression est définie donc " +"``n`` a la même valeur que ``x`` à ce moment. La valeur de ``n`` est donc " +"``0`` dans la première lambda, ``1`` dans la deuxième, ``2`` dans la " +"troisième et ainsi de suite. Chaque expression lambda renvoie donc le " +"résultat correct ::" #: ../Doc/faq/programming.rst:250 msgid "" "Note that this behaviour is not peculiar to lambdas, but applies to regular " "functions too." msgstr "" +"Ce comportement n'est pas propre aux expressions lambda, mais s'applique " +"aussi aux fonctions normales." #: ../Doc/faq/programming.rst:255 msgid "How do I share global variables across modules?" -msgstr "" +msgstr "Comment partager des variables globales entre modules ?" #: ../Doc/faq/programming.rst:257 msgid "" @@ -325,28 +458,37 @@ msgid "" "each module, any changes made to the module object get reflected " "everywhere. For example:" msgstr "" +"La manière standard de partager des informations entre modules d'un même " +"programme est de créer un module spécial (souvent appelé *config* ou *cfg*) " +"et de l'importer dans tous les modules de l'application ; le module devient " +"accessible depuis l'espace de nommage global. Vu qu'il n'y a qu'une instance " +"de chaque module, tout changement dans l'instance est propagé partout. Par " +"exemple :" #: ../Doc/faq/programming.rst:263 msgid "config.py::" -msgstr "" +msgstr "*config.py* ::" #: ../Doc/faq/programming.rst:267 msgid "mod.py::" -msgstr "" +msgstr "*mod.py* ::" #: ../Doc/faq/programming.rst:272 msgid "main.py::" -msgstr "" +msgstr "*main.py* ::" #: ../Doc/faq/programming.rst:278 msgid "" "Note that using a module is also the basis for implementing the Singleton " "design pattern, for the same reason." msgstr "" +"Pour les mêmes raisons, l'utilisation d'un module est aussi à la base de " +"l'implémentation du patron de conception singleton." #: ../Doc/faq/programming.rst:283 msgid "What are the \"best practices\" for using import in a module?" msgstr "" +"Quelles sont les « bonnes pratiques » pour utiliser import dans un module ?" #: ../Doc/faq/programming.rst:285 msgid "" @@ -354,6 +496,9 @@ msgid "" "importer's namespace, and makes it much harder for linters to detect " "undefined names." msgstr "" +"De manière générale, il ne faut pas faire ``from modulename import *``. Ceci " +"encombre l'espace de nommage de l'importateur et rend la détection de noms " +"non-définis beaucoup plus ardue pour les analyseurs de code." #: ../Doc/faq/programming.rst:289 msgid "" @@ -362,30 +507,42 @@ msgid "" "is in scope. Using one import per line makes it easy to add and delete " "module imports, but using multiple imports per line uses less screen space." msgstr "" +"Les modules doivent être importés au début d'un fichier. Ceci permet " +"d'afficher clairement de quels modules le code à besoin et évite de se " +"demander si le module est dans le contexte. Faire un seul `import` par ligne " +"rend l'ajout et la suppression d'une importation de module plus aisé, mais " +"importer plusieurs modules sur une même ligne prend moins d'espace." #: ../Doc/faq/programming.rst:294 msgid "It's good practice if you import modules in the following order:" -msgstr "" +msgstr "Il est recommandé d'importer les modules dans l'ordre suivant :" #: ../Doc/faq/programming.rst:296 msgid "standard library modules -- e.g. ``sys``, ``os``, ``getopt``, ``re``" msgstr "" +"les modules de la bibliothèque standard — e.g. ``sys``, ``os``, ``getopt``, " +"``re``" #: ../Doc/faq/programming.rst:297 msgid "" "third-party library modules (anything installed in Python's site-packages " "directory) -- e.g. mx.DateTime, ZODB, PIL.Image, etc." msgstr "" +"les modules externes (tout ce qui est installé dans le dossier *site-" +"packages* de Python) — e.g. *mx.DateTime, ZODB, PIL.Image*, etc." #: ../Doc/faq/programming.rst:299 msgid "locally-developed modules" -msgstr "" +msgstr "les modules développés en local" #: ../Doc/faq/programming.rst:301 msgid "" "It is sometimes necessary to move imports to a function or class to avoid " "problems with circular imports. Gordon McMillan says:" msgstr "" +"Il est parfois nécessaire de déplacer des importations dans une fonction ou " +"une classe pour éviter les problèmes d'importations circulaires. Comme le " +"souligne Gordon McMillan :" #: ../Doc/faq/programming.rst:304 msgid "" @@ -395,6 +552,12 @@ msgid "" "That's because names in the 1st are not yet available, because the first " "module is busy importing the 2nd." msgstr "" +"Il n'y a aucun souci à faire des importations circulaires tant que les deux " +"modules utilisent la forme ``import ``. Ça ne pose problème que si " +"le second module cherche à récupérer un nom du premier module (*\"from " +"module import name\"*) et que l'importation est dans l'espace de nommage du " +"fichier. Les noms du premier module ne sont en effet pas encore disponibles " +"car le premier module est occupé à importer le second." #: ../Doc/faq/programming.rst:310 msgid "" @@ -403,6 +566,10 @@ msgid "" "called, the first module will have finished initializing, and the second " "module can do its import." msgstr "" +"Dans ce cas, si le second module n'est utilisé que dans une fonction, " +"l'importation peut facilement être déplacée dans cette fonction. Au moment " +"où l'importation sera appelée, le premier module aura fini de s'initialiser " +"et le second pourra faire son importation." #: ../Doc/faq/programming.rst:315 msgid "" @@ -412,6 +579,12 @@ msgid "" "importing the correct modules in the corresponding platform-specific code is " "a good option." msgstr "" +"Il peut parfois être nécessaire de déplacer des importations de modules hors " +"de l'espace de plus haut niveau du code si certains de ces modules dépendent " +"de la machine utilisée. Dans ce cas de figure, il est parfois impossible " +"d'importer tous les modules au début du fichier. Dans ce cas, il est " +"recommandé d'importer les modules adéquats dans le code spécifique à la " +"machine." #: ../Doc/faq/programming.rst:320 msgid "" @@ -426,16 +599,30 @@ msgid "" "only a couple of dictionary lookups. Even if the module name has gone out " "of scope, the module is probably available in :data:`sys.modules`." msgstr "" +"Les imports ne devraient être déplacés dans un espace local, comme dans la " +"définition d'une fonction, que si cela est nécessaire pour résoudre un " +"problème comme éviter des dépendances circulaires ou réduire le temps " +"d'initialisation d'un module. Cette technique est particulièrement utile si " +"la majorité des imports est superflue selon le flux d'exécution du " +"programme. Il est également pertinent de déplacer des importations dans une " +"fonction si le module n'est utilisé qu'au sein de cette fonction. Le premier " +"chargement d'un module peut être coûteux à cause du coût fixe " +"d'initialisation d'un module, mais charger un module plusieurs fois est " +"quasiment gratuit, cela ne coûte que quelques indirections dans un " +"dictionnaire. Même si le nom du module est sorti du contexte courant, le " +"module est probablement disponible dans :data:`sys.modules`." #: ../Doc/faq/programming.rst:333 msgid "Why are default values shared between objects?" -msgstr "" +msgstr "Pourquoi les arguments par défaut sont-ils partagés entre les objets ?" #: ../Doc/faq/programming.rst:335 msgid "" "This type of bug commonly bites neophyte programmers. Consider this " "function::" msgstr "" +"C'est un problème que rencontrent souvent les programmeurs débutants. " +"Examinons la fonction suivante ::" #: ../Doc/faq/programming.rst:342 msgid "" @@ -443,6 +630,9 @@ msgid "" "The second time, ``mydict`` contains two items because when ``foo()`` begins " "executing, ``mydict`` starts out with an item already in it." msgstr "" +"Au premier appel de cette fonction, ``mydict`` ne contient qu'un seul " +"élément. Au second appel, ``mydict`` contient deux éléments car quand " +"``foo()`` commence son exécution, ``mydict`` contient déjà un élément." #: ../Doc/faq/programming.rst:346 msgid "" @@ -452,6 +642,11 @@ msgid "" "dictionary in this example, subsequent calls to the function will refer to " "this changed object." msgstr "" +"On est souvent amené à croire qu'un appel de fonction créé des nouveaux " +"objets pour les valeurs par défaut. Ce n'est pas le cas. Les valeurs par " +"défaut ne sont créées qu'une et une seule fois, au moment où la fonction est " +"définie. Si l'objet est modifié, comme le dictionnaire dans cet exemple, les " +"appels suivants à cette fonction font référence à l'objet ainsi modifié." #: ../Doc/faq/programming.rst:351 msgid "" @@ -459,6 +654,10 @@ msgid "" "``None``, are safe from change. Changes to mutable objects such as " "dictionaries, lists, and class instances can lead to confusion." msgstr "" +"Par définition, les objets immuables comme les nombres, les chaînes de " +"caractères, les n-uplets et ``None`` ne sont pas modifiés. Les changements " +"sur des objets muables comme les dictionnaires, les listes et les instances " +"de classe peuvent porter à confusion." #: ../Doc/faq/programming.rst:355 msgid "" @@ -467,10 +666,15 @@ msgid "" "inside the function, check if the parameter is ``None`` and create a new " "list/dictionary/whatever if it is. For example, don't write::" msgstr "" +"En raison de cette fonctionnalité, il vaut mieux ne pas utiliser d'objets " +"muables comme valeurs par défaut. Il vaut mieux utiliser ``None`` comme " +"valeur par défaut et, à l'intérieur de la fonction, vérifier si le paramètre " +"est à ``None`` et créer une nouvelle liste, dictionnaire ou autre, le cas " +"échéant. Par exemple, il ne faut pas écrire ::" #: ../Doc/faq/programming.rst:363 msgid "but::" -msgstr "" +msgstr "mais plutôt ::" #: ../Doc/faq/programming.rst:369 msgid "" @@ -480,17 +684,25 @@ msgid "" "value is requested again. This is called \"memoizing\", and can be " "implemented like this::" msgstr "" +"Cette fonctionnalité a une utilité. Il est courant de mettre en cache les " +"paramètres et la valeur de retour de chacun des appels d'une fonction " +"coûteuse à exécuter, et de renvoyer la valeur stockée en cache si le même " +"appel est ré-effectué. C'est la technique dite de « mémoïsation », qui " +"s'implémente de la manière suivante ::" #: ../Doc/faq/programming.rst:384 msgid "" "You could use a global variable containing a dictionary instead of the " "default value; it's a matter of taste." msgstr "" +"Il est possible d'utiliser une variable globale contenant un dictionnaire à " +"la place de la valeur par défaut ; ce n'est qu'une question de goût." #: ../Doc/faq/programming.rst:389 msgid "" "How can I pass optional or keyword parameters from one function to another?" msgstr "" +"Comment passer des paramètres optionnels ou nommés d'une fonction à l'autre ?" #: ../Doc/faq/programming.rst:391 msgid "" @@ -499,10 +711,15 @@ msgid "" "tuple and the keyword arguments as a dictionary. You can then pass these " "arguments when calling another function by using ``*`` and ``**``::" msgstr "" +"Il faut récupérer les arguments en utilisant les sélecteurs ``*`` et ``**`` " +"dans la liste des paramètres de la fonction ; ceci donne les arguments " +"positionnels sous la forme d'un n-uplet et les arguments nommés sous forme " +"de dictionnaire. Ces arguments peuvent être passés à une autre fonction en " +"utilisant ``*`` et ``**`` ::" #: ../Doc/faq/programming.rst:410 msgid "What is the difference between arguments and parameters?" -msgstr "" +msgstr "Quelle est la différence entre les arguments et les paramètres ?" #: ../Doc/faq/programming.rst:412 msgid "" @@ -512,33 +729,42 @@ msgid "" "of arguments a function can accept. For example, given the function " "definition::" msgstr "" +"Les :term:`paramètres ` sont les noms qui apparaissent dans une " +"définition de fonction, alors que les :term:`arguments ` sont les " +"valeurs qui sont réellement passées à une fonction lors de l'appel de celle-" +"ci. Les paramètres définissent les types des arguments qu'une fonction " +"accepte. Ainsi, avec la définition de fonction suivante ::" #: ../Doc/faq/programming.rst:420 msgid "" "*foo*, *bar* and *kwargs* are parameters of ``func``. However, when calling " "``func``, for example::" msgstr "" +"*foo*, *bar* et *kwargs* sont des paramètres de ``func``. Mais à l'appel de " +"``func`` avec, par exemple ::" #: ../Doc/faq/programming.rst:425 msgid "the values ``42``, ``314``, and ``somevar`` are arguments." -msgstr "" +msgstr "les valeurs ``42``, ``314``, et ``somevar`` sont des arguments." #: ../Doc/faq/programming.rst:429 msgid "Why did changing list 'y' also change list 'x'?" -msgstr "" +msgstr "Pourquoi modifier la liste 'y' modifie aussi la liste 'x' ?" #: ../Doc/faq/programming.rst:431 msgid "If you wrote code like::" -msgstr "Si vous avez écrit du code comme : ::" +msgstr "Si vous avez écrit du code comme ::" #: ../Doc/faq/programming.rst:441 msgid "" "you might be wondering why appending an element to ``y`` changed ``x`` too." msgstr "" +"vous vous demandez peut-être pourquoi l'ajout d'un élément à ``y`` a aussi " +"changé ``x``." #: ../Doc/faq/programming.rst:443 msgid "There are two factors that produce this result:" -msgstr "" +msgstr "Il y a deux raisons qui conduisent à ce comportement :" #: ../Doc/faq/programming.rst:445 msgid "" @@ -547,11 +773,17 @@ msgid "" "the same object ``x`` refers to. This means that there is only one object " "(the list), and both ``x`` and ``y`` refer to it." msgstr "" +"Les variables ne sont que des noms qui font référence à des objets. La ligne " +"``y = x`` ne crée pas une copie de la liste — elle crée une nouvelle " +"variable ``y`` qui pointe sur le même objet que ``x``. Ceci signifie qu'il " +"n'existe qu'un seul objet (la liste) auquel ``x`` et ``y`` font référence." #: ../Doc/faq/programming.rst:449 msgid "" "Lists are :term:`mutable`, which means that you can change their content." msgstr "" +"Les listes sont des :term:`muable`, ce qui signifie que leur contenu peut " +"être modifié." #: ../Doc/faq/programming.rst:451 msgid "" @@ -559,10 +791,14 @@ msgid "" "has changed from ``[]`` to ``[10]``. Since both the variables refer to the " "same object, using either name accesses the modified value ``[10]``." msgstr "" +"Après l'appel de :meth:`~list.append`, le contenu de l'objet muable est " +"passé de ``[]`` à ``[10]``. Vu que les deux variables font référence au même " +"objet, il est possible d'accéder à la valeur modifiée ``[10]`` avec chacun " +"des noms." #: ../Doc/faq/programming.rst:455 msgid "If we instead assign an immutable object to ``x``::" -msgstr "" +msgstr "Si au contraire, on affecte un objet immuable à ``x`` ::" #: ../Doc/faq/programming.rst:465 msgid "" @@ -574,6 +810,14 @@ msgid "" "objects (the ints ``6`` and ``5``) and two variables that refer to them " "(``x`` now refers to ``6`` but ``y`` still refers to ``5``)." msgstr "" +"on observe que ``x`` et ``y`` ne sont ici plus égales. Les entiers sont des " +"immuables (:term:`immutable`), et ``x = x + 1`` ne change pas l'entier ``5`` " +"en incrémentant sa valeur. Au contraire, un nouvel objet est créé (l'entier " +"``6``) et affecté à ``x`` (c'est à dire qu'on change l'objet auquel fait " +"référence ``x``). Après cette affectation on a deux objets (les entiers " +"``6`` et ``5``) et deux variables qui font référence à ces deux objets " +"(``x`` fait désormais référence à ``6`` mais ``y`` fait toujours référence à " +"``5``)." #: ../Doc/faq/programming.rst:473 msgid "" @@ -586,6 +830,14 @@ msgid "" "copy of ``y``, you'll instead end up with ``None``, which will likely cause " "your program to generate an easily diagnosed error." msgstr "" +"Certaines opérations (par exemple, ``y.append(10)`` et ``y.sort()``) " +"modifient l'objet, alors que des opérations identiques en apparence (par " +"exemple ``y = y + [10]`` et ``sorted(y)``) créent un nouvel objet. En " +"général, en Python, une méthode qui modifie un objet renvoie ``None`` (c'est " +"même systématique dans la bibliothèque standard) pour éviter la confusion " +"entre les deux opérations. Donc écrire par erreur ``y.sort()`` en pensant " +"obtenir une copie triée de ``y`` donne ``None``, ce qui conduit très souvent " +"le programme à générer une erreur facile à diagnostiquer." #: ../Doc/faq/programming.rst:482 msgid "" @@ -596,10 +848,16 @@ msgid "" "mutates ``a_list``, whereas ``some_tuple += (1, 2, 3)`` and ``some_int += " "1`` create new objects)." msgstr "" +"Il existe cependant une classe d'opérations qui se comporte différemment " +"selon le type : les opérateurs d'affectation incrémentaux. Par exemple, ``" +"+=`` modifie les listes mais pas les n-uplets ni les entiers (``a_list += " +"[1, 2, 3]`` équivaut à ``a_list.extend([1, 2, 3])`` et modifie ``a_list``, " +"alors que ``some_tuple += (1, 2, 3)`` et ``some_int += 1`` créent de " +"nouveaux objets)." #: ../Doc/faq/programming.rst:489 msgid "In other words:" -msgstr "" +msgstr "En d'autres termes :" #: ../Doc/faq/programming.rst:491 msgid "" @@ -607,6 +865,9 @@ msgid "" "etc.), we can use some specific operations to mutate it and all the " "variables that refer to it will see the change." msgstr "" +"Il est possible d'appliquer des opérations qui modifient un objet muable (:" +"class:`list`, :class:`dict`, :class:`set`, etc.) et toutes les variables qui " +"y font référence verront le changement." #: ../Doc/faq/programming.rst:494 msgid "" @@ -615,16 +876,24 @@ msgid "" "but operations that transform that value into a new value always return a " "new object." msgstr "" +"Toutes les variables qui font référence à un objet immuable (:class:`str`, :" +"class:`int`, :class:`tuple`, etc.) renvoient la même valeur, mais les " +"opérations qui transforment cette valeur en une nouvelle valeur renvoient " +"toujours un nouvel objet." #: ../Doc/faq/programming.rst:499 msgid "" "If you want to know if two variables refer to the same object or not, you " "can use the :keyword:`is` operator, or the built-in function :func:`id`." msgstr "" +"L'opérateur :keyword:`is` ou la fonction native :func:`id` permettent de " +"savoir si deux variables font référence au même objet." #: ../Doc/faq/programming.rst:504 msgid "How do I write a function with output parameters (call by reference)?" msgstr "" +"Comment écrire une fonction qui modifie ses paramètres ? (passage par " +"référence)" #: ../Doc/faq/programming.rst:506 msgid "" @@ -633,44 +902,48 @@ msgid "" "argument name in the caller and callee, and so no call-by-reference per se. " "You can achieve the desired effect in a number of ways." msgstr "" +"En Python, les arguments sont passés comme des affectations de variables. Vu " +"qu'une affectation crée des références à des objets, il n'y a pas de lien " +"entre un argument dans l'appel de la fonction et sa définition, et donc pas " +"de passage par référence en soi. Il y a cependant plusieurs façons d'en " +"émuler un." #: ../Doc/faq/programming.rst:511 msgid "By returning a tuple of the results::" -msgstr "" +msgstr "En renvoyant un n-uplet de résultats ::" #: ../Doc/faq/programming.rst:522 msgid "This is almost always the clearest solution." -msgstr "" +msgstr "C'est presque toujours la meilleure solution." #: ../Doc/faq/programming.rst:524 msgid "" "By using global variables. This isn't thread-safe, and is not recommended." msgstr "" -"En utilisant des variables globales. Ce qui n'est pas thread-safe, et n'est " -"donc pas recommandé." +"En utilisant des variables globales. Cette approche ne fonctionne pas dans " +"des contextes à plusieurs fils d'exécution (elle n'est pas *thread-safe*), " +"et n'est donc pas recommandée." #: ../Doc/faq/programming.rst:526 msgid "By passing a mutable (changeable in-place) object::" -msgstr "En passant un objet mutable (modifiable sur place) ::" +msgstr "En passant un objet muable (modifiable sur place) ::" #: ../Doc/faq/programming.rst:536 msgid "By passing in a dictionary that gets mutated::" -msgstr "En passant un dictionnaire, qui sera modifié : ::" +msgstr "En passant un dictionnaire, qui sera modifié ::" #: ../Doc/faq/programming.rst:546 msgid "Or bundle up values in a class instance::" -msgstr "Ou regrouper les valeurs dans une instance de classe::" +msgstr "Ou regrouper les valeurs dans une instance de classe ::" #: ../Doc/faq/programming.rst:562 msgid "There's almost never a good reason to get this complicated." -msgstr "" -"Il n'y a pratiquement jamais de bonne raison de faire quelque chose d'aussi " -"compliqué." +msgstr "Faire quelque chose d'aussi compliqué est rarement une bonne idée." #: ../Doc/faq/programming.rst:564 msgid "Your best choice is to return a tuple containing the multiple results." msgstr "" -"Votre meilleure option est de renvoyer un *tuple* contenant les multiples " +"La meilleure option reste de renvoyer un n-uplet contenant les différents " "résultats." #: ../Doc/faq/programming.rst:568 @@ -684,18 +957,18 @@ msgid "" "returns a function ``f(x)`` that computes the value ``a*x+b``. Using nested " "scopes::" msgstr "" -"Vous avez deux choix : vous pouvez utiliser les portées imbriquées ou vous " -"pouvez utiliser des objets appelables. Par exemple, supposons que vous " -"vouliez définir ``linear(a, b)`` qui retourne une fonction ``f(x)`` qui " -"calcule la valeur ``a*x+b``. En utilisant les portées imbriquées : ::" +"Deux possibilités : on peut utiliser des portées imbriquées ou bien des " +"objets appelables. Par exemple, supposons que l'on souhaite définir " +"``linear(a, b)`` qui renvoie une fonction ``f(x)`` qui calcule la valeur " +"``a*x+b``. En utilisant les portées imbriquées ::" #: ../Doc/faq/programming.rst:579 msgid "Or using a callable object::" -msgstr "Ou en utilisant un objet appelable : ::" +msgstr "Ou en utilisant un objet appelable ::" #: ../Doc/faq/programming.rst:589 msgid "In both cases, ::" -msgstr "dans les deux cas, ::" +msgstr "Dans les deux cas ::" #: ../Doc/faq/programming.rst:593 msgid "gives a callable object where ``taxes(10e6) == 0.3 * 10e6 + 2``." @@ -709,12 +982,12 @@ msgid "" msgstr "" "L'approche par objet appelable a le désavantage d'être légèrement plus lente " "et de produire un code légèrement plus long. Cependant, il faut noter qu'une " -"collection d'objet appelables peuvent partager leur signatures par " -"héritage : ::" +"collection d'objet appelables peuvent partager leurs signatures par " +"héritage ::" #: ../Doc/faq/programming.rst:604 msgid "Object can encapsulate state for several methods::" -msgstr "Les objets peuvent encapsuler un état pour plusieurs méthodes::" +msgstr "Les objets peuvent encapsuler un état pour plusieurs méthodes ::" #: ../Doc/faq/programming.rst:622 msgid "" @@ -726,32 +999,31 @@ msgstr "" #: ../Doc/faq/programming.rst:627 msgid "How do I copy an object in Python?" -msgstr "Comment copier un objet en Python?" +msgstr "Comment copier un objet en Python ?" #: ../Doc/faq/programming.rst:629 msgid "" "In general, try :func:`copy.copy` or :func:`copy.deepcopy` for the general " "case. Not all objects can be copied, but most can." msgstr "" -"En général, essayez :func:`copy.copy` ou :func:`copy.deepcopy` pour le cas " -"général. Tout les objets ne peuvent pas être copiés, mais la plupart le " -"peuvent." +"En général, essayez :func:`copy.copy` ou :func:`copy.deepcopy`. Tous les " +"objets ne peuvent pas être copiés, mais la plupart le peuvent." #: ../Doc/faq/programming.rst:632 msgid "" "Some objects can be copied more easily. Dictionaries have a :meth:`~dict." "copy` method::" msgstr "" -"Certains objects peuvent être copiés plus facilement. Les Dictionnaires ont " -"une méthode :meth:`~dict.copy` ::" +"Certains objets peuvent être copiés plus facilement que d'autres. Les " +"dictionnaires ont une méthode :meth:`~dict.copy` ::" #: ../Doc/faq/programming.rst:637 msgid "Sequences can be copied by slicing::" -msgstr "Les séquences peuvent être copiées via la syntaxe des tranches::" +msgstr "Les séquences peuvent être copiées via la syntaxe des tranches ::" #: ../Doc/faq/programming.rst:643 msgid "How can I find the methods or attributes of an object?" -msgstr "Comment puis-je trouver les méthodes ou les attribues d'un objet?" +msgstr "Comment récupérer les méthodes ou les attributs d'un objet ?" #: ../Doc/faq/programming.rst:645 msgid "" @@ -765,7 +1037,7 @@ msgstr "" #: ../Doc/faq/programming.rst:651 msgid "How can my code discover the name of an object?" -msgstr "Comment mon code peut il découvrir le nom d'un objet?" +msgstr "Comment un code peut-il obtenir le nom d'un objet ?" #: ../Doc/faq/programming.rst:653 msgid "" @@ -787,10 +1059,10 @@ msgid "" "instance of class A. However, it is impossible to say whether the " "instance's name is a or b, since both names are bound to the same value." msgstr "" -"Le fait que la classe ait un nom est discutable, bien qu'elles soit liée à " -"deux noms, et qu'elle soit appelée via le nom B, l'instance crée déclare " -"tout de même être une instance de la classe A. De même Il est impossible de " -"dire si le nom de l'instance est a ou b, les deux noms sont attachés à la " +"Affirmer que la classe a un nom est discutable. Bien qu'elle soit liée à " +"deux noms, et qu'elle soit appelée via le nom B, l'instance créée déclare " +"tout de même être une instance de la classe A. De même, il est impossible de " +"dire si le nom de l'instance est a ou b, les deux noms étant attachés à la " "même valeur." #: ../Doc/faq/programming.rst:674 @@ -800,18 +1072,18 @@ msgid "" "introspective programs, this is usually an indication that a change of " "approach might be beneficial." msgstr "" -"De façon général, il ne devrait pas être nécessaire pour votre application " -"de \"connaître le nom\" d'une valeur particulière. À moins que vous soyez " -"délibérément en train d'écrire un programme introspectif, c'est souvent une " -"indication qu'un changement d'approche pourrait être bénéfique." +"De façon générale, une application ne devrait pas avoir besoin de « " +"connaître le nom » d'une valeur particulière. À moins d'être délibérément en " +"train d'écrire un programme introspectif, c'est souvent l'indication qu'un " +"changement d'approche serait bénéfique." #: ../Doc/faq/programming.rst:679 msgid "" "In comp.lang.python, Fredrik Lundh once gave an excellent analogy in answer " "to this question:" msgstr "" -"Sur comp.lang.python, Fredrik Lundh a donné un jour une excellente analogie " -"pour répondre à cette question:" +"Sur *comp.lang.python*, Fredrik Lundh a donné un jour une excellente " +"analogie pour répondre à cette question :" #: ../Doc/faq/programming.rst:682 msgid "" @@ -820,18 +1092,18 @@ msgid "" "so the only way to find out what it's called is to ask all your neighbours " "(namespaces) if it's their cat (object)..." msgstr "" -"C'est pareil que trouver le nom du chat qui traîne devant votre porte: Le " -"chat (objet) ne peux pas vous dire lui même son nom, et il s'en moque un peu " -"-- alors le meilleur moyen de savoir comment il s'appelle est de demander à " -"tous vos voisins (namespaces) si c'est leur chat (objet)…" +"C'est pareil que trouver le nom du chat qui traîne devant votre porte : le " +"chat (objet) ne peut pas vous dire lui-même son nom, et il s'en moque un peu " +"­– alors le meilleur moyen de savoir comment il s'appelle est de demander à " +"tous vos voisins (espaces de nommage) si c'est leur chat (objet)…" #: ../Doc/faq/programming.rst:687 msgid "" "....and don't be surprised if you'll find that it's known by many names, or " "no name at all!" msgstr "" -"…et ne soyez pas surpris si vous découvrez qu'il est connus sous plusieurs " -"noms différents, ou pas de nom du tout!" +"…et ne soyez pas surpris si vous découvrez qu'il est connu sous plusieurs " +"noms, ou s'il n'a pas de nom du tout !" #: ../Doc/faq/programming.rst:692 msgid "What's up with the comma operator's precedence?" @@ -840,7 +1112,7 @@ msgstr "Qu'en est-il de la précédence de l'opérateur virgule ?" #: ../Doc/faq/programming.rst:694 msgid "Comma is not an operator in Python. Consider this session::" msgstr "" -"La virgule n'est pas un opérateur en Python. Observez la session suivante::" +"La virgule n'est pas un opérateur en Python. Observez le code suivant ::" #: ../Doc/faq/programming.rst:699 msgid "" @@ -848,12 +1120,12 @@ msgid "" "above is evaluated as if you had entered::" msgstr "" "Comme la virgule n'est pas un opérateur, mais un séparateur entre deux " -"expression, l'expression ci dessus, est évaluée de la même façon que si vous " -"aviez écrit::" +"expressions, l'expression ci-dessus est évaluée de la même façon que si vous " +"aviez écrit ::" #: ../Doc/faq/programming.rst:704 msgid "not::" -msgstr "et non::" +msgstr "et non ::" #: ../Doc/faq/programming.rst:708 msgid "" @@ -861,9 +1133,9 @@ msgid "" "They are not truly operators but syntactic delimiters in assignment " "statements." msgstr "" -"Ceci est vrai pour tous les opérateurs d'assignations (``=``, ``+=`` etc). " -"Ce ne sont pas vraiment des opérateurs mais des délimiteurs syntaxiques dans " -"les instructions d'assignation." +"Ceci est vrai pour tous les opérateurs d'affectation (``=``, ``+=`` etc). Ce " +"ne sont pas vraiment des opérateurs mais plutôt des délimiteurs syntaxiques " +"dans les instructions d'affectation." #: ../Doc/faq/programming.rst:713 msgid "Is there an equivalent of C's \"?:\" ternary operator?" @@ -871,13 +1143,15 @@ msgstr "Existe-t-il un équivalent à l'opérateur ternaire \"?:\" du C ?" #: ../Doc/faq/programming.rst:715 msgid "Yes, there is. The syntax is as follows::" -msgstr "Oui, il y en a un. Sa syntaxe est la suivante : ::" +msgstr "Oui. Sa syntaxe est la suivante ::" #: ../Doc/faq/programming.rst:722 msgid "" "Before this syntax was introduced in Python 2.5, a common idiom was to use " "logical operators::" msgstr "" +"Avant l'introduction de cette syntaxe dans Python 2.5, il était courant " +"d'utiliser les opérateurs de logique ::" #: ../Doc/faq/programming.rst:727 msgid "" @@ -885,6 +1159,9 @@ msgid "" "has a false boolean value. Therefore, it is always better to use the ``... " "if ... else ...`` form." msgstr "" +"Cet idiome est dangereux, car il donne un résultat erroné quand *on_true* a " +"la valeur booléenne fausse. Il faut donc toujours utiliser la forme ``... " +"if ... else ...``." #: ../Doc/faq/programming.rst:733 msgid "Is it possible to write obfuscated one-liners in Python?" @@ -898,12 +1175,11 @@ msgid "" "`lambda`. See the following three examples, due to Ulf Bartelt::" msgstr "" "Oui. Cela est généralement réalisé en imbriquant les :keyword:`lambda` dans " -"des :keyword:`lambda`. Observez les trois exemples suivants, contribués par " -"Ulf Bartelt::" +"des :keyword:`lambda`. Observez les trois exemples suivants de Ulf Bartelt ::" #: ../Doc/faq/programming.rst:762 msgid "Don't try this at home, kids!" -msgstr "Les enfants, ne faîtes pas ça chez vous !" +msgstr "Les enfants, ne faites pas ça chez vous !" #: ../Doc/faq/programming.rst:766 msgid "Numbers and strings" @@ -911,7 +1187,7 @@ msgstr "Nombres et chaînes de caractères" #: ../Doc/faq/programming.rst:769 msgid "How do I specify hexadecimal and octal integers?" -msgstr "Comment puis-je écrire des entiers hexadécimaux ou octaux ?" +msgstr "Comment écrire des entiers hexadécimaux ou octaux ?" #: ../Doc/faq/programming.rst:771 msgid "" @@ -920,8 +1196,8 @@ msgid "" "octal value \"10\" (8 in decimal), type::" msgstr "" "Pour écrire un entier octal, faites précéder la valeur octale par un zéro, " -"puis un \"o\" majuscule ou minuscule. Par exemple assigner la valeur octale " -"\"10\" (8 en décimal) à la variable \"a\", tapez::" +"puis un \"o\" majuscule ou minuscule. Par exemple pour affecter la valeur " +"octale \"10\" (8 en décimal) à la variable \"a\", tapez ::" #: ../Doc/faq/programming.rst:779 msgid "" @@ -929,22 +1205,22 @@ msgid "" "zero, and then a lower or uppercase \"x\". Hexadecimal digits can be " "specified in lower or uppercase. For example, in the Python interpreter::" msgstr "" -"L'hexadécimal est tout aussi simple, faîtes précéder le nombre hexadécimal " +"L'hexadécimal est tout aussi simple, faites précéder le nombre hexadécimal " "par un zéro, puis un \"x\" majuscule ou minuscule. Les nombres hexadécimaux " -"peuvent être écrit en majuscules ou en minuscules. Par exemple, dans " -"l'interpréteur Python::" +"peuvent être écrits en majuscules ou en minuscules. Par exemple, dans " +"l'interpréteur Python ::" #: ../Doc/faq/programming.rst:792 msgid "Why does -22 // 10 return -3?" -msgstr "Pourquoi -22 // 10 donne-t-il -3 ?" +msgstr "Pourquoi ``-22 // 10`` donne-t-il ``-3`` ?" #: ../Doc/faq/programming.rst:794 msgid "" "It's primarily driven by the desire that ``i % j`` have the same sign as " "``j``. If you want that, and also want::" msgstr "" -"Cela est principalement due à la volonté que ``i % j`` ait le même signe que " -"j. Si vous voulez cela, vous voulez aussi : ::" +"Cela est principalement dû à la volonté que ``i % j`` ait le même signe que " +"j. Si vous voulez en plus que ::" #: ../Doc/faq/programming.rst:799 msgid "" @@ -952,8 +1228,8 @@ msgid "" "identity to hold, and then compilers that truncate ``i // j`` need to make " "``i % j`` have the same sign as ``i``." msgstr "" -"Alors la division entière doit retourner l'entier inférieur. Le C demande " -"aussi à ce que cette égalité soit vérifiée, et donc les compilateur qui " +"alors la division entière doit renvoyer l'entier inférieur. Le C impose " +"également que cette égalité soit vérifiée, et donc les compilateurs qui " "tronquent ``i // j`` ont besoin que ``i % j`` ait le même signe que ``i``." #: ../Doc/faq/programming.rst:803 @@ -964,15 +1240,15 @@ msgid "" "say 200 hours ago? ``-190 % 12 == 2`` is useful; ``-190 % 12 == -10`` is a " "bug waiting to bite." msgstr "" -"Il y a peu de cas d'utilisation réels pour ``i%j`` quand ``j`` est négatif. " -"Quand ``j`` est positif, il y en a beaucoup, et dans pratiquement tous, il " -"est plus utile que ``i % j`` soit ``>=0``. Si l'horloge dit 10h maintenant, " -"que disait-elle il y a 200 heures? ``-190%12 == 2`` est utile; ``-192 % 12 " -"== -10`` est un bug qui attends pour mordre." +"Il y a peu de cas d'utilisation réels pour ``i % j`` quand ``j`` est " +"négatif. Quand ``j`` est positif, il y en a beaucoup, et dans pratiquement " +"tous, il est plus utile que ``i % j`` soit ``>=0``. Si l'horloge affiche " +"10 h maintenant, qu'affichait-elle il y a 200 heures ? ``-190 % 12 == 2`` " +"est utile ; ``-190 % 12 == -10`` est un bogue en puissance." #: ../Doc/faq/programming.rst:811 msgid "How do I convert a string to a number?" -msgstr "Comment puis-je convertir une chaine de caractère en nombre?" +msgstr "Comment convertir une chaîne de caractères en nombre ?" #: ../Doc/faq/programming.rst:813 msgid "" @@ -980,9 +1256,9 @@ msgid "" "``int('144') == 144``. Similarly, :func:`float` converts to floating-point, " "e.g. ``float('144') == 144.0``." msgstr "" -"Pour les entiers, utilisez la fonction built-in :func:`int` de type " -"constructeur, par exemple ``int('144') == 144``. De façon similaire, :func:" -"`float` convertit en valeur flottante, par exemple ``float('144') == 144.0``." +"Pour les entiers, utilisez le constructeur natif de :func:`int`, par exemple " +"``int('144') == 144``. De façon similaire, :func:`float` donne la valeur " +"flottante, par exemple ``float('144') == 144.0``." #: ../Doc/faq/programming.rst:817 msgid "" @@ -993,12 +1269,12 @@ msgid "" "interpreted using Python's rules: a leading '0o' indicates octal, and '0x' " "indicates a hex number." msgstr "" -"Par défaut, ces fonctions interprètent les nombre en tant que décimaux, de " -"telles façons que ``int('0144') == 144`` et ``int('0x144')`` lève une :exc:" -"`ValueError`. ``int(string, base)`` prends la base depuis laquelle il faut " -"convertir dans le second argument, optionnel, donc ``int('0x144', 16) == " -"324``. Si la base donnée est 0, le nombre est interprété selon les règles " -"Python: un préfixe '0o' indique de l'octal, et '0x' indique de l'hexadécimal." +"Par défaut, ces fonctions interprètent les nombres comme des décimaux, de " +"telle façon que ``int('0144') == 144`` et ``int('0x144')`` lève une :exc:" +"`ValueError`. Le second argument (optionnel) de ``int(string, base)`` est la " +"base dans laquelle convertir, donc ``int('0x144', 16) == 324``. Si la base " +"donnée est 0, le nombre est interprété selon les règles Python : un préfixe " +"``0o`` indique de l'octal et ``0x`` indique de l'hexadécimal." #: ../Doc/faq/programming.rst:823 msgid "" @@ -1009,13 +1285,12 @@ msgid "" "``__import__('os').system(\"rm -rf $HOME\")`` which would erase your home " "directory." msgstr "" -"N'utilisez pas la fonction built-in :func:`eval` si tout ce que vous avez " -"besoin est de convertir des chaines en nombres. :func:`eval` sera " -"significativement plus lent et implique des risque de sécurité: quelqu'un " -"pourrait vous envoyez une expression Python pouvant avoir des effets de bord " -"indésirables. Par exemple, quelqu'un pourrait passer ``__import__('os')." -"system(\"rm -rf $HOME\")`` ce qui aurait pour effet d'effacer votre " -"répertoire personnel." +"N'utilisez pas la fonction native :func:`eval` pour convertir des chaînes de " +"caractères en nombres. :func:`eval` est beaucoup plus lente et pose des " +"problèmes de sécurité : quelqu'un pourrait vous envoyer une expression " +"Python pouvant avoir des effets de bord indésirables. Par exemple, quelqu'un " +"pourrait passer ``__import__('os').system(\"rm -rf $HOME\")`` ce qui " +"effacerait votre répertoire personnel." #: ../Doc/faq/programming.rst:830 msgid "" @@ -1023,14 +1298,14 @@ msgid "" "expressions, so that e.g. ``eval('09')`` gives a syntax error because Python " "does not allow leading '0' in a decimal number (except '0')." msgstr "" -":func:`eval` a aussi pour effet d'interpréter les nombres comme comme des " -"expression Python, ainsi ``eval('09')`` produit une erreur de syntaxe par ce " -"que Python ne permet pas les '0' en tête d'un nombre décimal (à l'exception " -"du nombre '0')." +":func:`eval` a aussi pour effet d'interpréter les nombres comme des " +"expressions Python. Ainsi ``eval('09')`` produit une erreur de syntaxe, " +"parce que Python ne permet pas les '0' en tête d'un nombre décimal (à " +"l'exception du nombre '0')." #: ../Doc/faq/programming.rst:836 msgid "How do I convert a number to a string?" -msgstr "Comment convertir un nombre en chaine de caractère?" +msgstr "Comment convertir un nombre en chaîne de caractères ?" #: ../Doc/faq/programming.rst:838 msgid "" @@ -1041,10 +1316,17 @@ msgid "" "``\"{:04d}\".format(144)`` yields ``'0144'`` and ``\"{:.3f}\"." "format(1.0/3.0)`` yields ``'0.333'``." msgstr "" +"Pour transformer, par exemple, le nombre 144 en la chaîne de caractères " +"'144', il faut utiliser la fonction native :func:`str`. Pour obtenir la " +"représentation hexadécimale ou octale, il faut utiliser les fonctions " +"natives :func:`hex` ou :func:`oct`. Pour des représentations non-" +"conventionnelles, se référer aux sections :ref:`f-strings` et :ref:" +"`formatstrings`, e.g. ``\"{:04d}\".format(144)`` produit ``'0144'`` et ``" +"\"{:.3f}\".format(1.0/3.0)`` produit ``'0.333'``." #: ../Doc/faq/programming.rst:847 msgid "How do I modify a string in place?" -msgstr "Comment modifier une chaine de caractère \"en place\"?" +msgstr "Comment modifier une chaîne de caractères « sur place » ?" #: ../Doc/faq/programming.rst:849 msgid "" @@ -1054,16 +1336,21 @@ msgid "" "unicode data, try using an :class:`io.StringIO` object or the :mod:`array` " "module::" msgstr "" +"C'est impossible car les chaînes de caractères sont immuables. Dans la " +"plupart des cas, il faut tout simplement construire une nouvelle chaîne à " +"partir des morceaux de l'ancienne. Si toutefois vous avez besoin d'un objet " +"capable de modifier de la donnée Unicode « sur place », essayez d'utiliser " +"un objet :class:`io.StringIO` ou le module :mod:`array` ::" #: ../Doc/faq/programming.rst:879 msgid "How do I use strings to call functions/methods?" msgstr "" -"Comment utiliser des chaines de caractères pour appeler des fonctions/" -"méthodes?" +"Comment utiliser des chaînes de caractères pour appeler des fonctions/" +"méthodes ?" #: ../Doc/faq/programming.rst:881 msgid "There are various techniques." -msgstr "Il y a différentes techniques." +msgstr "Il y a plusieurs façons de faire." #: ../Doc/faq/programming.rst:883 msgid "" @@ -1073,33 +1360,34 @@ msgid "" "a case construct::" msgstr "" "La meilleure est d'utiliser un dictionnaire qui fait correspondre les " -"chaines de caractères à des fonctions. Le principal avantage de cette " -"technique est que les chaines n'ont pas besoin d'être égales aux noms de " -"fonctions. C'est aussi la principale façon d'imiter la construction \"case" -"\"::" +"chaînes de caractères à des fonctions. Le principal avantage de cette " +"technique est que les chaînes n'ont pas besoin d'être égales aux noms de " +"fonctions. C'est aussi la façon principale d'imiter la construction \"case" +"\" ::" #: ../Doc/faq/programming.rst:898 msgid "Use the built-in function :func:`getattr`::" -msgstr "Utiliser la fonction :func:`getattr`::" +msgstr "Utiliser la fonction :func:`getattr` ::" #: ../Doc/faq/programming.rst:903 msgid "" "Note that :func:`getattr` works on any object, including classes, class " "instances, modules, and so on." msgstr "" -"Notez que :func:`getattr` marche sur n'importe quel objet, ceci inclue les " +"Notez que :func:`getattr` marche sur n'importe quel objet, ceci inclut les " "classes, les instances de classes, les modules et ainsi de suite." #: ../Doc/faq/programming.rst:906 msgid "This is used in several places in the standard library, like this::" msgstr "" -"Ceci est utilisé dans plusieurs endroit de la bibliothèque standard, de " -"cette façon::" +"Ceci est utilisé à plusieurs reprises dans la bibliothèque standard, de " +"cette façon ::" #: ../Doc/faq/programming.rst:919 msgid "Use :func:`locals` or :func:`eval` to resolve the function name::" msgstr "" -"Utilisez :func:`locals` ou :func:`eval` pour résoudre le nom de fonction::" +"Utilisez :func:`locals` ou :func:`eval` pour résoudre le nom de la " +"fonction ::" #: ../Doc/faq/programming.rst:932 msgid "" @@ -1107,18 +1395,18 @@ msgid "" "control over the contents of the string, someone could pass a string that " "resulted in an arbitrary function being executed." msgstr "" -"Note: En utilisant :func:`eval` est lent est dangereux. Si vous n'avez pas " -"un contrôle absolu sur le contenu de la chaine de caractère, quelqu'un peut " -"passer une chaine de caractère pouvant résulter en l'exécution de code " -"arbitraire." +"Note : utiliser :func:`eval` est lent est dangereux. Si vous n'avez pas un " +"contrôle absolu sur le contenu de la chaîne de caractères, quelqu'un " +"pourrait passer une chaîne de caractères pouvant appeler n'importe quelle " +"fonction." #: ../Doc/faq/programming.rst:937 msgid "" "Is there an equivalent to Perl's chomp() for removing trailing newlines from " "strings?" msgstr "" -"Existe-t'il un équivalent à la fonction chomp() de Perl, pour retirer les " -"caractères de fin de ligne d'une chaine de caractère?" +"Existe-t-il un équivalent à la fonction ``chomp()`` de Perl, pour retirer " +"les caractères de fin de ligne d'une chaîne de caractères ?" #: ../Doc/faq/programming.rst:939 msgid "" @@ -1128,23 +1416,23 @@ msgid "" "empty lines at the end, the line terminators for all the blank lines will be " "removed::" msgstr "" -"Vous pouvez utiliser ``S.rstrip(\"\\r\\n\")`` pour retirer toute occurrence " -"de tout marqueur de fin de ligne, à la fin d'une chaîne de caractère ``S``, " -"sans en retirer aucun espace. Si la chaîne ``S`` représente plus d'une " -"ligne, avec plusieurs lignes vides, les marqueurs de fin de de lignes de " -"chaque lignes vides seront retirés : ::" +"Vous pouvez utiliser ``S.rstrip(\"\\r\\n\")`` pour retirer toutes les " +"occurrences de tout marqueur de fin de ligne à la fin d'une chaîne de " +"caractère ``S``, sans en enlever aucune espace. Si la chaîne ``S`` " +"représente plus d'une ligne, avec plusieurs lignes vides, les marqueurs de " +"fin de ligne de chaque ligne vide seront retirés ::" #: ../Doc/faq/programming.rst:951 msgid "" "Since this is typically only desired when reading text one line at a time, " "using ``S.rstrip()`` this way works well." msgstr "" -"Du fait que ce soit principalement utile en lisant un texte ligne à ligne, " -"utiliser ``S.rstrip()`` devrait marcher correctement." +"Vu que cela ne sert presque qu'à lire un texte ligne à ligne, utiliser ``S." +"rstrip()`` de cette manière fonctionne correctement." #: ../Doc/faq/programming.rst:956 msgid "Is there a scanf() or sscanf() equivalent?" -msgstr "Existe-t'il un équivalent à scanf() ou sscanf()?" +msgstr "Existe-t-il un équivalent à ``scanf()`` ou ``sscanf()`` ?" #: ../Doc/faq/programming.rst:958 msgid "Not as such." @@ -1159,69 +1447,81 @@ msgid "" "parameter which is useful if the line uses something other than whitespace " "as a separator." msgstr "" -"Pour une simple analyse de chaine, l'approche la plus simple est " +"Pour une simple analyse de chaîne, l'approche la plus simple est " "généralement de découper la ligne en mots délimités par des espaces, en " -"utilisant la méthode :meth:`~str.split` des objets chaine de caractères, et " -"ensuite de convertir les chaines de décimales en valeurs numériques en " -"utilisant la fonction :func:`int` ou :func:`float`, ``split()`` supporte un " +"utilisant la méthode :meth:`~str.split` des objets chaîne de caractères, et " +"ensuite de convertir les chaînes de décimaux en valeurs numériques en " +"utilisant la fonction :func:`int` ou :func:`float`. ``split()`` possède un " "paramètre optionnel \"sep\" qui est utile si la ligne utilise autre chose " -"que des espaces comme séparateur." +"que des espaces comme séparateurs." #: ../Doc/faq/programming.rst:966 msgid "" "For more complicated input parsing, regular expressions are more powerful " "than C's :c:func:`sscanf` and better suited for the task." msgstr "" -"Pour les analyses plus compliquées, les expressions rationnelles sont plus " +"Pour des analyses plus compliquées, les expressions rationnelles sont plus " "puissantes que la fonction :c:func:`sscanf` de C et mieux adaptées à la " "tâche." #: ../Doc/faq/programming.rst:971 msgid "What does 'UnicodeDecodeError' or 'UnicodeEncodeError' error mean?" msgstr "" -"Que signifient les erreurs 'UnicodeDecodeError' ou 'UnicodeEncodeError' ?" +"Que signifient les erreurs ``UnicodeDecodeError`` ou ``UnicodeEncodeError`` ?" #: ../Doc/faq/programming.rst:973 msgid "See the :ref:`unicode-howto`." -msgstr "Regardez :ref:`unicode-howto`." +msgstr "Voir :ref:`unicode-howto`." #: ../Doc/faq/programming.rst:977 msgid "Performance" -msgstr "" +msgstr "Performances" #: ../Doc/faq/programming.rst:980 msgid "My program is too slow. How do I speed it up?" -msgstr "" +msgstr "Mon programme est trop lent. Comment l'accélérer ?" #: ../Doc/faq/programming.rst:982 msgid "" "That's a tough one, in general. First, here are a list of things to " "remember before diving further:" msgstr "" +"Question difficile en général. Il faut garder en tête les points suivants " +"avant d'aller plus loin :" #: ../Doc/faq/programming.rst:985 msgid "" "Performance characteristics vary across Python implementations. This FAQ " "focusses on :term:`CPython`." msgstr "" +"Les performances varient en fonction des implémentations de Python. Cette " +"FAQ ne traite que de :term:`CPython`." #: ../Doc/faq/programming.rst:987 msgid "" "Behaviour can vary across operating systems, especially when talking about I/" "O or multi-threading." msgstr "" +"Les comportements peuvent différer d'un système d'exploitation à l'autre, " +"tout particulièrement quand il s'agit d'entrée/sortie ou de fils d'exécution " +"multiples." #: ../Doc/faq/programming.rst:989 msgid "" "You should always find the hot spots in your program *before* attempting to " "optimize any code (see the :mod:`profile` module)." msgstr "" +"Il faut toujours essayer de trouver où sont les points de contention d'un " +"programme *avant* d'essayer d'optimiser du code (voir le module :mod:" +"`profile`)." #: ../Doc/faq/programming.rst:991 msgid "" "Writing benchmark scripts will allow you to iterate quickly when searching " "for improvements (see the :mod:`timeit` module)." msgstr "" +"Écrire des scripts d'évaluation de performances permet de progresser " +"rapidement dans la recherche d'améliorations (voir le module :mod:`timeit`)." #: ../Doc/faq/programming.rst:993 msgid "" @@ -1229,6 +1529,9 @@ msgid "" "any other technique) before potentially introducing regressions hidden in " "sophisticated optimizations." msgstr "" +"Il est très fortement recommandé d'avoir une bonne couverture de code (avec " +"des tests unitaires ou autre) avant d'ajouter des erreurs dans des " +"optimisations sophistiquées." #: ../Doc/faq/programming.rst:997 msgid "" @@ -1236,6 +1539,9 @@ msgid "" "some general principles which go a long way towards reaching acceptable " "performance levels:" msgstr "" +"Ceci étant dit, il y a beaucoup d'astuces pour accélérer du code Python. " +"Voici quelques principes généraux qui peuvent aider à atteindre des niveaux " +"de performance satisfaisants :" #: ../Doc/faq/programming.rst:1001 msgid "" @@ -1243,12 +1549,17 @@ msgid "" "larger benefits than trying to sprinkle micro-optimization tricks all over " "your code." msgstr "" +"Améliorer les algorithmes (ou en changer pour des plus performants) peut " +"produire de bien meilleurs résultats que d'optimiser ça et là de petites " +"portions du code." #: ../Doc/faq/programming.rst:1005 msgid "" "Use the right data structures. Study documentation for the :ref:`bltin-" "types` and the :mod:`collections` module." msgstr "" +"Utiliser les structures de données adaptées. Se référer à la documentation " +"des :ref:`bltin-types` et du module :mod:`collections`." #: ../Doc/faq/programming.rst:1008 msgid "" @@ -1260,6 +1571,14 @@ msgid "" "do sorting (and see the :ref:`sortinghowto` for examples of moderately " "advanced usage)." msgstr "" +"Quand la bibliothèque standard fournit une implémentation pour quelque " +"chose, il y a de fortes chances (même si ce n'est pas systématique) que " +"cette implémentation soit plus rapide que la votre. C'est d'autant plus vrai " +"pour les routines écrites en C, comme les routines natives et certaines " +"extensions de types. Par exemple, il faut utiliser la méthode native :meth:" +"`list.sort` ou la fonction :func:`sorted` similaire pour classer (et se " +"référer à la section :ref:`sortinghowto` pour des exemples d'utilisation " +"courante)." #: ../Doc/faq/programming.rst:1016 msgid "" @@ -1269,6 +1588,11 @@ msgid "" "especially under the form of tiny functions or methods (which are also often " "detrimental to readability)." msgstr "" +"Les abstractions ont tendance à créer des indirections et obligent " +"l'interpréteur à faire plus d'efforts. Si le niveau d'indirection dépasse la " +"quantité de travail effectif, le programme sera ralenti. Il faut toujours " +"éviter trop d'indirections, en particulier sous la forme de fonctions ou " +"méthodes trop petites (qui nuisent aussi souvent à la clarté du code)." #: ../Doc/faq/programming.rst:1022 msgid "" @@ -1281,16 +1605,29 @@ msgid "" "skills, you can also :ref:`write a C extension module ` " "yourself." msgstr "" +"Si vous atteignez les limites de ce que du Python « pur » permet de faire, " +"il y a des outils qui permettent d'aller plus loin. Par exemple, `Cython " +"`_ peut compiler une version légèrement modifiée de code " +"Python en une extension C et est disponible sur de nombreuses plate-formes. " +"Cython peut bénéficier de la compilation (et de l'annotation, optionnelle, " +"des types) pour rendre votre code beaucoup plus rapide que s'il était " +"interprété. Si vous avez confiance en vos capacités de programmation en C, " +"vous pouvez aussi :ref:`écrire un module d'extension en C` " +"vous-même." #: ../Doc/faq/programming.rst:1032 msgid "" "The wiki page devoted to `performance tips `_." msgstr "" +"La page wiki dédiée aux `astuces de performance `_." #: ../Doc/faq/programming.rst:1038 msgid "What is the most efficient way to concatenate many strings together?" msgstr "" +"Quelle est la manière la plus efficace de concaténer un grand nombre de " +"chaînes de caractères ?" #: ../Doc/faq/programming.rst:1040 msgid "" @@ -1299,16 +1636,26 @@ msgid "" "creates a new object. In the general case, the total runtime cost is " "quadratic in the total string length." msgstr "" +"Les objets :class:`str` et :class:`bytes` sont immuables, par conséquent " +"concaténer un grand nombre de chaînes de caractères entre elles n'est pas " +"très efficace car chaque concaténation crée un nouvel objet. Dans le cas " +"général, la complexité est quadratique par rapport à la taille totale de la " +"chaîne." #: ../Doc/faq/programming.rst:1045 msgid "" "To accumulate many :class:`str` objects, the recommended idiom is to place " "them into a list and call :meth:`str.join` at the end::" msgstr "" +"Pour mettre bout-à-bout un grand nombre d'objets :class:`str`, la technique " +"recommandée consiste à toutes les mettre dans une liste et appeler la " +"méthode :meth:`str.join` à la fin ::" #: ../Doc/faq/programming.rst:1053 msgid "(another reasonably efficient idiom is to use :class:`io.StringIO`)" msgstr "" +"(une autre technique relativement efficace consiste à utiliser :class:`io." +"StringIO`)" #: ../Doc/faq/programming.rst:1055 msgid "" @@ -1316,22 +1663,26 @@ msgid "" "extend a :class:`bytearray` object using in-place concatenation (the ``+=`` " "operator)::" msgstr "" +"Pour concaténer un grand nombre d'objets :class:`bytes`, la technique " +"recommandée consiste à étendre un objet :class:`bytearray` en utilisant la " +"concaténation en-place (l'opérateur ``+=``) ::" #: ../Doc/faq/programming.rst:1064 msgid "Sequences (Tuples/Lists)" -msgstr "Sequences (Tuples/Lists)" +msgstr "Séquences (n-uplets / listes)" #: ../Doc/faq/programming.rst:1067 msgid "How do I convert between tuples and lists?" -msgstr "Comment convertir les listes en tuples et inversement?" +msgstr "Comment convertir les listes en n-uplets et inversement ?" #: ../Doc/faq/programming.rst:1069 msgid "" "The type constructor ``tuple(seq)`` converts any sequence (actually, any " "iterable) into a tuple with the same items in the same order." msgstr "" -"Le constructeur de type ``tuple(seq)`` convertit toute séquence (en fait " -"tout itérable) en un tuple avec les mêmes éléments dans le même ordre…" +"Le constructeur de type ``tuple(seq)`` convertit toute séquence (plus " +"précisément, tout itérable) en un n-uplet avec les mêmes éléments dans le " +"même ordre." #: ../Doc/faq/programming.rst:1072 msgid "" @@ -1340,11 +1691,11 @@ msgid "" "copy but returns the same object, so it is cheap to call :func:`tuple` when " "you aren't sure that an object is already a tuple." msgstr "" -"Par exemple ``tuple([1, 2, 3])`` renvoi ``(1, 2, 3)`` et ``tuple('abc')`` " -"renvoi ``('a', 'b', 'c')``. Si l'argument est un tuple, cela ne crèe pas une " -"copie, mais renvoi le même objet, ce qui fait de :func:`tuple` un fonction " -"économique à appeler quand vous ne savez pas si votre objet est déjà un " -"tulpe." +"Par exemple ``tuple([1, 2, 3])`` renvoie ``(1, 2, 3)`` et ``tuple('abc')`` " +"renvoie ``('a', 'b', 'c')``. Si l'argument est un n-uplet, cela ne crée pas " +"de copie, mais renvoie le même objet, ce qui fait de :func:`tuple` une " +"fonction économique à appeler quand vous ne savez pas si votre objet est " +"déjà un n-uplet." #: ../Doc/faq/programming.rst:1077 msgid "" @@ -1355,13 +1706,13 @@ msgid "" msgstr "" "Le constructeur de type ``list(seq)`` convertit toute séquence ou itérable " "en liste contenant les mêmes éléments dans le même ordre. Par exemple, " -"``list((1,2,3))`` retourne ``[1,2,3]`` et ``list('abc')`` retourne " -"``['a','b','c']``. Si l'argument est une liste, il retourne une copie, de la " +"``list((1,2,3))`` renvoie ``[1,2,3]`` et ``list('abc')`` renvoie " +"``['a','b','c']``. Si l'argument est une liste, il renvoie une copie, de la " "même façon que ``seq[:]``." #: ../Doc/faq/programming.rst:1084 msgid "What's a negative index?" -msgstr "Qu'est-ce qu'un indexe négatif?" +msgstr "Qu'est-ce qu'un index négatif ?" #: ../Doc/faq/programming.rst:1086 msgid "" @@ -1372,10 +1723,10 @@ msgid "" "``seq[len(seq)-n]``." msgstr "" "Les séquences Python sont indexées avec des nombres positifs aussi bien que " -"négatifs. Pour les nombres positifs, 0 est le premier index, 1 est le " -"second, et ainsi de suite. Pour les indexes négatifs, -1 est le dernier " -"index, -2 est le pénultième (avant dernier), et ainsi de suite. On peut " -"aussi dire que ``seq[-n]`` est équivalent à ``seq[len(seq)-n]``." +"négatifs. Pour les nombres positifs, 0 est le premier indice, 1 est le " +"deuxième, et ainsi de suite. Pour les indices négatifs, ``-1`` est le " +"dernier index, ``-2`` est le pénultième (avant-dernier), et ainsi de suite. " +"On peut aussi dire que ``seq[-n]`` est équivalent à ``seq[len(seq)-n]``." #: ../Doc/faq/programming.rst:1091 msgid "" @@ -1383,56 +1734,56 @@ msgid "" "all of the string except for its last character, which is useful for " "removing the trailing newline from a string." msgstr "" -"Utiliser des indexes négatifs peut être très pratique. Par exemple " -"``S[:-1]`` indique la chaine entière a l'exception du dernier caractère, ce " -"qui est pratique pour retirer un caractère de fin de ligne en fin d'une " -"chaine." +"Utiliser des indices négatifs peut être très pratique. Par exemple " +"``S[:-1]`` représente la chaîne tout entière à l'exception du dernier " +"caractère, ce qui est pratique pour retirer un caractère de fin de ligne à " +"la fin d'une chaîne." #: ../Doc/faq/programming.rst:1097 msgid "How do I iterate over a sequence in reverse order?" -msgstr "Comment itérer à rebours sur une séquence?" +msgstr "Comment itérer à rebours sur une séquence ?" #: ../Doc/faq/programming.rst:1099 msgid "" "Use the :func:`reversed` built-in function, which is new in Python 2.4::" msgstr "" -"Utilisez la fonction embarquée :func:`reversed`, qui est apparue en Python " -"2.4::" +"Utilisez la fonction native :func:`reversed`, qui a été introduite en Python " +"2.4 ::" #: ../Doc/faq/programming.rst:1104 msgid "" "This won't touch your original sequence, but build a new copy with reversed " "order to iterate over." msgstr "" -"Cela ne modifiera pas votre séquence initiale, mais construira à la place " -"une copie en ordre inverse pour itérer dessus." +"Cela ne modifie pas la séquence initiale, mais construit à la place une " +"copie en ordre inverse pour itérer dessus." #: ../Doc/faq/programming.rst:1107 msgid "With Python 2.3, you can use an extended slice syntax::" -msgstr "Avec Python 2.3 vous pouvez utiliser la syntaxe étendue de tranches::" +msgstr "Avec Python 2.3 vous pouvez utiliser la syntaxe étendue de tranches ::" #: ../Doc/faq/programming.rst:1114 msgid "How do you remove duplicates from a list?" -msgstr "Comment retirer les doublons d'une liste?" +msgstr "Comment retirer les doublons d'une liste ?" #: ../Doc/faq/programming.rst:1116 msgid "See the Python Cookbook for a long discussion of many ways to do this:" msgstr "" -"Lisez le Python Cookbook pour trouver une longue discussion sur les " -"nombreuses façons de faire cela:" +"Lisez le « livre de recettes » Python pour trouver une longue discussion sur " +"les nombreuses approches possibles :" #: ../Doc/faq/programming.rst:1118 msgid "https://code.activestate.com/recipes/52560/" -msgstr "" +msgstr "https://code.activestate.com/recipes/52560/" #: ../Doc/faq/programming.rst:1120 msgid "" "If you don't mind reordering the list, sort it and then scan from the end of " "the list, deleting duplicates as you go::" msgstr "" -"Si changer l'ordre de la liste ne vous dérange pas, commencez par trier " -"celle ci, puis parcourez la d'un bout à l'autre, en supprimant les doublons " -"trouvés en chemin::" +"Si changer l'ordre de la liste ne vous dérange pas, commencez par ordonner " +"celle-ci, puis parcourez-la d'un bout à l'autre, en supprimant les doublons " +"trouvés en chemin ::" #: ../Doc/faq/programming.rst:1132 msgid "" @@ -1440,24 +1791,24 @@ msgid "" "`hashable`) this is often faster ::" msgstr "" "Si tous les éléments de la liste peuvent être utilisés comme des clés de " -"dictionnaire (càd, qu'elles sont toutes :term:`hachables `) ceci " -"est souvent plus rapide : ::" +"dictionnaire (c'est à dire, qu'elles sont toutes :term:`hachables " +"`) ceci est souvent plus rapide ::" #: ../Doc/faq/programming.rst:1137 msgid "" "This converts the list into a set, thereby removing duplicates, and then " "back into a list." msgstr "" -"Ceci convertis la liste en un ensemble, ce qui supprime automatiquement les " +"Ceci convertit la liste en un ensemble, ce qui supprime automatiquement les " "doublons, puis la transforme à nouveau en liste." #: ../Doc/faq/programming.rst:1142 msgid "How do you make an array in Python?" -msgstr "Comment construire un tableau en Python?" +msgstr "Comment construire un tableau en Python ?" #: ../Doc/faq/programming.rst:1144 msgid "Use a list::" -msgstr "Utilisez une liste::" +msgstr "Utilisez une liste ::" #: ../Doc/faq/programming.rst:1148 msgid "" @@ -1465,7 +1816,7 @@ msgid "" "primary difference is that a Python list can contain objects of many " "different types." msgstr "" -"Les listes ont un cout équivalent à celui des tableau C ou Pascal; la " +"Les listes ont un coût équivalent à celui des tableaux C ou Pascal ; la " "principale différence est qu'une liste Python peut contenir des objets de " "différents types." @@ -1478,16 +1829,16 @@ msgid "" msgstr "" "Le module ``array`` fournit des méthodes pour créer des tableaux de types " "fixes dans une représentation compacte, mais ils sont plus lents à indexer " -"que les listes. Notez aussi que l'extension ``Numeric`` et d'autres, " -"fournissent différentes structures de types tableaux, avec des " +"que les listes. Notez aussi que l'extension ``Numeric`` (et d'autres) " +"fournissent différentes structures de type tableaux, avec des " "caractéristiques différentes." #: ../Doc/faq/programming.rst:1156 msgid "" "To get Lisp-style linked lists, you can emulate cons cells using tuples::" msgstr "" -"Pour obtenir des listes chainées de type Lisp, vous pouvez émuler les \"cons " -"cells\" en utilisant des tuples::" +"Pour obtenir des listes chaînées à la sauce Lisp, vous pouvez émuler les " +"*cons cells* en utilisant des n-uplets ::" #: ../Doc/faq/programming.rst:1160 msgid "" @@ -1497,29 +1848,30 @@ msgid "" "it's usually a lot slower than using Python lists." msgstr "" "Si vous voulez pouvoir modifier les éléments, utilisez une liste plutôt " -"qu'un tuple. Ici la version équivalente au \"car\" de Lisp est " -"``lisp_list[0]`` et l'équivalent à \"cdr\" est ``list_lip[1]``. Ne faîtes " +"qu'un tuple. Ici la version équivalente du *car* de Lisp est " +"``lisp_list[0]`` et l'équivalent de *cdr* est ``lisp_list[1]``. Ne faites " "ceci que si vous êtes réellement sûr d'en avoir besoin, cette méthode est en " -"générale bien plus lente que les listes Python." +"général bien plus lente que les listes Python." #: ../Doc/faq/programming.rst:1169 msgid "How do I create a multidimensional list?" -msgstr "Comment puis-je créer une liste à plusieurs dimensions?" +msgstr "Comment créer une liste à plusieurs dimensions ?" #: ../Doc/faq/programming.rst:1171 msgid "You probably tried to make a multidimensional array like this::" msgstr "" "Vous avez probablement essayé de créer une liste à plusieurs dimensions de " -"cette façon::" +"cette façon ::" #: ../Doc/faq/programming.rst:1175 msgid "This looks correct if you print it:" -msgstr "" +msgstr "Elle semble correcte si on l'affiche :" #: ../Doc/faq/programming.rst:1186 msgid "But when you assign a value, it shows up in multiple places:" msgstr "" -"Mais quand vous assignez une valeur, elle apparait en de multiples endroits::" +"Mais quand vous affectez une valeur, celle-ci apparaît à plusieurs " +"endroits ::" #: ../Doc/faq/programming.rst:1198 msgid "" @@ -1528,46 +1880,51 @@ msgid "" "containing 3 references to the same list of length two. Changes to one row " "will show in all rows, which is almost certainly not what you want." msgstr "" -"La raison en est que dupliquer une liste en utilisant ``*`` ne crée pas de " -"copies, cela crée seulement des références aux objets existants. Le ``*3`` " -"crée une liste contenant trois références à la même liste de longueur deux. " -"Un changement dans une colonne apparaîtra donc dans toutes les colonnes. Ce " -"qui n'est de façon quasi certaine, pas ce que vous souhaitez." +"Dupliquer une liste en utilisant ``*`` ne crée en réalité pas de copie mais " +"seulement des références aux objets existants. Le ``*3`` crée une liste " +"contenant trois références à la même liste de longueur deux. Un changement " +"dans une colonne apparaîtra donc dans toutes les colonnes, ce qui n'est très " +"probablement pas ce que vous souhaitiez." #: ../Doc/faq/programming.rst:1203 msgid "" "The suggested approach is to create a list of the desired length first and " "then fill in each element with a newly created list::" msgstr "" -"L'approche suggérée est de créer une liste de la longueur désiré d'abords, " -"puis de remplir tous les éléments avec une chaîne nouvellement créée." +"L'approche suggérée est d'abord de créer une liste de la longueur désirée, " +"puis de remplir tous les éléments avec une nouvelle chaîne ::" #: ../Doc/faq/programming.rst:1210 msgid "" "This generates a list containing 3 different lists of length two. You can " "also use a list comprehension::" msgstr "" -"Cette liste générée contient trois listes différentes de longueur deux. Vous " -"pouvez aussi utilisez la notation de compréhension de listes." +"Cela génère une liste contenant elle-même trois listes distinctes, de " +"longueur deux. Vous pouvez aussi utiliser la syntaxe des listes en " +"compréhension ::" #: ../Doc/faq/programming.rst:1216 msgid "" "Or, you can use an extension that provides a matrix datatype; `NumPy `_ is the best known." msgstr "" +"Vous pouvez aussi utiliser une extension qui fournit un type matriciel " +"natif ; `NumPy `_ est la plus répandue." #: ../Doc/faq/programming.rst:1221 msgid "How do I apply a method to a sequence of objects?" -msgstr "Comment appliquer une méthode à une séquence d'objets?" +msgstr "Comment appliquer une méthode à une séquence d'objets ?" #: ../Doc/faq/programming.rst:1223 msgid "Use a list comprehension::" -msgstr "Utilisez une compréhension de liste::" +msgstr "Utilisez une liste en compréhension ::" #: ../Doc/faq/programming.rst:1230 msgid "" "Why does a_tuple[i] += ['item'] raise an exception when the addition works?" msgstr "" +"Pourquoi ``a_tuple[i] += ['item']`` lève-t-il une exception alors que " +"l'addition fonctionne ?" #: ../Doc/faq/programming.rst:1232 msgid "" @@ -1575,6 +1932,9 @@ msgid "" "operators are *assignment* operators, and the difference between mutable and " "immutable objects in Python." msgstr "" +"Ceci est dû à la combinaison de deux facteurs : le fait que les opérateurs " +"d'affectation incrémentaux sont des opérateurs d'*affectation* et à la " +"différence entre les objets muables et immuables en Python." #: ../Doc/faq/programming.rst:1236 msgid "" @@ -1582,10 +1942,13 @@ msgid "" "applied to elements of a tuple that point to mutable objects, but we'll use " "a ``list`` and ``+=`` as our exemplar." msgstr "" +"Cette discussion est valable, en général, quand des opérateurs d'affectation " +"incrémentale sont appliqués aux éléments d'un n-uplet qui pointe sur des " +"objets muables, mais on prendra ``list`` et ``+=`` comme exemple." #: ../Doc/faq/programming.rst:1240 msgid "If you wrote::" -msgstr "Si vous écrivez : ::" +msgstr "Si vous écrivez ::" #: ../Doc/faq/programming.rst:1248 msgid "" @@ -1595,28 +1958,39 @@ msgid "" "to element ``0`` of the tuple, we get an error because we can't change what " "an element of a tuple points to." msgstr "" +"La cause de l'exception est claire : ``1`` est ajouté à l'objet " +"``a_tuple[0]`` qui pointe sur (``1``), ce qui produit l'objet résultant " +"``2``, mais, lorsque l'on tente d'affecter le résultat du calcul, ``2``, à " +"l'élément ``0`` du n-uplet, on obtient une erreur car il est impossible de " +"modifier la cible sur laquelle pointe un élément d'un n-uplet." #: ../Doc/faq/programming.rst:1254 msgid "" "Under the covers, what this augmented assignment statement is doing is " "approximately this::" msgstr "" +"Sous le capot, une instruction d'affectation incrémentale fait à peu près " +"ceci ::" #: ../Doc/faq/programming.rst:1263 msgid "" "It is the assignment part of the operation that produces the error, since a " "tuple is immutable." msgstr "" +"C'est la partie de l'affectation de l'opération qui génère l'erreur, vu " +"qu'un n-uplet est immuable." #: ../Doc/faq/programming.rst:1266 msgid "When you write something like::" -msgstr "" +msgstr "Quand vous écrivez un code du style ::" #: ../Doc/faq/programming.rst:1274 msgid "" "The exception is a bit more surprising, and even more surprising is the fact " "that even though there was an error, the append worked::" msgstr "" +"L'exception est un peu plus surprenante et, chose encore plus étrange, " +"malgré l'erreur, l'ajout a fonctionné ::" #: ../Doc/faq/programming.rst:1280 msgid "" @@ -1627,6 +2001,13 @@ msgid "" "calling ``extend`` on the list and returning the list. That's why we say " "that for lists, ``+=`` is a \"shorthand\" for ``list.extend``::" msgstr "" +"Pour comprendre ce qui se passe, il faut savoir que, premièrement, si un " +"objet implémente la méthode magique c, celle-ci est appelée quand " +"l'affectation incrémentale ``+=`` est exécutée et sa valeur de retour est " +"utilisée dans l'instruction d'affectation ; et que, deuxièmement, pour les " +"listes, ``__iadd__`` équivaut à appeler ``extend`` sur la liste et à " +"renvoyer celle-ci. C'est pour cette raison que l'on dit que pour les listes, " +"``+=`` est un \"raccourci\" pour ``list.extend`` ::" #: ../Doc/faq/programming.rst:1292 msgid "This is equivalent to::" @@ -1639,10 +2020,16 @@ msgid "" "assignment is a no-op, since it is a pointer to the same object that " "``a_list`` was previously pointing to, but the assignment still happens." msgstr "" +"L'objet sur lequel pointe ``a_list`` a été modifié et le pointeur vers " +"l'objet modifié est réaffecté à ``a_list``. *In fine*, l'affectation ne " +"change rien, puisque c'est un pointeur vers le même objet que sur lequel " +"pointait ``a_list``, mais l'affectation a tout de même lieu." #: ../Doc/faq/programming.rst:1302 msgid "Thus, in our tuple example what is happening is equivalent to::" msgstr "" +"Donc, dans notre exemple avec un n-uplet, il se passe quelque chose " +"équivalent à ::" #: ../Doc/faq/programming.rst:1310 msgid "" @@ -1651,6 +2038,9 @@ msgid "" "that final assignment still results in an error, because tuples are " "immutable." msgstr "" +"L'appel à ``__iadd__`` réussit et la liste est étendue, mais bien que " +"``result`` pointe sur le même objet que ``a_tuple[0]``, l'affectation finale " +"échoue car les n-uplets ne sont pas muables." #: ../Doc/faq/programming.rst:1316 msgid "Dictionaries" @@ -1673,8 +2063,8 @@ msgid "" "I want to do a complicated sort: can you do a Schwartzian Transform in " "Python?" msgstr "" -"Je souhaite faire un tri compliqué: peut on faire une transformation de " -"Schwartz en Python?" +"Je souhaite faire un classement compliqué : peut on faire une transformation " +"de Schwartz en Python ?" #: ../Doc/faq/programming.rst:1326 msgid "" @@ -1683,23 +2073,26 @@ msgid "" "value\". In Python, use the ``key`` argument for the :meth:`list.sort` " "method::" msgstr "" +"Cette technique, attribuée à Randal Schwartz de la communauté Perl, ordonne " +"les éléments d'une liste à l'aide une transformation qui fait correspondre " +"chaque élément à sa \"valeur de tri\". En Python, ceci est géré par " +"l'argument ``key`` de la méthode :meth:`list.sort` ::" #: ../Doc/faq/programming.rst:1335 msgid "How can I sort one list by values from another list?" -msgstr "" -"Comment puis-je trier une liste en fonction des valeurs d'une autre liste?" +msgstr "Comment ordonner une liste en fonction des valeurs d'une autre liste ?" #: ../Doc/faq/programming.rst:1337 msgid "" "Merge them into an iterator of tuples, sort the resulting list, and then " "pick out the element you want. ::" msgstr "" -"Fusionnez les dans un itérateur de tuples, triez la liste obtenue, puis " -"choisissez l'élément que vous voulez. ::" +"Fusionnez-les dans un itérateur de n-uplets, ordonnez la liste obtenue, puis " +"choisissez l'élément que vous voulez ::" #: ../Doc/faq/programming.rst:1351 msgid "An alternative for the last step is::" -msgstr "Une alternative pour la dernière étape est : ::" +msgstr "Vous pouvez remplacer la dernière étape par ::" #: ../Doc/faq/programming.rst:1356 msgid "" @@ -1711,14 +2104,15 @@ msgid "" "\"result.append\" requires an extra attribute lookup, and third, there's a " "speed reduction from having to make all those function calls." msgstr "" -"Si vous trouvez cela plus lisible, vous préférez peut-être utiliser ceci à " -"la place de la compréhension de la liste finale. Toutefois, ceci est presque " -"deux fois plus lent pour les longues listes. Pourquoi? Tout d'abord, " -"``append ()`` doit réaffecter la mémoire, et si il utilise quelques astuces " -"pour éviter de le faire à chaque fois, il doit encore le faire de temps en " -"temps, ce qui coûte assez cher. Deuxièmement, l'expression \"result.append\" " -"exige une recherche d'attribut supplémentaire, et enfin, tous ces appels de " -"fonction impactent la vitesse d'exécution." +"Si cela vous semble plus lisible, vous pouvez utiliser cette forme plutôt " +"qu'une liste en compréhension. Toutefois, ce code est presque deux fois plus " +"lent pour une liste de grande taille. Pourquoi ? Tout d'abord, parce que " +"``append()`` doit ré-allouer de la mémoire et, même si elle utilise quelques " +"astuces pour éviter d'effectuer la ré-allocation à chaque appel, elle doit " +"tout de même le faire de temps en temps, ce qui coûte assez cher. " +"Deuxièmement, parce que l'expression ``result.append`` fait un accès " +"supplémentaire à un attribut et, enfin, parce que tous ces appels de " +"fonctions réduisent la vitesse d'exécution." #: ../Doc/faq/programming.rst:1366 msgid "Objects" @@ -1726,7 +2120,7 @@ msgstr "Objets" #: ../Doc/faq/programming.rst:1369 msgid "What is a class?" -msgstr "Qu'est-ce qu'une classe?" +msgstr "Qu'est-ce qu'une classe ?" #: ../Doc/faq/programming.rst:1371 msgid "" @@ -1750,16 +2144,17 @@ msgid "" "``OutlookMailbox`` that handle various specific mailbox formats." msgstr "" "Une classe peut être fondée sur une ou plusieurs autres classes, appelée sa " -"ou ses classes de base. Il hérite alors les attributs et les méthodes de ses " -"classes de base. Cela permet à un modèle d'objet d'être successivement " -"raffinés par héritage. Vous pourriez avoir une classe générique ``Mailbox`` " -"qui fournit des méthodes d'accès de base pour une boîte aux lettres, et sous-" -"classes telles que ``MboxMailbox``, ``MaildirMailbox``, ``OutlookMailbox`` " -"qui gèrent les différents formats de boîtes aux lettres spécifiques." +"(ou ses) classe(s) de base. Elle hérite alors des attributs et des méthodes " +"de ses classes de base. Cela permet à un modèle d'objet d'être " +"successivement raffiné par héritage. Vous pourriez avoir une classe " +"générique ``Mailbox``, qui fournit des méthodes d'accès de base pour une " +"boîte aux lettres, et des sous-classes telles que ``MboxMailbox``, " +"``MaildirMailbox``, ``OutlookMailbox`` qui gèrent les plusieurs formats " +"spécifiques de boîtes aux lettres." #: ../Doc/faq/programming.rst:1384 msgid "What is a method?" -msgstr "Qu'est-ce qu'une méthode?" +msgstr "Qu'est-ce qu'une méthode ?" #: ../Doc/faq/programming.rst:1386 msgid "" @@ -1767,13 +2162,13 @@ msgid "" "name(arguments...)``. Methods are defined as functions inside the class " "definition::" msgstr "" -"Une méthode est une fonction sur un objet ``x`` appelez normalement comme " -"``x.name(arguments…)``. Les méthodes sont définies comme des fonctions à " -"l'intérieur de la définition de classe::" +"Une méthode est une fonction sur un objet ``x`` qu'on appelle de manière " +"générale sous la forme ``x.name(arguments…)``. Les méthodes sont définies " +"comme des fonctions à l'intérieur de la définition de classe ::" #: ../Doc/faq/programming.rst:1396 msgid "What is self?" -msgstr "Qu'est-ce que self?" +msgstr "Qu'est-ce que self ?" #: ../Doc/faq/programming.rst:1398 msgid "" @@ -1782,11 +2177,11 @@ msgid "" "c)`` for some instance ``x`` of the class in which the definition occurs; " "the called method will think it is called as ``meth(x, a, b, c)``." msgstr "" -"Self est simplement un nom conventionnel pour le premier argument d'une " -"méthode. Une méthode définie comme ``meth(self, a, b, c)`` doit être appelée " -"en tant que ``x.meth(a, b, c)``, pour une instance ``x`` de la classe dans " -"laquelle elle est définie, la méthode appelée considérera qu'elle est " -"appelée ``meth(x, a, b, c)``." +"Par convention, le premier argument d'une méthode est appelé self. Une " +"méthode ``meth(self, a, b, c)`` doit être appelée sous la forme ``x.meth(a, " +"b, c)`` où ``x`` est une instance de la classe dans laquelle cette méthode " +"est définie ; tout se passe comme si la méthode était appelée comme " +"``meth(x, a, b, c)``." #: ../Doc/faq/programming.rst:1403 msgid "See also :ref:`why-self`." @@ -1797,8 +2192,8 @@ msgid "" "How do I check if an object is an instance of a given class or of a subclass " "of it?" msgstr "" -"Comment puis-je vérifier si un objet est une instance d'une classe donnée ou " -"d'une sous-classe de celui-ci?" +"Comment vérifier si un objet est une instance d'une classe donnée ou d'une " +"sous-classe de celle-ci ?" #: ../Doc/faq/programming.rst:1409 msgid "" @@ -1809,11 +2204,11 @@ msgid "" "``isinstance(obj, str)`` or ``isinstance(obj, (int, float, complex))``." msgstr "" "Utilisez la fonction native ``isinstance(obj, cls)``. Vous pouvez vérifier " -"si un objet est une instance de n'importe lequel d'un certain nombre de " -"classes en fournissant un tuple à la place d'une seule classe, par exemple, " -"``isinstance(obj, (class1, class2, ...))``, et peut également vérifier si un " -"objet est l'un des types natifs de Python, par exemple, ``isinstance(obj, " -"str)`` ou ``isinstance(obj, (int, float, complex))``." +"qu'un objet est une instance de plusieurs classes à la fois en fournissant " +"un n-uplet à la place d'une seule classe, par exemple, ``isinstance(obj, " +"(class1, class2, ...))``. Vous pouvez également vérifier qu'un objet est " +"l'un des types natifs de Python, par exemple ``isinstance(obj, str)`` ou " +"``isinstance(obj, (int, float, complex))``." #: ../Doc/faq/programming.rst:1415 msgid "" @@ -1824,25 +2219,24 @@ msgid "" "and doing a different thing based on what class it is. For example, if you " "have a function that does something::" msgstr "" -"Notez que la plupart des programmes n'utilisent pas :func:`isInstance` sur " -"les classes définies par l'utilisateur, très souvent. Si vous développez " -"vous-même les classes, un style plus appropriée orientée objet est de " -"définir des méthodes sur les classes qui encapsulent un comportement " -"particulier, au lieu de vérifier la classe de l'objet et de faire quelque " -"chose de différent en fonction de sa classe. Par exemple, si vous avez une " -"fonction qui fait quelque chose : ::" +"Notez que la plupart des programmes n'utilisent que rarement :func:" +"`isInstance` sur les classes définies par l'utilisateur. Si vous développez " +"vous-même des classes, une approche plus orientée-objet consiste définir des " +"méthodes sur les classes qui sont porteuses d'un comportement particulier, " +"plutôt que de vérifier la classe de l'objet et de faire un traitement ad-" +"hoc. Par exemple, si vous avez une fonction qui fait quelque chose ::" #: ../Doc/faq/programming.rst:1429 msgid "" "A better approach is to define a ``search()`` method on all the classes and " "just call it::" msgstr "" -"Une meilleure approche est de définir une méthode ``search()`` sur toutes " -"les classes et qu'il suffit d'appeler::" +"Une meilleure approche est de définir une méthode ``search()`` dans toutes " +"les classes et qu'il suffit d'appeler de la manière suivante ::" #: ../Doc/faq/programming.rst:1444 msgid "What is delegation?" -msgstr "Qu'est-ce que la délégation?" +msgstr "Qu'est-ce que la délégation ?" #: ../Doc/faq/programming.rst:1446 msgid "" @@ -1852,12 +2246,12 @@ msgid "" "implementation of the method you're interested in changing and delegates all " "other methods to the corresponding method of ``x``." msgstr "" -"La délégation est une technique orientée objet (aussi appelé un modèle de " -"conception). Disons que vous avez un objet ``x`` et que vous souhaitez " -"modifier le comportement d'une seule de ses méthodes. Vous pouvez créer une " -"nouvelle classe qui fournit une nouvelle implémentation de la méthode qui " -"vous intéresse dans l'évolution et les délégués de toutes les autres " -"méthodes la méthode correspondante de ``x``." +"La délégation est une technique orientée objet (aussi appelée « patron de " +"conception). Prenons un objet ``x`` dont on souhaite modifier le " +"comportement d'une seule de ses méthodes. On peut créer une nouvelle classe " +"qui fournit une nouvelle implémentation de la méthode qui nous intéresse " +"dans l'évolution et qui délègue toute autre méthode à la méthode " +"correspondante de ``x``." #: ../Doc/faq/programming.rst:1452 msgid "" @@ -1867,7 +2261,7 @@ msgid "" msgstr "" "Les programmeurs Python peuvent facilement mettre en œuvre la délégation. " "Par exemple, la classe suivante implémente une classe qui se comporte comme " -"un fichier, mais convertit toutes les données écrites en majuscules:" +"un fichier, mais convertit toutes les données écrites en majuscules ::" #: ../Doc/faq/programming.rst:1467 msgid "" @@ -1897,7 +2291,7 @@ msgstr "" "peuvent se compliquer. Lorsque les attributs doivent être définis aussi bien " "que récupérés, la classe doit définir une méthode :meth:`__setattr__` aussi, " "et il doit le faire avec soin. La mise en œuvre basique de la méthode :meth:" -"`__setattr__` est à peu près équivalent à ce qui suit:" +"`__setattr__` est à peu près équivalent à ce qui suit ::" #: ../Doc/faq/programming.rst:1485 msgid "" @@ -1905,7 +2299,7 @@ msgid "" "store local state for self without causing an infinite recursion." msgstr "" "La plupart des implémentations de :meth:`__setattr__` doivent modifier " -"``self.__dict__`` pour stocker l'état locale de self sans provoquer une " +"``self.__dict__`` pour stocker l'état local de self sans provoquer une " "récursion infinie." #: ../Doc/faq/programming.rst:1490 @@ -1914,11 +2308,11 @@ msgid "" "overrides it?" msgstr "" "Comment appeler une méthode définie dans une classe de base depuis une " -"classe dérivée qui la surcharge?" +"classe dérivée qui la surcharge ?" #: ../Doc/faq/programming.rst:1492 msgid "Use the built-in :func:`super` function::" -msgstr "Utiliser la fonction native :func:`super` : ::" +msgstr "Utilisez la fonction native :func:`super` ::" #: ../Doc/faq/programming.rst:1498 msgid "" @@ -1928,18 +2322,18 @@ msgid "" "meth(self, arguments...)``. Here, ``Base.meth`` is an unbound method, so " "you need to provide the ``self`` argument." msgstr "" -"Pour version antérieure à 3.0, vous pouvez utiliser des classes classiques : " -"Pour une définition de classe telle que ``class Derived(Base): ...`` vous " -"pouvez appeler la méthode ``meth()`` défini dans ``Base`` (ou l'une des " -"classes de base de ``Base``) en faisant ``Base.meth(self, arguments...)``. " -"Ici, ``Base.meth`` est une méthode non liée, vous devez donc fournir " -"l'argument ``self``." +"Pour les versions antérieures à 3.0, vous pouvez utiliser des classes " +"classiques : pour une définition de classe comme ``class Derived(Base): ..." +"`` vous pouvez appeler la méthode ``meth()`` définie dans ``Base`` (ou l'une " +"des classes de base de ``Base``) en faisant ``Base.meth(self, " +"arguments...)``. Ici, ``Base.meth`` est une méthode non liée, il faut donc " +"fournir l'argument ``self``." #: ../Doc/faq/programming.rst:1506 msgid "How can I organize my code to make it easier to change the base class?" msgstr "" -"Comment puis-je organiser mon code pour permettre de changer la classe de " -"base plus facilement?" +"Comment organiser un code pour permettre de changer la classe de base plus " +"facilement ?" #: ../Doc/faq/programming.rst:1508 msgid "" @@ -1953,23 +2347,23 @@ msgstr "" "Vous pouvez définir un alias pour la classe de base, lui attribuer la classe " "de base réelle avant la définition de classe, et utiliser l'alias au long de " "votre classe. Ensuite, tout ce que vous devez changer est la valeur " -"attribuée à l'alias. Incidemment, cette astuce est également utile si vous " -"voulez décider dynamiquement (par exemple en fonction de la disponibilité " -"des ressources) la classe de base à utiliser. Exemple::" +"attribuée à l'alias. Accessoirement, cette astuce est également utile si " +"vous voulez déterminer dynamiquement (par exemple en fonction de la " +"disponibilité des ressources) la classe de base à utiliser. Exemple ::" #: ../Doc/faq/programming.rst:1523 msgid "How do I create static class data and static class methods?" msgstr "" -"Comment puis-je créer des données statiques de classe et des méthodes " -"statiques de classe?" +"Comment créer des données statiques de classe et des méthodes statiques de " +"classe ?" #: ../Doc/faq/programming.rst:1525 msgid "" "Both static data and static methods (in the sense of C++ or Java) are " "supported in Python." msgstr "" -"Tant les données statiques que les méthodes statiques (dans le sens de C + + " -"ou Java) sont pris en charge en Python." +"Les données statiques et les méthodes statiques (au sens C++ ou Java) sont " +"prises en charge en Python." #: ../Doc/faq/programming.rst:1528 msgid "" @@ -1978,7 +2372,7 @@ msgid "" msgstr "" "Pour les données statiques, il suffit de définir un attribut de classe. Pour " "attribuer une nouvelle valeur à l'attribut, vous devez explicitement " -"utiliser le nom de classe dans l'affectation:" +"utiliser le nom de classe dans l'affectation ::" #: ../Doc/faq/programming.rst:1540 msgid "" @@ -1986,7 +2380,7 @@ msgid "" "``isinstance(c, C)`` holds, unless overridden by ``c`` itself or by some " "class on the base-class search path from ``c.__class__`` back to ``C``." msgstr "" -"``c.count`` se réfère également à ``C.count`` pour tout ``c`` telle que " +"``c.count`` se réfère également à ``C.count`` pour tout ``c`` tel que " "``isInstance (c, C)`` est vrai, sauf remplacement par ``c`` lui-même ou par " "une classe sur le chemin de recherche de classe de base de ``c.__class__`` " "jusqu'à ``C``." @@ -1998,15 +2392,15 @@ msgid "" "dict. Rebinding of a class-static data name must always specify the class " "whether inside a method or not::" msgstr "" -"Attention: dans une méthode de C, une affectation comme ``self.count=42`` " -"crée une nouvelle instance et sans rapport avec le nom \"count\" dans dans " -"le dictionnaire de données de ``self``. La redéfinition d'une donnée " -"statique de classe doit toujours spécifier la classe que l'on soit à " -"l'intérieur d'une méthode ou non:" +"Attention : dans une méthode de C, une affectation comme ``self.count = 42`` " +"crée une nouvelle instance sans rapport avec le nom ``count`` dans le " +"dictionnaire de données de ``self``. La redéfinition d'une donnée statique " +"de classe doit toujours spécifier la classe, que l'on soit à l'intérieur " +"d'une méthode ou non ::" #: ../Doc/faq/programming.rst:1551 msgid "Static methods are possible::" -msgstr "Les méthodes statiques sont possibles : ::" +msgstr "Il est possible d'utiliser des méthodes statiques ::" #: ../Doc/faq/programming.rst:1559 msgid "" @@ -2014,7 +2408,7 @@ msgid "" "is via a simple module-level function::" msgstr "" "Cependant, d'une manière beaucoup plus simple pour obtenir l'effet d'une " -"méthode statique se fait par une simple fonction au niveau du module::" +"méthode statique se fait par une simple fonction au niveau du module ::" #: ../Doc/faq/programming.rst:1565 msgid "" @@ -2027,19 +2421,19 @@ msgstr "" #: ../Doc/faq/programming.rst:1570 msgid "How can I overload constructors (or methods) in Python?" -msgstr "Comment puis-je surcharger les constructeurs (ou méthodes) en Python?" +msgstr "Comment surcharger les constructeurs (ou méthodes) en Python ?" #: ../Doc/faq/programming.rst:1572 msgid "" "This answer actually applies to all methods, but the question usually comes " "up first in the context of constructors." msgstr "" -"Cette réponse s'applique en fait à toutes les méthodes, mais la question " -"vient généralement en premier dans le contexte des constructeurs." +"Cette réponse s'applique en fait à toutes les méthodes, mais la question se " +"pose généralement dans le contexte des constructeurs." #: ../Doc/faq/programming.rst:1575 msgid "In C++ you'd write" -msgstr "In C++ you'd write" +msgstr "En C++, on écrirait" #: ../Doc/faq/programming.rst:1584 msgid "" @@ -2047,7 +2441,7 @@ msgid "" "using default arguments. For example::" msgstr "" "En Python, vous devez écrire un constructeur unique qui considère tous les " -"cas en utilisant des arguments par défaut. Par exemple::" +"cas en utilisant des arguments par défaut. Par exemple ::" #: ../Doc/faq/programming.rst:1594 msgid "This is not entirely equivalent, but close enough in practice." @@ -2059,7 +2453,7 @@ msgstr "" msgid "You could also try a variable-length argument list, e.g. ::" msgstr "" "Vous pouvez aussi utiliser une liste d'arguments de longueur variable, par " -"exemple : ::" +"exemple ::" #: ../Doc/faq/programming.rst:1601 msgid "The same approach works for all method definitions." @@ -2068,8 +2462,8 @@ msgstr "La même approche fonctionne pour toutes les définitions de méthode." #: ../Doc/faq/programming.rst:1605 msgid "I try to use __spam and I get an error about _SomeClassName__spam." msgstr "" -"J'essaie d'utiliser __spam et j'obtiens une erreur à propos de " -"_SomeClassName__spam." +"J'essaie d'utiliser ``__spam`` et j'obtiens une erreur à propos de " +"``_SomeClassName__spam``." #: ../Doc/faq/programming.rst:1607 msgid "" @@ -2080,12 +2474,12 @@ msgid "" "``classname`` is the current class name with any leading underscores " "stripped." msgstr "" -"Les noms de variables avec le double de soulignement sont «déformés» pour " -"fournir un moyen simple mais efficace de définir variables privées à la " -"classe. Tout identificateur de la forme ``__spam`` (au moins deux traits de " -"soulignement préfixe, au plus un soulignement suffix) est textuellement " +"Les noms de variables commençant avec deux tirets bas sont « déformés », " +"c'est un moyen simple mais efficace de définir des variables privées à une " +"classe. Tout identifiant de la forme ``__spam`` (commençant par au moins " +"deux tirets bas et se terminant par au plus un tiret bas) est textuellement " "remplacé par ``_classname__spam``, où ``classname`` est le nom de la classe " -"en cours avec les traits de soulignement dépouillés." +"en cours sans les éventuels tirets bas du début." #: ../Doc/faq/programming.rst:1613 msgid "" @@ -2094,21 +2488,20 @@ msgid "" "the object's ``__dict__``. Many Python programmers never bother to use " "private variable names at all." msgstr "" -"Cela ne garantit pas la privauté de l'accès : un utilisateur extérieur peut " -"encore délibérément acceder à l'attribut \"_classname__spam\", et les " -"valeurs privées sont visibles dans l'objet ``__dict__``. De nombreux " -"programmeurs Python ne prennent jamais la peine d'utiliser des noms de " -"variable privée." +"Cela ne garantit aucune protection : un utilisateur extérieur peut encore " +"délibérément accéder à l'attribut ``_classname__spam`` et les valeurs " +"privées sont visibles dans l'objet ``__dict__``. De nombreux programmeurs " +"Python ne prennent jamais la peine d'utiliser des noms de variable privés." #: ../Doc/faq/programming.rst:1620 msgid "My class defines __del__ but it is not called when I delete the object." msgstr "" -"Ma classe définit __del__ mais il n'est pas appelé lorsque je supprime " -"l'objet." +"Ma classe définit ``__del__`` mais elle n'est pas appelée lorsque je " +"supprime l'objet." #: ../Doc/faq/programming.rst:1622 msgid "There are several possible reasons for this." -msgstr "Il y a plusieurs raisons possibles pour cela." +msgstr "Il y a plusieurs explications possibles." #: ../Doc/faq/programming.rst:1624 msgid "" @@ -2116,9 +2509,9 @@ msgid "" "decrements the object's reference count, and if this reaches zero :meth:" "`__del__` is called." msgstr "" -"La commande del n'appelle pas forcément :meth:`__del__` - il décrémente " -"simplement le compteur de références de l'objet, et si celui ci arrive à " -"zéro :meth:`__del__` est appelée." +"La commande *del* n'appelle pas forcément :meth:`__del__` — elle décrémente " +"simplement le compteur de références de l'objet et, si celui-ci arrive à " +"zéro, :meth:`__del__` est appelée." #: ../Doc/faq/programming.rst:1628 msgid "" @@ -2133,16 +2526,35 @@ msgid "" "run :func:`gc.collect` to force a collection, but there *are* pathological " "cases where objects will never be collected." msgstr "" +"Si la structure de données contient des références circulaires (e.g. un " +"arbre dans lequel chaque fils référence son père, et chaque père garde une " +"liste de ses fils), le compteur de références n'arrivera jamais à zéro. " +"Python exécute périodiquement un algorithme pour détecter ce genre de " +"cycles, mais il peut se passer un certain temps entre le moment où la " +"structure est référencée pour la dernière fois et l'appel du ramasse-" +"miettes, donc la méthode :meth:`__del__` peut être appelée à un moment " +"aléatoire et pas opportun. C'est gênant pour essayer reproduire un problème. " +"Pire, l'ordre dans lequel les méthodes :meth:`__del__` des objets sont " +"appelées est arbitraire. Il est possible de forcer l'appel du ramasse-" +"miettes avec la fonction :func:`gc.collect`, mais il existe certains cas où " +"les objets ne seront jamais nettoyés." #: ../Doc/faq/programming.rst:1639 msgid "" "Despite the cycle collector, it's still a good idea to define an explicit " "``close()`` method on objects to be called whenever you're done with them. " -"The ``close()`` method can then remove attributes that refer to subobjecs. " +"The ``close()`` method can then remove attributes that refer to subobjects. " "Don't call :meth:`__del__` directly -- :meth:`__del__` should call " "``close()`` and ``close()`` should make sure that it can be called more than " "once for the same object." msgstr "" +"Bien que le ramasse-miette de cycles existe, il est tout de même recommandé " +"de définir une méthode ``close()`` explicite sur des objets, et de l'appeler " +"quand leur cycle de vie s'achève. Cette méthode ``close()`` peut alors " +"supprimer les attributs qui référencent des sous-objets. Il vaut mieux ne " +"pas appeler la méthode :meth:`__del__` directement, mais la méthode :meth:" +"`__del__` devrait appeler la méthode ``close()`` et ``close()`` doit pouvoir " +"être appelée plusieurs fois sur le même objet." #: ../Doc/faq/programming.rst:1646 msgid "" @@ -2151,16 +2563,23 @@ msgid "" "reference count. Tree data structures, for instance, should use weak " "references for their parent and sibling references (if they need them!)." msgstr "" +"Une alternative pour éviter les références cycliques consiste à utiliser le " +"module :mod:`weakref`, qui permet de faire référence à des objets sans " +"incrémenter leur compteur de références. Par exemple, les structures " +"d'arbres devraient utiliser des références faibles entre pères et fils (si " +"nécessaire !)." #: ../Doc/faq/programming.rst:1659 msgid "" "Finally, if your :meth:`__del__` method raises an exception, a warning " "message is printed to :data:`sys.stderr`." msgstr "" +"Enfin, si la méthode :meth:`__del__` lève une exception, un message " +"d'avertissement s'affiche dans :data:`sys.stderr`." #: ../Doc/faq/programming.rst:1664 msgid "How do I get a list of all instances of a given class?" -msgstr "" +msgstr "Comment obtenir toutes les instances d'une classe ?" #: ../Doc/faq/programming.rst:1666 msgid "" @@ -2168,10 +2587,16 @@ msgid "" "type). You can program the class's constructor to keep track of all " "instances by keeping a list of weak references to each instance." msgstr "" +"Python ne tient pas de registre de toutes les instances d'une classe (ni de " +"n'importe quel type natif). Il est cependant possible de programmer le " +"constructeur de la classe de façon à tenir un tel registre, en maintenant " +"une liste de références faibles vers chaque instance." #: ../Doc/faq/programming.rst:1672 msgid "Why does the result of ``id()`` appear to be not unique?" msgstr "" +"Pourquoi le résultat de ``id()`` peut-il être le même pour deux objets " +"différents ?" #: ../Doc/faq/programming.rst:1674 msgid "" @@ -2181,6 +2606,11 @@ msgid "" "memory, the next freshly created object is allocated at the same position in " "memory. This is illustrated by this example:" msgstr "" +"La fonction native :func:`id` renvoie un entier dont l'unicité est garantie " +"durant toute la vie de l'objet. Vu qu'en CPython cet entier est en réalité " +"l'adresse mémoire de l'objet, il est fréquent qu'un nouvel objet soit alloué " +"à une adresse mémoire identique à celle d'un objet venant d'être supprimé. " +"Comme l'illustre le code suivant :" #: ../Doc/faq/programming.rst:1685 msgid "" @@ -2189,6 +2619,10 @@ msgid "" "objects whose id you want to examine are still alive, create another " "reference to the object:" msgstr "" +"Les deux identifiants appartiennent à des objets entiers créés juste avant " +"l'appel à ``id()`` et détruits immédiatement après. Pour s'assurer que les " +"objets dont on veut examiner les identifiants sont toujours en vie, créons " +"une nouvelle référence à l'objet :" #: ../Doc/faq/programming.rst:1698 msgid "Modules" @@ -2196,7 +2630,7 @@ msgstr "Modules" #: ../Doc/faq/programming.rst:1701 msgid "How do I create a .pyc file?" -msgstr "" +msgstr "Comment créer des fichiers ``.pyc`` ?" #: ../Doc/faq/programming.rst:1703 msgid "" @@ -2208,6 +2642,13 @@ msgid "" "file, and ends with ``.pyc``, with a middle component that depends on the " "particular ``python`` binary that created it. (See :pep:`3147` for details.)" msgstr "" +"Quand un module est importé pour la première fois (ou si le fichier source a " +"été modifié depuis la création du fichier compilé), un fichier ``.pyc`` " +"contenant le code précompilé est créé dans un sous-dossier ``__pycache__`` " +"du dossier contentant le fichier ``.py``. Le nom du fichier ``.pyc`` est " +"identique au fichier ``.py`` et se termine par ``.pyc``, avec une partie " +"centrale qui dépend du binaire ``python`` qui l'a créé (voir la :pep:`3147` " +"pour de plus amples précisions)." #: ../Doc/faq/programming.rst:1711 msgid "" @@ -2217,6 +2658,12 @@ msgid "" "example, if you develop as one user but run as another, such as if you are " "testing with a web server." msgstr "" +"Une des raisons pour lesquelles un fichier ``.pyc`` peut ne pas être créé " +"est un problème de droits sur le dossier qui contient le fichier source, ce " +"qui veut dire qu'il est impossible de créer le sous-dossier ``__pycache__``. " +"Ceci peut arriver, par exemple, si vous développez en tant qu'un certain " +"utilisateur, mais que le code est exécuté en tant qu'un autre utilisateur, " +"par exemple pour tester un serveur Web." #: ../Doc/faq/programming.rst:1716 msgid "" @@ -2226,6 +2673,11 @@ msgid "" "``__pycache__`` subdirectory and write the compiled module to that " "subdirectory." msgstr "" +"La création du fichier ``.pyc`` est automatique durant l'import d'un module " +"si Python est capable (en termes de droits, d'espace disque, etc) de créer " +"un sous-dossier ``__pycache__`` et d'écrire le module ainsi compilé dans ce " +"sous-répertoire, à moins que la variable d'environnement :envvar:" +"`PYTHONDONTWRITEBYTECODE` soit définie." #: ../Doc/faq/programming.rst:1721 msgid "" @@ -2236,6 +2688,12 @@ msgid "" "``xyz`` because ``xyz`` is imported, but no ``.pyc`` file will be created " "for ``foo`` since ``foo.py`` isn't being imported." msgstr "" +"Exécuter du Python dans un script de plus haut niveau n'est pas considéré " +"comme un import et le fichier ``.pyc`` n'est pas créé. Par exemple, si un " +"module de plus haut niveau ``foo.py`` importe un autre module ``xyz.py``, " +"alors à l'exécution de ``foo`` (en tapant ``python foo.py`` dans la " +"console), un fichier ``.pyc`` est créé pour ``xyz`` mais pas pour ``foo`` " +"car ``foo.py`` n'est pas importé." #: ../Doc/faq/programming.rst:1728 msgid "" @@ -2243,12 +2701,18 @@ msgid "" "pyc`` file for a module that is not imported -- you can, using the :mod:" "`py_compile` and :mod:`compileall` modules." msgstr "" +"Pour créer un fichier ``.pyc`` pour ``foo`` — c'est-à-dire créer un fichier " +"``.pyc`` pour un module qui n'est pas importé — il existe les modules :mod:" +"`py_compile` et :mod:`compileall`." #: ../Doc/faq/programming.rst:1732 msgid "" "The :mod:`py_compile` module can manually compile any module. One way is to " "use the ``compile()`` function in that module interactively::" msgstr "" +"Le module :mod:`py_compile` peut compiler n'importe quel module " +"manuellement. Il est ainsi possible d'appeler la fonction ``compile()`` de " +"manière interactive ::" #: ../Doc/faq/programming.rst:1738 msgid "" @@ -2256,6 +2720,9 @@ msgid "" "location as ``foo.py`` (or you can override that with the optional parameter " "``cfile``)." msgstr "" +"Ces lignes écrivent le ``.pyc`` dans un sous-dossier ``__pycache__`` à côté " +"de ``foo.py`` (le paramètre optionnel ``cfile`` permet de changer ce " +"comportement)." #: ../Doc/faq/programming.rst:1742 msgid "" @@ -2264,10 +2731,14 @@ msgid "" "running ``compileall.py`` and providing the path of a directory containing " "Python files to compile::" msgstr "" +"Tous les fichiers d'un ou plusieurs dossiers peuvent aussi être compilés " +"avec le module :mod:`compileall`. C'est possible depuis l'invite de commande " +"en exécutant ``compileall.py`` avec le chemin du dossier contenant les " +"fichiers Python à compiler ::" #: ../Doc/faq/programming.rst:1751 msgid "How do I find the current module name?" -msgstr "" +msgstr "Comment obtenir le nom du module actuel ?" #: ../Doc/faq/programming.rst:1753 msgid "" @@ -2277,75 +2748,87 @@ msgid "" "importing them also provide a command-line interface or a self-test, and " "only execute this code after checking ``__name__``::" msgstr "" +"Un module peut déterminer son propre nom en examinant la variable globale " +"prédéfinie ``__name__``. Si celle-ci vaut ``'__main__'``, c'est que le " +"programme est exécuté comme un script. Beaucoup de modules qui doivent " +"normalement être importés pour pouvoir être utilisés fournissent aussi une " +"interface en ligne de commande ou un test automatique. Ils n'exécutent cette " +"portion du code qu'après avoir vérifié la valeur de ``__name__`` ::" #: ../Doc/faq/programming.rst:1768 msgid "How can I have modules that mutually import each other?" -msgstr "" +msgstr "Comment avoir des modules qui s'importent mutuellement ?" #: ../Doc/faq/programming.rst:1770 msgid "Suppose you have the following modules:" -msgstr "" +msgstr "Considérons les modules suivants :" #: ../Doc/faq/programming.rst:1772 msgid "foo.py::" -msgstr "" +msgstr "*foo.py* ::" #: ../Doc/faq/programming.rst:1777 msgid "bar.py::" -msgstr "" +msgstr "*bar.py* ::" #: ../Doc/faq/programming.rst:1782 msgid "The problem is that the interpreter will perform the following steps:" -msgstr "" +msgstr "Le problème réside dans les étapes que l'interpréteur va réaliser :" #: ../Doc/faq/programming.rst:1784 msgid "main imports foo" -msgstr "" +msgstr "*main* importe *foo*" #: ../Doc/faq/programming.rst:1785 msgid "Empty globals for foo are created" -msgstr "" +msgstr "Les variables globales (vides) de *foo* sont créées" #: ../Doc/faq/programming.rst:1786 msgid "foo is compiled and starts executing" -msgstr "" +msgstr "*foo* est compilé et commence à s'exécuter" #: ../Doc/faq/programming.rst:1787 msgid "foo imports bar" -msgstr "" +msgstr "*foo* importe *bar*" #: ../Doc/faq/programming.rst:1788 msgid "Empty globals for bar are created" -msgstr "" +msgstr "Les variables globales (vides) de *bar* sont créées" #: ../Doc/faq/programming.rst:1789 msgid "bar is compiled and starts executing" -msgstr "" +msgstr "*bar* est compilé et commence à s'exécuter" #: ../Doc/faq/programming.rst:1790 msgid "" "bar imports foo (which is a no-op since there already is a module named foo)" msgstr "" +"*bar* importe *foo* (en réalité, rien ne passe car il y a déjà un module " +"appelé *foo*)" #: ../Doc/faq/programming.rst:1791 msgid "bar.foo_var = foo.foo_var" -msgstr "" +msgstr "bar.foo_var = foo.foo_var" #: ../Doc/faq/programming.rst:1793 msgid "" "The last step fails, because Python isn't done with interpreting ``foo`` yet " "and the global symbol dictionary for ``foo`` is still empty." msgstr "" +"La dernière étape échoue car Python n'a pas fini d'interpréter ``foo`` et le " +"dictionnaire global des symboles de ``foo`` est encore vide." #: ../Doc/faq/programming.rst:1796 msgid "" "The same thing happens when you use ``import foo``, and then try to access " "``foo.foo_var`` in global code." msgstr "" +"Le même phénomène arrive quand on utilise ``import foo``, et qu'on essaye " +"ensuite d'accéder à ``foo.foo_var`` dans le code global." #: ../Doc/faq/programming.rst:1799 msgid "There are (at least) three possible workarounds for this problem." -msgstr "" +msgstr "Il y a (au moins) trois façons de contourner ce problème." #: ../Doc/faq/programming.rst:1801 msgid "" @@ -2355,58 +2838,78 @@ msgid "" "only. This means everything from an imported module is referenced as " "``.``." msgstr "" +"Guido van Rossum déconseille d'utiliser ``from import ...`` et de " +"mettre tout le code dans des fonctions. L'initialisation des variables " +"globales et des variables de classe ne doit utiliser que des constantes ou " +"des fonctions natives. Ceci implique que tout ce qui est fourni par un " +"module soit référencé par ``.``." #: ../Doc/faq/programming.rst:1806 msgid "" "Jim Roskind suggests performing steps in the following order in each module:" msgstr "" +"Jim Roskind recommande d'effectuer les étapes suivantes dans cet ordre dans " +"chaque module :" #: ../Doc/faq/programming.rst:1808 msgid "" "exports (globals, functions, and classes that don't need imported base " "classes)" msgstr "" +"les exportations (variables globales, fonctions et les classes qui ne " +"nécessitent d'importer des classes de base)" #: ../Doc/faq/programming.rst:1810 msgid "``import`` statements" -msgstr "" +msgstr "les instructions ``import``" #: ../Doc/faq/programming.rst:1811 msgid "" "active code (including globals that are initialized from imported values)." msgstr "" +"le code (avec les variables globales qui sont initialisées à partir de " +"valeurs importées)." #: ../Doc/faq/programming.rst:1813 msgid "" "van Rossum doesn't like this approach much because the imports appear in a " "strange place, but it does work." msgstr "" +"van Rossum désapprouve cette approche car les importations se trouvent à un " +"endroit bizarre, mais cela fonctionne." #: ../Doc/faq/programming.rst:1816 msgid "" "Matthias Urlichs recommends restructuring your code so that the recursive " "import is not necessary in the first place." msgstr "" +"Matthias Urlichs conseille de restructurer le code pour éviter les " +"importations récursives." #: ../Doc/faq/programming.rst:1819 msgid "These solutions are not mutually exclusive." -msgstr "" +msgstr "Ces solutions peuvent être combinées." #: ../Doc/faq/programming.rst:1823 msgid "__import__('x.y.z') returns ; how do I get z?" msgstr "" +"``__import__('x.y.z')`` renvoie ```` ; comment accéder à ``z`` ?" #: ../Doc/faq/programming.rst:1825 msgid "" "Consider using the convenience function :func:`~importlib.import_module` " "from :mod:`importlib` instead::" msgstr "" +"Utilisez plutôt la fonction :func:`~importlib.import_module` de :mod:" +"`importlib` ::" #: ../Doc/faq/programming.rst:1832 msgid "" "When I edit an imported module and reimport it, the changes don't show up. " "Why does this happen?" msgstr "" +"Quand j'édite un module et que je le réimporte, je ne vois pas les " +"changements. Pourquoi ?" #: ../Doc/faq/programming.rst:1834 msgid "" @@ -2416,12 +2919,20 @@ msgid "" "module, the basic module would be parsed and re-parsed many times. To force " "re-reading of a changed module, do this::" msgstr "" +"Pour des raisons de performance et de cohérence, Python ne lit le fichier " +"d'un module que la première fois où celui-ci est importé. Si ce n'était pas " +"le cas, dans un programme composé d'un très grand nombre de modules qui " +"importent tous le même module de base, ce module de base serait analysé et " +"ré-analysé un très grand nombre de fois. Pour forcer la relecture d'un " +"module, il faut faire ::" #: ../Doc/faq/programming.rst:1844 msgid "" "Warning: this technique is not 100% fool-proof. In particular, modules " "containing statements like ::" msgstr "" +"Attention, cette technique ne marche pas systématiquement. En particulier, " +"les modules qui contiennent des instructions comme ::" #: ../Doc/faq/programming.rst:1849 msgid "" diff --git a/faq/windows.po b/faq/windows.po index b26ddeac1..a04b25960 100644 --- a/faq/windows.po +++ b/faq/windows.po @@ -8,27 +8,28 @@ 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: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"POT-Creation-Date: 2018-06-10 11:27+0200\n" +"PO-Revision-Date: 2018-05-08 20:24+0200\n" +"Last-Translator: Julien Palard \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/faq/windows.rst:7 +#: ../Doc/faq/windows.rst:9 msgid "Python on Windows FAQ" -msgstr "" -"Ce n'est pas forcément une question simple. Si vous êtes déjà familier avec " -"le lancement de programmes depuis la ligne de commande de Windows alors tout " -"semblera évident; Sinon, vous auriez besoin d'être un peu guidé." +msgstr "FAQ : Python et Windows" -#: ../Doc/faq/windows.rst:18 +#: ../Doc/faq/windows.rst:12 +msgid "Contents" +msgstr "Sommaire" + +#: ../Doc/faq/windows.rst:20 msgid "How do I run a Python program under Windows?" msgstr "Comment exécuter un programme Python sous Windows ?" -#: ../Doc/faq/windows.rst:20 +#: ../Doc/faq/windows.rst:22 msgid "" "This is not necessarily a straightforward question. If you are already " "familiar with running programs from the Windows command line then everything " @@ -36,17 +37,26 @@ msgid "" msgstr "" "Ce n'est pas forcément une question simple. Si vous êtes déjà familier avec " "le lancement de programmes depuis la ligne de commande de Windows alors tout " -"semblera évident; Sinon, vous auriez besoin d'être un peu guidé." +"semblera évident ; sinon, vous pourriez avoir besoin d'être un peu guidé." + +#: ../Doc/faq/windows.rst:None +msgid "|Python Development on XP|_" +msgstr "|Python Development on XP|_" -#: ../Doc/faq/windows.rst:27 +#: ../Doc/faq/windows.rst:29 msgid "" "This series of screencasts aims to get you up and running with Python on " "Windows XP. The knowledge is distilled into 1.5 hours and will get you up " "and running with the right Python distribution, coding in your choice of " "IDE, and debugging and writing solid code with unit-tests." msgstr "" +"Cette série de vidéos a pour but de vous montrer comment utiliser Python sur " +"Windows XP. Les explications durent 1 heure et demi et vous permettront " +"d'utiliser la distribution Python adéquate, de développer dans l'IDE de " +"votre choix, et de déboguer et écrire du code solide accompagné des tests " +"unitaires." -#: ../Doc/faq/windows.rst:36 +#: ../Doc/faq/windows.rst:38 msgid "" "Unless you use some sort of integrated development environment, you will end " "up *typing* Windows commands into what is variously referred to as a \"DOS " @@ -54,62 +64,89 @@ msgid "" "from your Start menu; under Windows 7 the menu selection is :menuselection:" "`Start --> Programs --> Accessories --> Command Prompt`. You should be able " "to recognize when you have started such a window because you will see a " -"Windows \"command prompt\", which usually looks like this::" +"Windows \"command prompt\", which usually looks like this:" msgstr "" +"A moins que vous n'utilisiez quelque environnement de développement, vous " +"devrez entrer des commandes Windows dans ce qui est diversement référé comme " +"\"DOS Windows\" ou \"invite de commande Windows\". En général vous pouvez " +"ouvrir cette fenêtre depuis le menu Démarrer; sous Windows 7, allez dans :" +"Démarrer --> Programmes --> Accessoires --> Invite de commande. Vous serez " +"dans la bonne fenêtre quand vous verrez une fenêtre invite de commande qui " +"ressemble normalement à ça :" -#: ../Doc/faq/windows.rst:46 +#: ../Doc/faq/windows.rst:50 msgid "" "The letter may be different, and there might be other things after it, so " -"you might just as easily see something like::" +"you might just as easily see something like:" msgstr "" -"la lettre peut être différente, et il peut y avoir d'autres choses à la " -"suite, alors il se peut aussi bien que vous voyez quelque chose tel que::" +"La lettre peut être différente, et il peut y avoir d'autres choses à la " +"suite, alors il se peut que ça ressemble également à ça :" -#: ../Doc/faq/windows.rst:51 +#: ../Doc/faq/windows.rst:57 msgid "" "depending on how your computer has been set up and what else you have " "recently done with it. Once you have started such a window, you are well on " "the way to running Python programs." msgstr "" +"selon la configuration de votre ordinateur et ce que vous avez récemment " +"fait avec. Une fois que vous avez ouvert cette fenêtre, vous êtes bien " +"partis pour pouvoir lancer des programmes Python." -#: ../Doc/faq/windows.rst:55 +#: ../Doc/faq/windows.rst:61 msgid "" "You need to realize that your Python scripts have to be processed by another " "program called the Python *interpreter*. The interpreter reads your script, " "compiles it into bytecodes, and then executes the bytecodes to run your " "program. So, how do you arrange for the interpreter to handle your Python?" msgstr "" +"Retenez que vos scripts Python doivent être traités par un autre programme " +"appelé \"l’interpréteur\" Python. L’interpréteur lit votre script, le " +"compile en *bytecode*, et exécute le *bytecode* pour faire tourner votre " +"programme. Alors, comment faire pour donner votre code Python à " +"l'interpréteur ?" -#: ../Doc/faq/windows.rst:60 +#: ../Doc/faq/windows.rst:66 msgid "" "First, you need to make sure that your command window recognises the word " "\"python\" as an instruction to start the interpreter. If you have opened a " "command window, you should try entering the command ``python`` and hitting " -"return.::" +"return:" msgstr "" +"Tout d'abord, vous devez vous assurer que votre fenêtre d'invite de commande " +"reconnaît le mot \"python\" comme une instruction pour démarrer " +"l'interpréteur. Si vous avez ouvert une fenêtre de commande, entrez la " +"commande ``python``, puis appuyez sur la touche entrée :" -#: ../Doc/faq/windows.rst:67 -msgid "You should then see something like::" -msgstr "" +#: ../Doc/faq/windows.rst:75 +msgid "You should then see something like:" +msgstr "Vous devez voir quelque chose comme ça :" -#: ../Doc/faq/windows.rst:73 +#: ../Doc/faq/windows.rst:83 msgid "" "You have started the interpreter in \"interactive mode\". That means you can " "enter Python statements or expressions interactively and have them executed " "or evaluated while you wait. This is one of Python's strongest features. " -"Check it by entering a few expressions of your choice and seeing the " -"results::" +"Check it by entering a few expressions of your choice and seeing the results:" msgstr "" +"Vous avez lancé l'interpréteur dans son \"mode interactif\". Cela signifie " +"que vous pouvez entrer des instructions ou des expressions Python de manière " +"interactive pour qu'elles soient exécutées. Il s'agit là d'une des plus " +"puissantes fonctionnalités de Python. Vous pouvez le vérifier en entrant " +"quelques commandes de votre choix et en regardant le résultat :" -#: ../Doc/faq/windows.rst:83 +#: ../Doc/faq/windows.rst:95 msgid "" "Many people use the interactive mode as a convenient yet highly programmable " "calculator. When you want to end your interactive Python session, hold the :" "kbd:`Ctrl` key down while you enter a :kbd:`Z`, then hit the \":kbd:`Enter`" "\" key to get back to your Windows command prompt." msgstr "" +"Beaucoup de personnes utilisent le mode interactif comme une calculatrice " +"programmable. Lorsque vous souhaitez sortir du mode interactif de Python, " +"maintenez la touche :kbd:`Ctrl` appuyée, puis appuyez sur :kbd:`Z`. Validez " +"avec \":kbd:`Entrée`\" pour retrouver votre ligne de commande Windows." -#: ../Doc/faq/windows.rst:88 +#: ../Doc/faq/windows.rst:100 msgid "" "You may also find that you have a Start-menu entry such as :menuselection:" "`Start --> Programs --> Python 3.3 --> Python (command line)` that results " @@ -118,39 +155,58 @@ msgid "" "single \"python\" command in the window, and closes it when you terminate " "the interpreter." msgstr "" +"Peut-être avez-vous remarqué une nouvelle entrée dans votre menu Démarrer, " +"comme : :menuselection:`Démarrer --> Programmes --> Python 3.3 --> Python " +"(ligne de commande)`, qui lance l’interpréteur dans une nouvelle fenêtre. " +"Dans ce cas, la fenêtre disparaîtra lorsque vous entrerez :kbd:`Ctrl-Z` ; la " +"fenêtre Python ouverte par Windows est fermée lorsque vous quittez " +"l'interpréteur." -#: ../Doc/faq/windows.rst:94 +#: ../Doc/faq/windows.rst:106 msgid "" "If the ``python`` command, instead of displaying the interpreter prompt " "``>>>``, gives you a message like::" msgstr "" +"Si, au lieu de vous afficher ``>>>`` la commande ``python`` vous affiche un " +"message semblable à celui-ci ::" -#: ../Doc/faq/windows.rst:102 +#: ../Doc/faq/windows.rst:None +msgid "|Adding Python to DOS Path|_" +msgstr "" + +#: ../Doc/faq/windows.rst:114 msgid "" "Python is not added to the DOS path by default. This screencast will walk " "you through the steps to add the correct entry to the `System Path`, " "allowing Python to be executed from the command-line by all users." msgstr "" +"Par défaut, Python n'est pas ajouté au PATH. Cette vidéo vous montrera les " +"étapes à suivre pour ajouter la bonne entrée au PATH, permettant ainsi à " +"tous les utilisateurs d'utiliser Python en ligne de commande." -#: ../Doc/faq/windows.rst:111 +#: ../Doc/faq/windows.rst:123 msgid "or::" msgstr "ou : ::" -#: ../Doc/faq/windows.rst:115 +#: ../Doc/faq/windows.rst:127 msgid "" "then you need to make sure that your computer knows where to find the Python " "interpreter. To do this you will have to modify a setting called PATH, " "which is a list of directories where Windows will look for programs." msgstr "" +"alors, vous devez vous assurer que votre ordinateur sait où trouver " +"l’interpréteur Python. Pour cela, vous devez modifier un paramètre, appelé " +"\"PATH\", qui est une liste des répertoires dans lesquels Windows cherche " +"les programmes." -#: ../Doc/faq/windows.rst:119 +#: ../Doc/faq/windows.rst:131 msgid "" "You should arrange for Python's installation directory to be added to the " "PATH of every command window as it starts. If you installed Python fairly " "recently then the command ::" msgstr "" -#: ../Doc/faq/windows.rst:125 +#: ../Doc/faq/windows.rst:137 msgid "" "will probably tell you where it is installed; the usual location is " "something like ``C:\\Python33``. Otherwise you will be reduced to a search " @@ -161,7 +217,7 @@ msgid "" "command ::" msgstr "" -#: ../Doc/faq/windows.rst:134 +#: ../Doc/faq/windows.rst:146 msgid "" "starts up the interpreter as above (and don't forget you'll need a \":kbd:" "`Ctrl-Z`\" and an \":kbd:`Enter`\" to get out of it). Once you have verified " @@ -170,17 +226,17 @@ msgid "" "in the installer as of CPython 3.3." msgstr "" -#: ../Doc/faq/windows.rst:140 +#: ../Doc/faq/windows.rst:152 msgid "" "More information about environment variables can be found on the :ref:`Using " "Python on Windows ` page." msgstr "" -#: ../Doc/faq/windows.rst:144 +#: ../Doc/faq/windows.rst:156 msgid "How do I make Python scripts executable?" -msgstr "" +msgstr "Comment rendre des scripts Python exécutables ?" -#: ../Doc/faq/windows.rst:146 +#: ../Doc/faq/windows.rst:158 msgid "" "On Windows, the standard Python installer already associates the .py " "extension with a file type (Python.File) and gives that file type an open " @@ -190,20 +246,31 @@ msgid "" "typing 'foo' with no extension you need to add .py to the PATHEXT " "environment variable." msgstr "" +"Sous Windows, l'installateur Python associe l'extension *.py* avec un type " +"de fichier (Python.File) et une commande qui lance l’interpréteur (``D:" +"\\Program Files\\Python\\python.exe \"%1\" %*``). Cela suffit pour pouvoir " +"exécuter les scripts Python depuis la ligne de commande en saisissant *foo." +"py*. Si vous souhaitez pouvoir exécuter les scripts en saisissant simplement " +"*foo* sans l’extension, vous devez ajouter *.py* au paramètre " +"d’environnement PATHEXT." -#: ../Doc/faq/windows.rst:154 +#: ../Doc/faq/windows.rst:166 msgid "Why does Python sometimes take so long to start?" -msgstr "" +msgstr "Pourquoi Python met-il du temps à démarrer ?" -#: ../Doc/faq/windows.rst:156 +#: ../Doc/faq/windows.rst:168 msgid "" "Usually Python starts very quickly on Windows, but occasionally there are " "bug reports that Python suddenly begins to take a long time to start up. " "This is made even more puzzling because Python will work fine on other " "Windows systems which appear to be configured identically." msgstr "" +"Normalement, sous Windows, Python se lance très rapidement, mais parfois des " +"rapports d'erreurs indiquent que Python commence soudain à prendre beaucoup " +"de temps pour démarrer. C'est d'autant plus intrigant que Python fonctionne " +"correctement avec d'autres Windows configurés de façon similaire." -#: ../Doc/faq/windows.rst:161 +#: ../Doc/faq/windows.rst:173 msgid "" "The problem may be caused by a misconfiguration of virus checking software " "on the problem machine. Some virus scanners have been known to introduce " @@ -213,12 +280,18 @@ msgid "" "configured identically. McAfee, when configured to scan all file system read " "activity, is a particular offender." msgstr "" +"Le problème peut venir d'un antivirus mal configuré. Certains antivirus sont " +"connus pour doubler le temps de démarrage lorsqu'ils sont configurés pour " +"surveiller toutes les lectures du système de fichiers. Essayez de regarder " +"si les antivirus des deux machines sont bien paramétrés à l'identique. " +"*McAfee* est particulièrement problématique lorsqu'il est paramétré pour " +"surveiller toutes les lectures du système de fichiers." -#: ../Doc/faq/windows.rst:171 +#: ../Doc/faq/windows.rst:183 msgid "How do I make an executable from a Python script?" -msgstr "Comment construire un exécutable depuis un script Python ?" +msgstr "Comment construire un exécutable depuis un script Python ?" -#: ../Doc/faq/windows.rst:173 +#: ../Doc/faq/windows.rst:185 msgid "" "See http://cx-freeze.sourceforge.net/ for a distutils extension that allows " "you to create console and GUI executables from Python code. `py2exe